<?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>235070</bug_id>
          
          <creation_ts>2022-01-11 08:35:50 -0800</creation_ts>
          <short_desc>Make ServiceWorkerClient.id a UUID instead of a string derived from a ScriptExecutionContextIdentifier</short_desc>
          <delta_ts>2022-06-06 06:38:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</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>235107</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>falken</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1829813</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-11 08:35:50 -0800</bug_when>
    <thetext>Make ServiceWorkerClient.id a UUID instead of a string derived from a ScriptExecutionContextIdentifier</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829815</commentid>
    <comment_count>1</comment_count>
      <attachid>448850</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-11 08:45:40 -0800</bug_when>
    <thetext>Created attachment 448850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830131</commentid>
    <comment_count>2</comment_count>
      <attachid>448850</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-01-12 08:20:30 -0800</bug_when>
    <thetext>Comment on attachment 448850
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Make SWServer store the maping between internal ScriptExecutinoContextIdentifiers and visible identifiers.

Typos: maping and ScriptExecutinoContextIdentifiers.

The fact that we have to store a mapping is sad. It could for example get out of date.

&gt; Source/WebCore/ChangeLog:9
&gt; +        Visible identifiers are now generated as UUIDs, which is mapping what Chrome and Firefox are doing.

Why though? The spec [1] merely says &quot;An opaque string that uniquely identifies this environment.&quot; so I think we should use whatever is convenient.

Note that there should not even be a concept of a ServiceWorkerClientIdentifier, per spec it has nothing specific to service workers and it is just an identifier for the environment (aka ScriptExecutionContext). As a matter of fact, the identifiers returned for the clients in the service worker API should match the identifiers returned for the clients in the Web Lock API.

[1] https://html.spec.whatwg.org/multipage/webappapis.html#concept-environment-id

&gt; Source/WebCore/workers/service/server/SWServer.cpp:946
&gt; +    auto visibleId = createCanonicalUUIDString();

As said earlier, client ids returned both by the service worker API and the Web Lock API (and may others) need to match. This is because it is just an environment identifier (defined in the HTML spec as an opaque string), nothing specific to service workers. Therefore, when I see new logic in Service worker code to generate client identifiers, it makes me worry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830134</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-01-12 08:26:13 -0800</bug_when>
    <thetext>Note that if we really want to use a UUID for some reason, an alternative would also be to use a UUID for ScriptExecutionContextIdentifier instead of a ProcessIdentified&lt;ObjectIdentifier&gt;.

I just don&apos;t think we should have logic specific to service workers here. I also worry of the fact that having to maintain a mapping between internal identifiers and visible identifiers could be error-prone and lead to new bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830136</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-01-12 08:28:44 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; Note that if we really want to use a UUID for some reason, an alternative
&gt; would also be to use a UUID for ScriptExecutionContextIdentifier instead of
&gt; a ProcessIdentified&lt;ObjectIdentifier&gt;.

Thinking about this more though, I think this would likely mean keeping some kind of mapping somewhere to match a given UUID to a particular process. Using a ProcessIdentified&lt;ObjectIdentifier&gt; makes it very convenient to find out which process it comes from. That&apos;s why I&apos;d like to understand better the benefits of using a UUID compared to what we have now (which seems less complex / error-prone).

&gt; 
&gt; I just don&apos;t think we should have logic specific to service workers here. I
&gt; also worry of the fact that having to maintain a mapping between internal
&gt; identifiers and visible identifiers could be error-prone and lead to new
&gt; bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830152</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-12 09:00:07 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; (In reply to Chris Dumez from comment #3)
&gt; &gt; Note that if we really want to use a UUID for some reason, an alternative
&gt; &gt; would also be to use a UUID for ScriptExecutionContextIdentifier instead of
&gt; &gt; a ProcessIdentified&lt;ObjectIdentifier&gt;.
&gt; 
&gt; Thinking about this more though, I think this would likely mean keeping some
&gt; kind of mapping somewhere to match a given UUID to a particular process.
&gt; Using a ProcessIdentified&lt;ObjectIdentifier&gt; makes it very convenient to find
&gt; out which process it comes from. That&apos;s why I&apos;d like to understand better
&gt; the benefits of using a UUID compared to what we have now (which seems less
&gt; complex / error-prone).

I can see a few reasons:
- It makes it easier to handle the case of exposing an ID for a Document that is not yet created (see follow-up patch to implement resultingClientId).
- The current IDs are exposing to JavaScript internal implementation details that could be leveraged. For instance whether two contexts are living in the same process. This may be used to correlate third-party iframes more easily for instance. If a service worker gets corrupted, it also allows a service worker to more easily post message to iframes that are not clients in other processes.
- The spec says it should be an &quot;opaque string&quot;, I do not think our current ID is matching the &apos;opaque&apos; part of it. Firefox and Chrome are using some form of UUIDs.

I did not know that other specs were using those IDs.
I can rewrite the patch to externalise the map so that it can be used by other APIs.
Hopefully, these APIs can use a network process based map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830153</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-01-12 09:03:21 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #5)
&gt; (In reply to Chris Dumez from comment #4)
&gt; &gt; (In reply to Chris Dumez from comment #3)
&gt; &gt; &gt; Note that if we really want to use a UUID for some reason, an alternative
&gt; &gt; &gt; would also be to use a UUID for ScriptExecutionContextIdentifier instead of
&gt; &gt; &gt; a ProcessIdentified&lt;ObjectIdentifier&gt;.
&gt; &gt; 
&gt; &gt; Thinking about this more though, I think this would likely mean keeping some
&gt; &gt; kind of mapping somewhere to match a given UUID to a particular process.
&gt; &gt; Using a ProcessIdentified&lt;ObjectIdentifier&gt; makes it very convenient to find
&gt; &gt; out which process it comes from. That&apos;s why I&apos;d like to understand better
&gt; &gt; the benefits of using a UUID compared to what we have now (which seems less
&gt; &gt; complex / error-prone).
&gt; 
&gt; I can see a few reasons:
&gt; - It makes it easier to handle the case of exposing an ID for a Document
&gt; that is not yet created (see follow-up patch to implement resultingClientId).
&gt; - The current IDs are exposing to JavaScript internal implementation details
&gt; that could be leveraged. For instance whether two contexts are living in the
&gt; same process. This may be used to correlate third-party iframes more easily
&gt; for instance. If a service worker gets corrupted, it also allows a service
&gt; worker to more easily post message to iframes that are not clients in other
&gt; processes.
&gt; - The spec says it should be an &quot;opaque string&quot;, I do not think our current
&gt; ID is matching the &apos;opaque&apos; part of it. Firefox and Chrome are using some
&gt; form of UUIDs.
&gt; 
&gt; I did not know that other specs were using those IDs.
&gt; I can rewrite the patch to externalise the map so that it can be used by
&gt; other APIs.
&gt; Hopefully, these APIs can use a network process based map.

LayoutTests/imported/w3c/web-platform-tests/web-locks/clientids.tentative.https.html is supposed to test that ids returned by the service worker API and the Web Lock API are consistent. Your patch doesn&apos;t seem to introduce new test failures though, not sure why that is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830501</commentid>
    <comment_count>7</comment_count>
      <attachid>449039</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-13 02:54:08 -0800</bug_when>
    <thetext>Created attachment 449039
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830515</commentid>
    <comment_count>8</comment_count>
      <attachid>449046</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-13 04:38:04 -0800</bug_when>
    <thetext>Created attachment 449046
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830576</commentid>
    <comment_count>9</comment_count>
      <attachid>449071</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-13 09:28:35 -0800</bug_when>
    <thetext>Created attachment 449071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830840</commentid>
    <comment_count>10</comment_count>
      <attachid>449147</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-14 01:34:41 -0800</bug_when>
    <thetext>Created attachment 449147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830873</commentid>
    <comment_count>11</comment_count>
      <attachid>449161</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-14 04:33:11 -0800</bug_when>
    <thetext>Created attachment 449161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830911</commentid>
    <comment_count>12</comment_count>
      <attachid>449161</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-01-14 08:11:39 -0800</bug_when>
    <thetext>Comment on attachment 449161
Patch

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

&gt; Source/WebKit/ChangeLog:8
&gt; +        Change findByClientIdentifier into findByVisibleClientIdentifieran and make it asn async reply.

typo: asn

&gt; Source/WebCore/platform/ScriptExecutionContextIdentifier.h:35
&gt; +class ProcessQualified&lt;UUID&gt; {

I will note that I find it a bit weird to have a ProcessQualified&lt;UUID&gt; and a UUID is already globally unique (and not process local).

&gt; Source/WebCore/platform/ScriptExecutionContextIdentifier.h:98
&gt; +    String toVisibleString() const { return m_object.toString(); }

It is related to the comment above but it is a bit confusing that we have 2 types of Strings now. It seems the Visible string (UUID) should be sufficient everywhere.

&gt; Source/WebCore/platform/ScriptExecutionContextIdentifier.h:121
&gt; +using ScriptExecutionContextIdentifier = ProcessQualified&lt;UUID&gt;;

Again, I don&apos;t really understand why the ScriptExecutionContextIdentifier needs to be ProcessQualified&lt;&gt; at all after your changes to use a UUID.

&gt; Source/WebCore/testing/Internals.cpp:2767
&gt; +    return document.identifier().object().toString();

document.identifier().toVisibleString() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830923</commentid>
    <comment_count>13</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-14 08:41:36 -0800</bug_when>
    <thetext>&gt; I will note that I find it a bit weird to have a ProcessQualified&lt;UUID&gt; and
&gt; a UUID is already globally unique (and not process local).

Internally, we often need to know the WebProcess ID where lives the corresponding context. We could go with a simple UUID (or maybe a typed UUID) but we would probably need each time to query a UUID -&gt; ProcessID map either in UIProcess and/or NetworkProcess, potentially on various threads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830925</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-14 08:42:44 -0800</bug_when>
    <thetext>&gt; It is related to the comment above but it is a bit confusing that we have 2
&gt; types of Strings now. It seems the Visible string (UUID) should be
&gt; sufficient everywhere.

The other string is for debug purposes where it might be useful to know the process ID of a given context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830926</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-01-14 08:43:42 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #13)
&gt; &gt; I will note that I find it a bit weird to have a ProcessQualified&lt;UUID&gt; and
&gt; &gt; a UUID is already globally unique (and not process local).
&gt; 
&gt; Internally, we often need to know the WebProcess ID where lives the
&gt; corresponding context. We could go with a simple UUID (or maybe a typed
&gt; UUID) but we would probably need each time to query a UUID -&gt; ProcessID map
&gt; either in UIProcess and/or NetworkProcess, potentially on various threads.

Yes, it is true. Give me a few minutes to take another at the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830929</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-01-14 08:48:51 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #13)
&gt; &gt; I will note that I find it a bit weird to have a ProcessQualified&lt;UUID&gt; and
&gt; &gt; a UUID is already globally unique (and not process local).
&gt; 
&gt; Internally, we often need to know the WebProcess ID where lives the
&gt; corresponding context. We could go with a simple UUID (or maybe a typed
&gt; UUID) but we would probably need each time to query a UUID -&gt; ProcessID map
&gt; either in UIProcess and/or NetworkProcess, potentially on various threads.

I was hoping we wouldn&apos;t need such a map because both the network process and the UIProcess know which process the UUID came from (because they get it from a particular IPC connection).

As a matter of fact, both the UIProcess and NetworkProcess cannot really trust the ProcessID sent by the WebProcess as part of this ScriptExecutionIdentifier and have to validate it already (since IPC from the WebProcess cannot be trusted).

That said, my bet is that once the network process or UIProcess may need to know later on (not right when receiving the IPC) where the UUID came from and at that point the information would indeed be lost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830934</commentid>
    <comment_count>17</comment_count>
      <attachid>449161</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-01-14 09:24:21 -0800</bug_when>
    <thetext>Comment on attachment 449161
Patch

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

r=me with some simplification ideas. I think the patch adds a bit more complexity than we really need.

&gt; Source/WebCore/platform/ProcessQualified.h:72
&gt; +    const T&amp; objectHash() const

Shouldn&apos;t be needed, see comment below.

&gt; Source/WebCore/platform/ProcessQualified.h:134
&gt; +    add(hasher, processQualified.objectHash());

I don&apos;t think we should need to add this objectHash(), we should probably just add this to UUID.h:
inline void add(Hasher&amp; hasher, const UUID&amp; uuid)
{
    add(hasher, uuid());
}

&gt; Source/WebCore/platform/ScriptExecutionContextIdentifier.h:70
&gt; +    unsigned objectHash() const

Shouldn&apos;t be needed, see comment above.

&gt; Source/WebCore/platform/ScriptExecutionContextIdentifier.h:97
&gt; +    String toDebugString() const { return makeString(m_processIdentifier.toUInt64(), &apos;-&apos;, m_object.toString()); }

I personally don&apos;t think it is worth the extra mental complexity to have 2 different kinds of strings, just to print the process identifier in some cases. I think having only a single string (that is the &quot;visible&quot; string) would be better.

&gt; Source/WebCore/testing/Internals.idl:936
&gt; +    DOMString serviceWorkerClientInternalIdentifier(Document document);

Why do we need to expose &quot;internal&quot; identifiers to the &quot;Web&quot; (I understand it is just tests). Why cannot tests rely on regular client identifiers (UUIDs)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831407</commentid>
    <comment_count>18</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-16 23:14:58 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #17)
&gt; Comment on attachment 449161 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=449161&amp;action=review
&gt; 
&gt; r=me with some simplification ideas. I think the patch adds a bit more
&gt; complexity than we really need.
&gt; 
&gt; &gt; Source/WebCore/platform/ProcessQualified.h:72
&gt; &gt; +    const T&amp; objectHash() const
&gt; 
&gt; Shouldn&apos;t be needed, see comment below.
&gt; 
&gt; &gt; Source/WebCore/platform/ProcessQualified.h:134
&gt; &gt; +    add(hasher, processQualified.objectHash());
&gt; 
&gt; I don&apos;t think we should need to add this objectHash(), we should probably
&gt; just add this to UUID.h:
&gt; inline void add(Hasher&amp; hasher, const UUID&amp; uuid)
&gt; {
&gt;     add(hasher, uuid());
&gt; }
&gt; 
&gt; &gt; Source/WebCore/platform/ScriptExecutionContextIdentifier.h:70
&gt; &gt; +    unsigned objectHash() const
&gt; 
&gt; Shouldn&apos;t be needed, see comment above.

Will simplify this.

&gt; &gt; Source/WebCore/platform/ScriptExecutionContextIdentifier.h:97
&gt; &gt; +    String toDebugString() const { return makeString(m_processIdentifier.toUInt64(), &apos;-&apos;, m_object.toString()); }
&gt; 
&gt; I personally don&apos;t think it is worth the extra mental complexity to have 2
&gt; different kinds of strings, just to print the process identifier in some
&gt; cases. I think having only a single string (that is the &quot;visible&quot; string)
&gt; would be better.

toDebugString is a ProcessQualified concept.
I can see whether we can remove it but in general I prefer we keep methods defined in template.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831411</commentid>
    <comment_count>19</comment_count>
      <attachid>449311</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-16 23:42:43 -0800</bug_when>
    <thetext>Created attachment 449311
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831444</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-17 02:50:49 -0800</bug_when>
    <thetext>Committed r288093 (246107@main): &lt;https://commits.webkit.org/246107@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 449311.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831445</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-17 02:51:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/87673540&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831510</commentid>
    <comment_count>22</comment_count>
      <attachid>449311</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-17 09:48:05 -0800</bug_when>
    <thetext>Comment on attachment 449311
Patch for landing

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

I spotted a mistake and some ares we could improve coding style. I’d be willing to do this refinement if you are busy on other things. Just let me know if you prefer that

&gt; Source/WTF/wtf/UUID.cpp:55
&gt; +    // We sanitize the value so as not loosing any data when going to Version 4 UUIDs.

&quot;loosing&quot; -&gt; &quot;losing&quot;, but also the grammar here is wrong. Grammatical version would be:

    // We sanitize the value so we do not lose any data when converting this to a Version 4 UUID.

But also, the comment doesn’t seem right. Is this being converted to a Version 4 UUID? What exactly *is* this code doing? Changing it from a random 16 byte value into a valid random UUID? Why is clearing these 6 bits sufficient?

&gt; Source/WTF/wtf/UUID.cpp:102
&gt; +    unsigned y = value[19];
&gt; +    if (y == &apos;8&apos; || y == &apos;9&apos;)
&gt; +        y = y - &apos;8&apos;;
&gt; +    else if (y == &apos;a&apos; || y == &apos;A&apos;)
&gt; +        y = 2;
&gt; +    else if (y == &apos;b&apos; || y == &apos;B&apos;)
&gt; +        y = 3;
&gt; +    else
&gt; +        return { };

I think it’s a little strange to use &quot;y&quot; both for the character and for the number. Why do this operation &quot;in place&quot;?

But also, why do we need &quot;y&quot; at all? Why not just parse the hex numbers, and do any masking or validity checks on the values after they are parsed, instead of working directly on the characters?

&gt; Source/WTF/wtf/UUID.cpp:104
&gt; +    auto firstValue = parseInteger&lt;unsigned&gt;(value.substring(0, 8), 16);

This use, and the other 5 calls below are all wrong, because they will allow leading &quot;+&quot;. Simplest solution is to write a wrapper that checks for the &quot;+&quot; and fails if it’s present. Fancier solution would be to add a variant of parseInteger that does not allow the &quot;+&quot;, as mentioned in the FIXME In StringToIntegerConversion.h. Trickiest part is probably just deciding what to name such a function.

&gt; Source/WTF/wtf/UUID.cpp:134
&gt; +    auto* data = reinterpret_cast&lt;unsigned*&gt;(&amp;uuidValue);
&gt; +    data[0] = *firstValue;
&gt; +    data[1] = (*secondValue &lt;&lt; 16) | *thirdValue;
&gt; +    data[2] = ((*fourthValue &lt;&lt; 16) | *fifthValue) + (y &lt;&lt; 30);
&gt; +    data[3] = *sixthValue;

This should be rewritten without the reinterpret_cast; just generally a bad practice to do it if not necessary. There’s no reason we can’t use uint64_t and shifting instead. Could just make a function that takes four uint32_t and assembles them into a UInt128 if the idiom seems too ugly written out in line.

&gt; Source/WTF/wtf/UUID.cpp:136
&gt; +    return UUID(WTFMove(uuidValue));

No reason to use WTFMove on a scalar.

&gt; Source/WTF/wtf/UUID.h:131
&gt; +    add(hasher, uuid.hash());

It’s not good to hash, and then hash the hash. Instead this function should add m_data to the Hasher. Some details will need to be worked out, but that’s the general best approach.

&gt; Source/WebCore/platform/ScriptExecutionContextIdentifier.h:40
&gt; +        : m_object(WTF::UInt128(0))

Would be better style to do this with a default value below and use &quot;= default&quot;. Also, why do we need to use UInt128 directly to get a zeroed UUID? Can we change the UUID class so that’s easier to do?

&gt; Source/WebCore/platform/ScriptExecutionContextIdentifier.h:48
&gt; +    ProcessQualified(UUID&amp;&amp; object, ProcessIdentifier processIdentifier)
&gt; +        : m_object(WTFMove(object))
&gt; +        , m_processIdentifier(processIdentifier)
&gt; +    {
&gt; +    }

This isn’t valuable. Since a UUID is a scalar, there’s no need to move it. Should just drop this.

&gt; Tools/TestWebKitAPI/Tests/WTF/UUID.cpp:43
&gt; +    value = UUID::parse(&quot;12345678-9abc-5de0-89AB-0123456789ab&quot;);

We can add test cases here that show the &quot;+&quot; bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831647</commentid>
    <comment_count>23</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-18 03:45:29 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831648</commentid>
    <comment_count>24</comment_count>
      <attachid>449374</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-18 03:45:33 -0800</bug_when>
    <thetext>Created attachment 449374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831650</commentid>
    <comment_count>25</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-18 03:51:45 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #22)
&gt; Comment on attachment 449311 [details]
&gt; Patch for landing

Thanks for the review, I updated the patch accordingly.
Also, I made sure we cannot parse specific values like empty or deleted.
We should probably add these same checks for the decoder routine as well.

&gt;     // We sanitize the value so we do not lose any data when converting this
&gt; to a Version 4 UUID.
&gt; 
&gt; But also, the comment doesn’t seem right. Is this being converted to a
&gt; Version 4 UUID? What exactly *is* this code doing? Changing it from a random
&gt; 16 byte value into a valid random UUID? Why is clearing these 6 bits
&gt; sufficient?

When stringifying a UUID a, we loose the values of these 6 bits.
When parsing a&apos;s stringified representation into a new UUID b, we want a == b.
Either we update == to ignore these 6 bits or we make sure that these 6 bits have fixed values.
This code is doing the latter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831651</commentid>
    <comment_count>26</comment_count>
      <attachid>449376</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-18 03:55:50 -0800</bug_when>
    <thetext>Created attachment 449376
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831657</commentid>
    <comment_count>27</comment_count>
      <attachid>449379</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-18 04:30:47 -0800</bug_when>
    <thetext>Created attachment 449379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831681</commentid>
    <comment_count>28</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-18 08:17:48 -0800</bug_when>
    <thetext>Committed r288116 (246130@main): &lt;https://commits.webkit.org/246130@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 449379.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831788</commentid>
    <comment_count>29</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-18 13:29:57 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #25)
&gt; When stringifying a UUID a, we loose the values of these 6 bits.
&gt; When parsing a&apos;s stringified representation into a new UUID b, we want a == b.
&gt; Either we update == to ignore these 6 bits or we make sure that these 6 bits
&gt; have fixed values.
&gt; This code is doing the latter.

But is that enough to make a valid UUID. I had the impression there were some special requirements to just turn random bits into a valid UUID, rather than just clearing a few of the bits. Like a pattern that says &quot;this is a random UUID&quot; to guarantee no conflicts with non-random UUIDs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831813</commentid>
    <comment_count>30</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-18 14:02:44 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #29)
&gt; (In reply to youenn fablet from comment #25)
&gt; &gt; When stringifying a UUID a, we loose the values of these 6 bits.
&gt; &gt; When parsing a&apos;s stringified representation into a new UUID b, we want a == b.
&gt; &gt; Either we update == to ignore these 6 bits or we make sure that these 6 bits
&gt; &gt; have fixed values.
&gt; &gt; This code is doing the latter.
&gt; 
&gt; But is that enough to make a valid UUID. I had the impression there were
&gt; some special requirements to just turn random bits into a valid UUID, rather
&gt; than just clearing a few of the bits. Like a pattern that says &quot;this is a
&gt; random UUID&quot; to guarantee no conflicts with non-random UUIDs.

You are probably right, I&apos;ll look at the RFC tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831959</commentid>
    <comment_count>31</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-19 00:52:54 -0800</bug_when>
    <thetext>I looked at https://datatracker.ietf.org/doc/html/rfc4122#section-4.4 and what we are doing is okayish: we are setting randomly the whole UUID but 4+2 bits.

The 4 bits generate the &apos;4&apos; and the two bits the &apos;8&apos;, &apos;9&apos;, &apos;a&apos;, or &apos;b&apos;.
We could change the sanitisation to actually set these 6 bits to 0100 and 10, instead of using 0000 and 00, which would simplify the stringification routine.
The internal bit representation would perfectly match the stringified version and the spec.

We could also make it clear UUID::create and UUID::parse are dealing with UUIDs v4 only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832061</commentid>
    <comment_count>32</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-19 09:55:48 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #31)
&gt; We could change the sanitisation to actually set these 6 bits to 0100 and
&gt; 10, instead of using 0000 and 00, which would simplify the stringification
&gt; routine.

Yes, great idea. I think that would just be two more lines of code in UUID::create.

&gt; We could also make it clear UUID::create and UUID::parse are dealing with
&gt; UUIDs v4 only.

Yes, I think we should rename them to be more specific.

Renaming create to make it clear what kind of UUID it creates seems good. We can just call it &quot;v4&quot; or whatever term makes it clear that it’s the cryptographically-random type of UUID and it creates a new unique one.

For UUID::parse, not sure why we wrote one that only works with v4 UUIDs. We might want a UUID::parse that can parse any valid UUID, but which will still refuse to parse ones that conflict with our empty and deleted values for hash tables, which I hope we carefully selected so they are not valid UUIDs.

Or maybe we do want to reject non-v4 UUIDs. That’s OK with me, but I’m not sure why we would would want to do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832064</commentid>
    <comment_count>33</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-19 10:02:55 -0800</bug_when>
    <thetext>Some specs require UUID v4, like the mDNS ICE candidate spec so it is good to support parsing and creation of V4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832065</commentid>
    <comment_count>34</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-19 10:05:53 -0800</bug_when>
    <thetext>Another way to do this is we could use a different class to hold UUIDs that we assert are v4. I don’t think a class named UUID should have that invariant, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832693</commentid>
    <comment_count>35</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-21 00:03:16 -0800</bug_when>
    <thetext>Follow-up work at https://bugs.webkit.org/show_bug.cgi?id=235430 to clarify v4 use</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1874287</commentid>
    <comment_count>36</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2022-06-06 06:38:32 -0700</bug_when>
    <thetext>*** Bug 190313 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448850</attachid>
            <date>2022-01-11 08:45:40 -0800</date>
            <delta_ts>2022-01-13 02:54:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235070-20220111174538.patch</filename>
            <type>text/plain</type>
            <size>81206</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU3YzM2MzgwN2RjZmRk
YTNkNDRmYzA0ODM5ZmRhMmM3MjgxOThkNi4uZmQwODQyOWIyZGVhMTY5MWVjY2ZiMWVlYzAzMTA1
YWQ4NDAyNjYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIyLTAxLTExICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFNlcnZpY2VXb3Jr
ZXJDbGllbnQuaWQgYSBVVUlEIGluc3RlYWQgb2YgYSBzdHJpbmcgZGVyaXZlZCBmcm9tIGEgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTA3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgU1dTZXJ2ZXIgc3RvcmUgdGhlIG1hcGluZyBiZXR3
ZWVuIGludGVybmFsIFNjcmlwdEV4ZWN1dGlub0NvbnRleHRJZGVudGlmaWVycyBhbmQgdmlzaWJs
ZSBpZGVudGlmaWVycy4KKyAgICAgICAgVmlzaWJsZSBpZGVudGlmaWVycyBhcmUgbm93IGdlbmVy
YXRlZCBhcyBVVUlEcywgd2hpY2ggaXMgbWFwcGluZyB3aGF0IENocm9tZSBhbmQgRmlyZWZveCBh
cmUgZG9pbmcuCisgICAgICAgIFJlbmFtZSByZXNlcnZlZENsaWVudElkIGluIHJlc3VsdGluZ0Ns
aWVudElkIHRvIG1hdGNoIHRoZSBzcGVjLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3Rpbmcg
dGVzdHMuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbHM6OnNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9TZXJ2
aWNlV29ya2VySW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
bnRlcm5hbHM6OnNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIpOgorICAgICAg
ICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oOgorICAgICAgICAqIHRlc3Rpbmcv
U2VydmljZVdvcmtlckludGVybmFscy5pZGw6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL0Zl
dGNoRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hFdmVudDo6RmV0Y2hFdmVudCk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5pZGw6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNs
aWVudDo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dDo6aWQgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRs
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6aXNvbGF0ZWRDb3B5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpmcm9t
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE6OmRlY29kZSk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmRpZEZpbmlzaEdldFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNsaWVudHM6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0SWRlbnRpZmllckZyb21TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckZldGNoOjpkaXNwYXRjaEZldGNoRXZlbnQpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudCk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5o
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnN0
YXJ0RmV0Y2gpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjbGllbnRJZEZyb21WaXNpYmxlQ2xpZW50
SWQgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6ZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVy
KTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmZpbmRD
bGllbnRCeVZpc2libGVJZGVudGlmaWVyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmg6CisKIDIwMjItMDEtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIEVuZm9yY2UgZm9jdXMgY2hlY2sgZm9yIGdldFVzZXJN
ZWRpYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA0ODI2OTRiZDI3ZDg3NjFmODA2YjBkZDg3NjFjNzA1OWRiODcyZGY3
Li4zYzhjZWJmMzczZTE4MDRiNGE3OTRhYzY1MzM4ZTNkZjY5YjE0YjVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM0IEBACisyMDIyLTAxLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KKworICAgICAgICBNYWtlIFNlcnZpY2VXb3JrZXJDbGllbnQuaWQgYSBVVUlEIGluc3RlYWQg
b2YgYSBzdHJpbmcgZGVyaXZlZCBmcm9tIGEgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTA3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5n
ZSBmaW5kQnlDbGllbnRJZGVudGlmaWVyIGludG8gZmluZEJ5VmlzaWJsZUNsaWVudElkZW50aWZp
ZXJhbiBhbmQgbWFrZSBpdCBhc24gYXN5bmMgcmVwbHkuCisgICAgICAgIFVwZGF0ZSBmZXRjaCBl
dmVudCBjb2RlIHBhdGggdG8gc2VuZCB0aGUgdmlzaWJsZSBJRHMgb2YgdGhlIEZldGNoRXZlbnQg
ZnJvbSBuZXR3b3JrIHByb2Nlc3MgdG8gd29ya2VyIGNvbnRleHQgcHJvY2Vzcy4KKyAgICAgICAg
V2Ugc3RvcmUgdGhlc2UgSURzIGluIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBzbyB0aGF0IHdlIGNh
biBjaGFuZ2UgdGhlbSBpbiBjYXNlIG9mIHJlZGlyZWN0aW9uIGZvciBuYXZpZ2F0aW9ucy4gCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzdGFydEZldGNo
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29u
dHJvbENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3Jl
YXRlRmV0Y2hUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpy
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpbmRDbGll
bnRCeUlkZW50aWZpZXJDb21wbGV0ZWQpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmluZENs
aWVudEJ5SWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKIDIwMjItMDEtMDkgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciBEaXJlY3QyRApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGIwNDYyNzUxYTQ0NjVmNDI5Yjk3
ODRiMTQzN2MzYjNkYmZhMDY0YTEuLmEyN2UxZTNlNmI2NzQ0MDg1NmViNDAzN2MyM2U0ZWExOTli
ZWZmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTI4MDgsNyArMjgw
OCw3IEBAIGJvb2wgSW50ZXJuYWxzOjppc0FueVdvcmtsZXRHbG9iYWxTY29wZUFsaXZlKCkgY29u
c3QKICAgICByZXR1cm4gV29ya2xldEdsb2JhbFNjb3BlOjpudW1iZXJPZldvcmtsZXRHbG9iYWxT
Y29wZXMoKTsKIH0KIAotU3RyaW5nIEludGVybmFsczo6c2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAorU3RyaW5nIEludGVybmFsczo6
c2VydmljZVdvcmtlckNsaWVudEludGVybmFsSWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYgZG9j
dW1lbnQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRvY3VtZW50LmlkZW50aWZpZXIoKS50b1N0cmlu
ZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMjZmNTczZTAwYzU1MTEz
NGI4YjJjZDdiNjE2MzNmMTEwOGIzMWQzNi4uOWFhOThmOTFkYjlmNTk3MTQ4ZjExM2RlZGRlNTE5
ZmMwMGFjODljNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC01MDMsNyArNTAz
LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0FueVdvcmtsZXRHbG9iYWxTY29wZUFsaXZlKCkg
Y29uc3Q7CiAKLSAgICBTdHJpbmcgc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIoY29uc3Qg
RG9jdW1lbnQmKSBjb25zdDsKKyAgICBTdHJpbmcgc2VydmljZVdvcmtlckNsaWVudEludGVybmFs
SWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYpIGNvbnN0OwogCiAgICAgUmVmUHRyPFdpbmRvd1By
b3h5PiBvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHVybCk7CiAgICAg
dm9pZCBjbG9zZUR1bW15SW5zcGVjdG9yRnJvbnRlbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAppbmRleCAyMTI2MjY4OTMwMzJkMDM3OGVjOTBkMTcyNmFiZjU5OGM2ZDhiNjVk
Li5iZTAwZDIyY2VmZDVjZTZhYmQ3MDdiZDE1MTljZjUyMjlkZGVhY2Q1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC05MzIsNyArOTMyLDcgQEAgdHlwZWRlZiAoRmV0Y2hS
ZXF1ZXN0IG9yIEZldGNoUmVzcG9uc2UpIEZldGNoT2JqZWN0OwogICAgIGJvb2xlYW4gaXNBbnlX
b3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcg
cHJvY2Vzc0lkZW50aWZpZXI7Ci0gICAgRE9NU3RyaW5nIHNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyKERvY3VtZW50IGRvY3VtZW50KTsKKyAgICBET01TdHJpbmcgc2VydmljZVdvcmtlckNs
aWVudEludGVybmFsSWRlbnRpZmllcihEb2N1bWVudCBkb2N1bWVudCk7CiAgICAgUHJvbWlzZTx1
bmRlZmluZWQ+IHN0b3JlUmVnaXN0cmF0aW9uc09uRGlzaygpOwogICAgIFByb21pc2U8ZG91Ymxl
PiBzZW5kSDJQaW5nKERPTVN0cmluZyB1cmwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcAppbmRleCBmOGQ2YzdhYWIyMGRkODI5NDlm
MzdhYjkxNTBlODk1ZDc1YzU5ZTQwLi5kZTNmNWFkM2Q2NmU1MjdlM2QxZDY2MDA2ZjEyZTM2NzRi
NzIxZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJ
bnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlcklu
dGVybmFscy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9u
LmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCIKICNpbmNsdWRlICJTV0NvbnRl
eHRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudC5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+
CiAKQEAgLTE5Myw2ICsxOTQsMTEgQEAgYm9vbCBTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpmZXRj
aEV2ZW50SXNTYW1lU2l0ZShGZXRjaEV2ZW50JiBldmVudCkKICAgICByZXR1cm4gZXZlbnQucmVx
dWVzdCgpLmludGVybmFsUmVxdWVzdCgpLmlzU2FtZVNpdGUoKTsKIH0KIAorU3RyaW5nIFNlcnZp
Y2VXb3JrZXJJbnRlcm5hbHM6OnNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIo
Y29uc3QgU2VydmljZVdvcmtlckNsaWVudCYgY2xpZW50KQoreworICAgIHJldHVybiBjbGllbnQu
aWRlbnRpZmllcigpLnRvU3RyaW5nKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJ
bnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFs
cy5oCmluZGV4IGJhNjcyZDUyZmIxNWFjNzJlMTA2OGQ3ZDcyNWY0NTEzZjdkMDc4OTIuLmY1NTY3
YThlMGI2ZTA3YmJmNzQ5NDAzMTNhOWE0YzI3NjY5MDNhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oCkBAIC00MCw2ICs0MCw3IEBAIGNs
YXNzIEZldGNoRXZlbnQ7CiBjbGFzcyBGZXRjaFJlc3BvbnNlOwogY2xhc3MgUHVzaFN1YnNjcmlw
dGlvbjsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBTZXJ2aWNlV29ya2Vy
Q2xpZW50OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNlRGVm
ZXJyZWQ7CiAKQEAgLTcxLDYgKzcyLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBmZXRjaEV2ZW50
SXNTYW1lU2l0ZShGZXRjaEV2ZW50Jik7CiAKKyAgICBTdHJpbmcgc2VydmljZVdvcmtlckNsaWVu
dEludGVybmFsSWRlbnRpZmllcihjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50Jik7CisKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgU2VydmljZVdvcmtlckludGVybmFscyhTZXJ2aWNlV29ya2VySWRl
bnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdv
cmtlckludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJ
bnRlcm5hbHMuaWRsCmluZGV4IDU4ZmVkYzEwZGVhYTlkZGM4MjI5OWZkOGM1ZDFlNTQ2ODc4NTA1
MWYuLjllM2RkNjg1ZDJhNTkyMGE0NjZkZThiZmM5OTkwMGZkZDM4ZWJhZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbApAQCAtNTEs
NCArNTEsNiBAQAogICAgIFB1c2hTdWJzY3JpcHRpb24gY3JlYXRlUHVzaFN1YnNjcmlwdGlvbihV
U1ZTdHJpbmcgZW5kcG9pbnQsIEVwb2NoVGltZVN0YW1wPyBleHBpcmF0aW9uVGltZSwgQXJyYXlC
dWZmZXIgc2VydmVyVkFQSURQdWJsaWNLZXksIEFycmF5QnVmZmVyIGNsaWVudEVDREhQdWJsaWNL
ZXksIEFycmF5QnVmZmVyIGF1dGgpOwogCiAgICAgYm9vbGVhbiBmZXRjaEV2ZW50SXNTYW1lU2l0
ZShGZXRjaEV2ZW50IGV2ZW50KTsKKworICAgIERPTVN0cmluZyBzZXJ2aWNlV29ya2VyQ2xpZW50
SW50ZXJuYWxJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJDbGllbnQgY2xpZW50KTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAKaW5kZXggNmNmNDY5
OWY3MTNiYmY4ZGUwNDg4ZWY1MjNkMDJlNDc1NGJiNTIyZC4uMmE1YWVhZjE5Y2FkNDBkNDNmZmQx
OTdmNTVhYmJiZGIyMTg0M2IwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL0ZldGNoRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9GZXRjaEV2ZW50LmNwcApAQCAtNDksNyArNDksNyBAQCBGZXRjaEV2ZW50OjpGZXRjaEV2ZW50
KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIEluaXQmJiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlz
VAogICAgIDogRXh0ZW5kYWJsZUV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpCiAg
ICAgLCBtX3JlcXVlc3QoaW5pdGlhbGl6ZXIucmVxdWVzdC5yZWxlYXNlTm9uTnVsbCgpKQogICAg
ICwgbV9jbGllbnRJZChXVEZNb3ZlKGluaXRpYWxpemVyLmNsaWVudElkKSkKLSAgICAsIG1fcmVz
ZXJ2ZWRDbGllbnRJZChXVEZNb3ZlKGluaXRpYWxpemVyLnJlc2VydmVkQ2xpZW50SWQpKQorICAg
ICwgbV9yZXN1bHRpbmdDbGllbnRJZChXVEZNb3ZlKGluaXRpYWxpemVyLnJlc3VsdGluZ0NsaWVu
dElkKSkKICAgICAsIG1fdGFyZ2V0Q2xpZW50SWQoV1RGTW92ZShpbml0aWFsaXplci50YXJnZXRD
bGllbnRJZCkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvRmV0Y2hFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZl
bnQuaAppbmRleCA4ZjdhYWY1N2I0ZmIzMjIyNWYzODM3NWQzY2QwOWZmNzBhNjRkMmY0Li44NWQ4
ZTlkMTM3NjkzNzkxNDZmMGZjOWE1ZjBlYWJjZjMwOTgwNDM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgog
ICAgIHN0cnVjdCBJbml0IDogRXh0ZW5kYWJsZUV2ZW50SW5pdCB7CiAgICAgICAgIFJlZlB0cjxG
ZXRjaFJlcXVlc3Q+IHJlcXVlc3Q7CiAgICAgICAgIFN0cmluZyBjbGllbnRJZDsKLSAgICAgICAg
U3RyaW5nIHJlc2VydmVkQ2xpZW50SWQ7CisgICAgICAgIFN0cmluZyByZXN1bHRpbmdDbGllbnRJ
ZDsKICAgICAgICAgU3RyaW5nIHRhcmdldENsaWVudElkOwogICAgIH07CiAKQEAgLTY1LDcgKzY1
LDcgQEAgcHVibGljOgogCiAgICAgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0KCkgeyByZXR1cm4gbV9y
ZXF1ZXN0LmdldCgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBjbGllbnRJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xpZW50SWQ7IH0KLSAgICBjb25zdCBTdHJpbmcmIHJlc2VydmVkQ2xpZW50SWQoKSBj
b25zdCB7IHJldHVybiBtX3Jlc2VydmVkQ2xpZW50SWQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJl
c3VsdGluZ0NsaWVudElkKCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHRpbmdDbGllbnRJZDsgfQog
ICAgIGNvbnN0IFN0cmluZyYgdGFyZ2V0Q2xpZW50SWQoKSBjb25zdCB7IHJldHVybiBtX3Rhcmdl
dENsaWVudElkOyB9CiAKICAgICBib29sIHJlc3BvbmRXaXRoRW50ZXJlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzcG9uZFdpdGhFbnRlcmVkOyB9CkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAK
ICAgICBSZWY8RmV0Y2hSZXF1ZXN0PiBtX3JlcXVlc3Q7CiAgICAgU3RyaW5nIG1fY2xpZW50SWQ7
Ci0gICAgU3RyaW5nIG1fcmVzZXJ2ZWRDbGllbnRJZDsKKyAgICBTdHJpbmcgbV9yZXN1bHRpbmdD
bGllbnRJZDsKICAgICBTdHJpbmcgbV90YXJnZXRDbGllbnRJZDsKIAogICAgIGJvb2wgbV9yZXNw
b25kV2l0aEVudGVyZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL0ZldGNoRXZlbnQuaWRsCmluZGV4IDk3Mzc1OTA2ZGYwZjRjMGVhMTU4Y2FkNjk3Yzk0NmIz
ZmI3ZWYyZTcuLmM2MTA3MDgwNTI2YzNlMGM2ZWYwY2JlNTdiYjkyYmI3OWU2MTA5ZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5pZGwKQEAgLTM1LDcg
KzM1LDcgQEAKICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIEZldGNoUmVxdWVz
dCByZXF1ZXN0OwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBFbmFibGVk
QnlTZXR0aW5nPVNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWRdIHJlYWRvbmx5
IGF0dHJpYnV0ZSBQcm9taXNlPGFueT4gcHJlbG9hZFJlc3BvbnNlOwogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgY2xpZW50SWQ7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyByZXNlcnZlZENsaWVudElkOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcg
cmVzdWx0aW5nQ2xpZW50SWQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0YXJn
ZXRDbGllbnRJZDsKIAogICAgIHVuZGVmaW5lZCByZXNwb25kV2l0aChQcm9taXNlPEZldGNoUmVz
cG9uc2U+IHIpOwpAQCAtNDQsNiArNDQsNiBAQAogZGljdGlvbmFyeSBGZXRjaEV2ZW50SW5pdCA6
IEV4dGVuZGFibGVFdmVudEluaXQgewogICAgIHJlcXVpcmVkIEZldGNoUmVxdWVzdCByZXF1ZXN0
OwogICAgIERPTVN0cmluZyBjbGllbnRJZCA9ICIiOwotICAgIERPTVN0cmluZyByZXNlcnZlZENs
aWVudElkID0gIiI7CisgICAgRE9NU3RyaW5nIHJlc3VsdGluZ0NsaWVudElkID0gIiI7CiAgICAg
RE9NU3RyaW5nIHRhcmdldENsaWVudElkID0gIiI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCmluZGV4IDU5NmI5
Y2RjOTk0ZjU1MDgwYjYzOTE3MTg5Yjc4ZWI4Zjc3Y2QzMzQuLjM4NDdjOWY2M2U2YTZhODI5YmYy
ZGU4MmY4M2U5ZTMwZDkzZTViY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBSZWY8U2VydmljZVdvcmtlckNsaWVudD4gU2VydmljZVdvcmtl
ckNsaWVudDo6Z2V0T3JDcmVhdGUoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBjb250ZXh0LCBT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYmIGRhdGEpCiB7CisgICAgQVNTRVJUKCFkYXRhLnZpc2li
bGVJZC5pc0VtcHR5KCkpOwogICAgIGlmIChhdXRvKiBjbGllbnQgPSBjb250ZXh0LnNlcnZpY2VX
b3JrZXJDbGllbnQoZGF0YS5pZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuICpjbGllbnQ7CiAK
QEAgLTc4LDkgKzc5LDkgQEAgYXV0byBTZXJ2aWNlV29ya2VyQ2xpZW50OjpmcmFtZVR5cGUoKSBj
b25zdCAtPiBGcmFtZVR5cGUKICAgICByZXR1cm4gbV9kYXRhLmZyYW1lVHlwZTsKIH0KIAotU3Ry
aW5nIFNlcnZpY2VXb3JrZXJDbGllbnQ6OmlkKCkgY29uc3QKK2NvbnN0IFN0cmluZyYgU2Vydmlj
ZVdvcmtlckNsaWVudDo6aWQoKSBjb25zdAogewotICAgIHJldHVybiBpZGVudGlmaWVyKCkudG9T
dHJpbmcoKTsKKyAgICByZXR1cm4gbV9kYXRhLnZpc2libGVJZDsKIH0KIAogRXhjZXB0aW9uT3I8
dm9pZD4gU2VydmljZVdvcmtlckNsaWVudDo6cG9zdE1lc3NhZ2UoSlNDOjpKU0dsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgbWVzc2FnZVZhbHVlLCBTdHJ1Y3R1cmVkU2Vy
aWFsaXplT3B0aW9ucyYmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaAppbmRleCAxZmYyYzIzNWExMjQyNzM2ODM2
MTQ3MDJkZTgxNmRmZTFjNDdiYWZjLi43MTA3YjlhZTU1NWMwMmNkYmMxNjk4Yzg0NjQ5Yjg2ZTZj
OGYzYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ2xpZW50LmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3Q7CiAgICAgRnJhbWVUeXBlIGZyYW1lVHlwZSgpIGNvbnN0OwogICAgIFR5
cGUgdHlwZSgpIGNvbnN0OwotICAgIFN0cmluZyBpZCgpIGNvbnN0OworICAgIGNvbnN0IFN0cmlu
ZyYgaWQoKSBjb25zdDsKIAogICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS5pZGVudGlmaWVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbAppbmRleCBlODFiYWUzZDYyNjBh
N2UxM2FlZWFkNTdkMmExNGY2MDlkMGQ2YTQ0Li40MjA1NDYyZTA5YzNhODAyOGNjZGE4MzI1MGIw
NmU5YzFhNDY1MzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsCkBAIC0yNyw2ICsyNyw3IEBACiAgICAgQ29uZGl0
aW9uYWw9U0VSVklDRV9XT1JLRVIsCiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBFbmFibGVk
QXRSdW50aW1lPVNlcnZpY2VXb3JrZXJFbmFibGVkLAorICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVf
RVhQT1JULAogICAgIEV4cG9zZWQ9U2VydmljZVdvcmtlciwKICAgICBJbnRlcmZhY2VOYW1lPUNs
aWVudCwKIF0gaW50ZXJmYWNlIFNlcnZpY2VXb3JrZXJDbGllbnQgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5j
cHAKaW5kZXggNjhmMGU2MGVjNzQ3NGFiZTA2YjI2MTE0MmM3Zjc1MmViMjRjZGMyYy4uNWQ3NzUx
ZjkyODE4OTBhODM2ZTQ2NTMzYzEyMDJkNDk3YTg5YTQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3Bw
CkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlIHRv
U2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZShTY3JpcHRFeGVjdXRpCiAKIFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjppc29sYXRlZENvcHkoKSBjb25z
dAogewotICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgdXJsLmlzb2xh
dGVkQ29weSgpLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCB9OworICAgIHJldHVybiB7
IGlkZW50aWZpZXIsIHZpc2libGVJZC5pc29sYXRlZENvcHkoKSwgdHlwZSwgZnJhbWVUeXBlLCB1
cmwuaXNvbGF0ZWRDb3B5KCksIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIH07CiB9CiAK
IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpmcm9tKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCkBAIC03MSw2ICs3MSw3IEBAIFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvCiAKICAgICByZXR1cm4gewogICAgICAgICBjb250ZXh0LmlkZW50aWZp
ZXIoKSwKKyAgICAgICAgeyB9LAogICAgICAgICBpc0RvY3VtZW50ID8gU2VydmljZVdvcmtlckNs
aWVudFR5cGU6OldpbmRvdyA6IFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOjpXb3JrZXIsCiAgICAg
ICAgIHRvU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZShjb250ZXh0KSwKICAgICAgICAgY29u
dGV4dC51cmwoKSwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgK
aW5kZXggZTI4YjJiYzU3OGJlYjI4YmYwMTdkOTNhYjExMzZlYWFiNmZjYzFmOS4uN2VjYjBiYzdh
NWY0NDE4NTNjOTk5MThmYWM2NWQxOGE2MTY2MTVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgKQEAgLTQy
LDYgKzQyLDcgQEAgZW51bSBjbGFzcyBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA6IGJv
b2wgeyBObywgWWVzIH07CiAKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSB7CiAgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICBTdHJpbmcg
dmlzaWJsZUlkOwogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlIHR5cGU7CiAgICAgU2Vydmlj
ZVdvcmtlckNsaWVudEZyYW1lVHlwZSBmcmFtZVR5cGU7CiAgICAgVVJMIHVybDsKQEAgLTU4LDcg
KzU5LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIHsKIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXIgPDwgdHlwZSA8PCBm
cmFtZVR5cGUgPDwgdXJsIDw8IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOworICAgIGVu
Y29kZXIgPDwgaWRlbnRpZmllciA8PCB2aXNpYmxlSWQgPDwgdHlwZSA8PCBmcmFtZVR5cGUgPDwg
dXJsIDw8IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgpAQCAtNjksNiArNzAsMTEgQEAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YT4gU2VydmljZVdvcmtlckNsaWVudERhdGE6OmRlY29kZShEZWNvZGVyJgogICAg
IGlmICghaWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAorICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiB2aXNpYmxlSWQ7CisgICAgZGVjb2RlciA+PiB2aXNpYmxlSWQ7
CisgICAgaWYgKCF2aXNpYmxlSWQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAg
ICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlPiB0eXBlOwogICAgIGRlY29k
ZXIgPj4gdHlwZTsKICAgICBpZiAoIXR5cGUpCkBAIC04OSw3ICs5NSw3IEBAIHN0ZDo6b3B0aW9u
YWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpkZWNv
ZGUoRGVjb2RlciYKICAgICBpZiAoIWxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCppZGVu
dGlmaWVyKSwgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKmZyYW1lVHlwZSksIFdURk1vdmUoKnVy
bCksIFdURk1vdmUoKmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKSB9IH07CisgICAgcmV0
dXJuIHsgeyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqdmlzaWJsZUlkKSwgV1RGTW92
ZSgqdHlwZSksIFdURk1vdmUoKmZyYW1lVHlwZSksIFdURk1vdmUoKnVybCksIFdURk1vdmUoKmxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKSB9IH07CiB9CiAKIHVzaW5nIFNlcnZpY2VXb3Jr
ZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAppbmRleCBhYjZiNWU4
NDdmMmJiZWQ3NjhjM2QxOTA5YWIxYTgxODUzYjBjMjE2Li42ZTQ1YWExNzZkMDdmMjI5MWJiZTIz
NTUwNzc2NWJhYjU4OGFjMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAKQEAgLTM4LDU1ICszOCwyNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBkaWRGaW5pc2hHZXRS
ZXF1ZXN0KFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgc2NvcGUsIERlZmVycmVkUHJvbWlzZSYg
cHJvbWlzZSwgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YT4+JiYgY2xpZW50RGF0YSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBkaWRGaW5pc2hHZXRSZXF1ZXN0
KFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgc2NvcGUsIERlZmVycmVkUHJvbWlzZSYgcHJvbWlz
ZSwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiBjbGllbnREYXRhKQog
ewotICAgIGlmIChjbGllbnREYXRhLmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgIHByb21pc2Uu
cmVqZWN0KGNsaWVudERhdGEucmVsZWFzZUV4Y2VwdGlvbigpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBhdXRvIGRhdGEgPSBjbGllbnREYXRhLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwot
ICAgIGlmICghZGF0YSkgeworICAgIGlmICghY2xpZW50RGF0YSkgewogICAgICAgICBwcm9taXNl
LnJlc29sdmUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHByb21pc2UucmVzb2x2
ZTxJRExJbnRlcmZhY2U8U2VydmljZVdvcmtlckNsaWVudD4+KFNlcnZpY2VXb3JrZXJDbGllbnQ6
OmdldE9yQ3JlYXRlKHNjb3BlLCBXVEZNb3ZlKGRhdGEudmFsdWUoKSkpKTsKLX0KLQotc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyRnJvbVN0cmluZyhTdHJpbmdWaWV3IHN0cmluZykKLXsK
LSAgICBQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcjsKLSAgICBPYmplY3RJZGVu
dGlmaWVyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyVHlwZT4gY29udGV4dElkZW50
aWZpZXI7Ci0gICAgdW5zaWduZWQgY291bnRlciA9IDA7Ci0gICAgZm9yIChhdXRvIGl0ZW0gOiBz
dHJpbmcuc3BsaXQoJy0nKSkgewotICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBwYXJzZUludGVn
ZXI8dWludDY0X3Q+KGl0ZW0pOwotICAgICAgICBpZiAoIWlkZW50aWZpZXIgfHwgISppZGVudGlm
aWVyKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgaWYgKCFjb3Vu
dGVyKyspCi0gICAgICAgICAgICBwcm9jZXNzSWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlm
aWVyPFByb2Nlc3NJZGVudGlmaWVyVHlwZT4oKmlkZW50aWZpZXIpOwotICAgICAgICBlbHNlIGlm
IChjb3VudGVyID09IDIpCi0gICAgICAgICAgICBjb250ZXh0SWRlbnRpZmllciA9IG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyVHlwZT4oKmlkZW50
aWZpZXIpOwotICAgIH0KLSAgICByZXR1cm4gKHByb2Nlc3NJZGVudGlmaWVyICYmIGNvbnRleHRJ
ZGVudGlmaWVyKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllciB7IGNvbnRleHRJZGVudGlmaWVyLCBwcm9jZXNzSWRlbnRpZmllciB9KSA6IHN0ZDo6
bnVsbG9wdDsKKyAgICBwcm9taXNlLnJlc29sdmU8SURMSW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJD
bGllbnQ+PihTZXJ2aWNlV29ya2VyQ2xpZW50OjpnZXRPckNyZWF0ZShzY29wZSwgV1RGTW92ZSgq
Y2xpZW50RGF0YSkpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6Z2V0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgaWQsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKLSAgICBhdXRvIGlkZW50aWZpZXIgPSBzY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllckZyb21TdHJpbmcoaWQpOwotICAgIGlmICghaWRlbnRpZmll
cikgewotICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgYXV0byBjbGllbnRJZGVudGlmaWVyID0gaWRlbnRpZmllci52YWx1ZSgpOwotCiAgICAg
YXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCkudGhyZWFkKCkuaWRlbnRpZmllcigpOwogCiAgICAgYXV0byBwcm9t
aXNlUG9pbnRlciA9IHByb21pc2UucHRyKCk7CiAgICAgbV9wZW5kaW5nUHJvbWlzZXMuYWRkKHBy
b21pc2VQb2ludGVyLCBXVEZNb3ZlKHByb21pc2UpKTsKIAotICAgIGNhbGxPbk1haW5UaHJlYWQo
W3Byb21pc2VQb2ludGVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmll
cl0gKCkgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb21pc2VQb2ludGVyLCBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgaWQgPSBpZC5pc29sYXRlZENvcHkoKV0gKCkgewogICAgICAgICBhdXRv
IGNvbm5lY3Rpb24gPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCk7
Ci0gICAgICAgIGNvbm5lY3Rpb24tPmZpbmRDbGllbnRCeUlkZW50aWZpZXIoc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXIsIFtwcm9taXNlUG9pbnRlciwgc2VydmljZVdv
cmtlcklkZW50aWZpZXJdIChhdXRvJiYgY2xpZW50RGF0YSkgeworICAgICAgICBjb25uZWN0aW9u
LT5maW5kQ2xpZW50QnlWaXNpYmxlSWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
aWQsIFtwcm9taXNlUG9pbnRlciwgc2VydmljZVdvcmtlcklkZW50aWZpZXJdIChhdXRvJiYgY2xp
ZW50RGF0YSkgewogICAgICAgICAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucG9z
dFRhc2tUb1NlcnZpY2VXb3JrZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFtwcm9taXNlUG9p
bnRlciwgZGF0YSA9IGNyb3NzVGhyZWFkQ29weShjbGllbnREYXRhKV0gKGF1dG8mIGNvbnRleHQp
IG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmIChhdXRvIHByb21pc2UgPSBjb250ZXh0LmNs
aWVudHMoKS5tX3BlbmRpbmdQcm9taXNlcy50YWtlKHByb21pc2VQb2ludGVyKSkKICAgICAgICAg
ICAgICAgICAgICAgZGlkRmluaXNoR2V0UmVxdWVzdChjb250ZXh0LCAqcHJvbWlzZSwgV1RGTW92
ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggNzE2ZDAwMzUxZGQ3M2JmZTkyMzJhODhk
OGIyOWM2ZDcyY2MyM2RlNy4uYzBlMDM2MzZiMTg5YzU4NjYzZTQ4M2M4MGJiOWQ2OTE5MmIyMGU5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBza2lwV2FpdGluZyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRTY3Jp
cHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYpID0gMDsKIAotICAgICAgICB1
c2luZyBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+PiYm
KT47Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgRmluZENs
aWVudEJ5SWRlbnRpZmllckNhbGxiYWNrJiYpID0gMDsKKyAgICAgICAgdXNpbmcgRmluZENsaWVu
dEJ5SWRlbnRpZmllckNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT47CisgICAgICAgIHZpcnR1YWwgdm9pZCBm
aW5kQ2xpZW50QnlWaXNpYmxlSWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiwgRmluZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNrJiYpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIG1hdGNoQWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBT
ZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJiwgU2VydmljZVdvcmtlckNsaWVudHNNYXRj
aEFsbENhbGxiYWNrJiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGNsYWltKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+
JiYpPiYmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4IDlkOWFjZDY0YTE2
MjE4NGRjYzEyYTRkNDQzZWJlMDAyYTY1MmI2YjQuLmEzM2MxYjcwNmM5ZmZjZTU1ZmI2MTQ1ZGE1
YmNkOGFmYjJmNDIzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApAQCAtMTM5LDcgKzEz
OSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwg
RXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBzCiAgICAgfSk7CiB9CiAKLXZvaWQgZGlzcGF0
Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYgY2xpZW50LCBTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUmIGdsb2JhbFNjb3BlLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyPiBjbGllbnRJZCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVm
ZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50
aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkKQordm9p
ZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiBjbGllbnQsIFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN0cmlu
ZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBGZXRjaElkZW50aWZpZXIgZmV0
Y2hJZGVudGlmaWVyLCBib29sIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxl
ZCwgU3RyaW5nJiYgY2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgcmVzdWx0aW5nQ2xpZW50SWRl
bnRpZmllcikKIHsKICAgICBhdXRvIHJlcXVlc3RIZWFkZXJzID0gRmV0Y2hIZWFkZXJzOjpjcmVh
dGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6SW1tdXRhYmxlLCBIVFRQSGVhZGVyTWFwIHsgcmVxdWVz
dC5odHRwSGVhZGVyRmllbGRzKCkgfSk7CiAKQEAgLTE3NCwxMiArMTc0LDggQEAgdm9pZCBkaXNw
YXRjaEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiBjbGllbnQsIFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSYgZ2xvYmFsU2MKIAogICAgIEZldGNoRXZlbnQ6OkluaXQgaW5pdDsKICAgICBpbml0LnJl
cXVlc3QgPSBXVEZNb3ZlKGZldGNoUmVxdWVzdCk7Ci0gICAgaWYgKGlzTmF2aWdhdGlvbikgewot
ICAgICAgICAvLyBGSVhNRTogU2V0IHJlc2VydmVkQ2xpZW50SWQuCi0gICAgICAgIGlmIChjbGll
bnRJZCkKLSAgICAgICAgICAgIGluaXQudGFyZ2V0Q2xpZW50SWQgPSBjbGllbnRJZC0+dG9TdHJp
bmcoKTsKLSAgICB9IGVsc2UgaWYgKGNsaWVudElkKQotICAgICAgICBpbml0LmNsaWVudElkID0g
Y2xpZW50SWQtPnRvU3RyaW5nKCk7CisgICAgaW5pdC5yZXN1bHRpbmdDbGllbnRJZCA9IFdURk1v
dmUocmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcik7CisgICAgaW5pdC5jbGllbnRJZCA9IFdURk1v
dmUoY2xpZW50SWRlbnRpZmllcik7CiAgICAgaW5pdC5jYW5jZWxhYmxlID0gdHJ1ZTsKICAgICBh
dXRvIGV2ZW50ID0gRmV0Y2hFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5mZXRjaEV2ZW50LCBX
VEZNb3ZlKGluaXQpLCBFdmVudDo6SXNUcnVzdGVkOjpZZXMpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5oCmluZGV4IGNlMzcwOTY4OWQ5ZjA5MjFlMDkwM2EwMzc3ZGIyNjhhNTQ1MGIyYjQuLjQ4NmFh
ZjNjY2ZkNTgzYzA3Y2FmZDVhMGZjYWY4NzE3MDM0MGY3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29udmVydEZl
dGNoVG9Eb3dubG9hZCgpID0gMDsKIH07CiAKLXZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxD
bGllbnQ+JiYsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+LCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYg
cmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmLCBGZXRjaElkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkKTsKK3ZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50
KFJlZjxDbGllbnQ+JiYsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYsIFJlc291cmNlUmVxdWVz
dCYmLCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYsIEZldGNoSWRlbnRpZmllciwg
Ym9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIFN0cmluZyYmIGNs
aWVudElkZW50aWZpZXIsIFN0cmluZyYmIHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIpOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAppbmRl
eCA2NTI1ZmI5NzAxNmZmYWRlZTkxYTExNjA2MDRjMDI3MTA5Y2U4NjYxLi4yNjBkYmJkM2U2NjI5
NzljYzlmYTY5MmQ0M2NlNGViNDM3MDRkZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNw
cApAQCAtMTI0LDExICsxMjQsMTEgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpydW5FdmVu
dExvb3AoKQogICAgIFdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCk7CiB9CiAKLXZvaWQgU2Vy
dmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudChSZWY8U2VydmljZVdv
cmtlckZldGNoOjpDbGllbnQ+JiYgY2xpZW50LCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyPiYmIGNsaWVudElkLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgRmV0Y2hJZGVudGlm
aWVyIGZldGNoSWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZEVuYWJsZWQpCit2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZUZldGNo
RXZlbnQoUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmIGNsaWVudCwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlv
bnMsIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRFbmFibGVkLCBTdHJpbmcmJiBjbGllbnRJZGVudGlmaWVyLCBTdHJp
bmcmJiByZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKQogewogICAgIFJlZiBzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCpnbG9iYWxT
Y29wZSgpKTsKLSAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmV2ZW50TG9vcCgpLnF1ZXVl
VGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtzZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUsIGNsaWVudCA9IFdURk1vdmUoY2xpZW50KSwgY2xpZW50SWQsIHJlcXVlc3QgPSBXVEZNb3Zl
KHJlcXVlc3QpLCByZWZlcnJlciA9IFdURk1vdmUocmVmZXJyZXIpLCBvcHRpb25zID0gV1RGTW92
ZShvcHRpb25zKSwgZmV0Y2hJZGVudGlmaWVyLCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZEVuYWJsZWRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIFNlcnZpY2VXb3JrZXJGZXRjaDo6ZGlz
cGF0Y2hGZXRjaEV2ZW50KFdURk1vdmUoY2xpZW50KSwgc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LCBjbGllbnRJZCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWZlcnJlciksIFdURk1vdmUo
b3B0aW9ucyksIGZldGNoSWRlbnRpZmllciwgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRFbmFibGVkKTsKKyAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmV2ZW50TG9vcCgpLnF1
ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtzZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUsIGNsaWVudCA9IFdURk1vdmUoY2xpZW50KSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVz
dCksIHJlZmVycmVyID0gV1RGTW92ZShyZWZlcnJlciksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlv
bnMpLCBmZXRjaElkZW50aWZpZXIsIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5h
YmxlZCwgY2xpZW50SWRlbnRpZmllciA9IFdURk1vdmUoY2xpZW50SWRlbnRpZmllciksIHJlc3Vs
dGluZ0NsaWVudElkZW50aWZpZXIgPSBXVEZNb3ZlKHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIp
XSgpIG11dGFibGUgeworICAgICAgICBTZXJ2aWNlV29ya2VyRmV0Y2g6OmRpc3BhdGNoRmV0Y2hF
dmVudChXVEZNb3ZlKGNsaWVudCksIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShyZWZlcnJlciksIFdURk1vdmUob3B0aW9ucyksIGZldGNoSWRlbnRp
ZmllciwgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkLCBXVEZNb3ZlKGNs
aWVudElkZW50aWZpZXIpLCBXVEZNb3ZlKHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIpKTsKICAg
ICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCmluZGV4IDFkYTJkZDgzZWUwNzcxZmE0
YTEyYzkxYWUyNTRhNTIzYTkzMjJlN2YuLjg4YjY1ZGU4MDMwYWE5NTA5MGQzN2NkY2ExYWUwN2Vj
ZTc1YmYwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgd2lsbFBvc3RUYXNrVG9GaXJlTWVzc2FnZUV2ZW50KCk7CiAgICAgdm9p
ZCB3aWxsUG9zdFRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoKTsKIAotICAg
IHZvaWQgcXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudChSZWY8U2VydmljZVdvcmtlckZldGNoOjpD
bGllbnQ+JiYsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+
JiYsIFJlc291cmNlUmVxdWVzdCYmLCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYs
IEZldGNoSWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVu
YWJsZWQpOworICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudChSZWY8U2VydmljZVdv
cmtlckZldGNoOjpDbGllbnQ+JiYsIFJlc291cmNlUmVxdWVzdCYmLCBTdHJpbmcmJiByZWZlcnJl
ciwgRmV0Y2hPcHRpb25zJiYsIEZldGNoSWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIFN0cmluZyYmIGNsaWVudElkZW50aWZpZXIsIFN0cmlu
ZyYmIHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIpOwogICAgIHZvaWQgcXVldWVUYXNrVG9Qb3N0
TWVzc2FnZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBTZXJ2aWNlV29ya2VyT3JDbGllbnRE
YXRhJiYgc291cmNlRGF0YSk7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVJbnN0YWxsRXZlbnQo
KTsKICAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZUFjdGl2YXRlRXZlbnQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IGRiNmM5M2I4YmU5MWI5YjkyMjcxMDk0Nzk5
ZDBkZGMzZjY0ODJkZjAuLmM2NjYxNGZhMmM5NjAwMTE2NDVlOGFjNzQ1ZDRmNmQ5Yzg4Mzk2NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtMjEwLDcgKzIxMCw3
IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFu
Z2UoYm9vbCBpc09ubGluZSkKICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsK
IH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVy
IGZldGNoSWRlbnRpZmllciwgUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmIGNsaWVu
dCwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4mJiBjbGll
bnRJZCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNo
T3B0aW9ucyYmIG9wdGlvbnMsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRF
bmFibGVkKQordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2goU1dTZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlm
aWVyIGZldGNoSWRlbnRpZmllciwgUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmIGNs
aWVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNo
T3B0aW9ucyYmIG9wdGlvbnMsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRF
bmFibGVkLCBTdHJpbmcmJiBjbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiByZXN1bHRpbmdDbGll
bnRJZGVudGlmaWVyKQogewogICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2ggJWxsdSIsIGZldGNoSWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKIApAQCAtMjIxLDggKzIyMSw4IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFBy
b3h5OjpzdGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvCiAK
ICAgICBBU1NFUlQoIW1fb25nb2luZ0ZldGNoVGFza3MuY29udGFpbnMoa2V5KSk7CiAgICAgbV9v
bmdvaW5nRmV0Y2hUYXNrcy5hZGQoa2V5LCBjbGllbnQuY29weVJlZigpKTsKLSAgICBwb3N0VGFz
a0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgY2xpZW50ID0gV1RGTW92ZShjbGllbnQpLCBjbGllbnRJZCwgcmVx
dWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0gcmVmZXJyZXIuaXNvbGF0
ZWRDb3B5KCksIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgpLCBmZXRjaElkZW50aWZp
ZXIsIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZF0oYXV0byYpIG11dGFi
bGUgewotICAgICAgICB0aHJlYWQoKS5xdWV1ZVRhc2tUb0ZpcmVGZXRjaEV2ZW50KFdURk1vdmUo
Y2xpZW50KSwgV1RGTW92ZShjbGllbnRJZCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVm
ZXJyZXIpLCBXVEZNb3ZlKG9wdGlvbnMpLCBmZXRjaElkZW50aWZpZXIsIGlzU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCk7CisgICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGNsaWVudCA9IFdURk1vdmUoY2xpZW50KSwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5
KCksIHJlZmVycmVyID0gV1RGTW92ZShyZWZlcnJlcikuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMg
PSBvcHRpb25zLmlzb2xhdGVkQ29weSgpLCBmZXRjaElkZW50aWZpZXIsIGlzU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCwgY2xpZW50SWRlbnRpZmllciA9IFdURk1vdmUoY2xp
ZW50SWRlbnRpZmllcikuaXNvbGF0ZWRDb3B5KCksIHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIg
PSBXVEZNb3ZlKHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIpLmlzb2xhdGVkQ29weSgpXShhdXRv
JikgbXV0YWJsZSB7CisgICAgICAgIHRocmVhZCgpLnF1ZXVlVGFza1RvRmlyZUZldGNoRXZlbnQo
V1RGTW92ZShjbGllbnQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZmVycmVyKSwgV1RG
TW92ZShvcHRpb25zKSwgZmV0Y2hJZGVudGlmaWVyLCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZEVuYWJsZWQsIFdURk1vdmUoY2xpZW50SWRlbnRpZmllciksIFdURk1vdmUocmVzdWx0
aW5nQ2xpZW50SWRlbnRpZmllcikpOwogICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2Rl
KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IDAxYjNhZDA0
OTE1ZDRiZTI3YjAxYmNmZmRjNmIwY2ZiMjA4ZmMwN2UuLmFiY2E0ODYyYmQ2NTliYjRlYzE2Yjdk
ZGY5OTE4ZTYyOGQzMzc1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBA
IC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5
TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzdGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRp
ZmllciwgUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmLCBzdGQ6Om9wdGlvbmFsPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgU3Ry
aW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmLCBib29sIGlzU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkRW5hYmxlZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydEZldGNo
KFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciwgUmVmPFNlcnZp
Y2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVm
ZXJyZXIsIEZldGNoT3B0aW9ucyYmLCBib29sIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkRW5hYmxlZCwgU3RyaW5nJiYgY2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgcmVzdWx0aW5n
Q2xpZW50SWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYW5jZWxGZXRjaChT
V1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29udmVydEZldGNoVG9Eb3dubG9hZChTV1NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29u
dGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBGZXRjaElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCAxYTk2M2NkMTI0ZTI1ZmRkMzBlYjE1ZDY3Mzdl
N2U0MzVkZDQxMTgwLi4zNDdiNjkwNWYwMDY0MTA5MDU5MmI2MzdiZTkxODJjMzQ3ODE0NDFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05MzIsNyArOTMzLDcg
QEAgdm9pZCBTV1NlcnZlcjo6dXBkYXRlQXBwSW5pdGlhdGVkVmFsdWVGb3JXb3JrZXJzKGNvbnN0
IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2kKICAgICB9CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudChDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhJiYgZGF0YSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIsIFN0cmluZyYmIHVzZXJBZ2VudCkKK1N0cmluZyBTV1NlcnZl
cjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KENsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdp
biwgU2VydmljZVdvcmtlckNsaWVudERhdGEmJiBkYXRhLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYgY29udHJvbGxpbmdTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgU3RyaW5nJiYgdXNlckFnZW50KQogewogICAgIGF1
dG8gY2xpZW50SWRlbnRpZmllciA9IGRhdGEuaWRlbnRpZmllcjsKIApAQCAtOTQyLDYgKzk0Mywx
MCBAQCB2b2lkIFNXU2VydmVyOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoQ2xpZW50T3Jp
Z2luJiYgY2xpZW50T3JpZ2luLCBTZXJ2aWNlVwogICAgICAgICAgICAgdXBkYXRlQXBwSW5pdGlh
dGVkVmFsdWVGb3JXb3JrZXJzKGNsaWVudE9yaWdpbiwgZGF0YS5sYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZCk7CiAgICAgfQogCisgICAgYXV0byB2aXNpYmxlSWQgPSBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCk7CisgICAgZGF0YS52aXNpYmxlSWQgPSB2aXNpYmxlSWQ7CisgICAgbV92
aXNpYmxlQ2xpZW50SWRUb0ludGVybmFsQ2xpZW50SWRNYXAuYWRkKGRhdGEudmlzaWJsZUlkLCBj
bGllbnRJZGVudGlmaWVyKTsKKwogICAgIEFTU0VSVCghbV9jbGllbnRzQnlJZC5jb250YWlucyhj
bGllbnRJZGVudGlmaWVyKSk7CiAgICAgbV9jbGllbnRzQnlJZC5hZGQoY2xpZW50SWRlbnRpZmll
ciwgV1RGTW92ZShkYXRhKSk7CiAKQEAgLTk2MywxNSArOTY4LDE3IEBAIHZvaWQgU1dTZXJ2ZXI6
OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4s
IFNlcnZpY2VXCiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmFkZChjbGllbnRJZGVudGlmaWVyKTsK
IAogICAgIGlmICghY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cikKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdmlzaWJsZUlkOwogCiAgICAgYXV0
byogY29udHJvbGxpbmdSZWdpc3RyYXRpb24gPSBtX3JlZ2lzdHJhdGlvbnMuZ2V0KCpjb250cm9s
bGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKICAgICBpZiAoIWNvbnRy
b2xsaW5nUmVnaXN0cmF0aW9uIHx8ICFjb250cm9sbGluZ1JlZ2lzdHJhdGlvbi0+YWN0aXZlV29y
a2VyKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHZpc2libGVJZDsKIAogICAg
IGNvbnRyb2xsaW5nUmVnaXN0cmF0aW9uLT5hZGRDbGllbnRVc2luZ1JlZ2lzdHJhdGlvbihjbGll
bnRJZGVudGlmaWVyKTsKICAgICBBU1NFUlQoIW1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lzdHJh
dGlvbi5jb250YWlucyhjbGllbnRJZGVudGlmaWVyKSk7CiAgICAgbV9jbGllbnRUb0NvbnRyb2xs
aW5nUmVnaXN0cmF0aW9uLmFkZChjbGllbnRJZGVudGlmaWVyLCAqY29udHJvbGxpbmdTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CisKKyAgICByZXR1cm4gdmlzaWJsZUlkOwog
fQogCiB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBD
bGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIgY2xpZW50SWRlbnRpZmllcikKQEAgLTk3OSw4ICs5ODYsMTEgQEAgdm9pZCBTV1NlcnZlcjo6
dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRP
cmlnaW4sIFMKICAgICBhdXRvIGNsaWVudFJlZ2lzdHJhYmxlRG9tYWluID0gY2xpZW50T3JpZ2lu
LmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCk7CiAgICAgYXV0byBhcHBJbml0aWF0ZWRWYWx1ZUJl
Zm9yZSA9IGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3Jp
Z2luLmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCkpOwogCi0gICAgYm9vbCB3YXNSZW1vdmVkID0g
bV9jbGllbnRzQnlJZC5yZW1vdmUoY2xpZW50SWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNF
RCh3YXNSZW1vdmVkLCB3YXNSZW1vdmVkKTsKKyAgICBhdXRvIGNsaWVudERhdGEgPSBtX2NsaWVu
dHNCeUlkLnRha2UoY2xpZW50SWRlbnRpZmllcik7CisgICAgaWYgKCFjbGllbnREYXRhLnZpc2li
bGVJZC5pc051bGwoKSkgeworICAgICAgICBBU1NFUlQobV92aXNpYmxlQ2xpZW50SWRUb0ludGVy
bmFsQ2xpZW50SWRNYXAuY29udGFpbnMoY2xpZW50RGF0YS52aXNpYmxlSWQpKTsKKyAgICAgICAg
bV92aXNpYmxlQ2xpZW50SWRUb0ludGVybmFsQ2xpZW50SWRNYXAucmVtb3ZlKGNsaWVudERhdGEu
dmlzaWJsZUlkKTsKKyAgICB9CiAKICAgICBhdXRvIGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWlu
SXRlcmF0b3IgPSBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmZpbmQoY2xpZW50UmVnaXN0
cmFibGVEb21haW4pOwogICAgIEFTU0VSVChjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0ZXJh
dG9yICE9IG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uZW5kKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IGIxNWYxYWY1
ZTBlZDcyYWFhMWRkYmRhOWEyZmZlM2ZiMjlhYjEzODcuLmZlYmE5ZGVjMTUzOWNmNjAxNWU5MDYx
OGY2YTY3NzhiZDMwOWQxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTE4Miw3ICsxODIsNyBAQCBwdWJsaWM6CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFzaFNldDxTV1NlcnZlcio+JiBhbGxTZXJ2ZXJzKCk7CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChDbGll
bnRPcmlnaW4mJiwgU2VydmljZVdvcmtlckNsaWVudERhdGEmJiwgY29uc3Qgc3RkOjpvcHRpb25h
bDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mLCBTdHJpbmcmJiB1c2VyQWdl
bnQpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnQoQ2xpZW50T3JpZ2luJiYsIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+JiwgU3RyaW5nJiYg
dXNlckFnZW50KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyKTsKIAogICAgIHVzaW5nIFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjayA9IEZ1bmN0aW9u
PHZvaWQoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKik+OwpAQCAtMjI2LDYgKzIyNiw4IEBA
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFNob3VsZFNraXBFdmVudCA6IGJvb2wgeyBObywgWWVz
IH07CiAgICAgdm9pZCBmaXJlRnVuY3Rpb25hbEV2ZW50KFNXU2VydmVyUmVnaXN0cmF0aW9uJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24qLCBTaG91bGRTa2lwRXZlbnQ+KT4mJik7CiAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllciBjbGllbnRJZEZyb21WaXNpYmxlQ2xpZW50SWQoY29uc3QgU3RyaW5nJiB2aXNp
YmxlSWRlbnRpZmllcikgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlQ2xpZW50SWRUb0ludGVybmFs
Q2xpZW50SWRNYXAuZ2V0KHZpc2libGVJZGVudGlmaWVyKTsgfQorCiBwcml2YXRlOgogICAgIHZv
aWQgdmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4s
IFNlcnZpY2VXb3JrZXJKb2JUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
IApAQCAtMjcxLDYgKzI3Myw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTY3JpcHRFeGVjdXRp
b25Db250ZXh0SWRlbnRpZmllciwgV2Vha1B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4+IG1fc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyVG9SZWdpc3RyYXRpb25NYXA7CiAgICAgSGFzaE1hcDxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudERhdGE+
IG1fY2xpZW50c0J5SWQ7CiAgICAgSGFzaE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
ZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IG1fY2xpZW50VG9Db250
cm9sbGluZ1JlZ2lzdHJhdGlvbjsKKyAgICBIYXNoTWFwPFN0cmluZywgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXI+IG1fdmlzaWJsZUNsaWVudElkVG9JbnRlcm5hbENsaWVudElkTWFw
OwogCiAgICAgVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+IG1fb3JpZ2luU3RvcmU7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlZ2lzdHJhdGlvblN0b3JlPiBtX3JlZ2lzdHJhdGlvblN0b3JlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IGJmZWVjY2UwM2UwNGNj
NzhlODdlMWUxNjI2OWI5NjMwMWQ0ODE3YTEuLjU0MjhhYTQ2NTU0NTg4NDg3OTAxN2M0NTFkOThm
OGFjOWU2MmFkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAK
QEAgLTg3LDEyICs4Nyw2IEBAIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp3b3Jr
ZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpCiAgICAgICAgIHdvcmtl
ci0+Y29udGV4dFRlcm1pbmF0ZWQoKTsKIH0KIAotdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZpZXIodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJZCkKLXsKLSAgICBpZiAoYXV0byogd29y
a2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNl
V29ya2VySWRlbnRpZmllcikpCi0gICAgICAgIHdvcmtlci0+Y29udGV4dENvbm5lY3Rpb24oKS0+
ZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgd29ya2Vy
LT5maW5kQ2xpZW50QnlJZGVudGlmaWVyKGNsaWVudElkKSwgZmFsc2UpOwotfQotCiB2b2lkIFNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWF0Y2hBbGwodWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlm
IChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlm
aWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkgewpAQCAtMTAyLDYgKzk2LDE0IEBAIHZvaWQg
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptYXRjaEFsbCh1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgU2VydmljZVdvCiAgICAgfQogfQogCit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6ZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY2xpZW50SWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPiYmKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoYXV0byogd29y
a2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNl
V29ya2VySWRlbnRpZmllcikpCisgICAgICAgIHdvcmtlci0+ZmluZENsaWVudEJ5VmlzaWJsZUlk
ZW50aWZpZXIoY2xpZW50SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIGVsc2UK
KyAgICAgICAgY2FsbGJhY2soeyB9KTsKK30KKwogdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4m
Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4
aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCBiZGQzNjNiMmJjNDUwY2MyOTky
ZTY1NjgzNmFmNzdlZDUzYmNkYTQwLi5jMDU2ZjY0OGRkYTAzZTVmYWI0OGQyYWU0NmU3MTM5NzU2
ZjVkNTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTU4LDcg
KzU4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2
aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3Jr
ZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2F2
ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNjcmlwdEJ1ZmZl
ciYsIGNvbnN0IEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiBpbXBvcnRlZFNjcmlwdHMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YT4mLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgbWF0Y2hBbGxDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFZl
Y3RvcjxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZp
cmVQdXNoRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJh
Y2spID0gMDsKIApAQCAtNzAsMTEgKzY5LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBib29sIGhhc1BlbmRpbmdFdmVudHMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2tpcFdhaXRpbmcoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3b3JrZXJUZXJtaW5hdGVkKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmRDbGllbnRC
eUlkZW50aWZpZXIodWludDY0X3QgY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIG1hdGNoQWxsKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0
aW9ucyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xhaW0oU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb25EYXRh
PiYmKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmFp
bEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+
JiYpOwogCiAgICAgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQogICAgIHN0ZDo6b3B0aW9uYWw8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
V29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwCmluZGV4IDVkMTU1NmEwMDZkYWIxNTE2NzY1MWEyM2RmMmZiMzMzMDQ3ZjZi
NDMuLmNkYmZlNDRiZWVjMGM5MDhiYWMxMjI0ZDBlYTRiNmYxMmZlZGYxYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwCkBAIC0yMzEsNiArMjMxLDIyIEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNs
aWVudERhdGE+IFNXU2VydmVyV29ya2VyOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyKGNvCiAgICAg
cmV0dXJuIG1fc2VydmVyLT5zZXJ2aWNlV29ya2VyQ2xpZW50V2l0aE9yaWdpbkJ5SUQob3JpZ2lu
KCksIGNsaWVudElkKTsKIH0KIAordm9pZCBTV1NlcnZlcldvcmtlcjo6ZmluZENsaWVudEJ5Vmlz
aWJsZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBjbGllbnRJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERh
dGE+JiYpPiYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9zZXJ2ZXIpIHsKKyAgICAgICAgY2Fs
bGJhY2soeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gaW50ZXJuYWxJ
ZGVudGlmaWVyID0gbV9zZXJ2ZXItPmNsaWVudElkRnJvbVZpc2libGVDbGllbnRJZChjbGllbnRJ
ZGVudGlmaWVyKTsKKyAgICBpZiAoIWludGVybmFsSWRlbnRpZmllcikgeworICAgICAgICBjYWxs
YmFjayh7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FsbGJhY2soZmluZENs
aWVudEJ5SWRlbnRpZmllcihpbnRlcm5hbElkZW50aWZpZXIpKTsKK30KKwogdm9pZCBTV1NlcnZl
cldvcmtlcjo6bWF0Y2hBbGwoY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYg
b3B0aW9ucywgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7CiAgICAgQVNTRVJUKG1fc2VydmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCBiMjIxNWQ5ZjRhZDRk
MGZkOTE1MDRhNGMyMWFjYjkzMDQ3YTFjODI0Li4xZTgzMWZjNGNhODJkNjQ0ZTdjNmRiMTFlMGVm
NTNhNzZiNmRmNDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC0xMDMsNiArMTAzLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbigpOwogICAgIHZvaWQgY29udGV4dFRlcm1pbmF0
ZWQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhPiBmaW5kQ2xpZW50QnlJZGVudGlmaWVyKGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5kQ2xpZW50
QnlWaXNpYmxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YT4mJik+JiYpOwogICAgIHZvaWQgbWF0Y2hBbGwoY29uc3QgU2VydmljZVdvcmtlckNs
aWVudFF1ZXJ5T3B0aW9ucyYsIFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYm
KTsKICAgICB2b2lkIHNldFNjcmlwdFJlc291cmNlKFVSTCYmLCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0JiYpOwogICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2so
U2NyaXB0QnVmZmVyJiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBp
bXBvcnRlZFNjcmlwdHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggODE3YWVmMjZjODM2YzM0YTdkNDRlZTdjYzk1
ZWRkOWEyOThkNmE0YS4uM2YxODIwZDE2ODIxOTgyMDY3MTUxMjY2NjVmNTI0ZGM3YWNmZWNmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oCkBAIC0xNDUsNiArMTQ1LDEwIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgdm9pZCBzdGFydFdpdGhTZXJ2aWNlV29ya2VyKCk7CiAgICAgdm9pZCBz
ZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sqKTsKKyAgICB2
b2lkIHNldFJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIoU3RyaW5nJiYgaWRlbnRpZmllcikgeyBt
X3Jlc3VsdGluZ0NsaWVudElkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpOyB9CisgICAg
dm9pZCBzZXRDbGllbnRJZGVudGlmaWVyKFN0cmluZyYmIGlkZW50aWZpZXIpIHsgbV9jbGllbnRJ
ZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVz
dWx0aW5nQ2xpZW50SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0aW5nQ2xpZW50
SWRlbnRpZmllcjsgfQorICAgIGNvbnN0IFN0cmluZyYgY2xpZW50SWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1fY2xpZW50SWRlbnRpZmllcjsgfQogI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+IGRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09m
UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtMjU1LDYgKzI1
OSw4IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
PiBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXI7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBtX3NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s7CisgICAgU3RyaW5nIG1fcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcjsKKyAg
ICBTdHJpbmcgbV9jbGllbnRJZGVudGlmaWVyOwogI2VuZGlmCiAgICAgTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXIgbV9yZXNvdXJjZUxvYWRJRDsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIG1fcmVkaXJlY3RSZXNwb25zZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLmNwcAppbmRleCBjZDJkNmEyMDczZmI5N2FiYTAxNmQzYzdlZjMxYzc3MWExMjcwMmM5
Li43MDYxYzFmMDE5MDg5ZjA2NDQxOTBlNmZjMzhkZDZmNTE1OWViZGQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzdGFydEZldGNoKCkKICAgICBhdXRvIHJlcXVlc3QgPSBt
X2N1cnJlbnRSZXF1ZXN0OwogICAgIGNsZWFuSFRUUFJlcXVlc3RIZWFkZXJzRm9yQWNjZXNzQ29u
dHJvbChyZXF1ZXN0LCBtX2xvYWRlci5wYXJhbWV0ZXJzKCkuaHR0cEhlYWRlcnNUb0tlZXApOwog
Ci0gICAgYm9vbCBpc1NlbnQgPSBzZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2VzOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IG1fc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1fZmV0Y2hJZGVudGlmaWVyLCBy
ZXF1ZXN0LCBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgbV9jdXJyZW50UmVxdWVz
dC5odHRwQm9keSgpIH0sIHJlZmVycmVyLCBtX3ByZWxvYWRlciAmJiBtX3ByZWxvYWRlci0+aXNT
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkKCkgfSk7CisgICAgYm9vbCBpc1Nl
bnQgPSBzZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6U3RhcnRGZXRjaCB7IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1fc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIG1fZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25z
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgbV9jdXJyZW50UmVxdWVzdC5odHRwQm9keSgpIH0s
IHJlZmVycmVyLCBtX3ByZWxvYWRlciAmJiBtX3ByZWxvYWRlci0+aXNTZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRFbmFibGVkKCksIG1fbG9hZGVyLmNsaWVudElkZW50aWZpZXIoKSwgbV9s
b2FkZXIucmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcigpIH0pOwogICAgIEFTU0VSVF9VTlVTRUQo
aXNTZW50LCBpc1NlbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
Y3BwCmluZGV4IDQ3MmEyMzEzOWY3NjhiMDkxM2M2YWMxNDQxOWY3ZDhiZGYyNDJlYWUuLmEyM2Qz
YTlmMzc5YWExMGE0MDE5ODYwMGQ4NTYyNmVmZmRkOWFiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OnVwZGF0ZVdvcmtlclN0YXRlSW5DbGllbnQoU2VydmljZVdvcmtlcklkZW50
aWZpZXIgd28KICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OlVwZGF0
ZVdvcmtlclN0YXRlKHdvcmtlciwgc3RhdGUpKTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OmNvbnRyb2xDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xp
ZW50SWRlbnRpZmllciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorU3RyaW5nIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6
Y29udHJvbENsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJZGVu
dGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgLy8gQXMgcGVyIHN0ZXAgMTIgb2YgaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI29uLWZldGNoLXJlcXVlc3QtYWxnb3JpdGhtLCB0
aGUgYWN0aXZlIHNlcnZpY2Ugd29ya2VyIHNob3VsZCBiZSBjb250cm9sbGluZyB0aGUgZG9jdW1l
bnQuCiAgICAgLy8gV2UgcmVnaXN0ZXIgYSB0ZW1wb3Jhcnkgc2VydmljZSB3b3JrZXIgY2xpZW50
IHVzaW5nIHRoZSBpZGVudGlmaWVyIHByb3ZpZGVkIGJ5IERvY3VtZW50TG9hZGVyIGFuZCBub3Rp
ZnkgRG9jdW1lbnRMb2FkZXIgYWJvdXQgaXQuCkBAIC0xNDksOCArMTQ5LDggQEAgdm9pZCBXZWJT
V1NlcnZlckNvbm5lY3Rpb246OmNvbnRyb2xDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXIgY2xpZW4KICAgICAgICAgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY2xp
ZW50SWRlbnRpZmllcik7CiAgICAgfSk7CiAKLSAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBk
YXRhIHsgY2xpZW50SWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdywg
U2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZTo6Tm9uZSwgcmVxdWVzdC51cmwoKSwgcmVxdWVz
dC5pc0FwcEluaXRpYXRlZCgpID8gV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQ6OlllcyA6IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpObyB9Owot
ICAgIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChTZWN1cml0eU9yaWdpbkRhdGEgeyByZWdp
c3RyYXRpb24ua2V5KCkudG9wT3JpZ2luKCkgfSwgV1RGTW92ZShkYXRhKSwgcmVnaXN0cmF0aW9u
LmlkZW50aWZpZXIoKSwgcmVxdWVzdC5odHRwVXNlckFnZW50KCkpOworICAgIFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhIGRhdGEgeyBjbGllbnRJZGVudGlmaWVyLCB7IH0sIFNlcnZpY2VXb3JrZXJD
bGllbnRUeXBlOjpXaW5kb3csIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGU6Ok5vbmUsIHJl
cXVlc3QudXJsKCksIHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKSA/IFdlYkNvcmU6Okxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMgOiBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZDo6Tm8gfTsKKyAgICByZXR1cm4gcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
KFNlY3VyaXR5T3JpZ2luRGF0YSB7IHJlZ2lzdHJhdGlvbi5rZXkoKS50b3BPcmlnaW4oKSB9LCBX
VEZNb3ZlKGRhdGEpLCByZWdpc3RyYXRpb24uaWRlbnRpZmllcigpLCByZXF1ZXN0Lmh0dHBVc2Vy
QWdlbnQoKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayhOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtMTc0LDcgKzE3
NCw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayhOCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IHJlZ2lz
dHJhdGlvbi0+aWRlbnRpZmllcigpOwotICAgICAgICBjb250cm9sQ2xpZW50KCpsb2FkZXIucGFy
YW1ldGVycygpLm9wdGlvbnMuY2xpZW50SWRlbnRpZmllciwgKnJlZ2lzdHJhdGlvbiwgcmVxdWVz
dCk7CisgICAgICAgIGF1dG8gcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllciA9IGNvbnRyb2xDbGll
bnQoKmxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucy5jbGllbnRJZGVudGlmaWVyLCAqcmVnaXN0
cmF0aW9uLCByZXF1ZXN0KTsKKyAgICAgICAgbG9hZGVyLnNldFJlc3VsdGluZ0NsaWVudElkZW50
aWZpZXIoV1RGTW92ZShyZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKSk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgaWYgKCFsb2FkZXIucGFyYW1ldGVycygpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDQsNiArMjA1
LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayhOCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAorICAgIGlmIChsb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnMubW9kZSAhPSBGZXRj
aE9wdGlvbnM6Ok1vZGU6Ok5hdmlnYXRlICYmIGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucy5j
bGllbnRJZGVudGlmaWVyKSB7CisgICAgICAgIGlmIChhdXRvIGRhdGEgPSB3b3JrZXItPmZpbmRD
bGllbnRCeUlkZW50aWZpZXIoKmxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucy5jbGllbnRJZGVu
dGlmaWVyKSkKKyAgICAgICAgICAgIGxvYWRlci5zZXRDbGllbnRJZGVudGlmaWVyKFN0cmluZyB7
IGRhdGEtPnZpc2libGVJZCB9KTsKKyAgICB9CisKICAgICBib29sIGlzV29ya2VyUmVhZHkgPSB3
b3JrZXItPmlzUnVubmluZygpICYmIHdvcmtlci0+c3RhdGUoKSA9PSBTZXJ2aWNlV29ya2VyU3Rh
dGU6OkFjdGl2YXRlZDsKICAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s+KCp0aGlzLCBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3QgfSwgaWRl
bnRpZmllcigpLCB3b3JrZXItPmlkZW50aWZpZXIoKSwgKnJlZ2lzdHJhdGlvbiwgc2Vzc2lvbigp
LCBpc1dvcmtlclJlYWR5KTsKICAgICBzdGFydEZldGNoKCp0YXNrLCAqd29ya2VyKTsKQEAgLTM1
OSw3ICszNjUsNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Z2V0UmVnaXN0cmF0aW9u
cyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbgogICAgIGNhbGxiYWNrKHNlcnZl
cigpLmdldFJlZ2lzdHJhdGlvbnModG9wT3JpZ2luLCBjbGllbnRVUkwpKTsKIH0KIAotdm9pZCBX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChTZWN1cml0
eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYgZGF0YSwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4m
IGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFN0cmluZyYm
IHVzZXJBZ2VudCkKK1N0cmluZyBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudChTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhJiYgZGF0YSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIsIFN0cmluZyYmIHVzZXJBZ2VudCkKIHsKICAgICBhdXRvIGNvbnRleHRPcmln
aW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoZGF0YS51cmwpOwogICAgIGJvb2wgaXNO
ZXdPcmlnaW4gPSBXVEY6OmFsbE9mKG1fY2xpZW50T3JpZ2lucy52YWx1ZXMoKSwgWyZjb250ZXh0
T3JpZ2luXShhdXRvJiBvcmlnaW4pIHsKQEAgLTM2OSw3ICszNzUsNyBAQCB2b2lkIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFNlY3VyaXR5T3JpZ2lu
RGF0YSYmIHRvcAogCiAgICAgYXV0byBjbGllbnRPcmlnaW4gPSBDbGllbnRPcmlnaW4geyBXVEZN
b3ZlKHRvcE9yaWdpbiksIFdURk1vdmUoY29udGV4dE9yaWdpbikgfTsKICAgICBtX2NsaWVudE9y
aWdpbnMuYWRkKGRhdGEuaWRlbnRpZmllciwgY2xpZW50T3JpZ2luKTsKLSAgICBzZXJ2ZXIoKS5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoV1RGTW92ZShjbGllbnRPcmlnaW4pLCBXVEZNb3Zl
KGRhdGEpLCBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBX
VEZNb3ZlKHVzZXJBZ2VudCkpOworICAgIGF1dG8gdmlzaWJsZUlkZW50aWZpZXIgPSBzZXJ2ZXIo
KS5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoV1RGTW92ZShjbGllbnRPcmlnaW4pLCBXVEZN
b3ZlKGRhdGEpLCBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
LCBXVEZNb3ZlKHVzZXJBZ2VudCkpOwogCiAgICAgaWYgKCFtX2lzVGhyb3R0bGVhYmxlKQogICAg
ICAgICB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CkBAIC0zNzgsNiArMzg0LDcgQEAgdm9pZCBXZWJT
V1NlcnZlckNvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChTZWN1cml0eU9y
aWdpbkRhdGEmJiB0b3AKICAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiY+KCpjb250ZXh0Q29ubmVjdGlvbik7CiAgICAg
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFBy
b2Nlc3MgeyBpZGVudGlmaWVyKCksIGNvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9
LCAwKTsKICAgICB9CisgICAgcmV0dXJuIHZpc2libGVJZGVudGlmaWVyOwogfQogCiB2b2lkIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3Qg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXImIGNsaWVudElkZW50aWZpZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggOTZhMmNiMGQxY2E5OTc5Y2ZkNDUx
YTc3ZTU1ZWU3Y2I0NTEyZGVhZC4uMWE3MzUwYjE0MDM0NGI0YzA1MzhjMjEwY2UzOTgwZmQzNjgw
YTJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtMTA2LDcgKzEw
Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbihjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGF0YT4mJik+JiYpOwogICAgIHZvaWQgZ2V0UmVnaXN0cmF0aW9ucyhjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGll
bnRVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiYpPiYmKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwg
V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGEmJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mLCBTdHJpbmcmJiB1
c2VyQWdlbnQpOworICAgIFN0cmluZyByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YSYmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyPiYsIFN0cmluZyYmIHVzZXJBZ2VudCk7CiAgICAgdm9pZCB1
bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0SWRlbnRpZmllciYpOwogICAgIHZvaWQgdGVybWluYXRlV29ya2VyRnJvbUNsaWVu
dChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHdoZW5TZXJ2aWNlV29ya2VySXNUZXJtaW5hdGVkRm9yVGVzdGlu
ZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0UHVzaFBl
cm1pc3Npb25TdGF0ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDx1aW50OF90LCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhPiYmKT4mJik7CiAKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBXZWJDb3JlOjpN
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JD
bGllbnRJZGVudGlmaWVyJiBzb3VyY2UpOwotICAgIHZvaWQgY29udHJvbENsaWVudChXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6U1dTZXJ2ZXJSZWdp
c3RyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBTdHJpbmcg
Y29udHJvbENsaWVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwg
V2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmKTsKIAogICAgIHVzaW5nIEV4Y2VwdGlvbk9yVm9pZENhbGxiYWNrID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPjsK
ICAgICB2b2lkIGVuYWJsZU5hdmlnYXRpb25QcmVsb2FkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyLCBFeGNlcHRpb25PclZvaWRDYWxsYmFjayYmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXgg
ZjBhODk2NzVjYzE0NDM3MDhhMGI2OGFjOTMxY2U3N2ZkMjVjNDAwNS4uNWE4NzAzZWZkNmQ1ZGNk
NDFhMjI1YThkMTJlM2RkNWRkYWUxMDYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTE1NSwxMSArMTU1LDYgQEAgdm9pZCBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZUR1ZVRvVW5yZXNwb25zaXZl
bmVzcygpCiAgICAgbV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRl
VW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyB7IHdlYlByb2Nlc3NJZGVudGlmaWVy
KCkgfSwgMCk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaW5k
Q2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYgZGF0YSwgYm9vbCBo
YXNTZWN1cml0eUVycm9yKQotewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkIHsgcmVxdWVzdElk
ZW50aWZpZXIsIGRhdGEsIGhhc1NlY3VyaXR5RXJyb3IgfSk7Ci19Ci0KIHZvaWQgV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYgY2xpZW50
c0RhdGEpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246Ok1hdGNoQWxsQ29tcGxldGVkIHsgcmVxdWVzdElkZW50aWZpZXIsIGNsaWVudHNEYXRhIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmlu
ZGV4IDMzNjU4YzU0YzE0ZmE0YTQ0NGI3NDM2ZGQ5MGIwODU5YTI0MmJiNTMuLmQ5NWI3Y2U4NTQ2
OThjNTE2NmQzYTE1OWEzNzg4ZWRlMmQ5YjIyOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTk1LDcgKzk1LDYgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKSBmaW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2NyaXB0QnVmZmVy
JiwgY29uc3QgSGFzaE1hcDxVUkwsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4mIGltcG9ydGVkU2Ny
aXB0cykgZmluYWw7Ci0gICAgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDbGllbnREYXRhPiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikgZmluYWw7CiAg
ICAgdm9pZCBtYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYpIGZpbmFsOwogICAg
IHZvaWQgZmlyZVB1c2hFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGZkNzE5NDhjNWYzNTk5
OWY1NTJkZjFkZmQ2MzUyYzEzZDJmNWY4MWUuLjBkNjE0NTBkNDFhMzAxZjA4ZjllYzVlNmEzYTYw
MDYxZjliNjQzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzIsNyArMzIsNyBAQCBtZXNzYWdl
cyAtPiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAg
U2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKQogICAgIFNraXBXYWl0
aW5nKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+ICgpIEFz
eW5jCiAgICAgV29ya2VyVGVybWluYXRlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBpZGVudGlmaWVyKQotICAgIEZpbmRDbGllbnRCeUlkZW50aWZpZXIodWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBj
bGllbnRJZGVudGlmaWVyKQorICAgIEZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTdHJp
bmcgY2xpZW50SWRlbnRpZmllcikgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdv
cmtlckNsaWVudERhdGE+IGRhdGEpIEFzeW5jCiAgICAgTWF0Y2hBbGwodWludDY0X3QgbWF0Y2hB
bGxSZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
UXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIENsYWltKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpFeGNlcHRpb25EYXRhPiByZXN1bHQpIEFzeW5jCiAgICAgU2V0U2NyaXB0UmVzb3VyY2Uo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgVVJMIHNjcmlwdFVS
TCwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCBzY3Jp
cHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggMDNlZWI4YjJkODEz
MTBmOWU5Njc3ZmYzYjBjMGU5NGMzNDRmNmZkNS4uNTVjYTdkYzNjZTA2YjU1MTQ5Y2E5YzNjYWNm
NTgxMmQ1NjQ5YWY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAt
MjQxLDcgKzI0MSw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNvbnRp
bnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoU1dTZXJ2ZXJDb25uCiAgICAgICAgIHNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eS0+Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmll
ciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYmIGZvcm1EYXRhLCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBp
c1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQpCit2b2lkIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiYgZm9ybURhdGEsIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCwgU3RyaW5nJiYgY2xpZW50SWRlbnRp
ZmllciwgU3RyaW5nJiYgcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcikKIHsKICAgICBhdXRvKiBz
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5z
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIGlm
ICghc2VydmljZVdvcmtlclRocmVhZFByb3h5KSB7CkBAIC0yNTcsMTAgKzI1Nyw5IEBAIHZvaWQg
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciBzZXJ2CiAgICAgfQogCiAgICAgYXV0byBjbGllbnQgPSBXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpjcmVhdGUobV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cy5jb3B5UmVmKCksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0LnJlcXVlc3RlcigpID09IFJlc291cmNl
UmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluKTsKLSAgICBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyPiBjbGllbnRJZCA9IG9wdGlvbnMuY2xpZW50SWRlbnRpZmll
cjsKIAogICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoZm9ybURhdGEudGFrZURhdGEoKSk7Ci0gICAg
c2VydmljZVdvcmtlclRocmVhZFByb3h5LT5zdGFydEZldGNoKHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIFdURk1vdmUoY2xpZW50KSwgV1RGTW92ZShjbGllbnRJ
ZCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVmZXJyZXIpLCBXVEZNb3ZlKG9wdGlvbnMp
LCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQpOworICAgIHNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eS0+c3RhcnRGZXRjaChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
ZmV0Y2hJZGVudGlmaWVyLCBXVEZNb3ZlKGNsaWVudCksIFdURk1vdmUocmVxdWVzdCksIFdURk1v
dmUocmVmZXJyZXIpLCBXVEZNb3ZlKG9wdGlvbnMpLCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZEVuYWJsZWQsIFdURk1vdmUoY2xpZW50SWRlbnRpZmllciksIFdURk1vdmUocmVzdWx0
aW5nQ2xpZW50SWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2Fn
ZSwgU2VydmljZVdvcmtlck9yQ2xpZW50RGF0YSYmIHNvdXJjZURhdGEpCkBAIC0zMzMsMjIgKzMz
Miw5IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OndvcmtlclRlcm1pbmF0
ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VyCiAgICAgbV9jb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpX
b3JrZXJUZXJtaW5hdGVkKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSwgMCk7CiB9CiAKLXZvaWQg
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZpZXIoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIEZpbmRDbGll
bnRCeUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6ZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgY2xpZW50SWRlbnRpZmllciwgRmluZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7Ci0gICAgYXV0byByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9wcmV2aW91c1JlcXVl
c3RJZGVudGlmaWVyOwotICAgIG1fZmluZENsaWVudEJ5SWRlbnRpZmllclJlcXVlc3RzLmFkZChy
ZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwotICAgIG1fY29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6RmluZENsaWVudEJ5SWRlbnRpZmllciB7IHJlcXVlc3RJZGVudGlmaWVyLCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllciB9LCAwKTsKLX0KLQotdm9pZCBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRl
ZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YT4mJiBjbGllbnREYXRhLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpCi17Ci0gICAg
aWYgKGF1dG8gY2FsbGJhY2sgPSBtX2ZpbmRDbGllbnRCeUlkZW50aWZpZXJSZXF1ZXN0cy50YWtl
KHJlcXVlc3RJZGVudGlmaWVyKSkgewotICAgICAgICBpZiAoaGFzU2VjdXJpdHlFcnJvcikgewot
ICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciB9KTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNsaWVu
dERhdGEpKTsKLSAgICB9CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OkZp
bmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyIHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNs
aWVudElkZW50aWZpZXIgfSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiB2b2lkIFdlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjptYXRjaEFsbChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVu
dFF1ZXJ5T3B0aW9ucyYgb3B0aW9ucywgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxi
YWNrJiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCAwNTgw
ZDk4MzIyOGE3MmJiOGM5OTQ5Y2EyYjFiNGM3MTE4ZmFjNjEwLi5hY2UxYTk5ZGQxMTg3MWZjMmJk
ZDdjYjQ1ZmY1NzRhODc5ZjE1MWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgK
QEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24o
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgc2V0U2Vy
dmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgd29ya2VyVGVybWluYXRlZChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7Ci0gICAgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlm
aWVyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllciwgRmluZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNrJiYp
IGZpbmFsOworICAgIHZvaWQgZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIEZpbmRDbGllbnRCeUlkZW50
aWZpZXJDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIG1hdGNoQWxsKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVl
cnlPcHRpb25zJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgY2xhaW0oV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6RXhjZXB0aW9uT3I8dm9pZD4mJik+
JiYpIGZpbmFsOwogICAgIHZvaWQgc2tpcFdhaXRpbmcoV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CkBAIC05MCw3ICs5
MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyRmFpbGVkVG9TdGFydChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3Nh
Z2UpIGZpbmFsOwogICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhJiYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJEYXRhJiYsIFN0cmlu
ZyYmIHVzZXJBZ2VudCwgV2ViQ29yZTo6V29ya2VyVGhyZWFkTW9kZSk7CiAgICAgdm9pZCB1cGRh
dGVBcHBJbml0aWF0ZWRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2Vi
Q29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOwotICAgIHZvaWQgc3RhcnRGZXRj
aChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlv
blByZWxvYWRFbmFibGVkKTsKKyAgICB2b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdl
YkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNv
cmU6OkZldGNoT3B0aW9ucyYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYsIFN0cmluZyYmIHJl
ZmVycmVyLCBib29sIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCwgU3Ry
aW5nJiYgY2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmll
cik7CiAgICAgdm9pZCBjYW5jZWxGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2Vi
Q29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcik7CiAgICAgdm9pZCBwb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0
aW5hdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEmJiBzb3VyY2VEYXRhKTsKQEAgLTEwMSw3
ICsxMDEsNiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpICYmIFBM
QVRGT1JNKENPQ09BKQogICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYmLCBIYXNoTWFwPFVS
TCwgV2ViQ29yZTo6U2NyaXB0QnVmZmVyPiYmIGltcG9ydGVkU2NyaXB0cyk7CiAjZW5kaWYKLSAg
ICB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+
JiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcik7CiAgICAgdm9pZCBtYXRjaEFsbENvbXBsZXRlZCh1
aW50NjRfdCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudERhdGE+JiYpOwogICAgIHZvaWQgc2V0VXNlckFnZW50KFN0cmluZyYmIHVz
ZXJBZ2VudCk7CiAgICAgdm9pZCBjbG9zZSgpOwpAQCAtMTE3LDcgKzExNiw2IEBAIHByaXZhdGU6
CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAKICAgICBIYXNoU2V0PHN0
ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+PiBtX2xvYWRlcnM7
Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgRmluZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNrPiBt
X2ZpbmRDbGllbnRCeUlkZW50aWZpZXJSZXF1ZXN0czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2s+IG1fbWF0Y2hBbGxS
ZXF1ZXN0czsKICAgICB1aW50NjRfdCBtX3ByZXZpb3VzUmVxdWVzdElkZW50aWZpZXIgeyAwIH07
CiAgICAgU3RyaW5nIG1fdXNlckFnZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBkNTQxYjgwMzE5MmI4ZDU0ZDE4MjE3ZmIxMTI1NmRm
MDA2OTUzMDIwLi5jNmExYThmYjM2NzZkZmNkN2YyZDhmNzQyMGExZThiY2M5MGIzMTAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjUs
NyArMjUsNyBAQAogbWVzc2FnZXMgLT4gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90
UmVmQ291bnRlZCB7CiAgICAgSW5zdGFsbFNlcnZpY2VXb3JrZXIoc3RydWN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSwgc3RydWN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJEYXRhIHdvcmtlckRhdGEsIFN0cmluZyB1c2VyQWdlbnQsIGVudW06Ym9vbCBXZWJD
b3JlOjpXb3JrZXJUaHJlYWRNb2RlIHdvcmtlclRocmVhZE1vZGUpCiAgICAgVXBkYXRlQXBwSW5p
dGlhdGVkVmFsdWUoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGVudW06Ym9vbCBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkKLSAgICBTdGFydEZldGNoKFdlYkNv
cmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyBvcHRp
b25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBTdHJpbmcgcmVmZXJyZXIs
IGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkKQorICAgIFN0YXJ0
RmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0Y2hP
cHRpb25zIG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFN0cmlu
ZyByZWZlcnJlciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQs
IFN0cmluZyBjbGllbnRJZGVudGlmZXIsIFN0cmluZyByZXN1dGxpbmdDbGllbnRJZGVudGlmaWVy
KQogICAgIENhbmNlbEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIg
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0
Y2hJZGVudGlmaWVyKQogICAgIENvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29y
ZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIpCiAgICAgUG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVz
dGluYXRpb25JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50RGF0YSBzb3VyY2VEYXRh
KQpAQCAtMzcsNyArMzcsNiBAQCBtZXNzYWdlcyAtPiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbiBOb3RSZWZDb3VudGVkIHsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQ
TEFURk9STShDT0NPQSkKICAgICBEaWRTYXZlU2NyaXB0c1RvRGlzayhXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6U2NyaXB0
QnVmZmVyIHNjcmlwdCwgSGFzaE1hcDxVUkwsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gaW1wb3J0
ZWRTY3JpcHRzKTsKICNlbmRpZgotICAgIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQo
dWludDY0X3QgY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gZGF0YSwgYm9vbCBoYXNTZWN1cml0eUVycm9yKQog
ICAgIE1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIs
IFZlY3RvcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gY2xpZW50c0RhdGEpCiAg
ICAgU2V0VXNlckFnZW50KFN0cmluZyB1c2VyQWdlbnQpCiAgICAgVXBkYXRlUHJlZmVyZW5jZXNT
dG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDgy
NTYxMDk1ODU0ZGMzOWRlNTQwMjRjNjcxMDk4MWJlZGYzMmM2YjguLjA5ZGI0YjJhZmNjY2FiZjJl
NGY4YjU5NWQ5NzMzMTk2NzgwZDllMzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMi0wMS0x
MSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBTZXJ2
aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0ZWFkIG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJv
bSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwNzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRlc3RzIHRvIG5vdCByZWx5IG9u
IHZpc2libGUgSUQgdG8gYmUgdGhlIHNlcmlhbGl6YXRpb24gb2YgYSBTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllci4KKyAgICAgICAgRm9yIHRoYXQgcmVhc29uLCBhZGQgaW50ZXJuYWxz
IEFQSSB0byBnZXQgdGhlIGludGVybmFsIElEIGZyb20gYSBTZXJ2aWNlV29ya2VyQ2xpZW50Lgor
CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvY2xpZW50LWFkZGVkLXRvLWNs
aWVudHMtd2hlbi1yZXN0b3JlZC1mcm9tLXBhZ2UtY2FjaGUuaHRtbDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9jbGllbnQtcmVtb3ZlZC1mcm9tLWNsaWVudHMtd2hpbGUt
aW4tcGFnZS1jYWNoZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNl
L3Jlc291cmNlcy9nZXRDbGllbnRJZHMtd29ya2VyLmpzOgorICAgICAgICAoZXZlbnQudGhlbik6
CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVu
dHMtbWF0Y2hBbGwtd29ya2VyLmpzOgorICAgICAgICAoYXN5bmMgc2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXJGcm9tSW50ZXJuYWxJZGVudGlmaWVyKToKKyAgICAgICAgKGFzeW5jIGRvVGVz
dEFmdGVyTWVzc2FnZSk6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmljZXdvcmtlcmNsaWVudHMtbWF0Y2hBbGwuaHR0cHMuaHRtbDoKKwogMjAyMi0wMS0xMCAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRW5mb3JjZSBmb2N1cyBj
aGVjayBmb3IgZ2V0VXNlck1lZGlhCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAx
MzNhZTJhMWNkYWI5NGE3MTNiZjA3NjNlMzA0NWFjMmUzMzAwOTA1Li41YTg5OGQzODkxMWJmNTE5
ZWE2MzUyMTUwMDExNDgyZGQ2MTk5M2NmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAyMi0wMS0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKKyAgICAgICAgTWFrZSBTZXJ2aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0
ZWFkIG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJvbSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzUwNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gt
ZXZlbnQuaHR0cHMtZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAxLTA5ICBBbnRvaW5lIFF1aW50ICA8
Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgV1BUIHVwZGF0ZSBhZnRl
ciBodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9wdWxsLzMyMjIyLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvY2xpZW50
LWFkZGVkLXRvLWNsaWVudHMtd2hlbi1yZXN0b3JlZC1mcm9tLXBhZ2UtY2FjaGUuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2NsaWVudC1hZGRlZC10by1jbGll
bnRzLXdoZW4tcmVzdG9yZWQtZnJvbS1wYWdlLWNhY2hlLmh0bWwKaW5kZXggMTA3OTdmMjhlMzRl
NWE5NzIyMDg3MDFkMjdmM2FlZmQxNzUxODQ5Zi4uNmEyMjg0ZWNmMmMzOWYxYjg4ZDY2ZGFiYzJm
NWE3YWE2ZTFiMDIyYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvY2xpZW50LWFkZGVkLXRvLWNsaWVudHMtd2hlbi1yZXN0b3JlZC1mcm9tLXBhZ2Ut
Y2FjaGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9j
bGllbnQtYWRkZWQtdG8tY2xpZW50cy13aGVuLXJlc3RvcmVkLWZyb20tcGFnZS1jYWNoZS5odG1s
CkBAIC03MCwxMiArNzAsMTIgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0
ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CiB9KTsKIAogbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9nZXRDbGllbnRJZHMtd29ya2VyLmpzIiwgeyB9
KS50aGVuKGZ1bmN0aW9uKHJlZ2lzdHJhdGlvbikgewotICAgIGV4cGVjdGVkQ2xpZW50SWRlbnRp
ZmllcnMucHVzaChpbnRlcm5hbHMuc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIoZG9jdW1l
bnQpKTsKKyAgICBleHBlY3RlZENsaWVudElkZW50aWZpZXJzLnB1c2goaW50ZXJuYWxzLnNlcnZp
Y2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIoZG9jdW1lbnQpKTsKIAogICAgIHdvcmtl
ciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOwogICAgIG90aGVyV2luZG93ID0gb3Blbigib3Ro
ZXJfcmVzb3VyY2VzL3Rlc3QuaHRtbCIpOwogICAgIG90aGVyV2luZG93Lm9ubG9hZCA9IGZ1bmN0
aW9uKCkgewotICAgICAgZXhwZWN0ZWRDbGllbnRJZGVudGlmaWVycy5wdXNoKGludGVybmFscy5z
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihvdGhlcldpbmRvdy5kb2N1bWVudCkpOworICAg
ICAgZXhwZWN0ZWRDbGllbnRJZGVudGlmaWVycy5wdXNoKGludGVybmFscy5zZXJ2aWNlV29ya2Vy
Q2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKG90aGVyV2luZG93LmRvY3VtZW50KSk7CiAgICAgICBz
dGVwID0gIkJvdGhDbGllbnRzSW5pdGlhbGx5QWN0aXZlIgogICAgICAgd29ya2VyLnBvc3RNZXNz
YWdlKCJnZXRDbGllbnRJZHMiKTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvY2xpZW50LXJlbW92ZWQtZnJvbS1jbGllbnRzLXdoaWxl
LWluLXBhZ2UtY2FjaGUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL2NsaWVudC1yZW1vdmVkLWZyb20tY2xpZW50cy13aGlsZS1pbi1wYWdlLWNhY2hlLmh0bWwK
aW5kZXggZjlmY2Y1ZDM0MmIxM2MwYWRlMWI1ZWZiYjFhNzQ1YzhjYWI2YTQ3Ny4uNjhhOWZjNjI0
OWY1MDUzNTI5NGRmNDM5NzUxYjUzN2RmOGI2YjA2NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvY2xpZW50LXJlbW92ZWQtZnJvbS1jbGllbnRzLXdo
aWxlLWluLXBhZ2UtY2FjaGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9jbGllbnQtcmVtb3ZlZC1mcm9tLWNsaWVudHMtd2hpbGUtaW4tcGFnZS1jYWNo
ZS5odG1sCkBAIC02NSwxMiArNjUsMTQgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZl
bnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CiB9KTsKIAogbmF2aWdhdG9y
LnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9nZXRDbGllbnRJZHMtd29ya2VyLmpz
IiwgeyB9KS50aGVuKGZ1bmN0aW9uKHJlZ2lzdHJhdGlvbikgewotICAgIHRvcENsaWVudElkZW50
aWZpZXIgPSBpbnRlcm5hbHMuc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIoZG9jdW1lbnQp
OworICAgIGlmICghd2luZG93LmludGVybmFscykKKyAgICAgICAgcmV0dXJuOworICAgIHRvcENs
aWVudElkZW50aWZpZXIgPSBpbnRlcm5hbHMuc2VydmljZVdvcmtlckNsaWVudEludGVybmFsSWRl
bnRpZmllcihkb2N1bWVudCk7CiAKICAgICB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGlu
ZzsKICAgICBvdGhlcldpbmRvdyA9IG9wZW4oIm90aGVyX3Jlc291cmNlcy90ZXN0Lmh0bWwiKTsK
ICAgICBvdGhlcldpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKLSAgICAgIHdpbmRvd0NsaWVu
dElkZW50aWZpZXIgPSBpbnRlcm5hbHMuc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIob3Ro
ZXJXaW5kb3cuZG9jdW1lbnQpOworICAgICAgd2luZG93Q2xpZW50SWRlbnRpZmllciA9IGludGVy
bmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKG90aGVyV2luZG93LmRv
Y3VtZW50KTsKICAgICAgIHN0ZXAgPSAiQm90aENsaWVudHNJbml0aWFsbHlBY3RpdmUiCiAgICAg
ICB3b3JrZXIucG9zdE1lc3NhZ2UoImdldENsaWVudElkcyIpOwogICAgIH07CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvZ2V0Q2xp
ZW50SWRzLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNl
L3Jlc291cmNlcy9nZXRDbGllbnRJZHMtd29ya2VyLmpzCmluZGV4IDk5ZGMxY2I4MjIxZDBkZjhk
ZjBjZWVjN2Y1ZmE2YjEwODNkNzNiMTguLmNlMTliMjRmODA4MDRkYTBmNTUxNzkzYWRhN2FmZTY3
ZWZlMDRjYzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3Jlc291cmNlcy9nZXRDbGllbnRJZHMtd29ya2VyLmpzCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9nZXRDbGllbnRJZHMtd29ya2VyLmpz
CkBAIC0zLDcgKzMsNyBAQCBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQp
ID0+IHsKICAgICBjbGllbnRzLm1hdGNoQWxsKHsgaW5jbHVkZVVuY29udHJvbGxlZCA6IHRydWUg
fSkudGhlbihmdW5jdGlvbihjbGllbnRzKSB7CiAgICAgICAgIGxldCBpZHMgPSBbXTsKICAgICAg
ICAgZm9yIChsZXQgY2xpZW50IG9mIGNsaWVudHMpCi0gICAgICAgICAgICBpZHMucHVzaChjbGll
bnQuaWQpOworICAgICAgICAgICAgaWRzLnB1c2goc2VsZi5pbnRlcm5hbHMuc2VydmljZVdvcmtl
ckNsaWVudEludGVybmFsSWRlbnRpZmllcihjbGllbnQpKTsKICAgICAgICAgc291cmNlLnBvc3RN
ZXNzYWdlKGlkcyk7CiAgICAgfSk7CiB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLW1hdGNoQWxsLXdvcmtl
ci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3Jr
ZXJjbGllbnRzLW1hdGNoQWxsLXdvcmtlci5qcwppbmRleCBiZGJhMjgyODYwNTNmMWZkYWQwMzVk
MzkzM2MyODY4MDExNzM2OGMzLi5kYjZmMDU0ZjY4OTJjZjAyYTY4ZGQ5OTlmYjg4NjhlMjJmM2Nj
YTcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9z
ZXJ2aWNld29ya2VyY2xpZW50cy1tYXRjaEFsbC13b3JrZXIuanMKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudHMtbWF0Y2hBbGwt
d29ya2VyLmpzCkBAIC0zLDYgKzMsMTUgQEAgZnVuY3Rpb24gd2FpdEZvcihkdXJhdGlvbikKICAg
ICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgZHVy
YXRpb24pKTsKIH0KIAorYXN5bmMgZnVuY3Rpb24gc2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXJGcm9tSW50ZXJuYWxJZGVudGlmaWVyKGludGVybmFsSWRlbnRpZmllcikKK3sKKyAgICAgY29u
c3QgY2xpZW50cyA9IGF3YWl0IHNlbGYuY2xpZW50cy5tYXRjaEFsbCh7IGluY2x1ZGVVbmNvbnRy
b2xsZWQgOiB0cnVlIH0pOworICAgICBmb3IgKGxldCBjbGllbnQgb2YgY2xpZW50cykgeworICAg
ICAgICAgaWYgKGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlmaWVy
KGNsaWVudCkgPT0gaW50ZXJuYWxJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIGNsaWVu
dC5pZDsKKyAgICAgfQorfQorCiBmdW5jdGlvbiBjaGVja0NsaWVudE5vdEluQ29udHJvbGxlZENs
aWVudHMoY2xpZW50SWRlbnRpZmllcikKIHsKICAgICByZXR1cm4gc2VsZi5jbGllbnRzLm1hdGNo
QWxsKCkudGhlbigoY2xpZW50cykgPT4gewpAQCAtMzcsNyArNDYsNyBAQCBhc3luYyBmdW5jdGlv
biBkb1Rlc3RBZnRlck1lc3NhZ2UoZXZlbnQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBjb25zdCBjbGllbnRJZGVudGlmaWVyID0gZXZlbnQuZGF0YS5pZGVudGlm
aWVyOworICAgICAgICBjb25zdCBjbGllbnRJZGVudGlmaWVyID0gYXdhaXQgc2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXJGcm9tSW50ZXJuYWxJZGVudGlmaWVyKGV2ZW50LmRhdGEuaWRlbnRp
Zmllcik7CiAKICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNoZWNrQ2xpZW50Tm90SW5Db250
cm9sbGVkQ2xpZW50cyhjbGllbnRJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKHJlc3VsdCAhPT0g
IlBBU1MiKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1tYXRjaEFsbC5odHRwcy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudHMtbWF0Y2hB
bGwuaHR0cHMuaHRtbAppbmRleCAyZTZkYmY5OTJkMDUyZDlmMWUzZTUxOGRkN2IwZTg1MWVmMjAw
MGE3Li42OWI1ZjI4OTAxNmZlNDgwMWJlMWFhOTAxMmI1ZGI5ZTZkYjQ2ZmEwIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xp
ZW50cy1tYXRjaEFsbC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29y
a2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLW1hdGNoQWxsLmh0dHBzLmh0bWwKQEAg
LTI3LDcgKzI3LDcgQEAgcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CiB9LCAiU2V0dXAg
d29ya2VyIik7CiAKIHByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewotICAgIGNvbnN0IHNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyID0gaW50ZXJuYWxzLnNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyKGRvY3VtZW50KTsKKyAgICBjb25zdCBzZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllciA9IGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlmaWVy
KGRvY3VtZW50KTsKICAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWpl
Y3QpID0+IHsKICAgICAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5l
cigibWVzc2FnZSIsIHRlc3Quc3RlcF9mdW5jKChldmVudCkgPT4gewogICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhldmVudC5kYXRhLCAiUEFTUyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXIvZmV0Y2gtZXZlbnQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIv
ZmV0Y2gtZXZlbnQuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDVkMmI5YTQzMmRhMDM0NWY5MDMw
NzdmMDBiNmVmMGE2MGZlZTJkYjQuLmRkMzZlOWJiYTM0NWI4ZTU2MjMxZWU1MmQ4MmE1MmE5NTJj
ZThmMjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLWV2ZW50Lmh0dHBzLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1ldmVudC5odHRwcy1leHBl
Y3RlZC50eHQKQEAgLTYsNyArNiw3IEBAIFBBU1MgU2VydmljZSBXb3JrZXIgcmVzcG9uZHMgdG8g
ZmV0Y2ggZXZlbnQgdXNpbmcgcmVxdWVzdCBmcmFnbWVudCB3aXRoIHN0cmluZwogUEFTUyBTZXJ2
aWNlIFdvcmtlciByZXNwb25kcyB0byBmZXRjaCBldmVudCB3aXRoIGJsb2IgYm9keQogUEFTUyBT
ZXJ2aWNlIFdvcmtlciByZXNwb25kcyB0byBmZXRjaCBldmVudCB3aXRoIHRoZSByZWZlcnJlciBV
UkwKIFBBU1MgU2VydmljZSBXb3JrZXIgcmVzcG9uZHMgdG8gZmV0Y2ggZXZlbnQgd2l0aCBhbiBl
eGlzdGluZyBjbGllbnQgaWQKLUZBSUwgU2VydmljZSBXb3JrZXIgcmVzcG9uZHMgdG8gZmV0Y2gg
ZXZlbnQgd2l0aCB0aGUgY29ycmVjdCByZXN1bHRpbmcgY2xpZW50IGlkIGFzc2VydF9lcXVhbHM6
IFNlcnZpY2UgV29ya2VyIHNob3VsZCByZXNwb25kIHdpdGggYW4gZW1wdHkgcmVzdWx0aW5nIGNs
aWVudCBpZCBmb3Igc3VicmVzb3VyY2UgcmVxdWVzdHMgZXhwZWN0ZWQgIlJlc3VsdGluZyBDbGll
bnQgSUQgTm90IEZvdW5kIiBidXQgZ290ICJSZXN1bHRpbmcgQ2xpZW50IElEIEZvdW5kOiB1bmRl
ZmluZWQiCitQQVNTIFNlcnZpY2UgV29ya2VyIHJlc3BvbmRzIHRvIGZldGNoIGV2ZW50IHdpdGgg
dGhlIGNvcnJlY3QgcmVzdWx0aW5nIGNsaWVudCBpZAogUEFTUyBTZXJ2aWNlIFdvcmtlciBkb2Vz
IG5vdCByZXNwb25kIHRvIGZldGNoIGV2ZW50CiBQQVNTIFNlcnZpY2UgV29ya2VyIHJlc3BvbmRz
IHRvIGZldGNoIGV2ZW50IHdpdGggbnVsbCByZXNwb25zZSBib2R5CiBQQVNTIFNlcnZpY2UgV29y
a2VyIGZldGNoZXMgb3RoZXIgZmlsZSBpbiBmZXRjaCBldmVudAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449039</attachid>
            <date>2022-01-13 02:54:08 -0800</date>
            <delta_ts>2022-01-13 04:37:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235070-20220113115404.patch</filename>
            <type>text/plain</type>
            <size>84713</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3OTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAwNzkxMWQ1NjQ4ZDYwYWU3MmU0ZGRh
ZWFjNDQ0ZjAxMDNlMjZjNjUuLmFkY2ZiODY0NjNkZjVlYmE4ZjMyMmU3N2QzZjFjMDk3YzQ5OGI0
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDEtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5pZCBhIFVV
SUQgaW5zdGVhZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM1MDcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvVVVJRC5jcHA6CisgICAgICAgICogd3RmL1VVSUQuaDoKKyAgICAgICAgIEFk
ZCByb3V0aW5lIHRvIHN0cmluZ2lmeSBhIFVVSUQuCisgICAgICAgICBBZGQgcm91dGluZSB0byBw
YXJzZSBhIHN0cmluZ2lmaWVkIFVVSUQuCisKIDIwMjEtMTEtMjkgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTZXJpYWxpemUgQ1NTIDxudW1iZXI+IHZh
bHVlcyB3aXRoIHJvdW5kaW5nLCBsaW1pdGVkIGRlY2ltYWwgcHJlY2lzaW9uLCBhbmQgbm8gZXhw
b25lbnRzIHBlci1zcGVjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGJiZWMyNzUxOTAwNzM3NTljN2Q4ZTg4NzU5
YzNmMDFlMzk1NTkyNy4uMTAwMTMxZjYzN2NlZWMzZmVjMDU4ZDY5MTg2ZDc0MjJkZDZhZWQ1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIyLTAxLTEzICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFNlcnZpY2VXb3JrZXJDbGllbnQuaWQg
YSBVVUlEIGluc3RlYWQgb2YgYSBzdHJpbmcgZGVyaXZlZCBmcm9tIGEgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTA3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVwZGF0ZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciB0byBiZSBh
IHByb2Nlc3Mtc2NvcGVkIFVVSUQuCisgICAgICAgIFRoaXMgYWxsb3dzIHRvIGlkZW50aWZ5IHRo
ZSBwcm9jZXNzIHJ1bm5pbmcgYSBwcm9jZXNzIGFzIHdlbGwgYXMgZXhwb3NpbmcgdG8gSmF2YVNj
cmlwdCBjb250ZXh0IGlkZW50aWZpZXJzIGFzIFVVSURzLgorICAgICAgICBUaGlzIGlzIG1hdGNo
aW5nIHdoYXQgQ2hyb21lIGFuZCBGaXJlZm94IGFyZSBkb2luZy4KKyAgICAgICAgTWFrZSBTV1Nl
cnZlciBzdG9yZSB0aGUgbWFwaW5nIGZyb20gY29udGV4dCBVVUlEIHN0cmluZ3MgdG8gdGhlIGlu
dGVybmFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVycy4KKyAgICAgICAgVGhpcyBh
bGxvd3MgdG8gZmluZCBhIFNlcnZpY2VXb3JrZXJDbGllbnQgZGlyZWN0bHkgZnJvbSBpdHMgSmF2
YVNjcmlwdCBleHBvc2VkIGlkZW50aWZpZXIuCisgICAgICAgIFJlbmFtZSByZXNlcnZlZENsaWVu
dElkIGluIHJlc3VsdGluZ0NsaWVudElkIHRvIG1hdGNoIHRoZSBzcGVjLgorCisgICAgICAgIENv
dmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYi1sb2Nrcy9X
ZWJMb2NrUmVnaXN0cnkuY3BwOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAqIHBh
Z2UvbWFjL1BhZ2VNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vUHJvY2Vzc1F1YWxpZmllZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmg6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorICAgICAgICAqIHRl
c3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHA6CisgICAgICAgICogdGVzdGluZy9TZXJ2
aWNlV29ya2VySW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50
ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHA6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvRmV0Y2hFdmVudC5pZGw6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnQuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50LmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudHMuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
RmV0Y2guY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJGZXRjaC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmg6CisKIDIwMjItMDEtMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIE5ldyBzZXJ2aWNlIHdvcmtlciBBUEkgJ0ZldGNoRXZlbnQu
aGFuZGxlZCcgbmVlZHMgdG8gYmUgc3VwcG9ydGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU1NWY4OTk0NDYwMGQ2
YWFmMWRjY2JhYTk5NTVkMWUwZjM1YjkyMGQuLmRmNzExNTNlODQxNWQwZWRkM2I0M2RlMDE1ZDUw
MTk0ZGI3M2IxYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjItMDEtMTMgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgU2VydmljZVdvcmtl
ckNsaWVudC5pZCBhIFVVSUQgaW5zdGVhZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MDcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIGZpbmRCeUNsaWVudElkZW50aWZpZXIgaW50byBm
aW5kQnlWaXNpYmxlQ2xpZW50SWRlbnRpZmllcmFuIGFuZCBtYWtlIGl0IGFzbiBhc3luYyByZXBs
eS4KKyAgICAgICAgVXBkYXRlIGZldGNoIGV2ZW50IGNvZGUgcGF0aCB0byBzZW5kIHRoZSB2aXNp
YmxlIElEcyBvZiB0aGUgRmV0Y2hFdmVudCBmcm9tIG5ldHdvcmsgcHJvY2VzcyB0byB3b3JrZXIg
Y29udGV4dCBwcm9jZXNzLgorICAgICAgICBXZSBzdG9yZSB0aGVzZSBJRHMgaW4gTmV0d29ya1Jl
c291cmNlTG9hZGVyIHNvIHRoYXQgd2UgY2FuIGNoYW5nZSB0aGVtIGluIGNhc2Ugb2YgcmVkaXJl
Y3Rpb24gZm9yIG5hdmlnYXRpb25zLiAKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbjoKKwogMjAyMi0wMS0xMiAgRnLDqWTDqXJpYyBXYW5nICA8ZndhbmdA
aWdhbGlhLmNvbT4KIAogICAgICAgICBQcm90ZWN0IERvY3VtZW50TG9hZGVyIHdoZW4gYSByZWZl
cmVuY2UgdG8gaXRzIG1lbWJlcnMgaXMgdXNlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1VVSUQuY3BwIGIvU291cmNlL1dURi93dGYvVVVJRC5jcHAKaW5kZXggZjFkMDAwY2M4NTVkMzU5
NGUxZjU1ZThlNDQ1M2VlM2I5N2VhYTkxNy4uYzkwZTU4MGY2MzA4MWU5ZjUzMmYxMjVkYmQ1Yzk5
Y2M1OGJmMTVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVVJRC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvVVVJRC5jcHAKQEAgLTUzLDExICs1Myw4IEBAIHVuc2lnbmVkIFVVSUQ6Omhh
c2goKSBjb25zdAogICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnkocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oJm1fZGF0YSksIDE2KTsKIH0KIAotU3RyaW5n
IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKQorc3RhdGljIFN0cmluZyB0b0Nhbm9uaWNhbFVV
SURTdHJpbmcoY29uc3QgdWludDhfdCogcmFuZG9tRGF0YSkKIHsKLSAgICB1bnNpZ25lZCByYW5k
b21EYXRhWzRdOwotICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKHJlaW50ZXJwcmV0
X2Nhc3Q8dW5zaWduZWQgY2hhcio+KHJhbmRvbURhdGEpLCBzaXplb2YocmFuZG9tRGF0YSkpOwot
CiAgICAgLy8gRm9ybWF0IGFzIFZlcnNpb24gNCBVVUlELgogICAgIHJldHVybiBtYWtlU3RyaW5n
KAogICAgICAgICBoZXgocmFuZG9tRGF0YVswXSwgOCwgTG93ZXJjYXNlKSwKQEAgLTc0LDYgKzcx
LDQ5IEBAIFN0cmluZyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkKICAgICApOwogfQogCitT
dHJpbmcgVVVJRDo6dG9TdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiB0b0Nhbm9uaWNhbFVV
SURTdHJpbmcodG9TcGFuKCkuZGF0YSgpKTsKK30KKworc3RkOjpvcHRpb25hbDxVVUlEPiBVVUlE
OjpwYXJzZShTdHJpbmdWaWV3IHZhbHVlKQoreworICAgIC8vIFZlcnNpb24gNCBVVUlEcyBoYXZl
IHRoZSBmb3JtIHh4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCB3aXRoIGhleGFk
ZWNpbWFsIGRpZ2l0cyBmb3IgeCBhbmQgb25lIG9mIDgsIDksIEEsIG9yIEIgZm9yIHkuCisgICAg
dWludDhfdCBkYXRhWzE2XTsKKyAgICBpZiAodmFsdWUubGVuZ3RoKCkgIT0gMzYpCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICBzaXplX3QgY291bnRlciA9IDA7CisgICAgZm9yIChhdXRvIGNw
dHIgPSAwOyBjcHRyIDwgMzY7ICsrY3B0cikgeworICAgICAgICBhdXRvIHkgPSB2YWx1ZVtjcHRy
XTsKKyAgICAgICAgaWYgKGNwdHIgPT0gOCB8fCBjcHRyID09IDEzIHx8IGNwdHIgPT0gMTggfHwg
Y3B0ciA9PSAyMykgeworICAgICAgICAgICAgaWYgKHkhPSAnLScpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlm
IChjcHRyID09IDE0KSB7CisgICAgICAgICAgICBpZiAoeSAhPSAnNCcpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAg
IGlmIChjcHRyID09IDE5KSB7CisgICAgICAgICAgICBpZiAoeSAhPSAnOCcgJiYgeSAhPSAnOScg
JiYgeSAhPSAnYScgJiYgeSAhPSAnQScgJiYgeSAhPSAnYicgJiYgeSAhPSAnQicpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9Cisg
ICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KHkpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgICAgICBkYXRhW2NvdW50ZXIrK10gPSAwOworICAgIH0KKyAgICByZXR1cm4gVVVJRChT
cGFuPGNvbnN0IHVpbnQ4X3QsIDE2PihkYXRhKSk7Cit9CisKK1N0cmluZyBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCkKK3sKKyAgICByZXR1cm4gVVVJRDo6Y3JlYXRlKCkudG9TdHJpbmcoKTsK
K30KKwogU3RyaW5nIGJvb3RTZXNzaW9uVVVJRFN0cmluZygpCiB7CiAjaWYgT1MoREFSV0lOKQpA
QCAtOTUsMzEgKzEzNSw3IEBAIFN0cmluZyBib290U2Vzc2lvblVVSURTdHJpbmcoKQogCiBib29s
IGlzVmVyc2lvbjRVVUlEKFN0cmluZ1ZpZXcgdmFsdWUpCiB7Ci0gICAgLy8gVmVyc2lvbiA0IFVV
SURzIGhhdmUgdGhlIGZvcm0geHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4IHdp
dGggaGV4YWRlY2ltYWwgZGlnaXRzIGZvciB4IGFuZCBvbmUgb2YgOCwgOSwgQSwgb3IgQiBmb3Ig
eS4KLSAgICBpZiAodmFsdWUubGVuZ3RoKCkgIT0gMzYpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGZvciAoYXV0byBjcHRyID0gMDsgY3B0ciA8IDM2OyArK2NwdHIpIHsKLSAgICAgICAg
aWYgKGNwdHIgPT0gOCB8fCBjcHRyID09IDEzIHx8IGNwdHIgPT0gMTggfHwgY3B0ciA9PSAyMykg
ewotICAgICAgICAgICAgaWYgKHZhbHVlW2NwdHJdICE9ICctJykKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBp
ZiAoY3B0ciA9PSAxNCkgewotICAgICAgICAgICAgaWYgKHZhbHVlW2NwdHJdICE9ICc0JykKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgfQotICAgICAgICBpZiAoY3B0ciA9PSAxOSkgewotICAgICAgICAgICAgYXV0byB5ID0gdmFs
dWVbY3B0cl07Ci0gICAgICAgICAgICBpZiAoeSAhPSAnOCcgJiYgeSAhPSAnOScgJiYgeSAhPSAn
YScgJiYgeSAhPSAnQScgJiYgeSAhPSAnYicgJiYgeSAhPSAnQicpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKCFpc0FTQ0lJSGV4RGlnaXQodmFsdWVbY3B0cl0pKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gISFVVUlEOjpwYXJzZSh2
YWx1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvVVVJRC5oIGIvU291cmNlL1dURi93dGYvVVVJRC5oCmluZGV4IDU4YTUyNGE2NGQzNmE2MzEx
MDRlZmExMmRjOGNlNmRhMjM2Y2ZkMGYuLjJkODQyZDI5MzNjOGEzODA0NjE1ZGMwMDAwMTk0MWZh
Y2MwMzJlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9VVUlELmgKQEAgLTQ1LDYgKzQ1LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
VVVJRCB7IH07CiAgICAgfQogCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFVVSUQ+IHBhcnNlKFN0cmluZ1ZpZXcpOworCiAgICAgZXhwbGljaXQgVVVJRChTcGFu
PGNvbnN0IHVpbnQ4X3QsIDE2PiBzcGFuKQogICAgIHsKICAgICAgICAgbWVtY3B5KCZtX2RhdGEs
IHNwYW4uZGF0YSgpLCAxNik7CkBAIC04MCw2ICs4Miw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEgPT0gMTsgfQog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBVVUlEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYi1sb2Nrcy9XZWJMb2NrUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWItbG9ja3MvV2ViTG9ja1JlZ2lzdHJ5LmNwcAppbmRleCBmNTUwNzgwYTgxZDYyNGYzMWQw
ZTE4MzM5M2U1NTE0MzUzNDBhMWMyLi44ZjdjYzI2NmMwYzMzYjBiMzkzNzUwMTUzNmY5YzQwN2Fi
Y2E3ZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYi1sb2Nrcy9XZWJM
b2NrUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViLWxvY2tzL1dl
YkxvY2tSZWdpc3RyeS5jcHAKQEAgLTIzNiwxMSArMjM2LDExIEBAIHZvaWQgTG9jYWxXZWJMb2Nr
UmVnaXN0cnk6OlBlck9yaWdpblJlZ2lzdHJ5OjpzbmFwc2hvdChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlCiAgICAgV2ViTG9ja01hbmFnZXI6OlNuYXBzaG90IHNuYXBzaG90OwogICAgIGZvciAo
YXV0byYgcGFpciA6IG1fbG9ja1JlcXVlc3RRdWV1ZU1hcCkgewogICAgICAgICBmb3IgKGF1dG8m
IHJlcXVlc3QgOiBwYWlyLnZhbHVlKQotICAgICAgICAgICAgc25hcHNob3QucGVuZGluZy5hcHBl
bmQoeyBwYWlyLmtleSwgcmVxdWVzdC5tb2RlLCByZXF1ZXN0LmNsaWVudElELnRvU3RyaW5nKCkg
fSk7CisgICAgICAgICAgICBzbmFwc2hvdC5wZW5kaW5nLmFwcGVuZCh7IHBhaXIua2V5LCByZXF1
ZXN0Lm1vZGUsIHJlcXVlc3QuY2xpZW50SUQudG9WaXNpYmxlU3RyaW5nKCkgfSk7CiAgICAgfQog
ICAgIGZvciAoYXV0byYgcGFpciA6IG1faGVsZExvY2tzKSB7CiAgICAgICAgIGZvciAoYXV0byYg
bG9ja0luZm8gOiBwYWlyLnZhbHVlKQotICAgICAgICAgICAgc25hcHNob3QuaGVsZC5hcHBlbmQo
eyBwYWlyLmtleSwgbG9ja0luZm8ubW9kZSwgbG9ja0luZm8uY2xpZW50SUQudG9TdHJpbmcoKSB9
KTsKKyAgICAgICAgICAgIHNuYXBzaG90LmhlbGQuYXBwZW5kKHsgcGFpci5rZXksIGxvY2tJbmZv
Lm1vZGUsIGxvY2tJbmZvLmNsaWVudElELnRvVmlzaWJsZVN0cmluZygpIH0pOwogICAgIH0KIAog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc25hcHNob3QpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA0NjFiOTk3OGFkOWI3ZTE1
N2E0OTFjMDdlM2M5ZTcwYWY0MjFkZDg1Li4yOWRjZWVmNTMzM2Y2OWRmMmU1ZjMwZWRlZmRkNjEz
NTc3ZmU2NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogfTsKIAogU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCi0gICAgOiBtX2lkZW50aWZpZXIoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpKQorICAg
IDogbV9pZGVudGlmaWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpKQogewogICAgIExvY2tlciBsb2NrZXIgeyBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01h
cExvY2sgfTsKICAgICBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmFkZChtX2lkZW50
aWZpZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5k
ZXggMzJjODhiNWQzNmRiMDczODliN2ZjNjAzODRhZTJjNjcxYzgxODA5MS4uZWY3NjNiNzkxMjkz
NDk4ODVlNmZlNGZhZTkzMWQ2YzJhODY4MTFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCkBAIC0yMDk1LDcgKzIwOTUsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVy
Ojpsb2FkTWFpblJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIGlmICghbV90ZW1wb3JhcnlTZXJ2aWNlV29ya2VyQ2xpZW50
KSB7CiAgICAgICAgIC8vIFRoZSBtYWluIG5hdmlnYXRpb24gbG9hZCB3aWxsIHRyaWdnZXIgdGhl
IHJlZ2lzdHJhdGlvbiBvZiB0aGUgdGVtcCBjbGllbnQuCi0gICAgICAgIG1fdGVtcG9yYXJ5U2Vy
dmljZVdvcmtlckNsaWVudCA9IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyOjpnZW5l
cmF0ZVRocmVhZFNhZmUoKTsKKyAgICAgICAgbV90ZW1wb3JhcnlTZXJ2aWNlV29ya2VyQ2xpZW50
ID0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgICAg
IEFTU0VSVCghdGVtcG9yYXJ5SWRlbnRpZmllclRvTG9hZGVyTWFwKCkuY29udGFpbnMoKm1fdGVt
cG9yYXJ5U2VydmljZVdvcmtlckNsaWVudCkpOwogICAgICAgICB0ZW1wb3JhcnlJZGVudGlmaWVy
VG9Mb2FkZXJNYXAoKS5hZGQoKm1fdGVtcG9yYXJ5U2VydmljZVdvcmtlckNsaWVudCwgdGhpcyk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KaW5kZXggN2FjZDU5N2FmYzgwNzc5
OGJhZjIwNDg5ODY3ZDI2MjZlYjc4MjRhMS4uODIwNThhZmJhMjNhMWQyZTg2NDgxNmE3N2QwZDc3
NzNhYWNkMmVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCkBAIC04MSw3ICs4MSw3
IEBAIHZvaWQgUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICAgICAgICAgIFdURkxvZ0Fs
d2F5cygiJXUgbGl2ZSBkb2N1bWVudHM6IiwgRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpLnNpemUo
KSk7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFs
bERvY3VtZW50cygpKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZG9jdW1lbnRUeXBl
ID0gaXM8U1ZHRG9jdW1lbnQ+KGRvY3VtZW50KSA/ICJTVkdEb2N1bWVudCIgOiAiRG9jdW1lbnQi
OwotICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXMgJXAgJXMgKHJlZkNvdW50ICVkLCBy
ZWZlcmVuY2luZ05vZGVDb3VudCAlZCkgJXMiLCBkb2N1bWVudFR5cGUsIGRvY3VtZW50LCBkb2N1
bWVudC0+aWRlbnRpZmllcigpLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgZG9jdW1lbnQtPnJl
ZkNvdW50KCksIGRvY3VtZW50LT5yZWZlcmVuY2luZ05vZGVDb3VudCgpLCBkb2N1bWVudC0+dXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlz
KCIlcyAlcCAlcyAocmVmQ291bnQgJWQsIHJlZmVyZW5jaW5nTm9kZUNvdW50ICVkKSAlcyIsIGRv
Y3VtZW50VHlwZSwgZG9jdW1lbnQsIGRvY3VtZW50LT5pZGVudGlmaWVyKCkudG9EZWJ1Z1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksIGRvY3VtZW50LT5yZWZDb3VudCgpLCBkb2N1bWVudC0+cmVmZXJl
bmNpbmdOb2RlQ291bnQoKSwgZG9jdW1lbnQtPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Byb2Nlc3NRdWFsaWZpZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Byb2Nlc3NRdWFsaWZpZWQuaAppbmRleCAyODVhNDI1NTM5MmNhN2RlZTY5OGYxY2Jh
NzMzMTJjYTliMjNiYTJiLi5hZTk4NzIzMmZhYjU4NjkyNWFlMGNiMTUyZGYxOTNmYjM2M2MyYmEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9jZXNzUXVhbGlmaWVkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvY2Vzc1F1YWxpZmllZC5oCkBAIC02OSw2
ICs2OSwxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9vYmplY3Q7CiAgICAg
fQorICAgIGNvbnN0IFQmIG9iamVjdEhhc2goKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fb2JqZWN0OworICAgIH0KIAogICAgIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlm
aWVyKCkgY29uc3QKICAgICB7CkBAIC05Myw3ICs5Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBQcm9jZXNzUXVhbGlmaWVkIGdlbmVyYXRlVGhyZWFkU2FmZSgpIHsgcmV0dXJuIHsgVDo6Z2Vu
ZXJhdGVUaHJlYWRTYWZlKCksIFByb2Nlc3M6OmlkZW50aWZpZXIoKSB9OyB9CiAgICAgc3RhdGlj
IFByb2Nlc3NRdWFsaWZpZWQgZ2VuZXJhdGUoKSB7IHJldHVybiB7IFQ6OmdlbmVyYXRlKCksIFBy
b2Nlc3M6OmlkZW50aWZpZXIoKSB9OyB9Ci0gICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbWFrZVN0cmluZyhtX3Byb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCksICctJywgbV9v
YmplY3QudG9VSW50NjQoKSk7IH0KKyAgICBTdHJpbmcgdG9EZWJ1Z1N0cmluZygpIGNvbnN0IHsg
cmV0dXJuIG1ha2VTdHJpbmcobV9wcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpLCAnLScsIG1f
b2JqZWN0LnRvVUludDY0KCkpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdCB7IGVuY29kZXIgPDwgbV9vYmplY3Qg
PDwgbV9wcm9jZXNzSWRlbnRpZmllcjsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NRdWFsaWZpZWQ+IGRlY29kZShEZWNvZGVyJik7
CkBAIC0xMjAsMTQgKzEyNCwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9w
dGlvbmFsPFByb2Nlc3NRdWFsaWZpZWQ8VD4+IFByb2Nlc3NRdWFsaWZpZWQ8VAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiBpbmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgUHJvY2Vzc1F1YWxpZmllZDxUPiYgcHJvY2Vzc1F1YWxpZmllZCkKIHsKLSAgICB0
cyA8PCAiUHJvY2Vzc1F1YWxpZmllZCgiIDw8IHByb2Nlc3NRdWFsaWZpZWQub2JqZWN0KCkgPDwg
IiwgIiA8PCBwcm9jZXNzUXVhbGlmaWVkLnByb2Nlc3NJZGVudGlmaWVyKCkgPDwgJyknOworICAg
IHRzIDw8ICJQcm9jZXNzUXVhbGlmaWVkKCIgPDwgcHJvY2Vzc1F1YWxpZmllZC50b0RlYnVnU3Ry
aW5nKCkgPDwgJyknOwogICAgIHJldHVybiB0czsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiBpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IFByb2Nlc3NRdWFsaWZpZWQ8
VD4mIHByb2Nlc3NRdWFsaWZpZWQpCiB7Ci0gICAgYWRkKGhhc2hlciwgcHJvY2Vzc1F1YWxpZmll
ZC5vYmplY3QoKSk7CisgICAgYWRkKGhhc2hlciwgcHJvY2Vzc1F1YWxpZmllZC5vYmplY3RIYXNo
KCkpOwogICAgIGFkZChoYXNoZXIsIHByb2Nlc3NRdWFsaWZpZWQucHJvY2Vzc0lkZW50aWZpZXIo
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oCmluZGV4IGUzNmY0MjI4MzAxNzkxZmNlM2UzNzhi
ZjA2MTE1NTViNjk5Y2I3OWEuLjM1Y2I4M2EyNzg2NzZiNTI2Y2Y4YjcxMTEyZGU2MDU2YWJjMjU3
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXIuaApAQCAtMjcsMTAgKzI3LDk4IEBACiAKICNpbmNsdWRl
ICJQcm9jZXNzUXVhbGlmaWVkLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvVVVJRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gU2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXJUeXBlIHsgfTsKLXVzaW5nIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyID0gUHJvY2Vzc1F1YWxpZmllZDxPYmplY3RJZGVudGlmaWVyPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyVHlwZT4+OwordGVtcGxhdGUgPD4KK2NsYXNzIFByb2Nl
c3NRdWFsaWZpZWQ8VVVJRD4geworcHVibGljOgorICAgIFByb2Nlc3NRdWFsaWZpZWQoKQorICAg
ICAgICA6IG1fb2JqZWN0KFdURjo6VUludDEyOEltcGwoMCkpCisgICAgeworICAgIH0KKworICAg
IFByb2Nlc3NRdWFsaWZpZWQoVVVJRCYmIG9iamVjdCwgUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vz
c0lkZW50aWZpZXIpCisgICAgICAgIDogbV9vYmplY3QoV1RGTW92ZShvYmplY3QpKQorICAgICAg
ICAsIG1fcHJvY2Vzc0lkZW50aWZpZXIocHJvY2Vzc0lkZW50aWZpZXIpCisgICAgeworICAgIH0K
KworICAgIFByb2Nlc3NRdWFsaWZpZWQoY29uc3QgVVVJRCYgb2JqZWN0LCBQcm9jZXNzSWRlbnRp
ZmllciBwcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgOiBtX29iamVjdChvYmplY3QpCisgICAg
ICAgICwgbV9wcm9jZXNzSWRlbnRpZmllcihwcm9jZXNzSWRlbnRpZmllcikKKyAgICB7CisgICAg
fQorCisgICAgUHJvY2Vzc1F1YWxpZmllZChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUp
CisgICAgICAgIDogbV9vYmplY3QoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCisgICAgICAg
ICwgbV9wcm9jZXNzSWRlbnRpZmllcihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKKyAgICB7
CisgICAgfQorCisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gISFtX3Byb2Nlc3NJZGVudGlmaWVyOworICAgIH0KKworICAgIGNvbnN0IFVVSUQmIG9iamVj
dCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vYmplY3Q7CisgICAgfQorCisgICAg
dW5zaWduZWQgb2JqZWN0SGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vYmpl
Y3QuaGFzaCgpOworICAgIH0KKworICAgIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlm
aWVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Byb2Nlc3NJZGVudGlmaWVyOwor
ICAgIH0KKworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fcHJvY2Vzc0lkZW50aWZpZXIuaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHJvY2Vzc1F1YWxpZmll
ZCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vYmplY3QgPT0gb3RoZXIu
bV9vYmplY3QKKyAgICAgICAgICAgICYmIG1fcHJvY2Vzc0lkZW50aWZpZXIgPT0gb3RoZXIubV9w
cm9jZXNzSWRlbnRpZmllcjsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJv
Y2Vzc1F1YWxpZmllZCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7CisgICAgfQorCisgICAgc3RhdGljIFByb2Nlc3NRdWFsaWZpZWQgZ2VuZXJh
dGUoKSB7IHJldHVybiB7IFVVSUQ6OmNyZWF0ZSgpLCBQcm9jZXNzOjppZGVudGlmaWVyKCkgfTsg
fQorICAgIFN0cmluZyB0b0RlYnVnU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbWFrZVN0cmluZyht
X3Byb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCksICctJywgbV9vYmplY3QudG9TdHJpbmcoKSk7
IH0KKyAgICBTdHJpbmcgdG9WaXNpYmxlU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3Qu
dG9TdHJpbmcoKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QgeyBlbmNvZGVyIDw8IG1fb2JqZWN0IDw8IG1fcHJv
Y2Vzc0lkZW50aWZpZXI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxQcm9jZXNzUXVhbGlmaWVkPiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2
YXRlOgorICAgIFVVSUQgbV9vYmplY3Q7CisgICAgUHJvY2Vzc0lkZW50aWZpZXIgbV9wcm9jZXNz
SWRlbnRpZmllcjsKK307CisKKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RkOjpvcHRp
b25hbDxQcm9jZXNzUXVhbGlmaWVkPFVVSUQ+PiBQcm9jZXNzUXVhbGlmaWVkPFVVSUQ+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFVVSUQ+IG9iamVjdDsK
KyAgICBkZWNvZGVyID4+IG9iamVjdDsKKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBwcm9j
ZXNzSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHByb2Nlc3NJZGVudGlmaWVyOworICAgIGlm
ICghcHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHsgeyAqb2JqZWN0LCAqcHJvY2Vzc0lkZW50aWZpZXIgfSB9OworfQorCit1c2luZyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciA9IFByb2Nlc3NRdWFsaWZpZWQ8VVVJRD47
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAzNWE2NmUwOTVlNzVh
MTM0NzljN2IxYzU2MmNlMTE5MWFiMWVlMTk0Li4xMzk4ZjVkZGFkZWQxMzcwZGFjZmQwZmM3YWRh
OGU5MzM1NWRhN2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yNzYy
LDE0ICsyNzYyLDE2IEBAIHVuc2lnbmVkIEludGVybmFsczo6bnVtYmVyT2ZSZXNpemVPYnNlcnZl
cnMoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudC5u
dW1iZXJPZlJlc2l6ZU9ic2VydmVycygpOwogfQogCi11aW50NjRfdCBJbnRlcm5hbHM6OmRvY3Vt
ZW50SWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CitTdHJpbmcgSW50
ZXJuYWxzOjpkb2N1bWVudElkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25z
dAogewotICAgIHJldHVybiBkb2N1bWVudC5pZGVudGlmaWVyKCkub2JqZWN0KCkudG9VSW50NjQo
KTsKKyAgICByZXR1cm4gZG9jdW1lbnQuaWRlbnRpZmllcigpLm9iamVjdCgpLnRvU3RyaW5nKCk7
CiB9CiAKLWJvb2wgSW50ZXJuYWxzOjppc0RvY3VtZW50QWxpdmUodWludDY0X3QgZG9jdW1lbnRJ
ZGVudGlmaWVyKSBjb25zdAorYm9vbCBJbnRlcm5hbHM6OmlzRG9jdW1lbnRBbGl2ZShjb25zdCBT
dHJpbmcmIGRvY3VtZW50SWRlbnRpZmllcikgY29uc3QKIHsKLSAgICByZXR1cm4gRG9jdW1lbnQ6
OmFsbERvY3VtZW50c01hcCgpLmNvbnRhaW5zKHsgbWFrZU9iamVjdElkZW50aWZpZXI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXJUeXBlPihkb2N1bWVudElkZW50aWZpZXIpLCBQcm9j
ZXNzOjppZGVudGlmaWVyKCkgfSk7CisgICAgYXV0byB1dWlkID0gVVVJRDo6cGFyc2UoZG9jdW1l
bnRJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQodXVpZCk7CisgICAgcmV0dXJuIHV1aWQgPyBEb2N1
bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuY29udGFpbnMoeyAqdXVpZCwgUHJvY2Vzczo6aWRlbnRp
ZmllcigpIH0pIDogZmFsc2U7CiB9CiAKIHVpbnQ2NF90IEludGVybmFsczo6c3RvcmFnZUFyZWFN
YXBDb3VudCgpIGNvbnN0CkBAIC0yODA4LDkgKzI4MTAsOSBAQCBib29sIEludGVybmFsczo6aXNB
bnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdvcmtsZXRHbG9i
YWxTY29wZTo6bnVtYmVyT2ZXb3JrbGV0R2xvYmFsU2NvcGVzKCk7CiB9CiAKLVN0cmluZyBJbnRl
cm5hbHM6OnNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCkgY29uc3QKK1N0cmluZyBJbnRlcm5hbHM6OnNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5h
bElkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogewotICAgIHJldHVy
biBkb2N1bWVudC5pZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQu
aWRlbnRpZmllcigpLnRvRGVidWdTdHJpbmcoKTsKIH0KIAogUmVmUHRyPFdpbmRvd1Byb3h5PiBJ
bnRlcm5hbHM6Om9wZW5EdW1teUluc3BlY3RvckZyb250ZW5kKGNvbnN0IFN0cmluZyYgdXJsKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggODhkMWY5ZmM2N2RhMGMzYzU4Nzk2NTk2
OTVjNzRkZDU3MmJkOTFhNi4uZmYxY2VmOTZkNzg0YmFhMGVlZTUxMDUxNTk4NWNiYWRkOTczNDhm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC00OTAsOCArNDkwLDggQEAgcHVi
bGljOgogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZSZXNpemVPYnNlcnZlcnMoY29uc3QgRG9jdW1l
bnQmKSBjb25zdDsKIAotICAgIHVpbnQ2NF90IGRvY3VtZW50SWRlbnRpZmllcihjb25zdCBEb2N1
bWVudCYpIGNvbnN0OwotICAgIGJvb2wgaXNEb2N1bWVudEFsaXZlKHVpbnQ2NF90IGRvY3VtZW50
SWRlbnRpZmllcikgY29uc3Q7CisgICAgU3RyaW5nIGRvY3VtZW50SWRlbnRpZmllcihjb25zdCBE
b2N1bWVudCYpIGNvbnN0OworICAgIGJvb2wgaXNEb2N1bWVudEFsaXZlKGNvbnN0IFN0cmluZyYg
ZG9jdW1lbnRJZGVudGlmaWVyKSBjb25zdDsKIAogICAgIHVpbnQ2NF90IHN0b3JhZ2VBcmVhTWFw
Q291bnQoKSBjb25zdDsKIApAQCAtNTAzLDcgKzUwMyw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aXNBbnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgpIGNvbnN0OwogCi0gICAgU3RyaW5nIHNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKGNvbnN0IERvY3VtZW50JikgY29uc3Q7CisgICAgU3Ry
aW5nIHNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQm
KSBjb25zdDsKIAogICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gb3BlbkR1bW15SW5zcGVjdG9yRnJv
bnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgY2xvc2VEdW1teUluc3BlY3RvckZy
b250ZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggZjlhNWJiODIw
OTYwYzQwYWQyNDNmZTdkMjIwZTFlYTczYWViOTI0NS4uZWQ0NDMxOWY1NWJkYjAyMmJlOGIxM2Uw
MzkwNDVjMWMyOGM4ZjIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAt
OTIwLDggKzkyMCw4IEBAIHR5cGVkZWYgKEZldGNoUmVxdWVzdCBvciBGZXRjaFJlc3BvbnNlKSBG
ZXRjaE9iamVjdDsKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSBib29sZWFuIGlzTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKCk7CiAgICAgW0NvbmRpdGlvbmFsPU1F
RElBX1NUUkVBTV0gYm9vbGVhbiBzaG91bGRBdWRpb1RyYWNrUGxheShBdWRpb1RyYWNrIHRyYWNr
KTsKIAotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBkb2N1bWVudElkZW50aWZpZXIoRG9jdW1lbnQg
ZG9jdW1lbnQpOwotICAgIGJvb2xlYW4gaXNEb2N1bWVudEFsaXZlKHVuc2lnbmVkIGxvbmcgbG9u
ZyBkb2N1bWVudElkZW50aWZpZXIpOworICAgIERPTVN0cmluZyBkb2N1bWVudElkZW50aWZpZXIo
RG9jdW1lbnQgZG9jdW1lbnQpOworICAgIGJvb2xlYW4gaXNEb2N1bWVudEFsaXZlKERPTVN0cmlu
ZyBkb2N1bWVudElkZW50aWZpZXIpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IGxvbmcgbG9uZyBzdG9yYWdlQXJlYU1hcENvdW50OwogCkBAIC05MzMsNyArOTMzLDcgQEAgdHlw
ZWRlZiAoRmV0Y2hSZXF1ZXN0IG9yIEZldGNoUmVzcG9uc2UpIEZldGNoT2JqZWN0OwogICAgIGJv
b2xlYW4gaXNBbnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgpOwogCiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgcHJvY2Vzc0lkZW50aWZpZXI7Ci0gICAgRE9NU3RyaW5nIHNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyKERvY3VtZW50IGRvY3VtZW50KTsKKyAgICBET01TdHJpbmcgc2Vy
dmljZVdvcmtlckNsaWVudEludGVybmFsSWRlbnRpZmllcihEb2N1bWVudCBkb2N1bWVudCk7CiAg
ICAgUHJvbWlzZTx1bmRlZmluZWQ+IHN0b3JlUmVnaXN0cmF0aW9uc09uRGlzaygpOwogICAgIFBy
b21pc2U8ZG91YmxlPiBzZW5kSDJQaW5nKERPTVN0cmluZyB1cmwpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcAppbmRleCBmOGQ2Yzdh
YWIyMGRkODI5NDlmMzdhYjkxNTBlODk1ZDc1YzU5ZTQwLi5mMzQ0Y2RjMTM4MGI2OTY2ZDQ4NzAy
Mzg0MDA4Mzk2OWFmNDllZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1Nl
cnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2Vy
dmljZVdvcmtlckludGVybmFscy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJQdXNo
U3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCIKICNpbmNs
dWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudC5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYv
UHJvY2Vzc0lELmg+CiAKQEAgLTE5Myw2ICsxOTQsMTEgQEAgYm9vbCBTZXJ2aWNlV29ya2VySW50
ZXJuYWxzOjpmZXRjaEV2ZW50SXNTYW1lU2l0ZShGZXRjaEV2ZW50JiBldmVudCkKICAgICByZXR1
cm4gZXZlbnQucmVxdWVzdCgpLmludGVybmFsUmVxdWVzdCgpLmlzU2FtZVNpdGUoKTsKIH0KIAor
U3RyaW5nIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OnNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5h
bElkZW50aWZpZXIoY29uc3QgU2VydmljZVdvcmtlckNsaWVudCYgY2xpZW50KQoreworICAgIHJl
dHVybiBjbGllbnQuaWRlbnRpZmllcigpLnRvRGVidWdTdHJpbmcoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvU2VydmljZVdvcmtlckludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2
aWNlV29ya2VySW50ZXJuYWxzLmgKaW5kZXggYmE2NzJkNTJmYjE1YWM3MmUxMDY4ZDdkNzI1ZjQ1
MTNmN2QwNzg5Mi4uZjU1NjdhOGUwYjZlMDdiYmY3NDk0MDMxM2E5YTRjMjc2NjkwM2EyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmgKQEAg
LTQwLDYgKzQwLDcgQEAgY2xhc3MgRmV0Y2hFdmVudDsKIGNsYXNzIEZldGNoUmVzcG9uc2U7CiBj
bGFzcyBQdXNoU3Vic2NyaXB0aW9uOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2Ns
YXNzIFNlcnZpY2VXb3JrZXJDbGllbnQ7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNs
YXNzIERPTVByb21pc2VEZWZlcnJlZDsKIApAQCAtNzEsNiArNzIsOCBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGZldGNoRXZlbnRJc1NhbWVTaXRlKEZldGNoRXZlbnQmKTsKIAorICAgIFN0cmluZyBz
ZXJ2aWNlV29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKGNvbnN0IFNlcnZpY2VXb3JrZXJD
bGllbnQmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTZXJ2aWNlV29ya2VySW50ZXJuYWxz
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKaW5kZXggNThmZWRjMTBkZWFhOWRkYzgyMjk5
ZmQ4YzVkMWU1NDY4Nzg1MDUxZi4uOWUzZGQ2ODVkMmE1OTIwYTQ2NmRlOGJmYzk5OTAwZmRkMzhl
YmFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50
ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRl
cm5hbHMuaWRsCkBAIC01MSw0ICs1MSw2IEBACiAgICAgUHVzaFN1YnNjcmlwdGlvbiBjcmVhdGVQ
dXNoU3Vic2NyaXB0aW9uKFVTVlN0cmluZyBlbmRwb2ludCwgRXBvY2hUaW1lU3RhbXA/IGV4cGly
YXRpb25UaW1lLCBBcnJheUJ1ZmZlciBzZXJ2ZXJWQVBJRFB1YmxpY0tleSwgQXJyYXlCdWZmZXIg
Y2xpZW50RUNESFB1YmxpY0tleSwgQXJyYXlCdWZmZXIgYXV0aCk7CiAKICAgICBib29sZWFuIGZl
dGNoRXZlbnRJc1NhbWVTaXRlKEZldGNoRXZlbnQgZXZlbnQpOworCisgICAgRE9NU3RyaW5nIHNl
cnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIoU2VydmljZVdvcmtlckNsaWVudCBj
bGllbnQpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9G
ZXRjaEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50
LmNwcAppbmRleCA0N2JlMmFlMDJjYjNlZDQ2N2JhN2Y5ZmE4ZTQ2YWRkYjQzOGJmODcxLi41NWQz
MzA3YTQ0MDlkN2M2YWJmODg1ODc4ODQ5YmI1ZjljYzE3OTRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIEZldGNo
RXZlbnQ6OkZldGNoRXZlbnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBjb25z
dCBBdG9tU3RyaW5nJiB0eXBlCiAgICAgOiBFeHRlbmRhYmxlRXZlbnQodHlwZSwgaW5pdGlhbGl6
ZXIsIGlzVHJ1c3RlZCkKICAgICAsIG1fcmVxdWVzdChpbml0aWFsaXplci5yZXF1ZXN0LnJlbGVh
c2VOb25OdWxsKCkpCiAgICAgLCBtX2NsaWVudElkKFdURk1vdmUoaW5pdGlhbGl6ZXIuY2xpZW50
SWQpKQotICAgICwgbV9yZXNlcnZlZENsaWVudElkKFdURk1vdmUoaW5pdGlhbGl6ZXIucmVzZXJ2
ZWRDbGllbnRJZCkpCisgICAgLCBtX3Jlc3VsdGluZ0NsaWVudElkKFdURk1vdmUoaW5pdGlhbGl6
ZXIucmVzdWx0aW5nQ2xpZW50SWQpKQogICAgICwgbV90YXJnZXRDbGllbnRJZChXVEZNb3ZlKGlu
aXRpYWxpemVyLnRhcmdldENsaWVudElkKSkKICAgICAsIG1faGFuZGxlZChyZXRyaWV2ZUhhbmRs
ZWRQcm9taXNlKGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbml0aWFsaXplci5oYW5kbGVkKSkpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaAppbmRleCAxY2Q0
NjE2ZWYzNDQ1M2VjY2JlYmYwYzYxYjY0ZTZkOGI1ODkwNzA1Li5jNTNmZDU2YTlmZTgyOTNmNzg3
MTkxODY2YmU2NGQ5NWE2YjBlMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvRmV0Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9GZXRjaEV2ZW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBJbml0
IDogRXh0ZW5kYWJsZUV2ZW50SW5pdCB7CiAgICAgICAgIFJlZlB0cjxGZXRjaFJlcXVlc3Q+IHJl
cXVlc3Q7CiAgICAgICAgIFN0cmluZyBjbGllbnRJZDsKLSAgICAgICAgU3RyaW5nIHJlc2VydmVk
Q2xpZW50SWQ7CisgICAgICAgIFN0cmluZyByZXN1bHRpbmdDbGllbnRJZDsKICAgICAgICAgU3Ry
aW5nIHRhcmdldENsaWVudElkOwogICAgICAgICBSZWZQdHI8RE9NUHJvbWlzZT4gaGFuZGxlZDsK
ICAgICB9OwpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAKICAgICBGZXRjaFJlcXVlc3QmIHJl
cXVlc3QoKSB7IHJldHVybiBtX3JlcXVlc3QuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIGNs
aWVudElkKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRJZDsgfQotICAgIGNvbnN0IFN0cmluZyYg
cmVzZXJ2ZWRDbGllbnRJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzZXJ2ZWRDbGllbnRJZDsgfQor
ICAgIGNvbnN0IFN0cmluZyYgcmVzdWx0aW5nQ2xpZW50SWQoKSBjb25zdCB7IHJldHVybiBtX3Jl
c3VsdGluZ0NsaWVudElkOyB9CiAgICAgY29uc3QgU3RyaW5nJiB0YXJnZXRDbGllbnRJZCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGFyZ2V0Q2xpZW50SWQ7IH0KICAgICBET01Qcm9taXNlJiBoYW5kbGVk
KCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGVkLmdldCgpOyB9CiAKQEAgLTkzLDcgKzkzLDcgQEAg
cHJpdmF0ZToKIAogICAgIFJlZjxGZXRjaFJlcXVlc3Q+IG1fcmVxdWVzdDsKICAgICBTdHJpbmcg
bV9jbGllbnRJZDsKLSAgICBTdHJpbmcgbV9yZXNlcnZlZENsaWVudElkOworICAgIFN0cmluZyBt
X3Jlc3VsdGluZ0NsaWVudElkOwogICAgIFN0cmluZyBtX3RhcmdldENsaWVudElkOwogCiAgICAg
Ym9vbCBtX3Jlc3BvbmRXaXRoRW50ZXJlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5pZGwKaW5kZXggOTYwNjVjNjg4MzQ4MmIyMDhkZTg0
MzQ3ZjQ3ZmRiYjg0MjU3ODExMi4uNWFhY2M1ZGU1ZGEzNmZlNTI5NTNiYzgxYTQzZTE2ZTBjOGIy
NmMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZl
bnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50Lmlk
bApAQCAtMzUsNyArMzUsNyBAQAogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUg
RmV0Y2hSZXF1ZXN0IHJlcXVlc3Q7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIEVuYWJsZWRCeVNldHRpbmc9U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxl
ZF0gcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2U8YW55PiBwcmVsb2FkUmVzcG9uc2U7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBjbGllbnRJZDsKLSAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHJlc2VydmVkQ2xpZW50SWQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyByZXN1bHRpbmdDbGllbnRJZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHRhcmdldENsaWVudElkOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlPHVu
ZGVmaW5lZD4gaGFuZGxlZDsKIApAQCAtNDUsNyArNDUsNyBAQAogZGljdGlvbmFyeSBGZXRjaEV2
ZW50SW5pdCA6IEV4dGVuZGFibGVFdmVudEluaXQgewogICAgIHJlcXVpcmVkIEZldGNoUmVxdWVz
dCByZXF1ZXN0OwogICAgIERPTVN0cmluZyBjbGllbnRJZCA9ICIiOwotICAgIERPTVN0cmluZyBy
ZXNlcnZlZENsaWVudElkID0gIiI7CisgICAgRE9NU3RyaW5nIHJlc3VsdGluZ0NsaWVudElkID0g
IiI7CiAgICAgRE9NU3RyaW5nIHRhcmdldENsaWVudElkID0gIiI7CiAgICAgUHJvbWlzZTx1bmRl
ZmluZWQ+IGhhbmRsZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCmluZGV4IDU5NmI5Y2RjOTk0ZjU1MDgwYjYz
OTE3MTg5Yjc4ZWI4Zjc3Y2QzMzQuLjA5NTBjYjkzYjJlY2UxMWE0YjQ5YWM5MTAzZDdmZGZmYjA3
N2NkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgYXV0byBTZXJ2aWNlV29ya2Vy
Q2xpZW50OjpmcmFtZVR5cGUoKSBjb25zdCAtPiBGcmFtZVR5cGUKIAogU3RyaW5nIFNlcnZpY2VX
b3JrZXJDbGllbnQ6OmlkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaWRlbnRpZmllcigpLnRvU3Ry
aW5nKCk7CisgICAgcmV0dXJuIGlkZW50aWZpZXIoKS50b1Zpc2libGVTdHJpbmcoKTsKIH0KIAog
RXhjZXB0aW9uT3I8dm9pZD4gU2VydmljZVdvcmtlckNsaWVudDo6cG9zdE1lc3NhZ2UoSlNDOjpK
U0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgbWVzc2FnZVZhbHVlLCBT
dHJ1Y3R1cmVkU2VyaWFsaXplT3B0aW9ucyYmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwKaW5kZXggZTgx
YmFlM2Q2MjYwYTdlMTNhZWVhZDU3ZDJhMTRmNjA5ZDBkNmE0NC4uNDIwNTQ2MmUwOWMzYTgwMjhj
Y2RhODMyNTBiMDZlOWMxYTQ2NTMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbApAQCAtMjcsNiArMjcsNyBAQAog
ICAgIENvbmRpdGlvbmFsPVNFUlZJQ0VfV09SS0VSLAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAg
ICAgRW5hYmxlZEF0UnVudGltZT1TZXJ2aWNlV29ya2VyRW5hYmxlZCwKKyAgICBFeHBvcnRNYWNy
bz1XRUJDT1JFX0VYUE9SVCwKICAgICBFeHBvc2VkPVNlcnZpY2VXb3JrZXIsCiAgICAgSW50ZXJm
YWNlTmFtZT1DbGllbnQsCiBdIGludGVyZmFjZSBTZXJ2aWNlV29ya2VyQ2xpZW50IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVu
dHMuY3BwCmluZGV4IGFiNmI1ZTg0N2YyYmJlZDc2OGMzZDE5MDlhYjFhODE4NTNiMGMyMTYuLjZl
NDVhYTE3NmQwN2YyMjkxYmJlMjM1NTA3NzY1YmFiNTg4YWMxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcApA
QCAtMzgsNTUgKzM4LDI2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGlubGlu
ZSB2b2lkIGRpZEZpbmlzaEdldFJlcXVlc3QoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBzY29w
ZSwgRGVmZXJyZWRQcm9taXNlJiBwcm9taXNlLCBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhPj4mJiBjbGllbnREYXRhKQorc3RhdGljIGlubGluZSB2b2lk
IGRpZEZpbmlzaEdldFJlcXVlc3QoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBzY29wZSwgRGVm
ZXJyZWRQcm9taXNlJiBwcm9taXNlLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhPiYmIGNsaWVudERhdGEpCiB7Ci0gICAgaWYgKGNsaWVudERhdGEuaGFzRXhjZXB0aW9uKCkp
IHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoY2xpZW50RGF0YS5yZWxlYXNlRXhjZXB0aW9uKCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8gZGF0YSA9IGNsaWVudERhdGEucmVs
ZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgaWYgKCFkYXRhKSB7CisgICAgaWYgKCFjbGllbnREYXRh
KSB7CiAgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgcHJvbWlzZS5yZXNvbHZlPElETEludGVyZmFjZTxTZXJ2aWNlV29ya2VyQ2xpZW50Pj4o
U2VydmljZVdvcmtlckNsaWVudDo6Z2V0T3JDcmVhdGUoc2NvcGUsIFdURk1vdmUoZGF0YS52YWx1
ZSgpKSkpOwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllcj4gc2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXJGcm9tU3RyaW5nKFN0
cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlm
aWVyOwotICAgIE9iamVjdElkZW50aWZpZXI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXJUeXBlPiBjb250ZXh0SWRlbnRpZmllcjsKLSAgICB1bnNpZ25lZCBjb3VudGVyID0gMDsKLSAg
ICBmb3IgKGF1dG8gaXRlbSA6IHN0cmluZy5zcGxpdCgnLScpKSB7Ci0gICAgICAgIGF1dG8gaWRl
bnRpZmllciA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4oaXRlbSk7Ci0gICAgICAgIGlmICghaWRl
bnRpZmllciB8fCAhKmlkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgICAgICBpZiAoIWNvdW50ZXIrKykKLSAgICAgICAgICAgIHByb2Nlc3NJZGVudGlmaWVy
ID0gbWFrZU9iamVjdElkZW50aWZpZXI8UHJvY2Vzc0lkZW50aWZpZXJUeXBlPigqaWRlbnRpZmll
cik7Ci0gICAgICAgIGVsc2UgaWYgKGNvdW50ZXIgPT0gMikKLSAgICAgICAgICAgIGNvbnRleHRJ
ZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXJUeXBlPigqaWRlbnRpZmllcik7Ci0gICAgfQotICAgIHJldHVybiAocHJvY2Vzc0lk
ZW50aWZpZXIgJiYgY29udGV4dElkZW50aWZpZXIpID8gc3RkOjptYWtlX29wdGlvbmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIHsgY29udGV4dElkZW50aWZpZXIsIHByb2Nlc3NJ
ZGVudGlmaWVyIH0pIDogc3RkOjpudWxsb3B0OworICAgIHByb21pc2UucmVzb2x2ZTxJRExJbnRl
cmZhY2U8U2VydmljZVdvcmtlckNsaWVudD4+KFNlcnZpY2VXb3JrZXJDbGllbnQ6OmdldE9yQ3Jl
YXRlKHNjb3BlLCBXVEZNb3ZlKCpjbGllbnREYXRhKSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJDbGllbnRzOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBpZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewotICAgIGF1dG8gaWRl
bnRpZmllciA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyRnJvbVN0cmluZyhpZCk7
Ci0gICAgaWYgKCFpZGVudGlmaWVyKSB7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSBpZGVudGlm
aWVyLnZhbHVlKCk7Ci0KICAgICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gZG93bmNh
c3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS50aHJlYWQoKS5pZGVudGlmaWVy
KCk7CiAKICAgICBhdXRvIHByb21pc2VQb2ludGVyID0gcHJvbWlzZS5wdHIoKTsKICAgICBtX3Bl
bmRpbmdQcm9taXNlcy5hZGQocHJvbWlzZVBvaW50ZXIsIFdURk1vdmUocHJvbWlzZSkpOwogCi0g
ICAgY2FsbE9uTWFpblRocmVhZChbcHJvbWlzZVBvaW50ZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBjbGllbnRJZGVudGlmaWVyXSAoKSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvbWlz
ZVBvaW50ZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBpZCA9IGlkLmlzb2xhdGVkQ29weSgp
XSAoKSB7CiAgICAgICAgIGF1dG8gY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLmNvbm5lY3Rpb24oKTsKLSAgICAgICAgY29ubmVjdGlvbi0+ZmluZENsaWVudEJ5SWRl
bnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllciwgW3Byb21p
c2VQb2ludGVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0gKGF1dG8mJiBjbGllbnREYXRhKSB7
CisgICAgICAgIGNvbm5lY3Rpb24tPmZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBpZCwgW3Byb21pc2VQb2ludGVyLCBzZXJ2aWNlV29ya2VySWRl
bnRpZmllcl0gKGF1dG8mJiBjbGllbnREYXRhKSB7CiAgICAgICAgICAgICBTV0NvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdvcmtlcihzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgW3Byb21pc2VQb2ludGVyLCBkYXRhID0gY3Jvc3NUaHJlYWRDb3B5KGNsaWVudERh
dGEpXSAoYXV0byYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8g
cHJvbWlzZSA9IGNvbnRleHQuY2xpZW50cygpLm1fcGVuZGluZ1Byb21pc2VzLnRha2UocHJvbWlz
ZVBvaW50ZXIpKQogICAgICAgICAgICAgICAgICAgICBkaWRGaW5pc2hHZXRSZXF1ZXN0KGNvbnRl
eHQsICpwcm9taXNlLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCA3MTZk
MDAzNTFkZDczYmZlOTIzMmE4OGQ4YjI5YzZkNzJjYzIzZGU3Li5jMGUwMzYzNmIxODljNTg2NjNl
NDgzYzgwYmI5ZDY5MTkyYjIwZTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC02Miw4ICs2Miw4
IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIHNraXBXYWl0aW5nKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIHNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBVUkwmLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0
JikgPSAwOwogCi0gICAgICAgIHVzaW5nIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YT4+JiYpPjsKLSAgICAgICAgdmlydHVhbCB2b2lkIGZpbmRDbGllbnRC
eUlkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyLCBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ2FsbGJhY2smJikgPSAwOworICAg
ICAgICB1c2luZyBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpPjsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ2Fs
bGJhY2smJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgbWF0Y2hBbGwoU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmLCBTZXJ2
aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJikgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgY2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+JiYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5j
cHAKaW5kZXggNmQyZjFlNmE2ZGQxOTE1ZGVlNTFhZmFhYWM1NmU5MWUxMTkzNjI3Yi4uNGM5ZjJk
ZTRlN2QzNDkxOTU1MjFiMjI1NzFlNTkyODU3M2JiMDA5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0
Y2guY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFJl
ZjxDbGllbnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hSZXNwb25zZT4sIHMKICAgICB9
KTsKIH0KIAotdm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiBjbGllbnQsIFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IGNsaWVudElkLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgRmV0Y2hJ
ZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZEVuYWJsZWQpCit2b2lkIGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNs
aWVudCwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMs
IEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRFbmFibGVkLCBTdHJpbmcmJiBjbGllbnRJZGVudGlmaWVyLCBTdHJpbmcm
JiByZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKQogewogICAgIGF1dG8gcmVxdWVzdEhlYWRlcnMg
PSBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpJbW11dGFibGUsIEhU
VFBIZWFkZXJNYXAgeyByZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSB9KTsKIApAQCAtMTgxLDEy
ICsxODEsOCBAQCB2b2lkIGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNsaWVudCwg
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTYwogCiAgICAgRmV0Y2hFdmVudDo6SW5p
dCBpbml0OwogICAgIGluaXQucmVxdWVzdCA9IFdURk1vdmUoZmV0Y2hSZXF1ZXN0KTsKLSAgICBp
ZiAoaXNOYXZpZ2F0aW9uKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBTZXQgcmVzZXJ2ZWRDbGllbnRJ
ZC4KLSAgICAgICAgaWYgKGNsaWVudElkKQotICAgICAgICAgICAgaW5pdC50YXJnZXRDbGllbnRJ
ZCA9IGNsaWVudElkLT50b1N0cmluZygpOwotICAgIH0gZWxzZSBpZiAoY2xpZW50SWQpCi0gICAg
ICAgIGluaXQuY2xpZW50SWQgPSBjbGllbnRJZC0+dG9TdHJpbmcoKTsKKyAgICBpbml0LnJlc3Vs
dGluZ0NsaWVudElkID0gV1RGTW92ZShyZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKTsKKyAgICBp
bml0LmNsaWVudElkID0gV1RGTW92ZShjbGllbnRJZGVudGlmaWVyKTsKICAgICBpbml0LmNhbmNl
bGFibGUgPSB0cnVlOwogCiAgICAgYXV0byYganNET01HbG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxTY29wZS5nbG9iYWxPYmplY3QoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5oCmluZGV4IDJjOWY3YTE2ZDI3M2JkNzE1ZWUxMWVjMDdhNGY5YzVkZDg0
MmFlNTYuLjE0YTYyOTk5NDA5Nzg2NmY4OGMzMjU0ZjM4ZjAzNGM4NDNlYTdkYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJG
ZXRjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgY29udmVydEZldGNoVG9Eb3dubG9hZCgpID0gMDsKIH07CiAKLXZvaWQgZGlzcGF0Y2hGZXRj
aEV2ZW50KFJlZjxDbGllbnQ+JiYsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYsIHN0ZDo6b3B0
aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+LCBSZXNvdXJjZVJlcXVlc3Qm
JiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmLCBGZXRjaElkZW50aWZpZXIsIGJv
b2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkKTsKK3ZvaWQgZGlzcGF0
Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYsIFJl
c291cmNlUmVxdWVzdCYmLCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYsIEZldGNo
SWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQs
IFN0cmluZyYmIGNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIHJlc3VsdGluZ0NsaWVudElkZW50
aWZpZXIpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkLmNwcAppbmRleCA2NTI1ZmI5NzAxNmZmYWRlZTkxYTExNjA2MDRjMDI3MTA5Y2U4NjYxLi4y
NjBkYmJkM2U2NjI5NzljYzlmYTY5MmQ0M2NlNGViNDM3MDRkZmI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkLmNwcApAQCAtMTI0LDExICsxMjQsMTEgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpydW5FdmVudExvb3AoKQogICAgIFdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCk7CiB9
CiAKLXZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudChS
ZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYgY2xpZW50LCBzdGQ6Om9wdGlvbmFsPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiYmIGNsaWVudElkLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywg
RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZEVuYWJsZWQpCit2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFz
a1RvRmlyZUZldGNoRXZlbnQoUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmIGNsaWVu
dCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0
aW9ucyYmIG9wdGlvbnMsIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIGJvb2wgaXNT
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkLCBTdHJpbmcmJiBjbGllbnRJZGVu
dGlmaWVyLCBTdHJpbmcmJiByZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKQogewogICAgIFJlZiBz
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGU+KCpnbG9iYWxTY29wZSgpKTsKLSAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmV2ZW50
TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUsIGNsaWVudCA9IFdURk1vdmUoY2xpZW50KSwgY2xpZW50SWQsIHJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZWZlcnJlciA9IFdURk1vdmUocmVmZXJyZXIpLCBvcHRp
b25zID0gV1RGTW92ZShvcHRpb25zKSwgZmV0Y2hJZGVudGlmaWVyLCBpc1NlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIFNlcnZpY2VXb3Jr
ZXJGZXRjaDo6ZGlzcGF0Y2hGZXRjaEV2ZW50KFdURk1vdmUoY2xpZW50KSwgc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLCBjbGllbnRJZCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWZlcnJl
ciksIFdURk1vdmUob3B0aW9ucyksIGZldGNoSWRlbnRpZmllciwgaXNTZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRFbmFibGVkKTsKKyAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmV2
ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtzZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUsIGNsaWVudCA9IFdURk1vdmUoY2xpZW50KSwgcmVxdWVzdCA9IFdU
Rk1vdmUocmVxdWVzdCksIHJlZmVycmVyID0gV1RGTW92ZShyZWZlcnJlciksIG9wdGlvbnMgPSBX
VEZNb3ZlKG9wdGlvbnMpLCBmZXRjaElkZW50aWZpZXIsIGlzU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkRW5hYmxlZCwgY2xpZW50SWRlbnRpZmllciA9IFdURk1vdmUoY2xpZW50SWRlbnRp
ZmllciksIHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIgPSBXVEZNb3ZlKHJlc3VsdGluZ0NsaWVu
dElkZW50aWZpZXIpXSgpIG11dGFibGUgeworICAgICAgICBTZXJ2aWNlV29ya2VyRmV0Y2g6OmRp
c3BhdGNoRmV0Y2hFdmVudChXVEZNb3ZlKGNsaWVudCksIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWZlcnJlciksIFdURk1vdmUob3B0aW9ucyks
IGZldGNoSWRlbnRpZmllciwgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVk
LCBXVEZNb3ZlKGNsaWVudElkZW50aWZpZXIpLCBXVEZNb3ZlKHJlc3VsdGluZ0NsaWVudElkZW50
aWZpZXIpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCmluZGV4IDFkYTJk
ZDgzZWUwNzcxZmE0YTEyYzkxYWUyNTRhNTIzYTkzMjJlN2YuLjg4YjY1ZGU4MDMwYWE5NTA5MGQz
N2NkY2ExYWUwN2VjZTc1YmYwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKQEAgLTY0LDcg
KzY0LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFBvc3RUYXNrVG9GaXJlTWVzc2FnZUV2ZW50
KCk7CiAgICAgdm9pZCB3aWxsUG9zdFRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZl
bnQoKTsKIAotICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudChSZWY8U2VydmljZVdv
cmtlckZldGNoOjpDbGllbnQ+JiYsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXI+JiYsIFJlc291cmNlUmVxdWVzdCYmLCBTdHJpbmcmJiByZWZlcnJlciwgRmV0
Y2hPcHRpb25zJiYsIEZldGNoSWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZEVuYWJsZWQpOworICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudChS
ZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYsIFJlc291cmNlUmVxdWVzdCYmLCBTdHJp
bmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYsIEZldGNoSWRlbnRpZmllciwgYm9vbCBpc1Nl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIFN0cmluZyYmIGNsaWVudElkZW50
aWZpZXIsIFN0cmluZyYmIHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIpOwogICAgIHZvaWQgcXVl
dWVUYXNrVG9Qb3N0TWVzc2FnZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBTZXJ2aWNlV29y
a2VyT3JDbGllbnREYXRhJiYgc291cmNlRGF0YSk7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVJ
bnN0YWxsRXZlbnQoKTsKICAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZUFjdGl2YXRlRXZlbnQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IGRiNmM5M2I4YmU5MWI5
YjkyMjcxMDk0Nzk5ZDBkZGMzZjY0ODJkZjAuLmM2NjYxNGZhMmM5NjAwMTE2NDVlOGFjNzQ1ZDRm
NmQ5Yzg4Mzk2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAt
MjEwLDcgKzIxMCw3IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpub3RpZnlOZXR3
b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkKICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZh
dWx0TW9kZSgpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0
Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgRmV0
Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xp
ZW50PiYmIGNsaWVudCwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
Zmllcj4mJiBjbGllbnRJZCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVm
ZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRFbmFibGVkKQordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0
RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwg
RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6
Q2xpZW50PiYmIGNsaWVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVm
ZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRFbmFibGVkLCBTdHJpbmcmJiBjbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBy
ZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKQogewogICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3Jr
ZXIsICJTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2ggJWxsdSIsIGZldGNoSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKIApAQCAtMjIxLDggKzIyMSw4IEBAIHZvaWQgU2VydmljZVdv
cmtlclRocmVhZFByb3h5OjpzdGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIg
Y29ubmVjdGlvCiAKICAgICBBU1NFUlQoIW1fb25nb2luZ0ZldGNoVGFza3MuY29udGFpbnMoa2V5
KSk7CiAgICAgbV9vbmdvaW5nRmV0Y2hUYXNrcy5hZGQoa2V5LCBjbGllbnQuY29weVJlZigpKTsK
LSAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2xpZW50ID0gV1RGTW92ZShjbGllbnQpLCBj
bGllbnRJZCwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0gcmVm
ZXJyZXIuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgpLCBm
ZXRjaElkZW50aWZpZXIsIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZF0o
YXV0byYpIG11dGFibGUgewotICAgICAgICB0aHJlYWQoKS5xdWV1ZVRhc2tUb0ZpcmVGZXRjaEV2
ZW50KFdURk1vdmUoY2xpZW50KSwgV1RGTW92ZShjbGllbnRJZCksIFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUocmVmZXJyZXIpLCBXVEZNb3ZlKG9wdGlvbnMpLCBmZXRjaElkZW50aWZpZXIsIGlz
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCk7CisgICAgcG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIGNsaWVudCA9IFdURk1vdmUoY2xpZW50KSwgcmVxdWVzdCA9IHJlcXVlc3Qu
aXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0gV1RGTW92ZShyZWZlcnJlcikuaXNvbGF0ZWRDb3B5
KCksIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgpLCBmZXRjaElkZW50aWZpZXIsIGlz
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCwgY2xpZW50SWRlbnRpZmllciA9
IFdURk1vdmUoY2xpZW50SWRlbnRpZmllcikuaXNvbGF0ZWRDb3B5KCksIHJlc3VsdGluZ0NsaWVu
dElkZW50aWZpZXIgPSBXVEZNb3ZlKHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIpLmlzb2xhdGVk
Q29weSgpXShhdXRvJikgbXV0YWJsZSB7CisgICAgICAgIHRocmVhZCgpLnF1ZXVlVGFza1RvRmly
ZUZldGNoRXZlbnQoV1RGTW92ZShjbGllbnQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJl
ZmVycmVyKSwgV1RGTW92ZShvcHRpb25zKSwgZmV0Y2hJZGVudGlmaWVyLCBpc1NlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIFdURk1vdmUoY2xpZW50SWRlbnRpZmllciksIFdU
Rk1vdmUocmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcikpOwogICAgIH0sIFdvcmtlclJ1bkxvb3A6
OmRlZmF1bHRNb2RlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmlu
ZGV4IDAxYjNhZDA0OTE1ZDRiZTI3YjAxYmNmZmRjNmIwY2ZiMjA4ZmMwN2UuLmFiY2E0ODYyYmQ2
NTliYjRlYzE2YjdkZGY5OTE4ZTYyOGQzMzc1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgbm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzdGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IEZldGNoSWRlbnRpZmllciwgUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmLCBzdGQ6
Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiYmLCBSZXNvdXJjZVJl
cXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmLCBib29sIGlzU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzdGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmll
ciwgUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmLCBSZXNvdXJjZVJlcXVlc3QmJiwg
U3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmLCBib29sIGlzU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkRW5hYmxlZCwgU3RyaW5nJiYgY2xpZW50SWRlbnRpZmllciwgU3RyaW5n
JiYgcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
YW5jZWxGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udmVydEZldGNoVG9Eb3dubG9hZChTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShTV1NlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCAxYTk2M2NkMTI0ZTI1ZmRk
MzBlYjE1ZDY3MzdlN2U0MzVkZDQxMTgwLi43Y2I5OTNmMjI1N2RjNzMxNmNiM2EyYWU4YzY4Mjlm
NjFiNTI3MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcApAQCAtOTQyLDYgKzk0Miw4IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudChDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFNlcnZp
Y2VXCiAgICAgICAgICAgICB1cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZUZvcldvcmtlcnMoY2xpZW50
T3JpZ2luLCBkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKICAgICB9CiAKKyAg
ICBtX3Zpc2libGVDbGllbnRJZFRvSW50ZXJuYWxDbGllbnRJZE1hcC5hZGQoZGF0YS5pZGVudGlm
aWVyLnRvVmlzaWJsZVN0cmluZygpLCBjbGllbnRJZGVudGlmaWVyKTsKKwogICAgIEFTU0VSVCgh
bV9jbGllbnRzQnlJZC5jb250YWlucyhjbGllbnRJZGVudGlmaWVyKSk7CiAgICAgbV9jbGllbnRz
QnlJZC5hZGQoY2xpZW50SWRlbnRpZmllciwgV1RGTW92ZShkYXRhKSk7CiAKQEAgLTk3OSw4ICs5
ODEsOCBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25z
dCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogICAgIGF1dG8gY2xpZW50UmVnaXN0cmFi
bGVEb21haW4gPSBjbGllbnRPcmlnaW4uY2xpZW50UmVnaXN0cmFibGVEb21haW4oKTsKICAgICBh
dXRvIGFwcEluaXRpYXRlZFZhbHVlQmVmb3JlID0gY2xpZW50SXNBcHBJbml0aWF0ZWRGb3JSZWdp
c3RyYWJsZURvbWFpbihjbGllbnRPcmlnaW4uY2xpZW50UmVnaXN0cmFibGVEb21haW4oKSk7CiAK
LSAgICBib29sIHdhc1JlbW92ZWQgPSBtX2NsaWVudHNCeUlkLnJlbW92ZShjbGllbnRJZGVudGlm
aWVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOworICAgIG1f
Y2xpZW50c0J5SWQucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOworICAgIG1fdmlzaWJsZUNsaWVu
dElkVG9JbnRlcm5hbENsaWVudElkTWFwLnJlbW92ZShjbGllbnRJZGVudGlmaWVyLnRvVmlzaWJs
ZVN0cmluZygpKTsKIAogICAgIGF1dG8gY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRv
ciA9IG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uZmluZChjbGllbnRSZWdpc3RyYWJsZURv
bWFpbik7CiAgICAgQVNTRVJUKGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3IgIT0g
bV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbi5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggYjE1ZjFhZjVlMGVkNzJh
YWExZGRiZGE5YTJmZmUzZmIyOWFiMTM4Ny4uNDM5NDFiMzRiMmE3MjdkNDM4ZjY1NGM3NTNkOGY1
OWY1Y2YyNjllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuaApAQCAtMjI2LDYgKzIyNiw4IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNz
IFNob3VsZFNraXBFdmVudCA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdm9pZCBmaXJlRnVuY3Rp
b25hbEV2ZW50KFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eHBlY3RlZDxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qLCBTaG91bGRTa2lwRXZlbnQ+KT4m
Jik7CiAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJZEZyb21W
aXNpYmxlQ2xpZW50SWQoY29uc3QgU3RyaW5nJiB2aXNpYmxlSWRlbnRpZmllcikgY29uc3QgeyBy
ZXR1cm4gbV92aXNpYmxlQ2xpZW50SWRUb0ludGVybmFsQ2xpZW50SWRNYXAuZ2V0KHZpc2libGVJ
ZGVudGlmaWVyKTsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgdmFsaWRhdGVSZWdpc3RyYXRpb25E
b21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJKb2JUeXBlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIApAQCAtMjcxLDYgKzI3Myw3IEBAIHBy
aXZhdGU6CiAgICAgSGFzaE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgV2Vh
a1B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4+IG1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVy
VG9SZWdpc3RyYXRpb25NYXA7CiAgICAgSGFzaE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudERhdGE+IG1fY2xpZW50c0J5SWQ7CiAgICAgSGFz
aE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXI+IG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lzdHJhdGlvbjsKKyAg
ICBIYXNoTWFwPFN0cmluZywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IG1fdmlz
aWJsZUNsaWVudElkVG9JbnRlcm5hbENsaWVudElkTWFwOwogCiAgICAgVW5pcXVlUmVmPFNXT3Jp
Z2luU3RvcmU+IG1fb3JpZ2luU3RvcmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdHJhdGlv
blN0b3JlPiBtX3JlZ2lzdHJhdGlvblN0b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwCmluZGV4IGJmZWVjY2UwM2UwNGNjNzhlODdlMWUxNjI2OWI5NjMwMWQ0ODE3
YTEuLjU0MjhhYTQ2NTU0NTg4NDg3OTAxN2M0NTFkOThmOGFjOWU2MmFkN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTg3LDEyICs4Nyw2IEBAIHZvaWQg
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpCiAgICAgICAgIHdvcmtlci0+Y29udGV4dFRlcm1pbmF0ZWQoKTsK
IH0KIAotdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50
aWZpZXIodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
ciBjbGllbnRJZCkKLXsKLSAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4
aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCi0gICAg
ICAgIHdvcmtlci0+Y29udGV4dENvbm5lY3Rpb24oKS0+ZmluZENsaWVudEJ5SWRlbnRpZmllckNv
bXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgd29ya2VyLT5maW5kQ2xpZW50QnlJZGVudGlmaWVy
KGNsaWVudElkKSwgZmFsc2UpOwotfQotCiB2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6bWF0Y2hBbGwodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50
UXVlcnlPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZl
cldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKSkgewpAQCAtMTAyLDYgKzk2LDE0IEBAIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjptYXRjaEFsbCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvCiAgICAg
fQogfQogCit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmluZENsaWVudEJ5Vmlz
aWJsZUlkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgY2xpZW50SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT4m
JiBjYWxsYmFjaykKK3sKKyAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4
aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCisgICAg
ICAgIHdvcmtlci0+ZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoY2xpZW50SWRlbnRpZmll
ciwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIGVsc2UKKyAgICAgICAgY2FsbGJhY2soeyB9KTsK
K30KKwogdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNsYWltKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAg
YXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmll
cihzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaAppbmRleCBiZGQzNjNiMmJjNDUwY2MyOTkyZTY1NjgzNmFmNzdlZDUzYmNkYTQwLi5j
MDU2ZjY0OGRkYTAzZTVmYWI0OGQyYWU0NmU3MTM5NzU2ZjVkNTQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTU4LDcgKzU4LDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IEhhc2hNYXA8VVJMLCBT
Y3JpcHRCdWZmZXI+JiBpbXBvcnRlZFNjcmlwdHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZmlu
ZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mLCBib29sIGhhc1Nl
Y3VyaXR5RXJyb3IpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbWF0Y2hBbGxDb21wbGV0ZWQodWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpcmVQdXNoRXZlbnQoU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spID0gMDsKIApAQCAtNzAsMTEgKzY5
LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlcnZpY2VXb3JrZXJI
YXNQZW5kaW5nRXZlbnRzKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGhhc1BlbmRpbmdF
dmVudHMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2tpcFdhaXRpbmcoU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXIodWludDY0X3QgY2xp
ZW50SWRSZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hdGNo
QWxsKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Y29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb25EYXRhPiYmKT4mJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJM
JiYgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JiYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmRDbGllbnRCeVZp
c2libGVJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNs
aWVudElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+JiYpOwogCiAgICAgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3Ry
YWJsZURvbWFpbjsgfQogICAgIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDVkMTU1
NmEwMDZkYWIxNTE2NzY1MWEyM2RmMmZiMzMzMDQ3ZjZiNDMuLmNkYmZlNDRiZWVjMGM5MDhiYWMx
MjI0ZDBlYTRiNmYxMmZlZGYxYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC0yMzEsNiArMjMxLDIy
IEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNXU2VydmVyV29ya2Vy
OjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyKGNvCiAgICAgcmV0dXJuIG1fc2VydmVyLT5zZXJ2aWNl
V29ya2VyQ2xpZW50V2l0aE9yaWdpbkJ5SUQob3JpZ2luKCksIGNsaWVudElkKTsKIH0KIAordm9p
ZCBTV1NlcnZlcldvcmtlcjo6ZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJiBjbGllbnRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpPiYmIGNhbGxiYWNrKQorewor
ICAgIGlmICghbV9zZXJ2ZXIpIHsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8gaW50ZXJuYWxJZGVudGlmaWVyID0gbV9zZXJ2ZXItPmNs
aWVudElkRnJvbVZpc2libGVDbGllbnRJZChjbGllbnRJZGVudGlmaWVyKTsKKyAgICBpZiAoIWlu
dGVybmFsSWRlbnRpZmllcikgeworICAgICAgICBjYWxsYmFjayh7IH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgY2FsbGJhY2soZmluZENsaWVudEJ5SWRlbnRpZmllcihpbnRlcm5h
bElkZW50aWZpZXIpKTsKK30KKwogdm9pZCBTV1NlcnZlcldvcmtlcjo6bWF0Y2hBbGwoY29uc3Qg
U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYgb3B0aW9ucywgU2VydmljZVdvcmtlckNs
aWVudHNNYXRjaEFsbENhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKG1fc2VydmVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaAppbmRleCBiMjIxNWQ5ZjRhZDRkMGZkOTE1MDRhNGMyMWFjYjkzMDQ3YTFj
ODI0Li4xZTgzMWZjNGNhODJkNjQ0ZTdjNmRiMTFlMGVmNTNhNzZiNmRmNDUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtl
ci5oCkBAIC0xMDMsNiArMTAzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmluaXNoQWN0aXZh
dGlvbigpOwogICAgIHZvaWQgY29udGV4dFRlcm1pbmF0ZWQoKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBmaW5kQ2xpZW50QnlJZGVu
dGlmaWVyKGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyJikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5kQ2xpZW50QnlWaXNpYmxlSWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+JiYpOwogICAgIHZv
aWQgbWF0Y2hBbGwoY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFNlcnZp
Y2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYmKTsKICAgICB2b2lkIHNldFNjcmlwdFJl
c291cmNlKFVSTCYmLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JiYp
OwogICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2NyaXB0QnVmZmVyJiYgbWFpblNjcmlw
dCwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgK
aW5kZXggODE3YWVmMjZjODM2YzM0YTdkNDRlZTdjYzk1ZWRkOWEyOThkNmE0YS4uM2YxODIwZDE2
ODIxOTgyMDY3MTUxMjY2NjVmNTI0ZGM3YWNmZWNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0xNDUsNiArMTQ1
LDEwIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBzdGFy
dFdpdGhTZXJ2aWNlV29ya2VyKCk7CiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxl
KFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sqKTsKKyAgICB2b2lkIHNldFJlc3VsdGluZ0NsaWVudElk
ZW50aWZpZXIoU3RyaW5nJiYgaWRlbnRpZmllcikgeyBtX3Jlc3VsdGluZ0NsaWVudElkZW50aWZp
ZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpOyB9CisgICAgdm9pZCBzZXRDbGllbnRJZGVudGlmaWVy
KFN0cmluZyYmIGlkZW50aWZpZXIpIHsgbV9jbGllbnRJZGVudGlmaWVyID0gV1RGTW92ZShpZGVu
dGlmaWVyKTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcjsgfQorICAgIGNvbnN0
IFN0cmluZyYgY2xpZW50SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50SWRlbnRp
ZmllcjsgfQogI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlRXJy
b3I+IGRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtMjU1LDYgKzI1OSw4IEBAIHByaXZhdGU6CiAgICAgc3Rk
OjpvcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBtX25ldHdvcmtBY3Rpdml0eVRyYWNr
ZXI7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrPiBtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2s7CisgICAgU3RyaW5n
IG1fcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcjsKKyAgICBTdHJpbmcgbV9jbGllbnRJZGVudGlm
aWVyOwogI2VuZGlmCiAgICAgTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgbV9yZXNvdXJj
ZUxvYWRJRDsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVkaXJlY3RSZXNwb25z
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCBjZDJkNmEy
MDczZmI5N2FiYTAxNmQzYzdlZjMxYzc3MWExMjcwMmM5Li43MDYxYzFmMDE5MDg5ZjA2NDQxOTBl
NmZjMzhkZDZmNTE1OWViZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRh
c2suY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpz
dGFydEZldGNoKCkKICAgICBhdXRvIHJlcXVlc3QgPSBtX2N1cnJlbnRSZXF1ZXN0OwogICAgIGNs
ZWFuSFRUUFJlcXVlc3RIZWFkZXJzRm9yQWNjZXNzQ29udHJvbChyZXF1ZXN0LCBtX2xvYWRlci5w
YXJhbWV0ZXJzKCkuaHR0cEhlYWRlcnNUb0tlZXApOwogCi0gICAgYm9vbCBpc1NlbnQgPSBzZW5k
VG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
U3RhcnRGZXRjaCB7IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1fc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIG1fZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zLCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIHsgbV9jdXJyZW50UmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZmVycmVy
LCBtX3ByZWxvYWRlciAmJiBtX3ByZWxvYWRlci0+aXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRFbmFibGVkKCkgfSk7CisgICAgYm9vbCBpc1NlbnQgPSBzZW5kVG9TZXJ2aWNlV29ya2Vy
KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IG1f
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1f
ZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
IHsgbV9jdXJyZW50UmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZmVycmVyLCBtX3ByZWxvYWRlciAm
JiBtX3ByZWxvYWRlci0+aXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkKCks
IG1fbG9hZGVyLmNsaWVudElkZW50aWZpZXIoKSwgbV9sb2FkZXIucmVzdWx0aW5nQ2xpZW50SWRl
bnRpZmllcigpIH0pOwogICAgIEFTU0VSVF9VTlVTRUQoaXNTZW50LCBpc1NlbnQpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDQ3MmEyMzEzOWY3Njhi
MDkxM2M2YWMxNDQxOWY3ZDhiZGYyNDJlYWUuLjc0MDlhZjBhZmJhNTkzYjIwZWVlMjAwNzUzOWE5
MGVhYTE5OTIwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBA
IC0xNzUsNiArMTc1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlRmV0Y2hUYXNrKE4KIAogICAgICAgICBzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmll
cigpOwogICAgICAgICBjb250cm9sQ2xpZW50KCpsb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnMu
Y2xpZW50SWRlbnRpZmllciwgKnJlZ2lzdHJhdGlvbiwgcmVxdWVzdCk7CisgICAgICAgIGxvYWRl
ci5zZXRSZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9u
cy5jbGllbnRJZGVudGlmaWVyLT50b1Zpc2libGVTdHJpbmcoKSk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgaWYgKCFsb2FkZXIucGFyYW1ldGVycygpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDQsNiArMjA1LDEx
IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayhOCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAorICAgIGlmIChsb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnMubW9kZSAhPSBGZXRjaE9w
dGlvbnM6Ok1vZGU6Ok5hdmlnYXRlICYmIGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucy5jbGll
bnRJZGVudGlmaWVyKSB7CisgICAgICAgIGlmIChhdXRvIGRhdGEgPSB3b3JrZXItPmZpbmRDbGll
bnRCeUlkZW50aWZpZXIoKmxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucy5jbGllbnRJZGVudGlm
aWVyKSkKKyAgICAgICAgICAgIGxvYWRlci5zZXRDbGllbnRJZGVudGlmaWVyKGRhdGEtPmlkZW50
aWZpZXIudG9WaXNpYmxlU3RyaW5nKCkpOworICAgIH0KKwogICAgIGJvb2wgaXNXb3JrZXJSZWFk
eSA9IHdvcmtlci0+aXNSdW5uaW5nKCkgJiYgd29ya2VyLT5zdGF0ZSgpID09IFNlcnZpY2VXb3Jr
ZXJTdGF0ZTo6QWN0aXZhdGVkOwogICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8U2VydmljZVdv
cmtlckZldGNoVGFzaz4oKnRoaXMsIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdCB9
LCBpZGVudGlmaWVyKCksIHdvcmtlci0+aWRlbnRpZmllcigpLCAqcmVnaXN0cmF0aW9uLCBzZXNz
aW9uKCksIGlzV29ya2VyUmVhZHkpOwogICAgIHN0YXJ0RmV0Y2goKnRhc2ssICp3b3JrZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApp
bmRleCBmMGE4OTY3NWNjMTQ0MzcwOGEwYjY4YWM5MzFjZTc3ZmQyNWM0MDA1Li41YTg3MDNlZmQ2
ZDVkY2Q0MWEyMjVhOGQxMmUzZGQ1ZGRhZTEwNjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTU1LDExICsxNTUsNiBAQCB2
b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlRHVlVG9VbnJlc3Bv
bnNpdmVuZXNzKCkKICAgICBtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJt
aW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzIHsgd2ViUHJvY2Vzc0lkZW50
aWZpZXIoKSB9LCAwKTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OmZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiBkYXRhLCBi
b29sIGhhc1NlY3VyaXR5RXJyb3IpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OkZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQgeyByZXF1
ZXN0SWRlbnRpZmllciwgZGF0YSwgaGFzU2VjdXJpdHlFcnJvciB9KTsKLX0KLQogdm9pZCBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiBj
bGllbnRzRGF0YSkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6TWF0Y2hBbGxDb21wbGV0ZWQgeyByZXF1ZXN0SWRlbnRpZmllciwgY2xpZW50c0Rh
dGEgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgKaW5kZXggMzM2NThjNTRjMTRmYTRhNDQ0Yjc0MzZkZDkwYjA4NTlhMjQyYmI1My4uZDk1Yjdj
ZTg1NDY5OGM1MTY2ZDNhMTU5YTM3ODhlZGUyZDliMjI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtOTUsNyArOTUsNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgdGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNr
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRC
dWZmZXImLCBjb25zdCBIYXNoTWFwPFVSTCwgV2ViQ29yZTo6U2NyaXB0QnVmZmVyPiYgaW1wb3J0
ZWRTY3JpcHRzKSBmaW5hbDsKLSAgICB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0
ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSBmaW5h
bDsKICAgICB2b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JikgZmluYWw7
CiAgICAgdm9pZCBmaXJlUHVzaEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZmQ3MTk0OGM1
ZjM1OTk5ZjU1MmRmMWRmZDYzNTJjMTNkMmY1ZjgxZS4uMGQ2MTQ1MGQ0MWEzMDFmMDhmOWVjNWU2
YTNhNjAwNjFmOWI2NDM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zMiw3ICszMiw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsK
ICAgICBTZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIGhhc1BlbmRpbmdFdmVudHMpCiAgICAgU2tp
cFdhaXRpbmcoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikgLT4g
KCkgQXN5bmMKICAgICBXb3JrZXJUZXJtaW5hdGVkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCi0gICAgRmluZENsaWVudEJ5SWRlbnRpZmllcih1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyIGNsaWVudElkZW50aWZpZXIpCisgICAgRmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFN0cmluZyBjbGllbnRJZGVudGlmaWVyKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YT4gZGF0YSkgQXN5bmMKICAgICBNYXRjaEFsbCh1aW50NjRfdCBt
YXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
bGllbnRRdWVyeU9wdGlvbnMgb3B0aW9ucyk7CiAgICAgQ2xhaW0oV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpIC0+IChzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IHJlc3VsdCkgQXN5bmMKICAgICBTZXRTY3JpcHRSZXNv
dXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBVUkwgc2Ny
aXB0VVJMLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0
IHNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCmluZGV4IGU2ZGQ4MTEwNTY0NDQxYzNhMzU5MDkw
YjAxMTQyZGRjZTIwNDNhYzMuLmMzNDI3YWE1MjBjNGYxZDdkYTQzYzEyOTdlNjlkMmFmMGUxMjJm
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIFdLQXJyYXlSZWYg
V0tCdW5kbGVHZXRMaXZlRG9jdW1lbnRVUkxzRm9yVGVzdGluZyhXS0J1bmRsZVJlZiBidW5kbGVS
ZWYsIGJvb2wgZXhjCiAgICAgICAgIGF1dG8gZG9jdW1lbnRJREtleSA9IGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImlkIikpOwogICAgICAgICBhdXRvIGRvY3VtZW50VVJM
S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidXJsIikpOwogCi0g
ICAgICAgIGF1dG8gZG9jdW1lbnRJRFZhbHVlID0gYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShpdC5r
ZXkpKTsKKyAgICAgICAgYXV0byBkb2N1bWVudElEVmFsdWUgPSBhZG9wdFdLKFdlYktpdDo6dG9D
b3BpZWRBUEkoaXQua2V5LnRvU3RyaW5nKCkpKTsKICAgICAgICAgYXV0byBkb2N1bWVudFVSTFZh
bHVlID0gYWRvcHRXSyhXZWJLaXQ6OnRvQ29waWVkQVBJKGl0LnZhbHVlKSk7CiAKICAgICAgICAg
V0tEaWN0aW9uYXJ5U2V0SXRlbSh1cmxJbmZvLmdldCgpLCBkb2N1bWVudElES2V5LmdldCgpLCBk
b2N1bWVudElEVmFsdWUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggODVjNzAxMzAy
NjlkMWQ2MGE0ZmQ2OGYyMGM5N2I2OGEyYjI4YTNlYS4uZjRkZDU4MzEyMGJlMGNmYWQ0ODA1NjJk
M2IwODVhMjUyODgxZGQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0zMzgsMTQgKzMzOCwx
NCBAQCBJbmplY3RlZEJ1bmRsZTo6RG9jdW1lbnRJRFRvVVJMTWFwIEluamVjdGVkQnVuZGxlOjps
aXZlRG9jdW1lbnRVUkxzKGJvb2wgZXhjbHVkZQogICAgIERvY3VtZW50SURUb1VSTE1hcCByZXN1
bHQ7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3Vt
ZW50cygpKQotICAgICAgICByZXN1bHQuYWRkKGRvY3VtZW50LT5pZGVudGlmaWVyKCkub2JqZWN0
KCkudG9VSW50NjQoKSwgZG9jdW1lbnQtPnVybCgpLnN0cmluZygpKTsKKyAgICAgICAgcmVzdWx0
LmFkZChkb2N1bWVudC0+aWRlbnRpZmllcigpLm9iamVjdCgpLCBkb2N1bWVudC0+dXJsKCkuc3Ry
aW5nKCkpOwogCiAgICAgaWYgKGV4Y2x1ZGVEb2N1bWVudHNJblBhZ2VHcm91cFBhZ2VzKSB7CiAg
ICAgICAgIFBhZ2U6OmZvckVhY2hQYWdlKFsmXShQYWdlJiBwYWdlKSB7CiAgICAgICAgICAgICBm
b3IgKGF1dG8qIGZyYW1lID0gJnBhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIWZyYW1lLT5k
b2N1bWVudCgpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAg
ICByZXN1bHQucmVtb3ZlKGZyYW1lLT5kb2N1bWVudCgpLT5pZGVudGlmaWVyKCkub2JqZWN0KCku
dG9VSW50NjQoKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LnJlbW92ZShmcmFtZS0+ZG9jdW1l
bnQoKS0+aWRlbnRpZmllcigpLm9iamVjdCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAppbmRleCBkZGVkOTcwYjNjZjJmMWVlMWU3NGZhYTYwOTI4
ODNhYTYxNDJkZDYwLi41MWMwNDdhMjc1MTU3NjJlOGUxZGFlMmY3MjZmNjY4NTMyMmNkZTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuaApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9w
dGlvbmFsPFVVSUQ+IHdlYk5vdGlmaWNhdGlvbklEKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7
CiAgICAgUmVmPEFQSTo6RGF0YT4gY3JlYXRlV2ViRGF0YUZyb21VaW50OEFycmF5KEpTQ29udGV4
dFJlZiwgSlNWYWx1ZVJlZik7CiAgICAgCi0gICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBT
dHJpbmc+IERvY3VtZW50SURUb1VSTE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8VVVJRCwgU3Ry
aW5nPiBEb2N1bWVudElEVG9VUkxNYXA7CiAgICAgRG9jdW1lbnRJRFRvVVJMTWFwIGxpdmVEb2N1
bWVudFVSTHMoYm9vbCBleGNsdWRlRG9jdW1lbnRzSW5QYWdlR3JvdXBQYWdlcyk7CiAKICAgICAv
LyBHYXJiYWdlIGNvbGxlY3Rpb24gQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHAKaW5kZXggMDNlZWI4YjJkODEzMTBmOWU5Njc3ZmYzYjBjMGU5NGMzNDRmNmZkNS4uNTVjYTdk
YzNjZTA2YjU1MTQ5Y2E5YzNjYWNmNTgxMmQ1NjQ5YWY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoU1dTZXJ2ZXJD
b25uCiAgICAgICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+Y29udGludWVEaWRSZWNlaXZl
RmV0Y2hSZXNwb25zZShzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVy
KTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChT
V1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgRmV0Y2hJZGVu
dGlmaWVyIGZldGNoSWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmV0Y2hP
cHRpb25zJiYgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIGZvcm1EYXRhLCBTdHJp
bmcmJiByZWZlcnJlciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJs
ZWQpCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBGZXRjaElkZW50aWZp
ZXIgZmV0Y2hJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGZXRjaE9wdGlv
bnMmJiBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgZm9ybURhdGEsIFN0cmluZyYm
IHJlZmVycmVyLCBib29sIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCwg
U3RyaW5nJiYgY2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgcmVzdWx0aW5nQ2xpZW50SWRlbnRp
ZmllcikKIHsKICAgICBhdXRvKiBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBTV0NvbnRleHRN
YW5hZ2VyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoc2VydmljZVdvcmtl
cklkZW50aWZpZXIpOwogICAgIGlmICghc2VydmljZVdvcmtlclRocmVhZFByb3h5KSB7CkBAIC0y
NTcsMTAgKzI1Nyw5IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN0YXJ0
RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2CiAgICAgfQogCiAgICAgYXV0
byBjbGllbnQgPSBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpjcmVhdGUobV9jb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy5jb3B5UmVmKCksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0LnJl
cXVlc3RlcigpID09IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluKTsKLSAgICBzdGQ6
Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBjbGllbnRJZCA9IG9w
dGlvbnMuY2xpZW50SWRlbnRpZmllcjsKIAogICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoZm9ybURh
dGEudGFrZURhdGEoKSk7Ci0gICAgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT5zdGFydEZldGNo
KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIFdURk1vdmUoY2xp
ZW50KSwgV1RGTW92ZShjbGllbnRJZCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVmZXJy
ZXIpLCBXVEZNb3ZlKG9wdGlvbnMpLCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVu
YWJsZWQpOworICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+c3RhcnRGZXRjaChzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCBXVEZNb3ZlKGNsaWVudCksIFdU
Rk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVmZXJyZXIpLCBXVEZNb3ZlKG9wdGlvbnMpLCBpc1Nl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIFdURk1vdmUoY2xpZW50SWRlbnRp
ZmllciksIFdURk1vdmUocmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydmljZVdvcmtlck9yQ2xpZW50RGF0YSYmIHNvdXJj
ZURhdGEpCkBAIC0zMzMsMjIgKzMzMiw5IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OndvcmtlclRlcm1pbmF0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VyCiAgICAg
bV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpXb3JrZXJUZXJtaW5hdGVkKHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKSwgMCk7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpbmRD
bGllbnRCeUlkZW50aWZpZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWVu
dElkZW50aWZpZXIsIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQor
dm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmluZENsaWVudEJ5VmlzaWJsZUlk
ZW50aWZpZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY2xpZW50SWRlbnRpZmllciwgRmluZENsaWVudEJ5SWRl
bnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgYXV0byByZXF1ZXN0SWRlbnRpZmll
ciA9ICsrbV9wcmV2aW91c1JlcXVlc3RJZGVudGlmaWVyOwotICAgIG1fZmluZENsaWVudEJ5SWRl
bnRpZmllclJlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykp
OwotICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6RmluZENsaWVudEJ5SWRlbnRpZmllciB7IHJlcXVl
c3RJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllciB9
LCAwKTsKLX0KLQotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmluZENsaWVu
dEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpv
cHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiBjbGllbnREYXRhLCBib29sIGhhc1Nl
Y3VyaXR5RXJyb3IpCi17Ci0gICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX2ZpbmRDbGllbnRCeUlk
ZW50aWZpZXJSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKSkgewotICAgICAgICBpZiAo
aGFzU2VjdXJpdHlFcnJvcikgewotICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgU2Vj
dXJpdHlFcnJvciB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBj
YWxsYmFjayhXVEZNb3ZlKGNsaWVudERhdGEpKTsKLSAgICB9CisgICAgbV9jb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OkZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyIHsgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXIgfSwgV1RGTW92ZShjYWxsYmFjaykp
OwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptYXRjaEFsbChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYgb3B0aW9ucywgU2VydmljZVdvcmtl
ckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaAppbmRleCAwNTgwZDk4MzIyOGE3MmJiOGM5OTQ5Y2EyYjFiNGM3MTE4ZmFjNjEw
Li5hY2UxYTk5ZGQxMTg3MWZjMmJkZDdjYjQ1ZmY1NzRhODc5ZjE1MWViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZEZpbmlzaEFjdGl2YXRpb24oV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZp
bmFsOwogICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgd29ya2VyVGVy
bWluYXRlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7Ci0gICAgdm9p
ZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgRmluZENsaWVudEJ5
SWRlbnRpZmllckNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgZmluZENsaWVudEJ5VmlzaWJs
ZUlkZW50aWZpZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYsIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIG1h
dGNoQWxsKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNs
aWVudHNNYXRjaEFsbENhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xhaW0oV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
RXhjZXB0aW9uT3I8dm9pZD4mJik+JiYpIGZpbmFsOwogICAgIHZvaWQgc2tpcFdhaXRpbmcoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JikgZmluYWw7CkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXJ2aWNlV29y
a2VyRmFpbGVkVG9TdGFydChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VX
b3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJEYXRhJiYsIFN0cmluZyYmIHVzZXJBZ2VudCwgV2ViQ29yZTo6V29ya2VyVGhyZWFk
TW9kZSk7CiAgICAgdm9pZCB1cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQp
OwotICAgIHZvaWQgc3RhcnRGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25z
JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIGJvb2wgaXNT
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkKTsKKyAgICB2b2lkIHN0YXJ0RmV0
Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlJiYsIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkRW5hYmxlZCwgU3RyaW5nJiYgY2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgcmVz
dWx0aW5nQ2xpZW50SWRlbnRpZmllcik7CiAgICAgdm9pZCBjYW5jZWxGZXRjaChXZWJDb3JlOjpT
V1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGNvbnRpbnVlRGlkUmVj
ZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmll
cik7CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzJiYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEmJiBz
b3VyY2VEYXRhKTsKQEAgLTEwMSw3ICsxMDEsNiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTSEFS
RUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgZGlkU2F2ZVNjcmlw
dHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlciYmLCBIYXNoTWFwPFVSTCwgV2ViQ29yZTo6U2NyaXB0QnVmZmVyPiYmIGltcG9ydGVk
U2NyaXB0cyk7CiAjZW5kaWYKLSAgICB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0
ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNsaWVudERhdGE+JiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcik7CiAgICAgdm9p
ZCBtYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBW
ZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpOwogICAgIHZvaWQgc2V0
VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCk7CiAgICAgdm9pZCBjbG9zZSgpOwpAQCAtMTE3
LDcgKzExNiw2IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdl
SUQ7CiAKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRnJhbWVMb2Fk
ZXJDbGllbnQ+PiBtX2xvYWRlcnM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgRmluZENsaWVudEJ5
SWRlbnRpZmllckNhbGxiYWNrPiBtX2ZpbmRDbGllbnRCeUlkZW50aWZpZXJSZXF1ZXN0czsKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxs
Q2FsbGJhY2s+IG1fbWF0Y2hBbGxSZXF1ZXN0czsKICAgICB1aW50NjRfdCBtX3ByZXZpb3VzUmVx
dWVzdElkZW50aWZpZXIgeyAwIH07CiAgICAgU3RyaW5nIG1fdXNlckFnZW50OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBkNTQxYjgwMzE5
MmI4ZDU0ZDE4MjE3ZmIxMTI1NmRmMDA2OTUzMDIwLi5jNmExYThmYjM2NzZkZmNkN2YyZDhmNzQy
MGExZThiY2M5MGIzMTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQAogbWVzc2FnZXMgLT4gV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgSW5zdGFsbFNlcnZpY2VXb3Jr
ZXIoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSwg
c3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJEYXRhIHdvcmtlckRhdGEsIFN0cmluZyB1c2Vy
QWdlbnQsIGVudW06Ym9vbCBXZWJDb3JlOjpXb3JrZXJUaHJlYWRNb2RlIHdvcmtlclRocmVhZE1v
ZGUpCiAgICAgVXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUoV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGVudW06Ym9vbCBXZWJDb3JlOjpMYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkK
LSAgICBTdGFydEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNv
cmU6OkZldGNoT3B0aW9ucyBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RC
b2R5LCBTdHJpbmcgcmVmZXJyZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRFbmFibGVkKQorICAgIFN0YXJ0RmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRp
ZmllciBmZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBz
dHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zIG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UgcmVxdWVzdEJvZHksIFN0cmluZyByZWZlcnJlciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZEVuYWJsZWQsIFN0cmluZyBjbGllbnRJZGVudGlmZXIsIFN0cmluZyByZXN1
dGxpbmdDbGllbnRJZGVudGlmaWVyKQogICAgIENhbmNlbEZldGNoKFdlYkNvcmU6OlNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3Jl
OjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQogICAgIENvbnRpbnVlRGlkUmVjZWl2
ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElk
ZW50aWZpZXIpCiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlck9y
Q2xpZW50RGF0YSBzb3VyY2VEYXRhKQpAQCAtMzcsNyArMzcsNiBAQCBtZXNzYWdlcyAtPiBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKICNpZiBFTkFCTEUoU0hB
UkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBEaWRTYXZlU2NyaXB0c1Rv
RGlzayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgV2ViQ29yZTo6U2NyaXB0QnVmZmVyIHNjcmlwdCwgSGFzaE1hcDxVUkwsIFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcj4gaW1wb3J0ZWRTY3JpcHRzKTsKICNlbmRpZgotICAgIEZpbmRDbGllbnRC
eUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmllciwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gZGF0YSwgYm9v
bCBoYXNTZWN1cml0eUVycm9yKQogICAgIE1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IG1hdGNo
QWxsUmVxdWVzdElkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4gY2xpZW50c0RhdGEpCiAgICAgU2V0VXNlckFnZW50KFN0cmluZyB1c2VyQWdlbnQpCiAg
ICAgVXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0
b3JlIHN0b3JlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDYwNzhhN2Y2M2RlY2UwMTkyOTFlNzM5NjA5YTdkNDI3ODg4M2Rj
YjMuLjE0MTY0NzllNjk1MGI0OTU5NDY5MzViZTZkMTkxMDM4NTBmYzYxNTcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAyMi0wMS0xMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CisKKyAgICAgICAgTWFrZSBTZXJ2aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0ZWFkIG9m
IGEgc3RyaW5nIGRlcml2ZWQgZnJvbSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwNzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVk
IHRlc3RzIHRvIG5vdCByZWx5IG9uIHZpc2libGUgSUQgdG8gYmUgdGhlIHNlcmlhbGl6YXRpb24g
b2YgYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci4KKyAgICAgICAgRm9yIHRoYXQg
cmVhc29uLCBhZGQgaW50ZXJuYWxzIEFQSSB0byBnZXQgdGhlIGludGVybmFsIElEIGZyb20gYSBT
ZXJ2aWNlV29ya2VyQ2xpZW50LgorCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvY2xpZW50LWFkZGVkLXRvLWNsaWVudHMtd2hlbi1yZXN0b3JlZC1mcm9tLXBhZ2UtY2FjaGUu
aHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9jbGllbnQtcmVtb3Zl
ZC1mcm9tLWNsaWVudHMtd2hpbGUtaW4tcGFnZS1jYWNoZS5odG1sOgorICAgICAgICAqIGh0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9nZXRDbGllbnRJZHMtd29ya2VyLmpzOgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRz
LW1hdGNoQWxsLXdvcmtlci5qczoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2aWNld29ya2VyY2xpZW50cy1tYXRjaEFsbC5odHRwcy5odG1sOgorCiAyMDIyLTAxLTEx
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJv
Y2Vzc10gTWFrZSBTVkcgcmVzb3VyY2VzIGNyZWF0ZSByZW1vdGUgSW1hZ2VCdWZmZXJzIGZvciB0
aGVpciBkcmF3aW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBmNTYyODhlMDQz
ZWRjZjZlNjE0MWE2MGI2NWNiODgyNWIxZDdiOWFhLi4yMDdmMjZkYWMyYTc4ZWQ5MTAwNWYxNzg0
ZTJiNWIzOWRkYzU3Yjc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAyMi0wMS0xMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgTWFrZSBTZXJ2aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0ZWFkIG9mIGEg
c3RyaW5nIGRlcml2ZWQgZnJvbSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwNzAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtZXZlbnQuaHR0
cHMtZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAxLTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBOZXcgc2VydmljZSB3b3JrZXIgQVBJICdGZXRjaEV2ZW50Lmhh
bmRsZWQnIG5lZWRzIHRvIGJlIHN1cHBvcnRlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvY2xpZW50LWFkZGVkLXRvLWNsaWVudHMtd2hlbi1yZXN0
b3JlZC1mcm9tLXBhZ2UtY2FjaGUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vy
cy9zZXJ2aWNlL2NsaWVudC1hZGRlZC10by1jbGllbnRzLXdoZW4tcmVzdG9yZWQtZnJvbS1wYWdl
LWNhY2hlLmh0bWwKaW5kZXggMTA3OTdmMjhlMzRlNWE5NzIyMDg3MDFkMjdmM2FlZmQxNzUxODQ5
Zi4uNmEyMjg0ZWNmMmMzOWYxYjg4ZDY2ZGFiYzJmNWE3YWE2ZTFiMDIyYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvY2xpZW50LWFkZGVkLXRvLWNs
aWVudHMtd2hlbi1yZXN0b3JlZC1mcm9tLXBhZ2UtY2FjaGUuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9jbGllbnQtYWRkZWQtdG8tY2xpZW50cy13aGVu
LXJlc3RvcmVkLWZyb20tcGFnZS1jYWNoZS5odG1sCkBAIC03MCwxMiArNzAsMTIgQEAgbmF2aWdh
dG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2
ZW50KSB7CiB9KTsKIAogbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNl
cy9nZXRDbGllbnRJZHMtd29ya2VyLmpzIiwgeyB9KS50aGVuKGZ1bmN0aW9uKHJlZ2lzdHJhdGlv
bikgewotICAgIGV4cGVjdGVkQ2xpZW50SWRlbnRpZmllcnMucHVzaChpbnRlcm5hbHMuc2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXIoZG9jdW1lbnQpKTsKKyAgICBleHBlY3RlZENsaWVudElk
ZW50aWZpZXJzLnB1c2goaW50ZXJuYWxzLnNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50
aWZpZXIoZG9jdW1lbnQpKTsKIAogICAgIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5n
OwogICAgIG90aGVyV2luZG93ID0gb3Blbigib3RoZXJfcmVzb3VyY2VzL3Rlc3QuaHRtbCIpOwog
ICAgIG90aGVyV2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgICAgZXhwZWN0ZWRDbGll
bnRJZGVudGlmaWVycy5wdXNoKGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
cihvdGhlcldpbmRvdy5kb2N1bWVudCkpOworICAgICAgZXhwZWN0ZWRDbGllbnRJZGVudGlmaWVy
cy5wdXNoKGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKG90
aGVyV2luZG93LmRvY3VtZW50KSk7CiAgICAgICBzdGVwID0gIkJvdGhDbGllbnRzSW5pdGlhbGx5
QWN0aXZlIgogICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJnZXRDbGllbnRJZHMiKTsKICAgICB9
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvY2xp
ZW50LXJlbW92ZWQtZnJvbS1jbGllbnRzLXdoaWxlLWluLXBhZ2UtY2FjaGUuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2NsaWVudC1yZW1vdmVkLWZyb20tY2xp
ZW50cy13aGlsZS1pbi1wYWdlLWNhY2hlLmh0bWwKaW5kZXggZjlmY2Y1ZDM0MmIxM2MwYWRlMWI1
ZWZiYjFhNzQ1YzhjYWI2YTQ3Ny4uNjhhOWZjNjI0OWY1MDUzNTI5NGRmNDM5NzUxYjUzN2RmOGI2
YjA2NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
Y2xpZW50LXJlbW92ZWQtZnJvbS1jbGllbnRzLXdoaWxlLWluLXBhZ2UtY2FjaGUuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9jbGllbnQtcmVtb3ZlZC1m
cm9tLWNsaWVudHMtd2hpbGUtaW4tcGFnZS1jYWNoZS5odG1sCkBAIC02NSwxMiArNjUsMTQgQEAg
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0
aW9uKGV2ZW50KSB7CiB9KTsKIAogbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInJl
c291cmNlcy9nZXRDbGllbnRJZHMtd29ya2VyLmpzIiwgeyB9KS50aGVuKGZ1bmN0aW9uKHJlZ2lz
dHJhdGlvbikgewotICAgIHRvcENsaWVudElkZW50aWZpZXIgPSBpbnRlcm5hbHMuc2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXIoZG9jdW1lbnQpOworICAgIGlmICghd2luZG93LmludGVybmFs
cykKKyAgICAgICAgcmV0dXJuOworICAgIHRvcENsaWVudElkZW50aWZpZXIgPSBpbnRlcm5hbHMu
c2VydmljZVdvcmtlckNsaWVudEludGVybmFsSWRlbnRpZmllcihkb2N1bWVudCk7CiAKICAgICB3
b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKICAgICBvdGhlcldpbmRvdyA9IG9wZW4o
Im90aGVyX3Jlc291cmNlcy90ZXN0Lmh0bWwiKTsKICAgICBvdGhlcldpbmRvdy5vbmxvYWQgPSBm
dW5jdGlvbigpIHsKLSAgICAgIHdpbmRvd0NsaWVudElkZW50aWZpZXIgPSBpbnRlcm5hbHMuc2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXIob3RoZXJXaW5kb3cuZG9jdW1lbnQpOworICAgICAg
d2luZG93Q2xpZW50SWRlbnRpZmllciA9IGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SW50
ZXJuYWxJZGVudGlmaWVyKG90aGVyV2luZG93LmRvY3VtZW50KTsKICAgICAgIHN0ZXAgPSAiQm90
aENsaWVudHNJbml0aWFsbHlBY3RpdmUiCiAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoImdldENs
aWVudElkcyIpOwogICAgIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9yZXNvdXJjZXMvZ2V0Q2xpZW50SWRzLXdvcmtlci5qcyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9nZXRDbGllbnRJZHMtd29y
a2VyLmpzCmluZGV4IDk5ZGMxY2I4MjIxZDBkZjhkZjBjZWVjN2Y1ZmE2YjEwODNkNzNiMTguLmNl
MTliMjRmODA4MDRkYTBmNTUxNzkzYWRhN2FmZTY3ZWZlMDRjYzQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9nZXRDbGllbnRJZHMt
d29ya2VyLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jl
c291cmNlcy9nZXRDbGllbnRJZHMtd29ya2VyLmpzCkBAIC0zLDcgKzMsNyBAQCBzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICBjbGllbnRzLm1hdGNoQWxs
KHsgaW5jbHVkZVVuY29udHJvbGxlZCA6IHRydWUgfSkudGhlbihmdW5jdGlvbihjbGllbnRzKSB7
CiAgICAgICAgIGxldCBpZHMgPSBbXTsKICAgICAgICAgZm9yIChsZXQgY2xpZW50IG9mIGNsaWVu
dHMpCi0gICAgICAgICAgICBpZHMucHVzaChjbGllbnQuaWQpOworICAgICAgICAgICAgaWRzLnB1
c2goc2VsZi5pbnRlcm5hbHMuc2VydmljZVdvcmtlckNsaWVudEludGVybmFsSWRlbnRpZmllcihj
bGllbnQpKTsKICAgICAgICAgc291cmNlLnBvc3RNZXNzYWdlKGlkcyk7CiAgICAgfSk7CiB9KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZp
Y2V3b3JrZXJjbGllbnRzLW1hdGNoQWxsLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLW1hdGNoQWxsLXdvcmtlci5q
cwppbmRleCBiZGJhMjgyODYwNTNmMWZkYWQwMzVkMzkzM2MyODY4MDExNzM2OGMzLi5kYjZmMDU0
ZjY4OTJjZjAyYTY4ZGQ5OTlmYjg4NjhlMjJmM2NjYTcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1tYXRjaEFs
bC13b3JrZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
c2VydmljZXdvcmtlcmNsaWVudHMtbWF0Y2hBbGwtd29ya2VyLmpzCkBAIC0zLDYgKzMsMTUgQEAg
ZnVuY3Rpb24gd2FpdEZvcihkdXJhdGlvbikKICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29s
dmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgZHVyYXRpb24pKTsKIH0KIAorYXN5bmMgZnVuY3Rp
b24gc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXJGcm9tSW50ZXJuYWxJZGVudGlmaWVyKGlu
dGVybmFsSWRlbnRpZmllcikKK3sKKyAgICAgY29uc3QgY2xpZW50cyA9IGF3YWl0IHNlbGYuY2xp
ZW50cy5tYXRjaEFsbCh7IGluY2x1ZGVVbmNvbnRyb2xsZWQgOiB0cnVlIH0pOworICAgICBmb3Ig
KGxldCBjbGllbnQgb2YgY2xpZW50cykgeworICAgICAgICAgaWYgKGludGVybmFscy5zZXJ2aWNl
V29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKGNsaWVudCkgPT0gaW50ZXJuYWxJZGVudGlm
aWVyKQorICAgICAgICAgICAgcmV0dXJuIGNsaWVudC5pZDsKKyAgICAgfQorfQorCiBmdW5jdGlv
biBjaGVja0NsaWVudE5vdEluQ29udHJvbGxlZENsaWVudHMoY2xpZW50SWRlbnRpZmllcikKIHsK
ICAgICByZXR1cm4gc2VsZi5jbGllbnRzLm1hdGNoQWxsKCkudGhlbigoY2xpZW50cykgPT4gewpA
QCAtMzcsNyArNDYsNyBAQCBhc3luYyBmdW5jdGlvbiBkb1Rlc3RBZnRlck1lc3NhZ2UoZXZlbnQp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb25zdCBjbGllbnRJ
ZGVudGlmaWVyID0gZXZlbnQuZGF0YS5pZGVudGlmaWVyOworICAgICAgICBjb25zdCBjbGllbnRJ
ZGVudGlmaWVyID0gYXdhaXQgc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXJGcm9tSW50ZXJu
YWxJZGVudGlmaWVyKGV2ZW50LmRhdGEuaWRlbnRpZmllcik7CiAKICAgICAgICAgbGV0IHJlc3Vs
dCA9IGF3YWl0IGNoZWNrQ2xpZW50Tm90SW5Db250cm9sbGVkQ2xpZW50cyhjbGllbnRJZGVudGlm
aWVyKTsKICAgICAgICAgaWYgKHJlc3VsdCAhPT0gIlBBU1MiKSB7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1t
YXRjaEFsbC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2Uvc2VydmljZXdvcmtlcmNsaWVudHMtbWF0Y2hBbGwuaHR0cHMuaHRtbAppbmRleCAyZTZkYmY5
OTJkMDUyZDlmMWUzZTUxOGRkN2IwZTg1MWVmMjAwMGE3Li42OWI1ZjI4OTAxNmZlNDgwMWJlMWFh
OTAxMmI1ZGI5ZTZkYjQ2ZmEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1tYXRjaEFsbC5odHRwcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJj
bGllbnRzLW1hdGNoQWxsLmh0dHBzLmh0bWwKQEAgLTI3LDcgKzI3LDcgQEAgcHJvbWlzZV90ZXN0
KGFzeW5jICh0ZXN0KSA9PiB7CiB9LCAiU2V0dXAgd29ya2VyIik7CiAKIHByb21pc2VfdGVzdChh
c3luYyAodGVzdCkgPT4gewotICAgIGNvbnN0IHNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
ID0gaW50ZXJuYWxzLnNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKGRvY3VtZW50KTsKKyAg
ICBjb25zdCBzZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciA9IGludGVybmFscy5zZXJ2aWNl
V29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKGRvY3VtZW50KTsKICAgICB2YXIgcHJvbWlz
ZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICAgbmF2aWdhdG9y
LnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHRlc3Quc3RlcF9mdW5j
KChldmVudCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC5kYXRhLCAiUEFT
UyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtZXZlbnQuaHR0cHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtZXZlbnQuaHR0cHMtZXhwZWN0ZWQu
dHh0CmluZGV4IDVkMmI5YTQzMmRhMDM0NWY5MDMwNzdmMDBiNmVmMGE2MGZlZTJkYjQuLmRkMzZl
OWJiYTM0NWI4ZTU2MjMxZWU1MmQ4MmE1MmE5NTJjZThmMjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyL2ZldGNoLWV2ZW50Lmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNl
LXdvcmtlci9mZXRjaC1ldmVudC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTYsNyArNiw3IEBAIFBB
U1MgU2VydmljZSBXb3JrZXIgcmVzcG9uZHMgdG8gZmV0Y2ggZXZlbnQgdXNpbmcgcmVxdWVzdCBm
cmFnbWVudCB3aXRoIHN0cmluZwogUEFTUyBTZXJ2aWNlIFdvcmtlciByZXNwb25kcyB0byBmZXRj
aCBldmVudCB3aXRoIGJsb2IgYm9keQogUEFTUyBTZXJ2aWNlIFdvcmtlciByZXNwb25kcyB0byBm
ZXRjaCBldmVudCB3aXRoIHRoZSByZWZlcnJlciBVUkwKIFBBU1MgU2VydmljZSBXb3JrZXIgcmVz
cG9uZHMgdG8gZmV0Y2ggZXZlbnQgd2l0aCBhbiBleGlzdGluZyBjbGllbnQgaWQKLUZBSUwgU2Vy
dmljZSBXb3JrZXIgcmVzcG9uZHMgdG8gZmV0Y2ggZXZlbnQgd2l0aCB0aGUgY29ycmVjdCByZXN1
bHRpbmcgY2xpZW50IGlkIGFzc2VydF9lcXVhbHM6IFNlcnZpY2UgV29ya2VyIHNob3VsZCByZXNw
b25kIHdpdGggYW4gZW1wdHkgcmVzdWx0aW5nIGNsaWVudCBpZCBmb3Igc3VicmVzb3VyY2UgcmVx
dWVzdHMgZXhwZWN0ZWQgIlJlc3VsdGluZyBDbGllbnQgSUQgTm90IEZvdW5kIiBidXQgZ290ICJS
ZXN1bHRpbmcgQ2xpZW50IElEIEZvdW5kOiB1bmRlZmluZWQiCitQQVNTIFNlcnZpY2UgV29ya2Vy
IHJlc3BvbmRzIHRvIGZldGNoIGV2ZW50IHdpdGggdGhlIGNvcnJlY3QgcmVzdWx0aW5nIGNsaWVu
dCBpZAogUEFTUyBTZXJ2aWNlIFdvcmtlciBkb2VzIG5vdCByZXNwb25kIHRvIGZldGNoIGV2ZW50
CiBQQVNTIFNlcnZpY2UgV29ya2VyIHJlc3BvbmRzIHRvIGZldGNoIGV2ZW50IHdpdGggbnVsbCBy
ZXNwb25zZSBib2R5CiBQQVNTIFNlcnZpY2UgV29ya2VyIGZldGNoZXMgb3RoZXIgZmlsZSBpbiBm
ZXRjaCBldmVudAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449046</attachid>
            <date>2022-01-13 04:38:04 -0800</date>
            <delta_ts>2022-01-13 09:28:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235070-20220113133801.patch</filename>
            <type>text/plain</type>
            <size>84827</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3OTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAwNzkxMWQ1NjQ4ZDYwYWU3MmU0ZGRh
ZWFjNDQ0ZjAxMDNlMjZjNjUuLmFkY2ZiODY0NjNkZjVlYmE4ZjMyMmU3N2QzZjFjMDk3YzQ5OGI0
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDEtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5pZCBhIFVV
SUQgaW5zdGVhZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM1MDcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvVVVJRC5jcHA6CisgICAgICAgICogd3RmL1VVSUQuaDoKKyAgICAgICAgIEFk
ZCByb3V0aW5lIHRvIHN0cmluZ2lmeSBhIFVVSUQuCisgICAgICAgICBBZGQgcm91dGluZSB0byBw
YXJzZSBhIHN0cmluZ2lmaWVkIFVVSUQuCisKIDIwMjEtMTEtMjkgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTZXJpYWxpemUgQ1NTIDxudW1iZXI+IHZh
bHVlcyB3aXRoIHJvdW5kaW5nLCBsaW1pdGVkIGRlY2ltYWwgcHJlY2lzaW9uLCBhbmQgbm8gZXhw
b25lbnRzIHBlci1zcGVjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGJiZWMyNzUxOTAwNzM3NTljN2Q4ZTg4NzU5
YzNmMDFlMzk1NTkyNy4uMTAwMTMxZjYzN2NlZWMzZmVjMDU4ZDY5MTg2ZDc0MjJkZDZhZWQ1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIyLTAxLTEzICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFNlcnZpY2VXb3JrZXJDbGllbnQuaWQg
YSBVVUlEIGluc3RlYWQgb2YgYSBzdHJpbmcgZGVyaXZlZCBmcm9tIGEgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTA3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVwZGF0ZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciB0byBiZSBh
IHByb2Nlc3Mtc2NvcGVkIFVVSUQuCisgICAgICAgIFRoaXMgYWxsb3dzIHRvIGlkZW50aWZ5IHRo
ZSBwcm9jZXNzIHJ1bm5pbmcgYSBwcm9jZXNzIGFzIHdlbGwgYXMgZXhwb3NpbmcgdG8gSmF2YVNj
cmlwdCBjb250ZXh0IGlkZW50aWZpZXJzIGFzIFVVSURzLgorICAgICAgICBUaGlzIGlzIG1hdGNo
aW5nIHdoYXQgQ2hyb21lIGFuZCBGaXJlZm94IGFyZSBkb2luZy4KKyAgICAgICAgTWFrZSBTV1Nl
cnZlciBzdG9yZSB0aGUgbWFwaW5nIGZyb20gY29udGV4dCBVVUlEIHN0cmluZ3MgdG8gdGhlIGlu
dGVybmFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVycy4KKyAgICAgICAgVGhpcyBh
bGxvd3MgdG8gZmluZCBhIFNlcnZpY2VXb3JrZXJDbGllbnQgZGlyZWN0bHkgZnJvbSBpdHMgSmF2
YVNjcmlwdCBleHBvc2VkIGlkZW50aWZpZXIuCisgICAgICAgIFJlbmFtZSByZXNlcnZlZENsaWVu
dElkIGluIHJlc3VsdGluZ0NsaWVudElkIHRvIG1hdGNoIHRoZSBzcGVjLgorCisgICAgICAgIENv
dmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYi1sb2Nrcy9X
ZWJMb2NrUmVnaXN0cnkuY3BwOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAqIHBh
Z2UvbWFjL1BhZ2VNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vUHJvY2Vzc1F1YWxpZmllZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmg6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorICAgICAgICAqIHRl
c3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHA6CisgICAgICAgICogdGVzdGluZy9TZXJ2
aWNlV29ya2VySW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50
ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHA6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvRmV0Y2hFdmVudC5pZGw6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnQuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50LmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudHMuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
RmV0Y2guY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJGZXRjaC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmg6CisKIDIwMjItMDEtMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIE5ldyBzZXJ2aWNlIHdvcmtlciBBUEkgJ0ZldGNoRXZlbnQu
aGFuZGxlZCcgbmVlZHMgdG8gYmUgc3VwcG9ydGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU1NWY4OTk0NDYwMGQ2
YWFmMWRjY2JhYTk5NTVkMWUwZjM1YjkyMGQuLmRmNzExNTNlODQxNWQwZWRkM2I0M2RlMDE1ZDUw
MTk0ZGI3M2IxYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjItMDEtMTMgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgU2VydmljZVdvcmtl
ckNsaWVudC5pZCBhIFVVSUQgaW5zdGVhZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MDcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIGZpbmRCeUNsaWVudElkZW50aWZpZXIgaW50byBm
aW5kQnlWaXNpYmxlQ2xpZW50SWRlbnRpZmllcmFuIGFuZCBtYWtlIGl0IGFzbiBhc3luYyByZXBs
eS4KKyAgICAgICAgVXBkYXRlIGZldGNoIGV2ZW50IGNvZGUgcGF0aCB0byBzZW5kIHRoZSB2aXNp
YmxlIElEcyBvZiB0aGUgRmV0Y2hFdmVudCBmcm9tIG5ldHdvcmsgcHJvY2VzcyB0byB3b3JrZXIg
Y29udGV4dCBwcm9jZXNzLgorICAgICAgICBXZSBzdG9yZSB0aGVzZSBJRHMgaW4gTmV0d29ya1Jl
c291cmNlTG9hZGVyIHNvIHRoYXQgd2UgY2FuIGNoYW5nZSB0aGVtIGluIGNhc2Ugb2YgcmVkaXJl
Y3Rpb24gZm9yIG5hdmlnYXRpb25zLiAKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbjoKKwogMjAyMi0wMS0xMiAgRnLDqWTDqXJpYyBXYW5nICA8ZndhbmdA
aWdhbGlhLmNvbT4KIAogICAgICAgICBQcm90ZWN0IERvY3VtZW50TG9hZGVyIHdoZW4gYSByZWZl
cmVuY2UgdG8gaXRzIG1lbWJlcnMgaXMgdXNlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1VVSUQuY3BwIGIvU291cmNlL1dURi93dGYvVVVJRC5jcHAKaW5kZXggZjFkMDAwY2M4NTVkMzU5
NGUxZjU1ZThlNDQ1M2VlM2I5N2VhYTkxNy4uOWRlMzkyZmY1NWQyYmU2ZGM4YjBkODYzZDI4MDI3
MjQzNDU1MjhlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVVJRC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvVVVJRC5jcHAKQEAgLTUzLDExICs1Myw4IEBAIHVuc2lnbmVkIFVVSUQ6Omhh
c2goKSBjb25zdAogICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnkocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oJm1fZGF0YSksIDE2KTsKIH0KIAotU3RyaW5n
IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKQorc3RhdGljIFN0cmluZyB0b0Nhbm9uaWNhbFVV
SURTdHJpbmcoY29uc3QgdWludDhfdCogcmFuZG9tRGF0YSkKIHsKLSAgICB1bnNpZ25lZCByYW5k
b21EYXRhWzRdOwotICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKHJlaW50ZXJwcmV0
X2Nhc3Q8dW5zaWduZWQgY2hhcio+KHJhbmRvbURhdGEpLCBzaXplb2YocmFuZG9tRGF0YSkpOwot
CiAgICAgLy8gRm9ybWF0IGFzIFZlcnNpb24gNCBVVUlELgogICAgIHJldHVybiBtYWtlU3RyaW5n
KAogICAgICAgICBoZXgocmFuZG9tRGF0YVswXSwgOCwgTG93ZXJjYXNlKSwKQEAgLTc0LDYgKzcx
LDUxIEBAIFN0cmluZyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkKICAgICApOwogfQogCitT
dHJpbmcgVVVJRDo6dG9TdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiB0b0Nhbm9uaWNhbFVV
SURTdHJpbmcodG9TcGFuKCkuZGF0YSgpKTsKK30KKworc3RkOjpvcHRpb25hbDxVVUlEPiBVVUlE
OjpwYXJzZShTdHJpbmdWaWV3IHZhbHVlKQoreworICAgIC8vIFZlcnNpb24gNCBVVUlEcyBoYXZl
IHRoZSBmb3JtIHh4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCB3aXRoIGhleGFk
ZWNpbWFsIGRpZ2l0cyBmb3IgeCBhbmQgb25lIG9mIDgsIDksIEEsIG9yIEIgZm9yIHkuCisgICAg
aWYgKHZhbHVlLmxlbmd0aCgpICE9IDM2KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVUlu
dDEyOEltcGwgdXVpZFZhbHVlOworICAgIGF1dG8qIGRhdGEgPSByZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPigmdXVpZFZhbHVlKTsKKyAgICAKKyAgICBzaXplX3QgY291bnRlciA9IDA7CisgICAg
Zm9yIChhdXRvIGNwdHIgPSAwOyBjcHRyIDwgMzY7ICsrY3B0cikgeworICAgICAgICBhdXRvIHkg
PSB2YWx1ZVtjcHRyXTsKKyAgICAgICAgaWYgKGNwdHIgPT0gOCB8fCBjcHRyID09IDEzIHx8IGNw
dHIgPT0gMTggfHwgY3B0ciA9PSAyMykgeworICAgICAgICAgICAgaWYgKHkhPSAnLScpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisgICAgICAgIGlmIChjcHRyID09IDE0KSB7CisgICAgICAgICAgICBpZiAoeSAhPSAnNCcpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisgICAgICAgIGlmIChjcHRyID09IDE5KSB7CisgICAgICAgICAgICBpZiAoeSAhPSAnOCcg
JiYgeSAhPSAnOScgJiYgeSAhPSAnYScgJiYgeSAhPSAnQScgJiYgeSAhPSAnYicgJiYgeSAhPSAn
QicpCisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CisgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KHkpKQorICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgICAgICBkYXRhW2NvdW50ZXIrK10gPSB5ID4gJzknID8gKDEwICsg
dG9BU0NJSUxvd2VyVW5jaGVja2VkKHkpIC0gJ2EnKSA6IHkgLSAnMCc7CisgICAgfQorICAgIHJl
dHVybiBVVUlEKFdURk1vdmUodXVpZFZhbHVlKSk7Cit9CisKK1N0cmluZyBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCkKK3sKKyAgICByZXR1cm4gVVVJRDo6Y3JlYXRlKCkudG9TdHJpbmcoKTsK
K30KKwogU3RyaW5nIGJvb3RTZXNzaW9uVVVJRFN0cmluZygpCiB7CiAjaWYgT1MoREFSV0lOKQpA
QCAtOTUsMzEgKzEzNyw3IEBAIFN0cmluZyBib290U2Vzc2lvblVVSURTdHJpbmcoKQogCiBib29s
IGlzVmVyc2lvbjRVVUlEKFN0cmluZ1ZpZXcgdmFsdWUpCiB7Ci0gICAgLy8gVmVyc2lvbiA0IFVV
SURzIGhhdmUgdGhlIGZvcm0geHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4IHdp
dGggaGV4YWRlY2ltYWwgZGlnaXRzIGZvciB4IGFuZCBvbmUgb2YgOCwgOSwgQSwgb3IgQiBmb3Ig
eS4KLSAgICBpZiAodmFsdWUubGVuZ3RoKCkgIT0gMzYpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGZvciAoYXV0byBjcHRyID0gMDsgY3B0ciA8IDM2OyArK2NwdHIpIHsKLSAgICAgICAg
aWYgKGNwdHIgPT0gOCB8fCBjcHRyID09IDEzIHx8IGNwdHIgPT0gMTggfHwgY3B0ciA9PSAyMykg
ewotICAgICAgICAgICAgaWYgKHZhbHVlW2NwdHJdICE9ICctJykKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBp
ZiAoY3B0ciA9PSAxNCkgewotICAgICAgICAgICAgaWYgKHZhbHVlW2NwdHJdICE9ICc0JykKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgfQotICAgICAgICBpZiAoY3B0ciA9PSAxOSkgewotICAgICAgICAgICAgYXV0byB5ID0gdmFs
dWVbY3B0cl07Ci0gICAgICAgICAgICBpZiAoeSAhPSAnOCcgJiYgeSAhPSAnOScgJiYgeSAhPSAn
YScgJiYgeSAhPSAnQScgJiYgeSAhPSAnYicgJiYgeSAhPSAnQicpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKCFpc0FTQ0lJSGV4RGlnaXQodmFsdWVbY3B0cl0pKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gISFVVUlEOjpwYXJzZSh2
YWx1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvVVVJRC5oIGIvU291cmNlL1dURi93dGYvVVVJRC5oCmluZGV4IDU4YTUyNGE2NGQzNmE2MzEx
MDRlZmExMmRjOGNlNmRhMjM2Y2ZkMGYuLjJkODQyZDI5MzNjOGEzODA0NjE1ZGMwMDAwMTk0MWZh
Y2MwMzJlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9VVUlELmgKQEAgLTQ1LDYgKzQ1LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
VVVJRCB7IH07CiAgICAgfQogCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFVVSUQ+IHBhcnNlKFN0cmluZ1ZpZXcpOworCiAgICAgZXhwbGljaXQgVVVJRChTcGFu
PGNvbnN0IHVpbnQ4X3QsIDE2PiBzcGFuKQogICAgIHsKICAgICAgICAgbWVtY3B5KCZtX2RhdGEs
IHNwYW4uZGF0YSgpLCAxNik7CkBAIC04MCw2ICs4Miw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEgPT0gMTsgfQog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBVVUlEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYi1sb2Nrcy9XZWJMb2NrUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWItbG9ja3MvV2ViTG9ja1JlZ2lzdHJ5LmNwcAppbmRleCBmNTUwNzgwYTgxZDYyNGYzMWQw
ZTE4MzM5M2U1NTE0MzUzNDBhMWMyLi44ZjdjYzI2NmMwYzMzYjBiMzkzNzUwMTUzNmY5YzQwN2Fi
Y2E3ZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYi1sb2Nrcy9XZWJM
b2NrUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViLWxvY2tzL1dl
YkxvY2tSZWdpc3RyeS5jcHAKQEAgLTIzNiwxMSArMjM2LDExIEBAIHZvaWQgTG9jYWxXZWJMb2Nr
UmVnaXN0cnk6OlBlck9yaWdpblJlZ2lzdHJ5OjpzbmFwc2hvdChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlCiAgICAgV2ViTG9ja01hbmFnZXI6OlNuYXBzaG90IHNuYXBzaG90OwogICAgIGZvciAo
YXV0byYgcGFpciA6IG1fbG9ja1JlcXVlc3RRdWV1ZU1hcCkgewogICAgICAgICBmb3IgKGF1dG8m
IHJlcXVlc3QgOiBwYWlyLnZhbHVlKQotICAgICAgICAgICAgc25hcHNob3QucGVuZGluZy5hcHBl
bmQoeyBwYWlyLmtleSwgcmVxdWVzdC5tb2RlLCByZXF1ZXN0LmNsaWVudElELnRvU3RyaW5nKCkg
fSk7CisgICAgICAgICAgICBzbmFwc2hvdC5wZW5kaW5nLmFwcGVuZCh7IHBhaXIua2V5LCByZXF1
ZXN0Lm1vZGUsIHJlcXVlc3QuY2xpZW50SUQudG9WaXNpYmxlU3RyaW5nKCkgfSk7CiAgICAgfQog
ICAgIGZvciAoYXV0byYgcGFpciA6IG1faGVsZExvY2tzKSB7CiAgICAgICAgIGZvciAoYXV0byYg
bG9ja0luZm8gOiBwYWlyLnZhbHVlKQotICAgICAgICAgICAgc25hcHNob3QuaGVsZC5hcHBlbmQo
eyBwYWlyLmtleSwgbG9ja0luZm8ubW9kZSwgbG9ja0luZm8uY2xpZW50SUQudG9TdHJpbmcoKSB9
KTsKKyAgICAgICAgICAgIHNuYXBzaG90LmhlbGQuYXBwZW5kKHsgcGFpci5rZXksIGxvY2tJbmZv
Lm1vZGUsIGxvY2tJbmZvLmNsaWVudElELnRvVmlzaWJsZVN0cmluZygpIH0pOwogICAgIH0KIAog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc25hcHNob3QpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA0NjFiOTk3OGFkOWI3ZTE1
N2E0OTFjMDdlM2M5ZTcwYWY0MjFkZDg1Li4yOWRjZWVmNTMzM2Y2OWRmMmU1ZjMwZWRlZmRkNjEz
NTc3ZmU2NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogfTsKIAogU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCi0gICAgOiBtX2lkZW50aWZpZXIoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpKQorICAg
IDogbV9pZGVudGlmaWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpKQogewogICAgIExvY2tlciBsb2NrZXIgeyBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01h
cExvY2sgfTsKICAgICBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmFkZChtX2lkZW50
aWZpZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5k
ZXggMzJjODhiNWQzNmRiMDczODliN2ZjNjAzODRhZTJjNjcxYzgxODA5MS4uZWY3NjNiNzkxMjkz
NDk4ODVlNmZlNGZhZTkzMWQ2YzJhODY4MTFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCkBAIC0yMDk1LDcgKzIwOTUsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVy
Ojpsb2FkTWFpblJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIGlmICghbV90ZW1wb3JhcnlTZXJ2aWNlV29ya2VyQ2xpZW50
KSB7CiAgICAgICAgIC8vIFRoZSBtYWluIG5hdmlnYXRpb24gbG9hZCB3aWxsIHRyaWdnZXIgdGhl
IHJlZ2lzdHJhdGlvbiBvZiB0aGUgdGVtcCBjbGllbnQuCi0gICAgICAgIG1fdGVtcG9yYXJ5U2Vy
dmljZVdvcmtlckNsaWVudCA9IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyOjpnZW5l
cmF0ZVRocmVhZFNhZmUoKTsKKyAgICAgICAgbV90ZW1wb3JhcnlTZXJ2aWNlV29ya2VyQ2xpZW50
ID0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgICAg
IEFTU0VSVCghdGVtcG9yYXJ5SWRlbnRpZmllclRvTG9hZGVyTWFwKCkuY29udGFpbnMoKm1fdGVt
cG9yYXJ5U2VydmljZVdvcmtlckNsaWVudCkpOwogICAgICAgICB0ZW1wb3JhcnlJZGVudGlmaWVy
VG9Mb2FkZXJNYXAoKS5hZGQoKm1fdGVtcG9yYXJ5U2VydmljZVdvcmtlckNsaWVudCwgdGhpcyk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KaW5kZXggN2FjZDU5N2FmYzgwNzc5
OGJhZjIwNDg5ODY3ZDI2MjZlYjc4MjRhMS4uODIwNThhZmJhMjNhMWQyZTg2NDgxNmE3N2QwZDc3
NzNhYWNkMmVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCkBAIC04MSw3ICs4MSw3
IEBAIHZvaWQgUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICAgICAgICAgIFdURkxvZ0Fs
d2F5cygiJXUgbGl2ZSBkb2N1bWVudHM6IiwgRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpLnNpemUo
KSk7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFs
bERvY3VtZW50cygpKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZG9jdW1lbnRUeXBl
ID0gaXM8U1ZHRG9jdW1lbnQ+KGRvY3VtZW50KSA/ICJTVkdEb2N1bWVudCIgOiAiRG9jdW1lbnQi
OwotICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXMgJXAgJXMgKHJlZkNvdW50ICVkLCBy
ZWZlcmVuY2luZ05vZGVDb3VudCAlZCkgJXMiLCBkb2N1bWVudFR5cGUsIGRvY3VtZW50LCBkb2N1
bWVudC0+aWRlbnRpZmllcigpLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgZG9jdW1lbnQtPnJl
ZkNvdW50KCksIGRvY3VtZW50LT5yZWZlcmVuY2luZ05vZGVDb3VudCgpLCBkb2N1bWVudC0+dXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlz
KCIlcyAlcCAlcyAocmVmQ291bnQgJWQsIHJlZmVyZW5jaW5nTm9kZUNvdW50ICVkKSAlcyIsIGRv
Y3VtZW50VHlwZSwgZG9jdW1lbnQsIGRvY3VtZW50LT5pZGVudGlmaWVyKCkudG9EZWJ1Z1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksIGRvY3VtZW50LT5yZWZDb3VudCgpLCBkb2N1bWVudC0+cmVmZXJl
bmNpbmdOb2RlQ291bnQoKSwgZG9jdW1lbnQtPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Byb2Nlc3NRdWFsaWZpZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Byb2Nlc3NRdWFsaWZpZWQuaAppbmRleCAyODVhNDI1NTM5MmNhN2RlZTY5OGYxY2Jh
NzMzMTJjYTliMjNiYTJiLi5hZTk4NzIzMmZhYjU4NjkyNWFlMGNiMTUyZGYxOTNmYjM2M2MyYmEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9jZXNzUXVhbGlmaWVkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvY2Vzc1F1YWxpZmllZC5oCkBAIC02OSw2
ICs2OSwxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9vYmplY3Q7CiAgICAg
fQorICAgIGNvbnN0IFQmIG9iamVjdEhhc2goKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fb2JqZWN0OworICAgIH0KIAogICAgIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlm
aWVyKCkgY29uc3QKICAgICB7CkBAIC05Myw3ICs5Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBQcm9jZXNzUXVhbGlmaWVkIGdlbmVyYXRlVGhyZWFkU2FmZSgpIHsgcmV0dXJuIHsgVDo6Z2Vu
ZXJhdGVUaHJlYWRTYWZlKCksIFByb2Nlc3M6OmlkZW50aWZpZXIoKSB9OyB9CiAgICAgc3RhdGlj
IFByb2Nlc3NRdWFsaWZpZWQgZ2VuZXJhdGUoKSB7IHJldHVybiB7IFQ6OmdlbmVyYXRlKCksIFBy
b2Nlc3M6OmlkZW50aWZpZXIoKSB9OyB9Ci0gICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbWFrZVN0cmluZyhtX3Byb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCksICctJywgbV9v
YmplY3QudG9VSW50NjQoKSk7IH0KKyAgICBTdHJpbmcgdG9EZWJ1Z1N0cmluZygpIGNvbnN0IHsg
cmV0dXJuIG1ha2VTdHJpbmcobV9wcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpLCAnLScsIG1f
b2JqZWN0LnRvVUludDY0KCkpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdCB7IGVuY29kZXIgPDwgbV9vYmplY3Qg
PDwgbV9wcm9jZXNzSWRlbnRpZmllcjsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NRdWFsaWZpZWQ+IGRlY29kZShEZWNvZGVyJik7
CkBAIC0xMjAsMTQgKzEyNCwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9w
dGlvbmFsPFByb2Nlc3NRdWFsaWZpZWQ8VD4+IFByb2Nlc3NRdWFsaWZpZWQ8VAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiBpbmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgUHJvY2Vzc1F1YWxpZmllZDxUPiYgcHJvY2Vzc1F1YWxpZmllZCkKIHsKLSAgICB0
cyA8PCAiUHJvY2Vzc1F1YWxpZmllZCgiIDw8IHByb2Nlc3NRdWFsaWZpZWQub2JqZWN0KCkgPDwg
IiwgIiA8PCBwcm9jZXNzUXVhbGlmaWVkLnByb2Nlc3NJZGVudGlmaWVyKCkgPDwgJyknOworICAg
IHRzIDw8ICJQcm9jZXNzUXVhbGlmaWVkKCIgPDwgcHJvY2Vzc1F1YWxpZmllZC50b0RlYnVnU3Ry
aW5nKCkgPDwgJyknOwogICAgIHJldHVybiB0czsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiBpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IFByb2Nlc3NRdWFsaWZpZWQ8
VD4mIHByb2Nlc3NRdWFsaWZpZWQpCiB7Ci0gICAgYWRkKGhhc2hlciwgcHJvY2Vzc1F1YWxpZmll
ZC5vYmplY3QoKSk7CisgICAgYWRkKGhhc2hlciwgcHJvY2Vzc1F1YWxpZmllZC5vYmplY3RIYXNo
KCkpOwogICAgIGFkZChoYXNoZXIsIHByb2Nlc3NRdWFsaWZpZWQucHJvY2Vzc0lkZW50aWZpZXIo
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oCmluZGV4IGUzNmY0MjI4MzAxNzkxZmNlM2UzNzhi
ZjA2MTE1NTViNjk5Y2I3OWEuLjM1Y2I4M2EyNzg2NzZiNTI2Y2Y4YjcxMTEyZGU2MDU2YWJjMjU3
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXIuaApAQCAtMjcsMTAgKzI3LDk4IEBACiAKICNpbmNsdWRl
ICJQcm9jZXNzUXVhbGlmaWVkLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvVVVJRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gU2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXJUeXBlIHsgfTsKLXVzaW5nIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyID0gUHJvY2Vzc1F1YWxpZmllZDxPYmplY3RJZGVudGlmaWVyPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyVHlwZT4+OwordGVtcGxhdGUgPD4KK2NsYXNzIFByb2Nl
c3NRdWFsaWZpZWQ8VVVJRD4geworcHVibGljOgorICAgIFByb2Nlc3NRdWFsaWZpZWQoKQorICAg
ICAgICA6IG1fb2JqZWN0KFdURjo6VUludDEyOEltcGwoMCkpCisgICAgeworICAgIH0KKworICAg
IFByb2Nlc3NRdWFsaWZpZWQoVVVJRCYmIG9iamVjdCwgUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vz
c0lkZW50aWZpZXIpCisgICAgICAgIDogbV9vYmplY3QoV1RGTW92ZShvYmplY3QpKQorICAgICAg
ICAsIG1fcHJvY2Vzc0lkZW50aWZpZXIocHJvY2Vzc0lkZW50aWZpZXIpCisgICAgeworICAgIH0K
KworICAgIFByb2Nlc3NRdWFsaWZpZWQoY29uc3QgVVVJRCYgb2JqZWN0LCBQcm9jZXNzSWRlbnRp
ZmllciBwcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgOiBtX29iamVjdChvYmplY3QpCisgICAg
ICAgICwgbV9wcm9jZXNzSWRlbnRpZmllcihwcm9jZXNzSWRlbnRpZmllcikKKyAgICB7CisgICAg
fQorCisgICAgUHJvY2Vzc1F1YWxpZmllZChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUp
CisgICAgICAgIDogbV9vYmplY3QoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCisgICAgICAg
ICwgbV9wcm9jZXNzSWRlbnRpZmllcihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKKyAgICB7
CisgICAgfQorCisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gISFtX3Byb2Nlc3NJZGVudGlmaWVyOworICAgIH0KKworICAgIGNvbnN0IFVVSUQmIG9iamVj
dCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vYmplY3Q7CisgICAgfQorCisgICAg
dW5zaWduZWQgb2JqZWN0SGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vYmpl
Y3QuaGFzaCgpOworICAgIH0KKworICAgIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlm
aWVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Byb2Nlc3NJZGVudGlmaWVyOwor
ICAgIH0KKworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fcHJvY2Vzc0lkZW50aWZpZXIuaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHJvY2Vzc1F1YWxpZmll
ZCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vYmplY3QgPT0gb3RoZXIu
bV9vYmplY3QKKyAgICAgICAgICAgICYmIG1fcHJvY2Vzc0lkZW50aWZpZXIgPT0gb3RoZXIubV9w
cm9jZXNzSWRlbnRpZmllcjsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJv
Y2Vzc1F1YWxpZmllZCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7CisgICAgfQorCisgICAgc3RhdGljIFByb2Nlc3NRdWFsaWZpZWQgZ2VuZXJh
dGUoKSB7IHJldHVybiB7IFVVSUQ6OmNyZWF0ZSgpLCBQcm9jZXNzOjppZGVudGlmaWVyKCkgfTsg
fQorICAgIFN0cmluZyB0b0RlYnVnU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbWFrZVN0cmluZyht
X3Byb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCksICctJywgbV9vYmplY3QudG9TdHJpbmcoKSk7
IH0KKyAgICBTdHJpbmcgdG9WaXNpYmxlU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3Qu
dG9TdHJpbmcoKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QgeyBlbmNvZGVyIDw8IG1fb2JqZWN0IDw8IG1fcHJv
Y2Vzc0lkZW50aWZpZXI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxQcm9jZXNzUXVhbGlmaWVkPiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2
YXRlOgorICAgIFVVSUQgbV9vYmplY3Q7CisgICAgUHJvY2Vzc0lkZW50aWZpZXIgbV9wcm9jZXNz
SWRlbnRpZmllcjsKK307CisKKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RkOjpvcHRp
b25hbDxQcm9jZXNzUXVhbGlmaWVkPFVVSUQ+PiBQcm9jZXNzUXVhbGlmaWVkPFVVSUQ+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFVVSUQ+IG9iamVjdDsK
KyAgICBkZWNvZGVyID4+IG9iamVjdDsKKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBwcm9j
ZXNzSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHByb2Nlc3NJZGVudGlmaWVyOworICAgIGlm
ICghcHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHsgeyAqb2JqZWN0LCAqcHJvY2Vzc0lkZW50aWZpZXIgfSB9OworfQorCit1c2luZyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciA9IFByb2Nlc3NRdWFsaWZpZWQ8VVVJRD47
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAzNWE2NmUwOTVlNzVh
MTM0NzljN2IxYzU2MmNlMTE5MWFiMWVlMTk0Li4xMzk4ZjVkZGFkZWQxMzcwZGFjZmQwZmM3YWRh
OGU5MzM1NWRhN2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yNzYy
LDE0ICsyNzYyLDE2IEBAIHVuc2lnbmVkIEludGVybmFsczo6bnVtYmVyT2ZSZXNpemVPYnNlcnZl
cnMoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudC5u
dW1iZXJPZlJlc2l6ZU9ic2VydmVycygpOwogfQogCi11aW50NjRfdCBJbnRlcm5hbHM6OmRvY3Vt
ZW50SWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CitTdHJpbmcgSW50
ZXJuYWxzOjpkb2N1bWVudElkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25z
dAogewotICAgIHJldHVybiBkb2N1bWVudC5pZGVudGlmaWVyKCkub2JqZWN0KCkudG9VSW50NjQo
KTsKKyAgICByZXR1cm4gZG9jdW1lbnQuaWRlbnRpZmllcigpLm9iamVjdCgpLnRvU3RyaW5nKCk7
CiB9CiAKLWJvb2wgSW50ZXJuYWxzOjppc0RvY3VtZW50QWxpdmUodWludDY0X3QgZG9jdW1lbnRJ
ZGVudGlmaWVyKSBjb25zdAorYm9vbCBJbnRlcm5hbHM6OmlzRG9jdW1lbnRBbGl2ZShjb25zdCBT
dHJpbmcmIGRvY3VtZW50SWRlbnRpZmllcikgY29uc3QKIHsKLSAgICByZXR1cm4gRG9jdW1lbnQ6
OmFsbERvY3VtZW50c01hcCgpLmNvbnRhaW5zKHsgbWFrZU9iamVjdElkZW50aWZpZXI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXJUeXBlPihkb2N1bWVudElkZW50aWZpZXIpLCBQcm9j
ZXNzOjppZGVudGlmaWVyKCkgfSk7CisgICAgYXV0byB1dWlkID0gVVVJRDo6cGFyc2UoZG9jdW1l
bnRJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQodXVpZCk7CisgICAgcmV0dXJuIHV1aWQgPyBEb2N1
bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuY29udGFpbnMoeyAqdXVpZCwgUHJvY2Vzczo6aWRlbnRp
ZmllcigpIH0pIDogZmFsc2U7CiB9CiAKIHVpbnQ2NF90IEludGVybmFsczo6c3RvcmFnZUFyZWFN
YXBDb3VudCgpIGNvbnN0CkBAIC0yODA4LDkgKzI4MTAsOSBAQCBib29sIEludGVybmFsczo6aXNB
bnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdvcmtsZXRHbG9i
YWxTY29wZTo6bnVtYmVyT2ZXb3JrbGV0R2xvYmFsU2NvcGVzKCk7CiB9CiAKLVN0cmluZyBJbnRl
cm5hbHM6OnNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCkgY29uc3QKK1N0cmluZyBJbnRlcm5hbHM6OnNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5h
bElkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogewotICAgIHJldHVy
biBkb2N1bWVudC5pZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQu
aWRlbnRpZmllcigpLnRvRGVidWdTdHJpbmcoKTsKIH0KIAogUmVmUHRyPFdpbmRvd1Byb3h5PiBJ
bnRlcm5hbHM6Om9wZW5EdW1teUluc3BlY3RvckZyb250ZW5kKGNvbnN0IFN0cmluZyYgdXJsKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggODhkMWY5ZmM2N2RhMGMzYzU4Nzk2NTk2
OTVjNzRkZDU3MmJkOTFhNi4uZmYxY2VmOTZkNzg0YmFhMGVlZTUxMDUxNTk4NWNiYWRkOTczNDhm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC00OTAsOCArNDkwLDggQEAgcHVi
bGljOgogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZSZXNpemVPYnNlcnZlcnMoY29uc3QgRG9jdW1l
bnQmKSBjb25zdDsKIAotICAgIHVpbnQ2NF90IGRvY3VtZW50SWRlbnRpZmllcihjb25zdCBEb2N1
bWVudCYpIGNvbnN0OwotICAgIGJvb2wgaXNEb2N1bWVudEFsaXZlKHVpbnQ2NF90IGRvY3VtZW50
SWRlbnRpZmllcikgY29uc3Q7CisgICAgU3RyaW5nIGRvY3VtZW50SWRlbnRpZmllcihjb25zdCBE
b2N1bWVudCYpIGNvbnN0OworICAgIGJvb2wgaXNEb2N1bWVudEFsaXZlKGNvbnN0IFN0cmluZyYg
ZG9jdW1lbnRJZGVudGlmaWVyKSBjb25zdDsKIAogICAgIHVpbnQ2NF90IHN0b3JhZ2VBcmVhTWFw
Q291bnQoKSBjb25zdDsKIApAQCAtNTAzLDcgKzUwMyw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aXNBbnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgpIGNvbnN0OwogCi0gICAgU3RyaW5nIHNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKGNvbnN0IERvY3VtZW50JikgY29uc3Q7CisgICAgU3Ry
aW5nIHNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQm
KSBjb25zdDsKIAogICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gb3BlbkR1bW15SW5zcGVjdG9yRnJv
bnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgY2xvc2VEdW1teUluc3BlY3RvckZy
b250ZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggZjlhNWJiODIw
OTYwYzQwYWQyNDNmZTdkMjIwZTFlYTczYWViOTI0NS4uZWQ0NDMxOWY1NWJkYjAyMmJlOGIxM2Uw
MzkwNDVjMWMyOGM4ZjIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAt
OTIwLDggKzkyMCw4IEBAIHR5cGVkZWYgKEZldGNoUmVxdWVzdCBvciBGZXRjaFJlc3BvbnNlKSBG
ZXRjaE9iamVjdDsKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSBib29sZWFuIGlzTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKCk7CiAgICAgW0NvbmRpdGlvbmFsPU1F
RElBX1NUUkVBTV0gYm9vbGVhbiBzaG91bGRBdWRpb1RyYWNrUGxheShBdWRpb1RyYWNrIHRyYWNr
KTsKIAotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBkb2N1bWVudElkZW50aWZpZXIoRG9jdW1lbnQg
ZG9jdW1lbnQpOwotICAgIGJvb2xlYW4gaXNEb2N1bWVudEFsaXZlKHVuc2lnbmVkIGxvbmcgbG9u
ZyBkb2N1bWVudElkZW50aWZpZXIpOworICAgIERPTVN0cmluZyBkb2N1bWVudElkZW50aWZpZXIo
RG9jdW1lbnQgZG9jdW1lbnQpOworICAgIGJvb2xlYW4gaXNEb2N1bWVudEFsaXZlKERPTVN0cmlu
ZyBkb2N1bWVudElkZW50aWZpZXIpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IGxvbmcgbG9uZyBzdG9yYWdlQXJlYU1hcENvdW50OwogCkBAIC05MzMsNyArOTMzLDcgQEAgdHlw
ZWRlZiAoRmV0Y2hSZXF1ZXN0IG9yIEZldGNoUmVzcG9uc2UpIEZldGNoT2JqZWN0OwogICAgIGJv
b2xlYW4gaXNBbnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgpOwogCiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgcHJvY2Vzc0lkZW50aWZpZXI7Ci0gICAgRE9NU3RyaW5nIHNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyKERvY3VtZW50IGRvY3VtZW50KTsKKyAgICBET01TdHJpbmcgc2Vy
dmljZVdvcmtlckNsaWVudEludGVybmFsSWRlbnRpZmllcihEb2N1bWVudCBkb2N1bWVudCk7CiAg
ICAgUHJvbWlzZTx1bmRlZmluZWQ+IHN0b3JlUmVnaXN0cmF0aW9uc09uRGlzaygpOwogICAgIFBy
b21pc2U8ZG91YmxlPiBzZW5kSDJQaW5nKERPTVN0cmluZyB1cmwpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcAppbmRleCBmOGQ2Yzdh
YWIyMGRkODI5NDlmMzdhYjkxNTBlODk1ZDc1YzU5ZTQwLi5mMzQ0Y2RjMTM4MGI2OTY2ZDQ4NzAy
Mzg0MDA4Mzk2OWFmNDllZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1Nl
cnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2Vy
dmljZVdvcmtlckludGVybmFscy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJQdXNo
U3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCIKICNpbmNs
dWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudC5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYv
UHJvY2Vzc0lELmg+CiAKQEAgLTE5Myw2ICsxOTQsMTEgQEAgYm9vbCBTZXJ2aWNlV29ya2VySW50
ZXJuYWxzOjpmZXRjaEV2ZW50SXNTYW1lU2l0ZShGZXRjaEV2ZW50JiBldmVudCkKICAgICByZXR1
cm4gZXZlbnQucmVxdWVzdCgpLmludGVybmFsUmVxdWVzdCgpLmlzU2FtZVNpdGUoKTsKIH0KIAor
U3RyaW5nIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OnNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5h
bElkZW50aWZpZXIoY29uc3QgU2VydmljZVdvcmtlckNsaWVudCYgY2xpZW50KQoreworICAgIHJl
dHVybiBjbGllbnQuaWRlbnRpZmllcigpLnRvRGVidWdTdHJpbmcoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvU2VydmljZVdvcmtlckludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2
aWNlV29ya2VySW50ZXJuYWxzLmgKaW5kZXggYmE2NzJkNTJmYjE1YWM3MmUxMDY4ZDdkNzI1ZjQ1
MTNmN2QwNzg5Mi4uZjU1NjdhOGUwYjZlMDdiYmY3NDk0MDMxM2E5YTRjMjc2NjkwM2EyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmgKQEAg
LTQwLDYgKzQwLDcgQEAgY2xhc3MgRmV0Y2hFdmVudDsKIGNsYXNzIEZldGNoUmVzcG9uc2U7CiBj
bGFzcyBQdXNoU3Vic2NyaXB0aW9uOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2Ns
YXNzIFNlcnZpY2VXb3JrZXJDbGllbnQ7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNs
YXNzIERPTVByb21pc2VEZWZlcnJlZDsKIApAQCAtNzEsNiArNzIsOCBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGZldGNoRXZlbnRJc1NhbWVTaXRlKEZldGNoRXZlbnQmKTsKIAorICAgIFN0cmluZyBz
ZXJ2aWNlV29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKGNvbnN0IFNlcnZpY2VXb3JrZXJD
bGllbnQmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTZXJ2aWNlV29ya2VySW50ZXJuYWxz
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKaW5kZXggNThmZWRjMTBkZWFhOWRkYzgyMjk5
ZmQ4YzVkMWU1NDY4Nzg1MDUxZi4uOWUzZGQ2ODVkMmE1OTIwYTQ2NmRlOGJmYzk5OTAwZmRkMzhl
YmFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50
ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRl
cm5hbHMuaWRsCkBAIC01MSw0ICs1MSw2IEBACiAgICAgUHVzaFN1YnNjcmlwdGlvbiBjcmVhdGVQ
dXNoU3Vic2NyaXB0aW9uKFVTVlN0cmluZyBlbmRwb2ludCwgRXBvY2hUaW1lU3RhbXA/IGV4cGly
YXRpb25UaW1lLCBBcnJheUJ1ZmZlciBzZXJ2ZXJWQVBJRFB1YmxpY0tleSwgQXJyYXlCdWZmZXIg
Y2xpZW50RUNESFB1YmxpY0tleSwgQXJyYXlCdWZmZXIgYXV0aCk7CiAKICAgICBib29sZWFuIGZl
dGNoRXZlbnRJc1NhbWVTaXRlKEZldGNoRXZlbnQgZXZlbnQpOworCisgICAgRE9NU3RyaW5nIHNl
cnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIoU2VydmljZVdvcmtlckNsaWVudCBj
bGllbnQpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9G
ZXRjaEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50
LmNwcAppbmRleCA0N2JlMmFlMDJjYjNlZDQ2N2JhN2Y5ZmE4ZTQ2YWRkYjQzOGJmODcxLi41NWQz
MzA3YTQ0MDlkN2M2YWJmODg1ODc4ODQ5YmI1ZjljYzE3OTRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIEZldGNo
RXZlbnQ6OkZldGNoRXZlbnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBjb25z
dCBBdG9tU3RyaW5nJiB0eXBlCiAgICAgOiBFeHRlbmRhYmxlRXZlbnQodHlwZSwgaW5pdGlhbGl6
ZXIsIGlzVHJ1c3RlZCkKICAgICAsIG1fcmVxdWVzdChpbml0aWFsaXplci5yZXF1ZXN0LnJlbGVh
c2VOb25OdWxsKCkpCiAgICAgLCBtX2NsaWVudElkKFdURk1vdmUoaW5pdGlhbGl6ZXIuY2xpZW50
SWQpKQotICAgICwgbV9yZXNlcnZlZENsaWVudElkKFdURk1vdmUoaW5pdGlhbGl6ZXIucmVzZXJ2
ZWRDbGllbnRJZCkpCisgICAgLCBtX3Jlc3VsdGluZ0NsaWVudElkKFdURk1vdmUoaW5pdGlhbGl6
ZXIucmVzdWx0aW5nQ2xpZW50SWQpKQogICAgICwgbV90YXJnZXRDbGllbnRJZChXVEZNb3ZlKGlu
aXRpYWxpemVyLnRhcmdldENsaWVudElkKSkKICAgICAsIG1faGFuZGxlZChyZXRyaWV2ZUhhbmRs
ZWRQcm9taXNlKGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbml0aWFsaXplci5oYW5kbGVkKSkpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaAppbmRleCAxY2Q0
NjE2ZWYzNDQ1M2VjY2JlYmYwYzYxYjY0ZTZkOGI1ODkwNzA1Li5jNTNmZDU2YTlmZTgyOTNmNzg3
MTkxODY2YmU2NGQ5NWE2YjBlMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvRmV0Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9GZXRjaEV2ZW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBJbml0
IDogRXh0ZW5kYWJsZUV2ZW50SW5pdCB7CiAgICAgICAgIFJlZlB0cjxGZXRjaFJlcXVlc3Q+IHJl
cXVlc3Q7CiAgICAgICAgIFN0cmluZyBjbGllbnRJZDsKLSAgICAgICAgU3RyaW5nIHJlc2VydmVk
Q2xpZW50SWQ7CisgICAgICAgIFN0cmluZyByZXN1bHRpbmdDbGllbnRJZDsKICAgICAgICAgU3Ry
aW5nIHRhcmdldENsaWVudElkOwogICAgICAgICBSZWZQdHI8RE9NUHJvbWlzZT4gaGFuZGxlZDsK
ICAgICB9OwpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAKICAgICBGZXRjaFJlcXVlc3QmIHJl
cXVlc3QoKSB7IHJldHVybiBtX3JlcXVlc3QuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIGNs
aWVudElkKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRJZDsgfQotICAgIGNvbnN0IFN0cmluZyYg
cmVzZXJ2ZWRDbGllbnRJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzZXJ2ZWRDbGllbnRJZDsgfQor
ICAgIGNvbnN0IFN0cmluZyYgcmVzdWx0aW5nQ2xpZW50SWQoKSBjb25zdCB7IHJldHVybiBtX3Jl
c3VsdGluZ0NsaWVudElkOyB9CiAgICAgY29uc3QgU3RyaW5nJiB0YXJnZXRDbGllbnRJZCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGFyZ2V0Q2xpZW50SWQ7IH0KICAgICBET01Qcm9taXNlJiBoYW5kbGVk
KCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGVkLmdldCgpOyB9CiAKQEAgLTkzLDcgKzkzLDcgQEAg
cHJpdmF0ZToKIAogICAgIFJlZjxGZXRjaFJlcXVlc3Q+IG1fcmVxdWVzdDsKICAgICBTdHJpbmcg
bV9jbGllbnRJZDsKLSAgICBTdHJpbmcgbV9yZXNlcnZlZENsaWVudElkOworICAgIFN0cmluZyBt
X3Jlc3VsdGluZ0NsaWVudElkOwogICAgIFN0cmluZyBtX3RhcmdldENsaWVudElkOwogCiAgICAg
Ym9vbCBtX3Jlc3BvbmRXaXRoRW50ZXJlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5pZGwKaW5kZXggOTYwNjVjNjg4MzQ4MmIyMDhkZTg0
MzQ3ZjQ3ZmRiYjg0MjU3ODExMi4uNWFhY2M1ZGU1ZGEzNmZlNTI5NTNiYzgxYTQzZTE2ZTBjOGIy
NmMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZl
bnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50Lmlk
bApAQCAtMzUsNyArMzUsNyBAQAogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUg
RmV0Y2hSZXF1ZXN0IHJlcXVlc3Q7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIEVuYWJsZWRCeVNldHRpbmc9U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxl
ZF0gcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2U8YW55PiBwcmVsb2FkUmVzcG9uc2U7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBjbGllbnRJZDsKLSAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHJlc2VydmVkQ2xpZW50SWQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyByZXN1bHRpbmdDbGllbnRJZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHRhcmdldENsaWVudElkOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlPHVu
ZGVmaW5lZD4gaGFuZGxlZDsKIApAQCAtNDUsNyArNDUsNyBAQAogZGljdGlvbmFyeSBGZXRjaEV2
ZW50SW5pdCA6IEV4dGVuZGFibGVFdmVudEluaXQgewogICAgIHJlcXVpcmVkIEZldGNoUmVxdWVz
dCByZXF1ZXN0OwogICAgIERPTVN0cmluZyBjbGllbnRJZCA9ICIiOwotICAgIERPTVN0cmluZyBy
ZXNlcnZlZENsaWVudElkID0gIiI7CisgICAgRE9NU3RyaW5nIHJlc3VsdGluZ0NsaWVudElkID0g
IiI7CiAgICAgRE9NU3RyaW5nIHRhcmdldENsaWVudElkID0gIiI7CiAgICAgUHJvbWlzZTx1bmRl
ZmluZWQ+IGhhbmRsZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCmluZGV4IDU5NmI5Y2RjOTk0ZjU1MDgwYjYz
OTE3MTg5Yjc4ZWI4Zjc3Y2QzMzQuLjA5NTBjYjkzYjJlY2UxMWE0YjQ5YWM5MTAzZDdmZGZmYjA3
N2NkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgYXV0byBTZXJ2aWNlV29ya2Vy
Q2xpZW50OjpmcmFtZVR5cGUoKSBjb25zdCAtPiBGcmFtZVR5cGUKIAogU3RyaW5nIFNlcnZpY2VX
b3JrZXJDbGllbnQ6OmlkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaWRlbnRpZmllcigpLnRvU3Ry
aW5nKCk7CisgICAgcmV0dXJuIGlkZW50aWZpZXIoKS50b1Zpc2libGVTdHJpbmcoKTsKIH0KIAog
RXhjZXB0aW9uT3I8dm9pZD4gU2VydmljZVdvcmtlckNsaWVudDo6cG9zdE1lc3NhZ2UoSlNDOjpK
U0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgbWVzc2FnZVZhbHVlLCBT
dHJ1Y3R1cmVkU2VyaWFsaXplT3B0aW9ucyYmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwKaW5kZXggZTgx
YmFlM2Q2MjYwYTdlMTNhZWVhZDU3ZDJhMTRmNjA5ZDBkNmE0NC4uNDIwNTQ2MmUwOWMzYTgwMjhj
Y2RhODMyNTBiMDZlOWMxYTQ2NTMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbApAQCAtMjcsNiArMjcsNyBAQAog
ICAgIENvbmRpdGlvbmFsPVNFUlZJQ0VfV09SS0VSLAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAg
ICAgRW5hYmxlZEF0UnVudGltZT1TZXJ2aWNlV29ya2VyRW5hYmxlZCwKKyAgICBFeHBvcnRNYWNy
bz1XRUJDT1JFX0VYUE9SVCwKICAgICBFeHBvc2VkPVNlcnZpY2VXb3JrZXIsCiAgICAgSW50ZXJm
YWNlTmFtZT1DbGllbnQsCiBdIGludGVyZmFjZSBTZXJ2aWNlV29ya2VyQ2xpZW50IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVu
dHMuY3BwCmluZGV4IGFiNmI1ZTg0N2YyYmJlZDc2OGMzZDE5MDlhYjFhODE4NTNiMGMyMTYuLjZl
NDVhYTE3NmQwN2YyMjkxYmJlMjM1NTA3NzY1YmFiNTg4YWMxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcApA
QCAtMzgsNTUgKzM4LDI2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGlubGlu
ZSB2b2lkIGRpZEZpbmlzaEdldFJlcXVlc3QoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBzY29w
ZSwgRGVmZXJyZWRQcm9taXNlJiBwcm9taXNlLCBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhPj4mJiBjbGllbnREYXRhKQorc3RhdGljIGlubGluZSB2b2lk
IGRpZEZpbmlzaEdldFJlcXVlc3QoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBzY29wZSwgRGVm
ZXJyZWRQcm9taXNlJiBwcm9taXNlLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhPiYmIGNsaWVudERhdGEpCiB7Ci0gICAgaWYgKGNsaWVudERhdGEuaGFzRXhjZXB0aW9uKCkp
IHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoY2xpZW50RGF0YS5yZWxlYXNlRXhjZXB0aW9uKCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8gZGF0YSA9IGNsaWVudERhdGEucmVs
ZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgaWYgKCFkYXRhKSB7CisgICAgaWYgKCFjbGllbnREYXRh
KSB7CiAgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgcHJvbWlzZS5yZXNvbHZlPElETEludGVyZmFjZTxTZXJ2aWNlV29ya2VyQ2xpZW50Pj4o
U2VydmljZVdvcmtlckNsaWVudDo6Z2V0T3JDcmVhdGUoc2NvcGUsIFdURk1vdmUoZGF0YS52YWx1
ZSgpKSkpOwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllcj4gc2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXJGcm9tU3RyaW5nKFN0
cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlm
aWVyOwotICAgIE9iamVjdElkZW50aWZpZXI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXJUeXBlPiBjb250ZXh0SWRlbnRpZmllcjsKLSAgICB1bnNpZ25lZCBjb3VudGVyID0gMDsKLSAg
ICBmb3IgKGF1dG8gaXRlbSA6IHN0cmluZy5zcGxpdCgnLScpKSB7Ci0gICAgICAgIGF1dG8gaWRl
bnRpZmllciA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4oaXRlbSk7Ci0gICAgICAgIGlmICghaWRl
bnRpZmllciB8fCAhKmlkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgICAgICBpZiAoIWNvdW50ZXIrKykKLSAgICAgICAgICAgIHByb2Nlc3NJZGVudGlmaWVy
ID0gbWFrZU9iamVjdElkZW50aWZpZXI8UHJvY2Vzc0lkZW50aWZpZXJUeXBlPigqaWRlbnRpZmll
cik7Ci0gICAgICAgIGVsc2UgaWYgKGNvdW50ZXIgPT0gMikKLSAgICAgICAgICAgIGNvbnRleHRJ
ZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXJUeXBlPigqaWRlbnRpZmllcik7Ci0gICAgfQotICAgIHJldHVybiAocHJvY2Vzc0lk
ZW50aWZpZXIgJiYgY29udGV4dElkZW50aWZpZXIpID8gc3RkOjptYWtlX29wdGlvbmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIHsgY29udGV4dElkZW50aWZpZXIsIHByb2Nlc3NJ
ZGVudGlmaWVyIH0pIDogc3RkOjpudWxsb3B0OworICAgIHByb21pc2UucmVzb2x2ZTxJRExJbnRl
cmZhY2U8U2VydmljZVdvcmtlckNsaWVudD4+KFNlcnZpY2VXb3JrZXJDbGllbnQ6OmdldE9yQ3Jl
YXRlKHNjb3BlLCBXVEZNb3ZlKCpjbGllbnREYXRhKSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJDbGllbnRzOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBpZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewotICAgIGF1dG8gaWRl
bnRpZmllciA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyRnJvbVN0cmluZyhpZCk7
Ci0gICAgaWYgKCFpZGVudGlmaWVyKSB7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSBpZGVudGlm
aWVyLnZhbHVlKCk7Ci0KICAgICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gZG93bmNh
c3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS50aHJlYWQoKS5pZGVudGlmaWVy
KCk7CiAKICAgICBhdXRvIHByb21pc2VQb2ludGVyID0gcHJvbWlzZS5wdHIoKTsKICAgICBtX3Bl
bmRpbmdQcm9taXNlcy5hZGQocHJvbWlzZVBvaW50ZXIsIFdURk1vdmUocHJvbWlzZSkpOwogCi0g
ICAgY2FsbE9uTWFpblRocmVhZChbcHJvbWlzZVBvaW50ZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBjbGllbnRJZGVudGlmaWVyXSAoKSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvbWlz
ZVBvaW50ZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBpZCA9IGlkLmlzb2xhdGVkQ29weSgp
XSAoKSB7CiAgICAgICAgIGF1dG8gY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLmNvbm5lY3Rpb24oKTsKLSAgICAgICAgY29ubmVjdGlvbi0+ZmluZENsaWVudEJ5SWRl
bnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllciwgW3Byb21p
c2VQb2ludGVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0gKGF1dG8mJiBjbGllbnREYXRhKSB7
CisgICAgICAgIGNvbm5lY3Rpb24tPmZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBpZCwgW3Byb21pc2VQb2ludGVyLCBzZXJ2aWNlV29ya2VySWRl
bnRpZmllcl0gKGF1dG8mJiBjbGllbnREYXRhKSB7CiAgICAgICAgICAgICBTV0NvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdvcmtlcihzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgW3Byb21pc2VQb2ludGVyLCBkYXRhID0gY3Jvc3NUaHJlYWRDb3B5KGNsaWVudERh
dGEpXSAoYXV0byYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8g
cHJvbWlzZSA9IGNvbnRleHQuY2xpZW50cygpLm1fcGVuZGluZ1Byb21pc2VzLnRha2UocHJvbWlz
ZVBvaW50ZXIpKQogICAgICAgICAgICAgICAgICAgICBkaWRGaW5pc2hHZXRSZXF1ZXN0KGNvbnRl
eHQsICpwcm9taXNlLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCA3MTZk
MDAzNTFkZDczYmZlOTIzMmE4OGQ4YjI5YzZkNzJjYzIzZGU3Li5jMGUwMzYzNmIxODljNTg2NjNl
NDgzYzgwYmI5ZDY5MTkyYjIwZTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC02Miw4ICs2Miw4
IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIHNraXBXYWl0aW5nKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIHNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBVUkwmLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0
JikgPSAwOwogCi0gICAgICAgIHVzaW5nIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YT4+JiYpPjsKLSAgICAgICAgdmlydHVhbCB2b2lkIGZpbmRDbGllbnRC
eUlkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyLCBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ2FsbGJhY2smJikgPSAwOworICAg
ICAgICB1c2luZyBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpPjsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ2Fs
bGJhY2smJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgbWF0Y2hBbGwoU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmLCBTZXJ2
aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJikgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgY2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+JiYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5j
cHAKaW5kZXggNmQyZjFlNmE2ZGQxOTE1ZGVlNTFhZmFhYWM1NmU5MWUxMTkzNjI3Yi4uNGM5ZjJk
ZTRlN2QzNDkxOTU1MjFiMjI1NzFlNTkyODU3M2JiMDA5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0
Y2guY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFJl
ZjxDbGllbnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hSZXNwb25zZT4sIHMKICAgICB9
KTsKIH0KIAotdm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiBjbGllbnQsIFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IGNsaWVudElkLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgRmV0Y2hJ
ZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZEVuYWJsZWQpCit2b2lkIGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNs
aWVudCwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMs
IEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRFbmFibGVkLCBTdHJpbmcmJiBjbGllbnRJZGVudGlmaWVyLCBTdHJpbmcm
JiByZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKQogewogICAgIGF1dG8gcmVxdWVzdEhlYWRlcnMg
PSBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpJbW11dGFibGUsIEhU
VFBIZWFkZXJNYXAgeyByZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSB9KTsKIApAQCAtMTgxLDEy
ICsxODEsOCBAQCB2b2lkIGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNsaWVudCwg
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTYwogCiAgICAgRmV0Y2hFdmVudDo6SW5p
dCBpbml0OwogICAgIGluaXQucmVxdWVzdCA9IFdURk1vdmUoZmV0Y2hSZXF1ZXN0KTsKLSAgICBp
ZiAoaXNOYXZpZ2F0aW9uKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBTZXQgcmVzZXJ2ZWRDbGllbnRJ
ZC4KLSAgICAgICAgaWYgKGNsaWVudElkKQotICAgICAgICAgICAgaW5pdC50YXJnZXRDbGllbnRJ
ZCA9IGNsaWVudElkLT50b1N0cmluZygpOwotICAgIH0gZWxzZSBpZiAoY2xpZW50SWQpCi0gICAg
ICAgIGluaXQuY2xpZW50SWQgPSBjbGllbnRJZC0+dG9TdHJpbmcoKTsKKyAgICBpbml0LnJlc3Vs
dGluZ0NsaWVudElkID0gV1RGTW92ZShyZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKTsKKyAgICBp
bml0LmNsaWVudElkID0gV1RGTW92ZShjbGllbnRJZGVudGlmaWVyKTsKICAgICBpbml0LmNhbmNl
bGFibGUgPSB0cnVlOwogCiAgICAgYXV0byYganNET01HbG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxTY29wZS5nbG9iYWxPYmplY3QoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5oCmluZGV4IDJjOWY3YTE2ZDI3M2JkNzE1ZWUxMWVjMDdhNGY5YzVkZDg0
MmFlNTYuLjE0YTYyOTk5NDA5Nzg2NmY4OGMzMjU0ZjM4ZjAzNGM4NDNlYTdkYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJG
ZXRjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgY29udmVydEZldGNoVG9Eb3dubG9hZCgpID0gMDsKIH07CiAKLXZvaWQgZGlzcGF0Y2hGZXRj
aEV2ZW50KFJlZjxDbGllbnQ+JiYsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYsIHN0ZDo6b3B0
aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+LCBSZXNvdXJjZVJlcXVlc3Qm
JiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmLCBGZXRjaElkZW50aWZpZXIsIGJv
b2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkKTsKK3ZvaWQgZGlzcGF0
Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYsIFJl
c291cmNlUmVxdWVzdCYmLCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYsIEZldGNo
SWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQs
IFN0cmluZyYmIGNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIHJlc3VsdGluZ0NsaWVudElkZW50
aWZpZXIpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkLmNwcAppbmRleCA2NTI1ZmI5NzAxNmZmYWRlZTkxYTExNjA2MDRjMDI3MTA5Y2U4NjYxLi4y
NjBkYmJkM2U2NjI5NzljYzlmYTY5MmQ0M2NlNGViNDM3MDRkZmI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkLmNwcApAQCAtMTI0LDExICsxMjQsMTEgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpydW5FdmVudExvb3AoKQogICAgIFdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCk7CiB9
CiAKLXZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudChS
ZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYgY2xpZW50LCBzdGQ6Om9wdGlvbmFsPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiYmIGNsaWVudElkLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywg
RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZEVuYWJsZWQpCit2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFz
a1RvRmlyZUZldGNoRXZlbnQoUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmIGNsaWVu
dCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0
aW9ucyYmIG9wdGlvbnMsIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIGJvb2wgaXNT
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkLCBTdHJpbmcmJiBjbGllbnRJZGVu
dGlmaWVyLCBTdHJpbmcmJiByZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKQogewogICAgIFJlZiBz
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGU+KCpnbG9iYWxTY29wZSgpKTsKLSAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmV2ZW50
TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUsIGNsaWVudCA9IFdURk1vdmUoY2xpZW50KSwgY2xpZW50SWQsIHJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZWZlcnJlciA9IFdURk1vdmUocmVmZXJyZXIpLCBvcHRp
b25zID0gV1RGTW92ZShvcHRpb25zKSwgZmV0Y2hJZGVudGlmaWVyLCBpc1NlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIFNlcnZpY2VXb3Jr
ZXJGZXRjaDo6ZGlzcGF0Y2hGZXRjaEV2ZW50KFdURk1vdmUoY2xpZW50KSwgc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLCBjbGllbnRJZCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWZlcnJl
ciksIFdURk1vdmUob3B0aW9ucyksIGZldGNoSWRlbnRpZmllciwgaXNTZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRFbmFibGVkKTsKKyAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmV2
ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtzZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUsIGNsaWVudCA9IFdURk1vdmUoY2xpZW50KSwgcmVxdWVzdCA9IFdU
Rk1vdmUocmVxdWVzdCksIHJlZmVycmVyID0gV1RGTW92ZShyZWZlcnJlciksIG9wdGlvbnMgPSBX
VEZNb3ZlKG9wdGlvbnMpLCBmZXRjaElkZW50aWZpZXIsIGlzU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkRW5hYmxlZCwgY2xpZW50SWRlbnRpZmllciA9IFdURk1vdmUoY2xpZW50SWRlbnRp
ZmllciksIHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIgPSBXVEZNb3ZlKHJlc3VsdGluZ0NsaWVu
dElkZW50aWZpZXIpXSgpIG11dGFibGUgeworICAgICAgICBTZXJ2aWNlV29ya2VyRmV0Y2g6OmRp
c3BhdGNoRmV0Y2hFdmVudChXVEZNb3ZlKGNsaWVudCksIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWZlcnJlciksIFdURk1vdmUob3B0aW9ucyks
IGZldGNoSWRlbnRpZmllciwgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVk
LCBXVEZNb3ZlKGNsaWVudElkZW50aWZpZXIpLCBXVEZNb3ZlKHJlc3VsdGluZ0NsaWVudElkZW50
aWZpZXIpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCmluZGV4IDFkYTJk
ZDgzZWUwNzcxZmE0YTEyYzkxYWUyNTRhNTIzYTkzMjJlN2YuLjg4YjY1ZGU4MDMwYWE5NTA5MGQz
N2NkY2ExYWUwN2VjZTc1YmYwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKQEAgLTY0LDcg
KzY0LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFBvc3RUYXNrVG9GaXJlTWVzc2FnZUV2ZW50
KCk7CiAgICAgdm9pZCB3aWxsUG9zdFRhc2tUb0ZpcmVQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZl
bnQoKTsKIAotICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudChSZWY8U2VydmljZVdv
cmtlckZldGNoOjpDbGllbnQ+JiYsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXI+JiYsIFJlc291cmNlUmVxdWVzdCYmLCBTdHJpbmcmJiByZWZlcnJlciwgRmV0
Y2hPcHRpb25zJiYsIEZldGNoSWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZEVuYWJsZWQpOworICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudChS
ZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYsIFJlc291cmNlUmVxdWVzdCYmLCBTdHJp
bmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYsIEZldGNoSWRlbnRpZmllciwgYm9vbCBpc1Nl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIFN0cmluZyYmIGNsaWVudElkZW50
aWZpZXIsIFN0cmluZyYmIHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIpOwogICAgIHZvaWQgcXVl
dWVUYXNrVG9Qb3N0TWVzc2FnZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBTZXJ2aWNlV29y
a2VyT3JDbGllbnREYXRhJiYgc291cmNlRGF0YSk7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVJ
bnN0YWxsRXZlbnQoKTsKICAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZUFjdGl2YXRlRXZlbnQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IGRiNmM5M2I4YmU5MWI5
YjkyMjcxMDk0Nzk5ZDBkZGMzZjY0ODJkZjAuLmM2NjYxNGZhMmM5NjAwMTE2NDVlOGFjNzQ1ZDRm
NmQ5Yzg4Mzk2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAt
MjEwLDcgKzIxMCw3IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpub3RpZnlOZXR3
b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkKICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZh
dWx0TW9kZSgpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0
Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgRmV0
Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xp
ZW50PiYmIGNsaWVudCwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
Zmllcj4mJiBjbGllbnRJZCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVm
ZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRFbmFibGVkKQordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0
RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwg
RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6
Q2xpZW50PiYmIGNsaWVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVm
ZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRFbmFibGVkLCBTdHJpbmcmJiBjbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBy
ZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKQogewogICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3Jr
ZXIsICJTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2ggJWxsdSIsIGZldGNoSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKIApAQCAtMjIxLDggKzIyMSw4IEBAIHZvaWQgU2VydmljZVdv
cmtlclRocmVhZFByb3h5OjpzdGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIg
Y29ubmVjdGlvCiAKICAgICBBU1NFUlQoIW1fb25nb2luZ0ZldGNoVGFza3MuY29udGFpbnMoa2V5
KSk7CiAgICAgbV9vbmdvaW5nRmV0Y2hUYXNrcy5hZGQoa2V5LCBjbGllbnQuY29weVJlZigpKTsK
LSAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2xpZW50ID0gV1RGTW92ZShjbGllbnQpLCBj
bGllbnRJZCwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0gcmVm
ZXJyZXIuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgpLCBm
ZXRjaElkZW50aWZpZXIsIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZF0o
YXV0byYpIG11dGFibGUgewotICAgICAgICB0aHJlYWQoKS5xdWV1ZVRhc2tUb0ZpcmVGZXRjaEV2
ZW50KFdURk1vdmUoY2xpZW50KSwgV1RGTW92ZShjbGllbnRJZCksIFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUocmVmZXJyZXIpLCBXVEZNb3ZlKG9wdGlvbnMpLCBmZXRjaElkZW50aWZpZXIsIGlz
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCk7CisgICAgcG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIGNsaWVudCA9IFdURk1vdmUoY2xpZW50KSwgcmVxdWVzdCA9IHJlcXVlc3Qu
aXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0gV1RGTW92ZShyZWZlcnJlcikuaXNvbGF0ZWRDb3B5
KCksIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgpLCBmZXRjaElkZW50aWZpZXIsIGlz
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCwgY2xpZW50SWRlbnRpZmllciA9
IFdURk1vdmUoY2xpZW50SWRlbnRpZmllcikuaXNvbGF0ZWRDb3B5KCksIHJlc3VsdGluZ0NsaWVu
dElkZW50aWZpZXIgPSBXVEZNb3ZlKHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIpLmlzb2xhdGVk
Q29weSgpXShhdXRvJikgbXV0YWJsZSB7CisgICAgICAgIHRocmVhZCgpLnF1ZXVlVGFza1RvRmly
ZUZldGNoRXZlbnQoV1RGTW92ZShjbGllbnQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJl
ZmVycmVyKSwgV1RGTW92ZShvcHRpb25zKSwgZmV0Y2hJZGVudGlmaWVyLCBpc1NlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIFdURk1vdmUoY2xpZW50SWRlbnRpZmllciksIFdU
Rk1vdmUocmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcikpOwogICAgIH0sIFdvcmtlclJ1bkxvb3A6
OmRlZmF1bHRNb2RlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmlu
ZGV4IDAxYjNhZDA0OTE1ZDRiZTI3YjAxYmNmZmRjNmIwY2ZiMjA4ZmMwN2UuLmFiY2E0ODYyYmQ2
NTliYjRlYzE2YjdkZGY5OTE4ZTYyOGQzMzc1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgbm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzdGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IEZldGNoSWRlbnRpZmllciwgUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmLCBzdGQ6
Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiYmLCBSZXNvdXJjZVJl
cXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmLCBib29sIGlzU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzdGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmll
ciwgUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmLCBSZXNvdXJjZVJlcXVlc3QmJiwg
U3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmLCBib29sIGlzU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkRW5hYmxlZCwgU3RyaW5nJiYgY2xpZW50SWRlbnRpZmllciwgU3RyaW5n
JiYgcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
YW5jZWxGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udmVydEZldGNoVG9Eb3dubG9hZChTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShTV1NlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCAxYTk2M2NkMTI0ZTI1ZmRk
MzBlYjE1ZDY3MzdlN2U0MzVkZDQxMTgwLi43Y2I5OTNmMjI1N2RjNzMxNmNiM2EyYWU4YzY4Mjlm
NjFiNTI3MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcApAQCAtOTQyLDYgKzk0Miw4IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudChDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFNlcnZp
Y2VXCiAgICAgICAgICAgICB1cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZUZvcldvcmtlcnMoY2xpZW50
T3JpZ2luLCBkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKICAgICB9CiAKKyAg
ICBtX3Zpc2libGVDbGllbnRJZFRvSW50ZXJuYWxDbGllbnRJZE1hcC5hZGQoZGF0YS5pZGVudGlm
aWVyLnRvVmlzaWJsZVN0cmluZygpLCBjbGllbnRJZGVudGlmaWVyKTsKKwogICAgIEFTU0VSVCgh
bV9jbGllbnRzQnlJZC5jb250YWlucyhjbGllbnRJZGVudGlmaWVyKSk7CiAgICAgbV9jbGllbnRz
QnlJZC5hZGQoY2xpZW50SWRlbnRpZmllciwgV1RGTW92ZShkYXRhKSk7CiAKQEAgLTk3OSw4ICs5
ODEsOCBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25z
dCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogICAgIGF1dG8gY2xpZW50UmVnaXN0cmFi
bGVEb21haW4gPSBjbGllbnRPcmlnaW4uY2xpZW50UmVnaXN0cmFibGVEb21haW4oKTsKICAgICBh
dXRvIGFwcEluaXRpYXRlZFZhbHVlQmVmb3JlID0gY2xpZW50SXNBcHBJbml0aWF0ZWRGb3JSZWdp
c3RyYWJsZURvbWFpbihjbGllbnRPcmlnaW4uY2xpZW50UmVnaXN0cmFibGVEb21haW4oKSk7CiAK
LSAgICBib29sIHdhc1JlbW92ZWQgPSBtX2NsaWVudHNCeUlkLnJlbW92ZShjbGllbnRJZGVudGlm
aWVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOworICAgIG1f
Y2xpZW50c0J5SWQucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOworICAgIG1fdmlzaWJsZUNsaWVu
dElkVG9JbnRlcm5hbENsaWVudElkTWFwLnJlbW92ZShjbGllbnRJZGVudGlmaWVyLnRvVmlzaWJs
ZVN0cmluZygpKTsKIAogICAgIGF1dG8gY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRv
ciA9IG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uZmluZChjbGllbnRSZWdpc3RyYWJsZURv
bWFpbik7CiAgICAgQVNTRVJUKGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3IgIT0g
bV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbi5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggYjE1ZjFhZjVlMGVkNzJh
YWExZGRiZGE5YTJmZmUzZmIyOWFiMTM4Ny4uNDM5NDFiMzRiMmE3MjdkNDM4ZjY1NGM3NTNkOGY1
OWY1Y2YyNjllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuaApAQCAtMjI2LDYgKzIyNiw4IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNz
IFNob3VsZFNraXBFdmVudCA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdm9pZCBmaXJlRnVuY3Rp
b25hbEV2ZW50KFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eHBlY3RlZDxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qLCBTaG91bGRTa2lwRXZlbnQ+KT4m
Jik7CiAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJZEZyb21W
aXNpYmxlQ2xpZW50SWQoY29uc3QgU3RyaW5nJiB2aXNpYmxlSWRlbnRpZmllcikgY29uc3QgeyBy
ZXR1cm4gbV92aXNpYmxlQ2xpZW50SWRUb0ludGVybmFsQ2xpZW50SWRNYXAuZ2V0KHZpc2libGVJ
ZGVudGlmaWVyKTsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgdmFsaWRhdGVSZWdpc3RyYXRpb25E
b21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJKb2JUeXBlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIApAQCAtMjcxLDYgKzI3Myw3IEBAIHBy
aXZhdGU6CiAgICAgSGFzaE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgV2Vh
a1B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4+IG1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVy
VG9SZWdpc3RyYXRpb25NYXA7CiAgICAgSGFzaE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudERhdGE+IG1fY2xpZW50c0J5SWQ7CiAgICAgSGFz
aE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXI+IG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lzdHJhdGlvbjsKKyAg
ICBIYXNoTWFwPFN0cmluZywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IG1fdmlz
aWJsZUNsaWVudElkVG9JbnRlcm5hbENsaWVudElkTWFwOwogCiAgICAgVW5pcXVlUmVmPFNXT3Jp
Z2luU3RvcmU+IG1fb3JpZ2luU3RvcmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdHJhdGlv
blN0b3JlPiBtX3JlZ2lzdHJhdGlvblN0b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwCmluZGV4IGJmZWVjY2UwM2UwNGNjNzhlODdlMWUxNjI2OWI5NjMwMWQ0ODE3
YTEuLjU0MjhhYTQ2NTU0NTg4NDg3OTAxN2M0NTFkOThmOGFjOWU2MmFkN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTg3LDEyICs4Nyw2IEBAIHZvaWQg
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpCiAgICAgICAgIHdvcmtlci0+Y29udGV4dFRlcm1pbmF0ZWQoKTsK
IH0KIAotdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50
aWZpZXIodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
ciBjbGllbnRJZCkKLXsKLSAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4
aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCi0gICAg
ICAgIHdvcmtlci0+Y29udGV4dENvbm5lY3Rpb24oKS0+ZmluZENsaWVudEJ5SWRlbnRpZmllckNv
bXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgd29ya2VyLT5maW5kQ2xpZW50QnlJZGVudGlmaWVy
KGNsaWVudElkKSwgZmFsc2UpOwotfQotCiB2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6bWF0Y2hBbGwodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50
UXVlcnlPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZl
cldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKSkgewpAQCAtMTAyLDYgKzk2LDE0IEBAIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjptYXRjaEFsbCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvCiAgICAg
fQogfQogCit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmluZENsaWVudEJ5Vmlz
aWJsZUlkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgY2xpZW50SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT4m
JiBjYWxsYmFjaykKK3sKKyAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4
aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCisgICAg
ICAgIHdvcmtlci0+ZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoY2xpZW50SWRlbnRpZmll
ciwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIGVsc2UKKyAgICAgICAgY2FsbGJhY2soeyB9KTsK
K30KKwogdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNsYWltKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAg
YXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmll
cihzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaAppbmRleCBiZGQzNjNiMmJjNDUwY2MyOTkyZTY1NjgzNmFmNzdlZDUzYmNkYTQwLi5j
MDU2ZjY0OGRkYTAzZTVmYWI0OGQyYWU0NmU3MTM5NzU2ZjVkNTQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTU4LDcgKzU4LDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IEhhc2hNYXA8VVJMLCBT
Y3JpcHRCdWZmZXI+JiBpbXBvcnRlZFNjcmlwdHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZmlu
ZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mLCBib29sIGhhc1Nl
Y3VyaXR5RXJyb3IpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbWF0Y2hBbGxDb21wbGV0ZWQodWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpcmVQdXNoRXZlbnQoU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spID0gMDsKIApAQCAtNzAsMTEgKzY5
LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlcnZpY2VXb3JrZXJI
YXNQZW5kaW5nRXZlbnRzKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGhhc1BlbmRpbmdF
dmVudHMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2tpcFdhaXRpbmcoU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXIodWludDY0X3QgY2xp
ZW50SWRSZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hdGNo
QWxsKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Y29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb25EYXRhPiYmKT4mJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJM
JiYgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JiYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmRDbGllbnRCeVZp
c2libGVJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNs
aWVudElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+JiYpOwogCiAgICAgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3Ry
YWJsZURvbWFpbjsgfQogICAgIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDVkMTU1
NmEwMDZkYWIxNTE2NzY1MWEyM2RmMmZiMzMzMDQ3ZjZiNDMuLmNkYmZlNDRiZWVjMGM5MDhiYWMx
MjI0ZDBlYTRiNmYxMmZlZGYxYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC0yMzEsNiArMjMxLDIy
IEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNXU2VydmVyV29ya2Vy
OjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyKGNvCiAgICAgcmV0dXJuIG1fc2VydmVyLT5zZXJ2aWNl
V29ya2VyQ2xpZW50V2l0aE9yaWdpbkJ5SUQob3JpZ2luKCksIGNsaWVudElkKTsKIH0KIAordm9p
ZCBTV1NlcnZlcldvcmtlcjo6ZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJiBjbGllbnRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpPiYmIGNhbGxiYWNrKQorewor
ICAgIGlmICghbV9zZXJ2ZXIpIHsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8gaW50ZXJuYWxJZGVudGlmaWVyID0gbV9zZXJ2ZXItPmNs
aWVudElkRnJvbVZpc2libGVDbGllbnRJZChjbGllbnRJZGVudGlmaWVyKTsKKyAgICBpZiAoIWlu
dGVybmFsSWRlbnRpZmllcikgeworICAgICAgICBjYWxsYmFjayh7IH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgY2FsbGJhY2soZmluZENsaWVudEJ5SWRlbnRpZmllcihpbnRlcm5h
bElkZW50aWZpZXIpKTsKK30KKwogdm9pZCBTV1NlcnZlcldvcmtlcjo6bWF0Y2hBbGwoY29uc3Qg
U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYgb3B0aW9ucywgU2VydmljZVdvcmtlckNs
aWVudHNNYXRjaEFsbENhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKG1fc2VydmVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaAppbmRleCBiMjIxNWQ5ZjRhZDRkMGZkOTE1MDRhNGMyMWFjYjkzMDQ3YTFj
ODI0Li4xZTgzMWZjNGNhODJkNjQ0ZTdjNmRiMTFlMGVmNTNhNzZiNmRmNDUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtl
ci5oCkBAIC0xMDMsNiArMTAzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmluaXNoQWN0aXZh
dGlvbigpOwogICAgIHZvaWQgY29udGV4dFRlcm1pbmF0ZWQoKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBmaW5kQ2xpZW50QnlJZGVu
dGlmaWVyKGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyJikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5kQ2xpZW50QnlWaXNpYmxlSWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+JiYpOwogICAgIHZv
aWQgbWF0Y2hBbGwoY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFNlcnZp
Y2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYmKTsKICAgICB2b2lkIHNldFNjcmlwdFJl
c291cmNlKFVSTCYmLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JiYp
OwogICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2NyaXB0QnVmZmVyJiYgbWFpblNjcmlw
dCwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgK
aW5kZXggODE3YWVmMjZjODM2YzM0YTdkNDRlZTdjYzk1ZWRkOWEyOThkNmE0YS4uM2YxODIwZDE2
ODIxOTgyMDY3MTUxMjY2NjVmNTI0ZGM3YWNmZWNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0xNDUsNiArMTQ1
LDEwIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBzdGFy
dFdpdGhTZXJ2aWNlV29ya2VyKCk7CiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxl
KFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sqKTsKKyAgICB2b2lkIHNldFJlc3VsdGluZ0NsaWVudElk
ZW50aWZpZXIoU3RyaW5nJiYgaWRlbnRpZmllcikgeyBtX3Jlc3VsdGluZ0NsaWVudElkZW50aWZp
ZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpOyB9CisgICAgdm9pZCBzZXRDbGllbnRJZGVudGlmaWVy
KFN0cmluZyYmIGlkZW50aWZpZXIpIHsgbV9jbGllbnRJZGVudGlmaWVyID0gV1RGTW92ZShpZGVu
dGlmaWVyKTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcjsgfQorICAgIGNvbnN0
IFN0cmluZyYgY2xpZW50SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50SWRlbnRp
ZmllcjsgfQogI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlRXJy
b3I+IGRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09mUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtMjU1LDYgKzI1OSw4IEBAIHByaXZhdGU6CiAgICAgc3Rk
OjpvcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBtX25ldHdvcmtBY3Rpdml0eVRyYWNr
ZXI7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrPiBtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2s7CisgICAgU3RyaW5n
IG1fcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcjsKKyAgICBTdHJpbmcgbV9jbGllbnRJZGVudGlm
aWVyOwogI2VuZGlmCiAgICAgTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgbV9yZXNvdXJj
ZUxvYWRJRDsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVkaXJlY3RSZXNwb25z
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCBjZDJkNmEy
MDczZmI5N2FiYTAxNmQzYzdlZjMxYzc3MWExMjcwMmM5Li43MDYxYzFmMDE5MDg5ZjA2NDQxOTBl
NmZjMzhkZDZmNTE1OWViZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRh
c2suY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpz
dGFydEZldGNoKCkKICAgICBhdXRvIHJlcXVlc3QgPSBtX2N1cnJlbnRSZXF1ZXN0OwogICAgIGNs
ZWFuSFRUUFJlcXVlc3RIZWFkZXJzRm9yQWNjZXNzQ29udHJvbChyZXF1ZXN0LCBtX2xvYWRlci5w
YXJhbWV0ZXJzKCkuaHR0cEhlYWRlcnNUb0tlZXApOwogCi0gICAgYm9vbCBpc1NlbnQgPSBzZW5k
VG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
U3RhcnRGZXRjaCB7IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1fc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIG1fZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zLCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIHsgbV9jdXJyZW50UmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZmVycmVy
LCBtX3ByZWxvYWRlciAmJiBtX3ByZWxvYWRlci0+aXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRFbmFibGVkKCkgfSk7CisgICAgYm9vbCBpc1NlbnQgPSBzZW5kVG9TZXJ2aWNlV29ya2Vy
KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IG1f
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1f
ZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
IHsgbV9jdXJyZW50UmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZmVycmVyLCBtX3ByZWxvYWRlciAm
JiBtX3ByZWxvYWRlci0+aXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkKCks
IG1fbG9hZGVyLmNsaWVudElkZW50aWZpZXIoKSwgbV9sb2FkZXIucmVzdWx0aW5nQ2xpZW50SWRl
bnRpZmllcigpIH0pOwogICAgIEFTU0VSVF9VTlVTRUQoaXNTZW50LCBpc1NlbnQpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDQ3MmEyMzEzOWY3Njhi
MDkxM2M2YWMxNDQxOWY3ZDhiZGYyNDJlYWUuLjc0MDlhZjBhZmJhNTkzYjIwZWVlMjAwNzUzOWE5
MGVhYTE5OTIwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBA
IC0xNzUsNiArMTc1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlRmV0Y2hUYXNrKE4KIAogICAgICAgICBzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmll
cigpOwogICAgICAgICBjb250cm9sQ2xpZW50KCpsb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnMu
Y2xpZW50SWRlbnRpZmllciwgKnJlZ2lzdHJhdGlvbiwgcmVxdWVzdCk7CisgICAgICAgIGxvYWRl
ci5zZXRSZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9u
cy5jbGllbnRJZGVudGlmaWVyLT50b1Zpc2libGVTdHJpbmcoKSk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgaWYgKCFsb2FkZXIucGFyYW1ldGVycygpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDQsNiArMjA1LDEx
IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayhOCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAorICAgIGlmIChsb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnMubW9kZSAhPSBGZXRjaE9w
dGlvbnM6Ok1vZGU6Ok5hdmlnYXRlICYmIGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucy5jbGll
bnRJZGVudGlmaWVyKSB7CisgICAgICAgIGlmIChhdXRvIGRhdGEgPSB3b3JrZXItPmZpbmRDbGll
bnRCeUlkZW50aWZpZXIoKmxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucy5jbGllbnRJZGVudGlm
aWVyKSkKKyAgICAgICAgICAgIGxvYWRlci5zZXRDbGllbnRJZGVudGlmaWVyKGRhdGEtPmlkZW50
aWZpZXIudG9WaXNpYmxlU3RyaW5nKCkpOworICAgIH0KKwogICAgIGJvb2wgaXNXb3JrZXJSZWFk
eSA9IHdvcmtlci0+aXNSdW5uaW5nKCkgJiYgd29ya2VyLT5zdGF0ZSgpID09IFNlcnZpY2VXb3Jr
ZXJTdGF0ZTo6QWN0aXZhdGVkOwogICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8U2VydmljZVdv
cmtlckZldGNoVGFzaz4oKnRoaXMsIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdCB9
LCBpZGVudGlmaWVyKCksIHdvcmtlci0+aWRlbnRpZmllcigpLCAqcmVnaXN0cmF0aW9uLCBzZXNz
aW9uKCksIGlzV29ya2VyUmVhZHkpOwogICAgIHN0YXJ0RmV0Y2goKnRhc2ssICp3b3JrZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApp
bmRleCBmMGE4OTY3NWNjMTQ0MzcwOGEwYjY4YWM5MzFjZTc3ZmQyNWM0MDA1Li41YTg3MDNlZmQ2
ZDVkY2Q0MWEyMjVhOGQxMmUzZGQ1ZGRhZTEwNjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTU1LDExICsxNTUsNiBAQCB2
b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlRHVlVG9VbnJlc3Bv
bnNpdmVuZXNzKCkKICAgICBtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJt
aW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzIHsgd2ViUHJvY2Vzc0lkZW50
aWZpZXIoKSB9LCAwKTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OmZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiBkYXRhLCBi
b29sIGhhc1NlY3VyaXR5RXJyb3IpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OkZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQgeyByZXF1
ZXN0SWRlbnRpZmllciwgZGF0YSwgaGFzU2VjdXJpdHlFcnJvciB9KTsKLX0KLQogdm9pZCBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiBj
bGllbnRzRGF0YSkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6TWF0Y2hBbGxDb21wbGV0ZWQgeyByZXF1ZXN0SWRlbnRpZmllciwgY2xpZW50c0Rh
dGEgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgKaW5kZXggMzM2NThjNTRjMTRmYTRhNDQ0Yjc0MzZkZDkwYjA4NTlhMjQyYmI1My4uZDk1Yjdj
ZTg1NDY5OGM1MTY2ZDNhMTU5YTM3ODhlZGUyZDliMjI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtOTUsNyArOTUsNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgdGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNr
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRC
dWZmZXImLCBjb25zdCBIYXNoTWFwPFVSTCwgV2ViQ29yZTo6U2NyaXB0QnVmZmVyPiYgaW1wb3J0
ZWRTY3JpcHRzKSBmaW5hbDsKLSAgICB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0
ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSBmaW5h
bDsKICAgICB2b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JikgZmluYWw7
CiAgICAgdm9pZCBmaXJlUHVzaEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZmQ3MTk0OGM1
ZjM1OTk5ZjU1MmRmMWRmZDYzNTJjMTNkMmY1ZjgxZS4uMGQ2MTQ1MGQ0MWEzMDFmMDhmOWVjNWU2
YTNhNjAwNjFmOWI2NDM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zMiw3ICszMiw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsK
ICAgICBTZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIGhhc1BlbmRpbmdFdmVudHMpCiAgICAgU2tp
cFdhaXRpbmcoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikgLT4g
KCkgQXN5bmMKICAgICBXb3JrZXJUZXJtaW5hdGVkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCi0gICAgRmluZENsaWVudEJ5SWRlbnRpZmllcih1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyIGNsaWVudElkZW50aWZpZXIpCisgICAgRmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFN0cmluZyBjbGllbnRJZGVudGlmaWVyKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YT4gZGF0YSkgQXN5bmMKICAgICBNYXRjaEFsbCh1aW50NjRfdCBt
YXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
bGllbnRRdWVyeU9wdGlvbnMgb3B0aW9ucyk7CiAgICAgQ2xhaW0oV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpIC0+IChzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IHJlc3VsdCkgQXN5bmMKICAgICBTZXRTY3JpcHRSZXNv
dXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBVUkwgc2Ny
aXB0VVJMLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0
IHNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCmluZGV4IGU2ZGQ4MTEwNTY0NDQxYzNhMzU5MDkw
YjAxMTQyZGRjZTIwNDNhYzMuLmMzNDI3YWE1MjBjNGYxZDdkYTQzYzEyOTdlNjlkMmFmMGUxMjJm
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIFdLQXJyYXlSZWYg
V0tCdW5kbGVHZXRMaXZlRG9jdW1lbnRVUkxzRm9yVGVzdGluZyhXS0J1bmRsZVJlZiBidW5kbGVS
ZWYsIGJvb2wgZXhjCiAgICAgICAgIGF1dG8gZG9jdW1lbnRJREtleSA9IGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImlkIikpOwogICAgICAgICBhdXRvIGRvY3VtZW50VVJM
S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidXJsIikpOwogCi0g
ICAgICAgIGF1dG8gZG9jdW1lbnRJRFZhbHVlID0gYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShpdC5r
ZXkpKTsKKyAgICAgICAgYXV0byBkb2N1bWVudElEVmFsdWUgPSBhZG9wdFdLKFdlYktpdDo6dG9D
b3BpZWRBUEkoaXQua2V5LnRvU3RyaW5nKCkpKTsKICAgICAgICAgYXV0byBkb2N1bWVudFVSTFZh
bHVlID0gYWRvcHRXSyhXZWJLaXQ6OnRvQ29waWVkQVBJKGl0LnZhbHVlKSk7CiAKICAgICAgICAg
V0tEaWN0aW9uYXJ5U2V0SXRlbSh1cmxJbmZvLmdldCgpLCBkb2N1bWVudElES2V5LmdldCgpLCBk
b2N1bWVudElEVmFsdWUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggODVjNzAxMzAy
NjlkMWQ2MGE0ZmQ2OGYyMGM5N2I2OGEyYjI4YTNlYS4uZjRkZDU4MzEyMGJlMGNmYWQ0ODA1NjJk
M2IwODVhMjUyODgxZGQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0zMzgsMTQgKzMzOCwx
NCBAQCBJbmplY3RlZEJ1bmRsZTo6RG9jdW1lbnRJRFRvVVJMTWFwIEluamVjdGVkQnVuZGxlOjps
aXZlRG9jdW1lbnRVUkxzKGJvb2wgZXhjbHVkZQogICAgIERvY3VtZW50SURUb1VSTE1hcCByZXN1
bHQ7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3Vt
ZW50cygpKQotICAgICAgICByZXN1bHQuYWRkKGRvY3VtZW50LT5pZGVudGlmaWVyKCkub2JqZWN0
KCkudG9VSW50NjQoKSwgZG9jdW1lbnQtPnVybCgpLnN0cmluZygpKTsKKyAgICAgICAgcmVzdWx0
LmFkZChkb2N1bWVudC0+aWRlbnRpZmllcigpLm9iamVjdCgpLCBkb2N1bWVudC0+dXJsKCkuc3Ry
aW5nKCkpOwogCiAgICAgaWYgKGV4Y2x1ZGVEb2N1bWVudHNJblBhZ2VHcm91cFBhZ2VzKSB7CiAg
ICAgICAgIFBhZ2U6OmZvckVhY2hQYWdlKFsmXShQYWdlJiBwYWdlKSB7CiAgICAgICAgICAgICBm
b3IgKGF1dG8qIGZyYW1lID0gJnBhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIWZyYW1lLT5k
b2N1bWVudCgpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAg
ICByZXN1bHQucmVtb3ZlKGZyYW1lLT5kb2N1bWVudCgpLT5pZGVudGlmaWVyKCkub2JqZWN0KCku
dG9VSW50NjQoKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LnJlbW92ZShmcmFtZS0+ZG9jdW1l
bnQoKS0+aWRlbnRpZmllcigpLm9iamVjdCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAppbmRleCBkZGVkOTcwYjNjZjJmMWVlMWU3NGZhYTYwOTI4
ODNhYTYxNDJkZDYwLi41MWMwNDdhMjc1MTU3NjJlOGUxZGFlMmY3MjZmNjY4NTMyMmNkZTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuaApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9w
dGlvbmFsPFVVSUQ+IHdlYk5vdGlmaWNhdGlvbklEKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7
CiAgICAgUmVmPEFQSTo6RGF0YT4gY3JlYXRlV2ViRGF0YUZyb21VaW50OEFycmF5KEpTQ29udGV4
dFJlZiwgSlNWYWx1ZVJlZik7CiAgICAgCi0gICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBT
dHJpbmc+IERvY3VtZW50SURUb1VSTE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8VVVJRCwgU3Ry
aW5nPiBEb2N1bWVudElEVG9VUkxNYXA7CiAgICAgRG9jdW1lbnRJRFRvVVJMTWFwIGxpdmVEb2N1
bWVudFVSTHMoYm9vbCBleGNsdWRlRG9jdW1lbnRzSW5QYWdlR3JvdXBQYWdlcyk7CiAKICAgICAv
LyBHYXJiYWdlIGNvbGxlY3Rpb24gQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHAKaW5kZXggMDNlZWI4YjJkODEzMTBmOWU5Njc3ZmYzYjBjMGU5NGMzNDRmNmZkNS4uNTVjYTdk
YzNjZTA2YjU1MTQ5Y2E5YzNjYWNmNTgxMmQ1NjQ5YWY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoU1dTZXJ2ZXJD
b25uCiAgICAgICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+Y29udGludWVEaWRSZWNlaXZl
RmV0Y2hSZXNwb25zZShzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVy
KTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChT
V1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgRmV0Y2hJZGVu
dGlmaWVyIGZldGNoSWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmV0Y2hP
cHRpb25zJiYgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIGZvcm1EYXRhLCBTdHJp
bmcmJiByZWZlcnJlciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJs
ZWQpCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBGZXRjaElkZW50aWZp
ZXIgZmV0Y2hJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGZXRjaE9wdGlv
bnMmJiBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgZm9ybURhdGEsIFN0cmluZyYm
IHJlZmVycmVyLCBib29sIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCwg
U3RyaW5nJiYgY2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgcmVzdWx0aW5nQ2xpZW50SWRlbnRp
ZmllcikKIHsKICAgICBhdXRvKiBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBTV0NvbnRleHRN
YW5hZ2VyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoc2VydmljZVdvcmtl
cklkZW50aWZpZXIpOwogICAgIGlmICghc2VydmljZVdvcmtlclRocmVhZFByb3h5KSB7CkBAIC0y
NTcsMTAgKzI1Nyw5IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN0YXJ0
RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2CiAgICAgfQogCiAgICAgYXV0
byBjbGllbnQgPSBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpjcmVhdGUobV9jb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy5jb3B5UmVmKCksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0LnJl
cXVlc3RlcigpID09IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluKTsKLSAgICBzdGQ6
Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBjbGllbnRJZCA9IG9w
dGlvbnMuY2xpZW50SWRlbnRpZmllcjsKIAogICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoZm9ybURh
dGEudGFrZURhdGEoKSk7Ci0gICAgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT5zdGFydEZldGNo
KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIFdURk1vdmUoY2xp
ZW50KSwgV1RGTW92ZShjbGllbnRJZCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVmZXJy
ZXIpLCBXVEZNb3ZlKG9wdGlvbnMpLCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVu
YWJsZWQpOworICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+c3RhcnRGZXRjaChzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCBXVEZNb3ZlKGNsaWVudCksIFdU
Rk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVmZXJyZXIpLCBXVEZNb3ZlKG9wdGlvbnMpLCBpc1Nl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIFdURk1vdmUoY2xpZW50SWRlbnRp
ZmllciksIFdURk1vdmUocmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydmljZVdvcmtlck9yQ2xpZW50RGF0YSYmIHNvdXJj
ZURhdGEpCkBAIC0zMzMsMjIgKzMzMiw5IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OndvcmtlclRlcm1pbmF0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VyCiAgICAg
bV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpXb3JrZXJUZXJtaW5hdGVkKHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKSwgMCk7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpbmRD
bGllbnRCeUlkZW50aWZpZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWVu
dElkZW50aWZpZXIsIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQor
dm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmluZENsaWVudEJ5VmlzaWJsZUlk
ZW50aWZpZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY2xpZW50SWRlbnRpZmllciwgRmluZENsaWVudEJ5SWRl
bnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgYXV0byByZXF1ZXN0SWRlbnRpZmll
ciA9ICsrbV9wcmV2aW91c1JlcXVlc3RJZGVudGlmaWVyOwotICAgIG1fZmluZENsaWVudEJ5SWRl
bnRpZmllclJlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykp
OwotICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6RmluZENsaWVudEJ5SWRlbnRpZmllciB7IHJlcXVl
c3RJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllciB9
LCAwKTsKLX0KLQotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmluZENsaWVu
dEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpv
cHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiBjbGllbnREYXRhLCBib29sIGhhc1Nl
Y3VyaXR5RXJyb3IpCi17Ci0gICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX2ZpbmRDbGllbnRCeUlk
ZW50aWZpZXJSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKSkgewotICAgICAgICBpZiAo
aGFzU2VjdXJpdHlFcnJvcikgewotICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgU2Vj
dXJpdHlFcnJvciB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBj
YWxsYmFjayhXVEZNb3ZlKGNsaWVudERhdGEpKTsKLSAgICB9CisgICAgbV9jb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OkZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyIHsgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXIgfSwgV1RGTW92ZShjYWxsYmFjaykp
OwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptYXRjaEFsbChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYgb3B0aW9ucywgU2VydmljZVdvcmtl
ckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaAppbmRleCAwNTgwZDk4MzIyOGE3MmJiOGM5OTQ5Y2EyYjFiNGM3MTE4ZmFjNjEw
Li5hY2UxYTk5ZGQxMTg3MWZjMmJkZDdjYjQ1ZmY1NzRhODc5ZjE1MWViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZEZpbmlzaEFjdGl2YXRpb24oV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZp
bmFsOwogICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgd29ya2VyVGVy
bWluYXRlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7Ci0gICAgdm9p
ZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgRmluZENsaWVudEJ5
SWRlbnRpZmllckNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgZmluZENsaWVudEJ5VmlzaWJs
ZUlkZW50aWZpZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYsIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIG1h
dGNoQWxsKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNs
aWVudHNNYXRjaEFsbENhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xhaW0oV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
RXhjZXB0aW9uT3I8dm9pZD4mJik+JiYpIGZpbmFsOwogICAgIHZvaWQgc2tpcFdhaXRpbmcoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JikgZmluYWw7CkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXJ2aWNlV29y
a2VyRmFpbGVkVG9TdGFydChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VX
b3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJEYXRhJiYsIFN0cmluZyYmIHVzZXJBZ2VudCwgV2ViQ29yZTo6V29ya2VyVGhyZWFk
TW9kZSk7CiAgICAgdm9pZCB1cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQp
OwotICAgIHZvaWQgc3RhcnRGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25z
JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIGJvb2wgaXNT
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkKTsKKyAgICB2b2lkIHN0YXJ0RmV0
Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlJiYsIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkRW5hYmxlZCwgU3RyaW5nJiYgY2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgcmVz
dWx0aW5nQ2xpZW50SWRlbnRpZmllcik7CiAgICAgdm9pZCBjYW5jZWxGZXRjaChXZWJDb3JlOjpT
V1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGNvbnRpbnVlRGlkUmVj
ZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmll
cik7CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzJiYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEmJiBz
b3VyY2VEYXRhKTsKQEAgLTEwMSw3ICsxMDEsNiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTSEFS
RUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgZGlkU2F2ZVNjcmlw
dHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlciYmLCBIYXNoTWFwPFVSTCwgV2ViQ29yZTo6U2NyaXB0QnVmZmVyPiYmIGltcG9ydGVk
U2NyaXB0cyk7CiAjZW5kaWYKLSAgICB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0
ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNsaWVudERhdGE+JiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcik7CiAgICAgdm9p
ZCBtYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBW
ZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpOwogICAgIHZvaWQgc2V0
VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCk7CiAgICAgdm9pZCBjbG9zZSgpOwpAQCAtMTE3
LDcgKzExNiw2IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdl
SUQ7CiAKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRnJhbWVMb2Fk
ZXJDbGllbnQ+PiBtX2xvYWRlcnM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgRmluZENsaWVudEJ5
SWRlbnRpZmllckNhbGxiYWNrPiBtX2ZpbmRDbGllbnRCeUlkZW50aWZpZXJSZXF1ZXN0czsKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxs
Q2FsbGJhY2s+IG1fbWF0Y2hBbGxSZXF1ZXN0czsKICAgICB1aW50NjRfdCBtX3ByZXZpb3VzUmVx
dWVzdElkZW50aWZpZXIgeyAwIH07CiAgICAgU3RyaW5nIG1fdXNlckFnZW50OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBkNTQxYjgwMzE5
MmI4ZDU0ZDE4MjE3ZmIxMTI1NmRmMDA2OTUzMDIwLi5jNmExYThmYjM2NzZkZmNkN2YyZDhmNzQy
MGExZThiY2M5MGIzMTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQAogbWVzc2FnZXMgLT4gV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgSW5zdGFsbFNlcnZpY2VXb3Jr
ZXIoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSwg
c3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJEYXRhIHdvcmtlckRhdGEsIFN0cmluZyB1c2Vy
QWdlbnQsIGVudW06Ym9vbCBXZWJDb3JlOjpXb3JrZXJUaHJlYWRNb2RlIHdvcmtlclRocmVhZE1v
ZGUpCiAgICAgVXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUoV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGVudW06Ym9vbCBXZWJDb3JlOjpMYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkK
LSAgICBTdGFydEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNv
cmU6OkZldGNoT3B0aW9ucyBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RC
b2R5LCBTdHJpbmcgcmVmZXJyZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRFbmFibGVkKQorICAgIFN0YXJ0RmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRp
ZmllciBmZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBz
dHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zIG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UgcmVxdWVzdEJvZHksIFN0cmluZyByZWZlcnJlciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZEVuYWJsZWQsIFN0cmluZyBjbGllbnRJZGVudGlmZXIsIFN0cmluZyByZXN1
dGxpbmdDbGllbnRJZGVudGlmaWVyKQogICAgIENhbmNlbEZldGNoKFdlYkNvcmU6OlNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3Jl
OjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQogICAgIENvbnRpbnVlRGlkUmVjZWl2
ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElk
ZW50aWZpZXIpCiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlck9y
Q2xpZW50RGF0YSBzb3VyY2VEYXRhKQpAQCAtMzcsNyArMzcsNiBAQCBtZXNzYWdlcyAtPiBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKICNpZiBFTkFCTEUoU0hB
UkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBEaWRTYXZlU2NyaXB0c1Rv
RGlzayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgV2ViQ29yZTo6U2NyaXB0QnVmZmVyIHNjcmlwdCwgSGFzaE1hcDxVUkwsIFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcj4gaW1wb3J0ZWRTY3JpcHRzKTsKICNlbmRpZgotICAgIEZpbmRDbGllbnRC
eUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmllciwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gZGF0YSwgYm9v
bCBoYXNTZWN1cml0eUVycm9yKQogICAgIE1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IG1hdGNo
QWxsUmVxdWVzdElkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4gY2xpZW50c0RhdGEpCiAgICAgU2V0VXNlckFnZW50KFN0cmluZyB1c2VyQWdlbnQpCiAg
ICAgVXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0
b3JlIHN0b3JlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDYwNzhhN2Y2M2RlY2UwMTkyOTFlNzM5NjA5YTdkNDI3ODg4M2Rj
YjMuLjE0MTY0NzllNjk1MGI0OTU5NDY5MzViZTZkMTkxMDM4NTBmYzYxNTcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAyMi0wMS0xMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CisKKyAgICAgICAgTWFrZSBTZXJ2aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0ZWFkIG9m
IGEgc3RyaW5nIGRlcml2ZWQgZnJvbSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwNzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVk
IHRlc3RzIHRvIG5vdCByZWx5IG9uIHZpc2libGUgSUQgdG8gYmUgdGhlIHNlcmlhbGl6YXRpb24g
b2YgYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci4KKyAgICAgICAgRm9yIHRoYXQg
cmVhc29uLCBhZGQgaW50ZXJuYWxzIEFQSSB0byBnZXQgdGhlIGludGVybmFsIElEIGZyb20gYSBT
ZXJ2aWNlV29ya2VyQ2xpZW50LgorCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvY2xpZW50LWFkZGVkLXRvLWNsaWVudHMtd2hlbi1yZXN0b3JlZC1mcm9tLXBhZ2UtY2FjaGUu
aHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9jbGllbnQtcmVtb3Zl
ZC1mcm9tLWNsaWVudHMtd2hpbGUtaW4tcGFnZS1jYWNoZS5odG1sOgorICAgICAgICAqIGh0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9nZXRDbGllbnRJZHMtd29ya2VyLmpzOgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRz
LW1hdGNoQWxsLXdvcmtlci5qczoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2aWNld29ya2VyY2xpZW50cy1tYXRjaEFsbC5odHRwcy5odG1sOgorCiAyMDIyLTAxLTEx
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJv
Y2Vzc10gTWFrZSBTVkcgcmVzb3VyY2VzIGNyZWF0ZSByZW1vdGUgSW1hZ2VCdWZmZXJzIGZvciB0
aGVpciBkcmF3aW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBmNTYyODhlMDQz
ZWRjZjZlNjE0MWE2MGI2NWNiODgyNWIxZDdiOWFhLi4yMDdmMjZkYWMyYTc4ZWQ5MTAwNWYxNzg0
ZTJiNWIzOWRkYzU3Yjc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAyMi0wMS0xMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgTWFrZSBTZXJ2aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0ZWFkIG9mIGEg
c3RyaW5nIGRlcml2ZWQgZnJvbSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwNzAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtZXZlbnQuaHR0
cHMtZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAxLTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBOZXcgc2VydmljZSB3b3JrZXIgQVBJICdGZXRjaEV2ZW50Lmhh
bmRsZWQnIG5lZWRzIHRvIGJlIHN1cHBvcnRlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvY2xpZW50LWFkZGVkLXRvLWNsaWVudHMtd2hlbi1yZXN0
b3JlZC1mcm9tLXBhZ2UtY2FjaGUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vy
cy9zZXJ2aWNlL2NsaWVudC1hZGRlZC10by1jbGllbnRzLXdoZW4tcmVzdG9yZWQtZnJvbS1wYWdl
LWNhY2hlLmh0bWwKaW5kZXggMTA3OTdmMjhlMzRlNWE5NzIyMDg3MDFkMjdmM2FlZmQxNzUxODQ5
Zi4uNmEyMjg0ZWNmMmMzOWYxYjg4ZDY2ZGFiYzJmNWE3YWE2ZTFiMDIyYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvY2xpZW50LWFkZGVkLXRvLWNs
aWVudHMtd2hlbi1yZXN0b3JlZC1mcm9tLXBhZ2UtY2FjaGUuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9jbGllbnQtYWRkZWQtdG8tY2xpZW50cy13aGVu
LXJlc3RvcmVkLWZyb20tcGFnZS1jYWNoZS5odG1sCkBAIC03MCwxMiArNzAsMTIgQEAgbmF2aWdh
dG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2
ZW50KSB7CiB9KTsKIAogbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNl
cy9nZXRDbGllbnRJZHMtd29ya2VyLmpzIiwgeyB9KS50aGVuKGZ1bmN0aW9uKHJlZ2lzdHJhdGlv
bikgewotICAgIGV4cGVjdGVkQ2xpZW50SWRlbnRpZmllcnMucHVzaChpbnRlcm5hbHMuc2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXIoZG9jdW1lbnQpKTsKKyAgICBleHBlY3RlZENsaWVudElk
ZW50aWZpZXJzLnB1c2goaW50ZXJuYWxzLnNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50
aWZpZXIoZG9jdW1lbnQpKTsKIAogICAgIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5n
OwogICAgIG90aGVyV2luZG93ID0gb3Blbigib3RoZXJfcmVzb3VyY2VzL3Rlc3QuaHRtbCIpOwog
ICAgIG90aGVyV2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgICAgZXhwZWN0ZWRDbGll
bnRJZGVudGlmaWVycy5wdXNoKGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
cihvdGhlcldpbmRvdy5kb2N1bWVudCkpOworICAgICAgZXhwZWN0ZWRDbGllbnRJZGVudGlmaWVy
cy5wdXNoKGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKG90
aGVyV2luZG93LmRvY3VtZW50KSk7CiAgICAgICBzdGVwID0gIkJvdGhDbGllbnRzSW5pdGlhbGx5
QWN0aXZlIgogICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJnZXRDbGllbnRJZHMiKTsKICAgICB9
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvY2xp
ZW50LXJlbW92ZWQtZnJvbS1jbGllbnRzLXdoaWxlLWluLXBhZ2UtY2FjaGUuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2NsaWVudC1yZW1vdmVkLWZyb20tY2xp
ZW50cy13aGlsZS1pbi1wYWdlLWNhY2hlLmh0bWwKaW5kZXggZjlmY2Y1ZDM0MmIxM2MwYWRlMWI1
ZWZiYjFhNzQ1YzhjYWI2YTQ3Ny4uNjhhOWZjNjI0OWY1MDUzNTI5NGRmNDM5NzUxYjUzN2RmOGI2
YjA2NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
Y2xpZW50LXJlbW92ZWQtZnJvbS1jbGllbnRzLXdoaWxlLWluLXBhZ2UtY2FjaGUuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9jbGllbnQtcmVtb3ZlZC1m
cm9tLWNsaWVudHMtd2hpbGUtaW4tcGFnZS1jYWNoZS5odG1sCkBAIC02NSwxMiArNjUsMTQgQEAg
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0
aW9uKGV2ZW50KSB7CiB9KTsKIAogbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInJl
c291cmNlcy9nZXRDbGllbnRJZHMtd29ya2VyLmpzIiwgeyB9KS50aGVuKGZ1bmN0aW9uKHJlZ2lz
dHJhdGlvbikgewotICAgIHRvcENsaWVudElkZW50aWZpZXIgPSBpbnRlcm5hbHMuc2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXIoZG9jdW1lbnQpOworICAgIGlmICghd2luZG93LmludGVybmFs
cykKKyAgICAgICAgcmV0dXJuOworICAgIHRvcENsaWVudElkZW50aWZpZXIgPSBpbnRlcm5hbHMu
c2VydmljZVdvcmtlckNsaWVudEludGVybmFsSWRlbnRpZmllcihkb2N1bWVudCk7CiAKICAgICB3
b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKICAgICBvdGhlcldpbmRvdyA9IG9wZW4o
Im90aGVyX3Jlc291cmNlcy90ZXN0Lmh0bWwiKTsKICAgICBvdGhlcldpbmRvdy5vbmxvYWQgPSBm
dW5jdGlvbigpIHsKLSAgICAgIHdpbmRvd0NsaWVudElkZW50aWZpZXIgPSBpbnRlcm5hbHMuc2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXIob3RoZXJXaW5kb3cuZG9jdW1lbnQpOworICAgICAg
d2luZG93Q2xpZW50SWRlbnRpZmllciA9IGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SW50
ZXJuYWxJZGVudGlmaWVyKG90aGVyV2luZG93LmRvY3VtZW50KTsKICAgICAgIHN0ZXAgPSAiQm90
aENsaWVudHNJbml0aWFsbHlBY3RpdmUiCiAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoImdldENs
aWVudElkcyIpOwogICAgIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9yZXNvdXJjZXMvZ2V0Q2xpZW50SWRzLXdvcmtlci5qcyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9nZXRDbGllbnRJZHMtd29y
a2VyLmpzCmluZGV4IDk5ZGMxY2I4MjIxZDBkZjhkZjBjZWVjN2Y1ZmE2YjEwODNkNzNiMTguLmNl
MTliMjRmODA4MDRkYTBmNTUxNzkzYWRhN2FmZTY3ZWZlMDRjYzQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9nZXRDbGllbnRJZHMt
d29ya2VyLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jl
c291cmNlcy9nZXRDbGllbnRJZHMtd29ya2VyLmpzCkBAIC0zLDcgKzMsNyBAQCBzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICBjbGllbnRzLm1hdGNoQWxs
KHsgaW5jbHVkZVVuY29udHJvbGxlZCA6IHRydWUgfSkudGhlbihmdW5jdGlvbihjbGllbnRzKSB7
CiAgICAgICAgIGxldCBpZHMgPSBbXTsKICAgICAgICAgZm9yIChsZXQgY2xpZW50IG9mIGNsaWVu
dHMpCi0gICAgICAgICAgICBpZHMucHVzaChjbGllbnQuaWQpOworICAgICAgICAgICAgaWRzLnB1
c2goc2VsZi5pbnRlcm5hbHMuc2VydmljZVdvcmtlckNsaWVudEludGVybmFsSWRlbnRpZmllcihj
bGllbnQpKTsKICAgICAgICAgc291cmNlLnBvc3RNZXNzYWdlKGlkcyk7CiAgICAgfSk7CiB9KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZp
Y2V3b3JrZXJjbGllbnRzLW1hdGNoQWxsLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLW1hdGNoQWxsLXdvcmtlci5q
cwppbmRleCBiZGJhMjgyODYwNTNmMWZkYWQwMzVkMzkzM2MyODY4MDExNzM2OGMzLi5kYjZmMDU0
ZjY4OTJjZjAyYTY4ZGQ5OTlmYjg4NjhlMjJmM2NjYTcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1tYXRjaEFs
bC13b3JrZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
c2VydmljZXdvcmtlcmNsaWVudHMtbWF0Y2hBbGwtd29ya2VyLmpzCkBAIC0zLDYgKzMsMTUgQEAg
ZnVuY3Rpb24gd2FpdEZvcihkdXJhdGlvbikKICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29s
dmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgZHVyYXRpb24pKTsKIH0KIAorYXN5bmMgZnVuY3Rp
b24gc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXJGcm9tSW50ZXJuYWxJZGVudGlmaWVyKGlu
dGVybmFsSWRlbnRpZmllcikKK3sKKyAgICAgY29uc3QgY2xpZW50cyA9IGF3YWl0IHNlbGYuY2xp
ZW50cy5tYXRjaEFsbCh7IGluY2x1ZGVVbmNvbnRyb2xsZWQgOiB0cnVlIH0pOworICAgICBmb3Ig
KGxldCBjbGllbnQgb2YgY2xpZW50cykgeworICAgICAgICAgaWYgKGludGVybmFscy5zZXJ2aWNl
V29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKGNsaWVudCkgPT0gaW50ZXJuYWxJZGVudGlm
aWVyKQorICAgICAgICAgICAgcmV0dXJuIGNsaWVudC5pZDsKKyAgICAgfQorfQorCiBmdW5jdGlv
biBjaGVja0NsaWVudE5vdEluQ29udHJvbGxlZENsaWVudHMoY2xpZW50SWRlbnRpZmllcikKIHsK
ICAgICByZXR1cm4gc2VsZi5jbGllbnRzLm1hdGNoQWxsKCkudGhlbigoY2xpZW50cykgPT4gewpA
QCAtMzcsNyArNDYsNyBAQCBhc3luYyBmdW5jdGlvbiBkb1Rlc3RBZnRlck1lc3NhZ2UoZXZlbnQp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb25zdCBjbGllbnRJ
ZGVudGlmaWVyID0gZXZlbnQuZGF0YS5pZGVudGlmaWVyOworICAgICAgICBjb25zdCBjbGllbnRJ
ZGVudGlmaWVyID0gYXdhaXQgc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXJGcm9tSW50ZXJu
YWxJZGVudGlmaWVyKGV2ZW50LmRhdGEuaWRlbnRpZmllcik7CiAKICAgICAgICAgbGV0IHJlc3Vs
dCA9IGF3YWl0IGNoZWNrQ2xpZW50Tm90SW5Db250cm9sbGVkQ2xpZW50cyhjbGllbnRJZGVudGlm
aWVyKTsKICAgICAgICAgaWYgKHJlc3VsdCAhPT0gIlBBU1MiKSB7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1t
YXRjaEFsbC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2Uvc2VydmljZXdvcmtlcmNsaWVudHMtbWF0Y2hBbGwuaHR0cHMuaHRtbAppbmRleCAyZTZkYmY5
OTJkMDUyZDlmMWUzZTUxOGRkN2IwZTg1MWVmMjAwMGE3Li42OWI1ZjI4OTAxNmZlNDgwMWJlMWFh
OTAxMmI1ZGI5ZTZkYjQ2ZmEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1tYXRjaEFsbC5odHRwcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJj
bGllbnRzLW1hdGNoQWxsLmh0dHBzLmh0bWwKQEAgLTI3LDcgKzI3LDcgQEAgcHJvbWlzZV90ZXN0
KGFzeW5jICh0ZXN0KSA9PiB7CiB9LCAiU2V0dXAgd29ya2VyIik7CiAKIHByb21pc2VfdGVzdChh
c3luYyAodGVzdCkgPT4gewotICAgIGNvbnN0IHNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
ID0gaW50ZXJuYWxzLnNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKGRvY3VtZW50KTsKKyAg
ICBjb25zdCBzZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciA9IGludGVybmFscy5zZXJ2aWNl
V29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKGRvY3VtZW50KTsKICAgICB2YXIgcHJvbWlz
ZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICAgbmF2aWdhdG9y
LnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHRlc3Quc3RlcF9mdW5j
KChldmVudCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC5kYXRhLCAiUEFT
UyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtZXZlbnQuaHR0cHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtZXZlbnQuaHR0cHMtZXhwZWN0ZWQu
dHh0CmluZGV4IDVkMmI5YTQzMmRhMDM0NWY5MDMwNzdmMDBiNmVmMGE2MGZlZTJkYjQuLmRkMzZl
OWJiYTM0NWI4ZTU2MjMxZWU1MmQ4MmE1MmE5NTJjZThmMjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyL2ZldGNoLWV2ZW50Lmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNl
LXdvcmtlci9mZXRjaC1ldmVudC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTYsNyArNiw3IEBAIFBB
U1MgU2VydmljZSBXb3JrZXIgcmVzcG9uZHMgdG8gZmV0Y2ggZXZlbnQgdXNpbmcgcmVxdWVzdCBm
cmFnbWVudCB3aXRoIHN0cmluZwogUEFTUyBTZXJ2aWNlIFdvcmtlciByZXNwb25kcyB0byBmZXRj
aCBldmVudCB3aXRoIGJsb2IgYm9keQogUEFTUyBTZXJ2aWNlIFdvcmtlciByZXNwb25kcyB0byBm
ZXRjaCBldmVudCB3aXRoIHRoZSByZWZlcnJlciBVUkwKIFBBU1MgU2VydmljZSBXb3JrZXIgcmVz
cG9uZHMgdG8gZmV0Y2ggZXZlbnQgd2l0aCBhbiBleGlzdGluZyBjbGllbnQgaWQKLUZBSUwgU2Vy
dmljZSBXb3JrZXIgcmVzcG9uZHMgdG8gZmV0Y2ggZXZlbnQgd2l0aCB0aGUgY29ycmVjdCByZXN1
bHRpbmcgY2xpZW50IGlkIGFzc2VydF9lcXVhbHM6IFNlcnZpY2UgV29ya2VyIHNob3VsZCByZXNw
b25kIHdpdGggYW4gZW1wdHkgcmVzdWx0aW5nIGNsaWVudCBpZCBmb3Igc3VicmVzb3VyY2UgcmVx
dWVzdHMgZXhwZWN0ZWQgIlJlc3VsdGluZyBDbGllbnQgSUQgTm90IEZvdW5kIiBidXQgZ290ICJS
ZXN1bHRpbmcgQ2xpZW50IElEIEZvdW5kOiB1bmRlZmluZWQiCitQQVNTIFNlcnZpY2UgV29ya2Vy
IHJlc3BvbmRzIHRvIGZldGNoIGV2ZW50IHdpdGggdGhlIGNvcnJlY3QgcmVzdWx0aW5nIGNsaWVu
dCBpZAogUEFTUyBTZXJ2aWNlIFdvcmtlciBkb2VzIG5vdCByZXNwb25kIHRvIGZldGNoIGV2ZW50
CiBQQVNTIFNlcnZpY2UgV29ya2VyIHJlc3BvbmRzIHRvIGZldGNoIGV2ZW50IHdpdGggbnVsbCBy
ZXNwb25zZSBib2R5CiBQQVNTIFNlcnZpY2UgV29ya2VyIGZldGNoZXMgb3RoZXIgZmlsZSBpbiBm
ZXRjaCBldmVudAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449071</attachid>
            <date>2022-01-13 09:28:35 -0800</date>
            <delta_ts>2022-01-14 01:34:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235070-20220113182830.patch</filename>
            <type>text/plain</type>
            <size>94198</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3OTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAwNzkxMWQ1NjQ4ZDYwYWU3MmU0ZGRh
ZWFjNDQ0ZjAxMDNlMjZjNjUuLmFkY2ZiODY0NjNkZjVlYmE4ZjMyMmU3N2QzZjFjMDk3YzQ5OGI0
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDEtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5pZCBhIFVV
SUQgaW5zdGVhZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM1MDcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvVVVJRC5jcHA6CisgICAgICAgICogd3RmL1VVSUQuaDoKKyAgICAgICAgIEFk
ZCByb3V0aW5lIHRvIHN0cmluZ2lmeSBhIFVVSUQuCisgICAgICAgICBBZGQgcm91dGluZSB0byBw
YXJzZSBhIHN0cmluZ2lmaWVkIFVVSUQuCisKIDIwMjEtMTEtMjkgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTZXJpYWxpemUgQ1NTIDxudW1iZXI+IHZh
bHVlcyB3aXRoIHJvdW5kaW5nLCBsaW1pdGVkIGRlY2ltYWwgcHJlY2lzaW9uLCBhbmQgbm8gZXhw
b25lbnRzIHBlci1zcGVjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGJiZWMyNzUxOTAwNzM3NTljN2Q4ZTg4NzU5
YzNmMDFlMzk1NTkyNy4uMTAwMTMxZjYzN2NlZWMzZmVjMDU4ZDY5MTg2ZDc0MjJkZDZhZWQ1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIyLTAxLTEzICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFNlcnZpY2VXb3JrZXJDbGllbnQuaWQg
YSBVVUlEIGluc3RlYWQgb2YgYSBzdHJpbmcgZGVyaXZlZCBmcm9tIGEgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTA3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVwZGF0ZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciB0byBiZSBh
IHByb2Nlc3Mtc2NvcGVkIFVVSUQuCisgICAgICAgIFRoaXMgYWxsb3dzIHRvIGlkZW50aWZ5IHRo
ZSBwcm9jZXNzIHJ1bm5pbmcgYSBwcm9jZXNzIGFzIHdlbGwgYXMgZXhwb3NpbmcgdG8gSmF2YVNj
cmlwdCBjb250ZXh0IGlkZW50aWZpZXJzIGFzIFVVSURzLgorICAgICAgICBUaGlzIGlzIG1hdGNo
aW5nIHdoYXQgQ2hyb21lIGFuZCBGaXJlZm94IGFyZSBkb2luZy4KKyAgICAgICAgTWFrZSBTV1Nl
cnZlciBzdG9yZSB0aGUgbWFwaW5nIGZyb20gY29udGV4dCBVVUlEIHN0cmluZ3MgdG8gdGhlIGlu
dGVybmFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVycy4KKyAgICAgICAgVGhpcyBh
bGxvd3MgdG8gZmluZCBhIFNlcnZpY2VXb3JrZXJDbGllbnQgZGlyZWN0bHkgZnJvbSBpdHMgSmF2
YVNjcmlwdCBleHBvc2VkIGlkZW50aWZpZXIuCisgICAgICAgIFJlbmFtZSByZXNlcnZlZENsaWVu
dElkIGluIHJlc3VsdGluZ0NsaWVudElkIHRvIG1hdGNoIHRoZSBzcGVjLgorCisgICAgICAgIENv
dmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYi1sb2Nrcy9X
ZWJMb2NrUmVnaXN0cnkuY3BwOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAqIHBh
Z2UvbWFjL1BhZ2VNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vUHJvY2Vzc1F1YWxpZmllZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmg6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorICAgICAgICAqIHRl
c3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHA6CisgICAgICAgICogdGVzdGluZy9TZXJ2
aWNlV29ya2VySW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50
ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHA6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvRmV0Y2hFdmVudC5pZGw6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnQuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50LmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudHMuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
RmV0Y2guY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJGZXRjaC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmg6CisKIDIwMjItMDEtMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIE5ldyBzZXJ2aWNlIHdvcmtlciBBUEkgJ0ZldGNoRXZlbnQu
aGFuZGxlZCcgbmVlZHMgdG8gYmUgc3VwcG9ydGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU1NWY4OTk0NDYwMGQ2
YWFmMWRjY2JhYTk5NTVkMWUwZjM1YjkyMGQuLmRmNzExNTNlODQxNWQwZWRkM2I0M2RlMDE1ZDUw
MTk0ZGI3M2IxYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjItMDEtMTMgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgU2VydmljZVdvcmtl
ckNsaWVudC5pZCBhIFVVSUQgaW5zdGVhZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MDcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIGZpbmRCeUNsaWVudElkZW50aWZpZXIgaW50byBm
aW5kQnlWaXNpYmxlQ2xpZW50SWRlbnRpZmllcmFuIGFuZCBtYWtlIGl0IGFzbiBhc3luYyByZXBs
eS4KKyAgICAgICAgVXBkYXRlIGZldGNoIGV2ZW50IGNvZGUgcGF0aCB0byBzZW5kIHRoZSB2aXNp
YmxlIElEcyBvZiB0aGUgRmV0Y2hFdmVudCBmcm9tIG5ldHdvcmsgcHJvY2VzcyB0byB3b3JrZXIg
Y29udGV4dCBwcm9jZXNzLgorICAgICAgICBXZSBzdG9yZSB0aGVzZSBJRHMgaW4gTmV0d29ya1Jl
c291cmNlTG9hZGVyIHNvIHRoYXQgd2UgY2FuIGNoYW5nZSB0aGVtIGluIGNhc2Ugb2YgcmVkaXJl
Y3Rpb24gZm9yIG5hdmlnYXRpb25zLiAKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbjoKKwogMjAyMi0wMS0xMiAgRnLDqWTDqXJpYyBXYW5nICA8ZndhbmdA
aWdhbGlhLmNvbT4KIAogICAgICAgICBQcm90ZWN0IERvY3VtZW50TG9hZGVyIHdoZW4gYSByZWZl
cmVuY2UgdG8gaXRzIG1lbWJlcnMgaXMgdXNlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1VVSUQuY3BwIGIvU291cmNlL1dURi93dGYvVVVJRC5jcHAKaW5kZXggZjFkMDAwY2M4NTVkMzU5
NGUxZjU1ZThlNDQ1M2VlM2I5N2VhYTkxNy4uOGZiOTBkMzYwNTNkNzM4MTQxODkyNzE1OGE2OTVk
ZmE5ZWRmNDBmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVVJRC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvVVVJRC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvQVND
SUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5o
PgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdU
b0ludGVnZXJDb252ZXJzaW9uLmg+CiAKICNpZiBPUyhEQVJXSU4pCiAjaW5jbHVkZSA8c3lzL3N5
c2N0bC5oPgpAQCAtNTMsMTAgKzU0LDkgQEAgdW5zaWduZWQgVVVJRDo6aGFzaCgpIGNvbnN0CiAg
ICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeShyZWludGVycHJldF9jYXN0PGNvbnN0
IHVuc2lnbmVkIGNoYXIqPigmbV9kYXRhKSwgMTYpOwogfQogCi1TdHJpbmcgY3JlYXRlQ2Fub25p
Y2FsVVVJRFN0cmluZygpCitTdHJpbmcgVVVJRDo6dG9TdHJpbmcoKSBjb25zdAogewotICAgIHVu
c2lnbmVkIHJhbmRvbURhdGFbNF07Ci0gICAgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMo
cmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4ocmFuZG9tRGF0YSksIHNpemVvZihyYW5k
b21EYXRhKSk7CisgICAgYXV0byogcmFuZG9tRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dW5zaWduZWQqPigmbV9kYXRhKTsKIAogICAgIC8vIEZvcm1hdCBhcyBWZXJzaW9uIDQgVVVJRC4K
ICAgICByZXR1cm4gbWFrZVN0cmluZygKQEAgLTc0LDYgKzc0LDY1IEBAIFN0cmluZyBjcmVhdGVD
YW5vbmljYWxVVUlEU3RyaW5nKCkKICAgICApOwogfQogCitzdGQ6Om9wdGlvbmFsPFVVSUQ+IFVV
SUQ6OnBhcnNlKFN0cmluZ1ZpZXcgdmFsdWUpCit7CisgICAgLy8gVmVyc2lvbiA0IFVVSURzIGhh
dmUgdGhlIGZvcm0geHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4IHdpdGggaGV4
YWRlY2ltYWwgZGlnaXRzIGZvciB4IGFuZCBvbmUgb2YgOCwgOSwgQSwgb3IgQiBmb3IgeS4KKyAg
ICBpZiAodmFsdWUubGVuZ3RoKCkgIT0gMzYpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBp
ZiAodmFsdWVbOF0gIT0gJy0nIHx8IHZhbHVlWzEzXSAhPSAnLScgIHx8IHZhbHVlWzE0XSAhPSAn
NCcgfHwgdmFsdWVbMThdICE9ICctJyB8fCB2YWx1ZVsyM10gIT0gJy0nKQorICAgICAgICByZXR1
cm4geyB9OworCisgICAgdW5zaWduZWQgeSA9IHZhbHVlWzE5XTsKKyAgICBpZiAoeSA9PSAnOCcg
fHwgeSA9PSAnOScpCisgICAgICAgIHkgPSB5IC0gJzgnOworICAgIGVsc2UgaWYgKHkgPT0gJ2En
IHx8IHkgPT0gJ0EnKQorICAgICAgICB5ID0gMjsKKyAgICBlbHNlIGlmICh5ID09ICdiJyB8fCB5
ID09ICdCJykKKyAgICAgICAgeSA9IDM7CisgICAgZWxzZQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgYXV0byBmaXJzdFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1ZS5zdWJz
dHJpbmcoMCwgOCksIDE2KTsKKyAgICBpZiAoIWZpcnN0VmFsdWUpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICBhdXRvIHNlY29uZFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1
ZS5zdWJzdHJpbmcoOSwgNCksIDE2KTsKKyAgICBpZiAoIXNlY29uZFZhbHVlKQorICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgYXV0byB0aGlyZFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVuc2lnbmVk
Pih2YWx1ZS5zdWJzdHJpbmcoMTUsIDMpLCAxNik7CisgICAgaWYgKCF0aGlyZFZhbHVlKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBmb3VydGhWYWx1ZSA9IHBhcnNlSW50ZWdlcjx1
bnNpZ25lZD4odmFsdWUuc3Vic3RyaW5nKDIwLCAzKSwgMTYpOworICAgIGlmICghZm91cnRoVmFs
dWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGZpZnRoVmFsdWUgPSBwYXJzZUlu
dGVnZXI8dW5zaWduZWQ+KHZhbHVlLnN1YnN0cmluZygyNCwgNCksIDE2KTsKKyAgICBpZiAoIWZp
ZnRoVmFsdWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIHNpeHRoVmFsdWUgPSBw
YXJzZUludGVnZXI8dW5zaWduZWQ+KHZhbHVlLnN1YnN0cmluZygyOCwgOCksIDE2KTsKKyAgICBp
ZiAoIXNpeHRoVmFsdWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBVSW50MTI4SW1wbCB1
dWlkVmFsdWU7CisKKyAgICBhdXRvKiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+
KCZ1dWlkVmFsdWUpOworICAgIGRhdGFbMF0gPSAqZmlyc3RWYWx1ZTsKKyAgICBkYXRhWzFdID0g
KCpzZWNvbmRWYWx1ZSA8PCAxNikgfCAqdGhpcmRWYWx1ZTsKKyAgICBkYXRhWzJdID0gKCgqZm91
cnRoVmFsdWUgPDwgMTYpIHwgKmZpZnRoVmFsdWUpICsgKHkgPDwgMzApOworICAgIGRhdGFbM10g
PSAqc2l4dGhWYWx1ZTsKKworICAgIHJldHVybiBVVUlEKFdURk1vdmUodXVpZFZhbHVlKSk7Cit9
CisKK1N0cmluZyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkKK3sKKyAgICByZXR1cm4gVVVJ
RDo6Y3JlYXRlKCkudG9TdHJpbmcoKTsKK30KKwogU3RyaW5nIGJvb3RTZXNzaW9uVVVJRFN0cmlu
ZygpCiB7CiAjaWYgT1MoREFSV0lOKQpAQCAtOTUsMzEgKzE1NCw3IEBAIFN0cmluZyBib290U2Vz
c2lvblVVSURTdHJpbmcoKQogCiBib29sIGlzVmVyc2lvbjRVVUlEKFN0cmluZ1ZpZXcgdmFsdWUp
CiB7Ci0gICAgLy8gVmVyc2lvbiA0IFVVSURzIGhhdmUgdGhlIGZvcm0geHh4eHh4eHgteHh4eC00
eHh4LXl4eHgteHh4eHh4eHh4eHh4IHdpdGggaGV4YWRlY2ltYWwgZGlnaXRzIGZvciB4IGFuZCBv
bmUgb2YgOCwgOSwgQSwgb3IgQiBmb3IgeS4KLSAgICBpZiAodmFsdWUubGVuZ3RoKCkgIT0gMzYp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZvciAoYXV0byBjcHRyID0gMDsgY3B0ciA8
IDM2OyArK2NwdHIpIHsKLSAgICAgICAgaWYgKGNwdHIgPT0gOCB8fCBjcHRyID09IDEzIHx8IGNw
dHIgPT0gMTggfHwgY3B0ciA9PSAyMykgewotICAgICAgICAgICAgaWYgKHZhbHVlW2NwdHJdICE9
ICctJykKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY3B0ciA9PSAxNCkgewotICAgICAgICAgICAgaWYg
KHZhbHVlW2NwdHJdICE9ICc0JykKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY3B0ciA9PSAxOSkgewot
ICAgICAgICAgICAgYXV0byB5ID0gdmFsdWVbY3B0cl07Ci0gICAgICAgICAgICBpZiAoeSAhPSAn
OCcgJiYgeSAhPSAnOScgJiYgeSAhPSAnYScgJiYgeSAhPSAnQScgJiYgeSAhPSAnYicgJiYgeSAh
PSAnQicpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQodmFsdWVbY3B0cl0p
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gISFVVUlEOjpwYXJzZSh2YWx1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVVJRC5oIGIvU291cmNlL1dURi93dGYvVVVJRC5o
CmluZGV4IDU4YTUyNGE2NGQzNmE2MzExMDRlZmExMmRjOGNlNmRhMjM2Y2ZkMGYuLjJkODQyZDI5
MzNjOGEzODA0NjE1ZGMwMDAwMTk0MWZhY2MwMzJlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1VVSUQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VVUlELmgKQEAgLTQ1LDYgKzQ1LDggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gVVVJRCB7IH07CiAgICAgfQogCisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFVVSUQ+IHBhcnNlKFN0cmluZ1ZpZXcpOwor
CiAgICAgZXhwbGljaXQgVVVJRChTcGFuPGNvbnN0IHVpbnQ4X3QsIDE2PiBzcGFuKQogICAgIHsK
ICAgICAgICAgbWVtY3B5KCZtX2RhdGEsIHNwYW4uZGF0YSgpLCAxNik7CkBAIC04MCw2ICs4Miw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX2RhdGEgPT0gMTsgfQogICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBo
YXNoKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyB0b1N0cmluZygpIGNv
bnN0OwogCiBwcml2YXRlOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBVVUlEKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYi1sb2Nrcy9XZWJMb2NrUmVnaXN0cnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9ja1JlZ2lzdHJ5LmNwcApp
bmRleCBmNTUwNzgwYTgxZDYyNGYzMWQwZTE4MzM5M2U1NTE0MzUzNDBhMWMyLi44ZjdjYzI2NmMw
YzMzYjBiMzkzNzUwMTUzNmY5YzQwN2FiY2E3ZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYi1sb2Nrcy9XZWJMb2NrUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViLWxvY2tzL1dlYkxvY2tSZWdpc3RyeS5jcHAKQEAgLTIzNiwxMSArMjM2
LDExIEBAIHZvaWQgTG9jYWxXZWJMb2NrUmVnaXN0cnk6OlBlck9yaWdpblJlZ2lzdHJ5OjpzbmFw
c2hvdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlCiAgICAgV2ViTG9ja01hbmFnZXI6OlNuYXBz
aG90IHNuYXBzaG90OwogICAgIGZvciAoYXV0byYgcGFpciA6IG1fbG9ja1JlcXVlc3RRdWV1ZU1h
cCkgewogICAgICAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBwYWlyLnZhbHVlKQotICAgICAgICAg
ICAgc25hcHNob3QucGVuZGluZy5hcHBlbmQoeyBwYWlyLmtleSwgcmVxdWVzdC5tb2RlLCByZXF1
ZXN0LmNsaWVudElELnRvU3RyaW5nKCkgfSk7CisgICAgICAgICAgICBzbmFwc2hvdC5wZW5kaW5n
LmFwcGVuZCh7IHBhaXIua2V5LCByZXF1ZXN0Lm1vZGUsIHJlcXVlc3QuY2xpZW50SUQudG9WaXNp
YmxlU3RyaW5nKCkgfSk7CiAgICAgfQogICAgIGZvciAoYXV0byYgcGFpciA6IG1faGVsZExvY2tz
KSB7CiAgICAgICAgIGZvciAoYXV0byYgbG9ja0luZm8gOiBwYWlyLnZhbHVlKQotICAgICAgICAg
ICAgc25hcHNob3QuaGVsZC5hcHBlbmQoeyBwYWlyLmtleSwgbG9ja0luZm8ubW9kZSwgbG9ja0lu
Zm8uY2xpZW50SUQudG9TdHJpbmcoKSB9KTsKKyAgICAgICAgICAgIHNuYXBzaG90LmhlbGQuYXBw
ZW5kKHsgcGFpci5rZXksIGxvY2tJbmZvLm1vZGUsIGxvY2tJbmZvLmNsaWVudElELnRvVmlzaWJs
ZVN0cmluZygpIH0pOwogICAgIH0KIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc25h
cHNob3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cAppbmRleCA0NjFiOTk3OGFkOWI3ZTE1N2E0OTFjMDdlM2M5ZTcwYWY0MjFkZDg1Li4yOWRjZWVm
NTMzM2Y2OWRmMmU1ZjMwZWRlZmRkNjEzNTc3ZmU2NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGlj
OgogfTsKIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
Ci0gICAgOiBtX2lkZW50aWZpZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI6Omdl
bmVyYXRlVGhyZWFkU2FmZSgpKQorICAgIDogbV9pZGVudGlmaWVyKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQogewogICAgIExvY2tlciBsb2NrZXIgeyBhbGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2sgfTsKICAgICBhbGxTY3JpcHRFeGVjdXRpb25D
b250ZXh0c01hcCgpLmFkZChtX2lkZW50aWZpZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggMzJjODhiNWQzNmRiMDczODliN2ZjNjAzODRhZTJj
NjcxYzgxODA5MS4uZWY3NjNiNzkxMjkzNDk4ODVlNmZlNGZhZTkzMWQ2YzJhODY4MTFhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0yMDk1LDcgKzIwOTUs
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpsb2FkTWFpblJlc291cmNlKFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmICghbV90ZW1w
b3JhcnlTZXJ2aWNlV29ya2VyQ2xpZW50KSB7CiAgICAgICAgIC8vIFRoZSBtYWluIG5hdmlnYXRp
b24gbG9hZCB3aWxsIHRyaWdnZXIgdGhlIHJlZ2lzdHJhdGlvbiBvZiB0aGUgdGVtcCBjbGllbnQu
Ci0gICAgICAgIG1fdGVtcG9yYXJ5U2VydmljZVdvcmtlckNsaWVudCA9IFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKKyAgICAgICAgbV90ZW1w
b3JhcnlTZXJ2aWNlV29ya2VyQ2xpZW50ID0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXI6OmdlbmVyYXRlKCk7CiAgICAgICAgIEFTU0VSVCghdGVtcG9yYXJ5SWRlbnRpZmllclRvTG9h
ZGVyTWFwKCkuY29udGFpbnMoKm1fdGVtcG9yYXJ5U2VydmljZVdvcmtlckNsaWVudCkpOwogICAg
ICAgICB0ZW1wb3JhcnlJZGVudGlmaWVyVG9Mb2FkZXJNYXAoKS5hZGQoKm1fdGVtcG9yYXJ5U2Vy
dmljZVdvcmtlckNsaWVudCwgdGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMu
bW0KaW5kZXggN2FjZDU5N2FmYzgwNzc5OGJhZjIwNDg5ODY3ZDI2MjZlYjc4MjRhMS4uODIwNThh
ZmJhMjNhMWQyZTg2NDgxNmE3N2QwZDc3NzNhYWNkMmVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9Q
YWdlTWFjLm1tCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXpl
KCkKICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXUgbGl2ZSBkb2N1bWVudHM6IiwgRG9jdW1l
bnQ6OmFsbERvY3VtZW50cygpLnNpemUoKSk7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8q
IGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSB7CiAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogZG9jdW1lbnRUeXBlID0gaXM8U1ZHRG9jdW1lbnQ+KGRvY3VtZW50KSA/ICJT
VkdEb2N1bWVudCIgOiAiRG9jdW1lbnQiOwotICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygi
JXMgJXAgJXMgKHJlZkNvdW50ICVkLCByZWZlcmVuY2luZ05vZGVDb3VudCAlZCkgJXMiLCBkb2N1
bWVudFR5cGUsIGRvY3VtZW50LCBkb2N1bWVudC0+aWRlbnRpZmllcigpLnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgZG9jdW1lbnQtPnJlZkNvdW50KCksIGRvY3VtZW50LT5yZWZlcmVuY2luZ05v
ZGVDb3VudCgpLCBkb2N1bWVudC0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIlcyAlcCAlcyAocmVmQ291bnQgJWQsIHJlZmVyZW5j
aW5nTm9kZUNvdW50ICVkKSAlcyIsIGRvY3VtZW50VHlwZSwgZG9jdW1lbnQsIGRvY3VtZW50LT5p
ZGVudGlmaWVyKCkudG9EZWJ1Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGRvY3VtZW50LT5yZWZD
b3VudCgpLCBkb2N1bWVudC0+cmVmZXJlbmNpbmdOb2RlQ291bnQoKSwgZG9jdW1lbnQtPnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb2Nlc3NRdWFsaWZp
ZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb2Nlc3NRdWFsaWZpZWQuaAppbmRleCAy
ODVhNDI1NTM5MmNhN2RlZTY5OGYxY2JhNzMzMTJjYTliMjNiYTJiLi5hZTk4NzIzMmZhYjU4Njky
NWFlMGNiMTUyZGYxOTNmYjM2M2MyYmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Qcm9jZXNzUXVhbGlmaWVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJv
Y2Vzc1F1YWxpZmllZC5oCkBAIC02OSw2ICs2OSwxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICByZXR1cm4gbV9vYmplY3Q7CiAgICAgfQorICAgIGNvbnN0IFQmIG9iamVjdEhhc2goKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0OworICAgIH0KIAogICAgIFByb2Nlc3NJ
ZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QKICAgICB7CkBAIC05Myw3ICs5Nyw3
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQcm9jZXNzUXVhbGlmaWVkIGdlbmVyYXRlVGhyZWFk
U2FmZSgpIHsgcmV0dXJuIHsgVDo6Z2VuZXJhdGVUaHJlYWRTYWZlKCksIFByb2Nlc3M6OmlkZW50
aWZpZXIoKSB9OyB9CiAgICAgc3RhdGljIFByb2Nlc3NRdWFsaWZpZWQgZ2VuZXJhdGUoKSB7IHJl
dHVybiB7IFQ6OmdlbmVyYXRlKCksIFByb2Nlc3M6OmlkZW50aWZpZXIoKSB9OyB9Ci0gICAgU3Ry
aW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbWFrZVN0cmluZyhtX3Byb2Nlc3NJZGVudGlm
aWVyLnRvVUludDY0KCksICctJywgbV9vYmplY3QudG9VSW50NjQoKSk7IH0KKyAgICBTdHJpbmcg
dG9EZWJ1Z1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1ha2VTdHJpbmcobV9wcm9jZXNzSWRlbnRp
Zmllci50b1VJbnQ2NCgpLCAnLScsIG1fb2JqZWN0LnRvVUludDY0KCkpOyB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dCB7IGVuY29kZXIgPDwgbV9vYmplY3QgPDwgbV9wcm9jZXNzSWRlbnRpZmllcjsgfQogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NRdWFs
aWZpZWQ+IGRlY29kZShEZWNvZGVyJik7CkBAIC0xMjAsMTQgKzEyNCwxNCBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NRdWFsaWZpZWQ8VD4+IFByb2Nl
c3NRdWFsaWZpZWQ8VAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBpbmxpbmUgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUHJvY2Vzc1F1YWxpZmllZDxUPiYgcHJv
Y2Vzc1F1YWxpZmllZCkKIHsKLSAgICB0cyA8PCAiUHJvY2Vzc1F1YWxpZmllZCgiIDw8IHByb2Nl
c3NRdWFsaWZpZWQub2JqZWN0KCkgPDwgIiwgIiA8PCBwcm9jZXNzUXVhbGlmaWVkLnByb2Nlc3NJ
ZGVudGlmaWVyKCkgPDwgJyknOworICAgIHRzIDw8ICJQcm9jZXNzUXVhbGlmaWVkKCIgPDwgcHJv
Y2Vzc1F1YWxpZmllZC50b0RlYnVnU3RyaW5nKCkgPDwgJyknOwogICAgIHJldHVybiB0czsKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIs
IGNvbnN0IFByb2Nlc3NRdWFsaWZpZWQ8VD4mIHByb2Nlc3NRdWFsaWZpZWQpCiB7Ci0gICAgYWRk
KGhhc2hlciwgcHJvY2Vzc1F1YWxpZmllZC5vYmplY3QoKSk7CisgICAgYWRkKGhhc2hlciwgcHJv
Y2Vzc1F1YWxpZmllZC5vYmplY3RIYXNoKCkpOwogICAgIGFkZChoYXNoZXIsIHByb2Nlc3NRdWFs
aWZpZWQucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oCmluZGV4
IGUzNmY0MjI4MzAxNzkxZmNlM2UzNzhiZjA2MTE1NTViNjk5Y2I3OWEuLjM1Y2I4M2EyNzg2NzZi
NTI2Y2Y4YjcxMTEyZGU2MDU2YWJjMjU3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaApAQCAtMjcs
MTAgKzI3LDk4IEBACiAKICNpbmNsdWRlICJQcm9jZXNzUXVhbGlmaWVkLmgiCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVVVJRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWVudW0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXJUeXBlIHsgfTsKLXVz
aW5nIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyID0gUHJvY2Vzc1F1YWxpZmllZDxP
YmplY3RJZGVudGlmaWVyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyVHlwZT4+Owor
dGVtcGxhdGUgPD4KK2NsYXNzIFByb2Nlc3NRdWFsaWZpZWQ8VVVJRD4geworcHVibGljOgorICAg
IFByb2Nlc3NRdWFsaWZpZWQoKQorICAgICAgICA6IG1fb2JqZWN0KFdURjo6VUludDEyOEltcGwo
MCkpCisgICAgeworICAgIH0KKworICAgIFByb2Nlc3NRdWFsaWZpZWQoVVVJRCYmIG9iamVjdCwg
UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAgIDogbV9vYmplY3Qo
V1RGTW92ZShvYmplY3QpKQorICAgICAgICAsIG1fcHJvY2Vzc0lkZW50aWZpZXIocHJvY2Vzc0lk
ZW50aWZpZXIpCisgICAgeworICAgIH0KKworICAgIFByb2Nlc3NRdWFsaWZpZWQoY29uc3QgVVVJ
RCYgb2JqZWN0LCBQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAg
OiBtX29iamVjdChvYmplY3QpCisgICAgICAgICwgbV9wcm9jZXNzSWRlbnRpZmllcihwcm9jZXNz
SWRlbnRpZmllcikKKyAgICB7CisgICAgfQorCisgICAgUHJvY2Vzc1F1YWxpZmllZChXVEY6Okhh
c2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9vYmplY3QoV1RGOjpIYXNoVGFi
bGVEZWxldGVkVmFsdWUpCisgICAgICAgICwgbV9wcm9jZXNzSWRlbnRpZmllcihXVEY6Okhhc2hU
YWJsZURlbGV0ZWRWYWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gISFtX3Byb2Nlc3NJZGVudGlmaWVyOworICAgIH0K
KworICAgIGNvbnN0IFVVSUQmIG9iamVjdCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9vYmplY3Q7CisgICAgfQorCisgICAgdW5zaWduZWQgb2JqZWN0SGFzaCgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9vYmplY3QuaGFzaCgpOworICAgIH0KKworICAgIFByb2Nlc3NJ
ZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX3Byb2Nlc3NJZGVudGlmaWVyOworICAgIH0KKworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcHJvY2Vzc0lkZW50aWZp
ZXIuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgUHJvY2Vzc1F1YWxpZmllZCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9vYmplY3QgPT0gb3RoZXIubV9vYmplY3QKKyAgICAgICAgICAgICYmIG1fcHJvY2Vz
c0lkZW50aWZpZXIgPT0gb3RoZXIubV9wcm9jZXNzSWRlbnRpZmllcjsKKyAgICB9CisKKyAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgUHJvY2Vzc1F1YWxpZmllZCYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisgICAgc3RhdGlj
IFByb2Nlc3NRdWFsaWZpZWQgZ2VuZXJhdGUoKSB7IHJldHVybiB7IFVVSUQ6OmNyZWF0ZSgpLCBQ
cm9jZXNzOjppZGVudGlmaWVyKCkgfTsgfQorICAgIFN0cmluZyB0b0RlYnVnU3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gbWFrZVN0cmluZyhtX3Byb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCksICct
JywgbV9vYmplY3QudG9TdHJpbmcoKSk7IH0KKyAgICBTdHJpbmcgdG9WaXNpYmxlU3RyaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9vYmplY3QudG9TdHJpbmcoKTsgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QgeyBlbmNv
ZGVyIDw8IG1fb2JqZWN0IDw8IG1fcHJvY2Vzc0lkZW50aWZpZXI7IH0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm9jZXNzUXVhbGlmaWVkPiBk
ZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFVVSUQgbV9vYmplY3Q7CisgICAgUHJv
Y2Vzc0lkZW50aWZpZXIgbV9wcm9jZXNzSWRlbnRpZmllcjsKK307CisKKwordGVtcGxhdGU8dHlw
ZW5hbWUgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxQcm9jZXNzUXVhbGlmaWVkPFVVSUQ+PiBQcm9j
ZXNzUXVhbGlmaWVkPFVVSUQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6
Om9wdGlvbmFsPFVVSUQ+IG9iamVjdDsKKyAgICBkZWNvZGVyID4+IG9iamVjdDsKKyAgICBpZiAo
IW9iamVjdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFByb2Nlc3NJZGVudGlmaWVyPiBwcm9jZXNzSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHBy
b2Nlc3NJZGVudGlmaWVyOworICAgIGlmICghcHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgeyAqb2JqZWN0LCAqcHJvY2Vzc0lkZW50
aWZpZXIgfSB9OworfQorCit1c2luZyBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciA9
IFByb2Nlc3NRdWFsaWZpZWQ8VVVJRD47CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCAzNWE2NmUwOTVlNzVhMTM0NzljN2IxYzU2MmNlMTE5MWFiMWVlMTk0Li4xMzk4
ZjVkZGFkZWQxMzcwZGFjZmQwZmM3YWRhOGU5MzM1NWRhN2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC0yNzYyLDE0ICsyNzYyLDE2IEBAIHVuc2lnbmVkIEludGVybmFs
czo6bnVtYmVyT2ZSZXNpemVPYnNlcnZlcnMoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25z
dAogICAgIHJldHVybiBkb2N1bWVudC5udW1iZXJPZlJlc2l6ZU9ic2VydmVycygpOwogfQogCi11
aW50NjRfdCBJbnRlcm5hbHM6OmRvY3VtZW50SWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYgZG9j
dW1lbnQpIGNvbnN0CitTdHJpbmcgSW50ZXJuYWxzOjpkb2N1bWVudElkZW50aWZpZXIoY29uc3Qg
RG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogewotICAgIHJldHVybiBkb2N1bWVudC5pZGVudGlm
aWVyKCkub2JqZWN0KCkudG9VSW50NjQoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQuaWRlbnRpZmll
cigpLm9iamVjdCgpLnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wgSW50ZXJuYWxzOjppc0RvY3VtZW50
QWxpdmUodWludDY0X3QgZG9jdW1lbnRJZGVudGlmaWVyKSBjb25zdAorYm9vbCBJbnRlcm5hbHM6
OmlzRG9jdW1lbnRBbGl2ZShjb25zdCBTdHJpbmcmIGRvY3VtZW50SWRlbnRpZmllcikgY29uc3QK
IHsKLSAgICByZXR1cm4gRG9jdW1lbnQ6OmFsbERvY3VtZW50c01hcCgpLmNvbnRhaW5zKHsgbWFr
ZU9iamVjdElkZW50aWZpZXI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXJUeXBlPihk
b2N1bWVudElkZW50aWZpZXIpLCBQcm9jZXNzOjppZGVudGlmaWVyKCkgfSk7CisgICAgYXV0byB1
dWlkID0gVVVJRDo6cGFyc2UoZG9jdW1lbnRJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQodXVpZCk7
CisgICAgcmV0dXJuIHV1aWQgPyBEb2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuY29udGFpbnMo
eyAqdXVpZCwgUHJvY2Vzczo6aWRlbnRpZmllcigpIH0pIDogZmFsc2U7CiB9CiAKIHVpbnQ2NF90
IEludGVybmFsczo6c3RvcmFnZUFyZWFNYXBDb3VudCgpIGNvbnN0CkBAIC0yODA4LDkgKzI4MTAs
OSBAQCBib29sIEludGVybmFsczo6aXNBbnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgpIGNvbnN0
CiAgICAgcmV0dXJuIFdvcmtsZXRHbG9iYWxTY29wZTo6bnVtYmVyT2ZXb3JrbGV0R2xvYmFsU2Nv
cGVzKCk7CiB9CiAKLVN0cmluZyBJbnRlcm5hbHM6OnNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKK1N0cmluZyBJbnRlcm5hbHM6OnNl
cnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQmIGRvY3Vt
ZW50KSBjb25zdAogewotICAgIHJldHVybiBkb2N1bWVudC5pZGVudGlmaWVyKCkudG9TdHJpbmco
KTsKKyAgICByZXR1cm4gZG9jdW1lbnQuaWRlbnRpZmllcigpLnRvRGVidWdTdHJpbmcoKTsKIH0K
IAogUmVmUHRyPFdpbmRvd1Byb3h5PiBJbnRlcm5hbHM6Om9wZW5EdW1teUluc3BlY3RvckZyb250
ZW5kKGNvbnN0IFN0cmluZyYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXgg
ODhkMWY5ZmM2N2RhMGMzYzU4Nzk2NTk2OTVjNzRkZDU3MmJkOTFhNi4uZmYxY2VmOTZkNzg0YmFh
MGVlZTUxMDUxNTk4NWNiYWRkOTczNDhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CkBAIC00OTAsOCArNDkwLDggQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZSZXNp
emVPYnNlcnZlcnMoY29uc3QgRG9jdW1lbnQmKSBjb25zdDsKIAotICAgIHVpbnQ2NF90IGRvY3Vt
ZW50SWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYpIGNvbnN0OwotICAgIGJvb2wgaXNEb2N1bWVu
dEFsaXZlKHVpbnQ2NF90IGRvY3VtZW50SWRlbnRpZmllcikgY29uc3Q7CisgICAgU3RyaW5nIGRv
Y3VtZW50SWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYpIGNvbnN0OworICAgIGJvb2wgaXNEb2N1
bWVudEFsaXZlKGNvbnN0IFN0cmluZyYgZG9jdW1lbnRJZGVudGlmaWVyKSBjb25zdDsKIAogICAg
IHVpbnQ2NF90IHN0b3JhZ2VBcmVhTWFwQ291bnQoKSBjb25zdDsKIApAQCAtNTAzLDcgKzUwMyw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNBbnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgpIGNv
bnN0OwogCi0gICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKGNvbnN0IERv
Y3VtZW50JikgY29uc3Q7CisgICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElk
ZW50aWZpZXIoY29uc3QgRG9jdW1lbnQmKSBjb25zdDsKIAogICAgIFJlZlB0cjxXaW5kb3dQcm94
eT4gb3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZv
aWQgY2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKaW5kZXggZjlhNWJiODIwOTYwYzQwYWQyNDNmZTdkMjIwZTFlYTczYWViOTI0NS4u
ZWQ0NDMxOWY1NWJkYjAyMmJlOGIxM2UwMzkwNDVjMWMyOGM4ZjIxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtOTIwLDggKzkyMCw4IEBAIHR5cGVkZWYgKEZldGNoUmVx
dWVzdCBvciBGZXRjaFJlc3BvbnNlKSBGZXRjaE9iamVjdDsKICAgICBbQ29uZGl0aW9uYWw9TUVE
SUFfU1RSRUFNXSBib29sZWFuIGlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVk
KCk7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gYm9vbGVhbiBzaG91bGRBdWRpb1Ry
YWNrUGxheShBdWRpb1RyYWNrIHRyYWNrKTsKIAotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBkb2N1
bWVudElkZW50aWZpZXIoRG9jdW1lbnQgZG9jdW1lbnQpOwotICAgIGJvb2xlYW4gaXNEb2N1bWVu
dEFsaXZlKHVuc2lnbmVkIGxvbmcgbG9uZyBkb2N1bWVudElkZW50aWZpZXIpOworICAgIERPTVN0
cmluZyBkb2N1bWVudElkZW50aWZpZXIoRG9jdW1lbnQgZG9jdW1lbnQpOworICAgIGJvb2xlYW4g
aXNEb2N1bWVudEFsaXZlKERPTVN0cmluZyBkb2N1bWVudElkZW50aWZpZXIpOwogCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyBzdG9yYWdlQXJlYU1hcENvdW50Owog
CkBAIC05MzMsNyArOTMzLDcgQEAgdHlwZWRlZiAoRmV0Y2hSZXF1ZXN0IG9yIEZldGNoUmVzcG9u
c2UpIEZldGNoT2JqZWN0OwogICAgIGJvb2xlYW4gaXNBbnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2
ZSgpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgcHJvY2Vzc0lkZW50aWZpZXI7Ci0g
ICAgRE9NU3RyaW5nIHNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKERvY3VtZW50IGRvY3Vt
ZW50KTsKKyAgICBET01TdHJpbmcgc2VydmljZVdvcmtlckNsaWVudEludGVybmFsSWRlbnRpZmll
cihEb2N1bWVudCBkb2N1bWVudCk7CiAgICAgUHJvbWlzZTx1bmRlZmluZWQ+IHN0b3JlUmVnaXN0
cmF0aW9uc09uRGlzaygpOwogICAgIFByb21pc2U8ZG91YmxlPiBzZW5kSDJQaW5nKERPTVN0cmlu
ZyB1cmwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3Jr
ZXJJbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50
ZXJuYWxzLmNwcAppbmRleCBmOGQ2YzdhYWIyMGRkODI5NDlmMzdhYjkxNTBlODk1ZDc1YzU5ZTQw
Li5mMzQ0Y2RjMTM4MGI2OTY2ZDQ4NzAyMzg0MDA4Mzk2OWFmNDllZjRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKQEAgLTMzLDYg
KzMzLDcgQEAKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiUHVzaFN1
YnNjcmlwdGlvbkRhdGEuaCIKICNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiU2VydmljZVdvcmtlckNsaWVudC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24uaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAKQEAgLTE5Myw2ICsxOTQsMTEg
QEAgYm9vbCBTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpmZXRjaEV2ZW50SXNTYW1lU2l0ZShGZXRj
aEV2ZW50JiBldmVudCkKICAgICByZXR1cm4gZXZlbnQucmVxdWVzdCgpLmludGVybmFsUmVxdWVz
dCgpLmlzU2FtZVNpdGUoKTsKIH0KIAorU3RyaW5nIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OnNl
cnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIoY29uc3QgU2VydmljZVdvcmtlckNs
aWVudCYgY2xpZW50KQoreworICAgIHJldHVybiBjbGllbnQuaWRlbnRpZmllcigpLnRvRGVidWdT
dHJpbmcoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmgKaW5kZXggYmE2NzJk
NTJmYjE1YWM3MmUxMDY4ZDdkNzI1ZjQ1MTNmN2QwNzg5Mi4uZjU1NjdhOGUwYjZlMDdiYmY3NDk0
MDMxM2E5YTRjMjc2NjkwM2EyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9T
ZXJ2aWNlV29ya2VySW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2
aWNlV29ya2VySW50ZXJuYWxzLmgKQEAgLTQwLDYgKzQwLDcgQEAgY2xhc3MgRmV0Y2hFdmVudDsK
IGNsYXNzIEZldGNoUmVzcG9uc2U7CiBjbGFzcyBQdXNoU3Vic2NyaXB0aW9uOwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFNlcnZpY2VXb3JrZXJDbGllbnQ7CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJlZDsKIApAQCAtNzEs
NiArNzIsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGZldGNoRXZlbnRJc1NhbWVTaXRlKEZldGNo
RXZlbnQmKTsKIAorICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlm
aWVyKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnQmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBTZXJ2aWNlV29ya2VySW50ZXJuYWxzKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKaW5k
ZXggNThmZWRjMTBkZWFhOWRkYzgyMjk5ZmQ4YzVkMWU1NDY4Nzg1MDUxZi4uOWUzZGQ2ODVkMmE1
OTIwYTQ2NmRlOGJmYzk5OTAwZmRkMzhlYmFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCkBAIC01MSw0ICs1MSw2IEBACiAgICAg
UHVzaFN1YnNjcmlwdGlvbiBjcmVhdGVQdXNoU3Vic2NyaXB0aW9uKFVTVlN0cmluZyBlbmRwb2lu
dCwgRXBvY2hUaW1lU3RhbXA/IGV4cGlyYXRpb25UaW1lLCBBcnJheUJ1ZmZlciBzZXJ2ZXJWQVBJ
RFB1YmxpY0tleSwgQXJyYXlCdWZmZXIgY2xpZW50RUNESFB1YmxpY0tleSwgQXJyYXlCdWZmZXIg
YXV0aCk7CiAKICAgICBib29sZWFuIGZldGNoRXZlbnRJc1NhbWVTaXRlKEZldGNoRXZlbnQgZXZl
bnQpOworCisgICAgRE9NU3RyaW5nIHNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZp
ZXIoU2VydmljZVdvcmtlckNsaWVudCBjbGllbnQpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmNwcAppbmRleCA0N2JlMmFlMDJjYjNlZDQ2N2JhN2Y5
ZmE4ZTQ2YWRkYjQzOGJmODcxLi41NWQzMzA3YTQ0MDlkN2M2YWJmODg1ODc4ODQ5YmI1ZjljYzE3
OTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuY3Bw
CkBAIC02MSw3ICs2MSw3IEBAIEZldGNoRXZlbnQ6OkZldGNoRXZlbnQoSlNDOjpKU0dsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0LCBjb25zdCBBdG9tU3RyaW5nJiB0eXBlCiAgICAgOiBFeHRlbmRh
YmxlRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIsIGlzVHJ1c3RlZCkKICAgICAsIG1fcmVxdWVzdChp
bml0aWFsaXplci5yZXF1ZXN0LnJlbGVhc2VOb25OdWxsKCkpCiAgICAgLCBtX2NsaWVudElkKFdU
Rk1vdmUoaW5pdGlhbGl6ZXIuY2xpZW50SWQpKQotICAgICwgbV9yZXNlcnZlZENsaWVudElkKFdU
Rk1vdmUoaW5pdGlhbGl6ZXIucmVzZXJ2ZWRDbGllbnRJZCkpCisgICAgLCBtX3Jlc3VsdGluZ0Ns
aWVudElkKFdURk1vdmUoaW5pdGlhbGl6ZXIucmVzdWx0aW5nQ2xpZW50SWQpKQogICAgICwgbV90
YXJnZXRDbGllbnRJZChXVEZNb3ZlKGluaXRpYWxpemVyLnRhcmdldENsaWVudElkKSkKICAgICAs
IG1faGFuZGxlZChyZXRyaWV2ZUhhbmRsZWRQcm9taXNlKGdsb2JhbE9iamVjdCwgV1RGTW92ZShp
bml0aWFsaXplci5oYW5kbGVkKSkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L0ZldGNoRXZlbnQuaAppbmRleCAxY2Q0NjE2ZWYzNDQ1M2VjY2JlYmYwYzYxYjY0ZTZkOGI1ODkw
NzA1Li5jNTNmZDU2YTlmZTgyOTNmNzg3MTkxODY2YmU2NGQ5NWE2YjBlMDcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAg
cHVibGljOgogICAgIHN0cnVjdCBJbml0IDogRXh0ZW5kYWJsZUV2ZW50SW5pdCB7CiAgICAgICAg
IFJlZlB0cjxGZXRjaFJlcXVlc3Q+IHJlcXVlc3Q7CiAgICAgICAgIFN0cmluZyBjbGllbnRJZDsK
LSAgICAgICAgU3RyaW5nIHJlc2VydmVkQ2xpZW50SWQ7CisgICAgICAgIFN0cmluZyByZXN1bHRp
bmdDbGllbnRJZDsKICAgICAgICAgU3RyaW5nIHRhcmdldENsaWVudElkOwogICAgICAgICBSZWZQ
dHI8RE9NUHJvbWlzZT4gaGFuZGxlZDsKICAgICB9OwpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6
CiAKICAgICBGZXRjaFJlcXVlc3QmIHJlcXVlc3QoKSB7IHJldHVybiBtX3JlcXVlc3QuZ2V0KCk7
IH0KICAgICBjb25zdCBTdHJpbmcmIGNsaWVudElkKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRJ
ZDsgfQotICAgIGNvbnN0IFN0cmluZyYgcmVzZXJ2ZWRDbGllbnRJZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzZXJ2ZWRDbGllbnRJZDsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVzdWx0aW5nQ2xpZW50
SWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdGluZ0NsaWVudElkOyB9CiAgICAgY29uc3QgU3Ry
aW5nJiB0YXJnZXRDbGllbnRJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0Q2xpZW50SWQ7IH0K
ICAgICBET01Qcm9taXNlJiBoYW5kbGVkKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGVkLmdldCgp
OyB9CiAKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxGZXRjaFJlcXVlc3Q+
IG1fcmVxdWVzdDsKICAgICBTdHJpbmcgbV9jbGllbnRJZDsKLSAgICBTdHJpbmcgbV9yZXNlcnZl
ZENsaWVudElkOworICAgIFN0cmluZyBtX3Jlc3VsdGluZ0NsaWVudElkOwogICAgIFN0cmluZyBt
X3RhcmdldENsaWVudElkOwogCiAgICAgYm9vbCBtX3Jlc3BvbmRXaXRoRW50ZXJlZCB7IGZhbHNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVu
dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5pZGwKaW5k
ZXggOTYwNjVjNjg4MzQ4MmIyMDhkZTg0MzQ3ZjQ3ZmRiYjg0MjU3ODExMi4uNWFhY2M1ZGU1ZGEz
NmZlNTI5NTNiYzgxYTQzZTE2ZTBjOGIyNmMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9GZXRjaEV2ZW50LmlkbApAQCAtMzUsNyArMzUsNyBAQAogICAgIFtTYW1lT2Jq
ZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgRmV0Y2hSZXF1ZXN0IHJlcXVlc3Q7CiAgICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEVuYWJsZWRCeVNldHRpbmc9U2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZF0gcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2U8YW55
PiBwcmVsb2FkUmVzcG9uc2U7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBjbGll
bnRJZDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJlc2VydmVkQ2xpZW50SWQ7
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyByZXN1bHRpbmdDbGllbnRJZDsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRhcmdldENsaWVudElkOwogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBQcm9taXNlPHVuZGVmaW5lZD4gaGFuZGxlZDsKIApAQCAtNDUsNyArNDUs
NyBAQAogZGljdGlvbmFyeSBGZXRjaEV2ZW50SW5pdCA6IEV4dGVuZGFibGVFdmVudEluaXQgewog
ICAgIHJlcXVpcmVkIEZldGNoUmVxdWVzdCByZXF1ZXN0OwogICAgIERPTVN0cmluZyBjbGllbnRJ
ZCA9ICIiOwotICAgIERPTVN0cmluZyByZXNlcnZlZENsaWVudElkID0gIiI7CisgICAgRE9NU3Ry
aW5nIHJlc3VsdGluZ0NsaWVudElkID0gIiI7CiAgICAgRE9NU3RyaW5nIHRhcmdldENsaWVudElk
ID0gIiI7CiAgICAgUHJvbWlzZTx1bmRlZmluZWQ+IGhhbmRsZWQ7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCmlu
ZGV4IDU5NmI5Y2RjOTk0ZjU1MDgwYjYzOTE3MTg5Yjc4ZWI4Zjc3Y2QzMzQuLjA5NTBjYjkzYjJl
Y2UxMWE0YjQ5YWM5MTAzZDdmZGZmYjA3N2NkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAKQEAgLTgwLDcgKzgw
LDcgQEAgYXV0byBTZXJ2aWNlV29ya2VyQ2xpZW50OjpmcmFtZVR5cGUoKSBjb25zdCAtPiBGcmFt
ZVR5cGUKIAogU3RyaW5nIFNlcnZpY2VXb3JrZXJDbGllbnQ6OmlkKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gaWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIGlkZW50aWZpZXIoKS50
b1Zpc2libGVTdHJpbmcoKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gU2VydmljZVdvcmtlckNs
aWVudDo6cG9zdE1lc3NhZ2UoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgbWVzc2FnZVZhbHVlLCBTdHJ1Y3R1cmVkU2VyaWFsaXplT3B0aW9ucyYmIG9wdGlv
bnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudC5pZGwKaW5kZXggZTgxYmFlM2Q2MjYwYTdlMTNhZWVhZDU3ZDJhMTRmNjA5ZDBk
NmE0NC4uNDIwNTQ2MmUwOWMzYTgwMjhjY2RhODMyNTBiMDZlOWMxYTQ2NTMwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50
LmlkbApAQCAtMjcsNiArMjcsNyBAQAogICAgIENvbmRpdGlvbmFsPVNFUlZJQ0VfV09SS0VSLAog
ICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgRW5hYmxlZEF0UnVudGltZT1TZXJ2aWNlV29ya2Vy
RW5hYmxlZCwKKyAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKICAgICBFeHBvc2VkPVNl
cnZpY2VXb3JrZXIsCiAgICAgSW50ZXJmYWNlTmFtZT1DbGllbnQsCiBdIGludGVyZmFjZSBTZXJ2
aWNlV29ya2VyQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCmluZGV4IGFiNmI1ZTg0N2YyYmJlZDc2OGMz
ZDE5MDlhYjFhODE4NTNiMGMyMTYuLjZlNDVhYTE3NmQwN2YyMjkxYmJlMjM1NTA3NzY1YmFiNTg4
YWMxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnRzLmNwcApAQCAtMzgsNTUgKzM4LDI2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RhdGljIGlubGluZSB2b2lkIGRpZEZpbmlzaEdldFJlcXVlc3QoU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlJiBzY29wZSwgRGVmZXJyZWRQcm9taXNlJiBwcm9taXNlLCBFeGNl
cHRpb25PcjxzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPj4mJiBjbGllbnRE
YXRhKQorc3RhdGljIGlubGluZSB2b2lkIGRpZEZpbmlzaEdldFJlcXVlc3QoU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlJiBzY29wZSwgRGVmZXJyZWRQcm9taXNlJiBwcm9taXNlLCBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmIGNsaWVudERhdGEpCiB7Ci0gICAgaWYgKGNs
aWVudERhdGEuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoY2xpZW50
RGF0YS5yZWxlYXNlRXhjZXB0aW9uKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1
dG8gZGF0YSA9IGNsaWVudERhdGEucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgaWYgKCFkYXRh
KSB7CisgICAgaWYgKCFjbGllbnREYXRhKSB7CiAgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJvbWlzZS5yZXNvbHZlPElETEludGVyZmFj
ZTxTZXJ2aWNlV29ya2VyQ2xpZW50Pj4oU2VydmljZVdvcmtlckNsaWVudDo6Z2V0T3JDcmVhdGUo
c2NvcGUsIFdURk1vdmUoZGF0YS52YWx1ZSgpKSkpOwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25h
bDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXJGcm9tU3RyaW5nKFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIFByb2Nlc3NJ
ZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyOwotICAgIE9iamVjdElkZW50aWZpZXI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXJUeXBlPiBjb250ZXh0SWRlbnRpZmllcjsKLSAgICB1
bnNpZ25lZCBjb3VudGVyID0gMDsKLSAgICBmb3IgKGF1dG8gaXRlbSA6IHN0cmluZy5zcGxpdCgn
LScpKSB7Ci0gICAgICAgIGF1dG8gaWRlbnRpZmllciA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4o
aXRlbSk7Ci0gICAgICAgIGlmICghaWRlbnRpZmllciB8fCAhKmlkZW50aWZpZXIpCi0gICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBpZiAoIWNvdW50ZXIrKykKLSAgICAg
ICAgICAgIHByb2Nlc3NJZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UHJvY2Vzc0lk
ZW50aWZpZXJUeXBlPigqaWRlbnRpZmllcik7Ci0gICAgICAgIGVsc2UgaWYgKGNvdW50ZXIgPT0g
MikKLSAgICAgICAgICAgIGNvbnRleHRJZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXJUeXBlPigqaWRlbnRpZmllcik7Ci0gICAg
fQotICAgIHJldHVybiAocHJvY2Vzc0lkZW50aWZpZXIgJiYgY29udGV4dElkZW50aWZpZXIpID8g
c3RkOjptYWtlX29wdGlvbmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIHsgY29u
dGV4dElkZW50aWZpZXIsIHByb2Nlc3NJZGVudGlmaWVyIH0pIDogc3RkOjpudWxsb3B0OworICAg
IHByb21pc2UucmVzb2x2ZTxJRExJbnRlcmZhY2U8U2VydmljZVdvcmtlckNsaWVudD4+KFNlcnZp
Y2VXb3JrZXJDbGllbnQ6OmdldE9yQ3JlYXRlKHNjb3BlLCBXVEZNb3ZlKCpjbGllbnREYXRhKSkp
OwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBpZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQogewotICAgIGF1dG8gaWRlbnRpZmllciA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyRnJvbVN0cmluZyhpZCk7Ci0gICAgaWYgKCFpZGVudGlmaWVyKSB7Ci0gICAgICAg
IHByb21pc2UtPnJlc29sdmUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvIGNs
aWVudElkZW50aWZpZXIgPSBpZGVudGlmaWVyLnZhbHVlKCk7Ci0KICAgICBhdXRvIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250
ZXh0KS50aHJlYWQoKS5pZGVudGlmaWVyKCk7CiAKICAgICBhdXRvIHByb21pc2VQb2ludGVyID0g
cHJvbWlzZS5wdHIoKTsKICAgICBtX3BlbmRpbmdQcm9taXNlcy5hZGQocHJvbWlzZVBvaW50ZXIs
IFdURk1vdmUocHJvbWlzZSkpOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvbWlzZVBvaW50
ZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyXSAoKSB7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbcHJvbWlzZVBvaW50ZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBpZCA9IGlkLmlzb2xhdGVkQ29weSgpXSAoKSB7CiAgICAgICAgIGF1dG8gY29ubmVjdGlvbiA9
IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKTsKLSAgICAgICAgY29u
bmVjdGlvbi0+ZmluZENsaWVudEJ5SWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Y2xpZW50SWRlbnRpZmllciwgW3Byb21pc2VQb2ludGVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmll
cl0gKGF1dG8mJiBjbGllbnREYXRhKSB7CisgICAgICAgIGNvbm5lY3Rpb24tPmZpbmRDbGllbnRC
eVZpc2libGVJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBpZCwgW3Byb21pc2VQ
b2ludGVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0gKGF1dG8mJiBjbGllbnREYXRhKSB7CiAg
ICAgICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2Vydmlj
ZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3Byb21pc2VQb2ludGVyLCBkYXRhID0g
Y3Jvc3NUaHJlYWRDb3B5KGNsaWVudERhdGEpXSAoYXV0byYgY29udGV4dCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGF1dG8gcHJvbWlzZSA9IGNvbnRleHQuY2xpZW50cygpLm1fcGVu
ZGluZ1Byb21pc2VzLnRha2UocHJvbWlzZVBvaW50ZXIpKQogICAgICAgICAgICAgICAgICAgICBk
aWRGaW5pc2hHZXRSZXF1ZXN0KGNvbnRleHQsICpwcm9taXNlLCBXVEZNb3ZlKGRhdGEpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuaAppbmRleCA3MTZkMDAzNTFkZDczYmZlOTIzMmE4OGQ4YjI5YzZkNzJjYzIz
ZGU3Li5jMGUwMzYzNmIxODljNTg2NjNlNDgzYzgwYmI5ZDY5MTkyYjIwZTk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5oCkBAIC02Miw4ICs2Miw4IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lk
IHNraXBXYWl0aW5nKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldFNjcmlwdFJlc291cmNlKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JikgPSAwOwogCi0gICAgICAgIHVzaW5nIEZpbmRDbGll
bnRCeUlkZW50aWZpZXJDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4+JiYpPjsKLSAgICAgICAg
dmlydHVhbCB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBGaW5kQ2xpZW50QnlJZGVudGlm
aWVyQ2FsbGJhY2smJikgPSAwOworICAgICAgICB1c2luZyBGaW5kQ2xpZW50QnlJZGVudGlmaWVy
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U2VydmljZVdv
cmtlckNsaWVudERhdGE+JiYpPjsKKyAgICAgICAgdmlydHVhbCB2b2lkIGZpbmRDbGllbnRCeVZp
c2libGVJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBG
aW5kQ2xpZW50QnlJZGVudGlmaWVyQ2FsbGJhY2smJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgbWF0Y2hBbGwoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJD
bGllbnRRdWVyeU9wdGlvbnMmLCBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2sm
JikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+JiYpID0gMDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5kZXggNmQyZjFlNmE2ZGQxOTE1ZGVlNTFhZmFh
YWM1NmU5MWUxMTkzNjI3Yi4uNGM5ZjJkZTRlN2QzNDkxOTU1MjFiMjI1NzFlNTkyODU3M2JiMDA5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlckZldGNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgc3RhdGlj
IHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFJlZjxDbGllbnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8
RmV0Y2hSZXNwb25zZT4sIHMKICAgICB9KTsKIH0KIAotdm9pZCBkaXNwYXRjaEZldGNoRXZlbnQo
UmVmPENsaWVudD4mJiBjbGllbnQsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2Nv
cGUsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IGNsaWVu
dElkLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hP
cHRpb25zJiYgb3B0aW9ucywgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgYm9vbCBp
c1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQpCit2b2lkIGRpc3BhdGNoRmV0
Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNsaWVudCwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBn
bG9iYWxTY29wZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIs
IEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIs
IGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkLCBTdHJpbmcmJiBj
bGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiByZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKQogewog
ICAgIGF1dG8gcmVxdWVzdEhlYWRlcnMgPSBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRl
cnM6Okd1YXJkOjpJbW11dGFibGUsIEhUVFBIZWFkZXJNYXAgeyByZXF1ZXN0Lmh0dHBIZWFkZXJG
aWVsZHMoKSB9KTsKIApAQCAtMTgxLDEyICsxODEsOCBAQCB2b2lkIGRpc3BhdGNoRmV0Y2hFdmVu
dChSZWY8Q2xpZW50PiYmIGNsaWVudCwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxT
YwogCiAgICAgRmV0Y2hFdmVudDo6SW5pdCBpbml0OwogICAgIGluaXQucmVxdWVzdCA9IFdURk1v
dmUoZmV0Y2hSZXF1ZXN0KTsKLSAgICBpZiAoaXNOYXZpZ2F0aW9uKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBTZXQgcmVzZXJ2ZWRDbGllbnRJZC4KLSAgICAgICAgaWYgKGNsaWVudElkKQotICAgICAg
ICAgICAgaW5pdC50YXJnZXRDbGllbnRJZCA9IGNsaWVudElkLT50b1N0cmluZygpOwotICAgIH0g
ZWxzZSBpZiAoY2xpZW50SWQpCi0gICAgICAgIGluaXQuY2xpZW50SWQgPSBjbGllbnRJZC0+dG9T
dHJpbmcoKTsKKyAgICBpbml0LnJlc3VsdGluZ0NsaWVudElkID0gV1RGTW92ZShyZXN1bHRpbmdD
bGllbnRJZGVudGlmaWVyKTsKKyAgICBpbml0LmNsaWVudElkID0gV1RGTW92ZShjbGllbnRJZGVu
dGlmaWVyKTsKICAgICBpbml0LmNhbmNlbGFibGUgPSB0cnVlOwogCiAgICAgYXV0byYganNET01H
bG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxTY29w
ZS5nbG9iYWxPYmplY3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCmluZGV4IDJjOWY3YTE2ZDI3
M2JkNzE1ZWUxMWVjMDdhNGY5YzVkZDg0MmFlNTYuLjE0YTYyOTk5NDA5Nzg2NmY4OGMzMjU0ZjM4
ZjAzNGM4NDNlYTdkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCkBAIC02MSw3ICs2MSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29udmVydEZldGNoVG9Eb3dubG9hZCgpID0gMDsK
IH07CiAKLXZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYsIFNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSYsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXI+LCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9u
cyYmLCBGZXRjaElkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRFbmFibGVkKTsKK3ZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYsIFNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSYsIFJlc291cmNlUmVxdWVzdCYmLCBTdHJpbmcmJiByZWZlcnJl
ciwgRmV0Y2hPcHRpb25zJiYsIEZldGNoSWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIFN0cmluZyYmIGNsaWVudElkZW50aWZpZXIsIFN0cmlu
ZyYmIHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAppbmRleCA2NTI1ZmI5NzAxNmZmYWRlZTkx
YTExNjA2MDRjMDI3MTA5Y2U4NjYxLi4yNjBkYmJkM2U2NjI5NzljYzlmYTY5MmQ0M2NlNGViNDM3
MDRkZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtMTI0LDExICsxMjQsMTEg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AoKQogICAgIFdvcmtlclRo
cmVhZDo6cnVuRXZlbnRMb29wKCk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVl
dWVUYXNrVG9GaXJlRmV0Y2hFdmVudChSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYg
Y2xpZW50LCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiYm
IGNsaWVudElkLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTdHJpbmcmJiByZWZlcnJlciwg
RmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwg
Ym9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQpCit2b2lkIFNlcnZp
Y2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZUZldGNoRXZlbnQoUmVmPFNlcnZpY2VXb3Jr
ZXJGZXRjaDo6Q2xpZW50PiYmIGNsaWVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3Ry
aW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIEZldGNoSWRlbnRpZmllciBm
ZXRjaElkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFi
bGVkLCBTdHJpbmcmJiBjbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiByZXN1bHRpbmdDbGllbnRJ
ZGVudGlmaWVyKQogewogICAgIFJlZiBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2Fz
dDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCpnbG9iYWxTY29wZSgpKTsKLSAgICBzZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01N
YW5pcHVsYXRpb24sIFtzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIGNsaWVudCA9IFdURk1vdmUo
Y2xpZW50KSwgY2xpZW50SWQsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZWZlcnJlciA9
IFdURk1vdmUocmVmZXJyZXIpLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKSwgZmV0Y2hJZGVu
dGlmaWVyLCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWRdKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIFNlcnZpY2VXb3JrZXJGZXRjaDo6ZGlzcGF0Y2hGZXRjaEV2ZW50KFdURk1v
dmUoY2xpZW50KSwgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnRJZCwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShyZWZlcnJlciksIFdURk1vdmUob3B0aW9ucyksIGZldGNoSWRlbnRp
ZmllciwgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkKTsKKyAgICBzZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIFtzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIGNsaWVudCA9IFdURk1v
dmUoY2xpZW50KSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlZmVycmVyID0gV1RGTW92
ZShyZWZlcnJlciksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBmZXRjaElkZW50aWZpZXIs
IGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCwgY2xpZW50SWRlbnRpZmll
ciA9IFdURk1vdmUoY2xpZW50SWRlbnRpZmllciksIHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIg
PSBXVEZNb3ZlKHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIpXSgpIG11dGFibGUgeworICAgICAg
ICBTZXJ2aWNlV29ya2VyRmV0Y2g6OmRpc3BhdGNoRmV0Y2hFdmVudChXVEZNb3ZlKGNsaWVudCks
IHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWZl
cnJlciksIFdURk1vdmUob3B0aW9ucyksIGZldGNoSWRlbnRpZmllciwgaXNTZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRFbmFibGVkLCBXVEZNb3ZlKGNsaWVudElkZW50aWZpZXIpLCBXVEZN
b3ZlKHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5oCmluZGV4IDFkYTJkZDgzZWUwNzcxZmE0YTEyYzkxYWUyNTRhNTIzYTkzMjJl
N2YuLjg4YjY1ZGU4MDMwYWE5NTA5MGQzN2NkY2ExYWUwN2VjZTc1YmYwMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFBv
c3RUYXNrVG9GaXJlTWVzc2FnZUV2ZW50KCk7CiAgICAgdm9pZCB3aWxsUG9zdFRhc2tUb0ZpcmVQ
dXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQoKTsKIAotICAgIHZvaWQgcXVldWVUYXNrVG9GaXJl
RmV0Y2hFdmVudChSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYsIHN0ZDo6b3B0aW9u
YWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+JiYsIFJlc291cmNlUmVxdWVzdCYm
LCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYsIEZldGNoSWRlbnRpZmllciwgYm9v
bCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQpOworICAgIHZvaWQgcXVl
dWVUYXNrVG9GaXJlRmV0Y2hFdmVudChSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYs
IFJlc291cmNlUmVxdWVzdCYmLCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYsIEZl
dGNoSWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJs
ZWQsIFN0cmluZyYmIGNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIHJlc3VsdGluZ0NsaWVudElk
ZW50aWZpZXIpOwogICAgIHZvaWQgcXVldWVUYXNrVG9Qb3N0TWVzc2FnZShNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cyYmLCBTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhJiYgc291cmNlRGF0YSk7CiAg
ICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVJbnN0YWxsRXZlbnQoKTsKICAgICB2b2lkIHF1ZXVlVGFz
a1RvRmlyZUFjdGl2YXRlRXZlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHku
Y3BwCmluZGV4IGRiNmM5M2I4YmU5MWI5YjkyMjcxMDk0Nzk5ZDBkZGMzZjY0ODJkZjAuLmM2NjYx
NGZhMmM5NjAwMTE2NDVlOGFjNzQ1ZDRmNmQ5Yzg4Mzk2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgU2VydmljZVdvcmtl
clRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkKICAg
ICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBj
b25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgUmVm
PFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmIGNsaWVudCwgc3RkOjpvcHRpb25hbDxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4mJiBjbGllbnRJZCwgUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIGJv
b2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkKQordm9pZCBTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciBjb25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwg
UmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmIGNsaWVudCwgUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIGJv
b2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkLCBTdHJpbmcmJiBjbGll
bnRJZGVudGlmaWVyLCBTdHJpbmcmJiByZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKQogewogICAg
IFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnN0
YXJ0RmV0Y2ggJWxsdSIsIGZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIApAQCAtMjIxLDgg
KzIyMSw4IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzdGFydEZldGNoKFNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvCiAKICAgICBBU1NFUlQoIW1fb25nb2lu
Z0ZldGNoVGFza3MuY29udGFpbnMoa2V5KSk7CiAgICAgbV9vbmdvaW5nRmV0Y2hUYXNrcy5hZGQo
a2V5LCBjbGllbnQuY29weVJlZigpKTsKLSAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2xp
ZW50ID0gV1RGTW92ZShjbGllbnQpLCBjbGllbnRJZCwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0
ZWRDb3B5KCksIHJlZmVycmVyID0gcmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBv
cHRpb25zLmlzb2xhdGVkQ29weSgpLCBmZXRjaElkZW50aWZpZXIsIGlzU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkRW5hYmxlZF0oYXV0byYpIG11dGFibGUgewotICAgICAgICB0aHJlYWQo
KS5xdWV1ZVRhc2tUb0ZpcmVGZXRjaEV2ZW50KFdURk1vdmUoY2xpZW50KSwgV1RGTW92ZShjbGll
bnRJZCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVmZXJyZXIpLCBXVEZNb3ZlKG9wdGlv
bnMpLCBmZXRjaElkZW50aWZpZXIsIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5h
YmxlZCk7CisgICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNsaWVudCA9IFdURk1vdmUoY2xp
ZW50KSwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0gV1RGTW92
ZShyZWZlcnJlcikuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29w
eSgpLCBmZXRjaElkZW50aWZpZXIsIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5h
YmxlZCwgY2xpZW50SWRlbnRpZmllciA9IFdURk1vdmUoY2xpZW50SWRlbnRpZmllcikuaXNvbGF0
ZWRDb3B5KCksIHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIgPSBXVEZNb3ZlKHJlc3VsdGluZ0Ns
aWVudElkZW50aWZpZXIpLmlzb2xhdGVkQ29weSgpXShhdXRvJikgbXV0YWJsZSB7CisgICAgICAg
IHRocmVhZCgpLnF1ZXVlVGFza1RvRmlyZUZldGNoRXZlbnQoV1RGTW92ZShjbGllbnQpLCBXVEZN
b3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZmVycmVyKSwgV1RGTW92ZShvcHRpb25zKSwgZmV0Y2hJ
ZGVudGlmaWVyLCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIFdURk1v
dmUoY2xpZW50SWRlbnRpZmllciksIFdURk1vdmUocmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcikp
OwogICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IDAxYjNhZDA0OTE1ZDRiZTI3YjAxYmNmZmRjNmIw
Y2ZiMjA4ZmMwN2UuLmFiY2E0ODYyYmQ2NTliYjRlYzE2YjdkZGY5OTE4ZTYyOGQzMzc1ZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC03NSw3ICs3NSw3IEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJv
b2wgaXNPbmxpbmUpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydEZldGNoKFNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciwgUmVmPFNlcnZpY2VXb3Jr
ZXJGZXRjaDo6Q2xpZW50PiYmLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyPiYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNo
T3B0aW9ucyYmLCBib29sIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciwgUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50
PiYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYm
LCBib29sIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCwgU3RyaW5nJiYg
Y2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYW5jZWxGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBGZXRjaElkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udmVy
dEZldGNoVG9Eb3dubG9hZChTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50
aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udGludWVEaWRSZWNlaXZlRmV0Y2hS
ZXNwb25zZShTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cAppbmRleCAxYTk2M2NkMTI0ZTI1ZmRkMzBlYjE1ZDY3MzdlN2U0MzVkZDQxMTgwLi43Y2I5OTNm
MjI1N2RjNzMxNmNiM2EyYWU4YzY4MjlmNjFiNTI3MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtOTQyLDYgKzk0Miw4
IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChDbGllbnRPcmln
aW4mJiBjbGllbnRPcmlnaW4sIFNlcnZpY2VXCiAgICAgICAgICAgICB1cGRhdGVBcHBJbml0aWF0
ZWRWYWx1ZUZvcldvcmtlcnMoY2xpZW50T3JpZ2luLCBkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkKTsKICAgICB9CiAKKyAgICBtX3Zpc2libGVDbGllbnRJZFRvSW50ZXJuYWxDbGll
bnRJZE1hcC5hZGQoZGF0YS5pZGVudGlmaWVyLnRvVmlzaWJsZVN0cmluZygpLCBjbGllbnRJZGVu
dGlmaWVyKTsKKwogICAgIEFTU0VSVCghbV9jbGllbnRzQnlJZC5jb250YWlucyhjbGllbnRJZGVu
dGlmaWVyKSk7CiAgICAgbV9jbGllbnRzQnlJZC5hZGQoY2xpZW50SWRlbnRpZmllciwgV1RGTW92
ZShkYXRhKSk7CiAKQEAgLTk3OSw4ICs5ODEsOCBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwog
ICAgIGF1dG8gY2xpZW50UmVnaXN0cmFibGVEb21haW4gPSBjbGllbnRPcmlnaW4uY2xpZW50UmVn
aXN0cmFibGVEb21haW4oKTsKICAgICBhdXRvIGFwcEluaXRpYXRlZFZhbHVlQmVmb3JlID0gY2xp
ZW50SXNBcHBJbml0aWF0ZWRGb3JSZWdpc3RyYWJsZURvbWFpbihjbGllbnRPcmlnaW4uY2xpZW50
UmVnaXN0cmFibGVEb21haW4oKSk7CiAKLSAgICBib29sIHdhc1JlbW92ZWQgPSBtX2NsaWVudHNC
eUlkLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92
ZWQsIHdhc1JlbW92ZWQpOworICAgIG1fY2xpZW50c0J5SWQucmVtb3ZlKGNsaWVudElkZW50aWZp
ZXIpOworICAgIG1fdmlzaWJsZUNsaWVudElkVG9JbnRlcm5hbENsaWVudElkTWFwLnJlbW92ZShj
bGllbnRJZGVudGlmaWVyLnRvVmlzaWJsZVN0cmluZygpKTsKIAogICAgIGF1dG8gY2xpZW50c0J5
UmVnaXN0cmFibGVEb21haW5JdGVyYXRvciA9IG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4u
ZmluZChjbGllbnRSZWdpc3RyYWJsZURvbWFpbik7CiAgICAgQVNTRVJUKGNsaWVudHNCeVJlZ2lz
dHJhYmxlRG9tYWluSXRlcmF0b3IgIT0gbV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbi5lbmQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmgKaW5kZXggYjE1ZjFhZjVlMGVkNzJhYWExZGRiZGE5YTJmZmUzZmIyOWFiMTM4Ny4uNDM5NDFi
MzRiMmE3MjdkNDM4ZjY1NGM3NTNkOGY1OWY1Y2YyNjllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMjI2LDYgKzIyNiw4IEBA
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFNob3VsZFNraXBFdmVudCA6IGJvb2wgeyBObywgWWVz
IH07CiAgICAgdm9pZCBmaXJlRnVuY3Rpb25hbEV2ZW50KFNXU2VydmVyUmVnaXN0cmF0aW9uJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24qLCBTaG91bGRTa2lwRXZlbnQ+KT4mJik7CiAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllciBjbGllbnRJZEZyb21WaXNpYmxlQ2xpZW50SWQoY29uc3QgU3RyaW5nJiB2aXNp
YmxlSWRlbnRpZmllcikgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlQ2xpZW50SWRUb0ludGVybmFs
Q2xpZW50SWRNYXAuZ2V0KHZpc2libGVJZGVudGlmaWVyKTsgfQorCiBwcml2YXRlOgogICAgIHZv
aWQgdmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4s
IFNlcnZpY2VXb3JrZXJKb2JUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
IApAQCAtMjcxLDYgKzI3Myw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTY3JpcHRFeGVjdXRp
b25Db250ZXh0SWRlbnRpZmllciwgV2Vha1B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4+IG1fc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyVG9SZWdpc3RyYXRpb25NYXA7CiAgICAgSGFzaE1hcDxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudERhdGE+
IG1fY2xpZW50c0J5SWQ7CiAgICAgSGFzaE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
ZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IG1fY2xpZW50VG9Db250
cm9sbGluZ1JlZ2lzdHJhdGlvbjsKKyAgICBIYXNoTWFwPFN0cmluZywgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXI+IG1fdmlzaWJsZUNsaWVudElkVG9JbnRlcm5hbENsaWVudElkTWFw
OwogCiAgICAgVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+IG1fb3JpZ2luU3RvcmU7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlZ2lzdHJhdGlvblN0b3JlPiBtX3JlZ2lzdHJhdGlvblN0b3JlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IGJmZWVjY2UwM2UwNGNj
NzhlODdlMWUxNjI2OWI5NjMwMWQ0ODE3YTEuLjU0MjhhYTQ2NTU0NTg4NDg3OTAxN2M0NTFkOThm
OGFjOWU2MmFkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAK
QEAgLTg3LDEyICs4Nyw2IEBAIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp3b3Jr
ZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpCiAgICAgICAgIHdvcmtl
ci0+Y29udGV4dFRlcm1pbmF0ZWQoKTsKIH0KIAotdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZpZXIodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJZCkKLXsKLSAgICBpZiAoYXV0byogd29y
a2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNl
V29ya2VySWRlbnRpZmllcikpCi0gICAgICAgIHdvcmtlci0+Y29udGV4dENvbm5lY3Rpb24oKS0+
ZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgd29ya2Vy
LT5maW5kQ2xpZW50QnlJZGVudGlmaWVyKGNsaWVudElkKSwgZmFsc2UpOwotfQotCiB2b2lkIFNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWF0Y2hBbGwodWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlm
IChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlm
aWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkgewpAQCAtMTAyLDYgKzk2LDE0IEBAIHZvaWQg
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptYXRjaEFsbCh1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgU2VydmljZVdvCiAgICAgfQogfQogCit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6ZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY2xpZW50SWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPiYmKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoYXV0byogd29y
a2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNl
V29ya2VySWRlbnRpZmllcikpCisgICAgICAgIHdvcmtlci0+ZmluZENsaWVudEJ5VmlzaWJsZUlk
ZW50aWZpZXIoY2xpZW50SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIGVsc2UK
KyAgICAgICAgY2FsbGJhY2soeyB9KTsKK30KKwogdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4m
Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4
aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCBiZGQzNjNiMmJjNDUwY2MyOTky
ZTY1NjgzNmFmNzdlZDUzYmNkYTQwLi5jMDU2ZjY0OGRkYTAzZTVmYWI0OGQyYWU0NmU3MTM5NzU2
ZjVkNTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTU4LDcg
KzU4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2
aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3Jr
ZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2F2
ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNjcmlwdEJ1ZmZl
ciYsIGNvbnN0IEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiBpbXBvcnRlZFNjcmlwdHMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YT4mLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgbWF0Y2hBbGxDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFZl
Y3RvcjxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZp
cmVQdXNoRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJh
Y2spID0gMDsKIApAQCAtNzAsMTEgKzY5LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBib29sIGhhc1BlbmRpbmdFdmVudHMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2tpcFdhaXRpbmcoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3b3JrZXJUZXJtaW5hdGVkKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmRDbGllbnRC
eUlkZW50aWZpZXIodWludDY0X3QgY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIG1hdGNoQWxsKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0
aW9ucyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xhaW0oU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb25EYXRh
PiYmKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmFp
bEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+
JiYpOwogCiAgICAgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQogICAgIHN0ZDo6b3B0aW9uYWw8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
V29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwCmluZGV4IDVkMTU1NmEwMDZkYWIxNTE2NzY1MWEyM2RmMmZiMzMzMDQ3ZjZi
NDMuLmNkYmZlNDRiZWVjMGM5MDhiYWMxMjI0ZDBlYTRiNmYxMmZlZGYxYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwCkBAIC0yMzEsNiArMjMxLDIyIEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNs
aWVudERhdGE+IFNXU2VydmVyV29ya2VyOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyKGNvCiAgICAg
cmV0dXJuIG1fc2VydmVyLT5zZXJ2aWNlV29ya2VyQ2xpZW50V2l0aE9yaWdpbkJ5SUQob3JpZ2lu
KCksIGNsaWVudElkKTsKIH0KIAordm9pZCBTV1NlcnZlcldvcmtlcjo6ZmluZENsaWVudEJ5Vmlz
aWJsZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBjbGllbnRJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERh
dGE+JiYpPiYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9zZXJ2ZXIpIHsKKyAgICAgICAgY2Fs
bGJhY2soeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gaW50ZXJuYWxJ
ZGVudGlmaWVyID0gbV9zZXJ2ZXItPmNsaWVudElkRnJvbVZpc2libGVDbGllbnRJZChjbGllbnRJ
ZGVudGlmaWVyKTsKKyAgICBpZiAoIWludGVybmFsSWRlbnRpZmllcikgeworICAgICAgICBjYWxs
YmFjayh7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FsbGJhY2soZmluZENs
aWVudEJ5SWRlbnRpZmllcihpbnRlcm5hbElkZW50aWZpZXIpKTsKK30KKwogdm9pZCBTV1NlcnZl
cldvcmtlcjo6bWF0Y2hBbGwoY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYg
b3B0aW9ucywgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7CiAgICAgQVNTRVJUKG1fc2VydmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCBiMjIxNWQ5ZjRhZDRk
MGZkOTE1MDRhNGMyMWFjYjkzMDQ3YTFjODI0Li4xZTgzMWZjNGNhODJkNjQ0ZTdjNmRiMTFlMGVm
NTNhNzZiNmRmNDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC0xMDMsNiArMTAzLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbigpOwogICAgIHZvaWQgY29udGV4dFRlcm1pbmF0
ZWQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhPiBmaW5kQ2xpZW50QnlJZGVudGlmaWVyKGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5kQ2xpZW50
QnlWaXNpYmxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YT4mJik+JiYpOwogICAgIHZvaWQgbWF0Y2hBbGwoY29uc3QgU2VydmljZVdvcmtlckNs
aWVudFF1ZXJ5T3B0aW9ucyYsIFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYm
KTsKICAgICB2b2lkIHNldFNjcmlwdFJlc291cmNlKFVSTCYmLCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0JiYpOwogICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2so
U2NyaXB0QnVmZmVyJiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBp
bXBvcnRlZFNjcmlwdHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggODE3YWVmMjZjODM2YzM0YTdkNDRlZTdjYzk1
ZWRkOWEyOThkNmE0YS4uM2YxODIwZDE2ODIxOTgyMDY3MTUxMjY2NjVmNTI0ZGM3YWNmZWNmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oCkBAIC0xNDUsNiArMTQ1LDEwIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgdm9pZCBzdGFydFdpdGhTZXJ2aWNlV29ya2VyKCk7CiAgICAgdm9pZCBz
ZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sqKTsKKyAgICB2
b2lkIHNldFJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIoU3RyaW5nJiYgaWRlbnRpZmllcikgeyBt
X3Jlc3VsdGluZ0NsaWVudElkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpOyB9CisgICAg
dm9pZCBzZXRDbGllbnRJZGVudGlmaWVyKFN0cmluZyYmIGlkZW50aWZpZXIpIHsgbV9jbGllbnRJ
ZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVz
dWx0aW5nQ2xpZW50SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0aW5nQ2xpZW50
SWRlbnRpZmllcjsgfQorICAgIGNvbnN0IFN0cmluZyYgY2xpZW50SWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1fY2xpZW50SWRlbnRpZmllcjsgfQogI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+IGRvQ3Jvc3NPcmlnaW5PcGVuZXJIYW5kbGluZ09m
UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtMjU1LDYgKzI1
OSw4IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
PiBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXI7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBtX3NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s7CisgICAgU3RyaW5nIG1fcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcjsKKyAg
ICBTdHJpbmcgbV9jbGllbnRJZGVudGlmaWVyOwogI2VuZGlmCiAgICAgTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXIgbV9yZXNvdXJjZUxvYWRJRDsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIG1fcmVkaXJlY3RSZXNwb25zZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLmNwcAppbmRleCBjZDJkNmEyMDczZmI5N2FiYTAxNmQzYzdlZjMxYzc3MWExMjcwMmM5
Li43MDYxYzFmMDE5MDg5ZjA2NDQxOTBlNmZjMzhkZDZmNTE1OWViZGQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzdGFydEZldGNoKCkKICAgICBhdXRvIHJlcXVlc3QgPSBt
X2N1cnJlbnRSZXF1ZXN0OwogICAgIGNsZWFuSFRUUFJlcXVlc3RIZWFkZXJzRm9yQWNjZXNzQ29u
dHJvbChyZXF1ZXN0LCBtX2xvYWRlci5wYXJhbWV0ZXJzKCkuaHR0cEhlYWRlcnNUb0tlZXApOwog
Ci0gICAgYm9vbCBpc1NlbnQgPSBzZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2VzOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IG1fc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1fZmV0Y2hJZGVudGlmaWVyLCBy
ZXF1ZXN0LCBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgbV9jdXJyZW50UmVxdWVz
dC5odHRwQm9keSgpIH0sIHJlZmVycmVyLCBtX3ByZWxvYWRlciAmJiBtX3ByZWxvYWRlci0+aXNT
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkKCkgfSk7CisgICAgYm9vbCBpc1Nl
bnQgPSBzZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6U3RhcnRGZXRjaCB7IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1fc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIG1fZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25z
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgbV9jdXJyZW50UmVxdWVzdC5odHRwQm9keSgpIH0s
IHJlZmVycmVyLCBtX3ByZWxvYWRlciAmJiBtX3ByZWxvYWRlci0+aXNTZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRFbmFibGVkKCksIG1fbG9hZGVyLmNsaWVudElkZW50aWZpZXIoKSwgbV9s
b2FkZXIucmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcigpIH0pOwogICAgIEFTU0VSVF9VTlVTRUQo
aXNTZW50LCBpc1NlbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
Y3BwCmluZGV4IDQ3MmEyMzEzOWY3NjhiMDkxM2M2YWMxNDQxOWY3ZDhiZGYyNDJlYWUuLjc0MDlh
ZjBhZmJhNTkzYjIwZWVlMjAwNzUzOWE5MGVhYTE5OTIwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xNzUsNiArMTc1LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlRmV0
Y2hUYXNrKE4KIAogICAgICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9
IHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigpOwogICAgICAgICBjb250cm9sQ2xpZW50KCpsb2Fk
ZXIucGFyYW1ldGVycygpLm9wdGlvbnMuY2xpZW50SWRlbnRpZmllciwgKnJlZ2lzdHJhdGlvbiwg
cmVxdWVzdCk7CisgICAgICAgIGxvYWRlci5zZXRSZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKGxv
YWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucy5jbGllbnRJZGVudGlmaWVyLT50b1Zpc2libGVTdHJp
bmcoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFsb2FkZXIucGFyYW1ldGVycygpLnNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0yMDQsNiArMjA1LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrPiBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayhOCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAgIGlmIChsb2FkZXIucGFyYW1ldGVycygp
Lm9wdGlvbnMubW9kZSAhPSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5hdmlnYXRlICYmIGxvYWRlci5w
YXJhbWV0ZXJzKCkub3B0aW9ucy5jbGllbnRJZGVudGlmaWVyKSB7CisgICAgICAgIGlmIChhdXRv
IGRhdGEgPSB3b3JrZXItPmZpbmRDbGllbnRCeUlkZW50aWZpZXIoKmxvYWRlci5wYXJhbWV0ZXJz
KCkub3B0aW9ucy5jbGllbnRJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIGxvYWRlci5zZXRDbGll
bnRJZGVudGlmaWVyKGRhdGEtPmlkZW50aWZpZXIudG9WaXNpYmxlU3RyaW5nKCkpOworICAgIH0K
KwogICAgIGJvb2wgaXNXb3JrZXJSZWFkeSA9IHdvcmtlci0+aXNSdW5uaW5nKCkgJiYgd29ya2Vy
LT5zdGF0ZSgpID09IFNlcnZpY2VXb3JrZXJTdGF0ZTo6QWN0aXZhdGVkOwogICAgIGF1dG8gdGFz
ayA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckZldGNoVGFzaz4oKnRoaXMsIGxvYWRlciwgUmVz
b3VyY2VSZXF1ZXN0IHsgcmVxdWVzdCB9LCBpZGVudGlmaWVyKCksIHdvcmtlci0+aWRlbnRpZmll
cigpLCAqcmVnaXN0cmF0aW9uLCBzZXNzaW9uKCksIGlzV29ya2VyUmVhZHkpOwogICAgIHN0YXJ0
RmV0Y2goKnRhc2ssICp3b3JrZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCBmMGE4OTY3NWNjMTQ0MzcwOGEwYjY4YWM5MzFj
ZTc3ZmQyNWM0MDA1Li41YTg3MDNlZmQ2ZDVkY2Q0MWEyMjVhOGQxMmUzZGQ1ZGRhZTEwNjAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cApAQCAtMTU1LDExICsxNTUsNiBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6dGVybWluYXRlRHVlVG9VbnJlc3BvbnNpdmVuZXNzKCkKICAgICBtX2Nvbm5lY3Rpb24ubmV0
d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJv
Y2Vzc2VzIHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKIH0KIAotdm9pZCBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdv
cmtlckNsaWVudERhdGE+JiBkYXRhLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpCi17Ci0gICAgc2Vu
ZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkZpbmRDbGllbnRCeUlk
ZW50aWZpZXJDb21wbGV0ZWQgeyByZXF1ZXN0SWRlbnRpZmllciwgZGF0YSwgaGFzU2VjdXJpdHlF
cnJvciB9KTsKLX0KLQogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1hdGNo
QWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U2Vy
dmljZVdvcmtlckNsaWVudERhdGE+JiBjbGllbnRzRGF0YSkKIHsKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6TWF0Y2hBbGxDb21wbGV0ZWQgeyByZXF1
ZXN0SWRlbnRpZmllciwgY2xpZW50c0RhdGEgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggMzM2NThjNTRjMTRmYTRhNDQ0Yjc0MzZk
ZDkwYjA4NTlhMjQyYmI1My4uZDk1YjdjZTg1NDY5OGM1MTY2ZDNhMTU5YTM3ODhlZGUyZDliMjI4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aApAQCAtOTUsNyArOTUsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgdGVybWlu
YXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2
b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImLCBjb25zdCBIYXNoTWFwPFVSTCwgV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyPiYgaW1wb3J0ZWRTY3JpcHRzKSBmaW5hbDsKLSAgICB2b2lkIGZpbmRD
bGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9v
bCBoYXNTZWN1cml0eUVycm9yKSBmaW5hbDsKICAgICB2b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdv
cmtlckNsaWVudERhdGE+JikgZmluYWw7CiAgICAgdm9pZCBmaXJlUHVzaEV2ZW50KFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KaW5kZXggZmQ3MTk0OGM1ZjM1OTk5ZjU1MmRmMWRmZDYzNTJjMTNkMmY1ZjgxZS4u
MGQ2MTQ1MGQ0MWEzMDFmMDhmOWVjNWU2YTNhNjAwNjFmOWI2NDM3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCkBAIC0zMiw3ICszMiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKICAgICBTZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2
ZW50cyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIGhh
c1BlbmRpbmdFdmVudHMpCiAgICAgU2tpcFdhaXRpbmcoV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKCkgQXN5bmMKICAgICBXb3JrZXJUZXJtaW5hdGVkKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgRmluZENsaWVu
dEJ5SWRlbnRpZmllcih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCisgICAgRmluZENs
aWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIFN0cmluZyBjbGllbnRJZGVudGlmaWVyKSAtPiAoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gZGF0YSkgQXN5bmMK
ICAgICBNYXRjaEFsbCh1aW50NjRfdCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RydWN0
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMgb3B0aW9ucyk7CiAgICAg
Q2xhaW0oV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IHJlc3VsdCkg
QXN5bmMKICAgICBTZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBVUkwgc2NyaXB0VVJMLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJ
T1MuaAppbmRleCAwZjhkZjIxY2MzZWFiOTAyMDU5YTQxMjAxZmI1MzIxZmI5NTllOTE5Li43YTQ2
ZGIxZjdmYzBkOTEwMDc2NjM0YzE3ZGNkMGUyNzNlMGI2ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9y
VGVzdGluZ0lPUy5oCkBAIC04MSw3ICs4MSw3IEBACiAKIC0gKHZvaWQpX2RvQWZ0ZXJSZWNlaXZp
bmdFZGl0RHJhZ1NuYXBzaG90Rm9yVGVzdGluZzooZGlzcGF0Y2hfYmxvY2tfdClhY3Rpb247CiAK
LS0gKHZvaWQpX3RyaWdnZXJTeXN0ZW1QcmV2aWV3QWN0aW9uT25FbGVtZW50Oih1aW50NjRfdCll
bGVtZW50SUQgZG9jdW1lbnQ6KHVpbnQ2NF90KWRvY3VtZW50SUQgcGFnZToodWludDY0X3QpcGFn
ZUlEOworLSAodm9pZClfdHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb25PbkVsZW1lbnQ6KHVpbnQ2
NF90KWVsZW1lbnRJRCBkb2N1bWVudDooTlNTdHJpbmcqKWRvY3VtZW50SUQgcGFnZToodWludDY0
X3QpcGFnZUlEOwogCiAtICh2b2lkKV9zZXREZXZpY2VPcmllbnRhdGlvblVzZXJQZXJtaXNzaW9u
SGFuZGxlckZvclRlc3Rpbmc6KEJPT0wgKF4pKHZvaWQpKWhhbmRsZXI7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbQpp
bmRleCA2MDQ3ZDNjNzQxMmJmNjAwYmIwOWMyNjY4ZWI2MjkxMWIxMzJmMGQ0Li45NWI4MjkyMjIy
NGFlYTE0YjFlMTQzOWYwYThmNWUwODMwNDNiOTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCkBAIC00NDgsNyAr
NDQ4LDcgQEAgc3RhdGljIHZvaWQgZHVtcFVJVmlldyhUZXh0U3RyZWFtJiB0cywgVUlWaWV3ICp2
aWV3KQogICAgIFtfY29udGVudFZpZXcgX3NpbXVsYXRlVGV4dEVudGVyZWQ6dGV4dF07CiB9CiAK
LS0gKHZvaWQpX3RyaWdnZXJTeXN0ZW1QcmV2aWV3QWN0aW9uT25FbGVtZW50Oih1aW50NjRfdCll
bGVtZW50SUQgZG9jdW1lbnQ6KHVpbnQ2NF90KWRvY3VtZW50SUQgcGFnZToodWludDY0X3QpcGFn
ZUlECistICh2b2lkKV90cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbk9uRWxlbWVudDoodWludDY0
X3QpZWxlbWVudElEIGRvY3VtZW50OihOU1N0cmluZyopZG9jdW1lbnRJRCBwYWdlOih1aW50NjRf
dClwYWdlSUQKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKF9wYWdlKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJl
dmlld0NvbnRyb2xsZXJDb2NvYS5tbQppbmRleCBkY2NkOTBkZmVjMjQyMzEzMjIzMzExMDRiNjdj
OTBjMzgwNzkyZjc4Li4yZjhiYTAyZGEyODA3MGM2ODgyZDdhNTMzYTE4ZjYyMTUxOTdiNmFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3Rl
bVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTMwMSwxMSArMzAxLDE2IEBAIHZvaWQgU3lz
dGVtUHJldmlld0NvbnRyb2xsZXI6OnRyaWdnZXJTeXN0ZW1QcmV2aWV3QWN0aW9uKCkKICAgICBw
YWdlKCkuc3lzdGVtUHJldmlld0FjdGlvblRyaWdnZXJlZChtX3N5c3RlbVByZXZpZXdJbmZvLCAi
X2FwcGxlX2FyX3F1aWNrbG9va19idXR0b25fdGFwcGVkIik7CiB9CiAKLXZvaWQgU3lzdGVtUHJl
dmlld0NvbnRyb2xsZXI6OnRyaWdnZXJTeXN0ZW1QcmV2aWV3QWN0aW9uV2l0aFRhcmdldEZvclRl
c3RpbmcodWludDY0X3QgZWxlbWVudElELCB1aW50NjRfdCBkb2N1bWVudElELCB1aW50NjRfdCBw
YWdlSUQpCit2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmll
d0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcq
IGRvY3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKIHsKKyAgICBhdXRvIHV1aWQgPSBVVUlEOjpw
YXJzZShTdHJpbmcoZG9jdW1lbnRJRCkpOworICAgIEFTU0VSVCh1dWlkKTsKKyAgICBpZiAoIXV1
aWQpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fc3lzdGVtUHJldmlld0luZm8uaXNQcmV2aWV3
ID0gdHJ1ZTsKICAgICBtX3N5c3RlbVByZXZpZXdJbmZvLmVsZW1lbnQuZWxlbWVudElkZW50aWZp
ZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpFbGVtZW50SWRlbnRpZmllclR5cGU+
KGVsZW1lbnRJRCk7Ci0gICAgbV9zeXN0ZW1QcmV2aWV3SW5mby5lbGVtZW50LmRvY3VtZW50SWRl
bnRpZmllciA9IFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIHsgbWFr
ZU9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXJUeXBlPihkb2N1bWVudElEKSwgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmNvcmVQcm9jZXNz
SWRlbnRpZmllcigpIH07CisgICAgbV9zeXN0ZW1QcmV2aWV3SW5mby5lbGVtZW50LmRvY3VtZW50
SWRlbnRpZmllciA9IHsgKnV1aWQsIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5jb3JlUHJvY2Vz
c0lkZW50aWZpZXIoKSB9OwogICAgIG1fc3lzdGVtUHJldmlld0luZm8uZWxlbWVudC53ZWJQYWdl
SWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
VHlwZT4ocGFnZUlEKTsKICAgICB0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbigpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmgKaW5k
ZXggMmVkYjA0MTI3ODEwYzZlMWE2NmFkMzVjZThjYjc0YTJkMmJhMDUzNS4uNmFiNmQyYmIxOTcz
Nzc3ZTc4OGFhZjVmOWZlYjFkOGE4NGEwMTY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCkBAIC02MSw3ICs2MSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgdHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb24oKTsKIAotICAgIHZvaWQg
dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb25XaXRoVGFyZ2V0Rm9yVGVzdGluZyh1aW50NjRfdCBl
bGVtZW50SUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCB0
cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVs
ZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCk7CiAKIHByaXZh
dGU6CiAgICAgV2ViUGFnZVByb3h5JiBtX3dlYlBhZ2VQcm94eTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3Bw
CmluZGV4IGU2ZGQ4MTEwNTY0NDQxYzNhMzU5MDkwYjAxMTQyZGRjZTIwNDNhYzMuLmMzNDI3YWE1
MjBjNGYxZDdkYTQzYzEyOTdlNjlkMmFmMGUxMjJmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcApA
QCAtMTI5LDcgKzEyOSw3IEBAIFdLQXJyYXlSZWYgV0tCdW5kbGVHZXRMaXZlRG9jdW1lbnRVUkxz
Rm9yVGVzdGluZyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIGJvb2wgZXhjCiAgICAgICAgIGF1dG8g
ZG9jdW1lbnRJREtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImlk
IikpOwogICAgICAgICBhdXRvIGRvY3VtZW50VVJMS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygidXJsIikpOwogCi0gICAgICAgIGF1dG8gZG9jdW1lbnRJRFZhbHVl
ID0gYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShpdC5rZXkpKTsKKyAgICAgICAgYXV0byBkb2N1bWVu
dElEVmFsdWUgPSBhZG9wdFdLKFdlYktpdDo6dG9Db3BpZWRBUEkoaXQua2V5LnRvU3RyaW5nKCkp
KTsKICAgICAgICAgYXV0byBkb2N1bWVudFVSTFZhbHVlID0gYWRvcHRXSyhXZWJLaXQ6OnRvQ29w
aWVkQVBJKGl0LnZhbHVlKSk7CiAKICAgICAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbSh1cmxJbmZv
LmdldCgpLCBkb2N1bWVudElES2V5LmdldCgpLCBkb2N1bWVudElEVmFsdWUuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAKaW5kZXggODVjNzAxMzAyNjlkMWQ2MGE0ZmQ2OGYyMGM5N2I2OGEyYjI4
YTNlYS4uZjRkZDU4MzEyMGJlMGNmYWQ0ODA1NjJkM2IwODVhMjUyODgxZGQxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCkBAIC0zMzgsMTQgKzMzOCwxNCBAQCBJbmplY3RlZEJ1bmRsZTo6RG9jdW1l
bnRJRFRvVVJMTWFwIEluamVjdGVkQnVuZGxlOjpsaXZlRG9jdW1lbnRVUkxzKGJvb2wgZXhjbHVk
ZQogICAgIERvY3VtZW50SURUb1VSTE1hcCByZXN1bHQ7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8q
IGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKQotICAgICAgICByZXN1bHQuYWRk
KGRvY3VtZW50LT5pZGVudGlmaWVyKCkub2JqZWN0KCkudG9VSW50NjQoKSwgZG9jdW1lbnQtPnVy
bCgpLnN0cmluZygpKTsKKyAgICAgICAgcmVzdWx0LmFkZChkb2N1bWVudC0+aWRlbnRpZmllcigp
Lm9iamVjdCgpLCBkb2N1bWVudC0+dXJsKCkuc3RyaW5nKCkpOwogCiAgICAgaWYgKGV4Y2x1ZGVE
b2N1bWVudHNJblBhZ2VHcm91cFBhZ2VzKSB7CiAgICAgICAgIFBhZ2U6OmZvckVhY2hQYWdlKFsm
XShQYWdlJiBwYWdlKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8qIGZyYW1lID0gJnBhZ2UubWFp
bkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsK
ICAgICAgICAgICAgICAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICByZXN1bHQucmVtb3ZlKGZyYW1lLT5kb2N1
bWVudCgpLT5pZGVudGlmaWVyKCkub2JqZWN0KCkudG9VSW50NjQoKSk7CisgICAgICAgICAgICAg
ICAgcmVzdWx0LnJlbW92ZShmcmFtZS0+ZG9jdW1lbnQoKS0+aWRlbnRpZmllcigpLm9iamVjdCgp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAppbmRl
eCBkZGVkOTcwYjNjZjJmMWVlMWU3NGZhYTYwOTI4ODNhYTYxNDJkZDYwLi41MWMwNDdhMjc1MTU3
NjJlOGUxZGFlMmY3MjZmNjY4NTMyMmNkZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApAQCAtMTEwLDcg
KzExMCw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFVVSUQ+IHdlYk5vdGlmaWNhdGlv
bklEKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CiAgICAgUmVmPEFQSTo6RGF0YT4gY3JlYXRl
V2ViRGF0YUZyb21VaW50OEFycmF5KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CiAgICAgCi0g
ICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+IERvY3VtZW50SURUb1VSTE1hcDsK
KyAgICB0eXBlZGVmIEhhc2hNYXA8VVVJRCwgU3RyaW5nPiBEb2N1bWVudElEVG9VUkxNYXA7CiAg
ICAgRG9jdW1lbnRJRFRvVVJMTWFwIGxpdmVEb2N1bWVudFVSTHMoYm9vbCBleGNsdWRlRG9jdW1l
bnRzSW5QYWdlR3JvdXBQYWdlcyk7CiAKICAgICAvLyBHYXJiYWdlIGNvbGxlY3Rpb24gQVBJCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggMDNlZWI4YjJkODEzMTBmOWU5
Njc3ZmYzYjBjMGU5NGMzNDRmNmZkNS4uNTVjYTdkYzNjZTA2YjU1MTQ5Y2E5YzNjYWNmNTgxMmQ1
NjQ5YWY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMjQxLDcg
KzI0MSw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNvbnRpbnVlRGlk
UmVjZWl2ZUZldGNoUmVzcG9uc2UoU1dTZXJ2ZXJDb25uCiAgICAgICAgIHNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS0+Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYmIGZvcm1EYXRhLCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc1NlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQpCit2b2lkIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlJiYgZm9ybURhdGEsIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCwgU3RyaW5nJiYgY2xpZW50SWRlbnRpZmllciwg
U3RyaW5nJiYgcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcikKIHsKICAgICBhdXRvKiBzZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIGlmICghc2Vy
dmljZVdvcmtlclRocmVhZFByb3h5KSB7CkBAIC0yNTcsMTAgKzI1Nyw5IEBAIHZvaWQgV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBzZXJ2CiAgICAgfQogCiAgICAgYXV0byBjbGllbnQgPSBXZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50OjpjcmVhdGUobV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy5jb3B5
UmVmKCksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0LnJlcXVlc3RlcigpID09IFJlc291cmNlUmVxdWVz
dDo6UmVxdWVzdGVyOjpNYWluKTsKLSAgICBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyPiBjbGllbnRJZCA9IG9wdGlvbnMuY2xpZW50SWRlbnRpZmllcjsKIAog
ICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoZm9ybURhdGEudGFrZURhdGEoKSk7Ci0gICAgc2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5LT5zdGFydEZldGNoKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBmZXRjaElkZW50aWZpZXIsIFdURk1vdmUoY2xpZW50KSwgV1RGTW92ZShjbGllbnRJZCksIFdU
Rk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVmZXJyZXIpLCBXVEZNb3ZlKG9wdGlvbnMpLCBpc1Nl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQpOworICAgIHNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS0+c3RhcnRGZXRjaChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJ
ZGVudGlmaWVyLCBXVEZNb3ZlKGNsaWVudCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVm
ZXJyZXIpLCBXVEZNb3ZlKG9wdGlvbnMpLCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZEVuYWJsZWQsIFdURk1vdmUoY2xpZW50SWRlbnRpZmllciksIFdURk1vdmUocmVzdWx0aW5nQ2xp
ZW50SWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Ojpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0
aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2Vy
dmljZVdvcmtlck9yQ2xpZW50RGF0YSYmIHNvdXJjZURhdGEpCkBAIC0zMzMsMjIgKzMzMiw5IEBA
IHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OndvcmtlclRlcm1pbmF0ZWQoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc2VyCiAgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXb3JrZXJU
ZXJtaW5hdGVkKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSwgMCk7CiB9CiAKLXZvaWQgV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZpZXIoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIEZpbmRDbGllbnRCeUlk
ZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6ZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY2xp
ZW50SWRlbnRpZmllciwgRmluZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7Ci0gICAgYXV0byByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9wcmV2aW91c1JlcXVlc3RJZGVu
dGlmaWVyOwotICAgIG1fZmluZENsaWVudEJ5SWRlbnRpZmllclJlcXVlc3RzLmFkZChyZXF1ZXN0
SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwotICAgIG1fY29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
RmluZENsaWVudEJ5SWRlbnRpZmllciB7IHJlcXVlc3RJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllciB9LCAwKTsKLX0KLQotdm9pZCBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4mJiBjbGllbnREYXRhLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpCi17Ci0gICAgaWYgKGF1
dG8gY2FsbGJhY2sgPSBtX2ZpbmRDbGllbnRCeUlkZW50aWZpZXJSZXF1ZXN0cy50YWtlKHJlcXVl
c3RJZGVudGlmaWVyKSkgewotICAgICAgICBpZiAoaGFzU2VjdXJpdHlFcnJvcikgewotICAgICAg
ICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciB9KTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNsaWVudERhdGEp
KTsKLSAgICB9CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OkZpbmRDbGll
bnRCeVZpc2libGVJZGVudGlmaWVyIHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNsaWVudElk
ZW50aWZpZXIgfSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjptYXRjaEFsbChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5
T3B0aW9ucyYgb3B0aW9ucywgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYg
Y2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCAwNTgwZDk4MzIy
OGE3MmJiOGM5OTQ5Y2EyYjFiNGM3MTE4ZmFjNjEwLi5hY2UxYTk5ZGQxMTg3MWZjMmJkZDdjYjQ1
ZmY1NzRhODc5ZjE1MWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTc3
LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgc2V0U2VydmljZVdv
cmtlckhhc1BlbmRpbmdFdmVudHMoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJv
b2wpIGZpbmFsOwogICAgIHZvaWQgd29ya2VyVGVybWluYXRlZChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllcikgZmluYWw7Ci0gICAgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllciwgRmluZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIEZpbmRDbGllbnRCeUlkZW50aWZpZXJD
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIG1hdGNoQWxsKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRp
b25zJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYpIGZp
bmFsOwogICAgIHZvaWQgY2xhaW0oV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6RXhjZXB0aW9uT3I8dm9pZD4mJik+JiYpIGZp
bmFsOwogICAgIHZvaWQgc2tpcFdhaXRpbmcoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CkBAIC05MCw3ICs5MCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyRmFpbGVkVG9TdGFydChzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZp
bmFsOwogICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNvbnRleHREYXRhJiYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJEYXRhJiYsIFN0cmluZyYmIHVz
ZXJBZ2VudCwgV2ViQ29yZTo6V29ya2VyVGhyZWFkTW9kZSk7CiAgICAgdm9pZCB1cGRhdGVBcHBJ
bml0aWF0ZWRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6
TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOwotICAgIHZvaWQgc3RhcnRGZXRjaChXZWJD
b3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Um
JiwgU3RyaW5nJiYgcmVmZXJyZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRFbmFibGVkKTsKKyAgICB2b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6
OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkZl
dGNoT3B0aW9ucyYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYsIFN0cmluZyYmIHJlZmVycmVy
LCBib29sIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCwgU3RyaW5nJiYg
Y2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcik7CiAg
ICAgdm9pZCBjYW5jZWxGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlm
aWVyKTsKICAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6
U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcik7CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlv
bklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEmJiBzb3VyY2VEYXRhKTsKQEAgLTEwMSw3ICsxMDEs
NiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRGT1JN
KENPQ09BKQogICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYmLCBIYXNoTWFwPFVSTCwgV2Vi
Q29yZTo6U2NyaXB0QnVmZmVyPiYmIGltcG9ydGVkU2NyaXB0cyk7CiAjZW5kaWYKLSAgICB2b2lk
IGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYsIGJv
b2wgaGFzU2VjdXJpdHlFcnJvcik7CiAgICAgdm9pZCBtYXRjaEFsbENvbXBsZXRlZCh1aW50NjRf
dCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudERhdGE+JiYpOwogICAgIHZvaWQgc2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2Vu
dCk7CiAgICAgdm9pZCBjbG9zZSgpOwpAQCAtMTE3LDcgKzExNiw2IEBAIHByaXZhdGU6CiAgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAKICAgICBIYXNoU2V0PHN0ZDo6dW5p
cXVlX3B0cjxTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+PiBtX2xvYWRlcnM7Ci0gICAg
SGFzaE1hcDx1aW50NjRfdCwgRmluZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNrPiBtX2ZpbmRD
bGllbnRCeUlkZW50aWZpZXJSZXF1ZXN0czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2s+IG1fbWF0Y2hBbGxSZXF1ZXN0
czsKICAgICB1aW50NjRfdCBtX3ByZXZpb3VzUmVxdWVzdElkZW50aWZpZXIgeyAwIH07CiAgICAg
U3RyaW5nIG1fdXNlckFnZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbgppbmRleCBkNTQxYjgwMzE5MmI4ZDU0ZDE4MjE3ZmIxMTI1NmRmMDA2OTUz
MDIwLi5jNmExYThmYjM2NzZkZmNkN2YyZDhmNzQyMGExZThiY2M5MGIzMTAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUs
NyBAQAogbWVzc2FnZXMgLT4gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291
bnRlZCB7CiAgICAgSW5zdGFsbFNlcnZpY2VXb3JrZXIoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJEYXRhIHdvcmtlckRhdGEsIFN0cmluZyB1c2VyQWdlbnQsIGVudW06Ym9vbCBXZWJDb3JlOjpX
b3JrZXJUaHJlYWRNb2RlIHdvcmtlclRocmVhZE1vZGUpCiAgICAgVXBkYXRlQXBwSW5pdGlhdGVk
VmFsdWUoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGVudW06Ym9vbCBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBs
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkKLSAgICBTdGFydEZldGNoKFdlYkNvcmU6OlNX
U2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBX
ZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyBvcHRpb25zLCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBTdHJpbmcgcmVmZXJyZXIsIGJvb2wg
aXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkKQorICAgIFN0YXJ0RmV0Y2go
V2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25z
IG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFN0cmluZyByZWZl
cnJlciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIFN0cmlu
ZyBjbGllbnRJZGVudGlmZXIsIFN0cmluZyByZXN1dGxpbmdDbGllbnRJZGVudGlmaWVyKQogICAg
IENhbmNlbEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVu
dGlmaWVyKQogICAgIENvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6U1dT
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdl
YkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIpCiAgICAgUG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRp
b25JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVz
c2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50RGF0YSBzb3VyY2VEYXRhKQpAQCAt
MzcsNyArMzcsNiBAQCBtZXNzYWdlcyAtPiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBO
b3RSZWZDb3VudGVkIHsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9S
TShDT0NPQSkKICAgICBEaWRTYXZlU2NyaXB0c1RvRGlzayhXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6U2NyaXB0QnVmZmVy
IHNjcmlwdCwgSGFzaE1hcDxVUkwsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gaW1wb3J0ZWRTY3Jp
cHRzKTsKICNlbmRpZgotICAgIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0
X3QgY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YT4gZGF0YSwgYm9vbCBoYXNTZWN1cml0eUVycm9yKQogICAgIE1h
dGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIsIFZlY3Rv
cjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gY2xpZW50c0RhdGEpCiAgICAgU2V0
VXNlckFnZW50KFN0cmluZyB1c2VyQWdlbnQpCiAgICAgVXBkYXRlUHJlZmVyZW5jZXNTdG9yZShz
dHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDNkMTM2ZTFlN2QzOWZkZjY5OGNm
NDZmNTdmZGY2ZGJkZjRhYjMxY2EuLjE0NjFmNjYwMjI1NTAxMjM1ODQyODY5MGYwY2Y3OTA2ZTYz
ZDhmNGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMS0xMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKKyAgICAgICAgTWFrZSBTZXJ2aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0
ZWFkIG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJvbSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzUwNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VVSUQuY3BwOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3lzdGVtUHJldmlldy5tbToKKwogMjAyMi0w
MS0xMSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYlBh
Z2VQcm94eSBkZXN0cnVjdGlvbiBzaG91bGQgbm90IGxhdW5jaCBhIG5ldHdvcmsgcHJvY2Vzcwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMWZhMWViZmFlYzUwY2ZjNmJlNDU4ODE1MDI4NjEz
NTdhYTljMzU1Li5lYjYyY2RjYjRjMzI5ZTRlZGM0NmZhZGY0ZGViY2I3NGNjNWJiYmZmIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA3LDYgKzIwNyw3IEBACiAJCTQxNjYxQzY2MjM1NUU4
NUUwMEQzM0MyNyAvKiBnZXRVc2VyTWVkaWEtd2ViYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTY2MUM2NTIzNTVEOThCMDBE
MzNDMjcgLyogZ2V0VXNlck1lZGlhLXdlYmF1ZGlvLmh0bWwgKi87IH07CiAJCTQxODFDNjJEMjU1
QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNjJDMjU1QTg5MTEw
MEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCAqLzsgfTsKIAkJNDE4
NDhGNDQyNDg5MTg3OTAwMEUyNTg4IC8qIG9wZW4td2luZG93LXdpdGgtZmlsZS11cmwtd2l0aC1o
b3N0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE4NDhGNDMyNDg5MTgxNTAwMEUyNTg4IC8qIG9wZW4td2luZG93LXdpdGgtZmlsZS11
cmwtd2l0aC1ob3N0Lmh0bWwgKi87IH07CisJCTQxRDJBMjFGMjc5MDZGOUYwMDg4RkNDRSAvKiBV
VUlELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
NEQ0MEVDMjIxQjQ2QTcwMDRCNDc0RiAvKiBVVUlELmNwcCAqLzsgfTsKIAkJNDFFNjdBODUyNUQx
NkU4MzAwN0IwQTRDIC8qIFNUVU5NZXNzYWdlUGFyc2luZ1Rlc3QuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFNjdBODQyNUQxNkU4MzAwN0IwQTRD
IC8qIFNUVU5NZXNzYWdlUGFyc2luZ1Rlc3QuY3BwICovOyB9OwogCQk0NDA3N0JCMTIzMTQ0QjUw
MDAxNzlFMkQgLyogRGF0YURldGVjdG9yc1Rlc3RJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDA3N0JCMDIzMTQ0OUQyMDAxNzlFMkQgLyogRGF0
YURldGVjdG9yc1Rlc3RJT1MubW0gKi87IH07CiAJCTQ0MzNBMzk2MjA4MDQ0MTQwMDkxRUQ1NyAv
KiBTeW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MzNBMzk1MjA4MDQ0MTMwMDkxRUQ1NyAvKiBTeW5jaHJvbm91
c1RpbWVvdXRUZXN0cy5tbSAqLzsgfTsKQEAgLTUzOTAsNiArNTM5MSw3IEBACiAJCQkJRTNDMjFB
N0MyMUIyNUNBMjAwM0IzMUEzIC8qIFVSTEV4dHJhcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUz
QTFFNzg1MjFCMjVCOTEwMDhDNjAwNyAvKiBVUkxQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M4M0UwM0IxRDBBNjAyNzAwRkVCQ0YzIC8qIFV0aWxpdGllc0NvY29hLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJNDFEMkEyMUYyNzkwNkY5RjAwODhGQ0NFIC8qIFVVSUQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M4M0RGNEMxRDBBNTkwQzAwRkVCQ0YzIC8qIFZlY3Rvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkzN0M3Q0MyRDFFQTQxNDZCMDA3QkQ5NTYgLyogV2Vha0xpbmtpbmcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTdDM0ZBNjYxRjdDMjQ4RjAwOUQ0QjgwIC8qIFdlYWtQdHIu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9VVUlELmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VVSUQuY3BwCmlu
ZGV4IGQ3ZGUzYWZjODcwZjlhMWIxNmY3OTM2MWVhMTA3YTBjYmY0NWJhNDAuLmU2ZDc2ODNlNzEy
YzZmNWMzNWQyOWQ3Yzc2ODE4YTFmYjU2YTY5NGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1VVSUQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1VVSUQuY3BwCkBAIC0zMSwzICszMSwyMSBAQCBURVNUKFdURiwgQm9vdFNlc3Npb25VVUlE
SWRlbnRpdHkpCiB7CiAgICAgRVhQRUNUX0VRKGJvb3RTZXNzaW9uVVVJRFN0cmluZygpLCBib290
U2Vzc2lvblVVSURTdHJpbmcoKSk7CiB9CisKK1RFU1QoV1RGLCBUZXN0VVVJRFBhcnNpbmcpCit7
CisgICAgLy8geHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4CisgICAgYXV0byB2
YWx1ZSA9IFVVSUQ6OnBhcnNlKCIxMjM0NTY3OC05YWJjLTVkZTAtODlBQi0wMTIzNDU2Nzg5YWIi
KTsKKyAgICBFWFBFQ1RfRkFMU0UoISF2YWx1ZSk7CisKKyAgICB2YWx1ZSA9IFVVSUQ6OnBhcnNl
KCIxMjM0NTY3OC05YWJjLTRkZWEtNzlBQi0wMTIzNDU2Nzg5YWIiKTsKKyAgICBFWFBFQ1RfRkFM
U0UoISF2YWx1ZSk7CisKKyAgICB2YWx1ZSA9IFVVSUQ6OnBhcnNlKCIxMjM0NTY3OC05YWJjLTRk
ZTAtODlhYi0wMTIzNDU2Nzg5YWIiKTsKKyAgICBFWFBFQ1RfVFJVRSghIXZhbHVlKTsKKyAgICBF
WFBFQ1RfVFJVRSh2YWx1ZS0+dG9TdHJpbmcoKSA9PSAiMTIzNDU2NzgtOWFiYy00ZGUwLTg5YWIt
MDEyMzQ1Njc4OWFiIik7CisKKyAgICB2YWx1ZSA9IFVVSUQ6OnBhcnNlKCI2ZWY5NDRjMS01Y2I4
LTQ4YWEtQWQxMi1DNWY4MjNmMDA1YzMiKTsKKyAgICBFWFBFQ1RfVFJVRSghIXZhbHVlKTsKKyAg
ICBFWFBFQ1RfVFJVRSh2YWx1ZS0+dG9TdHJpbmcoKSA9PSAiNmVmOTQ0YzEtNWNiOC00OGFhLWFk
MTItYzVmODIzZjAwNWMzIik7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1N5c3RlbVByZXZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1N5c3RlbVByZXZpZXcubW0KaW5kZXggYmQ0YjM1ZjIwMDAwMTEwZThi
NWUwNDZkYzA3YjMwYmQzODA2ODllYy4uZjJhY2QxZWJjNmY3ZjEwYmEyNDMwYzAxZmM3NDU2YmEw
M2FjMDI0ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TeXN0ZW1QcmV2aWV3Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvU3lzdGVtUHJldmlldy5tbQpAQCAtMzcsNyArMzcsNyBAQAogc3RhdGljIGJvb2wgaGFz
VHJpZ2dlckluZm87CiBzdGF0aWMgYm9vbCB3YXNUcmlnZ2VyZWQ7CiBzdGF0aWMgdWludDY0X3Qg
ZWxlbWVudElEOwotc3RhdGljIHVpbnQ2NF90IGRvY3VtZW50SUQ7CitzdGF0aWMgTlNTdHJpbmcq
IGRvY3VtZW50SUQ7CiBzdGF0aWMgdWludDY0X3QgcGFnZUlEOwogCiBAaW50ZXJmYWNlIFRlc3RT
eXN0ZW1QcmV2aWV3VHJpZ2dlcmVkSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VI
YW5kbGVyPgpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgdWludDY0X3QgcGFnZUlEOwogewogICAg
IGlmIChbbWVzc2FnZS5ib2R5W0AibWVzc2FnZSJdIGlzRXF1YWxUb1N0cmluZzpAImxvYWRlZCJd
KSB7CiAgICAgICAgIGVsZW1lbnRJRCA9IFttZXNzYWdlLmJvZHlbQCJlbGVtZW50SUQiXSB1bnNp
Z25lZEludFZhbHVlXTsKLSAgICAgICAgZG9jdW1lbnRJRCA9IFttZXNzYWdlLmJvZHlbQCJkb2N1
bWVudElEIl0gdW5zaWduZWRJbnRWYWx1ZV07CisgICAgICAgIGRvY3VtZW50SUQgPSBbbWVzc2Fn
ZS5ib2R5W0AiZG9jdW1lbnRJRCJdIHN0cmluZ1ZhbHVlXTsKICAgICAgICAgcGFnZUlEID0gW21l
c3NhZ2UuYm9keVtAInBhZ2VJRCJdIHVuc2lnbmVkSW50VmFsdWVdOwogICAgICAgICBoYXNUcmln
Z2VySW5mbyA9IHRydWU7CiAgICAgfSBlbHNlIGlmIChbbWVzc2FnZS5ib2R5W0AibWVzc2FnZSJd
IGlzRXF1YWxUb1N0cmluZzpAInRyaWdnZXJlZCJdKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjA3OGE3ZjYzZGVjZTAx
OTI5MWU3Mzk2MDlhN2Q0Mjc4ODgzZGNiMy4uMTQxNjQ3OWU2OTUwYjQ5NTk0NjkzNWJlNmQxOTEw
Mzg1MGZjNjE1NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAxLTEzICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFNlcnZpY2VXb3JrZXJDbGll
bnQuaWQgYSBVVUlEIGluc3RlYWQgb2YgYSBzdHJpbmcgZGVyaXZlZCBmcm9tIGEgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNTA3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGVzdHMgdG8gbm90IHJlbHkgb24gdmlzaWJsZSBJRCB0
byBiZSB0aGUgc2VyaWFsaXphdGlvbiBvZiBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyLgorICAgICAgICBGb3IgdGhhdCByZWFzb24sIGFkZCBpbnRlcm5hbHMgQVBJIHRvIGdldCB0
aGUgaW50ZXJuYWwgSUQgZnJvbSBhIFNlcnZpY2VXb3JrZXJDbGllbnQuCisKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9jbGllbnQtYWRkZWQtdG8tY2xpZW50cy13aGVuLXJl
c3RvcmVkLWZyb20tcGFnZS1jYWNoZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vy
cy9zZXJ2aWNlL2NsaWVudC1yZW1vdmVkLWZyb20tY2xpZW50cy13aGlsZS1pbi1wYWdlLWNhY2hl
Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2dl
dENsaWVudElkcy13b3JrZXIuanM6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2Uvc2VydmljZXdvcmtlcmNsaWVudHMtbWF0Y2hBbGwtd29ya2VyLmpzOgorICAgICAgICAqIGh0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLW1hdGNoQWxsLmh0
dHBzLmh0bWw6CisKIDIwMjItMDEtMTEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5j
b20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIFNWRyByZXNvdXJjZXMgY3JlYXRlIHJl
bW90ZSBJbWFnZUJ1ZmZlcnMgZm9yIHRoZWlyIGRyYXdpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCmluZGV4IGY1NjI4OGUwNDNlZGNmNmU2MTQxYTYwYjY1Y2I4ODI1YjFkN2I5YWEuLjIw
N2YyNmRhYzJhNzhlZDkxMDA1ZjE3ODRlMmI1YjM5ZGRjNTdiNzQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAxLTEzICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFNlcnZpY2VXb3JrZXJDbGllbnQu
aWQgYSBVVUlEIGluc3RlYWQgb2YgYSBzdHJpbmcgZGVyaXZlZCBmcm9tIGEgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNTA3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNl
LXdvcmtlci9mZXRjaC1ldmVudC5odHRwcy1leHBlY3RlZC50eHQ6CisKIDIwMjItMDEtMTIgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE5ldyBzZXJ2aWNlIHdv
cmtlciBBUEkgJ0ZldGNoRXZlbnQuaGFuZGxlZCcgbmVlZHMgdG8gYmUgc3VwcG9ydGVkCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9jbGllbnQtYWRk
ZWQtdG8tY2xpZW50cy13aGVuLXJlc3RvcmVkLWZyb20tcGFnZS1jYWNoZS5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvY2xpZW50LWFkZGVkLXRvLWNsaWVudHMt
d2hlbi1yZXN0b3JlZC1mcm9tLXBhZ2UtY2FjaGUuaHRtbAppbmRleCAxMDc5N2YyOGUzNGU1YTk3
MjIwODcwMWQyN2YzYWVmZDE3NTE4NDlmLi42YTIyODRlY2YyYzM5ZjFiODhkNjZkYWJjMmY1YTdh
YTZlMWIwMjJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2Vy
dmljZS9jbGllbnQtYWRkZWQtdG8tY2xpZW50cy13aGVuLXJlc3RvcmVkLWZyb20tcGFnZS1jYWNo
ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2NsaWVu
dC1hZGRlZC10by1jbGllbnRzLXdoZW4tcmVzdG9yZWQtZnJvbS1wYWdlLWNhY2hlLmh0bWwKQEAg
LTcwLDEyICs3MCwxMiBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVy
KCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKIH0pOwogCiBuYXZpZ2F0b3Iuc2VydmljZVdv
cmtlci5yZWdpc3RlcigicmVzb3VyY2VzL2dldENsaWVudElkcy13b3JrZXIuanMiLCB7IH0pLnRo
ZW4oZnVuY3Rpb24ocmVnaXN0cmF0aW9uKSB7Ci0gICAgZXhwZWN0ZWRDbGllbnRJZGVudGlmaWVy
cy5wdXNoKGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihkb2N1bWVudCkp
OworICAgIGV4cGVjdGVkQ2xpZW50SWRlbnRpZmllcnMucHVzaChpbnRlcm5hbHMuc2VydmljZVdv
cmtlckNsaWVudEludGVybmFsSWRlbnRpZmllcihkb2N1bWVudCkpOwogCiAgICAgd29ya2VyID0g
cmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CiAgICAgb3RoZXJXaW5kb3cgPSBvcGVuKCJvdGhlcl9y
ZXNvdXJjZXMvdGVzdC5odG1sIik7CiAgICAgb3RoZXJXaW5kb3cub25sb2FkID0gZnVuY3Rpb24o
KSB7Ci0gICAgICBleHBlY3RlZENsaWVudElkZW50aWZpZXJzLnB1c2goaW50ZXJuYWxzLnNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKG90aGVyV2luZG93LmRvY3VtZW50KSk7CisgICAgICBl
eHBlY3RlZENsaWVudElkZW50aWZpZXJzLnB1c2goaW50ZXJuYWxzLnNlcnZpY2VXb3JrZXJDbGll
bnRJbnRlcm5hbElkZW50aWZpZXIob3RoZXJXaW5kb3cuZG9jdW1lbnQpKTsKICAgICAgIHN0ZXAg
PSAiQm90aENsaWVudHNJbml0aWFsbHlBY3RpdmUiCiAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uo
ImdldENsaWVudElkcyIpOwogICAgIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9jbGllbnQtcmVtb3ZlZC1mcm9tLWNsaWVudHMtd2hpbGUtaW4t
cGFnZS1jYWNoZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
Y2xpZW50LXJlbW92ZWQtZnJvbS1jbGllbnRzLXdoaWxlLWluLXBhZ2UtY2FjaGUuaHRtbAppbmRl
eCBmOWZjZjVkMzQyYjEzYzBhZGUxYjVlZmJiMWE3NDVjOGNhYjZhNDc3Li42OGE5ZmM2MjQ5ZjUw
NTM1Mjk0ZGY0Mzk3NTFiNTM3ZGY4YjZiMDY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9jbGllbnQtcmVtb3ZlZC1mcm9tLWNsaWVudHMtd2hpbGUt
aW4tcGFnZS1jYWNoZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL2NsaWVudC1yZW1vdmVkLWZyb20tY2xpZW50cy13aGlsZS1pbi1wYWdlLWNhY2hlLmh0
bWwKQEAgLTY1LDEyICs2NSwxNCBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExp
c3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKIH0pOwogCiBuYXZpZ2F0b3Iuc2Vy
dmljZVdvcmtlci5yZWdpc3RlcigicmVzb3VyY2VzL2dldENsaWVudElkcy13b3JrZXIuanMiLCB7
IH0pLnRoZW4oZnVuY3Rpb24ocmVnaXN0cmF0aW9uKSB7Ci0gICAgdG9wQ2xpZW50SWRlbnRpZmll
ciA9IGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihkb2N1bWVudCk7Cisg
ICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICByZXR1cm47CisgICAgdG9wQ2xpZW50
SWRlbnRpZmllciA9IGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlm
aWVyKGRvY3VtZW50KTsKIAogICAgIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOwog
ICAgIG90aGVyV2luZG93ID0gb3Blbigib3RoZXJfcmVzb3VyY2VzL3Rlc3QuaHRtbCIpOwogICAg
IG90aGVyV2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgICAgd2luZG93Q2xpZW50SWRl
bnRpZmllciA9IGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihvdGhlcldp
bmRvdy5kb2N1bWVudCk7CisgICAgICB3aW5kb3dDbGllbnRJZGVudGlmaWVyID0gaW50ZXJuYWxz
LnNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIob3RoZXJXaW5kb3cuZG9jdW1l
bnQpOwogICAgICAgc3RlcCA9ICJCb3RoQ2xpZW50c0luaXRpYWxseUFjdGl2ZSIKICAgICAgIHdv
cmtlci5wb3N0TWVzc2FnZSgiZ2V0Q2xpZW50SWRzIik7CiAgICAgfTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9nZXRDbGllbnRJ
ZHMtd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVz
b3VyY2VzL2dldENsaWVudElkcy13b3JrZXIuanMKaW5kZXggOTlkYzFjYjgyMjFkMGRmOGRmMGNl
ZWM3ZjVmYTZiMTA4M2Q3M2IxOC4uY2UxOWIyNGY4MDgwNGRhMGY1NTE3OTNhZGE3YWZlNjdlZmUw
NGNjNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cmVzb3VyY2VzL2dldENsaWVudElkcy13b3JrZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2dldENsaWVudElkcy13b3JrZXIuanMKQEAg
LTMsNyArMyw3IEBAIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4g
ewogICAgIGNsaWVudHMubWF0Y2hBbGwoeyBpbmNsdWRlVW5jb250cm9sbGVkIDogdHJ1ZSB9KS50
aGVuKGZ1bmN0aW9uKGNsaWVudHMpIHsKICAgICAgICAgbGV0IGlkcyA9IFtdOwogICAgICAgICBm
b3IgKGxldCBjbGllbnQgb2YgY2xpZW50cykKLSAgICAgICAgICAgIGlkcy5wdXNoKGNsaWVudC5p
ZCk7CisgICAgICAgICAgICBpZHMucHVzaChzZWxmLmludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xp
ZW50SW50ZXJuYWxJZGVudGlmaWVyKGNsaWVudCkpOwogICAgICAgICBzb3VyY2UucG9zdE1lc3Nh
Z2UoaWRzKTsKICAgICB9KTsKIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudHMtbWF0Y2hBbGwtd29ya2VyLmpz
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNs
aWVudHMtbWF0Y2hBbGwtd29ya2VyLmpzCmluZGV4IGJkYmEyODI4NjA1M2YxZmRhZDAzNWQzOTMz
YzI4NjgwMTE3MzY4YzMuLmRiNmYwNTRmNjg5MmNmMDJhNjhkZDk5OWZiODg2OGUyMmYzY2NhNzAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZp
Y2V3b3JrZXJjbGllbnRzLW1hdGNoQWxsLXdvcmtlci5qcworKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1tYXRjaEFsbC13b3Jr
ZXIuanMKQEAgLTMsNiArMywxNSBAQCBmdW5jdGlvbiB3YWl0Rm9yKGR1cmF0aW9uKQogICAgIHJl
dHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBkdXJhdGlv
bikpOwogfQogCithc3luYyBmdW5jdGlvbiBzZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllckZy
b21JbnRlcm5hbElkZW50aWZpZXIoaW50ZXJuYWxJZGVudGlmaWVyKQoreworICAgICBjb25zdCBj
bGllbnRzID0gYXdhaXQgc2VsZi5jbGllbnRzLm1hdGNoQWxsKHsgaW5jbHVkZVVuY29udHJvbGxl
ZCA6IHRydWUgfSk7CisgICAgIGZvciAobGV0IGNsaWVudCBvZiBjbGllbnRzKSB7CisgICAgICAg
ICBpZiAoaW50ZXJuYWxzLnNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIoY2xp
ZW50KSA9PSBpbnRlcm5hbElkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gY2xpZW50Lmlk
OworICAgICB9Cit9CisKIGZ1bmN0aW9uIGNoZWNrQ2xpZW50Tm90SW5Db250cm9sbGVkQ2xpZW50
cyhjbGllbnRJZGVudGlmaWVyKQogewogICAgIHJldHVybiBzZWxmLmNsaWVudHMubWF0Y2hBbGwo
KS50aGVuKChjbGllbnRzKSA9PiB7CkBAIC0zNyw3ICs0Niw3IEBAIGFzeW5jIGZ1bmN0aW9uIGRv
VGVzdEFmdGVyTWVzc2FnZShldmVudCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIGNvbnN0IGNsaWVudElkZW50aWZpZXIgPSBldmVudC5kYXRhLmlkZW50aWZpZXI7
CisgICAgICAgIGNvbnN0IGNsaWVudElkZW50aWZpZXIgPSBhd2FpdCBzZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllckZyb21JbnRlcm5hbElkZW50aWZpZXIoZXZlbnQuZGF0YS5pZGVudGlmaWVy
KTsKIAogICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2hlY2tDbGllbnROb3RJbkNvbnRyb2xs
ZWRDbGllbnRzKGNsaWVudElkZW50aWZpZXIpOwogICAgICAgICBpZiAocmVzdWx0ICE9PSAiUEFT
UyIpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNl
L3NlcnZpY2V3b3JrZXJjbGllbnRzLW1hdGNoQWxsLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1tYXRjaEFsbC5o
dHRwcy5odG1sCmluZGV4IDJlNmRiZjk5MmQwNTJkOWYxZTNlNTE4ZGQ3YjBlODUxZWYyMDAwYTcu
LjY5YjVmMjg5MDE2ZmU0ODAxYmUxYWE5MDEyYjVkYjllNmRiNDZmYTAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRz
LW1hdGNoQWxsLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudHMtbWF0Y2hBbGwuaHR0cHMuaHRtbApAQCAtMjcs
NyArMjcsNyBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKIH0sICJTZXR1cCB3b3Jr
ZXIiKTsKIAogcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7Ci0gICAgY29uc3Qgc2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXIgPSBpbnRlcm5hbHMuc2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXIoZG9jdW1lbnQpOworICAgIGNvbnN0IHNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyID0gaW50ZXJuYWxzLnNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIoZG9j
dW1lbnQpOwogICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkg
PT4gewogICAgICAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCJt
ZXNzYWdlIiwgdGVzdC5zdGVwX2Z1bmMoKGV2ZW50KSA9PiB7CiAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKGV2ZW50LmRhdGEsICJQQVNTIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci9mZXRjaC1ldmVudC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRj
aC1ldmVudC5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNWQyYjlhNDMyZGEwMzQ1ZjkwMzA3N2Yw
MGI2ZWYwYTYwZmVlMmRiNC4uZGQzNmU5YmJhMzQ1YjhlNTYyMzFlZTUyZDgyYTUyYTk1MmNlOGYy
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtZXZlbnQuaHR0cHMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLWV2ZW50Lmh0dHBzLWV4cGVjdGVk
LnR4dApAQCAtNiw3ICs2LDcgQEAgUEFTUyBTZXJ2aWNlIFdvcmtlciByZXNwb25kcyB0byBmZXRj
aCBldmVudCB1c2luZyByZXF1ZXN0IGZyYWdtZW50IHdpdGggc3RyaW5nCiBQQVNTIFNlcnZpY2Ug
V29ya2VyIHJlc3BvbmRzIHRvIGZldGNoIGV2ZW50IHdpdGggYmxvYiBib2R5CiBQQVNTIFNlcnZp
Y2UgV29ya2VyIHJlc3BvbmRzIHRvIGZldGNoIGV2ZW50IHdpdGggdGhlIHJlZmVycmVyIFVSTAog
UEFTUyBTZXJ2aWNlIFdvcmtlciByZXNwb25kcyB0byBmZXRjaCBldmVudCB3aXRoIGFuIGV4aXN0
aW5nIGNsaWVudCBpZAotRkFJTCBTZXJ2aWNlIFdvcmtlciByZXNwb25kcyB0byBmZXRjaCBldmVu
dCB3aXRoIHRoZSBjb3JyZWN0IHJlc3VsdGluZyBjbGllbnQgaWQgYXNzZXJ0X2VxdWFsczogU2Vy
dmljZSBXb3JrZXIgc2hvdWxkIHJlc3BvbmQgd2l0aCBhbiBlbXB0eSByZXN1bHRpbmcgY2xpZW50
IGlkIGZvciBzdWJyZXNvdXJjZSByZXF1ZXN0cyBleHBlY3RlZCAiUmVzdWx0aW5nIENsaWVudCBJ
RCBOb3QgRm91bmQiIGJ1dCBnb3QgIlJlc3VsdGluZyBDbGllbnQgSUQgRm91bmQ6IHVuZGVmaW5l
ZCIKK1BBU1MgU2VydmljZSBXb3JrZXIgcmVzcG9uZHMgdG8gZmV0Y2ggZXZlbnQgd2l0aCB0aGUg
Y29ycmVjdCByZXN1bHRpbmcgY2xpZW50IGlkCiBQQVNTIFNlcnZpY2UgV29ya2VyIGRvZXMgbm90
IHJlc3BvbmQgdG8gZmV0Y2ggZXZlbnQKIFBBU1MgU2VydmljZSBXb3JrZXIgcmVzcG9uZHMgdG8g
ZmV0Y2ggZXZlbnQgd2l0aCBudWxsIHJlc3BvbnNlIGJvZHkKIFBBU1MgU2VydmljZSBXb3JrZXIg
ZmV0Y2hlcyBvdGhlciBmaWxlIGluIGZldGNoIGV2ZW50Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449147</attachid>
            <date>2022-01-14 01:34:41 -0800</date>
            <delta_ts>2022-01-14 04:33:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235070-20220114103438.patch</filename>
            <type>text/plain</type>
            <size>95024</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3OTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAwNzkxMWQ1NjQ4ZDYwYWU3MmU0ZGRh
ZWFjNDQ0ZjAxMDNlMjZjNjUuLmVjMGZiYmJjNDY2NWRkZTRhNjIzYzg5ZTY2M2FlNGNhNmY5YzRj
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5pZCBhIFVV
SUQgaW5zdGVhZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM1MDcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvVVVJRC5jcHA6CisgICAgICAgICogd3RmL1VVSUQuaDoKKyAgICAgICAgIEFk
ZCByb3V0aW5lIHRvIHN0cmluZ2lmeSBhIFVVSUQuCisgICAgICAgICBBZGQgcm91dGluZSB0byBw
YXJzZSBhIHN0cmluZ2lmaWVkIFVVSUQuCisgICAgICAgICBXZSByZXN0cmljdCBVVUlEOjpjcmVh
dGUgdG8gdmFsdWVzIGZvciB3aGljaCB0aGUgdmVyc2lvbiA0IFVVSUQgc3RyaW5naWZpY2F0aW9u
IGlzIGJpamVjdGl2ZS4KKwogMjAyMS0xMS0yOSBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFNlcmlhbGl6ZSBDU1MgPG51bWJlcj4gdmFsdWVzIHdpdGgg
cm91bmRpbmcsIGxpbWl0ZWQgZGVjaW1hbCBwcmVjaXNpb24sIGFuZCBubyBleHBvbmVudHMgcGVy
LXNwZWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA4YmJlYzI3NTE5MDA3Mzc1OWM3ZDhlODg3NTljM2YwMWUzOTU1
OTI3Li4xMDAxMzFmNjM3Y2VlYzNmZWMwNThkNjkxODZkNzQyMmRkNmFlZDU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTEgQEAKKzIwMjItMDEtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCisgICAgICAgIE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5pZCBhIFVVSUQgaW5z
dGVhZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM1MDcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIHRvIGJlIGEgcHJvY2Vzcy1z
Y29wZWQgVVVJRC4KKyAgICAgICAgVGhpcyBhbGxvd3MgdG8gaWRlbnRpZnkgdGhlIHByb2Nlc3Mg
cnVubmluZyBhIHByb2Nlc3MgYXMgd2VsbCBhcyBleHBvc2luZyB0byBKYXZhU2NyaXB0IGNvbnRl
eHQgaWRlbnRpZmllcnMgYXMgVVVJRHMuCisgICAgICAgIFRoaXMgaXMgbWF0Y2hpbmcgd2hhdCBD
aHJvbWUgYW5kIEZpcmVmb3ggYXJlIGRvaW5nLgorICAgICAgICBNYWtlIFNXU2VydmVyIHN0b3Jl
IHRoZSBtYXBpbmcgZnJvbSBjb250ZXh0IFVVSUQgc3RyaW5ncyB0byB0aGUgaW50ZXJuYWwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXJzLgorICAgICAgICBUaGlzIGFsbG93cyB0byBm
aW5kIGEgU2VydmljZVdvcmtlckNsaWVudCBkaXJlY3RseSBmcm9tIGl0cyBKYXZhU2NyaXB0IGV4
cG9zZWQgaWRlbnRpZmllci4KKyAgICAgICAgUmVuYW1lIHJlc2VydmVkQ2xpZW50SWQgaW4gcmVz
dWx0aW5nQ2xpZW50SWQgdG8gbWF0Y2ggdGhlIHNwZWMuCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViLWxvY2tzL1dlYkxvY2tSZWdp
c3RyeS5jcHA6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgICogcGFnZS9tYWMvUGFn
ZU1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9jZXNzUXVhbGlmaWVkLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaDoKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9TZXJ2
aWNlV29ya2VySW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJ
bnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRs
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmNwcDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9G
ZXRjaEV2ZW50LmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudC5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQu
aWRsOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHA6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5j
cHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuaDoKKwogMjAyMi0wMS0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgTmV3IHNlcnZpY2Ugd29ya2VyIEFQSSAnRmV0Y2hFdmVudC5oYW5kbGVkJyBu
ZWVkcyB0byBiZSBzdXBwb3J0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTU1Zjg5OTQ0NjAwZDZhYWYxZGNjYmFh
OTk1NWQxZTBmMzViOTIwZC4uZGY3MTE1M2U4NDE1ZDBlZGQzYjQzZGUwMTVkNTAxOTRkYjczYjFh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMi0wMS0xMyAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBTZXJ2aWNlV29ya2VyQ2xpZW50Lmlk
IGEgVVVJRCBpbnN0ZWFkIG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJvbSBhIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzUwNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDaGFuZ2UgZmluZEJ5Q2xpZW50SWRlbnRpZmllciBpbnRvIGZpbmRCeVZpc2li
bGVDbGllbnRJZGVudGlmaWVyYW4gYW5kIG1ha2UgaXQgYXNuIGFzeW5jIHJlcGx5LgorICAgICAg
ICBVcGRhdGUgZmV0Y2ggZXZlbnQgY29kZSBwYXRoIHRvIHNlbmQgdGhlIHZpc2libGUgSURzIG9m
IHRoZSBGZXRjaEV2ZW50IGZyb20gbmV0d29yayBwcm9jZXNzIHRvIHdvcmtlciBjb250ZXh0IHBy
b2Nlc3MuCisgICAgICAgIFdlIHN0b3JlIHRoZXNlIElEcyBpbiBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIgc28gdGhhdCB3ZSBjYW4gY2hhbmdlIHRoZW0gaW4gY2FzZSBvZiByZWRpcmVjdGlvbiBmb3Ig
bmF2aWdhdGlvbnMuIAorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluOgorCiAyMDIyLTAxLTEyICBGcsOpZMOpcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFByb3RlY3QgRG9jdW1lbnRMb2FkZXIgd2hlbiBhIHJlZmVyZW5jZSB0byBp
dHMgbWVtYmVycyBpcyB1c2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVVJRC5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9VVUlELmNwcAppbmRleCBmMWQwMDBjYzg1NWQzNTk0ZTFmNTVlOGU0
NDUzZWUzYjk3ZWFhOTE3Li5hY2I5NDdmNTdhMDUxMzQzZDY3ODc4NDBlNDZjZDY0OWYyYTM2ZGZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VVUlELmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9VVUlELmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+
CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0hleE51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNv
bnZlcnNpb24uaD4KIAogI2lmIE9TKERBUldJTikKICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CkBA
IC00NSw3ICs0NiwxMSBAQCBuYW1lc3BhY2UgV1RGIHsKIFVVSUQ6OlVVSUQoKQogewogICAgIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKG1fZGF0YSkgPT0gMTYpOwotICAgIGNyeXB0b2dyYXBoaWNhbGx5
UmFuZG9tVmFsdWVzKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KCZtX2RhdGEpLCAx
Nik7CisgICAgYXV0byogZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KCZt
X2RhdGEpOworICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKGRhdGEsIDE2KTsKKyAg
ICAvLyBXZSBzYW5pdGl6ZSB0aGUgdmFsdWUgc28gYXMgbm90IGxvb3NpbmcgYW55IGRhdGEgd2hl
biBnb2luZyB0byBWZXJzaW9uIDQgVVVJRHMuCisgICAgZGF0YVs1XSAmPSAweDBmOworICAgIGRh
dGFbMTFdICY9IDB4Y2Y7CiB9CiAKIHVuc2lnbmVkIFVVSUQ6Omhhc2goKSBjb25zdApAQCAtNTMs
MTAgKzU4LDkgQEAgdW5zaWduZWQgVVVJRDo6aGFzaCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmlu
Z0hhc2hlcjo6aGFzaE1lbW9yeShyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIq
PigmbV9kYXRhKSwgMTYpOwogfQogCi1TdHJpbmcgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
CitTdHJpbmcgVVVJRDo6dG9TdHJpbmcoKSBjb25zdAogewotICAgIHVuc2lnbmVkIHJhbmRvbURh
dGFbNF07Ci0gICAgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMocmVpbnRlcnByZXRfY2Fz
dDx1bnNpZ25lZCBjaGFyKj4ocmFuZG9tRGF0YSksIHNpemVvZihyYW5kb21EYXRhKSk7CisgICAg
YXV0byogcmFuZG9tRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQqPigmbV9k
YXRhKTsKIAogICAgIC8vIEZvcm1hdCBhcyBWZXJzaW9uIDQgVVVJRC4KICAgICByZXR1cm4gbWFr
ZVN0cmluZygKQEAgLTc0LDYgKzc4LDY1IEBAIFN0cmluZyBjcmVhdGVDYW5vbmljYWxVVUlEU3Ry
aW5nKCkKICAgICApOwogfQogCitzdGQ6Om9wdGlvbmFsPFVVSUQ+IFVVSUQ6OnBhcnNlKFN0cmlu
Z1ZpZXcgdmFsdWUpCit7CisgICAgLy8gVmVyc2lvbiA0IFVVSURzIGhhdmUgdGhlIGZvcm0geHh4
eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4IHdpdGggaGV4YWRlY2ltYWwgZGlnaXRz
IGZvciB4IGFuZCBvbmUgb2YgOCwgOSwgQSwgb3IgQiBmb3IgeS4KKyAgICBpZiAodmFsdWUubGVu
Z3RoKCkgIT0gMzYpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAodmFsdWVbOF0gIT0g
Jy0nIHx8IHZhbHVlWzEzXSAhPSAnLScgIHx8IHZhbHVlWzE0XSAhPSAnNCcgfHwgdmFsdWVbMThd
ICE9ICctJyB8fCB2YWx1ZVsyM10gIT0gJy0nKQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
dW5zaWduZWQgeSA9IHZhbHVlWzE5XTsKKyAgICBpZiAoeSA9PSAnOCcgfHwgeSA9PSAnOScpCisg
ICAgICAgIHkgPSB5IC0gJzgnOworICAgIGVsc2UgaWYgKHkgPT0gJ2EnIHx8IHkgPT0gJ0EnKQor
ICAgICAgICB5ID0gMjsKKyAgICBlbHNlIGlmICh5ID09ICdiJyB8fCB5ID09ICdCJykKKyAgICAg
ICAgeSA9IDM7CisgICAgZWxzZQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBmaXJz
dFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1ZS5zdWJzdHJpbmcoMCwgOCksIDE2
KTsKKyAgICBpZiAoIWZpcnN0VmFsdWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRv
IHNlY29uZFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1ZS5zdWJzdHJpbmcoOSwg
NCksIDE2KTsKKyAgICBpZiAoIXNlY29uZFZhbHVlKQorICAgICAgICByZXR1cm4geyB9OworCisg
ICAgYXV0byB0aGlyZFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1ZS5zdWJzdHJp
bmcoMTUsIDMpLCAxNik7CisgICAgaWYgKCF0aGlyZFZhbHVlKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgYXV0byBmb3VydGhWYWx1ZSA9IHBhcnNlSW50ZWdlcjx1bnNpZ25lZD4odmFsdWUu
c3Vic3RyaW5nKDIwLCAzKSwgMTYpOworICAgIGlmICghZm91cnRoVmFsdWUpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBhdXRvIGZpZnRoVmFsdWUgPSBwYXJzZUludGVnZXI8dW5zaWduZWQ+
KHZhbHVlLnN1YnN0cmluZygyNCwgNCksIDE2KTsKKyAgICBpZiAoIWZpZnRoVmFsdWUpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIHNpeHRoVmFsdWUgPSBwYXJzZUludGVnZXI8dW5z
aWduZWQ+KHZhbHVlLnN1YnN0cmluZygyOCwgOCksIDE2KTsKKyAgICBpZiAoIXNpeHRoVmFsdWUp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBVSW50MTI4SW1wbCB1dWlkVmFsdWU7CisKKyAg
ICBhdXRvKiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KCZ1dWlkVmFsdWUpOwor
ICAgIGRhdGFbMF0gPSAqZmlyc3RWYWx1ZTsKKyAgICBkYXRhWzFdID0gKCpzZWNvbmRWYWx1ZSA8
PCAxNikgfCAqdGhpcmRWYWx1ZTsKKyAgICBkYXRhWzJdID0gKCgqZm91cnRoVmFsdWUgPDwgMTYp
IHwgKmZpZnRoVmFsdWUpICsgKHkgPDwgMzApOworICAgIGRhdGFbM10gPSAqc2l4dGhWYWx1ZTsK
KworICAgIHJldHVybiBVVUlEKFdURk1vdmUodXVpZFZhbHVlKSk7Cit9CisKK1N0cmluZyBjcmVh
dGVDYW5vbmljYWxVVUlEU3RyaW5nKCkKK3sKKyAgICByZXR1cm4gVVVJRDo6Y3JlYXRlKCkudG9T
dHJpbmcoKTsKK30KKwogU3RyaW5nIGJvb3RTZXNzaW9uVVVJRFN0cmluZygpCiB7CiAjaWYgT1Mo
REFSV0lOKQpAQCAtOTUsMzEgKzE1OCw3IEBAIFN0cmluZyBib290U2Vzc2lvblVVSURTdHJpbmco
KQogCiBib29sIGlzVmVyc2lvbjRVVUlEKFN0cmluZ1ZpZXcgdmFsdWUpCiB7Ci0gICAgLy8gVmVy
c2lvbiA0IFVVSURzIGhhdmUgdGhlIGZvcm0geHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4
eHh4eHh4IHdpdGggaGV4YWRlY2ltYWwgZGlnaXRzIGZvciB4IGFuZCBvbmUgb2YgOCwgOSwgQSwg
b3IgQiBmb3IgeS4KLSAgICBpZiAodmFsdWUubGVuZ3RoKCkgIT0gMzYpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGZvciAoYXV0byBjcHRyID0gMDsgY3B0ciA8IDM2OyArK2NwdHIpIHsK
LSAgICAgICAgaWYgKGNwdHIgPT0gOCB8fCBjcHRyID09IDEzIHx8IGNwdHIgPT0gMTggfHwgY3B0
ciA9PSAyMykgewotICAgICAgICAgICAgaWYgKHZhbHVlW2NwdHJdICE9ICctJykKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoY3B0ciA9PSAxNCkgewotICAgICAgICAgICAgaWYgKHZhbHVlW2NwdHJdICE9
ICc0JykKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY3B0ciA9PSAxOSkgewotICAgICAgICAgICAgYXV0
byB5ID0gdmFsdWVbY3B0cl07Ci0gICAgICAgICAgICBpZiAoeSAhPSAnOCcgJiYgeSAhPSAnOScg
JiYgeSAhPSAnYScgJiYgeSAhPSAnQScgJiYgeSAhPSAnYicgJiYgeSAhPSAnQicpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQodmFsdWVbY3B0cl0pKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gISFVVUlE
OjpwYXJzZSh2YWx1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVVVJRC5oIGIvU291cmNlL1dURi93dGYvVVVJRC5oCmluZGV4IDU4YTUyNGE2
NGQzNmE2MzExMDRlZmExMmRjOGNlNmRhMjM2Y2ZkMGYuLjJkODQyZDI5MzNjOGEzODA0NjE1ZGMw
MDAwMTk0MWZhY2MwMzJlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9VVUlELmgKQEAgLTQ1LDYgKzQ1LDggQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gVVVJRCB7IH07CiAgICAgfQogCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFVVSUQ+IHBhcnNlKFN0cmluZ1ZpZXcpOworCiAgICAgZXhwbGljaXQg
VVVJRChTcGFuPGNvbnN0IHVpbnQ4X3QsIDE2PiBzcGFuKQogICAgIHsKICAgICAgICAgbWVtY3B5
KCZtX2RhdGEsIHNwYW4uZGF0YSgpLCAxNik7CkBAIC04MCw2ICs4Miw3IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEg
PT0gMTsgfQogICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwogCiBwcml2YXRl
OgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBVVUlEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYi1sb2Nrcy9XZWJMb2NrUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9ja1JlZ2lzdHJ5LmNwcAppbmRleCBmNTUwNzgwYTgx
ZDYyNGYzMWQwZTE4MzM5M2U1NTE0MzUzNDBhMWMyLi44ZjdjYzI2NmMwYzMzYjBiMzkzNzUwMTUz
NmY5YzQwN2FiY2E3ZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYi1s
b2Nrcy9XZWJMb2NrUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
LWxvY2tzL1dlYkxvY2tSZWdpc3RyeS5jcHAKQEAgLTIzNiwxMSArMjM2LDExIEBAIHZvaWQgTG9j
YWxXZWJMb2NrUmVnaXN0cnk6OlBlck9yaWdpblJlZ2lzdHJ5OjpzbmFwc2hvdChDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlCiAgICAgV2ViTG9ja01hbmFnZXI6OlNuYXBzaG90IHNuYXBzaG90Owog
ICAgIGZvciAoYXV0byYgcGFpciA6IG1fbG9ja1JlcXVlc3RRdWV1ZU1hcCkgewogICAgICAgICBm
b3IgKGF1dG8mIHJlcXVlc3QgOiBwYWlyLnZhbHVlKQotICAgICAgICAgICAgc25hcHNob3QucGVu
ZGluZy5hcHBlbmQoeyBwYWlyLmtleSwgcmVxdWVzdC5tb2RlLCByZXF1ZXN0LmNsaWVudElELnRv
U3RyaW5nKCkgfSk7CisgICAgICAgICAgICBzbmFwc2hvdC5wZW5kaW5nLmFwcGVuZCh7IHBhaXIu
a2V5LCByZXF1ZXN0Lm1vZGUsIHJlcXVlc3QuY2xpZW50SUQudG9WaXNpYmxlU3RyaW5nKCkgfSk7
CiAgICAgfQogICAgIGZvciAoYXV0byYgcGFpciA6IG1faGVsZExvY2tzKSB7CiAgICAgICAgIGZv
ciAoYXV0byYgbG9ja0luZm8gOiBwYWlyLnZhbHVlKQotICAgICAgICAgICAgc25hcHNob3QuaGVs
ZC5hcHBlbmQoeyBwYWlyLmtleSwgbG9ja0luZm8ubW9kZSwgbG9ja0luZm8uY2xpZW50SUQudG9T
dHJpbmcoKSB9KTsKKyAgICAgICAgICAgIHNuYXBzaG90LmhlbGQuYXBwZW5kKHsgcGFpci5rZXks
IGxvY2tJbmZvLm1vZGUsIGxvY2tJbmZvLmNsaWVudElELnRvVmlzaWJsZVN0cmluZygpIH0pOwog
ICAgIH0KIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc25hcHNob3QpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA0NjFiOTk3
OGFkOWI3ZTE1N2E0OTFjMDdlM2M5ZTcwYWY0MjFkZDg1Li4yOWRjZWVmNTMzM2Y2OWRmMmU1ZjMw
ZWRlZmRkNjEzNTc3ZmU2NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogfTsKIAogU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCi0gICAgOiBtX2lkZW50
aWZpZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2Fm
ZSgpKQorICAgIDogbV9pZGVudGlmaWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpKQogewogICAgIExvY2tlciBsb2NrZXIgeyBhbGxTY3JpcHRFeGVjdXRpb25D
b250ZXh0c01hcExvY2sgfTsKICAgICBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmFk
ZChtX2lkZW50aWZpZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKaW5kZXggMzJjODhiNWQzNmRiMDczODliN2ZjNjAzODRhZTJjNjcxYzgxODA5MS4uZWY3
NjNiNzkxMjkzNDk4ODVlNmZlNGZhZTkzMWQ2YzJhODY4MTFhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0yMDk1LDcgKzIwOTUsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpsb2FkTWFpblJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmICghbV90ZW1wb3JhcnlTZXJ2aWNlV29y
a2VyQ2xpZW50KSB7CiAgICAgICAgIC8vIFRoZSBtYWluIG5hdmlnYXRpb24gbG9hZCB3aWxsIHRy
aWdnZXIgdGhlIHJlZ2lzdHJhdGlvbiBvZiB0aGUgdGVtcCBjbGllbnQuCi0gICAgICAgIG1fdGVt
cG9yYXJ5U2VydmljZVdvcmtlckNsaWVudCA9IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKKyAgICAgICAgbV90ZW1wb3JhcnlTZXJ2aWNlV29y
a2VyQ2xpZW50ID0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI6OmdlbmVyYXRlKCk7
CiAgICAgICAgIEFTU0VSVCghdGVtcG9yYXJ5SWRlbnRpZmllclRvTG9hZGVyTWFwKCkuY29udGFp
bnMoKm1fdGVtcG9yYXJ5U2VydmljZVdvcmtlckNsaWVudCkpOwogICAgICAgICB0ZW1wb3JhcnlJ
ZGVudGlmaWVyVG9Mb2FkZXJNYXAoKS5hZGQoKm1fdGVtcG9yYXJ5U2VydmljZVdvcmtlckNsaWVu
dCwgdGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFn
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KaW5kZXggN2FjZDU5
N2FmYzgwNzc5OGJhZjIwNDg5ODY3ZDI2MjZlYjc4MjRhMS4uODIwNThhZmJhMjNhMWQyZTg2NDgx
NmE3N2QwZDc3NzNhYWNkMmVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
UGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCkBAIC04
MSw3ICs4MSw3IEBAIHZvaWQgUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICAgICAgICAg
IFdURkxvZ0Fsd2F5cygiJXUgbGl2ZSBkb2N1bWVudHM6IiwgRG9jdW1lbnQ6OmFsbERvY3VtZW50
cygpLnNpemUoKSk7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50IDogRG9j
dW1lbnQ6OmFsbERvY3VtZW50cygpKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZG9j
dW1lbnRUeXBlID0gaXM8U1ZHRG9jdW1lbnQ+KGRvY3VtZW50KSA/ICJTVkdEb2N1bWVudCIgOiAi
RG9jdW1lbnQiOwotICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXMgJXAgJXMgKHJlZkNv
dW50ICVkLCByZWZlcmVuY2luZ05vZGVDb3VudCAlZCkgJXMiLCBkb2N1bWVudFR5cGUsIGRvY3Vt
ZW50LCBkb2N1bWVudC0+aWRlbnRpZmllcigpLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgZG9j
dW1lbnQtPnJlZkNvdW50KCksIGRvY3VtZW50LT5yZWZlcmVuY2luZ05vZGVDb3VudCgpLCBkb2N1
bWVudC0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgV1RG
TG9nQWx3YXlzKCIlcyAlcCAlcyAocmVmQ291bnQgJWQsIHJlZmVyZW5jaW5nTm9kZUNvdW50ICVk
KSAlcyIsIGRvY3VtZW50VHlwZSwgZG9jdW1lbnQsIGRvY3VtZW50LT5pZGVudGlmaWVyKCkudG9E
ZWJ1Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGRvY3VtZW50LT5yZWZDb3VudCgpLCBkb2N1bWVu
dC0+cmVmZXJlbmNpbmdOb2RlQ291bnQoKSwgZG9jdW1lbnQtPnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb2Nlc3NRdWFsaWZpZWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Byb2Nlc3NRdWFsaWZpZWQuaAppbmRleCAyODVhNDI1NTM5MmNhN2Rl
ZTY5OGYxY2JhNzMzMTJjYTliMjNiYTJiLi5hZTk4NzIzMmZhYjU4NjkyNWFlMGNiMTUyZGYxOTNm
YjM2M2MyYmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9jZXNzUXVh
bGlmaWVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvY2Vzc1F1YWxpZmllZC5o
CkBAIC02OSw2ICs2OSwxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9vYmpl
Y3Q7CiAgICAgfQorICAgIGNvbnN0IFQmIG9iamVjdEhhc2goKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fb2JqZWN0OworICAgIH0KIAogICAgIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nl
c3NJZGVudGlmaWVyKCkgY29uc3QKICAgICB7CkBAIC05Myw3ICs5Nyw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBQcm9jZXNzUXVhbGlmaWVkIGdlbmVyYXRlVGhyZWFkU2FmZSgpIHsgcmV0dXJu
IHsgVDo6Z2VuZXJhdGVUaHJlYWRTYWZlKCksIFByb2Nlc3M6OmlkZW50aWZpZXIoKSB9OyB9CiAg
ICAgc3RhdGljIFByb2Nlc3NRdWFsaWZpZWQgZ2VuZXJhdGUoKSB7IHJldHVybiB7IFQ6OmdlbmVy
YXRlKCksIFByb2Nlc3M6OmlkZW50aWZpZXIoKSB9OyB9Ci0gICAgU3RyaW5nIHRvU3RyaW5nKCkg
Y29uc3QgeyByZXR1cm4gbWFrZVN0cmluZyhtX3Byb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCks
ICctJywgbV9vYmplY3QudG9VSW50NjQoKSk7IH0KKyAgICBTdHJpbmcgdG9EZWJ1Z1N0cmluZygp
IGNvbnN0IHsgcmV0dXJuIG1ha2VTdHJpbmcobV9wcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgp
LCAnLScsIG1fb2JqZWN0LnRvVUludDY0KCkpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdCB7IGVuY29kZXIgPDwg
bV9vYmplY3QgPDwgbV9wcm9jZXNzSWRlbnRpZmllcjsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NRdWFsaWZpZWQ+IGRlY29kZShE
ZWNvZGVyJik7CkBAIC0xMjAsMTQgKzEyNCwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVy
PiBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NRdWFsaWZpZWQ8VD4+IFByb2Nlc3NRdWFsaWZpZWQ8VAog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBpbmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgUHJvY2Vzc1F1YWxpZmllZDxUPiYgcHJvY2Vzc1F1YWxpZmllZCkK
IHsKLSAgICB0cyA8PCAiUHJvY2Vzc1F1YWxpZmllZCgiIDw8IHByb2Nlc3NRdWFsaWZpZWQub2Jq
ZWN0KCkgPDwgIiwgIiA8PCBwcm9jZXNzUXVhbGlmaWVkLnByb2Nlc3NJZGVudGlmaWVyKCkgPDwg
JyknOworICAgIHRzIDw8ICJQcm9jZXNzUXVhbGlmaWVkKCIgPDwgcHJvY2Vzc1F1YWxpZmllZC50
b0RlYnVnU3RyaW5nKCkgPDwgJyknOwogICAgIHJldHVybiB0czsKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiBpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IFByb2Nlc3NR
dWFsaWZpZWQ8VD4mIHByb2Nlc3NRdWFsaWZpZWQpCiB7Ci0gICAgYWRkKGhhc2hlciwgcHJvY2Vz
c1F1YWxpZmllZC5vYmplY3QoKSk7CisgICAgYWRkKGhhc2hlciwgcHJvY2Vzc1F1YWxpZmllZC5v
YmplY3RIYXNoKCkpOwogICAgIGFkZChoYXNoZXIsIHByb2Nlc3NRdWFsaWZpZWQucHJvY2Vzc0lk
ZW50aWZpZXIoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oCmluZGV4IGUzNmY0MjI4MzAxNzkx
ZmNlM2UzNzhiZjA2MTE1NTViNjk5Y2I3OWEuLmQ1OGM0OWVjMmJlNjM4NjE5NzY2ZThkMDA0ZDJl
NDJlN2NiMjJiNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaApAQCAtMjcsMTAgKzI3LDk3IEBACiAK
ICNpbmNsdWRlICJQcm9jZXNzUXVhbGlmaWVkLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvVVVJRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXJUeXBlIHsgfTsKLXVzaW5nIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyID0gUHJvY2Vzc1F1YWxpZmllZDxPYmplY3RJZGVudGlmaWVy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyVHlwZT4+OwordGVtcGxhdGUgPD4KK2Ns
YXNzIFByb2Nlc3NRdWFsaWZpZWQ8VVVJRD4geworcHVibGljOgorICAgIFByb2Nlc3NRdWFsaWZp
ZWQoKQorICAgICAgICA6IG1fb2JqZWN0KFdURjo6VUludDEyOEltcGwoMCkpCisgICAgeworICAg
IH0KKworICAgIFByb2Nlc3NRdWFsaWZpZWQoVVVJRCYmIG9iamVjdCwgUHJvY2Vzc0lkZW50aWZp
ZXIgcHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAgIDogbV9vYmplY3QoV1RGTW92ZShvYmplY3Qp
KQorICAgICAgICAsIG1fcHJvY2Vzc0lkZW50aWZpZXIocHJvY2Vzc0lkZW50aWZpZXIpCisgICAg
eworICAgIH0KKworICAgIFByb2Nlc3NRdWFsaWZpZWQoY29uc3QgVVVJRCYgb2JqZWN0LCBQcm9j
ZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgOiBtX29iamVjdChvYmpl
Y3QpCisgICAgICAgICwgbV9wcm9jZXNzSWRlbnRpZmllcihwcm9jZXNzSWRlbnRpZmllcikKKyAg
ICB7CisgICAgfQorCisgICAgUHJvY2Vzc1F1YWxpZmllZChXVEY6Okhhc2hUYWJsZURlbGV0ZWRW
YWx1ZVR5cGUpCisgICAgICAgIDogbV9vYmplY3QoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUp
CisgICAgICAgICwgbV9wcm9jZXNzSWRlbnRpZmllcihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1
ZSkKKyAgICB7CisgICAgfQorCisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gISFtX3Byb2Nlc3NJZGVudGlmaWVyOworICAgIH0KKworICAgIGNvbnN0IFVV
SUQmIG9iamVjdCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vYmplY3Q7CisgICAg
fQorCisgICAgdW5zaWduZWQgb2JqZWN0SGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9vYmplY3QuaGFzaCgpOworICAgIH0KKworICAgIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nl
c3NJZGVudGlmaWVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Byb2Nlc3NJZGVu
dGlmaWVyOworICAgIH0KKworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcHJvY2Vzc0lkZW50aWZpZXIuaXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUoKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHJvY2Vz
c1F1YWxpZmllZCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vYmplY3Qg
PT0gb3RoZXIubV9vYmplY3QKKyAgICAgICAgICAgICYmIG1fcHJvY2Vzc0lkZW50aWZpZXIgPT0g
b3RoZXIubV9wcm9jZXNzSWRlbnRpZmllcjsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgUHJvY2Vzc1F1YWxpZmllZCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisgICAgc3RhdGljIFByb2Nlc3NRdWFsaWZp
ZWQgZ2VuZXJhdGUoKSB7IHJldHVybiB7IFVVSUQ6OmNyZWF0ZSgpLCBQcm9jZXNzOjppZGVudGlm
aWVyKCkgfTsgfQorICAgIFN0cmluZyB0b0RlYnVnU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbWFr
ZVN0cmluZyhtX3Byb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCksICctJywgbV9vYmplY3QudG9T
dHJpbmcoKSk7IH0KKyAgICBTdHJpbmcgdG9WaXNpYmxlU3RyaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9vYmplY3QudG9TdHJpbmcoKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QgeyBlbmNvZGVyIDw8IG1fb2JqZWN0
IDw8IG1fcHJvY2Vzc0lkZW50aWZpZXI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVy
PiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm9jZXNzUXVhbGlmaWVkPiBkZWNvZGUoRGVjb2RlciYp
OworCitwcml2YXRlOgorICAgIFVVSUQgbV9vYmplY3Q7CisgICAgUHJvY2Vzc0lkZW50aWZpZXIg
bV9wcm9jZXNzSWRlbnRpZmllcjsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0
ZDo6b3B0aW9uYWw8UHJvY2Vzc1F1YWxpZmllZDxVVUlEPj4gUHJvY2Vzc1F1YWxpZmllZDxVVUlE
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxVVUlEPiBv
YmplY3Q7CisgICAgZGVjb2RlciA+PiBvYmplY3Q7CisgICAgaWYgKCFvYmplY3QpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxQcm9jZXNzSWRlbnRpZmll
cj4gcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBwcm9jZXNzSWRlbnRpZmllcjsK
KyAgICBpZiAoIXByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIHJldHVybiB7IHsgKm9iamVjdCwgKnByb2Nlc3NJZGVudGlmaWVyIH0gfTsKK30KKwor
dXNpbmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgPSBQcm9jZXNzUXVhbGlmaWVk
PFVVSUQ+OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMzVhNjZl
MDk1ZTc1YTEzNDc5YzdiMWM1NjJjZTExOTFhYjFlZTE5NC4uMTM5OGY1ZGRhZGVkMTM3MGRhY2Zk
MGZjN2FkYThlOTMzNTVkYTdmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApA
QCAtMjc2MiwxNCArMjc2MiwxNiBAQCB1bnNpZ25lZCBJbnRlcm5hbHM6Om51bWJlck9mUmVzaXpl
T2JzZXJ2ZXJzKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKICAgICByZXR1cm4gZG9j
dW1lbnQubnVtYmVyT2ZSZXNpemVPYnNlcnZlcnMoKTsKIH0KIAotdWludDY0X3QgSW50ZXJuYWxz
Ojpkb2N1bWVudElkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAorU3Ry
aW5nIEludGVybmFsczo6ZG9jdW1lbnRJZGVudGlmaWVyKGNvbnN0IERvY3VtZW50JiBkb2N1bWVu
dCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG9jdW1lbnQuaWRlbnRpZmllcigpLm9iamVjdCgpLnRv
VUludDY0KCk7CisgICAgcmV0dXJuIGRvY3VtZW50LmlkZW50aWZpZXIoKS5vYmplY3QoKS50b1N0
cmluZygpOwogfQogCi1ib29sIEludGVybmFsczo6aXNEb2N1bWVudEFsaXZlKHVpbnQ2NF90IGRv
Y3VtZW50SWRlbnRpZmllcikgY29uc3QKK2Jvb2wgSW50ZXJuYWxzOjppc0RvY3VtZW50QWxpdmUo
Y29uc3QgU3RyaW5nJiBkb2N1bWVudElkZW50aWZpZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIERv
Y3VtZW50OjphbGxEb2N1bWVudHNNYXAoKS5jb250YWlucyh7IG1ha2VPYmplY3RJZGVudGlmaWVy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyVHlwZT4oZG9jdW1lbnRJZGVudGlmaWVy
KSwgUHJvY2Vzczo6aWRlbnRpZmllcigpIH0pOworICAgIGF1dG8gdXVpZCA9IFVVSUQ6OnBhcnNl
KGRvY3VtZW50SWRlbnRpZmllcik7CisgICAgQVNTRVJUKHV1aWQpOworICAgIHJldHVybiB1dWlk
ID8gRG9jdW1lbnQ6OmFsbERvY3VtZW50c01hcCgpLmNvbnRhaW5zKHsgKnV1aWQsIFByb2Nlc3M6
OmlkZW50aWZpZXIoKSB9KSA6IGZhbHNlOwogfQogCiB1aW50NjRfdCBJbnRlcm5hbHM6OnN0b3Jh
Z2VBcmVhTWFwQ291bnQoKSBjb25zdApAQCAtMjgwOCw5ICsyODEwLDkgQEAgYm9vbCBJbnRlcm5h
bHM6OmlzQW55V29ya2xldEdsb2JhbFNjb3BlQWxpdmUoKSBjb25zdAogICAgIHJldHVybiBXb3Jr
bGV0R2xvYmFsU2NvcGU6Om51bWJlck9mV29ya2xldEdsb2JhbFNjb3BlcygpOwogfQogCi1TdHJp
bmcgSW50ZXJuYWxzOjpzZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihjb25zdCBEb2N1bWVu
dCYgZG9jdW1lbnQpIGNvbnN0CitTdHJpbmcgSW50ZXJuYWxzOjpzZXJ2aWNlV29ya2VyQ2xpZW50
SW50ZXJuYWxJZGVudGlmaWVyKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gZG9jdW1lbnQuaWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIGRv
Y3VtZW50LmlkZW50aWZpZXIoKS50b0RlYnVnU3RyaW5nKCk7CiB9CiAKIFJlZlB0cjxXaW5kb3dQ
cm94eT4gSW50ZXJuYWxzOjpvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcm
IHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDg4ZDFmOWZjNjdkYTBjM2M1
ODc5NjU5Njk1Yzc0ZGQ1NzJiZDkxYTYuLmZmMWNlZjk2ZDc4NGJhYTBlZWU1MTA1MTU5ODVjYmFk
ZDk3MzQ4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNDkwLDggKzQ5MCw4
IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIG51bWJlck9mUmVzaXplT2JzZXJ2ZXJzKGNvbnN0
IERvY3VtZW50JikgY29uc3Q7CiAKLSAgICB1aW50NjRfdCBkb2N1bWVudElkZW50aWZpZXIoY29u
c3QgRG9jdW1lbnQmKSBjb25zdDsKLSAgICBib29sIGlzRG9jdW1lbnRBbGl2ZSh1aW50NjRfdCBk
b2N1bWVudElkZW50aWZpZXIpIGNvbnN0OworICAgIFN0cmluZyBkb2N1bWVudElkZW50aWZpZXIo
Y29uc3QgRG9jdW1lbnQmKSBjb25zdDsKKyAgICBib29sIGlzRG9jdW1lbnRBbGl2ZShjb25zdCBT
dHJpbmcmIGRvY3VtZW50SWRlbnRpZmllcikgY29uc3Q7CiAKICAgICB1aW50NjRfdCBzdG9yYWdl
QXJlYU1hcENvdW50KCkgY29uc3Q7CiAKQEAgLTUwMyw3ICs1MDMsNyBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGlzQW55V29ya2xldEdsb2JhbFNjb3BlQWxpdmUoKSBjb25zdDsKIAotICAgIFN0cmlu
ZyBzZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYpIGNvbnN0Owor
ICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKGNvbnN0IERv
Y3VtZW50JikgY29uc3Q7CiAKICAgICBSZWZQdHI8V2luZG93UHJveHk+IG9wZW5EdW1teUluc3Bl
Y3RvckZyb250ZW5kKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIGNsb3NlRHVtbXlJbnNw
ZWN0b3JGcm9udGVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGY5
YTViYjgyMDk2MGM0MGFkMjQzZmU3ZDIyMGUxZWE3M2FlYjkyNDUuLmVkNDQzMTlmNTViZGIwMjJi
ZThiMTNlMDM5MDQ1YzFjMjhjOGYyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKQEAgLTkyMCw4ICs5MjAsOCBAQCB0eXBlZGVmIChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hSZXNw
b25zZSkgRmV0Y2hPYmplY3Q7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gYm9vbGVh
biBpc01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZCgpOwogICAgIFtDb25kaXRp
b25hbD1NRURJQV9TVFJFQU1dIGJvb2xlYW4gc2hvdWxkQXVkaW9UcmFja1BsYXkoQXVkaW9UcmFj
ayB0cmFjayk7CiAKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgZG9jdW1lbnRJZGVudGlmaWVyKERv
Y3VtZW50IGRvY3VtZW50KTsKLSAgICBib29sZWFuIGlzRG9jdW1lbnRBbGl2ZSh1bnNpZ25lZCBs
b25nIGxvbmcgZG9jdW1lbnRJZGVudGlmaWVyKTsKKyAgICBET01TdHJpbmcgZG9jdW1lbnRJZGVu
dGlmaWVyKERvY3VtZW50IGRvY3VtZW50KTsKKyAgICBib29sZWFuIGlzRG9jdW1lbnRBbGl2ZShE
T01TdHJpbmcgZG9jdW1lbnRJZGVudGlmaWVyKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGxvbmcgc3RvcmFnZUFyZWFNYXBDb3VudDsKIApAQCAtOTMzLDcgKzkzMyw3
IEBAIHR5cGVkZWYgKEZldGNoUmVxdWVzdCBvciBGZXRjaFJlc3BvbnNlKSBGZXRjaE9iamVjdDsK
ICAgICBib29sZWFuIGlzQW55V29ya2xldEdsb2JhbFNjb3BlQWxpdmUoKTsKIAogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBsb25nIHByb2Nlc3NJZGVudGlmaWVyOwotICAgIERPTVN0cmluZyBzZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihEb2N1bWVudCBkb2N1bWVudCk7CisgICAgRE9NU3Ry
aW5nIHNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIoRG9jdW1lbnQgZG9jdW1l
bnQpOwogICAgIFByb21pc2U8dW5kZWZpbmVkPiBzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2soKTsK
ICAgICBQcm9taXNlPGRvdWJsZT4gc2VuZEgyUGluZyhET01TdHJpbmcgdXJsKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKaW5kZXgg
ZjhkNmM3YWFiMjBkZDgyOTQ5ZjM3YWI5MTUwZTg5NWQ3NWM1OWU0MC4uZjM0NGNkYzEzODBiNjk2
NmQ0ODcwMjM4NDAwODM5NjlhZjQ5ZWY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiUHVzaFN1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb25EYXRhLmgi
CiAjaW5jbHVkZSAiU1dDb250ZXh0TWFuYWdlci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJD
bGllbnQuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL1Byb2Nlc3NJRC5oPgogCkBAIC0xOTMsNiArMTk0LDExIEBAIGJvb2wgU2VydmljZVdv
cmtlckludGVybmFsczo6ZmV0Y2hFdmVudElzU2FtZVNpdGUoRmV0Y2hFdmVudCYgZXZlbnQpCiAg
ICAgcmV0dXJuIGV2ZW50LnJlcXVlc3QoKS5pbnRlcm5hbFJlcXVlc3QoKS5pc1NhbWVTaXRlKCk7
CiB9CiAKK1N0cmluZyBTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpzZXJ2aWNlV29ya2VyQ2xpZW50
SW50ZXJuYWxJZGVudGlmaWVyKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnQmIGNsaWVudCkKK3sK
KyAgICByZXR1cm4gY2xpZW50LmlkZW50aWZpZXIoKS50b0RlYnVnU3RyaW5nKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvU2VydmljZVdvcmtlckludGVybmFscy5oCmluZGV4IGJhNjcyZDUyZmIxNWFjNzJlMTA2OGQ3
ZDcyNWY0NTEzZjdkMDc4OTIuLmY1NTY3YThlMGI2ZTA3YmJmNzQ5NDAzMTNhOWE0YzI3NjY5MDNh
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVy
bmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFs
cy5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIEZldGNoRXZlbnQ7CiBjbGFzcyBGZXRjaFJlc3Bv
bnNlOwogY2xhc3MgUHVzaFN1YnNjcmlwdGlvbjsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CitjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExU
eXBlPiBjbGFzcyBET01Qcm9taXNlRGVmZXJyZWQ7CiAKQEAgLTcxLDYgKzcyLDggQEAgcHVibGlj
OgogCiAgICAgYm9vbCBmZXRjaEV2ZW50SXNTYW1lU2l0ZShGZXRjaEV2ZW50Jik7CiAKKyAgICBT
dHJpbmcgc2VydmljZVdvcmtlckNsaWVudEludGVybmFsSWRlbnRpZmllcihjb25zdCBTZXJ2aWNl
V29ya2VyQ2xpZW50Jik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2VydmljZVdvcmtlcklu
dGVybmFscyhTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCmluZGV4IDU4ZmVkYzEwZGVhYTlk
ZGM4MjI5OWZkOGM1ZDFlNTQ2ODc4NTA1MWYuLjllM2RkNjg1ZDJhNTkyMGE0NjZkZThiZmM5OTkw
MGZkZDM4ZWJhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdv
cmtlckludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29y
a2VySW50ZXJuYWxzLmlkbApAQCAtNTEsNCArNTEsNiBAQAogICAgIFB1c2hTdWJzY3JpcHRpb24g
Y3JlYXRlUHVzaFN1YnNjcmlwdGlvbihVU1ZTdHJpbmcgZW5kcG9pbnQsIEVwb2NoVGltZVN0YW1w
PyBleHBpcmF0aW9uVGltZSwgQXJyYXlCdWZmZXIgc2VydmVyVkFQSURQdWJsaWNLZXksIEFycmF5
QnVmZmVyIGNsaWVudEVDREhQdWJsaWNLZXksIEFycmF5QnVmZmVyIGF1dGgpOwogCiAgICAgYm9v
bGVhbiBmZXRjaEV2ZW50SXNTYW1lU2l0ZShGZXRjaEV2ZW50IGV2ZW50KTsKKworICAgIERPTVN0
cmluZyBzZXJ2aWNlV29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJD
bGllbnQgY2xpZW50KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvRmV0Y2hFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0
Y2hFdmVudC5jcHAKaW5kZXggNDdiZTJhZTAyY2IzZWQ0NjdiYTdmOWZhOGU0NmFkZGI0MzhiZjg3
MS4uNTVkMzMwN2E0NDA5ZDdjNmFiZjg4NTg3ODg0OWJiNWY5Y2MxNzk0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmNwcApAQCAtNjEsNyArNjEsNyBA
QCBGZXRjaEV2ZW50OjpGZXRjaEV2ZW50KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCwgY29uc3QgQXRvbVN0cmluZyYgdHlwZQogICAgIDogRXh0ZW5kYWJsZUV2ZW50KHR5cGUsIGlu
aXRpYWxpemVyLCBpc1RydXN0ZWQpCiAgICAgLCBtX3JlcXVlc3QoaW5pdGlhbGl6ZXIucmVxdWVz
dC5yZWxlYXNlTm9uTnVsbCgpKQogICAgICwgbV9jbGllbnRJZChXVEZNb3ZlKGluaXRpYWxpemVy
LmNsaWVudElkKSkKLSAgICAsIG1fcmVzZXJ2ZWRDbGllbnRJZChXVEZNb3ZlKGluaXRpYWxpemVy
LnJlc2VydmVkQ2xpZW50SWQpKQorICAgICwgbV9yZXN1bHRpbmdDbGllbnRJZChXVEZNb3ZlKGlu
aXRpYWxpemVyLnJlc3VsdGluZ0NsaWVudElkKSkKICAgICAsIG1fdGFyZ2V0Q2xpZW50SWQoV1RG
TW92ZShpbml0aWFsaXplci50YXJnZXRDbGllbnRJZCkpCiAgICAgLCBtX2hhbmRsZWQocmV0cmll
dmVIYW5kbGVkUHJvbWlzZShnbG9iYWxPYmplY3QsIFdURk1vdmUoaW5pdGlhbGl6ZXIuaGFuZGxl
ZCkpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNo
RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmgKaW5k
ZXggMWNkNDYxNmVmMzQ0NTNlY2NiZWJmMGM2MWI2NGU2ZDhiNTg5MDcwNS4uYzUzZmQ1NmE5ZmU4
MjkzZjc4NzE5MTg2NmJlNjRkOTVhNmIwZTA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvRmV0Y2hFdmVudC5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBzdHJ1
Y3QgSW5pdCA6IEV4dGVuZGFibGVFdmVudEluaXQgewogICAgICAgICBSZWZQdHI8RmV0Y2hSZXF1
ZXN0PiByZXF1ZXN0OwogICAgICAgICBTdHJpbmcgY2xpZW50SWQ7Ci0gICAgICAgIFN0cmluZyBy
ZXNlcnZlZENsaWVudElkOworICAgICAgICBTdHJpbmcgcmVzdWx0aW5nQ2xpZW50SWQ7CiAgICAg
ICAgIFN0cmluZyB0YXJnZXRDbGllbnRJZDsKICAgICAgICAgUmVmUHRyPERPTVByb21pc2U+IGhh
bmRsZWQ7CiAgICAgfTsKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogCiAgICAgRmV0Y2hSZXF1
ZXN0JiByZXF1ZXN0KCkgeyByZXR1cm4gbV9yZXF1ZXN0LmdldCgpOyB9CiAgICAgY29uc3QgU3Ry
aW5nJiBjbGllbnRJZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50SWQ7IH0KLSAgICBjb25zdCBT
dHJpbmcmIHJlc2VydmVkQ2xpZW50SWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc2VydmVkQ2xpZW50
SWQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc3VsdGluZ0NsaWVudElkKCkgY29uc3QgeyByZXR1
cm4gbV9yZXN1bHRpbmdDbGllbnRJZDsgfQogICAgIGNvbnN0IFN0cmluZyYgdGFyZ2V0Q2xpZW50
SWQoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldENsaWVudElkOyB9CiAgICAgRE9NUHJvbWlzZSYg
aGFuZGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlZC5nZXQoKTsgfQogCkBAIC05Myw3ICs5
Myw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8RmV0Y2hSZXF1ZXN0PiBtX3JlcXVlc3Q7CiAgICAg
U3RyaW5nIG1fY2xpZW50SWQ7Ci0gICAgU3RyaW5nIG1fcmVzZXJ2ZWRDbGllbnRJZDsKKyAgICBT
dHJpbmcgbV9yZXN1bHRpbmdDbGllbnRJZDsKICAgICBTdHJpbmcgbV90YXJnZXRDbGllbnRJZDsK
IAogICAgIGJvb2wgbV9yZXNwb25kV2l0aEVudGVyZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaWRsIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaWRsCmluZGV4IDk2MDY1YzY4ODM0ODJi
MjA4ZGU4NDM0N2Y0N2ZkYmI4NDI1NzgxMTIuLjVhYWNjNWRlNWRhMzZmZTUyOTUzYmM4MWE0M2Ux
NmUwYzhiMjZjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9G
ZXRjaEV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hF
dmVudC5pZGwKQEAgLTM1LDcgKzM1LDcgQEAKICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0
cmlidXRlIEZldGNoUmVxdWVzdCByZXF1ZXN0OwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBFbmFibGVkQnlTZXR0aW5nPVNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZEVuYWJsZWRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlPGFueT4gcHJlbG9hZFJlc3BvbnNl
OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgY2xpZW50SWQ7Ci0gICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyByZXNlcnZlZENsaWVudElkOworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgcmVzdWx0aW5nQ2xpZW50SWQ7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyB0YXJnZXRDbGllbnRJZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgUHJv
bWlzZTx1bmRlZmluZWQ+IGhhbmRsZWQ7CiAKQEAgLTQ1LDcgKzQ1LDcgQEAKIGRpY3Rpb25hcnkg
RmV0Y2hFdmVudEluaXQgOiBFeHRlbmRhYmxlRXZlbnRJbml0IHsKICAgICByZXF1aXJlZCBGZXRj
aFJlcXVlc3QgcmVxdWVzdDsKICAgICBET01TdHJpbmcgY2xpZW50SWQgPSAiIjsKLSAgICBET01T
dHJpbmcgcmVzZXJ2ZWRDbGllbnRJZCA9ICIiOworICAgIERPTVN0cmluZyByZXN1bHRpbmdDbGll
bnRJZCA9ICIiOwogICAgIERPTVN0cmluZyB0YXJnZXRDbGllbnRJZCA9ICIiOwogICAgIFByb21p
c2U8dW5kZWZpbmVkPiBoYW5kbGVkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcAppbmRleCA1OTZiOWNkYzk5NGY1
NTA4MGI2MzkxNzE4OWI3OGViOGY3N2NkMzM0Li4wOTUwY2I5M2IyZWNlMTFhNGI0OWFjOTEwM2Q3
ZmRmZmIwNzdjZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIGF1dG8gU2Vydmlj
ZVdvcmtlckNsaWVudDo6ZnJhbWVUeXBlKCkgY29uc3QgLT4gRnJhbWVUeXBlCiAKIFN0cmluZyBT
ZXJ2aWNlV29ya2VyQ2xpZW50OjppZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlkZW50aWZpZXIo
KS50b1N0cmluZygpOworICAgIHJldHVybiBpZGVudGlmaWVyKCkudG9WaXNpYmxlU3RyaW5nKCk7
CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXJDbGllbnQ6OnBvc3RNZXNzYWdl
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2VW
YWx1ZSwgU3RydWN0dXJlZFNlcmlhbGl6ZU9wdGlvbnMmJiBvcHRpb25zKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsCmlu
ZGV4IGU4MWJhZTNkNjI2MGE3ZTEzYWVlYWQ1N2QyYTE0ZjYwOWQwZDZhNDQuLjQyMDU0NjJlMDlj
M2E4MDI4Y2NkYTgzMjUwYjA2ZTljMWE0NjUzMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwKQEAgLTI3LDYgKzI3
LDcgQEAKICAgICBDb25kaXRpb25hbD1TRVJWSUNFX1dPUktFUiwKICAgICBDdXN0b21Ub0pTT2Jq
ZWN0LAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9U2VydmljZVdvcmtlckVuYWJsZWQsCisgICAgRXhw
b3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCiAgICAgRXhwb3NlZD1TZXJ2aWNlV29ya2VyLAogICAg
IEludGVyZmFjZU5hbWU9Q2xpZW50LAogXSBpbnRlcmZhY2UgU2VydmljZVdvcmtlckNsaWVudCB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDbGllbnRzLmNwcAppbmRleCBhYjZiNWU4NDdmMmJiZWQ3NjhjM2QxOTA5YWIxYTgxODUzYjBj
MjE2Li42ZTQ1YWExNzZkMDdmMjI5MWJiZTIzNTUwNzc2NWJhYjU4OGFjMWY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50
cy5jcHAKQEAgLTM4LDU1ICszOCwyNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBpbmxpbmUgdm9pZCBkaWRGaW5pc2hHZXRSZXF1ZXN0KFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSYgc2NvcGUsIERlZmVycmVkUHJvbWlzZSYgcHJvbWlzZSwgRXhjZXB0aW9uT3I8c3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4+JiYgY2xpZW50RGF0YSkKK3N0YXRpYyBpbmxp
bmUgdm9pZCBkaWRGaW5pc2hHZXRSZXF1ZXN0KFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgc2Nv
cGUsIERlZmVycmVkUHJvbWlzZSYgcHJvbWlzZSwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YT4mJiBjbGllbnREYXRhKQogewotICAgIGlmIChjbGllbnREYXRhLmhhc0V4Y2Vw
dGlvbigpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KGNsaWVudERhdGEucmVsZWFzZUV4Y2Vw
dGlvbigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvIGRhdGEgPSBjbGllbnRE
YXRhLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgIGlmICghZGF0YSkgeworICAgIGlmICghY2xp
ZW50RGF0YSkgewogICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHByb21pc2UucmVzb2x2ZTxJRExJbnRlcmZhY2U8U2VydmljZVdvcmtlckNs
aWVudD4+KFNlcnZpY2VXb3JrZXJDbGllbnQ6OmdldE9yQ3JlYXRlKHNjb3BlLCBXVEZNb3ZlKGRh
dGEudmFsdWUoKSkpKTsKLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXI+IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyRnJvbVN0
cmluZyhTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNz
SWRlbnRpZmllcjsKLSAgICBPYmplY3RJZGVudGlmaWVyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyVHlwZT4gY29udGV4dElkZW50aWZpZXI7Ci0gICAgdW5zaWduZWQgY291bnRlciA9
IDA7Ci0gICAgZm9yIChhdXRvIGl0ZW0gOiBzdHJpbmcuc3BsaXQoJy0nKSkgewotICAgICAgICBh
dXRvIGlkZW50aWZpZXIgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KGl0ZW0pOwotICAgICAgICBp
ZiAoIWlkZW50aWZpZXIgfHwgISppZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICAgICAgaWYgKCFjb3VudGVyKyspCi0gICAgICAgICAgICBwcm9jZXNzSWRl
bnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFByb2Nlc3NJZGVudGlmaWVyVHlwZT4oKmlk
ZW50aWZpZXIpOwotICAgICAgICBlbHNlIGlmIChjb3VudGVyID09IDIpCi0gICAgICAgICAgICBj
b250ZXh0SWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyVHlwZT4oKmlkZW50aWZpZXIpOwotICAgIH0KLSAgICByZXR1cm4gKHBy
b2Nlc3NJZGVudGlmaWVyICYmIGNvbnRleHRJZGVudGlmaWVyKSA/IHN0ZDo6bWFrZV9vcHRpb25h
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciB7IGNvbnRleHRJZGVudGlmaWVyLCBw
cm9jZXNzSWRlbnRpZmllciB9KSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBwcm9taXNlLnJlc29sdmU8
SURMSW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJDbGllbnQ+PihTZXJ2aWNlV29ya2VyQ2xpZW50Ojpn
ZXRPckNyZWF0ZShzY29wZSwgV1RGTW92ZSgqY2xpZW50RGF0YSkpKTsKIH0KIAogdm9pZCBTZXJ2
aWNlV29ya2VyQ2xpZW50czo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgaWQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKLSAgICBh
dXRvIGlkZW50aWZpZXIgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllckZyb21TdHJp
bmcoaWQpOwotICAgIGlmICghaWRlbnRpZmllcikgewotICAgICAgICBwcm9taXNlLT5yZXNvbHZl
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXV0byBjbGllbnRJZGVudGlmaWVyID0g
aWRlbnRpZmllci52YWx1ZSgpOwotCiAgICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9
IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFkKCkuaWRl
bnRpZmllcigpOwogCiAgICAgYXV0byBwcm9taXNlUG9pbnRlciA9IHByb21pc2UucHRyKCk7CiAg
ICAgbV9wZW5kaW5nUHJvbWlzZXMuYWRkKHByb21pc2VQb2ludGVyLCBXVEZNb3ZlKHByb21pc2Up
KTsKIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb21pc2VQb2ludGVyLCBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllcl0gKCkgeworICAgIGNhbGxPbk1haW5UaHJlYWQo
W3Byb21pc2VQb2ludGVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgaWQgPSBpZC5pc29sYXRl
ZENvcHkoKV0gKCkgewogICAgICAgICBhdXRvIGNvbm5lY3Rpb24gPSBTV0NvbnRleHRNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCk7Ci0gICAgICAgIGNvbm5lY3Rpb24tPmZpbmRDbGll
bnRCeUlkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXIs
IFtwcm9taXNlUG9pbnRlciwgc2VydmljZVdvcmtlcklkZW50aWZpZXJdIChhdXRvJiYgY2xpZW50
RGF0YSkgeworICAgICAgICBjb25uZWN0aW9uLT5maW5kQ2xpZW50QnlWaXNpYmxlSWRlbnRpZmll
cihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgaWQsIFtwcm9taXNlUG9pbnRlciwgc2VydmljZVdv
cmtlcklkZW50aWZpZXJdIChhdXRvJiYgY2xpZW50RGF0YSkgewogICAgICAgICAgICAgU1dDb250
ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFtwcm9taXNlUG9pbnRlciwgZGF0YSA9IGNyb3NzVGhyZWFkQ29weShj
bGllbnREYXRhKV0gKGF1dG8mIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlm
IChhdXRvIHByb21pc2UgPSBjb250ZXh0LmNsaWVudHMoKS5tX3BlbmRpbmdQcm9taXNlcy50YWtl
KHByb21pc2VQb2ludGVyKSkKICAgICAgICAgICAgICAgICAgICAgZGlkRmluaXNoR2V0UmVxdWVz
dChjb250ZXh0LCAqcHJvbWlzZSwgV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5k
ZXggNzE2ZDAwMzUxZGQ3M2JmZTkyMzJhODhkOGIyOWM2ZDcyY2MyM2RlNy4uYzBlMDM2MzZiMTg5
YzU4NjYzZTQ4M2M4MGJiOWQ2OTE5MmIyMGU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtNjIs
OCArNjIsOCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBza2lwV2FpdGluZyhTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgVVJMJiwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRl
ZFNjcmlwdCYpID0gMDsKIAotICAgICAgICB1c2luZyBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ2Fs
bGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckNsaWVudERhdGE+PiYmKT47Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBmaW5k
Q2xpZW50QnlJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0SWRlbnRpZmllciwgRmluZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNrJiYpID0g
MDsKKyAgICAgICAgdXNpbmcgRmluZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNrID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYm
KT47CisgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5kQ2xpZW50QnlWaXNpYmxlSWRlbnRpZmllcihT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgRmluZENsaWVudEJ5SWRlbnRp
ZmllckNhbGxiYWNrJiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIG1hdGNoQWxsKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25z
JiwgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
RmV0Y2guY3BwCmluZGV4IDZkMmYxZTZhNmRkMTkxNWRlZTUxYWZhYWFjNTZlOTFlMTE5MzYyN2Iu
LjRjOWYyZGU0ZTdkMzQ5MTk1NTIxYjIyNTcxZTU5Mjg1NzNiYjAwOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNw
b25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBz
CiAgICAgfSk7CiB9CiAKLXZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYgY2xp
ZW50LCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlLCBzdGQ6Om9wdGlvbmFs
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBjbGllbnRJZCwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMs
IEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRFbmFibGVkKQordm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENsaWVu
dD4mJiBjbGllbnQsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUsIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiBv
cHRpb25zLCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBib29sIGlzU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCwgU3RyaW5nJiYgY2xpZW50SWRlbnRpZmllciwg
U3RyaW5nJiYgcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcikKIHsKICAgICBhdXRvIHJlcXVlc3RI
ZWFkZXJzID0gRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6SW1tdXRh
YmxlLCBIVFRQSGVhZGVyTWFwIHsgcmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCkgfSk7CiAKQEAg
LTE4MSwxMiArMTgxLDggQEAgdm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiBj
bGllbnQsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2MKIAogICAgIEZldGNoRXZl
bnQ6OkluaXQgaW5pdDsKICAgICBpbml0LnJlcXVlc3QgPSBXVEZNb3ZlKGZldGNoUmVxdWVzdCk7
Ci0gICAgaWYgKGlzTmF2aWdhdGlvbikgewotICAgICAgICAvLyBGSVhNRTogU2V0IHJlc2VydmVk
Q2xpZW50SWQuCi0gICAgICAgIGlmIChjbGllbnRJZCkKLSAgICAgICAgICAgIGluaXQudGFyZ2V0
Q2xpZW50SWQgPSBjbGllbnRJZC0+dG9TdHJpbmcoKTsKLSAgICB9IGVsc2UgaWYgKGNsaWVudElk
KQotICAgICAgICBpbml0LmNsaWVudElkID0gY2xpZW50SWQtPnRvU3RyaW5nKCk7CisgICAgaW5p
dC5yZXN1bHRpbmdDbGllbnRJZCA9IFdURk1vdmUocmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcik7
CisgICAgaW5pdC5jbGllbnRJZCA9IFdURk1vdmUoY2xpZW50SWRlbnRpZmllcik7CiAgICAgaW5p
dC5jYW5jZWxhYmxlID0gdHJ1ZTsKIAogICAgIGF1dG8mIGpzRE9NR2xvYmFsT2JqZWN0ID0gKkpT
Qzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsU2NvcGUuZ2xvYmFsT2JqZWN0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlckZldGNoLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAppbmRleCAyYzlmN2ExNmQyNzNiZDcxNWVlMTFlYzA3YTRm
OWM1ZGQ4NDJhZTU2Li4xNGE2Mjk5OTQwOTc4NjZmODhjMzI1NGYzOGYwMzRjODQzZWE3ZGE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyRmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGNvbnZlcnRGZXRjaFRvRG93bmxvYWQoKSA9IDA7CiB9OwogCi12b2lkIGRpc3Bh
dGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmLCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmLCBz
dGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiwgUmVzb3VyY2VS
ZXF1ZXN0JiYsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiwgRmV0Y2hJZGVudGlm
aWVyLCBib29sIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCk7Cit2b2lk
IGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmLCBTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUmLCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYm
LCBGZXRjaElkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRF
bmFibGVkLCBTdHJpbmcmJiBjbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiByZXN1bHRpbmdDbGll
bnRJZGVudGlmaWVyKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5jcHAKaW5kZXggNjUyNWZiOTcwMTZmZmFkZWU5MWExMTYwNjA0YzAyNzEwOWNl
ODY2MS4uMjYwZGJiZDNlNjYyOTc5Y2M5ZmE2OTJkNDNjZTRlYjQzNzA0ZGZiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTEyNCwxMSArMTI0LDExIEBAIHZvaWQgU2VydmljZVdv
cmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkKICAgICBXb3JrZXJUaHJlYWQ6OnJ1bkV2ZW50TG9v
cCgpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZUZldGNo
RXZlbnQoUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmIGNsaWVudCwgc3RkOjpvcHRp
b25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4mJiBjbGllbnRJZCwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9w
dGlvbnMsIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkKQordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpx
dWV1ZVRhc2tUb0ZpcmVGZXRjaEV2ZW50KFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4m
JiBjbGllbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN0cmluZyYmIHJlZmVycmVyLCBG
ZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBi
b29sIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCwgU3RyaW5nJiYgY2xp
ZW50SWRlbnRpZmllciwgU3RyaW5nJiYgcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcikKIHsKICAg
ICBSZWYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckds
b2JhbFNjb3BlPigqZ2xvYmFsU2NvcGUoKSk7Ci0gICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbc2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnQgPSBXVEZNb3ZlKGNsaWVudCksIGNsaWVudElk
LCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVmZXJyZXIgPSBXVEZNb3ZlKHJlZmVycmVy
KSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIGZldGNoSWRlbnRpZmllciwgaXNTZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkXSgpIG11dGFibGUgewotICAgICAgICBTZXJ2
aWNlV29ya2VyRmV0Y2g6OmRpc3BhdGNoRmV0Y2hFdmVudChXVEZNb3ZlKGNsaWVudCksIHNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSwgY2xpZW50SWQsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
cmVmZXJyZXIpLCBXVEZNb3ZlKG9wdGlvbnMpLCBmZXRjaElkZW50aWZpZXIsIGlzU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCk7CisgICAgc2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBb
c2VydmljZVdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnQgPSBXVEZNb3ZlKGNsaWVudCksIHJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZWZlcnJlciA9IFdURk1vdmUocmVmZXJyZXIpLCBvcHRp
b25zID0gV1RGTW92ZShvcHRpb25zKSwgZmV0Y2hJZGVudGlmaWVyLCBpc1NlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIGNsaWVudElkZW50aWZpZXIgPSBXVEZNb3ZlKGNsaWVu
dElkZW50aWZpZXIpLCByZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyID0gV1RGTW92ZShyZXN1bHRp
bmdDbGllbnRJZGVudGlmaWVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgU2VydmljZVdvcmtlckZl
dGNoOjpkaXNwYXRjaEZldGNoRXZlbnQoV1RGTW92ZShjbGllbnQpLCBzZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVmZXJyZXIpLCBXVEZNb3ZlKG9w
dGlvbnMpLCBmZXRjaElkZW50aWZpZXIsIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
RW5hYmxlZCwgV1RGTW92ZShjbGllbnRJZGVudGlmaWVyKSwgV1RGTW92ZShyZXN1bHRpbmdDbGll
bnRJZGVudGlmaWVyKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAppbmRl
eCAxZGEyZGQ4M2VlMDc3MWZhNGExMmM5MWFlMjU0YTUyM2E5MzIyZTdmLi44OGI2NWRlODAzMGFh
OTUwOTBkMzdjZGNhMWFlMDdlY2U3NWJmMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCkBA
IC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxQb3N0VGFza1RvRmlyZU1lc3Nh
Z2VFdmVudCgpOwogICAgIHZvaWQgd2lsbFBvc3RUYXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNo
YW5nZUV2ZW50KCk7CiAKLSAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZUZldGNoRXZlbnQoUmVmPFNl
cnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyPiYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJy
ZXIsIEZldGNoT3B0aW9ucyYmLCBGZXRjaElkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRFbmFibGVkKTsKKyAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZUZldGNo
RXZlbnQoUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmLCBSZXNvdXJjZVJlcXVlc3Qm
JiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmLCBGZXRjaElkZW50aWZpZXIsIGJv
b2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkLCBTdHJpbmcmJiBjbGll
bnRJZGVudGlmaWVyLCBTdHJpbmcmJiByZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKTsKICAgICB2
b2lkIHF1ZXVlVGFza1RvUG9zdE1lc3NhZ2UoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgU2Vy
dmljZVdvcmtlck9yQ2xpZW50RGF0YSYmIHNvdXJjZURhdGEpOwogICAgIHZvaWQgcXVldWVUYXNr
VG9GaXJlSW5zdGFsbEV2ZW50KCk7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVBY3RpdmF0ZUV2
ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCBkYjZjOTNi
OGJlOTFiOWI5MjI3MTA5NDc5OWQwZGRjM2Y2NDgyZGYwLi5jNjY2MTRmYTJjOTYwMDExNjQ1ZThh
Yzc0NWQ0ZjZkOWM4ODM5NjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5j
cHAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6bm90
aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpCiAgICAgfSwgV29ya2VyUnVuTG9v
cDo6ZGVmYXVsdE1vZGUoKSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpz
dGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZp
ZXIsIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFJlZjxTZXJ2aWNlV29ya2VyRmV0
Y2g6OkNsaWVudD4mJiBjbGllbnQsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXI+JiYgY2xpZW50SWQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN0cmlu
ZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBib29sIGlzU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCkKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5
OjpzdGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIsIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFJlZjxTZXJ2aWNlV29ya2Vy
RmV0Y2g6OkNsaWVudD4mJiBjbGllbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN0cmlu
ZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBib29sIGlzU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCwgU3RyaW5nJiYgY2xpZW50SWRlbnRpZmllciwgU3Ry
aW5nJiYgcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcikKIHsKICAgICBSRUxFQVNFX0xPRyhTZXJ2
aWNlV29ya2VyLCAiU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzdGFydEZldGNoICVsbHUiLCBm
ZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKQEAgLTIyMSw4ICsyMjEsOCBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c3RhcnRGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyIGNvbm5lY3RpbwogCiAgICAgQVNTRVJUKCFtX29uZ29pbmdGZXRjaFRhc2tzLmNvbnRh
aW5zKGtleSkpOwogICAgIG1fb25nb2luZ0ZldGNoVGFza3MuYWRkKGtleSwgY2xpZW50LmNvcHlS
ZWYoKSk7Ci0gICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNsaWVudCA9IFdURk1vdmUoY2xp
ZW50KSwgY2xpZW50SWQsIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCByZWZlcnJl
ciA9IHJlZmVycmVyLmlzb2xhdGVkQ29weSgpLCBvcHRpb25zID0gb3B0aW9ucy5pc29sYXRlZENv
cHkoKSwgZmV0Y2hJZGVudGlmaWVyLCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVu
YWJsZWRdKGF1dG8mKSBtdXRhYmxlIHsKLSAgICAgICAgdGhyZWFkKCkucXVldWVUYXNrVG9GaXJl
RmV0Y2hFdmVudChXVEZNb3ZlKGNsaWVudCksIFdURk1vdmUoY2xpZW50SWQpLCBXVEZNb3ZlKHJl
cXVlc3QpLCBXVEZNb3ZlKHJlZmVycmVyKSwgV1RGTW92ZShvcHRpb25zKSwgZmV0Y2hJZGVudGlm
aWVyLCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQpOworICAgIHBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBjbGllbnQgPSBXVEZNb3ZlKGNsaWVudCksIHJlcXVlc3QgPSBy
ZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCByZWZlcnJlciA9IFdURk1vdmUocmVmZXJyZXIpLmlzb2xh
dGVkQ29weSgpLCBvcHRpb25zID0gb3B0aW9ucy5pc29sYXRlZENvcHkoKSwgZmV0Y2hJZGVudGlm
aWVyLCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIGNsaWVudElkZW50
aWZpZXIgPSBXVEZNb3ZlKGNsaWVudElkZW50aWZpZXIpLmlzb2xhdGVkQ29weSgpLCByZXN1bHRp
bmdDbGllbnRJZGVudGlmaWVyID0gV1RGTW92ZShyZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKS5p
c29sYXRlZENvcHkoKV0oYXV0byYpIG11dGFibGUgeworICAgICAgICB0aHJlYWQoKS5xdWV1ZVRh
c2tUb0ZpcmVGZXRjaEV2ZW50KFdURk1vdmUoY2xpZW50KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShyZWZlcnJlciksIFdURk1vdmUob3B0aW9ucyksIGZldGNoSWRlbnRpZmllciwgaXNTZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkLCBXVEZNb3ZlKGNsaWVudElkZW50aWZp
ZXIpLCBXVEZNb3ZlKHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIpKTsKICAgICB9LCBXb3JrZXJS
dW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkuaAppbmRleCAwMWIzYWQwNDkxNWQ0YmUyN2IwMWJjZmZkYzZiMGNmYjIwOGZjMDdlLi5hYmNh
NDg2MmJkNjU5YmI0ZWMxNmI3ZGRmOTkxOGU2MjhkMzM3NWVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKTsKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBGZXRjaElkZW50aWZpZXIsIFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4m
Jiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4mJiwgUmVz
b3VyY2VSZXF1ZXN0JiYsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiwgYm9vbCBp
c1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc3RhcnRGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElk
ZW50aWZpZXIsIFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiwgUmVzb3VyY2VSZXF1
ZXN0JiYsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiwgYm9vbCBpc1NlcnZpY2VX
b3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIFN0cmluZyYmIGNsaWVudElkZW50aWZpZXIs
IFN0cmluZyYmIHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY2FuY2VsRmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVu
dGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnZlcnRGZXRjaFRvRG93bmxvYWQo
U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoU1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggMWE5NjNjZDEy
NGUyNWZkZDMwZWIxNWQ2NzM3ZTdlNDM1ZGQ0MTE4MC4uN2NiOTkzZjIyNTdkYzczMTZjYjNhMmFl
OGM2ODI5ZjYxYjUyNzA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTk0Miw2ICs5NDIsOCBAQCB2b2lkIFNXU2VydmVy
OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoQ2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2lu
LCBTZXJ2aWNlVwogICAgICAgICAgICAgdXBkYXRlQXBwSW5pdGlhdGVkVmFsdWVGb3JXb3JrZXJz
KGNsaWVudE9yaWdpbiwgZGF0YS5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAgICAg
fQogCisgICAgbV92aXNpYmxlQ2xpZW50SWRUb0ludGVybmFsQ2xpZW50SWRNYXAuYWRkKGRhdGEu
aWRlbnRpZmllci50b1Zpc2libGVTdHJpbmcoKSwgY2xpZW50SWRlbnRpZmllcik7CisKICAgICBB
U1NFUlQoIW1fY2xpZW50c0J5SWQuY29udGFpbnMoY2xpZW50SWRlbnRpZmllcikpOwogICAgIG1f
Y2xpZW50c0J5SWQuYWRkKGNsaWVudElkZW50aWZpZXIsIFdURk1vdmUoZGF0YSkpOwogCkBAIC05
NzksOCArOTgxLDggQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAgICBhdXRvIGNsaWVudFJl
Z2lzdHJhYmxlRG9tYWluID0gY2xpZW50T3JpZ2luLmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCk7
CiAgICAgYXV0byBhcHBJbml0aWF0ZWRWYWx1ZUJlZm9yZSA9IGNsaWVudElzQXBwSW5pdGlhdGVk
Rm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVudFJlZ2lzdHJhYmxlRG9tYWlu
KCkpOwogCi0gICAgYm9vbCB3YXNSZW1vdmVkID0gbV9jbGllbnRzQnlJZC5yZW1vdmUoY2xpZW50
SWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNFRCh3YXNSZW1vdmVkLCB3YXNSZW1vdmVkKTsK
KyAgICBtX2NsaWVudHNCeUlkLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKKyAgICBtX3Zpc2li
bGVDbGllbnRJZFRvSW50ZXJuYWxDbGllbnRJZE1hcC5yZW1vdmUoY2xpZW50SWRlbnRpZmllci50
b1Zpc2libGVTdHJpbmcoKSk7CiAKICAgICBhdXRvIGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWlu
SXRlcmF0b3IgPSBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmZpbmQoY2xpZW50UmVnaXN0
cmFibGVEb21haW4pOwogICAgIEFTU0VSVChjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0ZXJh
dG9yICE9IG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uZW5kKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IGIxNWYxYWY1
ZTBlZDcyYWFhMWRkYmRhOWEyZmZlM2ZiMjlhYjEzODcuLjQzOTQxYjM0YjJhNzI3ZDQzOGY2NTRj
NzUzZDhmNTlmNWNmMjY5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTIyNiw2ICsyMjYsOCBAQCBwdWJsaWM6CiAgICAgZW51
bSBjbGFzcyBTaG91bGRTa2lwRXZlbnQgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHZvaWQgZmly
ZUZ1bmN0aW9uYWxFdmVudChTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiwgU2hvdWxkU2tpcEV2
ZW50Pik+JiYpOwogCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW50
SWRGcm9tVmlzaWJsZUNsaWVudElkKGNvbnN0IFN0cmluZyYgdmlzaWJsZUlkZW50aWZpZXIpIGNv
bnN0IHsgcmV0dXJuIG1fdmlzaWJsZUNsaWVudElkVG9JbnRlcm5hbENsaWVudElkTWFwLmdldCh2
aXNpYmxlSWRlbnRpZmllcik7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHZhbGlkYXRlUmVnaXN0
cmF0aW9uRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBTZXJ2aWNlV29ya2VySm9i
VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKQEAgLTI3MSw2ICsyNzMs
NyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIsIFdlYWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+PiBtX3NlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllclRvUmVnaXN0cmF0aW9uTWFwOwogICAgIEhhc2hNYXA8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBtX2NsaWVudHNCeUlkOwog
ICAgIEhhc2hNYXA8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiBtX2NsaWVudFRvQ29udHJvbGxpbmdSZWdpc3RyYXRp
b247CisgICAgSGFzaE1hcDxTdHJpbmcsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
PiBtX3Zpc2libGVDbGllbnRJZFRvSW50ZXJuYWxDbGllbnRJZE1hcDsKIAogICAgIFVuaXF1ZVJl
ZjxTV09yaWdpblN0b3JlPiBtX29yaWdpblN0b3JlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdp
c3RyYXRpb25TdG9yZT4gbV9yZWdpc3RyYXRpb25TdG9yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcAppbmRleCBiZmVlY2NlMDNlMDRjYzc4ZTg3ZTFlMTYyNjliOTYz
MDFkNDgxN2ExLi41NDI4YWE0NjU1NDU4ODQ4NzkwMTdjNDUxZDk4ZjhhYzllNjJhZDdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC04NywxMiArODcsNiBA
QCB2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6d29ya2VyVGVybWluYXRlZChTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aQogICAgICAgICB3b3JrZXItPmNvbnRleHRUZXJtaW5h
dGVkKCk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaW5kQ2xpZW50
QnlJZGVudGlmaWVyKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXIgY2xpZW50SWQpCi17Ci0gICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29y
a2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIp
KQotICAgICAgICB3b3JrZXItPmNvbnRleHRDb25uZWN0aW9uKCktPmZpbmRDbGllbnRCeUlkZW50
aWZpZXJDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHdvcmtlci0+ZmluZENsaWVudEJ5SWRl
bnRpZmllcihjbGllbnRJZCksIGZhbHNlKTsKLX0KLQogdm9pZCBTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246Om1hdGNoQWxsKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtl
ckNsaWVudFF1ZXJ5T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoYXV0byogd29ya2VyID0g
U1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcikpIHsKQEAgLTEwMiw2ICs5NiwxNCBAQCB2b2lkIFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6bWF0Y2hBbGwodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VX
bwogICAgIH0KIH0KIAordm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpbmRDbGll
bnRCeVZpc2libGVJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YT4mJik+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29y
a2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIp
KQorICAgICAgICB3b3JrZXItPmZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKGNsaWVudElk
ZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBlbHNlCisgICAgICAgIGNhbGxiYWNr
KHsgfSk7Cit9CisKIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjbGFpbShTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYpPiYmIGNhbGxiYWNrKQog
ewogICAgIGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklk
ZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgKaW5kZXggYmRkMzYzYjJiYzQ1MGNjMjk5MmU2NTY4MzZhZjc3ZWQ1M2Jj
ZGE0MC4uYzA1NmY2NDhkZGEwM2U1ZmFiNDhkMmFlNDZlNzEzOTc1NmY1ZDU0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC01OCw3ICs1OCw2IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBIYXNoTWFw
PFVSTCwgU2NyaXB0QnVmZmVyPiYgaW1wb3J0ZWRTY3JpcHRzKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9v
bCBoYXNTZWN1cml0eUVycm9yKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG1hdGNoQWxsQ29tcGxl
dGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U2VydmljZVdvcmtl
ckNsaWVudERhdGE+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaXJlUHVzaEV2ZW50KFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKSA9IDA7CiAKQEAgLTcw
LDExICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZXJ2aWNl
V29ya2VySGFzUGVuZGluZ0V2ZW50cyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQ
ZW5kaW5nRXZlbnRzKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNraXBXYWl0aW5nKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgd29ya2VyVGVybWluYXRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmll
cik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2
NF90IGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBtYXRjaEFsbCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4mJik+JiYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIFVSTCYmIHNjcmlwdFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdCYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5kQ2xp
ZW50QnlWaXNpYmxlSWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBjbGllbnRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpPiYmKTsKIAogICAgIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1f
cmVnaXN0cmFibGVEb21haW47IH0KICAgICBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRl
eCA1ZDE1NTZhMDA2ZGFiMTUxNjc2NTFhMjNkZjJmYjMzMzA0N2Y2YjQzLi5jZGJmZTQ0YmVlYzBj
OTA4YmFjMTIyNGQwZWE0YjZmMTJmZWRmMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcApAQCAtMjMxLDYg
KzIzMSwyMiBAQCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBTV1NlcnZl
cldvcmtlcjo6ZmluZENsaWVudEJ5SWRlbnRpZmllcihjbwogICAgIHJldHVybiBtX3NlcnZlci0+
c2VydmljZVdvcmtlckNsaWVudFdpdGhPcmlnaW5CeUlEKG9yaWdpbigpLCBjbGllbnRJZCk7CiB9
CiAKK3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYgY2xpZW50SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT4mJiBjYWxsYmFj
aykKK3sKKyAgICBpZiAoIW1fc2VydmVyKSB7CisgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGludGVybmFsSWRlbnRpZmllciA9IG1fc2Vy
dmVyLT5jbGllbnRJZEZyb21WaXNpYmxlQ2xpZW50SWQoY2xpZW50SWRlbnRpZmllcik7CisgICAg
aWYgKCFpbnRlcm5hbElkZW50aWZpZXIpIHsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGNhbGxiYWNrKGZpbmRDbGllbnRCeUlkZW50aWZpZXIo
aW50ZXJuYWxJZGVudGlmaWVyKSk7Cit9CisKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6Om1hdGNoQWxs
KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmIG9wdGlvbnMsIFNlcnZpY2VX
b3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVCht
X3NlcnZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggYjIyMTVkOWY0YWQ0ZDBmZDkxNTA0YTRjMjFhY2I5
MzA0N2ExYzgyNC4uMWU4MzFmYzRjYTgyZDY0NGU3YzZkYjExZTBlZjUzYTc2YjZkZjQ1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldv
cmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuaApAQCAtMTAzLDYgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlz
aEFjdGl2YXRpb24oKTsKICAgICB2b2lkIGNvbnRleHRUZXJtaW5hdGVkKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gZmluZENsaWVu
dEJ5SWRlbnRpZmllcihjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciYpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJiBjbGllbnRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpPiYmKTsK
ICAgICB2b2lkIG1hdGNoQWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMm
LCBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJik7CiAgICAgdm9pZCBzZXRT
Y3JpcHRSZXNvdXJjZShVUkwmJiwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdCYmKTsKICAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFNjcmlwdEJ1ZmZlciYmIG1h
aW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCmluZGV4IDgxN2FlZjI2YzgzNmMzNGE3ZDQ0ZWU3Y2M5NWVkZDlhMjk4ZDZhNGEuLjNm
MTgyMGQxNjgyMTk4MjA2NzE1MTI2NjY1ZjUyNGRjN2FjZmVjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMTQ1
LDYgKzE0NSwxMCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZv
aWQgc3RhcnRXaXRoU2VydmljZVdvcmtlcigpOwogICAgIHZvaWQgc2VydmljZVdvcmtlckRpZE5v
dEhhbmRsZShTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKik7CisgICAgdm9pZCBzZXRSZXN1bHRpbmdD
bGllbnRJZGVudGlmaWVyKFN0cmluZyYmIGlkZW50aWZpZXIpIHsgbV9yZXN1bHRpbmdDbGllbnRJ
ZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKTsgfQorICAgIHZvaWQgc2V0Q2xpZW50SWRl
bnRpZmllcihTdHJpbmcmJiBpZGVudGlmaWVyKSB7IG1fY2xpZW50SWRlbnRpZmllciA9IFdURk1v
dmUoaWRlbnRpZmllcik7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc3VsdGluZ0NsaWVudElkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdGluZ0NsaWVudElkZW50aWZpZXI7IH0KKyAg
ICBjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2NsaWVu
dElkZW50aWZpZXI7IH0KICNlbmRpZgogCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNv
dXJjZUVycm9yPiBkb0Nyb3NzT3JpZ2luT3BlbmVySGFuZGxpbmdPZlJlc3BvbnNlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI1NSw2ICsyNTksOCBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbV9uZXR3b3JrQWN0aXZp
dHlUcmFja2VyOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gbV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOworICAg
IFN0cmluZyBtX3Jlc3VsdGluZ0NsaWVudElkZW50aWZpZXI7CisgICAgU3RyaW5nIG1fY2xpZW50
SWRlbnRpZmllcjsKICNlbmRpZgogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIG1f
cmVzb3VyY2VMb2FkSUQ7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3JlZGlyZWN0
UmVzcG9uc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKaW5kZXgg
Y2QyZDZhMjA3M2ZiOTdhYmEwMTZkM2M3ZWYzMWM3NzFhMTI3MDJjOS4uNzA2MWMxZjAxOTA4OWYw
NjQ0MTkwZTZmYzM4ZGQ2ZjUxNTllYmRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNo
VGFzazo6c3RhcnRGZXRjaCgpCiAgICAgYXV0byByZXF1ZXN0ID0gbV9jdXJyZW50UmVxdWVzdDsK
ICAgICBjbGVhbkhUVFBSZXF1ZXN0SGVhZGVyc0ZvckFjY2Vzc0NvbnRyb2wocmVxdWVzdCwgbV9s
b2FkZXIucGFyYW1ldGVycygpLmh0dHBIZWFkZXJzVG9LZWVwKTsKIAotICAgIGJvb2wgaXNTZW50
ID0gc2VuZFRvU2VydmljZVdvcmtlcihNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OlN0YXJ0RmV0Y2ggeyBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3NlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBtX2ZldGNoSWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywg
SVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IG1fY3VycmVudFJlcXVlc3QuaHR0cEJvZHkoKSB9LCBy
ZWZlcnJlciwgbV9wcmVsb2FkZXIgJiYgbV9wcmVsb2FkZXItPmlzU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkRW5hYmxlZCgpIH0pOworICAgIGJvb2wgaXNTZW50ID0gc2VuZFRvU2Vydmlj
ZVdvcmtlcihNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN0YXJ0RmV0
Y2ggeyBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBtX2ZldGNoSWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSB7IG1fY3VycmVudFJlcXVlc3QuaHR0cEJvZHkoKSB9LCByZWZlcnJlciwgbV9wcmVs
b2FkZXIgJiYgbV9wcmVsb2FkZXItPmlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5h
YmxlZCgpLCBtX2xvYWRlci5jbGllbnRJZGVudGlmaWVyKCksIG1fbG9hZGVyLnJlc3VsdGluZ0Ns
aWVudElkZW50aWZpZXIoKSB9KTsKICAgICBBU1NFUlRfVU5VU0VEKGlzU2VudCwgaXNTZW50KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA0NzJhMjMx
MzlmNzY4YjA5MTNjNmFjMTQ0MTlmN2Q4YmRmMjQyZWFlLi43NDA5YWYwYWZiYTU5M2IyMGVlZTIw
MDc1MzlhOTBlYWExOTkyMDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcApAQCAtMTc1LDYgKzE3NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrPiBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayhOCiAKICAgICAg
ICAgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSByZWdpc3RyYXRpb24tPmlk
ZW50aWZpZXIoKTsKICAgICAgICAgY29udHJvbENsaWVudCgqbG9hZGVyLnBhcmFtZXRlcnMoKS5v
cHRpb25zLmNsaWVudElkZW50aWZpZXIsICpyZWdpc3RyYXRpb24sIHJlcXVlc3QpOworICAgICAg
ICBsb2FkZXIuc2V0UmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcihsb2FkZXIucGFyYW1ldGVycygp
Lm9wdGlvbnMuY2xpZW50SWRlbnRpZmllci0+dG9WaXNpYmxlU3RyaW5nKCkpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGlmICghbG9hZGVyLnBhcmFtZXRlcnMoKS5zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDYg
KzIwNSwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2soTgogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKKyAgICBpZiAobG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zLm1vZGUgIT0g
RmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSAmJiBsb2FkZXIucGFyYW1ldGVycygpLm9wdGlv
bnMuY2xpZW50SWRlbnRpZmllcikgeworICAgICAgICBpZiAoYXV0byBkYXRhID0gd29ya2VyLT5m
aW5kQ2xpZW50QnlJZGVudGlmaWVyKCpsb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnMuY2xpZW50
SWRlbnRpZmllcikpCisgICAgICAgICAgICBsb2FkZXIuc2V0Q2xpZW50SWRlbnRpZmllcihkYXRh
LT5pZGVudGlmaWVyLnRvVmlzaWJsZVN0cmluZygpKTsKKyAgICB9CisKICAgICBib29sIGlzV29y
a2VyUmVhZHkgPSB3b3JrZXItPmlzUnVubmluZygpICYmIHdvcmtlci0+c3RhdGUoKSA9PSBTZXJ2
aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRlZDsKICAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s+KCp0aGlzLCBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCB7IHJl
cXVlc3QgfSwgaWRlbnRpZmllcigpLCB3b3JrZXItPmlkZW50aWZpZXIoKSwgKnJlZ2lzdHJhdGlv
biwgc2Vzc2lvbigpLCBpc1dvcmtlclJlYWR5KTsKICAgICBzdGFydEZldGNoKCp0YXNrLCAqd29y
a2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAKaW5kZXggZjBhODk2NzVjYzE0NDM3MDhhMGI2OGFjOTMxY2U3N2ZkMjVjNDAwNS4uNWE4
NzAzZWZkNmQ1ZGNkNDFhMjI1YThkMTJlM2RkNWRkYWUxMDYwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTE1NSwxMSArMTU1
LDYgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZUR1ZVRv
VW5yZXNwb25zaXZlbmVzcygpCiAgICAgbV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6VGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyB7IHdlYlByb2Nl
c3NJZGVudGlmaWVyKCkgfSwgMCk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYg
ZGF0YSwgYm9vbCBoYXNTZWN1cml0eUVycm9yKQotewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVk
IHsgcmVxdWVzdElkZW50aWZpZXIsIGRhdGEsIGhhc1NlY3VyaXR5RXJyb3IgfSk7Ci19Ci0KIHZv
aWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptYXRjaEFsbENvbXBsZXRlZCh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhPiYgY2xpZW50c0RhdGEpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246Ok1hdGNoQWxsQ29tcGxldGVkIHsgcmVxdWVzdElkZW50aWZpZXIsIGNs
aWVudHNEYXRhIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oCmluZGV4IDMzNjU4YzU0YzE0ZmE0YTQ0NGI3NDM2ZGQ5MGIwODU5YTI0MmJiNTMu
LmQ5NWI3Y2U4NTQ2OThjNTE2NmQzYTE1OWEzNzg4ZWRlMmQ5YjIyOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTk1LDcgKzk1LDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRTYXZlU2NyaXB0
c1RvRGlzayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
U2NyaXB0QnVmZmVyJiwgY29uc3QgSGFzaE1hcDxVUkwsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4m
IGltcG9ydGVkU2NyaXB0cykgZmluYWw7Ci0gICAgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVy
Q29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJv
cikgZmluYWw7CiAgICAgdm9pZCBtYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYp
IGZpbmFsOwogICAgIHZvaWQgZmlyZVB1c2hFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGZk
NzE5NDhjNWYzNTk5OWY1NTJkZjFkZmQ2MzUyYzEzZDJmNWY4MWUuLjBkNjE0NTBkNDFhMzAxZjA4
ZjllYzVlNmEzYTYwMDYxZjliNjQzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzIsNyArMzIs
NyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291
bnRlZCB7CiAgICAgU2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKQog
ICAgIFNraXBXYWl0aW5nKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIpIC0+ICgpIEFzeW5jCiAgICAgV29ya2VyVGVybWluYXRlZChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIEZpbmRDbGllbnRCeUlkZW50aWZpZXIodWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQorICAgIEZpbmRDbGllbnRCeVZpc2libGVJZGVu
dGlmaWVyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBTdHJpbmcgY2xpZW50SWRlbnRpZmllcikgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+IGRhdGEpIEFzeW5jCiAgICAgTWF0Y2hBbGwodWlu
dDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ2xpZW50UXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIENsYWltKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSAtPiAoc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiByZXN1bHQpIEFzeW5jCiAgICAgU2V0U2Ny
aXB0UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
VVJMIHNjcmlwdFVSTCwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRl
ZFNjcmlwdCBzY3JpcHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
aW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgKaW5kZXggMGY4ZGYy
MWNjM2VhYjkwMjA1OWE0MTIwMWZiNTMyMWZiOTU5ZTkxOS4uN2E0NmRiMWY3ZmMwZDkxMDA3NjYz
NGMxN2RjZDBlMjczZTBiNmZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaApAQCAt
ODEsNyArODEsNyBAQAogCiAtICh2b2lkKV9kb0FmdGVyUmVjZWl2aW5nRWRpdERyYWdTbmFwc2hv
dEZvclRlc3Rpbmc6KGRpc3BhdGNoX2Jsb2NrX3QpYWN0aW9uOwogCi0tICh2b2lkKV90cmlnZ2Vy
U3lzdGVtUHJldmlld0FjdGlvbk9uRWxlbWVudDoodWludDY0X3QpZWxlbWVudElEIGRvY3VtZW50
Oih1aW50NjRfdClkb2N1bWVudElEIHBhZ2U6KHVpbnQ2NF90KXBhZ2VJRDsKKy0gKHZvaWQpX3Ry
aWdnZXJTeXN0ZW1QcmV2aWV3QWN0aW9uT25FbGVtZW50Oih1aW50NjRfdCllbGVtZW50SUQgZG9j
dW1lbnQ6KE5TU3RyaW5nKilkb2N1bWVudElEIHBhZ2U6KHVpbnQ2NF90KXBhZ2VJRDsKIAogLSAo
dm9pZClfc2V0RGV2aWNlT3JpZW50YXRpb25Vc2VyUGVybWlzc2lvbkhhbmRsZXJGb3JUZXN0aW5n
OihCT09MICheKSh2b2lkKSloYW5kbGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KaW5kZXggNjA0N2QzYzc0MTJi
ZjYwMGJiMDljMjY2OGViNjI5MTFiMTMyZjBkNC4uOTViODI5MjIyMjRhZWExNGIxZTE0MzlmMGE4
ZjVlMDgzMDQzYjk0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lv
cy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbQpAQCAtNDQ4LDcgKzQ0OCw3IEBAIHN0YXRpYyB2
b2lkIGR1bXBVSVZpZXcoVGV4dFN0cmVhbSYgdHMsIFVJVmlldyAqdmlldykKICAgICBbX2NvbnRl
bnRWaWV3IF9zaW11bGF0ZVRleHRFbnRlcmVkOnRleHRdOwogfQogCi0tICh2b2lkKV90cmlnZ2Vy
U3lzdGVtUHJldmlld0FjdGlvbk9uRWxlbWVudDoodWludDY0X3QpZWxlbWVudElEIGRvY3VtZW50
Oih1aW50NjRfdClkb2N1bWVudElEIHBhZ2U6KHVpbnQ2NF90KXBhZ2VJRAorLSAodm9pZClfdHJp
Z2dlclN5c3RlbVByZXZpZXdBY3Rpb25PbkVsZW1lbnQ6KHVpbnQ2NF90KWVsZW1lbnRJRCBkb2N1
bWVudDooTlNTdHJpbmcqKWRvY3VtZW50SUQgcGFnZToodWludDY0X3QpcGFnZUlECiB7CiAjaWYg
VVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChfcGFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29j
b2EubW0KaW5kZXggZGNjZDkwZGZlYzI0MjMxMzIyMzMxMTA0YjY3YzkwYzM4MDc5MmY3OC4uMmY4
YmEwMmRhMjgwNzBjNjg4MmQ3YTUzM2ExOGY2MjE1MTk3YjZhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxl
ckNvY29hLm1tCkBAIC0zMDEsMTEgKzMwMSwxNiBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9s
bGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbigpCiAgICAgcGFnZSgpLnN5c3RlbVByZXZp
ZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xv
b2tfYnV0dG9uX3RhcHBlZCIpOwogfQogCi12b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0
cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVs
ZW1lbnRJRCwgdWludDY0X3QgZG9jdW1lbnRJRCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBTeXN0
ZW1QcmV2aWV3Q29udHJvbGxlcjo6dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb25XaXRoVGFyZ2V0
Rm9yVGVzdGluZyh1aW50NjRfdCBlbGVtZW50SUQsIE5TU3RyaW5nKiBkb2N1bWVudElELCB1aW50
NjRfdCBwYWdlSUQpCiB7CisgICAgYXV0byB1dWlkID0gVVVJRDo6cGFyc2UoU3RyaW5nKGRvY3Vt
ZW50SUQpKTsKKyAgICBBU1NFUlQodXVpZCk7CisgICAgaWYgKCF1dWlkKQorICAgICAgICByZXR1
cm47CisKICAgICBtX3N5c3RlbVByZXZpZXdJbmZvLmlzUHJldmlldyA9IHRydWU7CiAgICAgbV9z
eXN0ZW1QcmV2aWV3SW5mby5lbGVtZW50LmVsZW1lbnRJZGVudGlmaWVyID0gbWFrZU9iamVjdElk
ZW50aWZpZXI8V2ViQ29yZTo6RWxlbWVudElkZW50aWZpZXJUeXBlPihlbGVtZW50SUQpOwotICAg
IG1fc3lzdGVtUHJldmlld0luZm8uZWxlbWVudC5kb2N1bWVudElkZW50aWZpZXIgPSBXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciB7IG1ha2VPYmplY3RJZGVudGlmaWVy
PFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyVHlwZT4oZG9jdW1lbnRJ
RCksIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSB9Owor
ICAgIG1fc3lzdGVtUHJldmlld0luZm8uZWxlbWVudC5kb2N1bWVudElkZW50aWZpZXIgPSB7ICp1
dWlkLCBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkgfTsK
ICAgICBtX3N5c3RlbVByZXZpZXdJbmZvLmVsZW1lbnQud2ViUGFnZUlkZW50aWZpZXIgPSBtYWtl
T2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllclR5cGU+KHBhZ2VJRCk7CiAg
ICAgdHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb24oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCmluZGV4IDJlZGIwNDEyNzgxMGM2
ZTFhNjZhZDM1Y2U4Y2I3NGEyZDJiYTA1MzUuLjZhYjZkMmJiMTk3Mzc3N2U3ODhhYWY1ZjlmZWIx
ZDhhODRhMDE2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVBy
ZXZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJl
dmlld0NvbnRyb2xsZXIuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHRy
aWdnZXJTeXN0ZW1QcmV2aWV3QWN0aW9uKCk7CiAKLSAgICB2b2lkIHRyaWdnZXJTeXN0ZW1QcmV2
aWV3QWN0aW9uV2l0aFRhcmdldEZvclRlc3RpbmcodWludDY0X3QgZWxlbWVudElELCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgdHJpZ2dlclN5c3RlbVByZXZp
ZXdBY3Rpb25XaXRoVGFyZ2V0Rm9yVGVzdGluZyh1aW50NjRfdCBlbGVtZW50SUQsIE5TU3RyaW5n
KiBkb2N1bWVudElELCB1aW50NjRfdCBwYWdlSUQpOwogCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQ
cm94eSYgbV93ZWJQYWdlUHJveHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAppbmRleCBlNmRkODExMDU2
NDQ0MWMzYTM1OTA5MGIwMTE0MmRkY2UyMDQzYWMzLi5jMzQyN2FhNTIwYzRmMWQ3ZGE0M2MxMjk3
ZTY5ZDJhZjBlMTIyZjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBA
QCBXS0FycmF5UmVmIFdLQnVuZGxlR2V0TGl2ZURvY3VtZW50VVJMc0ZvclRlc3RpbmcoV0tCdW5k
bGVSZWYgYnVuZGxlUmVmLCBib29sIGV4YwogICAgICAgICBhdXRvIGRvY3VtZW50SURLZXkgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJpZCIpKTsKICAgICAgICAgYXV0
byBkb2N1bWVudFVSTEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
InVybCIpKTsKIAotICAgICAgICBhdXRvIGRvY3VtZW50SURWYWx1ZSA9IGFkb3B0V0soV0tVSW50
NjRDcmVhdGUoaXQua2V5KSk7CisgICAgICAgIGF1dG8gZG9jdW1lbnRJRFZhbHVlID0gYWRvcHRX
SyhXZWJLaXQ6OnRvQ29waWVkQVBJKGl0LmtleS50b1N0cmluZygpKSk7CiAgICAgICAgIGF1dG8g
ZG9jdW1lbnRVUkxWYWx1ZSA9IGFkb3B0V0soV2ViS2l0Ojp0b0NvcGllZEFQSShpdC52YWx1ZSkp
OwogCiAgICAgICAgIFdLRGljdGlvbmFyeVNldEl0ZW0odXJsSW5mby5nZXQoKSwgZG9jdW1lbnRJ
REtleS5nZXQoKSwgZG9jdW1lbnRJRFZhbHVlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmlu
ZGV4IDg1YzcwMTMwMjY5ZDFkNjBhNGZkNjhmMjBjOTdiNjhhMmIyOGEzZWEuLmY0ZGQ1ODMxMjBi
ZTBjZmFkNDgwNTYyZDNiMDg1YTI1Mjg4MWRkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAt
MzM4LDE0ICszMzgsMTQgQEAgSW5qZWN0ZWRCdW5kbGU6OkRvY3VtZW50SURUb1VSTE1hcCBJbmpl
Y3RlZEJ1bmRsZTo6bGl2ZURvY3VtZW50VVJMcyhib29sIGV4Y2x1ZGUKICAgICBEb2N1bWVudElE
VG9VUkxNYXAgcmVzdWx0OwogCiAgICAgZm9yIChjb25zdCBhdXRvKiBkb2N1bWVudCA6IERvY3Vt
ZW50OjphbGxEb2N1bWVudHMoKSkKLSAgICAgICAgcmVzdWx0LmFkZChkb2N1bWVudC0+aWRlbnRp
ZmllcigpLm9iamVjdCgpLnRvVUludDY0KCksIGRvY3VtZW50LT51cmwoKS5zdHJpbmcoKSk7Cisg
ICAgICAgIHJlc3VsdC5hZGQoZG9jdW1lbnQtPmlkZW50aWZpZXIoKS5vYmplY3QoKSwgZG9jdW1l
bnQtPnVybCgpLnN0cmluZygpKTsKIAogICAgIGlmIChleGNsdWRlRG9jdW1lbnRzSW5QYWdlR3Jv
dXBQYWdlcykgewogICAgICAgICBQYWdlOjpmb3JFYWNoUGFnZShbJl0oUGFnZSYgcGFnZSkgewog
ICAgICAgICAgICAgZm9yIChhdXRvKiBmcmFtZSA9ICZwYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKCFmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICAgICAgcmVzdWx0LnJlbW92ZShmcmFtZS0+ZG9jdW1lbnQoKS0+aWRlbnRpZmll
cigpLm9iamVjdCgpLnRvVUludDY0KCkpOworICAgICAgICAgICAgICAgIHJlc3VsdC5yZW1vdmUo
ZnJhbWUtPmRvY3VtZW50KCktPmlkZW50aWZpZXIoKS5vYmplY3QoKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXggZGRlZDk3MGIzY2YyZjFl
ZTFlNzRmYWE2MDkyODgzYWE2MTQyZGQ2MC4uNTFjMDQ3YTI3NTE1NzYyZThlMWRhZTJmNzI2ZjY2
ODUzMjJjZGUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6
CiAgICAgc3RkOjpvcHRpb25hbDxVVUlEPiB3ZWJOb3RpZmljYXRpb25JRChKU0NvbnRleHRSZWYs
IEpTVmFsdWVSZWYpOwogICAgIFJlZjxBUEk6OkRhdGE+IGNyZWF0ZVdlYkRhdGFGcm9tVWludDhB
cnJheShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogICAgIAotICAgIHR5cGVkZWYgSGFzaE1h
cDx1aW50NjRfdCwgU3RyaW5nPiBEb2N1bWVudElEVG9VUkxNYXA7CisgICAgdHlwZWRlZiBIYXNo
TWFwPFVVSUQsIFN0cmluZz4gRG9jdW1lbnRJRFRvVVJMTWFwOwogICAgIERvY3VtZW50SURUb1VS
TE1hcCBsaXZlRG9jdW1lbnRVUkxzKGJvb2wgZXhjbHVkZURvY3VtZW50c0luUGFnZUdyb3VwUGFn
ZXMpOwogCiAgICAgLy8gR2FyYmFnZSBjb2xsZWN0aW9uIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwCmluZGV4IDAzZWViOGIyZDgxMzEwZjllOTY3N2ZmM2IwYzBlOTRjMzQ0
ZjZmZDUuLjU1Y2E3ZGMzY2UwNmI1NTE0OWNhOWMzY2FjZjU4MTJkNTY0OWFmOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3Bv
bnNlKFNXU2VydmVyQ29ubgogICAgICAgICBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHktPmNvbnRp
bnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2Uoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGZl
dGNoSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBm
b3JtRGF0YSwgU3RyaW5nJiYgcmVmZXJyZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlv
blByZWxvYWRFbmFibGVkKQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3Rh
cnRGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIGZvcm1E
YXRhLCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZEVuYWJsZWQsIFN0cmluZyYmIGNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIHJlc3VsdGlu
Z0NsaWVudElkZW50aWZpZXIpCiB7CiAgICAgYXV0byogc2VydmljZVdvcmtlclRocmVhZFByb3h5
ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlclRocmVhZFByb3h5
KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eSkgewpAQCAtMjU3LDEwICsyNTcsOSBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpzdGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydgogICAg
IH0KIAogICAgIGF1dG8gY2xpZW50ID0gV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
Y3JlYXRlKG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MuY29weVJlZigpLCBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmll
ciwgcmVxdWVzdC5yZXF1ZXN0ZXIoKSA9PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFp
bik7Ci0gICAgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4g
Y2xpZW50SWQgPSBvcHRpb25zLmNsaWVudElkZW50aWZpZXI7CiAKICAgICByZXF1ZXN0LnNldEhU
VFBCb2R5KGZvcm1EYXRhLnRha2VEYXRhKCkpOwotICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS0+c3RhcnRGZXRjaChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVy
LCBXVEZNb3ZlKGNsaWVudCksIFdURk1vdmUoY2xpZW50SWQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlZmVycmVyKSwgV1RGTW92ZShvcHRpb25zKSwgaXNTZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRFbmFibGVkKTsKKyAgICBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHktPnN0YXJ0
RmV0Y2goc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciwgV1RGTW92
ZShjbGllbnQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZmVycmVyKSwgV1RGTW92ZShv
cHRpb25zKSwgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkLCBXVEZNb3Zl
KGNsaWVudElkZW50aWZpZXIpLCBXVEZNb3ZlKHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIpKTsK
IH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVy
LCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJPckNsaWVu
dERhdGEmJiBzb3VyY2VEYXRhKQpAQCAtMzMzLDIyICszMzIsOSBAQCB2b2lkIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjp3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcgogICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V29ya2VyVGVybWluYXRlZChzZXJ2aWNl
V29ya2VySWRlbnRpZmllciksIDApOwogfQogCi12b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ2FsbGJhY2sm
JiBjYWxsYmFjaykKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpbmRDbGll
bnRCeVZpc2libGVJZGVudGlmaWVyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIsIEZp
bmRDbGllbnRCeUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIGF1dG8gcmVx
dWVzdElkZW50aWZpZXIgPSArK21fcHJldmlvdXNSZXF1ZXN0SWRlbnRpZmllcjsKLSAgICBtX2Zp
bmRDbGllbnRCeUlkZW50aWZpZXJSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1v
dmUoY2FsbGJhY2spKTsKLSAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OkZpbmRDbGllbnRCeUlkZW50
aWZpZXIgeyByZXF1ZXN0SWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNsaWVu
dElkZW50aWZpZXIgfSwgMCk7Ci19Ci0KLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OmZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYgY2xpZW50RGF0
YSwgYm9vbCBoYXNTZWN1cml0eUVycm9yKQotewotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9m
aW5kQ2xpZW50QnlJZGVudGlmaWVyUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikpIHsK
LSAgICAgICAgaWYgKGhhc1NlY3VyaXR5RXJyb3IpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKEV4
Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjbGllbnREYXRhKSk7Ci0gICAgfQorICAgIG1f
Y29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpGaW5kQ2xpZW50QnlWaXNpYmxlSWRlbnRp
ZmllciB7IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyIH0sIFdURk1v
dmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
bWF0Y2hBbGwoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmIG9wdGlvbnMs
IFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYmIGNhbGxiYWNrKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggMDU4MGQ5ODMyMjhhNzJiYjhjOTk0OWNhMmIx
YjRjNzExOGZhYzYxMC4uYWNlMWE5OWRkMTE4NzFmYzJiZGQ3Y2I0NWZmNTc0YTg3OWYxNTFlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZl
bnRzKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSBmaW5hbDsKICAgICB2
b2lkIHdvcmtlclRlcm1pbmF0ZWQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZp
bmFsOwotICAgIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllcihXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIs
IEZpbmRDbGllbnRCeUlkZW50aWZpZXJDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmRD
bGllbnRCeVZpc2libGVJZGVudGlmaWVyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmLCBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ2FsbGJhY2smJikgZmluYWw7
CiAgICAgdm9pZCBtYXRjaEFsbChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNs
YWltKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OkV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIHNr
aXBXYWl0aW5nKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2VydmljZVdvcmtlckZhaWxlZFRvU3RhcnQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKSBmaW5hbDsKICAgICB2b2lkIGlu
c3RhbGxTZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyRGF0YSYmLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdlYkNvcmU6
OldvcmtlclRocmVhZE1vZGUpOwogICAgIHZvaWQgdXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkKTsKLSAgICB2b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNv
cmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6
OkZldGNoT3B0aW9ucyYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYsIFN0cmluZyYmIHJlZmVy
cmVyLCBib29sIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCk7CisgICAg
dm9pZCBzdGFydEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYmLCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc1NlcnZpY2VX
b3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIFN0cmluZyYmIGNsaWVudElkZW50aWZpZXIs
IFN0cmluZyYmIHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIpOwogICAgIHZvaWQgY2FuY2VsRmV0
Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcik7CiAgICAgdm9pZCBj
b250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpG
ZXRjaElkZW50aWZpZXIpOwogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXZWJD
b3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JD
bGllbnREYXRhJiYgc291cmNlRGF0YSk7CkBAIC0xMDEsNyArMTAxLDYgQEAgcHJpdmF0ZToKICNp
ZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKICAgICB2b2lk
IGRpZFNhdmVTY3JpcHRzVG9EaXNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTY3JpcHRCdWZmZXImJiwgSGFzaE1hcDxVUkwsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZl
cj4mJiBpbXBvcnRlZFNjcmlwdHMpOwogI2VuZGlmCi0gICAgdm9pZCBmaW5kQ2xpZW50QnlJZGVu
dGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmLCBib29sIGhhc1NlY3VyaXR5RXJy
b3IpOwogICAgIHZvaWQgbWF0Y2hBbGxDb21wbGV0ZWQodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0
SWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKTsK
ICAgICB2b2lkIHNldFVzZXJBZ2VudChTdHJpbmcmJiB1c2VyQWdlbnQpOwogICAgIHZvaWQgY2xv
c2UoKTsKQEAgLTExNyw3ICsxMTYsNiBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIG1fcGFnZUlEOwogCiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdv
cmtlckZyYW1lTG9hZGVyQ2xpZW50Pj4gbV9sb2FkZXJzOwotICAgIEhhc2hNYXA8dWludDY0X3Qs
IEZpbmRDbGllbnRCeUlkZW50aWZpZXJDYWxsYmFjaz4gbV9maW5kQ2xpZW50QnlJZGVudGlmaWVy
UmVxdWVzdHM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNs
aWVudHNNYXRjaEFsbENhbGxiYWNrPiBtX21hdGNoQWxsUmVxdWVzdHM7CiAgICAgdWludDY0X3Qg
bV9wcmV2aW91c1JlcXVlc3RJZGVudGlmaWVyIHsgMCB9OwogICAgIFN0cmluZyBtX3VzZXJBZ2Vu
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5k
ZXggZDU0MWI4MDMxOTJiOGQ1NGQxODIxN2ZiMTEyNTZkZjAwNjk1MzAyMC4uYzZhMWE4ZmIzNjc2
ZGZjZDdmMmQ4Zjc0MjBhMWU4YmNjOTBiMzEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAKIG1lc3NhZ2VzIC0+
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogICAgIEluc3Rh
bGxTZXJ2aWNlV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEg
Y29udGV4dERhdGEsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRGF0YSB3b3JrZXJEYXRh
LCBTdHJpbmcgdXNlckFnZW50LCBlbnVtOmJvb2wgV2ViQ29yZTo6V29ya2VyVGhyZWFkTW9kZSB3
b3JrZXJUaHJlYWRNb2RlKQogICAgIFVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBlbnVtOmJvb2wg
V2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQpCi0gICAgU3RhcnRGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVu
dGlmaWVyIGZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qs
IHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSByZXF1ZXN0Qm9keSwgU3RyaW5nIHJlZmVycmVyLCBib29sIGlzU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkRW5hYmxlZCkKKyAgICBTdGFydEZldGNoKFdlYkNvcmU6OlNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3Jl
OjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyBvcHRpb25zLCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBTdHJpbmcgcmVmZXJyZXIsIGJvb2wgaXNTZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkLCBTdHJpbmcgY2xpZW50SWRlbnRpZmVy
LCBTdHJpbmcgcmVzdXRsaW5nQ2xpZW50SWRlbnRpZmllcikKICAgICBDYW5jZWxGZXRjaChXZWJD
b3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKICAgICBDb250
aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50
aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQogICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgc3Ry
dWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJPckNsaWVudERhdGEgc291cmNlRGF0YSkKQEAgLTM3LDcgKzM3LDYgQEAgbWVz
c2FnZXMgLT4gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAj
aWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgRGlk
U2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciBzY3JpcHQsIEhhc2hNYXA8
VVJMLCBXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGltcG9ydGVkU2NyaXB0cyk7CiAjZW5kaWYKLSAg
ICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IGNsaWVudElkUmVxdWVz
dElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERh
dGE+IGRhdGEsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikKICAgICBNYXRjaEFsbENvbXBsZXRlZCh1
aW50NjRfdCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudERhdGE+IGNsaWVudHNEYXRhKQogICAgIFNldFVzZXJBZ2VudChTdHJpbmcg
dXNlckFnZW50KQogICAgIFVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoc3RydWN0IFdlYktpdDo6V2Vi
UHJlZmVyZW5jZXNTdG9yZSBzdG9yZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCAzZDEzNmUxZTdkMzlmZGY2OThjZjQ2ZjU3ZmRmNmRiZGY0YWIz
MWNhLi4xNDYxZjY2MDIyNTUwMTIzNTg0Mjg2OTBmMGNmNzkwNmU2M2Q4ZjRkIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMjItMDEtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAg
IE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5pZCBhIFVVSUQgaW5zdGVhZCBvZiBhIHN0cmluZyBk
ZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MDcwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9VVUlELmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1N5c3RlbVByZXZpZXcubW06CisKIDIwMjItMDEtMTEgIEdlb2ZmcmV5IEdh
cmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJQYWdlUHJveHkgZGVzdHJ1Y3Rp
b24gc2hvdWxkIG5vdCBsYXVuY2ggYSBuZXR3b3JrIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYjFmYTFlYmZhZWM1MGNmYzZiZTQ1ODgxNTAyODYxMzU3YWE5YzM1NS4uZWI2MmNk
Y2I0YzMyOWU0ZWRjNDZmYWRmNGRlYmNiNzRjYzViYmJmZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIwNyw2ICsyMDcsNyBAQAogCQk0MTY2MUM2NjIzNTVFODVFMDBEMzNDMjcgLyogZ2V0
VXNlck1lZGlhLXdlYmF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2NjFDNjUyMzU1RDk4QjAwRDMzQzI3IC8qIGdldFVzZXJN
ZWRpYS13ZWJhdWRpby5odG1sICovOyB9OwogCQk0MTgxQzYyRDI1NUE4OTExMDBBRUIwRkYgLyog
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTgxQzYyQzI1NUE4OTExMDBBRUIwRkYgLyogUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5jcHAgKi87IH07CiAJCTQxODQ4RjQ0MjQ4OTE4NzkwMDBF
MjU4OCAvKiBvcGVuLXdpbmRvdy13aXRoLWZpbGUtdXJsLXdpdGgtaG9zdC5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODQ4RjQzMjQ4
OTE4MTUwMDBFMjU4OCAvKiBvcGVuLXdpbmRvdy13aXRoLWZpbGUtdXJsLXdpdGgtaG9zdC5odG1s
ICovOyB9OworCQk0MUQyQTIxRjI3OTA2RjlGMDA4OEZDQ0UgLyogVVVJRC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDRENDBFQzIyMUI0NkE3MDA0
QjQ3NEYgLyogVVVJRC5jcHAgKi87IH07CiAJCTQxRTY3QTg1MjVEMTZFODMwMDdCMEE0QyAvKiBT
VFVOTWVzc2FnZVBhcnNpbmdUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxRTY3QTg0MjVEMTZFODMwMDdCMEE0QyAvKiBTVFVOTWVzc2FnZVBh
cnNpbmdUZXN0LmNwcCAqLzsgfTsKIAkJNDQwNzdCQjEyMzE0NEI1MDAwMTc5RTJEIC8qIERhdGFE
ZXRlY3RvcnNUZXN0SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDQwNzdCQjAyMzE0NDlEMjAwMTc5RTJEIC8qIERhdGFEZXRlY3RvcnNUZXN0SU9T
Lm1tICovOyB9OwogCQk0NDMzQTM5NjIwODA0NDE0MDA5MUVENTcgLyogU3luY2hyb25vdXNUaW1l
b3V0VGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NDMzQTM5NTIwODA0NDEzMDA5MUVENTcgLyogU3luY2hyb25vdXNUaW1lb3V0VGVzdHMubW0g
Ki87IH07CkBAIC01MzkwLDYgKzUzOTEsNyBAQAogCQkJCUUzQzIxQTdDMjFCMjVDQTIwMDNCMzFB
MyAvKiBVUkxFeHRyYXMubW0gaW4gU291cmNlcyAqLywKIAkJCQlFM0ExRTc4NTIxQjI1QjkxMDA4
QzYwMDcgLyogVVJMUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDNCMUQwQTYw
MjcwMEZFQkNGMyAvKiBVdGlsaXRpZXNDb2NvYS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxRDJB
MjFGMjc5MDZGOUYwMDg4RkNDRSAvKiBVVUlELmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNE
RjRDMUQwQTU5MEMwMEZFQkNGMyAvKiBWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdD
N0NDMkQxRUE0MTQ2QjAwN0JEOTU2IC8qIFdlYWtMaW5raW5nLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTU3QzNGQTY2MUY3QzI0OEYwMDlENEI4MCAvKiBXZWFrUHRyLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVVJRC5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VVUlELmNwcAppbmRleCBkN2RlM2FmYzg3MGY5
YTFiMTZmNzkzNjFlYTEwN2EwY2JmNDViYTQwLi4yODNiMGY2ZTIzMTk1YjEzMjI4MTdkMTExYTIz
MGY0Yzg5YTllYmI3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9V
VUlELmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VVUlELmNwcApAQCAt
MzEsMyArMzEsMjYgQEAgVEVTVChXVEYsIEJvb3RTZXNzaW9uVVVJRElkZW50aXR5KQogewogICAg
IEVYUEVDVF9FUShib290U2Vzc2lvblVVSURTdHJpbmcoKSwgYm9vdFNlc3Npb25VVUlEU3RyaW5n
KCkpOwogfQorCitURVNUKFdURiwgVGVzdFVVSURQYXJzaW5nKQoreworICAgIGF1dG8gY3JlYXRl
ZCAgPSBVVUlEOjpjcmVhdGUoKTsKKyAgICBhdXRvIHZhbHVlID0gVVVJRDo6cGFyc2UoY3JlYXRl
ZC50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfVFJVRSghIXZhbHVlKTsKKyAgICBFWFBFQ1RfRVEo
Y3JlYXRlZCwgKnZhbHVlKTsKKworICAgIC8vIHh4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4
eHh4eHh4eAorICAgIHZhbHVlID0gVVVJRDo6cGFyc2UoIjEyMzQ1Njc4LTlhYmMtNWRlMC04OUFC
LTAxMjM0NTY3ODlhYiIpOworICAgIEVYUEVDVF9GQUxTRSghIXZhbHVlKTsKKworICAgIHZhbHVl
ID0gVVVJRDo6cGFyc2UoIjEyMzQ1Njc4LTlhYmMtNGRlYS03OUFCLTAxMjM0NTY3ODlhYiIpOwor
ICAgIEVYUEVDVF9GQUxTRSghIXZhbHVlKTsKKworICAgIHZhbHVlID0gVVVJRDo6cGFyc2UoIjEy
MzQ1Njc4LTlhYmMtNGRlMC04OWFiLTAxMjM0NTY3ODlhYiIpOworICAgIEVYUEVDVF9UUlVFKCEh
dmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHZhbHVlLT50b1N0cmluZygpID09ICIxMjM0NTY3OC05
YWJjLTRkZTAtODlhYi0wMTIzNDU2Nzg5YWIiKTsKKworICAgIHZhbHVlID0gVVVJRDo6cGFyc2Uo
IjZlZjk0NGMxLTVjYjgtNDhhYS1BZDEyLUM1ZjgyM2YwMDVjMyIpOworICAgIEVYUEVDVF9UUlVF
KCEhdmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHZhbHVlLT50b1N0cmluZygpID09ICI2ZWY5NDRj
MS01Y2I4LTQ4YWEtYWQxMi1jNWY4MjNmMDA1YzMiKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3lzdGVtUHJldmlldy5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3lzdGVtUHJldmlldy5tbQppbmRleCBiZDRi
MzVmMjAwMDAxMTBlOGI1ZTA0NmRjMDdiMzBiZDM4MDY4OWVjLi43MzFiODExNTVkNGE3MTY3MWU4
OGFjNGNmNDIwMWVjMjI3YjA0MjgyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1N5c3RlbVByZXZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9TeXN0ZW1QcmV2aWV3Lm1tCkBAIC0zNywxOSArMzcsMTkgQEAK
IHN0YXRpYyBib29sIGhhc1RyaWdnZXJJbmZvOwogc3RhdGljIGJvb2wgd2FzVHJpZ2dlcmVkOwog
c3RhdGljIHVpbnQ2NF90IGVsZW1lbnRJRDsKLXN0YXRpYyB1aW50NjRfdCBkb2N1bWVudElEOwog
c3RhdGljIHVpbnQ2NF90IHBhZ2VJRDsKIAogQGludGVyZmFjZSBUZXN0U3lzdGVtUHJldmlld1Ry
aWdnZXJlZEhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFRlc3RTeXN0ZW1QcmV2aWV3VHJpZ2dlcmVkSGFuZGxlcgorU3Ry
aW5nIGRvY3VtZW50SUQ7CiAKIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJD
b250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0
TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZQogewogICAgIGlmIChbbWVzc2FnZS5i
b2R5W0AibWVzc2FnZSJdIGlzRXF1YWxUb1N0cmluZzpAImxvYWRlZCJdKSB7CiAgICAgICAgIGVs
ZW1lbnRJRCA9IFttZXNzYWdlLmJvZHlbQCJlbGVtZW50SUQiXSB1bnNpZ25lZEludFZhbHVlXTsK
LSAgICAgICAgZG9jdW1lbnRJRCA9IFttZXNzYWdlLmJvZHlbQCJkb2N1bWVudElEIl0gdW5zaWdu
ZWRJbnRWYWx1ZV07CisgICAgICAgIGRvY3VtZW50SUQgPSBtZXNzYWdlLmJvZHlbQCJkb2N1bWVu
dElEIl07CiAgICAgICAgIHBhZ2VJRCA9IFttZXNzYWdlLmJvZHlbQCJwYWdlSUQiXSB1bnNpZ25l
ZEludFZhbHVlXTsKICAgICAgICAgaGFzVHJpZ2dlckluZm8gPSB0cnVlOwogICAgIH0gZWxzZSBp
ZiAoW21lc3NhZ2UuYm9keVtAIm1lc3NhZ2UiXSBpc0VxdWFsVG9TdHJpbmc6QCJ0cmlnZ2VyZWQi
XSkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDYwNzhhN2Y2M2RlY2UwMTkyOTFlNzM5NjA5YTdkNDI3ODg4M2RjYjMuLjE0
MTY0NzllNjk1MGI0OTU5NDY5MzViZTZkMTkxMDM4NTBmYzYxNTcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAyMi0wMS0xMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAg
ICAgICAgTWFrZSBTZXJ2aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0ZWFkIG9mIGEgc3Ry
aW5nIGRlcml2ZWQgZnJvbSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwNzAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRlc3Rz
IHRvIG5vdCByZWx5IG9uIHZpc2libGUgSUQgdG8gYmUgdGhlIHNlcmlhbGl6YXRpb24gb2YgYSBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci4KKyAgICAgICAgRm9yIHRoYXQgcmVhc29u
LCBhZGQgaW50ZXJuYWxzIEFQSSB0byBnZXQgdGhlIGludGVybmFsIElEIGZyb20gYSBTZXJ2aWNl
V29ya2VyQ2xpZW50LgorCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvY2xp
ZW50LWFkZGVkLXRvLWNsaWVudHMtd2hlbi1yZXN0b3JlZC1mcm9tLXBhZ2UtY2FjaGUuaHRtbDoK
KyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9jbGllbnQtcmVtb3ZlZC1mcm9t
LWNsaWVudHMtd2hpbGUtaW4tcGFnZS1jYWNoZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9nZXRDbGllbnRJZHMtd29ya2VyLmpzOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLW1hdGNo
QWxsLXdvcmtlci5qczoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2
aWNld29ya2VyY2xpZW50cy1tYXRjaEFsbC5odHRwcy5odG1sOgorCiAyMDIyLTAxLTExICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWFrZSBTVkcgcmVzb3VyY2VzIGNyZWF0ZSByZW1vdGUgSW1hZ2VCdWZmZXJzIGZvciB0aGVpciBk
cmF3aW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBmNTYyODhlMDQzZWRjZjZl
NjE0MWE2MGI2NWNiODgyNWIxZDdiOWFhLi4yMDdmMjZkYWMyYTc4ZWQ5MTAwNWYxNzg0ZTJiNWIz
OWRkYzU3Yjc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAyMi0wMS0xMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAg
ICAgTWFrZSBTZXJ2aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0ZWFkIG9mIGEgc3RyaW5n
IGRlcml2ZWQgZnJvbSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwNzAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtZXZlbnQuaHR0cHMtZXhw
ZWN0ZWQudHh0OgorCiAyMDIyLTAxLTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBOZXcgc2VydmljZSB3b3JrZXIgQVBJICdGZXRjaEV2ZW50LmhhbmRsZWQn
IG5lZWRzIHRvIGJlIHN1cHBvcnRlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2UvY2xpZW50LWFkZGVkLXRvLWNsaWVudHMtd2hlbi1yZXN0b3JlZC1m
cm9tLXBhZ2UtY2FjaGUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL2NsaWVudC1hZGRlZC10by1jbGllbnRzLXdoZW4tcmVzdG9yZWQtZnJvbS1wYWdlLWNhY2hl
Lmh0bWwKaW5kZXggMTA3OTdmMjhlMzRlNWE5NzIyMDg3MDFkMjdmM2FlZmQxNzUxODQ5Zi4uNmEy
Mjg0ZWNmMmMzOWYxYjg4ZDY2ZGFiYzJmNWE3YWE2ZTFiMDIyYyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvY2xpZW50LWFkZGVkLXRvLWNsaWVudHMt
d2hlbi1yZXN0b3JlZC1mcm9tLXBhZ2UtY2FjaGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9jbGllbnQtYWRkZWQtdG8tY2xpZW50cy13aGVuLXJlc3Rv
cmVkLWZyb20tcGFnZS1jYWNoZS5odG1sCkBAIC03MCwxMiArNzAsMTIgQEAgbmF2aWdhdG9yLnNl
cnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2ZW50KSB7
CiB9KTsKIAogbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9nZXRD
bGllbnRJZHMtd29ya2VyLmpzIiwgeyB9KS50aGVuKGZ1bmN0aW9uKHJlZ2lzdHJhdGlvbikgewot
ICAgIGV4cGVjdGVkQ2xpZW50SWRlbnRpZmllcnMucHVzaChpbnRlcm5hbHMuc2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXIoZG9jdW1lbnQpKTsKKyAgICBleHBlY3RlZENsaWVudElkZW50aWZp
ZXJzLnB1c2goaW50ZXJuYWxzLnNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIo
ZG9jdW1lbnQpKTsKIAogICAgIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOwogICAg
IG90aGVyV2luZG93ID0gb3Blbigib3RoZXJfcmVzb3VyY2VzL3Rlc3QuaHRtbCIpOwogICAgIG90
aGVyV2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgICAgZXhwZWN0ZWRDbGllbnRJZGVu
dGlmaWVycy5wdXNoKGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihvdGhl
cldpbmRvdy5kb2N1bWVudCkpOworICAgICAgZXhwZWN0ZWRDbGllbnRJZGVudGlmaWVycy5wdXNo
KGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKG90aGVyV2lu
ZG93LmRvY3VtZW50KSk7CiAgICAgICBzdGVwID0gIkJvdGhDbGllbnRzSW5pdGlhbGx5QWN0aXZl
IgogICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJnZXRDbGllbnRJZHMiKTsKICAgICB9OwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvY2xpZW50LXJl
bW92ZWQtZnJvbS1jbGllbnRzLXdoaWxlLWluLXBhZ2UtY2FjaGUuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2NsaWVudC1yZW1vdmVkLWZyb20tY2xpZW50cy13
aGlsZS1pbi1wYWdlLWNhY2hlLmh0bWwKaW5kZXggZjlmY2Y1ZDM0MmIxM2MwYWRlMWI1ZWZiYjFh
NzQ1YzhjYWI2YTQ3Ny4uNjhhOWZjNjI0OWY1MDUzNTI5NGRmNDM5NzUxYjUzN2RmOGI2YjA2NiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvY2xpZW50
LXJlbW92ZWQtZnJvbS1jbGllbnRzLXdoaWxlLWluLXBhZ2UtY2FjaGUuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9jbGllbnQtcmVtb3ZlZC1mcm9tLWNs
aWVudHMtd2hpbGUtaW4tcGFnZS1jYWNoZS5odG1sCkBAIC02NSwxMiArNjUsMTQgQEAgbmF2aWdh
dG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2
ZW50KSB7CiB9KTsKIAogbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNl
cy9nZXRDbGllbnRJZHMtd29ya2VyLmpzIiwgeyB9KS50aGVuKGZ1bmN0aW9uKHJlZ2lzdHJhdGlv
bikgewotICAgIHRvcENsaWVudElkZW50aWZpZXIgPSBpbnRlcm5hbHMuc2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXIoZG9jdW1lbnQpOworICAgIGlmICghd2luZG93LmludGVybmFscykKKyAg
ICAgICAgcmV0dXJuOworICAgIHRvcENsaWVudElkZW50aWZpZXIgPSBpbnRlcm5hbHMuc2Vydmlj
ZVdvcmtlckNsaWVudEludGVybmFsSWRlbnRpZmllcihkb2N1bWVudCk7CiAKICAgICB3b3JrZXIg
PSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKICAgICBvdGhlcldpbmRvdyA9IG9wZW4oIm90aGVy
X3Jlc291cmNlcy90ZXN0Lmh0bWwiKTsKICAgICBvdGhlcldpbmRvdy5vbmxvYWQgPSBmdW5jdGlv
bigpIHsKLSAgICAgIHdpbmRvd0NsaWVudElkZW50aWZpZXIgPSBpbnRlcm5hbHMuc2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXIob3RoZXJXaW5kb3cuZG9jdW1lbnQpOworICAgICAgd2luZG93
Q2xpZW50SWRlbnRpZmllciA9IGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SW50ZXJuYWxJ
ZGVudGlmaWVyKG90aGVyV2luZG93LmRvY3VtZW50KTsKICAgICAgIHN0ZXAgPSAiQm90aENsaWVu
dHNJbml0aWFsbHlBY3RpdmUiCiAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoImdldENsaWVudElk
cyIpOwogICAgIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMv
c2VydmljZS9yZXNvdXJjZXMvZ2V0Q2xpZW50SWRzLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9nZXRDbGllbnRJZHMtd29ya2VyLmpz
CmluZGV4IDk5ZGMxY2I4MjIxZDBkZjhkZjBjZWVjN2Y1ZmE2YjEwODNkNzNiMTguLmNlMTliMjRm
ODA4MDRkYTBmNTUxNzkzYWRhN2FmZTY3ZWZlMDRjYzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9nZXRDbGllbnRJZHMtd29ya2Vy
LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNl
cy9nZXRDbGllbnRJZHMtd29ya2VyLmpzCkBAIC0zLDcgKzMsNyBAQCBzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICBjbGllbnRzLm1hdGNoQWxsKHsgaW5j
bHVkZVVuY29udHJvbGxlZCA6IHRydWUgfSkudGhlbihmdW5jdGlvbihjbGllbnRzKSB7CiAgICAg
ICAgIGxldCBpZHMgPSBbXTsKICAgICAgICAgZm9yIChsZXQgY2xpZW50IG9mIGNsaWVudHMpCi0g
ICAgICAgICAgICBpZHMucHVzaChjbGllbnQuaWQpOworICAgICAgICAgICAgaWRzLnB1c2goc2Vs
Zi5pbnRlcm5hbHMuc2VydmljZVdvcmtlckNsaWVudEludGVybmFsSWRlbnRpZmllcihjbGllbnQp
KTsKICAgICAgICAgc291cmNlLnBvc3RNZXNzYWdlKGlkcyk7CiAgICAgfSk7CiB9KTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3Jr
ZXJjbGllbnRzLW1hdGNoQWxsLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29y
a2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLW1hdGNoQWxsLXdvcmtlci5qcwppbmRl
eCBiZGJhMjgyODYwNTNmMWZkYWQwMzVkMzkzM2MyODY4MDExNzM2OGMzLi5kYjZmMDU0ZjY4OTJj
ZjAyYTY4ZGQ5OTlmYjg4NjhlMjJmM2NjYTcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1tYXRjaEFsbC13b3Jr
ZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2Vydmlj
ZXdvcmtlcmNsaWVudHMtbWF0Y2hBbGwtd29ya2VyLmpzCkBAIC0zLDYgKzMsMTUgQEAgZnVuY3Rp
b24gd2FpdEZvcihkdXJhdGlvbikKICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+
IHNldFRpbWVvdXQocmVzb2x2ZSwgZHVyYXRpb24pKTsKIH0KIAorYXN5bmMgZnVuY3Rpb24gc2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXJGcm9tSW50ZXJuYWxJZGVudGlmaWVyKGludGVybmFs
SWRlbnRpZmllcikKK3sKKyAgICAgY29uc3QgY2xpZW50cyA9IGF3YWl0IHNlbGYuY2xpZW50cy5t
YXRjaEFsbCh7IGluY2x1ZGVVbmNvbnRyb2xsZWQgOiB0cnVlIH0pOworICAgICBmb3IgKGxldCBj
bGllbnQgb2YgY2xpZW50cykgeworICAgICAgICAgaWYgKGludGVybmFscy5zZXJ2aWNlV29ya2Vy
Q2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKGNsaWVudCkgPT0gaW50ZXJuYWxJZGVudGlmaWVyKQor
ICAgICAgICAgICAgcmV0dXJuIGNsaWVudC5pZDsKKyAgICAgfQorfQorCiBmdW5jdGlvbiBjaGVj
a0NsaWVudE5vdEluQ29udHJvbGxlZENsaWVudHMoY2xpZW50SWRlbnRpZmllcikKIHsKICAgICBy
ZXR1cm4gc2VsZi5jbGllbnRzLm1hdGNoQWxsKCkudGhlbigoY2xpZW50cykgPT4gewpAQCAtMzcs
NyArNDYsNyBAQCBhc3luYyBmdW5jdGlvbiBkb1Rlc3RBZnRlck1lc3NhZ2UoZXZlbnQpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb25zdCBjbGllbnRJZGVudGlm
aWVyID0gZXZlbnQuZGF0YS5pZGVudGlmaWVyOworICAgICAgICBjb25zdCBjbGllbnRJZGVudGlm
aWVyID0gYXdhaXQgc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXJGcm9tSW50ZXJuYWxJZGVu
dGlmaWVyKGV2ZW50LmRhdGEuaWRlbnRpZmllcik7CiAKICAgICAgICAgbGV0IHJlc3VsdCA9IGF3
YWl0IGNoZWNrQ2xpZW50Tm90SW5Db250cm9sbGVkQ2xpZW50cyhjbGllbnRJZGVudGlmaWVyKTsK
ICAgICAgICAgaWYgKHJlc3VsdCAhPT0gIlBBU1MiKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1tYXRjaEFs
bC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmljZXdvcmtlcmNsaWVudHMtbWF0Y2hBbGwuaHR0cHMuaHRtbAppbmRleCAyZTZkYmY5OTJkMDUy
ZDlmMWUzZTUxOGRkN2IwZTg1MWVmMjAwMGE3Li42OWI1ZjI4OTAxNmZlNDgwMWJlMWFhOTAxMmI1
ZGI5ZTZkYjQ2ZmEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMv
c2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1tYXRjaEFsbC5odHRwcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRz
LW1hdGNoQWxsLmh0dHBzLmh0bWwKQEAgLTI3LDcgKzI3LDcgQEAgcHJvbWlzZV90ZXN0KGFzeW5j
ICh0ZXN0KSA9PiB7CiB9LCAiU2V0dXAgd29ya2VyIik7CiAKIHByb21pc2VfdGVzdChhc3luYyAo
dGVzdCkgPT4gewotICAgIGNvbnN0IHNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyID0gaW50
ZXJuYWxzLnNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKGRvY3VtZW50KTsKKyAgICBjb25z
dCBzZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciA9IGludGVybmFscy5zZXJ2aWNlV29ya2Vy
Q2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKGRvY3VtZW50KTsKICAgICB2YXIgcHJvbWlzZSA9IG5l
dyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICAgbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHRlc3Quc3RlcF9mdW5jKChldmVu
dCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC5kYXRhLCAiUEFTUyIpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtZXZlbnQuaHR0cHMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNl
LXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtZXZlbnQuaHR0cHMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDVkMmI5YTQzMmRhMDM0NWY5MDMwNzdmMDBiNmVmMGE2MGZlZTJkYjQuLmRkMzZlOWJiYTM0
NWI4ZTU2MjMxZWU1MmQ4MmE1MmE5NTJjZThmMjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyL2ZldGNoLWV2ZW50Lmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci9mZXRjaC1ldmVudC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTYsNyArNiw3IEBAIFBBU1MgU2Vy
dmljZSBXb3JrZXIgcmVzcG9uZHMgdG8gZmV0Y2ggZXZlbnQgdXNpbmcgcmVxdWVzdCBmcmFnbWVu
dCB3aXRoIHN0cmluZwogUEFTUyBTZXJ2aWNlIFdvcmtlciByZXNwb25kcyB0byBmZXRjaCBldmVu
dCB3aXRoIGJsb2IgYm9keQogUEFTUyBTZXJ2aWNlIFdvcmtlciByZXNwb25kcyB0byBmZXRjaCBl
dmVudCB3aXRoIHRoZSByZWZlcnJlciBVUkwKIFBBU1MgU2VydmljZSBXb3JrZXIgcmVzcG9uZHMg
dG8gZmV0Y2ggZXZlbnQgd2l0aCBhbiBleGlzdGluZyBjbGllbnQgaWQKLUZBSUwgU2VydmljZSBX
b3JrZXIgcmVzcG9uZHMgdG8gZmV0Y2ggZXZlbnQgd2l0aCB0aGUgY29ycmVjdCByZXN1bHRpbmcg
Y2xpZW50IGlkIGFzc2VydF9lcXVhbHM6IFNlcnZpY2UgV29ya2VyIHNob3VsZCByZXNwb25kIHdp
dGggYW4gZW1wdHkgcmVzdWx0aW5nIGNsaWVudCBpZCBmb3Igc3VicmVzb3VyY2UgcmVxdWVzdHMg
ZXhwZWN0ZWQgIlJlc3VsdGluZyBDbGllbnQgSUQgTm90IEZvdW5kIiBidXQgZ290ICJSZXN1bHRp
bmcgQ2xpZW50IElEIEZvdW5kOiB1bmRlZmluZWQiCitQQVNTIFNlcnZpY2UgV29ya2VyIHJlc3Bv
bmRzIHRvIGZldGNoIGV2ZW50IHdpdGggdGhlIGNvcnJlY3QgcmVzdWx0aW5nIGNsaWVudCBpZAog
UEFTUyBTZXJ2aWNlIFdvcmtlciBkb2VzIG5vdCByZXNwb25kIHRvIGZldGNoIGV2ZW50CiBQQVNT
IFNlcnZpY2UgV29ya2VyIHJlc3BvbmRzIHRvIGZldGNoIGV2ZW50IHdpdGggbnVsbCByZXNwb25z
ZSBib2R5CiBQQVNTIFNlcnZpY2UgV29ya2VyIGZldGNoZXMgb3RoZXIgZmlsZSBpbiBmZXRjaCBl
dmVudAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449161</attachid>
            <date>2022-01-14 04:33:11 -0800</date>
            <delta_ts>2022-01-16 23:42:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235070-20220114133304.patch</filename>
            <type>text/plain</type>
            <size>94310</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3OTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAwNzkxMWQ1NjQ4ZDYwYWU3MmU0ZGRh
ZWFjNDQ0ZjAxMDNlMjZjNjUuLmVjMGZiYmJjNDY2NWRkZTRhNjIzYzg5ZTY2M2FlNGNhNmY5YzRj
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5pZCBhIFVV
SUQgaW5zdGVhZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM1MDcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvVVVJRC5jcHA6CisgICAgICAgICogd3RmL1VVSUQuaDoKKyAgICAgICAgIEFk
ZCByb3V0aW5lIHRvIHN0cmluZ2lmeSBhIFVVSUQuCisgICAgICAgICBBZGQgcm91dGluZSB0byBw
YXJzZSBhIHN0cmluZ2lmaWVkIFVVSUQuCisgICAgICAgICBXZSByZXN0cmljdCBVVUlEOjpjcmVh
dGUgdG8gdmFsdWVzIGZvciB3aGljaCB0aGUgdmVyc2lvbiA0IFVVSUQgc3RyaW5naWZpY2F0aW9u
IGlzIGJpamVjdGl2ZS4KKwogMjAyMS0xMS0yOSBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFNlcmlhbGl6ZSBDU1MgPG51bWJlcj4gdmFsdWVzIHdpdGgg
cm91bmRpbmcsIGxpbWl0ZWQgZGVjaW1hbCBwcmVjaXNpb24sIGFuZCBubyBleHBvbmVudHMgcGVy
LXNwZWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA4YmJlYzI3NTE5MDA3Mzc1OWM3ZDhlODg3NTljM2YwMWUzOTU1
OTI3Li4xMDAxMzFmNjM3Y2VlYzNmZWMwNThkNjkxODZkNzQyMmRkNmFlZDU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTEgQEAKKzIwMjItMDEtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCisgICAgICAgIE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5pZCBhIFVVSUQgaW5z
dGVhZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM1MDcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIHRvIGJlIGEgcHJvY2Vzcy1z
Y29wZWQgVVVJRC4KKyAgICAgICAgVGhpcyBhbGxvd3MgdG8gaWRlbnRpZnkgdGhlIHByb2Nlc3Mg
cnVubmluZyBhIHByb2Nlc3MgYXMgd2VsbCBhcyBleHBvc2luZyB0byBKYXZhU2NyaXB0IGNvbnRl
eHQgaWRlbnRpZmllcnMgYXMgVVVJRHMuCisgICAgICAgIFRoaXMgaXMgbWF0Y2hpbmcgd2hhdCBD
aHJvbWUgYW5kIEZpcmVmb3ggYXJlIGRvaW5nLgorICAgICAgICBNYWtlIFNXU2VydmVyIHN0b3Jl
IHRoZSBtYXBpbmcgZnJvbSBjb250ZXh0IFVVSUQgc3RyaW5ncyB0byB0aGUgaW50ZXJuYWwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXJzLgorICAgICAgICBUaGlzIGFsbG93cyB0byBm
aW5kIGEgU2VydmljZVdvcmtlckNsaWVudCBkaXJlY3RseSBmcm9tIGl0cyBKYXZhU2NyaXB0IGV4
cG9zZWQgaWRlbnRpZmllci4KKyAgICAgICAgUmVuYW1lIHJlc2VydmVkQ2xpZW50SWQgaW4gcmVz
dWx0aW5nQ2xpZW50SWQgdG8gbWF0Y2ggdGhlIHNwZWMuCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViLWxvY2tzL1dlYkxvY2tSZWdp
c3RyeS5jcHA6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgICogcGFnZS9tYWMvUGFn
ZU1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9jZXNzUXVhbGlmaWVkLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaDoKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9TZXJ2
aWNlV29ya2VySW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJ
bnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRs
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmNwcDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9G
ZXRjaEV2ZW50LmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudC5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQu
aWRsOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHA6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5j
cHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuaDoKKwogMjAyMi0wMS0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgTmV3IHNlcnZpY2Ugd29ya2VyIEFQSSAnRmV0Y2hFdmVudC5oYW5kbGVkJyBu
ZWVkcyB0byBiZSBzdXBwb3J0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTU1Zjg5OTQ0NjAwZDZhYWYxZGNjYmFh
OTk1NWQxZTBmMzViOTIwZC4uZGY3MTE1M2U4NDE1ZDBlZGQzYjQzZGUwMTVkNTAxOTRkYjczYjFh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMi0wMS0xMyAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBTZXJ2aWNlV29ya2VyQ2xpZW50Lmlk
IGEgVVVJRCBpbnN0ZWFkIG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJvbSBhIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzUwNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDaGFuZ2UgZmluZEJ5Q2xpZW50SWRlbnRpZmllciBpbnRvIGZpbmRCeVZpc2li
bGVDbGllbnRJZGVudGlmaWVyYW4gYW5kIG1ha2UgaXQgYXNuIGFzeW5jIHJlcGx5LgorICAgICAg
ICBVcGRhdGUgZmV0Y2ggZXZlbnQgY29kZSBwYXRoIHRvIHNlbmQgdGhlIHZpc2libGUgSURzIG9m
IHRoZSBGZXRjaEV2ZW50IGZyb20gbmV0d29yayBwcm9jZXNzIHRvIHdvcmtlciBjb250ZXh0IHBy
b2Nlc3MuCisgICAgICAgIFdlIHN0b3JlIHRoZXNlIElEcyBpbiBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIgc28gdGhhdCB3ZSBjYW4gY2hhbmdlIHRoZW0gaW4gY2FzZSBvZiByZWRpcmVjdGlvbiBmb3Ig
bmF2aWdhdGlvbnMuIAorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluOgorCiAyMDIyLTAxLTEyICBGcsOpZMOpcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFByb3RlY3QgRG9jdW1lbnRMb2FkZXIgd2hlbiBhIHJlZmVyZW5jZSB0byBp
dHMgbWVtYmVycyBpcyB1c2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVVJRC5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9VVUlELmNwcAppbmRleCBmMWQwMDBjYzg1NWQzNTk0ZTFmNTVlOGU0
NDUzZWUzYjk3ZWFhOTE3Li5hY2I5NDdmNTdhMDUxMzQzZDY3ODc4NDBlNDZjZDY0OWYyYTM2ZGZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VVUlELmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9VVUlELmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+
CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0hleE51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNv
bnZlcnNpb24uaD4KIAogI2lmIE9TKERBUldJTikKICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CkBA
IC00NSw3ICs0NiwxMSBAQCBuYW1lc3BhY2UgV1RGIHsKIFVVSUQ6OlVVSUQoKQogewogICAgIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKG1fZGF0YSkgPT0gMTYpOwotICAgIGNyeXB0b2dyYXBoaWNhbGx5
UmFuZG9tVmFsdWVzKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KCZtX2RhdGEpLCAx
Nik7CisgICAgYXV0byogZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KCZt
X2RhdGEpOworICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKGRhdGEsIDE2KTsKKyAg
ICAvLyBXZSBzYW5pdGl6ZSB0aGUgdmFsdWUgc28gYXMgbm90IGxvb3NpbmcgYW55IGRhdGEgd2hl
biBnb2luZyB0byBWZXJzaW9uIDQgVVVJRHMuCisgICAgZGF0YVs1XSAmPSAweDBmOworICAgIGRh
dGFbMTFdICY9IDB4Y2Y7CiB9CiAKIHVuc2lnbmVkIFVVSUQ6Omhhc2goKSBjb25zdApAQCAtNTMs
MTAgKzU4LDkgQEAgdW5zaWduZWQgVVVJRDo6aGFzaCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmlu
Z0hhc2hlcjo6aGFzaE1lbW9yeShyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIq
PigmbV9kYXRhKSwgMTYpOwogfQogCi1TdHJpbmcgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
CitTdHJpbmcgVVVJRDo6dG9TdHJpbmcoKSBjb25zdAogewotICAgIHVuc2lnbmVkIHJhbmRvbURh
dGFbNF07Ci0gICAgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMocmVpbnRlcnByZXRfY2Fz
dDx1bnNpZ25lZCBjaGFyKj4ocmFuZG9tRGF0YSksIHNpemVvZihyYW5kb21EYXRhKSk7CisgICAg
YXV0byogcmFuZG9tRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQqPigmbV9k
YXRhKTsKIAogICAgIC8vIEZvcm1hdCBhcyBWZXJzaW9uIDQgVVVJRC4KICAgICByZXR1cm4gbWFr
ZVN0cmluZygKQEAgLTc0LDYgKzc4LDY1IEBAIFN0cmluZyBjcmVhdGVDYW5vbmljYWxVVUlEU3Ry
aW5nKCkKICAgICApOwogfQogCitzdGQ6Om9wdGlvbmFsPFVVSUQ+IFVVSUQ6OnBhcnNlKFN0cmlu
Z1ZpZXcgdmFsdWUpCit7CisgICAgLy8gVmVyc2lvbiA0IFVVSURzIGhhdmUgdGhlIGZvcm0geHh4
eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4IHdpdGggaGV4YWRlY2ltYWwgZGlnaXRz
IGZvciB4IGFuZCBvbmUgb2YgOCwgOSwgQSwgb3IgQiBmb3IgeS4KKyAgICBpZiAodmFsdWUubGVu
Z3RoKCkgIT0gMzYpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAodmFsdWVbOF0gIT0g
Jy0nIHx8IHZhbHVlWzEzXSAhPSAnLScgIHx8IHZhbHVlWzE0XSAhPSAnNCcgfHwgdmFsdWVbMThd
ICE9ICctJyB8fCB2YWx1ZVsyM10gIT0gJy0nKQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
dW5zaWduZWQgeSA9IHZhbHVlWzE5XTsKKyAgICBpZiAoeSA9PSAnOCcgfHwgeSA9PSAnOScpCisg
ICAgICAgIHkgPSB5IC0gJzgnOworICAgIGVsc2UgaWYgKHkgPT0gJ2EnIHx8IHkgPT0gJ0EnKQor
ICAgICAgICB5ID0gMjsKKyAgICBlbHNlIGlmICh5ID09ICdiJyB8fCB5ID09ICdCJykKKyAgICAg
ICAgeSA9IDM7CisgICAgZWxzZQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBmaXJz
dFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1ZS5zdWJzdHJpbmcoMCwgOCksIDE2
KTsKKyAgICBpZiAoIWZpcnN0VmFsdWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRv
IHNlY29uZFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1ZS5zdWJzdHJpbmcoOSwg
NCksIDE2KTsKKyAgICBpZiAoIXNlY29uZFZhbHVlKQorICAgICAgICByZXR1cm4geyB9OworCisg
ICAgYXV0byB0aGlyZFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1ZS5zdWJzdHJp
bmcoMTUsIDMpLCAxNik7CisgICAgaWYgKCF0aGlyZFZhbHVlKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgYXV0byBmb3VydGhWYWx1ZSA9IHBhcnNlSW50ZWdlcjx1bnNpZ25lZD4odmFsdWUu
c3Vic3RyaW5nKDIwLCAzKSwgMTYpOworICAgIGlmICghZm91cnRoVmFsdWUpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBhdXRvIGZpZnRoVmFsdWUgPSBwYXJzZUludGVnZXI8dW5zaWduZWQ+
KHZhbHVlLnN1YnN0cmluZygyNCwgNCksIDE2KTsKKyAgICBpZiAoIWZpZnRoVmFsdWUpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIHNpeHRoVmFsdWUgPSBwYXJzZUludGVnZXI8dW5z
aWduZWQ+KHZhbHVlLnN1YnN0cmluZygyOCwgOCksIDE2KTsKKyAgICBpZiAoIXNpeHRoVmFsdWUp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBVSW50MTI4SW1wbCB1dWlkVmFsdWU7CisKKyAg
ICBhdXRvKiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KCZ1dWlkVmFsdWUpOwor
ICAgIGRhdGFbMF0gPSAqZmlyc3RWYWx1ZTsKKyAgICBkYXRhWzFdID0gKCpzZWNvbmRWYWx1ZSA8
PCAxNikgfCAqdGhpcmRWYWx1ZTsKKyAgICBkYXRhWzJdID0gKCgqZm91cnRoVmFsdWUgPDwgMTYp
IHwgKmZpZnRoVmFsdWUpICsgKHkgPDwgMzApOworICAgIGRhdGFbM10gPSAqc2l4dGhWYWx1ZTsK
KworICAgIHJldHVybiBVVUlEKFdURk1vdmUodXVpZFZhbHVlKSk7Cit9CisKK1N0cmluZyBjcmVh
dGVDYW5vbmljYWxVVUlEU3RyaW5nKCkKK3sKKyAgICByZXR1cm4gVVVJRDo6Y3JlYXRlKCkudG9T
dHJpbmcoKTsKK30KKwogU3RyaW5nIGJvb3RTZXNzaW9uVVVJRFN0cmluZygpCiB7CiAjaWYgT1Mo
REFSV0lOKQpAQCAtOTUsMzEgKzE1OCw3IEBAIFN0cmluZyBib290U2Vzc2lvblVVSURTdHJpbmco
KQogCiBib29sIGlzVmVyc2lvbjRVVUlEKFN0cmluZ1ZpZXcgdmFsdWUpCiB7Ci0gICAgLy8gVmVy
c2lvbiA0IFVVSURzIGhhdmUgdGhlIGZvcm0geHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4
eHh4eHh4IHdpdGggaGV4YWRlY2ltYWwgZGlnaXRzIGZvciB4IGFuZCBvbmUgb2YgOCwgOSwgQSwg
b3IgQiBmb3IgeS4KLSAgICBpZiAodmFsdWUubGVuZ3RoKCkgIT0gMzYpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGZvciAoYXV0byBjcHRyID0gMDsgY3B0ciA8IDM2OyArK2NwdHIpIHsK
LSAgICAgICAgaWYgKGNwdHIgPT0gOCB8fCBjcHRyID09IDEzIHx8IGNwdHIgPT0gMTggfHwgY3B0
ciA9PSAyMykgewotICAgICAgICAgICAgaWYgKHZhbHVlW2NwdHJdICE9ICctJykKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoY3B0ciA9PSAxNCkgewotICAgICAgICAgICAgaWYgKHZhbHVlW2NwdHJdICE9
ICc0JykKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY3B0ciA9PSAxOSkgewotICAgICAgICAgICAgYXV0
byB5ID0gdmFsdWVbY3B0cl07Ci0gICAgICAgICAgICBpZiAoeSAhPSAnOCcgJiYgeSAhPSAnOScg
JiYgeSAhPSAnYScgJiYgeSAhPSAnQScgJiYgeSAhPSAnYicgJiYgeSAhPSAnQicpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQodmFsdWVbY3B0cl0pKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gISFVVUlE
OjpwYXJzZSh2YWx1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVVVJRC5oIGIvU291cmNlL1dURi93dGYvVVVJRC5oCmluZGV4IDU4YTUyNGE2
NGQzNmE2MzExMDRlZmExMmRjOGNlNmRhMjM2Y2ZkMGYuLjJkODQyZDI5MzNjOGEzODA0NjE1ZGMw
MDAwMTk0MWZhY2MwMzJlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9VVUlELmgKQEAgLTQ1LDYgKzQ1LDggQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gVVVJRCB7IH07CiAgICAgfQogCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFVVSUQ+IHBhcnNlKFN0cmluZ1ZpZXcpOworCiAgICAgZXhwbGljaXQg
VVVJRChTcGFuPGNvbnN0IHVpbnQ4X3QsIDE2PiBzcGFuKQogICAgIHsKICAgICAgICAgbWVtY3B5
KCZtX2RhdGEsIHNwYW4uZGF0YSgpLCAxNik7CkBAIC04MCw2ICs4Miw3IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEg
PT0gMTsgfQogICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwogCiBwcml2YXRl
OgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBVVUlEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYi1sb2Nrcy9XZWJMb2NrUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9ja1JlZ2lzdHJ5LmNwcAppbmRleCBmNTUwNzgwYTgx
ZDYyNGYzMWQwZTE4MzM5M2U1NTE0MzUzNDBhMWMyLi44ZjdjYzI2NmMwYzMzYjBiMzkzNzUwMTUz
NmY5YzQwN2FiY2E3ZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYi1s
b2Nrcy9XZWJMb2NrUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
LWxvY2tzL1dlYkxvY2tSZWdpc3RyeS5jcHAKQEAgLTIzNiwxMSArMjM2LDExIEBAIHZvaWQgTG9j
YWxXZWJMb2NrUmVnaXN0cnk6OlBlck9yaWdpblJlZ2lzdHJ5OjpzbmFwc2hvdChDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlCiAgICAgV2ViTG9ja01hbmFnZXI6OlNuYXBzaG90IHNuYXBzaG90Owog
ICAgIGZvciAoYXV0byYgcGFpciA6IG1fbG9ja1JlcXVlc3RRdWV1ZU1hcCkgewogICAgICAgICBm
b3IgKGF1dG8mIHJlcXVlc3QgOiBwYWlyLnZhbHVlKQotICAgICAgICAgICAgc25hcHNob3QucGVu
ZGluZy5hcHBlbmQoeyBwYWlyLmtleSwgcmVxdWVzdC5tb2RlLCByZXF1ZXN0LmNsaWVudElELnRv
U3RyaW5nKCkgfSk7CisgICAgICAgICAgICBzbmFwc2hvdC5wZW5kaW5nLmFwcGVuZCh7IHBhaXIu
a2V5LCByZXF1ZXN0Lm1vZGUsIHJlcXVlc3QuY2xpZW50SUQudG9WaXNpYmxlU3RyaW5nKCkgfSk7
CiAgICAgfQogICAgIGZvciAoYXV0byYgcGFpciA6IG1faGVsZExvY2tzKSB7CiAgICAgICAgIGZv
ciAoYXV0byYgbG9ja0luZm8gOiBwYWlyLnZhbHVlKQotICAgICAgICAgICAgc25hcHNob3QuaGVs
ZC5hcHBlbmQoeyBwYWlyLmtleSwgbG9ja0luZm8ubW9kZSwgbG9ja0luZm8uY2xpZW50SUQudG9T
dHJpbmcoKSB9KTsKKyAgICAgICAgICAgIHNuYXBzaG90LmhlbGQuYXBwZW5kKHsgcGFpci5rZXks
IGxvY2tJbmZvLm1vZGUsIGxvY2tJbmZvLmNsaWVudElELnRvVmlzaWJsZVN0cmluZygpIH0pOwog
ICAgIH0KIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc25hcHNob3QpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA0NjFiOTk3
OGFkOWI3ZTE1N2E0OTFjMDdlM2M5ZTcwYWY0MjFkZDg1Li4yOWRjZWVmNTMzM2Y2OWRmMmU1ZjMw
ZWRlZmRkNjEzNTc3ZmU2NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogfTsKIAogU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCi0gICAgOiBtX2lkZW50
aWZpZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2Fm
ZSgpKQorICAgIDogbV9pZGVudGlmaWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpKQogewogICAgIExvY2tlciBsb2NrZXIgeyBhbGxTY3JpcHRFeGVjdXRpb25D
b250ZXh0c01hcExvY2sgfTsKICAgICBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmFk
ZChtX2lkZW50aWZpZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKaW5kZXggMzJjODhiNWQzNmRiMDczODliN2ZjNjAzODRhZTJjNjcxYzgxODA5MS4uZWY3
NjNiNzkxMjkzNDk4ODVlNmZlNGZhZTkzMWQ2YzJhODY4MTFhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0yMDk1LDcgKzIwOTUsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpsb2FkTWFpblJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmICghbV90ZW1wb3JhcnlTZXJ2aWNlV29y
a2VyQ2xpZW50KSB7CiAgICAgICAgIC8vIFRoZSBtYWluIG5hdmlnYXRpb24gbG9hZCB3aWxsIHRy
aWdnZXIgdGhlIHJlZ2lzdHJhdGlvbiBvZiB0aGUgdGVtcCBjbGllbnQuCi0gICAgICAgIG1fdGVt
cG9yYXJ5U2VydmljZVdvcmtlckNsaWVudCA9IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKKyAgICAgICAgbV90ZW1wb3JhcnlTZXJ2aWNlV29y
a2VyQ2xpZW50ID0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI6OmdlbmVyYXRlKCk7
CiAgICAgICAgIEFTU0VSVCghdGVtcG9yYXJ5SWRlbnRpZmllclRvTG9hZGVyTWFwKCkuY29udGFp
bnMoKm1fdGVtcG9yYXJ5U2VydmljZVdvcmtlckNsaWVudCkpOwogICAgICAgICB0ZW1wb3JhcnlJ
ZGVudGlmaWVyVG9Mb2FkZXJNYXAoKS5hZGQoKm1fdGVtcG9yYXJ5U2VydmljZVdvcmtlckNsaWVu
dCwgdGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFn
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KaW5kZXggN2FjZDU5
N2FmYzgwNzc5OGJhZjIwNDg5ODY3ZDI2MjZlYjc4MjRhMS4uODIwNThhZmJhMjNhMWQyZTg2NDgx
NmE3N2QwZDc3NzNhYWNkMmVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
UGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCkBAIC04
MSw3ICs4MSw3IEBAIHZvaWQgUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICAgICAgICAg
IFdURkxvZ0Fsd2F5cygiJXUgbGl2ZSBkb2N1bWVudHM6IiwgRG9jdW1lbnQ6OmFsbERvY3VtZW50
cygpLnNpemUoKSk7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50IDogRG9j
dW1lbnQ6OmFsbERvY3VtZW50cygpKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZG9j
dW1lbnRUeXBlID0gaXM8U1ZHRG9jdW1lbnQ+KGRvY3VtZW50KSA/ICJTVkdEb2N1bWVudCIgOiAi
RG9jdW1lbnQiOwotICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXMgJXAgJXMgKHJlZkNv
dW50ICVkLCByZWZlcmVuY2luZ05vZGVDb3VudCAlZCkgJXMiLCBkb2N1bWVudFR5cGUsIGRvY3Vt
ZW50LCBkb2N1bWVudC0+aWRlbnRpZmllcigpLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgZG9j
dW1lbnQtPnJlZkNvdW50KCksIGRvY3VtZW50LT5yZWZlcmVuY2luZ05vZGVDb3VudCgpLCBkb2N1
bWVudC0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgV1RG
TG9nQWx3YXlzKCIlcyAlcCAlcyAocmVmQ291bnQgJWQsIHJlZmVyZW5jaW5nTm9kZUNvdW50ICVk
KSAlcyIsIGRvY3VtZW50VHlwZSwgZG9jdW1lbnQsIGRvY3VtZW50LT5pZGVudGlmaWVyKCkudG9E
ZWJ1Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGRvY3VtZW50LT5yZWZDb3VudCgpLCBkb2N1bWVu
dC0+cmVmZXJlbmNpbmdOb2RlQ291bnQoKSwgZG9jdW1lbnQtPnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb2Nlc3NRdWFsaWZpZWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Byb2Nlc3NRdWFsaWZpZWQuaAppbmRleCAyODVhNDI1NTM5MmNhN2Rl
ZTY5OGYxY2JhNzMzMTJjYTliMjNiYTJiLi5hZTk4NzIzMmZhYjU4NjkyNWFlMGNiMTUyZGYxOTNm
YjM2M2MyYmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9jZXNzUXVh
bGlmaWVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvY2Vzc1F1YWxpZmllZC5o
CkBAIC02OSw2ICs2OSwxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9vYmpl
Y3Q7CiAgICAgfQorICAgIGNvbnN0IFQmIG9iamVjdEhhc2goKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fb2JqZWN0OworICAgIH0KIAogICAgIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nl
c3NJZGVudGlmaWVyKCkgY29uc3QKICAgICB7CkBAIC05Myw3ICs5Nyw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBQcm9jZXNzUXVhbGlmaWVkIGdlbmVyYXRlVGhyZWFkU2FmZSgpIHsgcmV0dXJu
IHsgVDo6Z2VuZXJhdGVUaHJlYWRTYWZlKCksIFByb2Nlc3M6OmlkZW50aWZpZXIoKSB9OyB9CiAg
ICAgc3RhdGljIFByb2Nlc3NRdWFsaWZpZWQgZ2VuZXJhdGUoKSB7IHJldHVybiB7IFQ6OmdlbmVy
YXRlKCksIFByb2Nlc3M6OmlkZW50aWZpZXIoKSB9OyB9Ci0gICAgU3RyaW5nIHRvU3RyaW5nKCkg
Y29uc3QgeyByZXR1cm4gbWFrZVN0cmluZyhtX3Byb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCks
ICctJywgbV9vYmplY3QudG9VSW50NjQoKSk7IH0KKyAgICBTdHJpbmcgdG9EZWJ1Z1N0cmluZygp
IGNvbnN0IHsgcmV0dXJuIG1ha2VTdHJpbmcobV9wcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgp
LCAnLScsIG1fb2JqZWN0LnRvVUludDY0KCkpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdCB7IGVuY29kZXIgPDwg
bV9vYmplY3QgPDwgbV9wcm9jZXNzSWRlbnRpZmllcjsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NRdWFsaWZpZWQ+IGRlY29kZShE
ZWNvZGVyJik7CkBAIC0xMjAsMTQgKzEyNCwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVy
PiBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NRdWFsaWZpZWQ8VD4+IFByb2Nlc3NRdWFsaWZpZWQ8VAog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBpbmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgUHJvY2Vzc1F1YWxpZmllZDxUPiYgcHJvY2Vzc1F1YWxpZmllZCkK
IHsKLSAgICB0cyA8PCAiUHJvY2Vzc1F1YWxpZmllZCgiIDw8IHByb2Nlc3NRdWFsaWZpZWQub2Jq
ZWN0KCkgPDwgIiwgIiA8PCBwcm9jZXNzUXVhbGlmaWVkLnByb2Nlc3NJZGVudGlmaWVyKCkgPDwg
JyknOworICAgIHRzIDw8ICJQcm9jZXNzUXVhbGlmaWVkKCIgPDwgcHJvY2Vzc1F1YWxpZmllZC50
b0RlYnVnU3RyaW5nKCkgPDwgJyknOwogICAgIHJldHVybiB0czsKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiBpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IFByb2Nlc3NR
dWFsaWZpZWQ8VD4mIHByb2Nlc3NRdWFsaWZpZWQpCiB7Ci0gICAgYWRkKGhhc2hlciwgcHJvY2Vz
c1F1YWxpZmllZC5vYmplY3QoKSk7CisgICAgYWRkKGhhc2hlciwgcHJvY2Vzc1F1YWxpZmllZC5v
YmplY3RIYXNoKCkpOwogICAgIGFkZChoYXNoZXIsIHByb2Nlc3NRdWFsaWZpZWQucHJvY2Vzc0lk
ZW50aWZpZXIoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oCmluZGV4IGUzNmY0MjI4MzAxNzkx
ZmNlM2UzNzhiZjA2MTE1NTViNjk5Y2I3OWEuLmQ1OGM0OWVjMmJlNjM4NjE5NzY2ZThkMDA0ZDJl
NDJlN2NiMjJiNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaApAQCAtMjcsMTAgKzI3LDk3IEBACiAK
ICNpbmNsdWRlICJQcm9jZXNzUXVhbGlmaWVkLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvVVVJRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXJUeXBlIHsgfTsKLXVzaW5nIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyID0gUHJvY2Vzc1F1YWxpZmllZDxPYmplY3RJZGVudGlmaWVy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyVHlwZT4+OwordGVtcGxhdGUgPD4KK2Ns
YXNzIFByb2Nlc3NRdWFsaWZpZWQ8VVVJRD4geworcHVibGljOgorICAgIFByb2Nlc3NRdWFsaWZp
ZWQoKQorICAgICAgICA6IG1fb2JqZWN0KFdURjo6VUludDEyOEltcGwoMCkpCisgICAgeworICAg
IH0KKworICAgIFByb2Nlc3NRdWFsaWZpZWQoVVVJRCYmIG9iamVjdCwgUHJvY2Vzc0lkZW50aWZp
ZXIgcHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAgIDogbV9vYmplY3QoV1RGTW92ZShvYmplY3Qp
KQorICAgICAgICAsIG1fcHJvY2Vzc0lkZW50aWZpZXIocHJvY2Vzc0lkZW50aWZpZXIpCisgICAg
eworICAgIH0KKworICAgIFByb2Nlc3NRdWFsaWZpZWQoY29uc3QgVVVJRCYgb2JqZWN0LCBQcm9j
ZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgOiBtX29iamVjdChvYmpl
Y3QpCisgICAgICAgICwgbV9wcm9jZXNzSWRlbnRpZmllcihwcm9jZXNzSWRlbnRpZmllcikKKyAg
ICB7CisgICAgfQorCisgICAgUHJvY2Vzc1F1YWxpZmllZChXVEY6Okhhc2hUYWJsZURlbGV0ZWRW
YWx1ZVR5cGUpCisgICAgICAgIDogbV9vYmplY3QoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUp
CisgICAgICAgICwgbV9wcm9jZXNzSWRlbnRpZmllcihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1
ZSkKKyAgICB7CisgICAgfQorCisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gISFtX3Byb2Nlc3NJZGVudGlmaWVyOworICAgIH0KKworICAgIGNvbnN0IFVV
SUQmIG9iamVjdCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vYmplY3Q7CisgICAg
fQorCisgICAgdW5zaWduZWQgb2JqZWN0SGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9vYmplY3QuaGFzaCgpOworICAgIH0KKworICAgIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nl
c3NJZGVudGlmaWVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Byb2Nlc3NJZGVu
dGlmaWVyOworICAgIH0KKworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcHJvY2Vzc0lkZW50aWZpZXIuaXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUoKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHJvY2Vz
c1F1YWxpZmllZCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vYmplY3Qg
PT0gb3RoZXIubV9vYmplY3QKKyAgICAgICAgICAgICYmIG1fcHJvY2Vzc0lkZW50aWZpZXIgPT0g
b3RoZXIubV9wcm9jZXNzSWRlbnRpZmllcjsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgUHJvY2Vzc1F1YWxpZmllZCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisgICAgc3RhdGljIFByb2Nlc3NRdWFsaWZp
ZWQgZ2VuZXJhdGUoKSB7IHJldHVybiB7IFVVSUQ6OmNyZWF0ZSgpLCBQcm9jZXNzOjppZGVudGlm
aWVyKCkgfTsgfQorICAgIFN0cmluZyB0b0RlYnVnU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbWFr
ZVN0cmluZyhtX3Byb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCksICctJywgbV9vYmplY3QudG9T
dHJpbmcoKSk7IH0KKyAgICBTdHJpbmcgdG9WaXNpYmxlU3RyaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9vYmplY3QudG9TdHJpbmcoKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QgeyBlbmNvZGVyIDw8IG1fb2JqZWN0
IDw8IG1fcHJvY2Vzc0lkZW50aWZpZXI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVy
PiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm9jZXNzUXVhbGlmaWVkPiBkZWNvZGUoRGVjb2RlciYp
OworCitwcml2YXRlOgorICAgIFVVSUQgbV9vYmplY3Q7CisgICAgUHJvY2Vzc0lkZW50aWZpZXIg
bV9wcm9jZXNzSWRlbnRpZmllcjsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0
ZDo6b3B0aW9uYWw8UHJvY2Vzc1F1YWxpZmllZDxVVUlEPj4gUHJvY2Vzc1F1YWxpZmllZDxVVUlE
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxVVUlEPiBv
YmplY3Q7CisgICAgZGVjb2RlciA+PiBvYmplY3Q7CisgICAgaWYgKCFvYmplY3QpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxQcm9jZXNzSWRlbnRpZmll
cj4gcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBwcm9jZXNzSWRlbnRpZmllcjsK
KyAgICBpZiAoIXByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIHJldHVybiB7IHsgKm9iamVjdCwgKnByb2Nlc3NJZGVudGlmaWVyIH0gfTsKK30KKwor
dXNpbmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgPSBQcm9jZXNzUXVhbGlmaWVk
PFVVSUQ+OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMzVhNjZl
MDk1ZTc1YTEzNDc5YzdiMWM1NjJjZTExOTFhYjFlZTE5NC4uMTM5OGY1ZGRhZGVkMTM3MGRhY2Zk
MGZjN2FkYThlOTMzNTVkYTdmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApA
QCAtMjc2MiwxNCArMjc2MiwxNiBAQCB1bnNpZ25lZCBJbnRlcm5hbHM6Om51bWJlck9mUmVzaXpl
T2JzZXJ2ZXJzKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKICAgICByZXR1cm4gZG9j
dW1lbnQubnVtYmVyT2ZSZXNpemVPYnNlcnZlcnMoKTsKIH0KIAotdWludDY0X3QgSW50ZXJuYWxz
Ojpkb2N1bWVudElkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAorU3Ry
aW5nIEludGVybmFsczo6ZG9jdW1lbnRJZGVudGlmaWVyKGNvbnN0IERvY3VtZW50JiBkb2N1bWVu
dCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG9jdW1lbnQuaWRlbnRpZmllcigpLm9iamVjdCgpLnRv
VUludDY0KCk7CisgICAgcmV0dXJuIGRvY3VtZW50LmlkZW50aWZpZXIoKS5vYmplY3QoKS50b1N0
cmluZygpOwogfQogCi1ib29sIEludGVybmFsczo6aXNEb2N1bWVudEFsaXZlKHVpbnQ2NF90IGRv
Y3VtZW50SWRlbnRpZmllcikgY29uc3QKK2Jvb2wgSW50ZXJuYWxzOjppc0RvY3VtZW50QWxpdmUo
Y29uc3QgU3RyaW5nJiBkb2N1bWVudElkZW50aWZpZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIERv
Y3VtZW50OjphbGxEb2N1bWVudHNNYXAoKS5jb250YWlucyh7IG1ha2VPYmplY3RJZGVudGlmaWVy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyVHlwZT4oZG9jdW1lbnRJZGVudGlmaWVy
KSwgUHJvY2Vzczo6aWRlbnRpZmllcigpIH0pOworICAgIGF1dG8gdXVpZCA9IFVVSUQ6OnBhcnNl
KGRvY3VtZW50SWRlbnRpZmllcik7CisgICAgQVNTRVJUKHV1aWQpOworICAgIHJldHVybiB1dWlk
ID8gRG9jdW1lbnQ6OmFsbERvY3VtZW50c01hcCgpLmNvbnRhaW5zKHsgKnV1aWQsIFByb2Nlc3M6
OmlkZW50aWZpZXIoKSB9KSA6IGZhbHNlOwogfQogCiB1aW50NjRfdCBJbnRlcm5hbHM6OnN0b3Jh
Z2VBcmVhTWFwQ291bnQoKSBjb25zdApAQCAtMjgwOCw5ICsyODEwLDkgQEAgYm9vbCBJbnRlcm5h
bHM6OmlzQW55V29ya2xldEdsb2JhbFNjb3BlQWxpdmUoKSBjb25zdAogICAgIHJldHVybiBXb3Jr
bGV0R2xvYmFsU2NvcGU6Om51bWJlck9mV29ya2xldEdsb2JhbFNjb3BlcygpOwogfQogCi1TdHJp
bmcgSW50ZXJuYWxzOjpzZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihjb25zdCBEb2N1bWVu
dCYgZG9jdW1lbnQpIGNvbnN0CitTdHJpbmcgSW50ZXJuYWxzOjpzZXJ2aWNlV29ya2VyQ2xpZW50
SW50ZXJuYWxJZGVudGlmaWVyKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gZG9jdW1lbnQuaWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIGRv
Y3VtZW50LmlkZW50aWZpZXIoKS50b0RlYnVnU3RyaW5nKCk7CiB9CiAKIFJlZlB0cjxXaW5kb3dQ
cm94eT4gSW50ZXJuYWxzOjpvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcm
IHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDg4ZDFmOWZjNjdkYTBjM2M1
ODc5NjU5Njk1Yzc0ZGQ1NzJiZDkxYTYuLmZmMWNlZjk2ZDc4NGJhYTBlZWU1MTA1MTU5ODVjYmFk
ZDk3MzQ4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNDkwLDggKzQ5MCw4
IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIG51bWJlck9mUmVzaXplT2JzZXJ2ZXJzKGNvbnN0
IERvY3VtZW50JikgY29uc3Q7CiAKLSAgICB1aW50NjRfdCBkb2N1bWVudElkZW50aWZpZXIoY29u
c3QgRG9jdW1lbnQmKSBjb25zdDsKLSAgICBib29sIGlzRG9jdW1lbnRBbGl2ZSh1aW50NjRfdCBk
b2N1bWVudElkZW50aWZpZXIpIGNvbnN0OworICAgIFN0cmluZyBkb2N1bWVudElkZW50aWZpZXIo
Y29uc3QgRG9jdW1lbnQmKSBjb25zdDsKKyAgICBib29sIGlzRG9jdW1lbnRBbGl2ZShjb25zdCBT
dHJpbmcmIGRvY3VtZW50SWRlbnRpZmllcikgY29uc3Q7CiAKICAgICB1aW50NjRfdCBzdG9yYWdl
QXJlYU1hcENvdW50KCkgY29uc3Q7CiAKQEAgLTUwMyw3ICs1MDMsNyBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGlzQW55V29ya2xldEdsb2JhbFNjb3BlQWxpdmUoKSBjb25zdDsKIAotICAgIFN0cmlu
ZyBzZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYpIGNvbnN0Owor
ICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKGNvbnN0IERv
Y3VtZW50JikgY29uc3Q7CiAKICAgICBSZWZQdHI8V2luZG93UHJveHk+IG9wZW5EdW1teUluc3Bl
Y3RvckZyb250ZW5kKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIGNsb3NlRHVtbXlJbnNw
ZWN0b3JGcm9udGVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGY5
YTViYjgyMDk2MGM0MGFkMjQzZmU3ZDIyMGUxZWE3M2FlYjkyNDUuLmVkNDQzMTlmNTViZGIwMjJi
ZThiMTNlMDM5MDQ1YzFjMjhjOGYyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKQEAgLTkyMCw4ICs5MjAsOCBAQCB0eXBlZGVmIChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hSZXNw
b25zZSkgRmV0Y2hPYmplY3Q7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gYm9vbGVh
biBpc01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZCgpOwogICAgIFtDb25kaXRp
b25hbD1NRURJQV9TVFJFQU1dIGJvb2xlYW4gc2hvdWxkQXVkaW9UcmFja1BsYXkoQXVkaW9UcmFj
ayB0cmFjayk7CiAKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgZG9jdW1lbnRJZGVudGlmaWVyKERv
Y3VtZW50IGRvY3VtZW50KTsKLSAgICBib29sZWFuIGlzRG9jdW1lbnRBbGl2ZSh1bnNpZ25lZCBs
b25nIGxvbmcgZG9jdW1lbnRJZGVudGlmaWVyKTsKKyAgICBET01TdHJpbmcgZG9jdW1lbnRJZGVu
dGlmaWVyKERvY3VtZW50IGRvY3VtZW50KTsKKyAgICBib29sZWFuIGlzRG9jdW1lbnRBbGl2ZShE
T01TdHJpbmcgZG9jdW1lbnRJZGVudGlmaWVyKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGxvbmcgc3RvcmFnZUFyZWFNYXBDb3VudDsKIApAQCAtOTMzLDcgKzkzMyw3
IEBAIHR5cGVkZWYgKEZldGNoUmVxdWVzdCBvciBGZXRjaFJlc3BvbnNlKSBGZXRjaE9iamVjdDsK
ICAgICBib29sZWFuIGlzQW55V29ya2xldEdsb2JhbFNjb3BlQWxpdmUoKTsKIAogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBsb25nIHByb2Nlc3NJZGVudGlmaWVyOwotICAgIERPTVN0cmluZyBzZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihEb2N1bWVudCBkb2N1bWVudCk7CisgICAgRE9NU3Ry
aW5nIHNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIoRG9jdW1lbnQgZG9jdW1l
bnQpOwogICAgIFByb21pc2U8dW5kZWZpbmVkPiBzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2soKTsK
ICAgICBQcm9taXNlPGRvdWJsZT4gc2VuZEgyUGluZyhET01TdHJpbmcgdXJsKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKaW5kZXgg
ZjhkNmM3YWFiMjBkZDgyOTQ5ZjM3YWI5MTUwZTg5NWQ3NWM1OWU0MC4uZjM0NGNkYzEzODBiNjk2
NmQ0ODcwMjM4NDAwODM5NjlhZjQ5ZWY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiUHVzaFN1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb25EYXRhLmgi
CiAjaW5jbHVkZSAiU1dDb250ZXh0TWFuYWdlci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJD
bGllbnQuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL1Byb2Nlc3NJRC5oPgogCkBAIC0xOTMsNiArMTk0LDExIEBAIGJvb2wgU2VydmljZVdv
cmtlckludGVybmFsczo6ZmV0Y2hFdmVudElzU2FtZVNpdGUoRmV0Y2hFdmVudCYgZXZlbnQpCiAg
ICAgcmV0dXJuIGV2ZW50LnJlcXVlc3QoKS5pbnRlcm5hbFJlcXVlc3QoKS5pc1NhbWVTaXRlKCk7
CiB9CiAKK1N0cmluZyBTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpzZXJ2aWNlV29ya2VyQ2xpZW50
SW50ZXJuYWxJZGVudGlmaWVyKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnQmIGNsaWVudCkKK3sK
KyAgICByZXR1cm4gY2xpZW50LmlkZW50aWZpZXIoKS50b0RlYnVnU3RyaW5nKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvU2VydmljZVdvcmtlckludGVybmFscy5oCmluZGV4IGJhNjcyZDUyZmIxNWFjNzJlMTA2OGQ3
ZDcyNWY0NTEzZjdkMDc4OTIuLmY1NTY3YThlMGI2ZTA3YmJmNzQ5NDAzMTNhOWE0YzI3NjY5MDNh
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVy
bmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFs
cy5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIEZldGNoRXZlbnQ7CiBjbGFzcyBGZXRjaFJlc3Bv
bnNlOwogY2xhc3MgUHVzaFN1YnNjcmlwdGlvbjsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CitjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExU
eXBlPiBjbGFzcyBET01Qcm9taXNlRGVmZXJyZWQ7CiAKQEAgLTcxLDYgKzcyLDggQEAgcHVibGlj
OgogCiAgICAgYm9vbCBmZXRjaEV2ZW50SXNTYW1lU2l0ZShGZXRjaEV2ZW50Jik7CiAKKyAgICBT
dHJpbmcgc2VydmljZVdvcmtlckNsaWVudEludGVybmFsSWRlbnRpZmllcihjb25zdCBTZXJ2aWNl
V29ya2VyQ2xpZW50Jik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2VydmljZVdvcmtlcklu
dGVybmFscyhTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCmluZGV4IDU4ZmVkYzEwZGVhYTlk
ZGM4MjI5OWZkOGM1ZDFlNTQ2ODc4NTA1MWYuLjllM2RkNjg1ZDJhNTkyMGE0NjZkZThiZmM5OTkw
MGZkZDM4ZWJhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdv
cmtlckludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29y
a2VySW50ZXJuYWxzLmlkbApAQCAtNTEsNCArNTEsNiBAQAogICAgIFB1c2hTdWJzY3JpcHRpb24g
Y3JlYXRlUHVzaFN1YnNjcmlwdGlvbihVU1ZTdHJpbmcgZW5kcG9pbnQsIEVwb2NoVGltZVN0YW1w
PyBleHBpcmF0aW9uVGltZSwgQXJyYXlCdWZmZXIgc2VydmVyVkFQSURQdWJsaWNLZXksIEFycmF5
QnVmZmVyIGNsaWVudEVDREhQdWJsaWNLZXksIEFycmF5QnVmZmVyIGF1dGgpOwogCiAgICAgYm9v
bGVhbiBmZXRjaEV2ZW50SXNTYW1lU2l0ZShGZXRjaEV2ZW50IGV2ZW50KTsKKworICAgIERPTVN0
cmluZyBzZXJ2aWNlV29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJD
bGllbnQgY2xpZW50KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvRmV0Y2hFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0
Y2hFdmVudC5jcHAKaW5kZXggNDdiZTJhZTAyY2IzZWQ0NjdiYTdmOWZhOGU0NmFkZGI0MzhiZjg3
MS4uNTVkMzMwN2E0NDA5ZDdjNmFiZjg4NTg3ODg0OWJiNWY5Y2MxNzk0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmNwcApAQCAtNjEsNyArNjEsNyBA
QCBGZXRjaEV2ZW50OjpGZXRjaEV2ZW50KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCwgY29uc3QgQXRvbVN0cmluZyYgdHlwZQogICAgIDogRXh0ZW5kYWJsZUV2ZW50KHR5cGUsIGlu
aXRpYWxpemVyLCBpc1RydXN0ZWQpCiAgICAgLCBtX3JlcXVlc3QoaW5pdGlhbGl6ZXIucmVxdWVz
dC5yZWxlYXNlTm9uTnVsbCgpKQogICAgICwgbV9jbGllbnRJZChXVEZNb3ZlKGluaXRpYWxpemVy
LmNsaWVudElkKSkKLSAgICAsIG1fcmVzZXJ2ZWRDbGllbnRJZChXVEZNb3ZlKGluaXRpYWxpemVy
LnJlc2VydmVkQ2xpZW50SWQpKQorICAgICwgbV9yZXN1bHRpbmdDbGllbnRJZChXVEZNb3ZlKGlu
aXRpYWxpemVyLnJlc3VsdGluZ0NsaWVudElkKSkKICAgICAsIG1fdGFyZ2V0Q2xpZW50SWQoV1RG
TW92ZShpbml0aWFsaXplci50YXJnZXRDbGllbnRJZCkpCiAgICAgLCBtX2hhbmRsZWQocmV0cmll
dmVIYW5kbGVkUHJvbWlzZShnbG9iYWxPYmplY3QsIFdURk1vdmUoaW5pdGlhbGl6ZXIuaGFuZGxl
ZCkpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNo
RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmgKaW5k
ZXggMWNkNDYxNmVmMzQ0NTNlY2NiZWJmMGM2MWI2NGU2ZDhiNTg5MDcwNS4uYzUzZmQ1NmE5ZmU4
MjkzZjc4NzE5MTg2NmJlNjRkOTVhNmIwZTA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvRmV0Y2hFdmVudC5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBzdHJ1
Y3QgSW5pdCA6IEV4dGVuZGFibGVFdmVudEluaXQgewogICAgICAgICBSZWZQdHI8RmV0Y2hSZXF1
ZXN0PiByZXF1ZXN0OwogICAgICAgICBTdHJpbmcgY2xpZW50SWQ7Ci0gICAgICAgIFN0cmluZyBy
ZXNlcnZlZENsaWVudElkOworICAgICAgICBTdHJpbmcgcmVzdWx0aW5nQ2xpZW50SWQ7CiAgICAg
ICAgIFN0cmluZyB0YXJnZXRDbGllbnRJZDsKICAgICAgICAgUmVmUHRyPERPTVByb21pc2U+IGhh
bmRsZWQ7CiAgICAgfTsKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogCiAgICAgRmV0Y2hSZXF1
ZXN0JiByZXF1ZXN0KCkgeyByZXR1cm4gbV9yZXF1ZXN0LmdldCgpOyB9CiAgICAgY29uc3QgU3Ry
aW5nJiBjbGllbnRJZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50SWQ7IH0KLSAgICBjb25zdCBT
dHJpbmcmIHJlc2VydmVkQ2xpZW50SWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc2VydmVkQ2xpZW50
SWQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc3VsdGluZ0NsaWVudElkKCkgY29uc3QgeyByZXR1
cm4gbV9yZXN1bHRpbmdDbGllbnRJZDsgfQogICAgIGNvbnN0IFN0cmluZyYgdGFyZ2V0Q2xpZW50
SWQoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldENsaWVudElkOyB9CiAgICAgRE9NUHJvbWlzZSYg
aGFuZGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlZC5nZXQoKTsgfQogCkBAIC05Myw3ICs5
Myw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8RmV0Y2hSZXF1ZXN0PiBtX3JlcXVlc3Q7CiAgICAg
U3RyaW5nIG1fY2xpZW50SWQ7Ci0gICAgU3RyaW5nIG1fcmVzZXJ2ZWRDbGllbnRJZDsKKyAgICBT
dHJpbmcgbV9yZXN1bHRpbmdDbGllbnRJZDsKICAgICBTdHJpbmcgbV90YXJnZXRDbGllbnRJZDsK
IAogICAgIGJvb2wgbV9yZXNwb25kV2l0aEVudGVyZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaWRsIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaWRsCmluZGV4IDk2MDY1YzY4ODM0ODJi
MjA4ZGU4NDM0N2Y0N2ZkYmI4NDI1NzgxMTIuLjVhYWNjNWRlNWRhMzZmZTUyOTUzYmM4MWE0M2Ux
NmUwYzhiMjZjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9G
ZXRjaEV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hF
dmVudC5pZGwKQEAgLTM1LDcgKzM1LDcgQEAKICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0
cmlidXRlIEZldGNoUmVxdWVzdCByZXF1ZXN0OwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBFbmFibGVkQnlTZXR0aW5nPVNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZEVuYWJsZWRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlPGFueT4gcHJlbG9hZFJlc3BvbnNl
OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgY2xpZW50SWQ7Ci0gICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyByZXNlcnZlZENsaWVudElkOworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgcmVzdWx0aW5nQ2xpZW50SWQ7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyB0YXJnZXRDbGllbnRJZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgUHJv
bWlzZTx1bmRlZmluZWQ+IGhhbmRsZWQ7CiAKQEAgLTQ1LDcgKzQ1LDcgQEAKIGRpY3Rpb25hcnkg
RmV0Y2hFdmVudEluaXQgOiBFeHRlbmRhYmxlRXZlbnRJbml0IHsKICAgICByZXF1aXJlZCBGZXRj
aFJlcXVlc3QgcmVxdWVzdDsKICAgICBET01TdHJpbmcgY2xpZW50SWQgPSAiIjsKLSAgICBET01T
dHJpbmcgcmVzZXJ2ZWRDbGllbnRJZCA9ICIiOworICAgIERPTVN0cmluZyByZXN1bHRpbmdDbGll
bnRJZCA9ICIiOwogICAgIERPTVN0cmluZyB0YXJnZXRDbGllbnRJZCA9ICIiOwogICAgIFByb21p
c2U8dW5kZWZpbmVkPiBoYW5kbGVkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcAppbmRleCA1OTZiOWNkYzk5NGY1
NTA4MGI2MzkxNzE4OWI3OGViOGY3N2NkMzM0Li4wOTUwY2I5M2IyZWNlMTFhNGI0OWFjOTEwM2Q3
ZmRmZmIwNzdjZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIGF1dG8gU2Vydmlj
ZVdvcmtlckNsaWVudDo6ZnJhbWVUeXBlKCkgY29uc3QgLT4gRnJhbWVUeXBlCiAKIFN0cmluZyBT
ZXJ2aWNlV29ya2VyQ2xpZW50OjppZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlkZW50aWZpZXIo
KS50b1N0cmluZygpOworICAgIHJldHVybiBpZGVudGlmaWVyKCkudG9WaXNpYmxlU3RyaW5nKCk7
CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXJDbGllbnQ6OnBvc3RNZXNzYWdl
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2VW
YWx1ZSwgU3RydWN0dXJlZFNlcmlhbGl6ZU9wdGlvbnMmJiBvcHRpb25zKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsCmlu
ZGV4IGU4MWJhZTNkNjI2MGE3ZTEzYWVlYWQ1N2QyYTE0ZjYwOWQwZDZhNDQuLjQyMDU0NjJlMDlj
M2E4MDI4Y2NkYTgzMjUwYjA2ZTljMWE0NjUzMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwKQEAgLTI3LDYgKzI3
LDcgQEAKICAgICBDb25kaXRpb25hbD1TRVJWSUNFX1dPUktFUiwKICAgICBDdXN0b21Ub0pTT2Jq
ZWN0LAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9U2VydmljZVdvcmtlckVuYWJsZWQsCisgICAgRXhw
b3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCiAgICAgRXhwb3NlZD1TZXJ2aWNlV29ya2VyLAogICAg
IEludGVyZmFjZU5hbWU9Q2xpZW50LAogXSBpbnRlcmZhY2UgU2VydmljZVdvcmtlckNsaWVudCB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDbGllbnRzLmNwcAppbmRleCBhYjZiNWU4NDdmMmJiZWQ3NjhjM2QxOTA5YWIxYTgxODUzYjBj
MjE2Li42ZTQ1YWExNzZkMDdmMjI5MWJiZTIzNTUwNzc2NWJhYjU4OGFjMWY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50
cy5jcHAKQEAgLTM4LDU1ICszOCwyNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBpbmxpbmUgdm9pZCBkaWRGaW5pc2hHZXRSZXF1ZXN0KFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSYgc2NvcGUsIERlZmVycmVkUHJvbWlzZSYgcHJvbWlzZSwgRXhjZXB0aW9uT3I8c3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4+JiYgY2xpZW50RGF0YSkKK3N0YXRpYyBpbmxp
bmUgdm9pZCBkaWRGaW5pc2hHZXRSZXF1ZXN0KFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgc2Nv
cGUsIERlZmVycmVkUHJvbWlzZSYgcHJvbWlzZSwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YT4mJiBjbGllbnREYXRhKQogewotICAgIGlmIChjbGllbnREYXRhLmhhc0V4Y2Vw
dGlvbigpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KGNsaWVudERhdGEucmVsZWFzZUV4Y2Vw
dGlvbigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvIGRhdGEgPSBjbGllbnRE
YXRhLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgIGlmICghZGF0YSkgeworICAgIGlmICghY2xp
ZW50RGF0YSkgewogICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHByb21pc2UucmVzb2x2ZTxJRExJbnRlcmZhY2U8U2VydmljZVdvcmtlckNs
aWVudD4+KFNlcnZpY2VXb3JrZXJDbGllbnQ6OmdldE9yQ3JlYXRlKHNjb3BlLCBXVEZNb3ZlKGRh
dGEudmFsdWUoKSkpKTsKLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXI+IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyRnJvbVN0
cmluZyhTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNz
SWRlbnRpZmllcjsKLSAgICBPYmplY3RJZGVudGlmaWVyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyVHlwZT4gY29udGV4dElkZW50aWZpZXI7Ci0gICAgdW5zaWduZWQgY291bnRlciA9
IDA7Ci0gICAgZm9yIChhdXRvIGl0ZW0gOiBzdHJpbmcuc3BsaXQoJy0nKSkgewotICAgICAgICBh
dXRvIGlkZW50aWZpZXIgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KGl0ZW0pOwotICAgICAgICBp
ZiAoIWlkZW50aWZpZXIgfHwgISppZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICAgICAgaWYgKCFjb3VudGVyKyspCi0gICAgICAgICAgICBwcm9jZXNzSWRl
bnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFByb2Nlc3NJZGVudGlmaWVyVHlwZT4oKmlk
ZW50aWZpZXIpOwotICAgICAgICBlbHNlIGlmIChjb3VudGVyID09IDIpCi0gICAgICAgICAgICBj
b250ZXh0SWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyVHlwZT4oKmlkZW50aWZpZXIpOwotICAgIH0KLSAgICByZXR1cm4gKHBy
b2Nlc3NJZGVudGlmaWVyICYmIGNvbnRleHRJZGVudGlmaWVyKSA/IHN0ZDo6bWFrZV9vcHRpb25h
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciB7IGNvbnRleHRJZGVudGlmaWVyLCBw
cm9jZXNzSWRlbnRpZmllciB9KSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBwcm9taXNlLnJlc29sdmU8
SURMSW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJDbGllbnQ+PihTZXJ2aWNlV29ya2VyQ2xpZW50Ojpn
ZXRPckNyZWF0ZShzY29wZSwgV1RGTW92ZSgqY2xpZW50RGF0YSkpKTsKIH0KIAogdm9pZCBTZXJ2
aWNlV29ya2VyQ2xpZW50czo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgaWQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKLSAgICBh
dXRvIGlkZW50aWZpZXIgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllckZyb21TdHJp
bmcoaWQpOwotICAgIGlmICghaWRlbnRpZmllcikgewotICAgICAgICBwcm9taXNlLT5yZXNvbHZl
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXV0byBjbGllbnRJZGVudGlmaWVyID0g
aWRlbnRpZmllci52YWx1ZSgpOwotCiAgICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9
IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFkKCkuaWRl
bnRpZmllcigpOwogCiAgICAgYXV0byBwcm9taXNlUG9pbnRlciA9IHByb21pc2UucHRyKCk7CiAg
ICAgbV9wZW5kaW5nUHJvbWlzZXMuYWRkKHByb21pc2VQb2ludGVyLCBXVEZNb3ZlKHByb21pc2Up
KTsKIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb21pc2VQb2ludGVyLCBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllcl0gKCkgeworICAgIGNhbGxPbk1haW5UaHJlYWQo
W3Byb21pc2VQb2ludGVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgaWQgPSBpZC5pc29sYXRl
ZENvcHkoKV0gKCkgewogICAgICAgICBhdXRvIGNvbm5lY3Rpb24gPSBTV0NvbnRleHRNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCk7Ci0gICAgICAgIGNvbm5lY3Rpb24tPmZpbmRDbGll
bnRCeUlkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXIs
IFtwcm9taXNlUG9pbnRlciwgc2VydmljZVdvcmtlcklkZW50aWZpZXJdIChhdXRvJiYgY2xpZW50
RGF0YSkgeworICAgICAgICBjb25uZWN0aW9uLT5maW5kQ2xpZW50QnlWaXNpYmxlSWRlbnRpZmll
cihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgaWQsIFtwcm9taXNlUG9pbnRlciwgc2VydmljZVdv
cmtlcklkZW50aWZpZXJdIChhdXRvJiYgY2xpZW50RGF0YSkgewogICAgICAgICAgICAgU1dDb250
ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFtwcm9taXNlUG9pbnRlciwgZGF0YSA9IGNyb3NzVGhyZWFkQ29weShj
bGllbnREYXRhKV0gKGF1dG8mIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlm
IChhdXRvIHByb21pc2UgPSBjb250ZXh0LmNsaWVudHMoKS5tX3BlbmRpbmdQcm9taXNlcy50YWtl
KHByb21pc2VQb2ludGVyKSkKICAgICAgICAgICAgICAgICAgICAgZGlkRmluaXNoR2V0UmVxdWVz
dChjb250ZXh0LCAqcHJvbWlzZSwgV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5k
ZXggNzE2ZDAwMzUxZGQ3M2JmZTkyMzJhODhkOGIyOWM2ZDcyY2MyM2RlNy4uYzBlMDM2MzZiMTg5
YzU4NjYzZTQ4M2M4MGJiOWQ2OTE5MmIyMGU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtNjIs
OCArNjIsOCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBza2lwV2FpdGluZyhTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgVVJMJiwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRl
ZFNjcmlwdCYpID0gMDsKIAotICAgICAgICB1c2luZyBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ2Fs
bGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckNsaWVudERhdGE+PiYmKT47Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBmaW5k
Q2xpZW50QnlJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0SWRlbnRpZmllciwgRmluZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNrJiYpID0g
MDsKKyAgICAgICAgdXNpbmcgRmluZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNrID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYm
KT47CisgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5kQ2xpZW50QnlWaXNpYmxlSWRlbnRpZmllcihT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgRmluZENsaWVudEJ5SWRlbnRp
ZmllckNhbGxiYWNrJiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIG1hdGNoQWxsKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25z
JiwgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
RmV0Y2guY3BwCmluZGV4IDZkMmYxZTZhNmRkMTkxNWRlZTUxYWZhYWFjNTZlOTFlMTE5MzYyN2Iu
LjRjOWYyZGU0ZTdkMzQ5MTk1NTIxYjIyNTcxZTU5Mjg1NzNiYjAwOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNw
b25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBz
CiAgICAgfSk7CiB9CiAKLXZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYgY2xp
ZW50LCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlLCBzdGQ6Om9wdGlvbmFs
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBjbGllbnRJZCwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMs
IEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRFbmFibGVkKQordm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENsaWVu
dD4mJiBjbGllbnQsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUsIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiBv
cHRpb25zLCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBib29sIGlzU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCwgU3RyaW5nJiYgY2xpZW50SWRlbnRpZmllciwg
U3RyaW5nJiYgcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcikKIHsKICAgICBhdXRvIHJlcXVlc3RI
ZWFkZXJzID0gRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6SW1tdXRh
YmxlLCBIVFRQSGVhZGVyTWFwIHsgcmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCkgfSk7CiAKQEAg
LTE4MSwxMiArMTgxLDggQEAgdm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiBj
bGllbnQsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2MKIAogICAgIEZldGNoRXZl
bnQ6OkluaXQgaW5pdDsKICAgICBpbml0LnJlcXVlc3QgPSBXVEZNb3ZlKGZldGNoUmVxdWVzdCk7
Ci0gICAgaWYgKGlzTmF2aWdhdGlvbikgewotICAgICAgICAvLyBGSVhNRTogU2V0IHJlc2VydmVk
Q2xpZW50SWQuCi0gICAgICAgIGlmIChjbGllbnRJZCkKLSAgICAgICAgICAgIGluaXQudGFyZ2V0
Q2xpZW50SWQgPSBjbGllbnRJZC0+dG9TdHJpbmcoKTsKLSAgICB9IGVsc2UgaWYgKGNsaWVudElk
KQotICAgICAgICBpbml0LmNsaWVudElkID0gY2xpZW50SWQtPnRvU3RyaW5nKCk7CisgICAgaW5p
dC5yZXN1bHRpbmdDbGllbnRJZCA9IFdURk1vdmUocmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcik7
CisgICAgaW5pdC5jbGllbnRJZCA9IFdURk1vdmUoY2xpZW50SWRlbnRpZmllcik7CiAgICAgaW5p
dC5jYW5jZWxhYmxlID0gdHJ1ZTsKIAogICAgIGF1dG8mIGpzRE9NR2xvYmFsT2JqZWN0ID0gKkpT
Qzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsU2NvcGUuZ2xvYmFsT2JqZWN0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlckZldGNoLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAppbmRleCAyYzlmN2ExNmQyNzNiZDcxNWVlMTFlYzA3YTRm
OWM1ZGQ4NDJhZTU2Li4xNGE2Mjk5OTQwOTc4NjZmODhjMzI1NGYzOGYwMzRjODQzZWE3ZGE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyRmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGNvbnZlcnRGZXRjaFRvRG93bmxvYWQoKSA9IDA7CiB9OwogCi12b2lkIGRpc3Bh
dGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmLCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmLCBz
dGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiwgUmVzb3VyY2VS
ZXF1ZXN0JiYsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiwgRmV0Y2hJZGVudGlm
aWVyLCBib29sIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCk7Cit2b2lk
IGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmLCBTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUmLCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYm
LCBGZXRjaElkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRF
bmFibGVkLCBTdHJpbmcmJiBjbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiByZXN1bHRpbmdDbGll
bnRJZGVudGlmaWVyKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5jcHAKaW5kZXggNjUyNWZiOTcwMTZmZmFkZWU5MWExMTYwNjA0YzAyNzEwOWNl
ODY2MS4uMjYwZGJiZDNlNjYyOTc5Y2M5ZmE2OTJkNDNjZTRlYjQzNzA0ZGZiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTEyNCwxMSArMTI0LDExIEBAIHZvaWQgU2VydmljZVdv
cmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkKICAgICBXb3JrZXJUaHJlYWQ6OnJ1bkV2ZW50TG9v
cCgpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZUZldGNo
RXZlbnQoUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmIGNsaWVudCwgc3RkOjpvcHRp
b25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4mJiBjbGllbnRJZCwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9w
dGlvbnMsIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkKQordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpx
dWV1ZVRhc2tUb0ZpcmVGZXRjaEV2ZW50KFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4m
JiBjbGllbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN0cmluZyYmIHJlZmVycmVyLCBG
ZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBi
b29sIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCwgU3RyaW5nJiYgY2xp
ZW50SWRlbnRpZmllciwgU3RyaW5nJiYgcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcikKIHsKICAg
ICBSZWYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckds
b2JhbFNjb3BlPigqZ2xvYmFsU2NvcGUoKSk7Ci0gICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbc2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnQgPSBXVEZNb3ZlKGNsaWVudCksIGNsaWVudElk
LCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVmZXJyZXIgPSBXVEZNb3ZlKHJlZmVycmVy
KSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIGZldGNoSWRlbnRpZmllciwgaXNTZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkXSgpIG11dGFibGUgewotICAgICAgICBTZXJ2
aWNlV29ya2VyRmV0Y2g6OmRpc3BhdGNoRmV0Y2hFdmVudChXVEZNb3ZlKGNsaWVudCksIHNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSwgY2xpZW50SWQsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
cmVmZXJyZXIpLCBXVEZNb3ZlKG9wdGlvbnMpLCBmZXRjaElkZW50aWZpZXIsIGlzU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCk7CisgICAgc2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBb
c2VydmljZVdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnQgPSBXVEZNb3ZlKGNsaWVudCksIHJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZWZlcnJlciA9IFdURk1vdmUocmVmZXJyZXIpLCBvcHRp
b25zID0gV1RGTW92ZShvcHRpb25zKSwgZmV0Y2hJZGVudGlmaWVyLCBpc1NlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIGNsaWVudElkZW50aWZpZXIgPSBXVEZNb3ZlKGNsaWVu
dElkZW50aWZpZXIpLCByZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyID0gV1RGTW92ZShyZXN1bHRp
bmdDbGllbnRJZGVudGlmaWVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgU2VydmljZVdvcmtlckZl
dGNoOjpkaXNwYXRjaEZldGNoRXZlbnQoV1RGTW92ZShjbGllbnQpLCBzZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVmZXJyZXIpLCBXVEZNb3ZlKG9w
dGlvbnMpLCBmZXRjaElkZW50aWZpZXIsIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
RW5hYmxlZCwgV1RGTW92ZShjbGllbnRJZGVudGlmaWVyKSwgV1RGTW92ZShyZXN1bHRpbmdDbGll
bnRJZGVudGlmaWVyKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAppbmRl
eCAxZGEyZGQ4M2VlMDc3MWZhNGExMmM5MWFlMjU0YTUyM2E5MzIyZTdmLi44OGI2NWRlODAzMGFh
OTUwOTBkMzdjZGNhMWFlMDdlY2U3NWJmMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCkBA
IC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxQb3N0VGFza1RvRmlyZU1lc3Nh
Z2VFdmVudCgpOwogICAgIHZvaWQgd2lsbFBvc3RUYXNrVG9GaXJlUHVzaFN1YnNjcmlwdGlvbkNo
YW5nZUV2ZW50KCk7CiAKLSAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZUZldGNoRXZlbnQoUmVmPFNl
cnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyPiYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5nJiYgcmVmZXJy
ZXIsIEZldGNoT3B0aW9ucyYmLCBGZXRjaElkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRFbmFibGVkKTsKKyAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZUZldGNo
RXZlbnQoUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmLCBSZXNvdXJjZVJlcXVlc3Qm
JiwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmLCBGZXRjaElkZW50aWZpZXIsIGJv
b2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkLCBTdHJpbmcmJiBjbGll
bnRJZGVudGlmaWVyLCBTdHJpbmcmJiByZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKTsKICAgICB2
b2lkIHF1ZXVlVGFza1RvUG9zdE1lc3NhZ2UoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgU2Vy
dmljZVdvcmtlck9yQ2xpZW50RGF0YSYmIHNvdXJjZURhdGEpOwogICAgIHZvaWQgcXVldWVUYXNr
VG9GaXJlSW5zdGFsbEV2ZW50KCk7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVBY3RpdmF0ZUV2
ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCBkYjZjOTNi
OGJlOTFiOWI5MjI3MTA5NDc5OWQwZGRjM2Y2NDgyZGYwLi5jNjY2MTRmYTJjOTYwMDExNjQ1ZThh
Yzc0NWQ0ZjZkOWM4ODM5NjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5j
cHAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6bm90
aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpCiAgICAgfSwgV29ya2VyUnVuTG9v
cDo6ZGVmYXVsdE1vZGUoKSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpz
dGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZp
ZXIsIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFJlZjxTZXJ2aWNlV29ya2VyRmV0
Y2g6OkNsaWVudD4mJiBjbGllbnQsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXI+JiYgY2xpZW50SWQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN0cmlu
ZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBib29sIGlzU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCkKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5
OjpzdGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIsIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFJlZjxTZXJ2aWNlV29ya2Vy
RmV0Y2g6OkNsaWVudD4mJiBjbGllbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN0cmlu
ZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBib29sIGlzU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCwgU3RyaW5nJiYgY2xpZW50SWRlbnRpZmllciwgU3Ry
aW5nJiYgcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcikKIHsKICAgICBSRUxFQVNFX0xPRyhTZXJ2
aWNlV29ya2VyLCAiU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzdGFydEZldGNoICVsbHUiLCBm
ZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKQEAgLTIyMSw4ICsyMjEsOCBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c3RhcnRGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyIGNvbm5lY3RpbwogCiAgICAgQVNTRVJUKCFtX29uZ29pbmdGZXRjaFRhc2tzLmNvbnRh
aW5zKGtleSkpOwogICAgIG1fb25nb2luZ0ZldGNoVGFza3MuYWRkKGtleSwgY2xpZW50LmNvcHlS
ZWYoKSk7Ci0gICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNsaWVudCA9IFdURk1vdmUoY2xp
ZW50KSwgY2xpZW50SWQsIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCByZWZlcnJl
ciA9IHJlZmVycmVyLmlzb2xhdGVkQ29weSgpLCBvcHRpb25zID0gb3B0aW9ucy5pc29sYXRlZENv
cHkoKSwgZmV0Y2hJZGVudGlmaWVyLCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVu
YWJsZWRdKGF1dG8mKSBtdXRhYmxlIHsKLSAgICAgICAgdGhyZWFkKCkucXVldWVUYXNrVG9GaXJl
RmV0Y2hFdmVudChXVEZNb3ZlKGNsaWVudCksIFdURk1vdmUoY2xpZW50SWQpLCBXVEZNb3ZlKHJl
cXVlc3QpLCBXVEZNb3ZlKHJlZmVycmVyKSwgV1RGTW92ZShvcHRpb25zKSwgZmV0Y2hJZGVudGlm
aWVyLCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQpOworICAgIHBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBjbGllbnQgPSBXVEZNb3ZlKGNsaWVudCksIHJlcXVlc3QgPSBy
ZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCByZWZlcnJlciA9IFdURk1vdmUocmVmZXJyZXIpLmlzb2xh
dGVkQ29weSgpLCBvcHRpb25zID0gb3B0aW9ucy5pc29sYXRlZENvcHkoKSwgZmV0Y2hJZGVudGlm
aWVyLCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIGNsaWVudElkZW50
aWZpZXIgPSBXVEZNb3ZlKGNsaWVudElkZW50aWZpZXIpLmlzb2xhdGVkQ29weSgpLCByZXN1bHRp
bmdDbGllbnRJZGVudGlmaWVyID0gV1RGTW92ZShyZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKS5p
c29sYXRlZENvcHkoKV0oYXV0byYpIG11dGFibGUgeworICAgICAgICB0aHJlYWQoKS5xdWV1ZVRh
c2tUb0ZpcmVGZXRjaEV2ZW50KFdURk1vdmUoY2xpZW50KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShyZWZlcnJlciksIFdURk1vdmUob3B0aW9ucyksIGZldGNoSWRlbnRpZmllciwgaXNTZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkLCBXVEZNb3ZlKGNsaWVudElkZW50aWZp
ZXIpLCBXVEZNb3ZlKHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIpKTsKICAgICB9LCBXb3JrZXJS
dW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkuaAppbmRleCAwMWIzYWQwNDkxNWQ0YmUyN2IwMWJjZmZkYzZiMGNmYjIwOGZjMDdlLi5hYmNh
NDg2MmJkNjU5YmI0ZWMxNmI3ZGRmOTkxOGU2MjhkMzM3NWVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKTsKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBGZXRjaElkZW50aWZpZXIsIFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4m
Jiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4mJiwgUmVz
b3VyY2VSZXF1ZXN0JiYsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiwgYm9vbCBp
c1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc3RhcnRGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElk
ZW50aWZpZXIsIFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiwgUmVzb3VyY2VSZXF1
ZXN0JiYsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiwgYm9vbCBpc1NlcnZpY2VX
b3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIFN0cmluZyYmIGNsaWVudElkZW50aWZpZXIs
IFN0cmluZyYmIHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY2FuY2VsRmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVu
dGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnZlcnRGZXRjaFRvRG93bmxvYWQo
U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoU1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggMWE5NjNjZDEy
NGUyNWZkZDMwZWIxNWQ2NzM3ZTdlNDM1ZGQ0MTE4MC4uN2NiOTkzZjIyNTdkYzczMTZjYjNhMmFl
OGM2ODI5ZjYxYjUyNzA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTk0Miw2ICs5NDIsOCBAQCB2b2lkIFNXU2VydmVy
OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoQ2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2lu
LCBTZXJ2aWNlVwogICAgICAgICAgICAgdXBkYXRlQXBwSW5pdGlhdGVkVmFsdWVGb3JXb3JrZXJz
KGNsaWVudE9yaWdpbiwgZGF0YS5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAgICAg
fQogCisgICAgbV92aXNpYmxlQ2xpZW50SWRUb0ludGVybmFsQ2xpZW50SWRNYXAuYWRkKGRhdGEu
aWRlbnRpZmllci50b1Zpc2libGVTdHJpbmcoKSwgY2xpZW50SWRlbnRpZmllcik7CisKICAgICBB
U1NFUlQoIW1fY2xpZW50c0J5SWQuY29udGFpbnMoY2xpZW50SWRlbnRpZmllcikpOwogICAgIG1f
Y2xpZW50c0J5SWQuYWRkKGNsaWVudElkZW50aWZpZXIsIFdURk1vdmUoZGF0YSkpOwogCkBAIC05
NzksOCArOTgxLDggQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAgICBhdXRvIGNsaWVudFJl
Z2lzdHJhYmxlRG9tYWluID0gY2xpZW50T3JpZ2luLmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCk7
CiAgICAgYXV0byBhcHBJbml0aWF0ZWRWYWx1ZUJlZm9yZSA9IGNsaWVudElzQXBwSW5pdGlhdGVk
Rm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVudFJlZ2lzdHJhYmxlRG9tYWlu
KCkpOwogCi0gICAgYm9vbCB3YXNSZW1vdmVkID0gbV9jbGllbnRzQnlJZC5yZW1vdmUoY2xpZW50
SWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNFRCh3YXNSZW1vdmVkLCB3YXNSZW1vdmVkKTsK
KyAgICBtX2NsaWVudHNCeUlkLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKKyAgICBtX3Zpc2li
bGVDbGllbnRJZFRvSW50ZXJuYWxDbGllbnRJZE1hcC5yZW1vdmUoY2xpZW50SWRlbnRpZmllci50
b1Zpc2libGVTdHJpbmcoKSk7CiAKICAgICBhdXRvIGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWlu
SXRlcmF0b3IgPSBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmZpbmQoY2xpZW50UmVnaXN0
cmFibGVEb21haW4pOwogICAgIEFTU0VSVChjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0ZXJh
dG9yICE9IG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uZW5kKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IGIxNWYxYWY1
ZTBlZDcyYWFhMWRkYmRhOWEyZmZlM2ZiMjlhYjEzODcuLjQzOTQxYjM0YjJhNzI3ZDQzOGY2NTRj
NzUzZDhmNTlmNWNmMjY5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTIyNiw2ICsyMjYsOCBAQCBwdWJsaWM6CiAgICAgZW51
bSBjbGFzcyBTaG91bGRTa2lwRXZlbnQgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHZvaWQgZmly
ZUZ1bmN0aW9uYWxFdmVudChTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiwgU2hvdWxkU2tpcEV2
ZW50Pik+JiYpOwogCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW50
SWRGcm9tVmlzaWJsZUNsaWVudElkKGNvbnN0IFN0cmluZyYgdmlzaWJsZUlkZW50aWZpZXIpIGNv
bnN0IHsgcmV0dXJuIG1fdmlzaWJsZUNsaWVudElkVG9JbnRlcm5hbENsaWVudElkTWFwLmdldCh2
aXNpYmxlSWRlbnRpZmllcik7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHZhbGlkYXRlUmVnaXN0
cmF0aW9uRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBTZXJ2aWNlV29ya2VySm9i
VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKQEAgLTI3MSw2ICsyNzMs
NyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIsIFdlYWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+PiBtX3NlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllclRvUmVnaXN0cmF0aW9uTWFwOwogICAgIEhhc2hNYXA8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBtX2NsaWVudHNCeUlkOwog
ICAgIEhhc2hNYXA8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiBtX2NsaWVudFRvQ29udHJvbGxpbmdSZWdpc3RyYXRp
b247CisgICAgSGFzaE1hcDxTdHJpbmcsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
PiBtX3Zpc2libGVDbGllbnRJZFRvSW50ZXJuYWxDbGllbnRJZE1hcDsKIAogICAgIFVuaXF1ZVJl
ZjxTV09yaWdpblN0b3JlPiBtX29yaWdpblN0b3JlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdp
c3RyYXRpb25TdG9yZT4gbV9yZWdpc3RyYXRpb25TdG9yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcAppbmRleCBiZmVlY2NlMDNlMDRjYzc4ZTg3ZTFlMTYyNjliOTYz
MDFkNDgxN2ExLi41NDI4YWE0NjU1NDU4ODQ4NzkwMTdjNDUxZDk4ZjhhYzllNjJhZDdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC04NywxMiArODcsNiBA
QCB2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6d29ya2VyVGVybWluYXRlZChTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aQogICAgICAgICB3b3JrZXItPmNvbnRleHRUZXJtaW5h
dGVkKCk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaW5kQ2xpZW50
QnlJZGVudGlmaWVyKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXIgY2xpZW50SWQpCi17Ci0gICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29y
a2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIp
KQotICAgICAgICB3b3JrZXItPmNvbnRleHRDb25uZWN0aW9uKCktPmZpbmRDbGllbnRCeUlkZW50
aWZpZXJDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHdvcmtlci0+ZmluZENsaWVudEJ5SWRl
bnRpZmllcihjbGllbnRJZCksIGZhbHNlKTsKLX0KLQogdm9pZCBTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246Om1hdGNoQWxsKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtl
ckNsaWVudFF1ZXJ5T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoYXV0byogd29ya2VyID0g
U1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcikpIHsKQEAgLTEwMiw2ICs5NiwxNCBAQCB2b2lkIFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6bWF0Y2hBbGwodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VX
bwogICAgIH0KIH0KIAordm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpbmRDbGll
bnRCeVZpc2libGVJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YT4mJik+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29y
a2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIp
KQorICAgICAgICB3b3JrZXItPmZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKGNsaWVudElk
ZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBlbHNlCisgICAgICAgIGNhbGxiYWNr
KHsgfSk7Cit9CisKIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjbGFpbShTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYpPiYmIGNhbGxiYWNrKQog
ewogICAgIGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklk
ZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgKaW5kZXggYmRkMzYzYjJiYzQ1MGNjMjk5MmU2NTY4MzZhZjc3ZWQ1M2Jj
ZGE0MC4uYzA1NmY2NDhkZGEwM2U1ZmFiNDhkMmFlNDZlNzEzOTc1NmY1ZDU0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC01OCw3ICs1OCw2IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBIYXNoTWFw
PFVSTCwgU2NyaXB0QnVmZmVyPiYgaW1wb3J0ZWRTY3JpcHRzKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9v
bCBoYXNTZWN1cml0eUVycm9yKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG1hdGNoQWxsQ29tcGxl
dGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U2VydmljZVdvcmtl
ckNsaWVudERhdGE+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaXJlUHVzaEV2ZW50KFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKSA9IDA7CiAKQEAgLTcw
LDExICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZXJ2aWNl
V29ya2VySGFzUGVuZGluZ0V2ZW50cyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQ
ZW5kaW5nRXZlbnRzKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNraXBXYWl0aW5nKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgd29ya2VyVGVybWluYXRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmll
cik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2
NF90IGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBtYXRjaEFsbCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4mJik+JiYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIFVSTCYmIHNjcmlwdFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdCYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5kQ2xp
ZW50QnlWaXNpYmxlSWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBjbGllbnRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpPiYmKTsKIAogICAgIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1f
cmVnaXN0cmFibGVEb21haW47IH0KICAgICBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRl
eCA1ZDE1NTZhMDA2ZGFiMTUxNjc2NTFhMjNkZjJmYjMzMzA0N2Y2YjQzLi5jZGJmZTQ0YmVlYzBj
OTA4YmFjMTIyNGQwZWE0YjZmMTJmZWRmMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcApAQCAtMjMxLDYg
KzIzMSwyMiBAQCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBTV1NlcnZl
cldvcmtlcjo6ZmluZENsaWVudEJ5SWRlbnRpZmllcihjbwogICAgIHJldHVybiBtX3NlcnZlci0+
c2VydmljZVdvcmtlckNsaWVudFdpdGhPcmlnaW5CeUlEKG9yaWdpbigpLCBjbGllbnRJZCk7CiB9
CiAKK3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYgY2xpZW50SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT4mJiBjYWxsYmFj
aykKK3sKKyAgICBpZiAoIW1fc2VydmVyKSB7CisgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGludGVybmFsSWRlbnRpZmllciA9IG1fc2Vy
dmVyLT5jbGllbnRJZEZyb21WaXNpYmxlQ2xpZW50SWQoY2xpZW50SWRlbnRpZmllcik7CisgICAg
aWYgKCFpbnRlcm5hbElkZW50aWZpZXIpIHsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGNhbGxiYWNrKGZpbmRDbGllbnRCeUlkZW50aWZpZXIo
aW50ZXJuYWxJZGVudGlmaWVyKSk7Cit9CisKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6Om1hdGNoQWxs
KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmIG9wdGlvbnMsIFNlcnZpY2VX
b3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVCht
X3NlcnZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggYjIyMTVkOWY0YWQ0ZDBmZDkxNTA0YTRjMjFhY2I5
MzA0N2ExYzgyNC4uMWU4MzFmYzRjYTgyZDY0NGU3YzZkYjExZTBlZjUzYTc2YjZkZjQ1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldv
cmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuaApAQCAtMTAzLDYgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlz
aEFjdGl2YXRpb24oKTsKICAgICB2b2lkIGNvbnRleHRUZXJtaW5hdGVkKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gZmluZENsaWVu
dEJ5SWRlbnRpZmllcihjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciYpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJiBjbGllbnRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpPiYmKTsK
ICAgICB2b2lkIG1hdGNoQWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMm
LCBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJik7CiAgICAgdm9pZCBzZXRT
Y3JpcHRSZXNvdXJjZShVUkwmJiwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdCYmKTsKICAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFNjcmlwdEJ1ZmZlciYmIG1h
aW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCmluZGV4IDgxN2FlZjI2YzgzNmMzNGE3ZDQ0ZWU3Y2M5NWVkZDlhMjk4ZDZhNGEuLmRj
ODczNWZmNDk1MGRlMjA4MTYzMGYzNGYyMmQyMzNiY2M4ZWI3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMTQ1
LDYgKzE0NSw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9p
ZCBzdGFydFdpdGhTZXJ2aWNlV29ya2VyKCk7CiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyRGlkTm90
SGFuZGxlKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sqKTsKKyAgICB2b2lkIHNldFJlc3VsdGluZ0Ns
aWVudElkZW50aWZpZXIoU3RyaW5nJiYgaWRlbnRpZmllcikgeyBtX3Jlc3VsdGluZ0NsaWVudElk
ZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpOyB9CisgICAgY29uc3QgU3RyaW5nJiByZXN1
bHRpbmdDbGllbnRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHRpbmdDbGllbnRJ
ZGVudGlmaWVyOyB9CiAjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvcj4gZG9Dcm9zc09yaWdpbk9wZW5lckhhbmRsaW5nT2ZSZXNwb25zZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0yNTUsNiArMjU3LDcgQEAgcHJpdmF0ZToKICAg
ICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG1fbmV0d29ya0FjdGl2aXR5
VHJhY2tlcjsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IG1fc2VydmljZVdvcmtlckZldGNoVGFzazsKKyAgICBT
dHJpbmcgbV9yZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyOwogI2VuZGlmCiAgICAgTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXIgbV9yZXNvdXJjZUxvYWRJRDsKICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIG1fcmVkaXJlY3RSZXNwb25zZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrLmNwcAppbmRleCBjZDJkNmEyMDczZmI5N2FiYTAxNmQzYzdlZjMxYzc3MWEx
MjcwMmM5Li4wMGJmYzc2OWRiOTkxMjI4MGMyNmY0N2JiY2I1Mzk4ZTcxZjA0OWI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC0xNTEsNyArMTUxLDEyIEBA
IHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6c3RhcnRGZXRjaCgpCiAgICAgYXV0byByZXF1
ZXN0ID0gbV9jdXJyZW50UmVxdWVzdDsKICAgICBjbGVhbkhUVFBSZXF1ZXN0SGVhZGVyc0ZvckFj
Y2Vzc0NvbnRyb2wocmVxdWVzdCwgbV9sb2FkZXIucGFyYW1ldGVycygpLmh0dHBIZWFkZXJzVG9L
ZWVwKTsKIAotICAgIGJvb2wgaXNTZW50ID0gc2VuZFRvU2VydmljZVdvcmtlcihNZXNzYWdlczo6
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN0YXJ0RmV0Y2ggeyBtX3NlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtX2ZldGNoSWRlbnRp
ZmllciwgcmVxdWVzdCwgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IG1fY3VycmVu
dFJlcXVlc3QuaHR0cEJvZHkoKSB9LCByZWZlcnJlciwgbV9wcmVsb2FkZXIgJiYgbV9wcmVsb2Fk
ZXItPmlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCgpIH0pOworICAgIFN0
cmluZyBjbGllbnRJZGVudGlmaWVyOworICAgIGlmIChtX2xvYWRlci5wYXJhbWV0ZXJzKCkub3B0
aW9ucy5tb2RlICE9IEZldGNoT3B0aW9uczo6TW9kZTo6TmF2aWdhdGUpIHsKKyAgICAgICAgaWYg
KGF1dG8gaWRlbnRpZmllciA9IG1fbG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zLmNsaWVudElk
ZW50aWZpZXIpCisgICAgICAgICAgICBjbGllbnRJZGVudGlmaWVyID0gaWRlbnRpZmllci0+dG9W
aXNpYmxlU3RyaW5nKCk7CisgICAgfQorICAgIGJvb2wgaXNTZW50ID0gc2VuZFRvU2VydmljZVdv
cmtlcihNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN0YXJ0RmV0Y2gg
eyBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBtX2ZldGNoSWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSB7IG1fY3VycmVudFJlcXVlc3QuaHR0cEJvZHkoKSB9LCByZWZlcnJlciwgbV9wcmVsb2Fk
ZXIgJiYgbV9wcmVsb2FkZXItPmlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxl
ZCgpLCBjbGllbnRJZGVudGlmaWVyLCBtX2xvYWRlci5yZXN1bHRpbmdDbGllbnRJZGVudGlmaWVy
KCkgfSk7CiAgICAgQVNTRVJUX1VOVVNFRChpc1NlbnQsIGlzU2VudCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNDcyYTIzMTM5Zjc2OGIwOTEzYzZh
YzE0NDE5ZjdkOGJkZjI0MmVhZS4uZTg4NmZlMjY0NjMzNzQwYmE1ODg3Nzc2NzQxMGMwMGEwNzMz
NWVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTE3NSw2
ICsxNzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2soTgogCiAgICAgICAgIHNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gcmVnaXN0cmF0aW9uLT5pZGVudGlmaWVyKCk7CiAg
ICAgICAgIGNvbnRyb2xDbGllbnQoKmxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucy5jbGllbnRJ
ZGVudGlmaWVyLCAqcmVnaXN0cmF0aW9uLCByZXF1ZXN0KTsKKyAgICAgICAgbG9hZGVyLnNldFJl
c3VsdGluZ0NsaWVudElkZW50aWZpZXIobG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zLmNsaWVu
dElkZW50aWZpZXItPnRvVmlzaWJsZVN0cmluZygpKTsKICAgICB9IGVsc2UgewogICAgICAgICBp
ZiAoIWxvYWRlci5wYXJhbWV0ZXJzKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggZjBhODk2NzVjYzE0NDM3MDhh
MGI2OGFjOTMxY2U3N2ZkMjVjNDAwNS4uNWE4NzAzZWZkNmQ1ZGNkNDFhMjI1YThkMTJlM2RkNWRk
YWUxMDYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHAKQEAgLTE1NSwxMSArMTU1LDYgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OnRlcm1pbmF0ZUR1ZVRvVW5yZXNwb25zaXZlbmVzcygpCiAgICAgbV9jb25u
ZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRlVW5yZXNwb25zaXZlU2Vydmlj
ZVdvcmtlclByb2Nlc3NlcyB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CiB9CiAKLXZv
aWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVy
Q29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYgZGF0YSwgYm9vbCBoYXNTZWN1cml0eUVycm9yKQot
ewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpGaW5k
Q2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkIHsgcmVxdWVzdElkZW50aWZpZXIsIGRhdGEsIGhh
c1NlY3VyaXR5RXJyb3IgfSk7Ci19Ci0KIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjptYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qg
VmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYgY2xpZW50c0RhdGEpCiB7CiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Ok1hdGNoQWxsQ29tcGxl
dGVkIHsgcmVxdWVzdElkZW50aWZpZXIsIGNsaWVudHNEYXRhIH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDMzNjU4YzU0YzE0ZmE0
YTQ0NGI3NDM2ZGQ5MGIwODU5YTI0MmJiNTMuLmQ5NWI3Y2U4NTQ2OThjNTE2NmQzYTE1OWEzNzg4
ZWRlMmQ5YjIyOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgKQEAgLTk1LDcgKzk1LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpcmVBY3Rp
dmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2
b2lkIHRlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmlu
YWw7CiAgICAgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2NyaXB0QnVmZmVyJiwgY29uc3QgSGFzaE1hcDxV
UkwsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4mIGltcG9ydGVkU2NyaXB0cykgZmluYWw7Ci0gICAg
dm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhPiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikgZmluYWw7CiAgICAgdm9pZCBtYXRjaEFsbENv
bXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYpIGZpbmFsOwogICAgIHZvaWQgZmlyZVB1c2hFdmVu
dChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGZkNzE5NDhjNWYzNTk5OWY1NTJkZjFkZmQ2MzUyYzEz
ZDJmNWY4MWUuLjBkNjE0NTBkNDFhMzAxZjA4ZjllYzVlNmEzYTYwMDYxZjliNjQzN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbgpAQCAtMzIsNyArMzIsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgU2V0U2VydmljZVdvcmtlckhh
c1BlbmRpbmdFdmVudHMoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKQogICAgIFNraXBXYWl0aW5nKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+ICgpIEFzeW5jCiAgICAgV29ya2VyVGVy
bWluYXRlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQotICAg
IEZpbmRDbGllbnRCeUlkZW50aWZpZXIodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQor
ICAgIEZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTdHJpbmcgY2xpZW50SWRlbnRpZmll
cikgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+IGRh
dGEpIEFzeW5jCiAgICAgTWF0Y2hBbGwodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmll
ciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zIG9wdGlv
bnMpOwogICAgIENsYWltKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRh
PiByZXN1bHQpIEFzeW5jCiAgICAgU2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgVVJMIHNjcmlwdFVSTCwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCBzY3JpcHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5n
SU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVG
b3JUZXN0aW5nSU9TLmgKaW5kZXggMGY4ZGYyMWNjM2VhYjkwMjA1OWE0MTIwMWZiNTMyMWZiOTU5
ZTkxOS4uN2E0NmRiMWY3ZmMwZDkxMDA3NjYzNGMxN2RjZDBlMjczZTBiNmZkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVz
dGluZ0lPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
UHJpdmF0ZUZvclRlc3RpbmdJT1MuaApAQCAtODEsNyArODEsNyBAQAogCiAtICh2b2lkKV9kb0Fm
dGVyUmVjZWl2aW5nRWRpdERyYWdTbmFwc2hvdEZvclRlc3Rpbmc6KGRpc3BhdGNoX2Jsb2NrX3Qp
YWN0aW9uOwogCi0tICh2b2lkKV90cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbk9uRWxlbWVudDoo
dWludDY0X3QpZWxlbWVudElEIGRvY3VtZW50Oih1aW50NjRfdClkb2N1bWVudElEIHBhZ2U6KHVp
bnQ2NF90KXBhZ2VJRDsKKy0gKHZvaWQpX3RyaWdnZXJTeXN0ZW1QcmV2aWV3QWN0aW9uT25FbGVt
ZW50Oih1aW50NjRfdCllbGVtZW50SUQgZG9jdW1lbnQ6KE5TU3RyaW5nKilkb2N1bWVudElEIHBh
Z2U6KHVpbnQ2NF90KXBhZ2VJRDsKIAogLSAodm9pZClfc2V0RGV2aWNlT3JpZW50YXRpb25Vc2Vy
UGVybWlzc2lvbkhhbmRsZXJGb3JUZXN0aW5nOihCT09MICheKSh2b2lkKSloYW5kbGVyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3Rp
bmdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3Rp
bmdJT1MubW0KaW5kZXggNjA0N2QzYzc0MTJiZjYwMGJiMDljMjY2OGViNjI5MTFiMTMyZjBkNC4u
OTViODI5MjIyMjRhZWExNGIxZTE0MzlmMGE4ZjVlMDgzMDQzYjk0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbQpA
QCAtNDQ4LDcgKzQ0OCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBVSVZpZXcoVGV4dFN0cmVhbSYgdHMs
IFVJVmlldyAqdmlldykKICAgICBbX2NvbnRlbnRWaWV3IF9zaW11bGF0ZVRleHRFbnRlcmVkOnRl
eHRdOwogfQogCi0tICh2b2lkKV90cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbk9uRWxlbWVudDoo
dWludDY0X3QpZWxlbWVudElEIGRvY3VtZW50Oih1aW50NjRfdClkb2N1bWVudElEIHBhZ2U6KHVp
bnQ2NF90KXBhZ2VJRAorLSAodm9pZClfdHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb25PbkVsZW1l
bnQ6KHVpbnQ2NF90KWVsZW1lbnRJRCBkb2N1bWVudDooTlNTdHJpbmcqKWRvY3VtZW50SUQgcGFn
ZToodWludDY0X3QpcGFnZUlECiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChf
cGFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVt
UHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KaW5kZXggZGNjZDkwZGZlYzI0MjMxMzIy
MzMxMTA0YjY3YzkwYzM4MDc5MmY3OC4uMmY4YmEwMmRhMjgwNzBjNjg4MmQ3YTUzM2ExOGY2MjE1
MTk3YjZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVt
UHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCkBAIC0zMDEsMTEgKzMwMSwxNiBA
QCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlv
bigpCiAgICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2
aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCIpOwogfQogCi12b2lk
IFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldpdGhU
YXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgdWludDY0X3QgZG9jdW1lbnRJRCwg
dWludDY0X3QgcGFnZUlEKQordm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6dHJpZ2dlclN5
c3RlbVByZXZpZXdBY3Rpb25XaXRoVGFyZ2V0Rm9yVGVzdGluZyh1aW50NjRfdCBlbGVtZW50SUQs
IE5TU3RyaW5nKiBkb2N1bWVudElELCB1aW50NjRfdCBwYWdlSUQpCiB7CisgICAgYXV0byB1dWlk
ID0gVVVJRDo6cGFyc2UoU3RyaW5nKGRvY3VtZW50SUQpKTsKKyAgICBBU1NFUlQodXVpZCk7Cisg
ICAgaWYgKCF1dWlkKQorICAgICAgICByZXR1cm47CisKICAgICBtX3N5c3RlbVByZXZpZXdJbmZv
LmlzUHJldmlldyA9IHRydWU7CiAgICAgbV9zeXN0ZW1QcmV2aWV3SW5mby5lbGVtZW50LmVsZW1l
bnRJZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6RWxlbWVudElkZW50
aWZpZXJUeXBlPihlbGVtZW50SUQpOwotICAgIG1fc3lzdGVtUHJldmlld0luZm8uZWxlbWVudC5k
b2N1bWVudElkZW50aWZpZXIgPSBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
ZmllciB7IG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyVHlwZT4oZG9jdW1lbnRJRCksIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5j
b3JlUHJvY2Vzc0lkZW50aWZpZXIoKSB9OworICAgIG1fc3lzdGVtUHJldmlld0luZm8uZWxlbWVu
dC5kb2N1bWVudElkZW50aWZpZXIgPSB7ICp1dWlkLCBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCku
Y29yZVByb2Nlc3NJZGVudGlmaWVyKCkgfTsKICAgICBtX3N5c3RlbVByZXZpZXdJbmZvLmVsZW1l
bnQud2ViUGFnZUlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllclR5cGU+KHBhZ2VJRCk7CiAgICAgdHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb24o
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJv
bGxlci5oCmluZGV4IDJlZGIwNDEyNzgxMGM2ZTFhNjZhZDM1Y2U4Y2I3NGEyZDJiYTA1MzUuLjZh
YjZkMmJiMTk3Mzc3N2U3ODhhYWY1ZjlmZWIxZDhhODRhMDE2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaApAQCAtNjEsNyArNjEs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHRyaWdnZXJTeXN0ZW1QcmV2aWV3QWN0aW9uKCk7CiAK
LSAgICB2b2lkIHRyaWdnZXJTeXN0ZW1QcmV2aWV3QWN0aW9uV2l0aFRhcmdldEZvclRlc3Rpbmco
dWludDY0X3QgZWxlbWVudElELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwor
ICAgIHZvaWQgdHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb25XaXRoVGFyZ2V0Rm9yVGVzdGluZyh1
aW50NjRfdCBlbGVtZW50SUQsIE5TU3RyaW5nKiBkb2N1bWVudElELCB1aW50NjRfdCBwYWdlSUQp
OwogCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSYgbV93ZWJQYWdlUHJveHk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlLmNwcAppbmRleCBlNmRkODExMDU2NDQ0MWMzYTM1OTA5MGIwMTE0MmRkY2UyMDQzYWMz
Li5jMzQyN2FhNTIwYzRmMWQ3ZGE0M2MxMjk3ZTY5ZDJhZjBlMTIyZjk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBXS0FycmF5UmVmIFdLQnVuZGxlR2V0TGl2ZURv
Y3VtZW50VVJMc0ZvclRlc3RpbmcoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBib29sIGV4YwogICAg
ICAgICBhdXRvIGRvY3VtZW50SURLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJpZCIpKTsKICAgICAgICAgYXV0byBkb2N1bWVudFVSTEtleSA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInVybCIpKTsKIAotICAgICAgICBhdXRvIGRvY3Vt
ZW50SURWYWx1ZSA9IGFkb3B0V0soV0tVSW50NjRDcmVhdGUoaXQua2V5KSk7CisgICAgICAgIGF1
dG8gZG9jdW1lbnRJRFZhbHVlID0gYWRvcHRXSyhXZWJLaXQ6OnRvQ29waWVkQVBJKGl0LmtleS50
b1N0cmluZygpKSk7CiAgICAgICAgIGF1dG8gZG9jdW1lbnRVUkxWYWx1ZSA9IGFkb3B0V0soV2Vi
S2l0Ojp0b0NvcGllZEFQSShpdC52YWx1ZSkpOwogCiAgICAgICAgIFdLRGljdGlvbmFyeVNldEl0
ZW0odXJsSW5mby5nZXQoKSwgZG9jdW1lbnRJREtleS5nZXQoKSwgZG9jdW1lbnRJRFZhbHVlLmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDg1YzcwMTMwMjY5ZDFkNjBhNGZkNjhmMjBj
OTdiNjhhMmIyOGEzZWEuLmY0ZGQ1ODMxMjBiZTBjZmFkNDgwNTYyZDNiMDg1YTI1Mjg4MWRkMTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMzM4LDE0ICszMzgsMTQgQEAgSW5qZWN0ZWRCdW5k
bGU6OkRvY3VtZW50SURUb1VSTE1hcCBJbmplY3RlZEJ1bmRsZTo6bGl2ZURvY3VtZW50VVJMcyhi
b29sIGV4Y2x1ZGUKICAgICBEb2N1bWVudElEVG9VUkxNYXAgcmVzdWx0OwogCiAgICAgZm9yIChj
b25zdCBhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkKLSAgICAgICAg
cmVzdWx0LmFkZChkb2N1bWVudC0+aWRlbnRpZmllcigpLm9iamVjdCgpLnRvVUludDY0KCksIGRv
Y3VtZW50LT51cmwoKS5zdHJpbmcoKSk7CisgICAgICAgIHJlc3VsdC5hZGQoZG9jdW1lbnQtPmlk
ZW50aWZpZXIoKS5vYmplY3QoKSwgZG9jdW1lbnQtPnVybCgpLnN0cmluZygpKTsKIAogICAgIGlm
IChleGNsdWRlRG9jdW1lbnRzSW5QYWdlR3JvdXBQYWdlcykgewogICAgICAgICBQYWdlOjpmb3JF
YWNoUGFnZShbJl0oUGFnZSYgcGFnZSkgewogICAgICAgICAgICAgZm9yIChhdXRvKiBmcmFtZSA9
ICZwYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNl
TmV4dCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LnJlbW92ZShm
cmFtZS0+ZG9jdW1lbnQoKS0+aWRlbnRpZmllcigpLm9iamVjdCgpLnRvVUludDY0KCkpOworICAg
ICAgICAgICAgICAgIHJlc3VsdC5yZW1vdmUoZnJhbWUtPmRvY3VtZW50KCktPmlkZW50aWZpZXIo
KS5vYmplY3QoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmgKaW5kZXggZGRlZDk3MGIzY2YyZjFlZTFlNzRmYWE2MDkyODgzYWE2MTQyZGQ2MC4uNTFj
MDQ3YTI3NTE1NzYyZThlMWRhZTJmNzI2ZjY2ODUzMjJjZGUwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgK
QEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxVVUlEPiB3ZWJO
b3RpZmljYXRpb25JRChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogICAgIFJlZjxBUEk6OkRh
dGE+IGNyZWF0ZVdlYkRhdGFGcm9tVWludDhBcnJheShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYp
OwogICAgIAotICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nPiBEb2N1bWVudElE
VG9VUkxNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFVVSUQsIFN0cmluZz4gRG9jdW1lbnRJRFRv
VVJMTWFwOwogICAgIERvY3VtZW50SURUb1VSTE1hcCBsaXZlRG9jdW1lbnRVUkxzKGJvb2wgZXhj
bHVkZURvY3VtZW50c0luUGFnZUdyb3VwUGFnZXMpOwogCiAgICAgLy8gR2FyYmFnZSBjb2xsZWN0
aW9uIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDAzZWViOGIy
ZDgxMzEwZjllOTY3N2ZmM2IwYzBlOTRjMzQ0ZjZmZDUuLjU1Y2E3ZGMzY2UwNmI1NTE0OWNhOWMz
Y2FjZjU4MTJkNTY0OWFmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAK
QEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpj
b250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFNXU2VydmVyQ29ubgogICAgICAgICBzZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHktPmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2Uoc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50
aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMs
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBmb3JtRGF0YSwgU3RyaW5nJiYgcmVmZXJyZXIsIGJv
b2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkKQordm9pZCBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmll
ciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYmIGZvcm1EYXRhLCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBp
c1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIFN0cmluZyYmIGNsaWVudElk
ZW50aWZpZXIsIFN0cmluZyYmIHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIpCiB7CiAgICAgYXV0
byogc2VydmljZVdvcmtlclRocmVhZFByb3h5ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9u
KCkuc2VydmljZVdvcmtlclRocmVhZFByb3h5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAg
ICBpZiAoIXNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSkgewpAQCAtMjU3LDEwICsyNTcsOSBAQCB2
b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIgc2VydgogICAgIH0KIAogICAgIGF1dG8gY2xpZW50ID0gV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y3JlYXRlKG1fY29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MuY29weVJlZigpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciwgcmVxdWVzdC5yZXF1ZXN0ZXIoKSA9PSBSZXNv
dXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbik7Ci0gICAgc3RkOjpvcHRpb25hbDxTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gY2xpZW50SWQgPSBvcHRpb25zLmNsaWVudElkZW50
aWZpZXI7CiAKICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KGZvcm1EYXRhLnRha2VEYXRhKCkpOwot
ICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+c3RhcnRGZXRjaChzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCBXVEZNb3ZlKGNsaWVudCksIFdURk1vdmUoY2xp
ZW50SWQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZmVycmVyKSwgV1RGTW92ZShvcHRp
b25zKSwgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkKTsKKyAgICBzZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHktPnN0YXJ0RmV0Y2goc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGZldGNoSWRlbnRpZmllciwgV1RGTW92ZShjbGllbnQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlZmVycmVyKSwgV1RGTW92ZShvcHRpb25zKSwgaXNTZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRFbmFibGVkLCBXVEZNb3ZlKGNsaWVudElkZW50aWZpZXIpLCBXVEZNb3ZlKHJl
c3VsdGluZ0NsaWVudElkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50
aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1l
c3NhZ2UsIFNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEmJiBzb3VyY2VEYXRhKQpAQCAtMzMzLDIy
ICszMzIsOSBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp3b3JrZXJUZXJt
aW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcgogICAgIG1fY29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6V29ya2VyVGVybWluYXRlZChzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDApOwogfQogCi12
b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVy
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBGaW5k
Q2xpZW50QnlJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OmZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGNsaWVudElkZW50aWZpZXIsIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDYWxsYmFjayYm
IGNhbGxiYWNrKQogewotICAgIGF1dG8gcmVxdWVzdElkZW50aWZpZXIgPSArK21fcHJldmlvdXNS
ZXF1ZXN0SWRlbnRpZmllcjsKLSAgICBtX2ZpbmRDbGllbnRCeUlkZW50aWZpZXJSZXF1ZXN0cy5h
ZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICBtX2Nvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OkZpbmRDbGllbnRCeUlkZW50aWZpZXIgeyByZXF1ZXN0SWRlbnRpZmllciwgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXIgfSwgMCk7Ci19Ci0KLXZvaWQg
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21w
bGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdv
cmtlckNsaWVudERhdGE+JiYgY2xpZW50RGF0YSwgYm9vbCBoYXNTZWN1cml0eUVycm9yKQotewot
ICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9maW5kQ2xpZW50QnlJZGVudGlmaWVyUmVxdWVzdHMu
dGFrZShyZXF1ZXN0SWRlbnRpZmllcikpIHsKLSAgICAgICAgaWYgKGhhc1NlY3VyaXR5RXJyb3Ip
IHsKLSAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShj
bGllbnREYXRhKSk7Ci0gICAgfQorICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpGaW5kQ2xpZW50QnlWaXNpYmxlSWRlbnRpZmllciB7IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjbGllbnRJZGVudGlmaWVyIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWF0Y2hBbGwoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJD
bGllbnRRdWVyeU9wdGlvbnMmIG9wdGlvbnMsIFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxD
YWxsYmFjayYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXgg
MDU4MGQ5ODMyMjhhNzJiYjhjOTk0OWNhMmIxYjRjNzExOGZhYzYxMC4uYWNlMWE5OWRkMTE4NzFm
YzJiZGQ3Y2I0NWZmNTc0YTg3OWYxNTFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0
aW9uKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHNl
dFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBib29sKSBmaW5hbDsKICAgICB2b2lkIHdvcmtlclRlcm1pbmF0ZWQoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwotICAgIHZvaWQgZmluZENsaWVudEJ5SWRl
bnRpZmllcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDYWxsYmFj
ayYmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBGaW5kQ2xpZW50QnlJ
ZGVudGlmaWVyQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBtYXRjaEFsbChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dFF1ZXJ5T3B0aW9ucyYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxs
YmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsYWltKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkV4Y2VwdGlvbk9yPHZvaWQ+
JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIHNraXBXYWl0aW5nKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwpAQCAtOTAs
NyArOTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VydmljZVdvcmtlckZhaWxlZFRvU3RhcnQo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25N
ZXNzYWdlKSBmaW5hbDsKICAgICB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRGF0YSYmLCBT
dHJpbmcmJiB1c2VyQWdlbnQsIFdlYkNvcmU6OldvcmtlclRocmVhZE1vZGUpOwogICAgIHZvaWQg
dXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKLSAgICB2b2lkIHN0YXJ0
RmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlJiYsIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkRW5hYmxlZCk7CisgICAgdm9pZCBzdGFydEZldGNoKFdlYkNvcmU6OlNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBX
ZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmLCBTdHJpbmcm
JiByZWZlcnJlciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQs
IFN0cmluZyYmIGNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIHJlc3VsdGluZ0NsaWVudElkZW50
aWZpZXIpOwogICAgIHZvaWQgY2FuY2VsRmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZl
dGNoSWRlbnRpZmllcik7CiAgICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNl
KFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIpOwogICAgIHZvaWQgcG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
ZGVzdGluYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYm
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhJiYgc291cmNlRGF0YSk7CkBAIC0x
MDEsNyArMTAxLDYgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAm
JiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImJiwgSGFzaE1h
cDxVUkwsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpOwogI2VuZGlm
Ci0gICAgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhPiYmLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpOwogICAgIHZvaWQgbWF0Y2hBbGxDb21wbGV0
ZWQodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKTsKICAgICB2b2lkIHNldFVzZXJBZ2VudChTdHJpbmcm
JiB1c2VyQWdlbnQpOwogICAgIHZvaWQgY2xvc2UoKTsKQEAgLTExNyw3ICsxMTYsNiBAQCBwcml2
YXRlOgogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogCiAgICAgSGFzaFNl
dDxzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50Pj4gbV9sb2Fk
ZXJzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDYWxsYmFj
az4gbV9maW5kQ2xpZW50QnlJZGVudGlmaWVyUmVxdWVzdHM7CiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrPiBtX21hdGNo
QWxsUmVxdWVzdHM7CiAgICAgdWludDY0X3QgbV9wcmV2aW91c1JlcXVlc3RJZGVudGlmaWVyIHsg
MCB9OwogICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZDU0MWI4MDMxOTJiOGQ1NGQxODIxN2ZiMTEy
NTZkZjAwNjk1MzAyMC4uYzZhMWE4ZmIzNjc2ZGZjZDdmMmQ4Zjc0MjBhMWU4YmNjOTBiMzEwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAg
LTI1LDcgKzI1LDcgQEAKIG1lc3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
IE5vdFJlZkNvdW50ZWQgewogICAgIEluc3RhbGxTZXJ2aWNlV29ya2VyKHN0cnVjdCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgY29udGV4dERhdGEsIHN0cnVjdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyRGF0YSB3b3JrZXJEYXRhLCBTdHJpbmcgdXNlckFnZW50LCBlbnVtOmJvb2wg
V2ViQ29yZTo6V29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJlYWRNb2RlKQogICAgIFVwZGF0ZUFw
cEluaXRpYXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBlbnVtOmJvb2wgV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCi0gICAgU3RhcnRGZXRjaChX
ZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMg
b3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgU3RyaW5nIHJlZmVy
cmVyLCBib29sIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCkKKyAgICBT
dGFydEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkZl
dGNoT3B0aW9ucyBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBT
dHJpbmcgcmVmZXJyZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFi
bGVkLCBTdHJpbmcgY2xpZW50SWRlbnRpZmVyLCBTdHJpbmcgcmVzdXRsaW5nQ2xpZW50SWRlbnRp
ZmllcikKICAgICBDYW5jZWxGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVy
IGZldGNoSWRlbnRpZmllcikKICAgICBDb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFdl
YkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQogICAgIFBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGRlc3RpbmF0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEgc291cmNl
RGF0YSkKQEAgLTM3LDcgKzM3LDYgQEAgbWVzc2FnZXMgLT4gV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkg
JiYgUExBVEZPUk0oQ09DT0EpCiAgICAgRGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNj
cmlwdEJ1ZmZlciBzY3JpcHQsIEhhc2hNYXA8VVJMLCBXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGlt
cG9ydGVkU2NyaXB0cyk7CiAjZW5kaWYKLSAgICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxl
dGVkKHVpbnQ2NF90IGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+IGRhdGEsIGJvb2wgaGFzU2VjdXJpdHlFcnJv
cikKICAgICBNYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCBtYXRjaEFsbFJlcXVlc3RJZGVudGlm
aWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+IGNsaWVudHNEYXRh
KQogICAgIFNldFVzZXJBZ2VudChTdHJpbmcgdXNlckFnZW50KQogICAgIFVwZGF0ZVByZWZlcmVu
Y2VzU3RvcmUoc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSkKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzZDEzNmUxZTdk
MzlmZGY2OThjZjQ2ZjU3ZmRmNmRiZGY0YWIzMWNhLi4xNDYxZjY2MDIyNTUwMTIzNTg0Mjg2OTBm
MGNmNzkwNmU2M2Q4ZjRkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDEtMTMgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5pZCBh
IFVVSUQgaW5zdGVhZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM1MDcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VVUlELmNwcDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N5c3RlbVByZXZpZXcubW06
CisKIDIwMjItMDEtMTEgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWJQYWdlUHJveHkgZGVzdHJ1Y3Rpb24gc2hvdWxkIG5vdCBsYXVuY2ggYSBuZXR3b3Jr
IHByb2Nlc3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjFmYTFlYmZhZWM1MGNmYzZiZTQ1
ODgxNTAyODYxMzU3YWE5YzM1NS4uZWI2MmNkY2I0YzMyOWU0ZWRjNDZmYWRmNGRlYmNiNzRjYzVi
YmJmZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNyw2ICsyMDcsNyBAQAogCQk0MTY2
MUM2NjIzNTVFODVFMDBEMzNDMjcgLyogZ2V0VXNlck1lZGlhLXdlYmF1ZGlvLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2NjFDNjUy
MzU1RDk4QjAwRDMzQzI3IC8qIGdldFVzZXJNZWRpYS13ZWJhdWRpby5odG1sICovOyB9OwogCQk0
MTgxQzYyRDI1NUE4OTExMDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTgxQzYy
QzI1NUE4OTExMDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5jcHAgKi87
IH07CiAJCTQxODQ4RjQ0MjQ4OTE4NzkwMDBFMjU4OCAvKiBvcGVuLXdpbmRvdy13aXRoLWZpbGUt
dXJsLXdpdGgtaG9zdC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxODQ4RjQzMjQ4OTE4MTUwMDBFMjU4OCAvKiBvcGVuLXdpbmRvdy13
aXRoLWZpbGUtdXJsLXdpdGgtaG9zdC5odG1sICovOyB9OworCQk0MUQyQTIxRjI3OTA2RjlGMDA4
OEZDQ0UgLyogVVVJRC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNDRENDBFQzIyMUI0NkE3MDA0QjQ3NEYgLyogVVVJRC5jcHAgKi87IH07CiAJCTQx
RTY3QTg1MjVEMTZFODMwMDdCMEE0QyAvKiBTVFVOTWVzc2FnZVBhcnNpbmdUZXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTY3QTg0MjVEMTZF
ODMwMDdCMEE0QyAvKiBTVFVOTWVzc2FnZVBhcnNpbmdUZXN0LmNwcCAqLzsgfTsKIAkJNDQwNzdC
QjEyMzE0NEI1MDAwMTc5RTJEIC8qIERhdGFEZXRlY3RvcnNUZXN0SU9TLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQwNzdCQjAyMzE0NDlEMjAwMTc5
RTJEIC8qIERhdGFEZXRlY3RvcnNUZXN0SU9TLm1tICovOyB9OwogCQk0NDMzQTM5NjIwODA0NDE0
MDA5MUVENTcgLyogU3luY2hyb25vdXNUaW1lb3V0VGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDMzQTM5NTIwODA0NDEzMDA5MUVENTcgLyog
U3luY2hyb25vdXNUaW1lb3V0VGVzdHMubW0gKi87IH07CkBAIC01MzkwLDYgKzUzOTEsNyBAQAog
CQkJCUUzQzIxQTdDMjFCMjVDQTIwMDNCMzFBMyAvKiBVUkxFeHRyYXMubW0gaW4gU291cmNlcyAq
LywKIAkJCQlFM0ExRTc4NTIxQjI1QjkxMDA4QzYwMDcgLyogVVJMUGFyc2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDODNFMDNCMUQwQTYwMjcwMEZFQkNGMyAvKiBVdGlsaXRpZXNDb2NvYS5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTQxRDJBMjFGMjc5MDZGOUYwMDg4RkNDRSAvKiBVVUlELmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjRDMUQwQTU5MEMwMEZFQkNGMyAvKiBWZWN0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdDN0NDMkQxRUE0MTQ2QjAwN0JEOTU2IC8qIFdlYWtM
aW5raW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3QzNGQTY2MUY3QzI0OEYwMDlENEI4MCAv
KiBXZWFrUHRyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvVVVJRC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9V
VUlELmNwcAppbmRleCBkN2RlM2FmYzg3MGY5YTFiMTZmNzkzNjFlYTEwN2EwY2JmNDViYTQwLi4y
ODNiMGY2ZTIzMTk1YjEzMjI4MTdkMTExYTIzMGY0Yzg5YTllYmI3IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VVUlELmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9VVUlELmNwcApAQCAtMzEsMyArMzEsMjYgQEAgVEVTVChXVEYsIEJvb3RT
ZXNzaW9uVVVJRElkZW50aXR5KQogewogICAgIEVYUEVDVF9FUShib290U2Vzc2lvblVVSURTdHJp
bmcoKSwgYm9vdFNlc3Npb25VVUlEU3RyaW5nKCkpOwogfQorCitURVNUKFdURiwgVGVzdFVVSURQ
YXJzaW5nKQoreworICAgIGF1dG8gY3JlYXRlZCAgPSBVVUlEOjpjcmVhdGUoKTsKKyAgICBhdXRv
IHZhbHVlID0gVVVJRDo6cGFyc2UoY3JlYXRlZC50b1N0cmluZygpKTsKKyAgICBFWFBFQ1RfVFJV
RSghIXZhbHVlKTsKKyAgICBFWFBFQ1RfRVEoY3JlYXRlZCwgKnZhbHVlKTsKKworICAgIC8vIHh4
eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eAorICAgIHZhbHVlID0gVVVJRDo6cGFy
c2UoIjEyMzQ1Njc4LTlhYmMtNWRlMC04OUFCLTAxMjM0NTY3ODlhYiIpOworICAgIEVYUEVDVF9G
QUxTRSghIXZhbHVlKTsKKworICAgIHZhbHVlID0gVVVJRDo6cGFyc2UoIjEyMzQ1Njc4LTlhYmMt
NGRlYS03OUFCLTAxMjM0NTY3ODlhYiIpOworICAgIEVYUEVDVF9GQUxTRSghIXZhbHVlKTsKKwor
ICAgIHZhbHVlID0gVVVJRDo6cGFyc2UoIjEyMzQ1Njc4LTlhYmMtNGRlMC04OWFiLTAxMjM0NTY3
ODlhYiIpOworICAgIEVYUEVDVF9UUlVFKCEhdmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHZhbHVl
LT50b1N0cmluZygpID09ICIxMjM0NTY3OC05YWJjLTRkZTAtODlhYi0wMTIzNDU2Nzg5YWIiKTsK
KworICAgIHZhbHVlID0gVVVJRDo6cGFyc2UoIjZlZjk0NGMxLTVjYjgtNDhhYS1BZDEyLUM1Zjgy
M2YwMDVjMyIpOworICAgIEVYUEVDVF9UUlVFKCEhdmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHZh
bHVlLT50b1N0cmluZygpID09ICI2ZWY5NDRjMS01Y2I4LTQ4YWEtYWQxMi1jNWY4MjNmMDA1YzMi
KTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
U3lzdGVtUHJldmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
U3lzdGVtUHJldmlldy5tbQppbmRleCBiZDRiMzVmMjAwMDAxMTBlOGI1ZTA0NmRjMDdiMzBiZDM4
MDY4OWVjLi43MzFiODExNTVkNGE3MTY3MWU4OGFjNGNmNDIwMWVjMjI3YjA0MjgyIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N5c3RlbVByZXZpZXcu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TeXN0ZW1QcmV2
aWV3Lm1tCkBAIC0zNywxOSArMzcsMTkgQEAKIHN0YXRpYyBib29sIGhhc1RyaWdnZXJJbmZvOwog
c3RhdGljIGJvb2wgd2FzVHJpZ2dlcmVkOwogc3RhdGljIHVpbnQ2NF90IGVsZW1lbnRJRDsKLXN0
YXRpYyB1aW50NjRfdCBkb2N1bWVudElEOwogc3RhdGljIHVpbnQ2NF90IHBhZ2VJRDsKIAogQGlu
dGVyZmFjZSBUZXN0U3lzdGVtUHJldmlld1RyaWdnZXJlZEhhbmRsZXIgOiBOU09iamVjdCA8V0tT
Y3JpcHRNZXNzYWdlSGFuZGxlcj4KIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFRlc3RTeXN0ZW1Q
cmV2aWV3VHJpZ2dlcmVkSGFuZGxlcgorU3RyaW5nIGRvY3VtZW50SUQ7CiAKIC0gKHZvaWQpdXNl
ckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50
Q29udHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVz
c2FnZQogewogICAgIGlmIChbbWVzc2FnZS5ib2R5W0AibWVzc2FnZSJdIGlzRXF1YWxUb1N0cmlu
ZzpAImxvYWRlZCJdKSB7CiAgICAgICAgIGVsZW1lbnRJRCA9IFttZXNzYWdlLmJvZHlbQCJlbGVt
ZW50SUQiXSB1bnNpZ25lZEludFZhbHVlXTsKLSAgICAgICAgZG9jdW1lbnRJRCA9IFttZXNzYWdl
LmJvZHlbQCJkb2N1bWVudElEIl0gdW5zaWduZWRJbnRWYWx1ZV07CisgICAgICAgIGRvY3VtZW50
SUQgPSBtZXNzYWdlLmJvZHlbQCJkb2N1bWVudElEIl07CiAgICAgICAgIHBhZ2VJRCA9IFttZXNz
YWdlLmJvZHlbQCJwYWdlSUQiXSB1bnNpZ25lZEludFZhbHVlXTsKICAgICAgICAgaGFzVHJpZ2dl
ckluZm8gPSB0cnVlOwogICAgIH0gZWxzZSBpZiAoW21lc3NhZ2UuYm9keVtAIm1lc3NhZ2UiXSBp
c0VxdWFsVG9TdHJpbmc6QCJ0cmlnZ2VyZWQiXSkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDYwNzhhN2Y2M2RlY2UwMTky
OTFlNzM5NjA5YTdkNDI3ODg4M2RjYjMuLjE0MTY0NzllNjk1MGI0OTU5NDY5MzViZTZkMTkxMDM4
NTBmYzYxNTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0wMS0xMyAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBTZXJ2aWNlV29ya2VyQ2xpZW50
LmlkIGEgVVVJRCBpbnN0ZWFkIG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJvbSBhIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzUwNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVcGRhdGVkIHRlc3RzIHRvIG5vdCByZWx5IG9uIHZpc2libGUgSUQgdG8g
YmUgdGhlIHNlcmlhbGl6YXRpb24gb2YgYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
ci4KKyAgICAgICAgRm9yIHRoYXQgcmVhc29uLCBhZGQgaW50ZXJuYWxzIEFQSSB0byBnZXQgdGhl
IGludGVybmFsIElEIGZyb20gYSBTZXJ2aWNlV29ya2VyQ2xpZW50LgorCisgICAgICAgICogaHR0
cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvY2xpZW50LWFkZGVkLXRvLWNsaWVudHMtd2hlbi1yZXN0
b3JlZC1mcm9tLXBhZ2UtY2FjaGUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMv
c2VydmljZS9jbGllbnQtcmVtb3ZlZC1mcm9tLWNsaWVudHMtd2hpbGUtaW4tcGFnZS1jYWNoZS5o
dG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9nZXRD
bGllbnRJZHMtd29ya2VyLmpzOgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNl
L3NlcnZpY2V3b3JrZXJjbGllbnRzLW1hdGNoQWxsLXdvcmtlci5qczoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1tYXRjaEFsbC5odHRw
cy5odG1sOgorCiAyMDIyLTAxLTExICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29t
PgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gTWFrZSBTVkcgcmVzb3VyY2VzIGNyZWF0ZSByZW1v
dGUgSW1hZ2VCdWZmZXJzIGZvciB0aGVpciBkcmF3aW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZwppbmRleCBmNTYyODhlMDQzZWRjZjZlNjE0MWE2MGI2NWNiODgyNWIxZDdiOWFhLi4yMDdm
MjZkYWMyYTc4ZWQ5MTAwNWYxNzg0ZTJiNWIzOWRkYzU3Yjc0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMi0wMS0xMyAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBTZXJ2aWNlV29ya2VyQ2xpZW50Lmlk
IGEgVVVJRCBpbnN0ZWFkIG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJvbSBhIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzUwNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXIvZmV0Y2gtZXZlbnQuaHR0cHMtZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAxLTEyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBOZXcgc2VydmljZSB3b3Jr
ZXIgQVBJICdGZXRjaEV2ZW50LmhhbmRsZWQnIG5lZWRzIHRvIGJlIHN1cHBvcnRlZApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvY2xpZW50LWFkZGVk
LXRvLWNsaWVudHMtd2hlbi1yZXN0b3JlZC1mcm9tLXBhZ2UtY2FjaGUuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2NsaWVudC1hZGRlZC10by1jbGllbnRzLXdo
ZW4tcmVzdG9yZWQtZnJvbS1wYWdlLWNhY2hlLmh0bWwKaW5kZXggMTA3OTdmMjhlMzRlNWE5NzIy
MDg3MDFkMjdmM2FlZmQxNzUxODQ5Zi4uNmEyMjg0ZWNmMmMzOWYxYjg4ZDY2ZGFiYzJmNWE3YWE2
ZTFiMDIyYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvY2xpZW50LWFkZGVkLXRvLWNsaWVudHMtd2hlbi1yZXN0b3JlZC1mcm9tLXBhZ2UtY2FjaGUu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9jbGllbnQt
YWRkZWQtdG8tY2xpZW50cy13aGVuLXJlc3RvcmVkLWZyb20tcGFnZS1jYWNoZS5odG1sCkBAIC03
MCwxMiArNzAsMTIgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigi
bWVzc2FnZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CiB9KTsKIAogbmF2aWdhdG9yLnNlcnZpY2VXb3Jr
ZXIucmVnaXN0ZXIoInJlc291cmNlcy9nZXRDbGllbnRJZHMtd29ya2VyLmpzIiwgeyB9KS50aGVu
KGZ1bmN0aW9uKHJlZ2lzdHJhdGlvbikgewotICAgIGV4cGVjdGVkQ2xpZW50SWRlbnRpZmllcnMu
cHVzaChpbnRlcm5hbHMuc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIoZG9jdW1lbnQpKTsK
KyAgICBleHBlY3RlZENsaWVudElkZW50aWZpZXJzLnB1c2goaW50ZXJuYWxzLnNlcnZpY2VXb3Jr
ZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIoZG9jdW1lbnQpKTsKIAogICAgIHdvcmtlciA9IHJl
Z2lzdHJhdGlvbi5pbnN0YWxsaW5nOwogICAgIG90aGVyV2luZG93ID0gb3Blbigib3RoZXJfcmVz
b3VyY2VzL3Rlc3QuaHRtbCIpOwogICAgIG90aGVyV2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkg
ewotICAgICAgZXhwZWN0ZWRDbGllbnRJZGVudGlmaWVycy5wdXNoKGludGVybmFscy5zZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllcihvdGhlcldpbmRvdy5kb2N1bWVudCkpOworICAgICAgZXhw
ZWN0ZWRDbGllbnRJZGVudGlmaWVycy5wdXNoKGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50
SW50ZXJuYWxJZGVudGlmaWVyKG90aGVyV2luZG93LmRvY3VtZW50KSk7CiAgICAgICBzdGVwID0g
IkJvdGhDbGllbnRzSW5pdGlhbGx5QWN0aXZlIgogICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJn
ZXRDbGllbnRJZHMiKTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2UvY2xpZW50LXJlbW92ZWQtZnJvbS1jbGllbnRzLXdoaWxlLWluLXBh
Z2UtY2FjaGUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Ns
aWVudC1yZW1vdmVkLWZyb20tY2xpZW50cy13aGlsZS1pbi1wYWdlLWNhY2hlLmh0bWwKaW5kZXgg
ZjlmY2Y1ZDM0MmIxM2MwYWRlMWI1ZWZiYjFhNzQ1YzhjYWI2YTQ3Ny4uNjhhOWZjNjI0OWY1MDUz
NTI5NGRmNDM5NzUxYjUzN2RmOGI2YjA2NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvY2xpZW50LXJlbW92ZWQtZnJvbS1jbGllbnRzLXdoaWxlLWlu
LXBhZ2UtY2FjaGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2Vy
dmljZS9jbGllbnQtcmVtb3ZlZC1mcm9tLWNsaWVudHMtd2hpbGUtaW4tcGFnZS1jYWNoZS5odG1s
CkBAIC02NSwxMiArNjUsMTQgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0
ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CiB9KTsKIAogbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9nZXRDbGllbnRJZHMtd29ya2VyLmpzIiwgeyB9
KS50aGVuKGZ1bmN0aW9uKHJlZ2lzdHJhdGlvbikgewotICAgIHRvcENsaWVudElkZW50aWZpZXIg
PSBpbnRlcm5hbHMuc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIoZG9jdW1lbnQpOworICAg
IGlmICghd2luZG93LmludGVybmFscykKKyAgICAgICAgcmV0dXJuOworICAgIHRvcENsaWVudElk
ZW50aWZpZXIgPSBpbnRlcm5hbHMuc2VydmljZVdvcmtlckNsaWVudEludGVybmFsSWRlbnRpZmll
cihkb2N1bWVudCk7CiAKICAgICB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKICAg
ICBvdGhlcldpbmRvdyA9IG9wZW4oIm90aGVyX3Jlc291cmNlcy90ZXN0Lmh0bWwiKTsKICAgICBv
dGhlcldpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKLSAgICAgIHdpbmRvd0NsaWVudElkZW50
aWZpZXIgPSBpbnRlcm5hbHMuc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIob3RoZXJXaW5k
b3cuZG9jdW1lbnQpOworICAgICAgd2luZG93Q2xpZW50SWRlbnRpZmllciA9IGludGVybmFscy5z
ZXJ2aWNlV29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKG90aGVyV2luZG93LmRvY3VtZW50
KTsKICAgICAgIHN0ZXAgPSAiQm90aENsaWVudHNJbml0aWFsbHlBY3RpdmUiCiAgICAgICB3b3Jr
ZXIucG9zdE1lc3NhZ2UoImdldENsaWVudElkcyIpOwogICAgIH07CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvZ2V0Q2xpZW50SWRz
LXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9nZXRDbGllbnRJZHMtd29ya2VyLmpzCmluZGV4IDk5ZGMxY2I4MjIxZDBkZjhkZjBjZWVj
N2Y1ZmE2YjEwODNkNzNiMTguLmNlMTliMjRmODA4MDRkYTBmNTUxNzkzYWRhN2FmZTY3ZWZlMDRj
YzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jl
c291cmNlcy9nZXRDbGllbnRJZHMtd29ya2VyLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9nZXRDbGllbnRJZHMtd29ya2VyLmpzCkBAIC0z
LDcgKzMsNyBAQCBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsK
ICAgICBjbGllbnRzLm1hdGNoQWxsKHsgaW5jbHVkZVVuY29udHJvbGxlZCA6IHRydWUgfSkudGhl
bihmdW5jdGlvbihjbGllbnRzKSB7CiAgICAgICAgIGxldCBpZHMgPSBbXTsKICAgICAgICAgZm9y
IChsZXQgY2xpZW50IG9mIGNsaWVudHMpCi0gICAgICAgICAgICBpZHMucHVzaChjbGllbnQuaWQp
OworICAgICAgICAgICAgaWRzLnB1c2goc2VsZi5pbnRlcm5hbHMuc2VydmljZVdvcmtlckNsaWVu
dEludGVybmFsSWRlbnRpZmllcihjbGllbnQpKTsKICAgICAgICAgc291cmNlLnBvc3RNZXNzYWdl
KGlkcyk7CiAgICAgfSk7CiB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLW1hdGNoQWxsLXdvcmtlci5qcyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGll
bnRzLW1hdGNoQWxsLXdvcmtlci5qcwppbmRleCBiZGJhMjgyODYwNTNmMWZkYWQwMzVkMzkzM2My
ODY4MDExNzM2OGMzLi5kYjZmMDU0ZjY4OTJjZjAyYTY4ZGQ5OTlmYjg4NjhlMjJmM2NjYTcwIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNl
d29ya2VyY2xpZW50cy1tYXRjaEFsbC13b3JrZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudHMtbWF0Y2hBbGwtd29ya2Vy
LmpzCkBAIC0zLDYgKzMsMTUgQEAgZnVuY3Rpb24gd2FpdEZvcihkdXJhdGlvbikKICAgICByZXR1
cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgZHVyYXRpb24p
KTsKIH0KIAorYXN5bmMgZnVuY3Rpb24gc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXJGcm9t
SW50ZXJuYWxJZGVudGlmaWVyKGludGVybmFsSWRlbnRpZmllcikKK3sKKyAgICAgY29uc3QgY2xp
ZW50cyA9IGF3YWl0IHNlbGYuY2xpZW50cy5tYXRjaEFsbCh7IGluY2x1ZGVVbmNvbnRyb2xsZWQg
OiB0cnVlIH0pOworICAgICBmb3IgKGxldCBjbGllbnQgb2YgY2xpZW50cykgeworICAgICAgICAg
aWYgKGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKGNsaWVu
dCkgPT0gaW50ZXJuYWxJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIGNsaWVudC5pZDsK
KyAgICAgfQorfQorCiBmdW5jdGlvbiBjaGVja0NsaWVudE5vdEluQ29udHJvbGxlZENsaWVudHMo
Y2xpZW50SWRlbnRpZmllcikKIHsKICAgICByZXR1cm4gc2VsZi5jbGllbnRzLm1hdGNoQWxsKCku
dGhlbigoY2xpZW50cykgPT4gewpAQCAtMzcsNyArNDYsNyBAQCBhc3luYyBmdW5jdGlvbiBkb1Rl
c3RBZnRlck1lc3NhZ2UoZXZlbnQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBjb25zdCBjbGllbnRJZGVudGlmaWVyID0gZXZlbnQuZGF0YS5pZGVudGlmaWVyOwor
ICAgICAgICBjb25zdCBjbGllbnRJZGVudGlmaWVyID0gYXdhaXQgc2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXJGcm9tSW50ZXJuYWxJZGVudGlmaWVyKGV2ZW50LmRhdGEuaWRlbnRpZmllcik7
CiAKICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGNoZWNrQ2xpZW50Tm90SW5Db250cm9sbGVk
Q2xpZW50cyhjbGllbnRJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKHJlc3VsdCAhPT0gIlBBU1Mi
KSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9z
ZXJ2aWNld29ya2VyY2xpZW50cy1tYXRjaEFsbC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudHMtbWF0Y2hBbGwuaHR0
cHMuaHRtbAppbmRleCAyZTZkYmY5OTJkMDUyZDlmMWUzZTUxOGRkN2IwZTg1MWVmMjAwMGE3Li42
OWI1ZjI4OTAxNmZlNDgwMWJlMWFhOTAxMmI1ZGI5ZTZkYjQ2ZmEwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1t
YXRjaEFsbC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLW1hdGNoQWxsLmh0dHBzLmh0bWwKQEAgLTI3LDcg
KzI3LDcgQEAgcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CiB9LCAiU2V0dXAgd29ya2Vy
Iik7CiAKIHByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewotICAgIGNvbnN0IHNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyID0gaW50ZXJuYWxzLnNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyKGRvY3VtZW50KTsKKyAgICBjb25zdCBzZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
ciA9IGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKGRvY3Vt
ZW50KTsKICAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+
IHsKICAgICAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVz
c2FnZSIsIHRlc3Quc3RlcF9mdW5jKChldmVudCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhldmVudC5kYXRhLCAiUEFTUyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIv
ZmV0Y2gtZXZlbnQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gt
ZXZlbnQuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDVkMmI5YTQzMmRhMDM0NWY5MDMwNzdmMDBi
NmVmMGE2MGZlZTJkYjQuLmRkMzZlOWJiYTM0NWI4ZTU2MjMxZWU1MmQ4MmE1MmE5NTJjZThmMjkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLWV2ZW50Lmh0dHBzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1ldmVudC5odHRwcy1leHBlY3RlZC50
eHQKQEAgLTYsNyArNiw3IEBAIFBBU1MgU2VydmljZSBXb3JrZXIgcmVzcG9uZHMgdG8gZmV0Y2gg
ZXZlbnQgdXNpbmcgcmVxdWVzdCBmcmFnbWVudCB3aXRoIHN0cmluZwogUEFTUyBTZXJ2aWNlIFdv
cmtlciByZXNwb25kcyB0byBmZXRjaCBldmVudCB3aXRoIGJsb2IgYm9keQogUEFTUyBTZXJ2aWNl
IFdvcmtlciByZXNwb25kcyB0byBmZXRjaCBldmVudCB3aXRoIHRoZSByZWZlcnJlciBVUkwKIFBB
U1MgU2VydmljZSBXb3JrZXIgcmVzcG9uZHMgdG8gZmV0Y2ggZXZlbnQgd2l0aCBhbiBleGlzdGlu
ZyBjbGllbnQgaWQKLUZBSUwgU2VydmljZSBXb3JrZXIgcmVzcG9uZHMgdG8gZmV0Y2ggZXZlbnQg
d2l0aCB0aGUgY29ycmVjdCByZXN1bHRpbmcgY2xpZW50IGlkIGFzc2VydF9lcXVhbHM6IFNlcnZp
Y2UgV29ya2VyIHNob3VsZCByZXNwb25kIHdpdGggYW4gZW1wdHkgcmVzdWx0aW5nIGNsaWVudCBp
ZCBmb3Igc3VicmVzb3VyY2UgcmVxdWVzdHMgZXhwZWN0ZWQgIlJlc3VsdGluZyBDbGllbnQgSUQg
Tm90IEZvdW5kIiBidXQgZ290ICJSZXN1bHRpbmcgQ2xpZW50IElEIEZvdW5kOiB1bmRlZmluZWQi
CitQQVNTIFNlcnZpY2UgV29ya2VyIHJlc3BvbmRzIHRvIGZldGNoIGV2ZW50IHdpdGggdGhlIGNv
cnJlY3QgcmVzdWx0aW5nIGNsaWVudCBpZAogUEFTUyBTZXJ2aWNlIFdvcmtlciBkb2VzIG5vdCBy
ZXNwb25kIHRvIGZldGNoIGV2ZW50CiBQQVNTIFNlcnZpY2UgV29ya2VyIHJlc3BvbmRzIHRvIGZl
dGNoIGV2ZW50IHdpdGggbnVsbCByZXNwb25zZSBib2R5CiBQQVNTIFNlcnZpY2UgV29ya2VyIGZl
dGNoZXMgb3RoZXIgZmlsZSBpbiBmZXRjaCBldmVudAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449311</attachid>
            <date>2022-01-16 23:42:43 -0800</date>
            <delta_ts>2022-01-18 03:45:23 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235070-20220117084240.patch</filename>
            <type>text/plain</type>
            <size>91414</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMyYTRhOWU1NGNmMWZmYjQ1NzU5ZDg0
ZWUxY2VhYzQwMGNkYzU1YWIuLjAwNThjMmQzNGY2ZGMwMzNiYjdiOGQxN2UyNTgwOGQzMGMxNjhi
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5pZCBhIFVV
SUQgaW5zdGVhZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM1MDcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAg
ICAgKiB3dGYvVVVJRC5jcHA6CisgICAgICAgICogd3RmL1VVSUQuaDoKKyAgICAgICAgIEFkZCBy
b3V0aW5lIHRvIHN0cmluZ2lmeSBhIFVVSUQuCisgICAgICAgICBBZGQgcm91dGluZSB0byBwYXJz
ZSBhIHN0cmluZ2lmaWVkIFVVSUQuCisgICAgICAgICBXZSByZXN0cmljdCBVVUlEOjpjcmVhdGUg
dG8gdmFsdWVzIGZvciB3aGljaCB0aGUgdmVyc2lvbiA0IFVVSUQgc3RyaW5naWZpY2F0aW9uIGlz
IGJpamVjdGl2ZS4KKwogMjAyMi0wMS0xNiAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBGaXggQysrMjAgYnVpbGQgd2FybmluZ3Mgd2l0aCBHQ0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBjMTk5NWJmMTJlYjJlNDM4MzBjMDRlNzUwOTAxYzdjMmRjNDhhNDI4Li43YmNkYWRmNjk2
NzBhNmRhYTQzNWY0ZmU3OWIzYzM2MGZlZmVjZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEg
QEAKKzIwMjItMDEtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAg
ICAgIE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5pZCBhIFVVSUQgaW5zdGVhZCBvZiBhIHN0cmlu
ZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MDcwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgVXBkYXRlIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyIHRvIGJlIGEgcHJvY2Vzcy1zY29wZWQgVVVJRC4KKyAgICAg
ICAgVGhpcyBhbGxvd3MgdG8gaWRlbnRpZnkgdGhlIHByb2Nlc3MgcnVubmluZyBhIHByb2Nlc3Mg
YXMgd2VsbCBhcyBleHBvc2luZyB0byBKYXZhU2NyaXB0IGNvbnRleHQgaWRlbnRpZmllcnMgYXMg
VVVJRHMuCisgICAgICAgIFRoaXMgaXMgbWF0Y2hpbmcgd2hhdCBDaHJvbWUgYW5kIEZpcmVmb3gg
YXJlIGRvaW5nLgorICAgICAgICBNYWtlIFNXU2VydmVyIHN0b3JlIHRoZSBtYXBpbmcgZnJvbSBj
b250ZXh0IFVVSUQgc3RyaW5ncyB0byB0aGUgaW50ZXJuYWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXJzLgorICAgICAgICBUaGlzIGFsbG93cyB0byBmaW5kIGEgU2VydmljZVdvcmtl
ckNsaWVudCBkaXJlY3RseSBmcm9tIGl0cyBKYXZhU2NyaXB0IGV4cG9zZWQgaWRlbnRpZmllci4K
KyAgICAgICAgUmVuYW1lIHJlc2VydmVkQ2xpZW50SWQgaW4gcmVzdWx0aW5nQ2xpZW50SWQgdG8g
bWF0Y2ggdGhlIHNwZWMuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKwor
ICAgICAgICAqIE1vZHVsZXMvd2ViLWxvY2tzL1dlYkxvY2tSZWdpc3RyeS5jcHA6CisgICAgICAg
ICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudExvYWRlci5jcHA6CisgICAgICAgICogcGFnZS9tYWMvUGFnZU1hYy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9Qcm9jZXNzUXVhbGlmaWVkLmg6CisgICAgICAgICogcGxhdGZvcm0vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5jcHA6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxz
LmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaDoKKyAgICAg
ICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9GZXRjaEV2ZW50LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvRmV0
Y2hFdmVudC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmlkbDoKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHA6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHA6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5Lmg6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKwogMjAyMi0w
MS0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVHJhbnNt
aXQgbmV0d29yayBsb2FkIG1ldHJpY3Mgd2hlbiBzZXJ2aWNlIHdvcmtlciBpcyB1c2luZyBvbmUg
b2YgaXRzIG5ldHdvcmsgbG9hZCB0byByZXNwb25kIHRvIEZldGNoRXZlbnRzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGQ3NmQ3ZmNjYjcxNWU4NGQ0YjJiOWRiOWRiMDczNWJhYjhkMmZiZTEuLjQ0Mjc5MzU2OWFmMmVk
NWZmNjhhZGRiMjc0YTFkN2Y0N2U3ZmQ2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIw
MjItMDEtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIE1h
a2UgU2VydmljZVdvcmtlckNsaWVudC5pZCBhIFVVSUQgaW5zdGVhZCBvZiBhIHN0cmluZyBkZXJp
dmVkIGZyb20gYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MDcwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgQ2hhbmdlIGZpbmRCeUNsaWVudElkZW50
aWZpZXIgaW50byBmaW5kQnlWaXNpYmxlQ2xpZW50SWRlbnRpZmllcmFuIGFuZCBtYWtlIGl0IGFz
biBhc3luYyByZXBseS4KKyAgICAgICAgVXBkYXRlIGZldGNoIGV2ZW50IGNvZGUgcGF0aCB0byBz
ZW5kIHRoZSB2aXNpYmxlIElEcyBvZiB0aGUgRmV0Y2hFdmVudCBmcm9tIG5ldHdvcmsgcHJvY2Vz
cyB0byB3b3JrZXIgY29udGV4dCBwcm9jZXNzLgorICAgICAgICBXZSBzdG9yZSB0aGVzZSBJRHMg
aW4gTmV0d29ya1Jlc291cmNlTG9hZGVyIHNvIHRoYXQgd2UgY2FuIGNoYW5nZSB0aGVtIGluIGNh
c2Ugb2YgcmVkaXJlY3Rpb24gZm9yIG5hdmlnYXRpb25zLiAKKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKwogMjAyMi0wMS0xNiAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVHJhbnNtaXQgbmV0d29yayBsb2FkIG1l
dHJpY3Mgd2hlbiBzZXJ2aWNlIHdvcmtlciBpcyB1c2luZyBvbmUgb2YgaXRzIG5ldHdvcmsgbG9h
ZCB0byByZXNwb25kIHRvIEZldGNoRXZlbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9V
VUlELmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwCmluZGV4IDlmYWQwZjFhOGUzMjgzNjc1
YTNmY2NmNGU3MzI1YmY1OTgzMWQ0MTEuLmViNWRkMzg5MzFkMDY3YjA3ZDc5MzgwZTgzMDNiN2Jm
NmQzNmQxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1VVSUQuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL0FTQ0lJ
Q1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4K
ICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9J
bnRlZ2VyQ29udmVyc2lvbi5oPgogCiAjaWYgT1MoREFSV0lOKQogI2luY2x1ZGUgPHN5cy9zeXNj
dGwuaD4KQEAgLTQ1LDkgKzQ2LDE1IEBAIG5hbWVzcGFjZSBXVEYgewogVVVJRDo6VVVJRCgpCiB7
CiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YobV9kYXRhKSA9PSAxNik7CisgICAgYXV0byogZGF0
YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KCZtX2RhdGEpOworCiAgICAgZG8g
ewotICAgICAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyhyZWludGVycHJldF9jYXN0
PHVuc2lnbmVkIGNoYXIqPigmbV9kYXRhKSwgMTYpOworICAgICAgICBjcnlwdG9ncmFwaGljYWxs
eVJhbmRvbVZhbHVlcyhkYXRhLCAxNik7CiAgICAgfSB3aGlsZSAobV9kYXRhID09IGVtcHR5VmFs
dWUgfHwgbV9kYXRhID09IGRlbGV0ZWRWYWx1ZSk7CisKKyAgICAvLyBXZSBzYW5pdGl6ZSB0aGUg
dmFsdWUgc28gYXMgbm90IGxvb3NpbmcgYW55IGRhdGEgd2hlbiBnb2luZyB0byBWZXJzaW9uIDQg
VVVJRHMuCisgICAgZGF0YVs1XSAmPSAweDBmOworICAgIGRhdGFbMTFdICY9IDB4Y2Y7CiB9CiAK
IHVuc2lnbmVkIFVVSUQ6Omhhc2goKSBjb25zdApAQCAtNTUsMTAgKzYyLDkgQEAgdW5zaWduZWQg
VVVJRDo6aGFzaCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeShy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPigmbV9kYXRhKSwgMTYpOwogfQog
Ci1TdHJpbmcgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpCitTdHJpbmcgVVVJRDo6dG9TdHJp
bmcoKSBjb25zdAogewotICAgIHVuc2lnbmVkIHJhbmRvbURhdGFbNF07Ci0gICAgY3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21WYWx1ZXMocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4ocmFu
ZG9tRGF0YSksIHNpemVvZihyYW5kb21EYXRhKSk7CisgICAgYXV0byogcmFuZG9tRGF0YSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQqPigmbV9kYXRhKTsKIAogICAgIC8vIEZvcm1h
dCBhcyBWZXJzaW9uIDQgVVVJRC4KICAgICByZXR1cm4gbWFrZVN0cmluZygKQEAgLTc2LDYgKzgy
LDY1IEBAIFN0cmluZyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkKICAgICApOwogfQogCitz
dGQ6Om9wdGlvbmFsPFVVSUQ+IFVVSUQ6OnBhcnNlKFN0cmluZ1ZpZXcgdmFsdWUpCit7CisgICAg
Ly8gVmVyc2lvbiA0IFVVSURzIGhhdmUgdGhlIGZvcm0geHh4eHh4eHgteHh4eC00eHh4LXl4eHgt
eHh4eHh4eHh4eHh4IHdpdGggaGV4YWRlY2ltYWwgZGlnaXRzIGZvciB4IGFuZCBvbmUgb2YgOCwg
OSwgQSwgb3IgQiBmb3IgeS4KKyAgICBpZiAodmFsdWUubGVuZ3RoKCkgIT0gMzYpCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICBpZiAodmFsdWVbOF0gIT0gJy0nIHx8IHZhbHVlWzEzXSAhPSAn
LScgIHx8IHZhbHVlWzE0XSAhPSAnNCcgfHwgdmFsdWVbMThdICE9ICctJyB8fCB2YWx1ZVsyM10g
IT0gJy0nKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgdW5zaWduZWQgeSA9IHZhbHVlWzE5
XTsKKyAgICBpZiAoeSA9PSAnOCcgfHwgeSA9PSAnOScpCisgICAgICAgIHkgPSB5IC0gJzgnOwor
ICAgIGVsc2UgaWYgKHkgPT0gJ2EnIHx8IHkgPT0gJ0EnKQorICAgICAgICB5ID0gMjsKKyAgICBl
bHNlIGlmICh5ID09ICdiJyB8fCB5ID09ICdCJykKKyAgICAgICAgeSA9IDM7CisgICAgZWxzZQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBmaXJzdFZhbHVlID0gcGFyc2VJbnRlZ2Vy
PHVuc2lnbmVkPih2YWx1ZS5zdWJzdHJpbmcoMCwgOCksIDE2KTsKKyAgICBpZiAoIWZpcnN0VmFs
dWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIHNlY29uZFZhbHVlID0gcGFyc2VJ
bnRlZ2VyPHVuc2lnbmVkPih2YWx1ZS5zdWJzdHJpbmcoOSwgNCksIDE2KTsKKyAgICBpZiAoIXNl
Y29uZFZhbHVlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byB0aGlyZFZhbHVlID0g
cGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1ZS5zdWJzdHJpbmcoMTUsIDMpLCAxNik7CisgICAg
aWYgKCF0aGlyZFZhbHVlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBmb3VydGhW
YWx1ZSA9IHBhcnNlSW50ZWdlcjx1bnNpZ25lZD4odmFsdWUuc3Vic3RyaW5nKDIwLCAzKSwgMTYp
OworICAgIGlmICghZm91cnRoVmFsdWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRv
IGZpZnRoVmFsdWUgPSBwYXJzZUludGVnZXI8dW5zaWduZWQ+KHZhbHVlLnN1YnN0cmluZygyNCwg
NCksIDE2KTsKKyAgICBpZiAoIWZpZnRoVmFsdWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICBhdXRvIHNpeHRoVmFsdWUgPSBwYXJzZUludGVnZXI8dW5zaWduZWQ+KHZhbHVlLnN1YnN0cmlu
ZygyOCwgOCksIDE2KTsKKyAgICBpZiAoIXNpeHRoVmFsdWUpCisgICAgICAgIHJldHVybiB7IH07
CisKKyAgICBVSW50MTI4IHV1aWRWYWx1ZTsKKworICAgIGF1dG8qIGRhdGEgPSByZWludGVycHJl
dF9jYXN0PHVuc2lnbmVkKj4oJnV1aWRWYWx1ZSk7CisgICAgZGF0YVswXSA9ICpmaXJzdFZhbHVl
OworICAgIGRhdGFbMV0gPSAoKnNlY29uZFZhbHVlIDw8IDE2KSB8ICp0aGlyZFZhbHVlOworICAg
IGRhdGFbMl0gPSAoKCpmb3VydGhWYWx1ZSA8PCAxNikgfCAqZmlmdGhWYWx1ZSkgKyAoeSA8PCAz
MCk7CisgICAgZGF0YVszXSA9ICpzaXh0aFZhbHVlOworCisgICAgcmV0dXJuIFVVSUQoV1RGTW92
ZSh1dWlkVmFsdWUpKTsKK30KKworU3RyaW5nIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKQor
eworICAgIHJldHVybiBVVUlEOjpjcmVhdGUoKS50b1N0cmluZygpOworfQorCiBTdHJpbmcgYm9v
dFNlc3Npb25VVUlEU3RyaW5nKCkKIHsKICNpZiBPUyhEQVJXSU4pCkBAIC05NywzMSArMTYyLDcg
QEAgU3RyaW5nIGJvb3RTZXNzaW9uVVVJRFN0cmluZygpCiAKIGJvb2wgaXNWZXJzaW9uNFVVSUQo
U3RyaW5nVmlldyB2YWx1ZSkKIHsKLSAgICAvLyBWZXJzaW9uIDQgVVVJRHMgaGF2ZSB0aGUgZm9y
bSB4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHggd2l0aCBoZXhhZGVjaW1hbCBk
aWdpdHMgZm9yIHggYW5kIG9uZSBvZiA4LCA5LCBBLCBvciBCIGZvciB5LgotICAgIGlmICh2YWx1
ZS5sZW5ndGgoKSAhPSAzNikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZm9yIChhdXRv
IGNwdHIgPSAwOyBjcHRyIDwgMzY7ICsrY3B0cikgewotICAgICAgICBpZiAoY3B0ciA9PSA4IHx8
IGNwdHIgPT0gMTMgfHwgY3B0ciA9PSAxOCB8fCBjcHRyID09IDIzKSB7Ci0gICAgICAgICAgICBp
ZiAodmFsdWVbY3B0cl0gIT0gJy0nKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjcHRyID09IDE0KSB7
Ci0gICAgICAgICAgICBpZiAodmFsdWVbY3B0cl0gIT0gJzQnKQotICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChjcHRyID09IDE5KSB7Ci0gICAgICAgICAgICBhdXRvIHkgPSB2YWx1ZVtjcHRyXTsKLSAgICAg
ICAgICAgIGlmICh5ICE9ICc4JyAmJiB5ICE9ICc5JyAmJiB5ICE9ICdhJyAmJiB5ICE9ICdBJyAm
JiB5ICE9ICdiJyAmJiB5ICE9ICdCJykKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIWlzQVNDSUlIZXhE
aWdpdCh2YWx1ZVtjcHRyXSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiAhIVVVSUQ6OnBhcnNlKHZhbHVlKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VVUlELmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9VVUlELmgKaW5kZXggNWY1NTE4ZDlkMzcwNjYwNjVkZTA2ZjE0MDkyMWM2NzA3
ZDM2MzM0ZC4uZDExNjE3ZDY5ZTAxZGUwYTM3ZjAyNmYxNjk3NWYxMGZlMDg0ZTI1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvVVVJRC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VVSUQuaApA
QCAtMzAsNiArMzAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9IYXNoZXIu
aD4KICNpbmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTQ4LDYgKzQ5LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gVVVJRCB7IH07
CiAgICAgfQogCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFVV
SUQ+IHBhcnNlKFN0cmluZ1ZpZXcpOworCiAgICAgZXhwbGljaXQgVVVJRChTcGFuPGNvbnN0IHVp
bnQ4X3QsIDE2PiBzcGFuKQogICAgIHsKICAgICAgICAgbWVtY3B5KCZtX2RhdGEsIHNwYW4uZGF0
YSgpLCAxNik7CkBAIC04MCw2ICs4Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEgPT0gZGVsZXRlZFZhbHVlOyB9
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFVVSUQoKTsKQEAgLTEyMiw2ICsxMjYsMTEgQEAgc3RkOjpvcHRp
b25hbDxVVUlEPiBVVUlEOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICByZXR1cm4gVVVJ
RCB7IChzdGF0aWNfY2FzdDxVSW50MTI4PigqaGlnaCkgPDwgNjQpIHwgKmxvdyB9OwogfQogCitp
bmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IFVVSUQmIHV1aWQpCit7CisgICAg
YWRkKGhhc2hlciwgdXVpZC5oYXNoKCkpOworfQorCiAvLyBDcmVhdGVzIGEgVVVJRCB0aGF0IGNv
bnNpc3RzIG9mIDMyIGhleGFkZWNpbWFsIGRpZ2l0cyBhbmQgcmV0dXJucyBpdHMgY2Fub25pY2Fs
IGZvcm0uCiAvLyBUaGUgY2Fub25pY2FsIGZvcm0gaXMgZGlzcGxheWVkIGluIDUgZ3JvdXBzIHNl
cGFyYXRlZCBieSBoeXBoZW5zLCBpbiB0aGUgZm9ybSA4LTQtNC00LTEyIGZvciBhIHRvdGFsIG9m
IDM2IGNoYXJhY3RlcnMuCiAvLyBUaGUgaGV4YWRlY2ltYWwgdmFsdWVzICJhIiB0aHJvdWdoICJm
IiBhcmUgb3V0cHV0IGFzIGxvd2VyIGNhc2UgY2hhcmFjdGVycy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA0NjFiOTk3OGFkOWI3ZTE1N2E0
OTFjMDdlM2M5ZTcwYWY0MjFkZDg1Li4yOWRjZWVmNTMzM2Y2OWRmMmU1ZjMwZWRlZmRkNjEzNTc3
ZmU2NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogfTsKIAogU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCi0gICAgOiBtX2lkZW50aWZpZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpKQorICAgIDog
bV9pZGVudGlmaWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
KQogewogICAgIExvY2tlciBsb2NrZXIgeyBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExv
Y2sgfTsKICAgICBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmFkZChtX2lkZW50aWZp
ZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXgg
MzJjODhiNWQzNmRiMDczODliN2ZjNjAzODRhZTJjNjcxYzgxODA5MS4uZWY3NjNiNzkxMjkzNDk4
ODVlNmZlNGZhZTkzMWQ2YzJhODY4MTFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCkBAIC0yMDk1LDcgKzIwOTUsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjps
b2FkTWFpblJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIGlmICghbV90ZW1wb3JhcnlTZXJ2aWNlV29ya2VyQ2xpZW50KSB7
CiAgICAgICAgIC8vIFRoZSBtYWluIG5hdmlnYXRpb24gbG9hZCB3aWxsIHRyaWdnZXIgdGhlIHJl
Z2lzdHJhdGlvbiBvZiB0aGUgdGVtcCBjbGllbnQuCi0gICAgICAgIG1fdGVtcG9yYXJ5U2Vydmlj
ZVdvcmtlckNsaWVudCA9IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyOjpnZW5lcmF0
ZVRocmVhZFNhZmUoKTsKKyAgICAgICAgbV90ZW1wb3JhcnlTZXJ2aWNlV29ya2VyQ2xpZW50ID0g
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgICAgIEFT
U0VSVCghdGVtcG9yYXJ5SWRlbnRpZmllclRvTG9hZGVyTWFwKCkuY29udGFpbnMoKm1fdGVtcG9y
YXJ5U2VydmljZVdvcmtlckNsaWVudCkpOwogICAgICAgICB0ZW1wb3JhcnlJZGVudGlmaWVyVG9M
b2FkZXJNYXAoKS5hZGQoKm1fdGVtcG9yYXJ5U2VydmljZVdvcmtlckNsaWVudCwgdGhpcyk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KaW5kZXggN2FjZDU5N2FmYzgwNzc5OGJh
ZjIwNDg5ODY3ZDI2MjZlYjc4MjRhMS4uNDQ5YThmZjZjZDY5NGQyNGM1YWYxNGJkZWFmNTRjNjI0
YzIyYzExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCkBAIC04MSw3ICs4MSw3IEBA
IHZvaWQgUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICAgICAgICAgIFdURkxvZ0Fsd2F5
cygiJXUgbGl2ZSBkb2N1bWVudHM6IiwgRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpLnNpemUoKSk7
CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERv
Y3VtZW50cygpKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZG9jdW1lbnRUeXBlID0g
aXM8U1ZHRG9jdW1lbnQ+KGRvY3VtZW50KSA/ICJTVkdEb2N1bWVudCIgOiAiRG9jdW1lbnQiOwot
ICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXMgJXAgJXMgKHJlZkNvdW50ICVkLCByZWZl
cmVuY2luZ05vZGVDb3VudCAlZCkgJXMiLCBkb2N1bWVudFR5cGUsIGRvY3VtZW50LCBkb2N1bWVu
dC0+aWRlbnRpZmllcigpLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgZG9jdW1lbnQtPnJlZkNv
dW50KCksIGRvY3VtZW50LT5yZWZlcmVuY2luZ05vZGVDb3VudCgpLCBkb2N1bWVudC0+dXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIl
cyAlcCAlIiBQUkl1NjQgIi0lcyAocmVmQ291bnQgJWQsIHJlZmVyZW5jaW5nTm9kZUNvdW50ICVk
KSAlcyIsIGRvY3VtZW50VHlwZSwgZG9jdW1lbnQsIGRvY3VtZW50LT5pZGVudGlmaWVyKCkucHJv
Y2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBkb2N1bWVudC0+aWRlbnRpZmllcigpLnRvU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgZG9jdW1lbnQtPnJlZkNvdW50KCksIGRvY3VtZW50LT5yZWZl
cmVuY2luZ05vZGVDb3VudCgpLCBkb2N1bWVudC0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
LmgKaW5kZXggZTM2ZjQyMjgzMDE3OTFmY2UzZTM3OGJmMDYxMTU1NWI2OTljYjc5YS4uMTAyOTk5
YzY5YTIzODY3N2ZiNmUwYjM0MzM1ODFjN2VmMjM1YTE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5o
CkBAIC0yNywxMCArMjcsNzkgQEAKIAogI2luY2x1ZGUgIlByb2Nlc3NRdWFsaWZpZWQuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotZW51bSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllclR5cGUg
eyB9OwotdXNpbmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgPSBQcm9jZXNzUXVh
bGlmaWVkPE9iamVjdElkZW50aWZpZXI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXJU
eXBlPj47Cit0ZW1wbGF0ZSA8PgorY2xhc3MgUHJvY2Vzc1F1YWxpZmllZDxVVUlEPiB7CitwdWJs
aWM6CisgICAgc3RhdGljIFByb2Nlc3NRdWFsaWZpZWQgZ2VuZXJhdGUoKSB7IHJldHVybiB7IFVV
SUQ6OmNyZWF0ZSgpLCBQcm9jZXNzOjppZGVudGlmaWVyKCkgfTsgfQorCisgICAgUHJvY2Vzc1F1
YWxpZmllZCgpCisgICAgICAgIDogbV9vYmplY3QoV1RGOjpVSW50MTI4KDApKQorICAgIHsKKyAg
ICB9CisKKyAgICBQcm9jZXNzUXVhbGlmaWVkKFVVSUQmJiBvYmplY3QsIFByb2Nlc3NJZGVudGlm
aWVyIHByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICA6IG1fb2JqZWN0KFdURk1vdmUob2JqZWN0
KSkKKyAgICAgICAgLCBtX3Byb2Nlc3NJZGVudGlmaWVyKHByb2Nlc3NJZGVudGlmaWVyKQorICAg
IHsKKyAgICB9CisKKyAgICBQcm9jZXNzUXVhbGlmaWVkKGNvbnN0IFVVSUQmIG9iamVjdCwgUHJv
Y2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAgIDogbV9vYmplY3Qob2Jq
ZWN0KQorICAgICAgICAsIG1fcHJvY2Vzc0lkZW50aWZpZXIocHJvY2Vzc0lkZW50aWZpZXIpCisg
ICAgeworICAgIH0KKworICAgIFByb2Nlc3NRdWFsaWZpZWQoV1RGOjpIYXNoVGFibGVEZWxldGVk
VmFsdWVUeXBlKQorICAgICAgICA6IG1fb2JqZWN0KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVl
KQorICAgICAgICAsIG1fcHJvY2Vzc0lkZW50aWZpZXIoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWUpCisgICAgeworICAgIH0KKworICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAh
IW1fcHJvY2Vzc0lkZW50aWZpZXI7IH0KKworICAgIGNvbnN0IFVVSUQmIG9iamVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fb2JqZWN0OyB9CisgICAgUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NJZGVudGlmaWVyOyB9CisKKyAgICB1bnNp
Z25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3QuaGFzaCgpOyB9CisgICAgYm9vbCBp
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc0lkZW50aWZp
ZXIuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFByb2Nlc3NRdWFsaWZpZWQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX29iamVjdCA9PSBv
dGhlci5tX29iamVjdCAmJiBtX3Byb2Nlc3NJZGVudGlmaWVyID09IG90aGVyLm1fcHJvY2Vzc0lk
ZW50aWZpZXI7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJvY2Vzc1F1YWxpZmllZCYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisKKyAgICBTdHJpbmcg
dG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX29iamVjdC50b1N0cmluZygpOyB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdCB7IGVuY29kZXIgPDwgbV9vYmplY3QgPDwgbV9wcm9jZXNzSWRlbnRpZmllcjsgfQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NR
dWFsaWZpZWQ+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAgVVVJRCBtX29iamVj
dDsKKyAgICBQcm9jZXNzSWRlbnRpZmllciBtX3Byb2Nlc3NJZGVudGlmaWVyOworfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxQcm9jZXNzUXVhbGlmaWVkPFVV
SUQ+PiBQcm9jZXNzUXVhbGlmaWVkPFVVSUQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBzdGQ6Om9wdGlvbmFsPFVVSUQ+IG9iamVjdDsKKyAgICBkZWNvZGVyID4+IG9iamVjdDsK
KyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBwcm9jZXNzSWRlbnRpZmllcjsKKyAgICBkZWNv
ZGVyID4+IHByb2Nlc3NJZGVudGlmaWVyOworICAgIGlmICghcHJvY2Vzc0lkZW50aWZpZXIpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgeyAqb2JqZWN0LCAqcHJv
Y2Vzc0lkZW50aWZpZXIgfSB9OworfQorCit0ZW1wbGF0ZSA8PgoraW5saW5lIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFByb2Nlc3NRdWFsaWZpZWQ8VVVJRD4m
IHByb2Nlc3NRdWFsaWZpZWQpCit7CisgICAgdHMgPDwgIlByb2Nlc3NRdWFsaWZpZWQoIiA8PCBw
cm9jZXNzUXVhbGlmaWVkLnByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSA8PCAnLScgPDwg
cHJvY2Vzc1F1YWxpZmllZC5vYmplY3QoKS50b1N0cmluZygpIDw8ICcpJzsKKyAgICByZXR1cm4g
dHM7Cit9CisKK3VzaW5nIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyID0gUHJvY2Vz
c1F1YWxpZmllZDxVVUlEPjsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmlu
ZGV4IGI5ZWFhOGJmNzg2ZmE0MzU4YThlMmUxMmVjOTAzODFjOTY0N2UyNGMuLjg1Y2UyNDJkYzY1
M2NmYzlmMzA3NDc1ZWM1ZGM2MWViNjAzYTY1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTI3NjAsMTQgKzI3NjAsMTYgQEAgdW5zaWduZWQgSW50ZXJuYWxzOjpudW1i
ZXJPZlJlc2l6ZU9ic2VydmVycyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiAgICAg
cmV0dXJuIGRvY3VtZW50Lm51bWJlck9mUmVzaXplT2JzZXJ2ZXJzKCk7CiB9CiAKLXVpbnQ2NF90
IEludGVybmFsczo6ZG9jdW1lbnRJZGVudGlmaWVyKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkg
Y29uc3QKK1N0cmluZyBJbnRlcm5hbHM6OmRvY3VtZW50SWRlbnRpZmllcihjb25zdCBEb2N1bWVu
dCYgZG9jdW1lbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRvY3VtZW50LmlkZW50aWZpZXIoKS5v
YmplY3QoKS50b1VJbnQ2NCgpOworICAgIHJldHVybiBkb2N1bWVudC5pZGVudGlmaWVyKCkub2Jq
ZWN0KCkudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBJbnRlcm5hbHM6OmlzRG9jdW1lbnRBbGl2ZSh1
aW50NjRfdCBkb2N1bWVudElkZW50aWZpZXIpIGNvbnN0Citib29sIEludGVybmFsczo6aXNEb2N1
bWVudEFsaXZlKGNvbnN0IFN0cmluZyYgZG9jdW1lbnRJZGVudGlmaWVyKSBjb25zdAogewotICAg
IHJldHVybiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuY29udGFpbnMoeyBtYWtlT2JqZWN0
SWRlbnRpZmllcjxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllclR5cGU+KGRvY3VtZW50
SWRlbnRpZmllciksIFByb2Nlc3M6OmlkZW50aWZpZXIoKSB9KTsKKyAgICBhdXRvIHV1aWQgPSBV
VUlEOjpwYXJzZShkb2N1bWVudElkZW50aWZpZXIpOworICAgIEFTU0VSVCh1dWlkKTsKKyAgICBy
ZXR1cm4gdXVpZCA/IERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAoKS5jb250YWlucyh7ICp1dWlk
LCBQcm9jZXNzOjppZGVudGlmaWVyKCkgfSkgOiBmYWxzZTsKIH0KIAogdWludDY0X3QgSW50ZXJu
YWxzOjpzdG9yYWdlQXJlYU1hcENvdW50KCkgY29uc3QKQEAgLTI4MDYsNyArMjgwOCw3IEBAIGJv
b2wgSW50ZXJuYWxzOjppc0FueVdvcmtsZXRHbG9iYWxTY29wZUFsaXZlKCkgY29uc3QKICAgICBy
ZXR1cm4gV29ya2xldEdsb2JhbFNjb3BlOjpudW1iZXJPZldvcmtsZXRHbG9iYWxTY29wZXMoKTsK
IH0KIAotU3RyaW5nIEludGVybmFsczo6c2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIoY29u
c3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAorU3RyaW5nIEludGVybmFsczo6c2VydmljZVdv
cmtlckNsaWVudEludGVybmFsSWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGRvY3VtZW50LmlkZW50aWZpZXIoKS50b1N0cmluZygpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMzc1ZGExOTFlY2FjMzJjZDU2MjgzYzA0
NGEyZTk4MWViZjljMDBkNi4uYTFjMzlmN2JhNGQwMWFhMTA3ZGI1YjRmMmRjNmVhNDMwODVhMWIx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC00OTAsOCArNDkwLDggQEAgcHVi
bGljOgogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZSZXNpemVPYnNlcnZlcnMoY29uc3QgRG9jdW1l
bnQmKSBjb25zdDsKIAotICAgIHVpbnQ2NF90IGRvY3VtZW50SWRlbnRpZmllcihjb25zdCBEb2N1
bWVudCYpIGNvbnN0OwotICAgIGJvb2wgaXNEb2N1bWVudEFsaXZlKHVpbnQ2NF90IGRvY3VtZW50
SWRlbnRpZmllcikgY29uc3Q7CisgICAgU3RyaW5nIGRvY3VtZW50SWRlbnRpZmllcihjb25zdCBE
b2N1bWVudCYpIGNvbnN0OworICAgIGJvb2wgaXNEb2N1bWVudEFsaXZlKGNvbnN0IFN0cmluZyYg
ZG9jdW1lbnRJZGVudGlmaWVyKSBjb25zdDsKIAogICAgIHVpbnQ2NF90IHN0b3JhZ2VBcmVhTWFw
Q291bnQoKSBjb25zdDsKIApAQCAtNTAzLDcgKzUwMyw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aXNBbnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgpIGNvbnN0OwogCi0gICAgU3RyaW5nIHNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKGNvbnN0IERvY3VtZW50JikgY29uc3Q7CisgICAgU3Ry
aW5nIHNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQm
KSBjb25zdDsKIAogICAgIFJlZlB0cjxXaW5kb3dQcm94eT4gb3BlbkR1bW15SW5zcGVjdG9yRnJv
bnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgY2xvc2VEdW1teUluc3BlY3RvckZy
b250ZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggOGM2YzMzN2Q3
MWEzYWJiOWUzYmRhOWVmOTgyNTgyNGVjYjk5ZGIyMS4uMDI4MmMyOWU3MGEzNjMwMzA5MTdkNTU5
ZWQ2NWJkMDE0OWM4NzYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAt
OTIwLDggKzkyMCw4IEBAIHR5cGVkZWYgKEZldGNoUmVxdWVzdCBvciBGZXRjaFJlc3BvbnNlKSBG
ZXRjaE9iamVjdDsKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSBib29sZWFuIGlzTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKCk7CiAgICAgW0NvbmRpdGlvbmFsPU1F
RElBX1NUUkVBTV0gYm9vbGVhbiBzaG91bGRBdWRpb1RyYWNrUGxheShBdWRpb1RyYWNrIHRyYWNr
KTsKIAotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBkb2N1bWVudElkZW50aWZpZXIoRG9jdW1lbnQg
ZG9jdW1lbnQpOwotICAgIGJvb2xlYW4gaXNEb2N1bWVudEFsaXZlKHVuc2lnbmVkIGxvbmcgbG9u
ZyBkb2N1bWVudElkZW50aWZpZXIpOworICAgIERPTVN0cmluZyBkb2N1bWVudElkZW50aWZpZXIo
RG9jdW1lbnQgZG9jdW1lbnQpOworICAgIGJvb2xlYW4gaXNEb2N1bWVudEFsaXZlKERPTVN0cmlu
ZyBkb2N1bWVudElkZW50aWZpZXIpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IGxvbmcgbG9uZyBzdG9yYWdlQXJlYU1hcENvdW50OwogCkBAIC05MzMsNyArOTMzLDcgQEAgdHlw
ZWRlZiAoRmV0Y2hSZXF1ZXN0IG9yIEZldGNoUmVzcG9uc2UpIEZldGNoT2JqZWN0OwogICAgIGJv
b2xlYW4gaXNBbnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgpOwogCiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgcHJvY2Vzc0lkZW50aWZpZXI7Ci0gICAgRE9NU3RyaW5nIHNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyKERvY3VtZW50IGRvY3VtZW50KTsKKyAgICBET01TdHJpbmcgc2Vy
dmljZVdvcmtlckNsaWVudEludGVybmFsSWRlbnRpZmllcihEb2N1bWVudCBkb2N1bWVudCk7CiAg
ICAgUHJvbWlzZTx1bmRlZmluZWQ+IHN0b3JlUmVnaXN0cmF0aW9uc09uRGlzaygpOwogICAgIFBy
b21pc2U8ZG91YmxlPiBzZW5kSDJQaW5nKERPTVN0cmluZyB1cmwpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcAppbmRleCBmOGQ2Yzdh
YWIyMGRkODI5NDlmMzdhYjkxNTBlODk1ZDc1YzU5ZTQwLi5kZTNmNWFkM2Q2NmU1MjdlM2QxZDY2
MDA2ZjEyZTM2NzRiNzIxZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1Nl
cnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2Vy
dmljZVdvcmtlckludGVybmFscy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJQdXNo
U3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCIKICNpbmNs
dWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudC5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYv
UHJvY2Vzc0lELmg+CiAKQEAgLTE5Myw2ICsxOTQsMTEgQEAgYm9vbCBTZXJ2aWNlV29ya2VySW50
ZXJuYWxzOjpmZXRjaEV2ZW50SXNTYW1lU2l0ZShGZXRjaEV2ZW50JiBldmVudCkKICAgICByZXR1
cm4gZXZlbnQucmVxdWVzdCgpLmludGVybmFsUmVxdWVzdCgpLmlzU2FtZVNpdGUoKTsKIH0KIAor
U3RyaW5nIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OnNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5h
bElkZW50aWZpZXIoY29uc3QgU2VydmljZVdvcmtlckNsaWVudCYgY2xpZW50KQoreworICAgIHJl
dHVybiBjbGllbnQuaWRlbnRpZmllcigpLnRvU3RyaW5nKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1Nl
cnZpY2VXb3JrZXJJbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdv
cmtlckludGVybmFscy5oCmluZGV4IGJhNjcyZDUyZmIxNWFjNzJlMTA2OGQ3ZDcyNWY0NTEzZjdk
MDc4OTIuLmY1NTY3YThlMGI2ZTA3YmJmNzQ5NDAzMTNhOWE0YzI3NjY5MDNhMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oCkBAIC00MCw2
ICs0MCw3IEBAIGNsYXNzIEZldGNoRXZlbnQ7CiBjbGFzcyBGZXRjaFJlc3BvbnNlOwogY2xhc3Mg
UHVzaFN1YnNjcmlwdGlvbjsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBT
ZXJ2aWNlV29ya2VyQ2xpZW50OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBE
T01Qcm9taXNlRGVmZXJyZWQ7CiAKQEAgLTcxLDYgKzcyLDggQEAgcHVibGljOgogCiAgICAgYm9v
bCBmZXRjaEV2ZW50SXNTYW1lU2l0ZShGZXRjaEV2ZW50Jik7CiAKKyAgICBTdHJpbmcgc2Vydmlj
ZVdvcmtlckNsaWVudEludGVybmFsSWRlbnRpZmllcihjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50
Jik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2VydmljZVdvcmtlckludGVybmFscyhTZXJ2
aWNlV29ya2VySWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1Nl
cnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCmluZGV4IDU4ZmVkYzEwZGVhYTlkZGM4MjI5OWZkOGM1
ZDFlNTQ2ODc4NTA1MWYuLjllM2RkNjg1ZDJhNTkyMGE0NjZkZThiZmM5OTkwMGZkZDM4ZWJhZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFs
cy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxz
LmlkbApAQCAtNTEsNCArNTEsNiBAQAogICAgIFB1c2hTdWJzY3JpcHRpb24gY3JlYXRlUHVzaFN1
YnNjcmlwdGlvbihVU1ZTdHJpbmcgZW5kcG9pbnQsIEVwb2NoVGltZVN0YW1wPyBleHBpcmF0aW9u
VGltZSwgQXJyYXlCdWZmZXIgc2VydmVyVkFQSURQdWJsaWNLZXksIEFycmF5QnVmZmVyIGNsaWVu
dEVDREhQdWJsaWNLZXksIEFycmF5QnVmZmVyIGF1dGgpOwogCiAgICAgYm9vbGVhbiBmZXRjaEV2
ZW50SXNTYW1lU2l0ZShGZXRjaEV2ZW50IGV2ZW50KTsKKworICAgIERPTVN0cmluZyBzZXJ2aWNl
V29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJDbGllbnQgY2xpZW50
KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hF
dmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAK
aW5kZXggNDdiZTJhZTAyY2IzZWQ0NjdiYTdmOWZhOGU0NmFkZGI0MzhiZjg3MS4uNTVkMzMwN2E0
NDA5ZDdjNmFiZjg4NTg3ODg0OWJiNWY5Y2MxNzk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmNwcApAQCAtNjEsNyArNjEsNyBAQCBGZXRjaEV2ZW50
OjpGZXRjaEV2ZW50KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgY29uc3QgQXRv
bVN0cmluZyYgdHlwZQogICAgIDogRXh0ZW5kYWJsZUV2ZW50KHR5cGUsIGluaXRpYWxpemVyLCBp
c1RydXN0ZWQpCiAgICAgLCBtX3JlcXVlc3QoaW5pdGlhbGl6ZXIucmVxdWVzdC5yZWxlYXNlTm9u
TnVsbCgpKQogICAgICwgbV9jbGllbnRJZChXVEZNb3ZlKGluaXRpYWxpemVyLmNsaWVudElkKSkK
LSAgICAsIG1fcmVzZXJ2ZWRDbGllbnRJZChXVEZNb3ZlKGluaXRpYWxpemVyLnJlc2VydmVkQ2xp
ZW50SWQpKQorICAgICwgbV9yZXN1bHRpbmdDbGllbnRJZChXVEZNb3ZlKGluaXRpYWxpemVyLnJl
c3VsdGluZ0NsaWVudElkKSkKICAgICAsIG1fdGFyZ2V0Q2xpZW50SWQoV1RGTW92ZShpbml0aWFs
aXplci50YXJnZXRDbGllbnRJZCkpCiAgICAgLCBtX2hhbmRsZWQocmV0cmlldmVIYW5kbGVkUHJv
bWlzZShnbG9iYWxPYmplY3QsIFdURk1vdmUoaW5pdGlhbGl6ZXIuaGFuZGxlZCkpKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmgKaW5kZXggMWNkNDYxNmVm
MzQ0NTNlY2NiZWJmMGM2MWI2NGU2ZDhiNTg5MDcwNS4uYzUzZmQ1NmE5ZmU4MjkzZjc4NzE5MTg2
NmJlNjRkOTVhNmIwZTA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL0ZldGNoRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0
Y2hFdmVudC5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgSW5pdCA6IEV4
dGVuZGFibGVFdmVudEluaXQgewogICAgICAgICBSZWZQdHI8RmV0Y2hSZXF1ZXN0PiByZXF1ZXN0
OwogICAgICAgICBTdHJpbmcgY2xpZW50SWQ7Ci0gICAgICAgIFN0cmluZyByZXNlcnZlZENsaWVu
dElkOworICAgICAgICBTdHJpbmcgcmVzdWx0aW5nQ2xpZW50SWQ7CiAgICAgICAgIFN0cmluZyB0
YXJnZXRDbGllbnRJZDsKICAgICAgICAgUmVmUHRyPERPTVByb21pc2U+IGhhbmRsZWQ7CiAgICAg
fTsKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogCiAgICAgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0
KCkgeyByZXR1cm4gbV9yZXF1ZXN0LmdldCgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBjbGllbnRJ
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50SWQ7IH0KLSAgICBjb25zdCBTdHJpbmcmIHJlc2Vy
dmVkQ2xpZW50SWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc2VydmVkQ2xpZW50SWQ7IH0KKyAgICBj
b25zdCBTdHJpbmcmIHJlc3VsdGluZ0NsaWVudElkKCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHRp
bmdDbGllbnRJZDsgfQogICAgIGNvbnN0IFN0cmluZyYgdGFyZ2V0Q2xpZW50SWQoKSBjb25zdCB7
IHJldHVybiBtX3RhcmdldENsaWVudElkOyB9CiAgICAgRE9NUHJvbWlzZSYgaGFuZGxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faGFuZGxlZC5nZXQoKTsgfQogCkBAIC05Myw3ICs5Myw3IEBAIHByaXZh
dGU6CiAKICAgICBSZWY8RmV0Y2hSZXF1ZXN0PiBtX3JlcXVlc3Q7CiAgICAgU3RyaW5nIG1fY2xp
ZW50SWQ7Ci0gICAgU3RyaW5nIG1fcmVzZXJ2ZWRDbGllbnRJZDsKKyAgICBTdHJpbmcgbV9yZXN1
bHRpbmdDbGllbnRJZDsKICAgICBTdHJpbmcgbV90YXJnZXRDbGllbnRJZDsKIAogICAgIGJvb2wg
bV9yZXNwb25kV2l0aEVudGVyZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL0ZldGNoRXZlbnQuaWRsCmluZGV4IDk2MDY1YzY4ODM0ODJiMjA4ZGU4NDM0N2Y0
N2ZkYmI4NDI1NzgxMTIuLjVhYWNjNWRlNWRhMzZmZTUyOTUzYmM4MWE0M2UxNmUwYzhiMjZjMTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5pZGwKQEAg
LTM1LDcgKzM1LDcgQEAKICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIEZldGNo
UmVxdWVzdCByZXF1ZXN0OwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBF
bmFibGVkQnlTZXR0aW5nPVNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWRdIHJl
YWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlPGFueT4gcHJlbG9hZFJlc3BvbnNlOwogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgY2xpZW50SWQ7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyByZXNlcnZlZENsaWVudElkOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgcmVzdWx0aW5nQ2xpZW50SWQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyB0YXJnZXRDbGllbnRJZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgUHJvbWlzZTx1bmRlZmlu
ZWQ+IGhhbmRsZWQ7CiAKQEAgLTQ1LDcgKzQ1LDcgQEAKIGRpY3Rpb25hcnkgRmV0Y2hFdmVudElu
aXQgOiBFeHRlbmRhYmxlRXZlbnRJbml0IHsKICAgICByZXF1aXJlZCBGZXRjaFJlcXVlc3QgcmVx
dWVzdDsKICAgICBET01TdHJpbmcgY2xpZW50SWQgPSAiIjsKLSAgICBET01TdHJpbmcgcmVzZXJ2
ZWRDbGllbnRJZCA9ICIiOworICAgIERPTVN0cmluZyByZXN1bHRpbmdDbGllbnRJZCA9ICIiOwog
ICAgIERPTVN0cmluZyB0YXJnZXRDbGllbnRJZCA9ICIiOwogICAgIFByb21pc2U8dW5kZWZpbmVk
PiBoYW5kbGVkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbAppbmRleCBlODFiYWUzZDYyNjBhN2UxM2FlZWFkNTdk
MmExNGY2MDlkMGQ2YTQ0Li40MjA1NDYyZTA5YzNhODAyOGNjZGE4MzI1MGIwNmU5YzFhNDY1MzBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnQuaWRsCkBAIC0yNyw2ICsyNyw3IEBACiAgICAgQ29uZGl0aW9uYWw9U0VSVklD
RV9XT1JLRVIsCiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBFbmFibGVkQXRSdW50aW1lPVNl
cnZpY2VXb3JrZXJFbmFibGVkLAorICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAogICAg
IEV4cG9zZWQ9U2VydmljZVdvcmtlciwKICAgICBJbnRlcmZhY2VOYW1lPUNsaWVudCwKIF0gaW50
ZXJmYWNlIFNlcnZpY2VXb3JrZXJDbGllbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAKaW5kZXggYWI2YjVlODQ3
ZjJiYmVkNzY4YzNkMTkwOWFiMWE4MTg1M2IwYzIxNi4uNmU0NWFhMTc2ZDA3ZjIyOTFiYmUyMzU1
MDc3NjViYWI1ODhhYzFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCkBAIC0zOCw1NSArMzgsMjYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5lIHZvaWQgZGlkRmluaXNoR2V0UmVx
dWVzdChTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlLCBEZWZlcnJlZFByb21pc2UmIHBy
b21pc2UsIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+
PiYmIGNsaWVudERhdGEpCitzdGF0aWMgaW5saW5lIHZvaWQgZGlkRmluaXNoR2V0UmVxdWVzdChT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlLCBEZWZlcnJlZFByb21pc2UmIHByb21pc2Us
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYgY2xpZW50RGF0YSkKIHsK
LSAgICBpZiAoY2xpZW50RGF0YS5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICBwcm9taXNlLnJl
amVjdChjbGllbnREYXRhLnJlbGVhc2VFeGNlcHRpb24oKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgYXV0byBkYXRhID0gY2xpZW50RGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAg
ICBpZiAoIWRhdGEpIHsKKyAgICBpZiAoIWNsaWVudERhdGEpIHsKICAgICAgICAgcHJvbWlzZS5y
ZXNvbHZlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwcm9taXNlLnJlc29sdmU8
SURMSW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJDbGllbnQ+PihTZXJ2aWNlV29ya2VyQ2xpZW50Ojpn
ZXRPckNyZWF0ZShzY29wZSwgV1RGTW92ZShkYXRhLnZhbHVlKCkpKSk7Ci19Ci0KLXN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllckZyb21TdHJpbmcoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0g
ICAgUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXI7Ci0gICAgT2JqZWN0SWRlbnRp
ZmllcjxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllclR5cGU+IGNvbnRleHRJZGVudGlm
aWVyOwotICAgIHVuc2lnbmVkIGNvdW50ZXIgPSAwOwotICAgIGZvciAoYXV0byBpdGVtIDogc3Ry
aW5nLnNwbGl0KCctJykpIHsKLSAgICAgICAgYXV0byBpZGVudGlmaWVyID0gcGFyc2VJbnRlZ2Vy
PHVpbnQ2NF90PihpdGVtKTsKLSAgICAgICAgaWYgKCFpZGVudGlmaWVyIHx8ICEqaWRlbnRpZmll
cikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGlmICghY291bnRl
cisrKQotICAgICAgICAgICAgcHJvY2Vzc0lkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmll
cjxQcm9jZXNzSWRlbnRpZmllclR5cGU+KCppZGVudGlmaWVyKTsKLSAgICAgICAgZWxzZSBpZiAo
Y291bnRlciA9PSAyKQotICAgICAgICAgICAgY29udGV4dElkZW50aWZpZXIgPSBtYWtlT2JqZWN0
SWRlbnRpZmllcjxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllclR5cGU+KCppZGVudGlm
aWVyKTsKLSAgICB9Ci0gICAgcmV0dXJuIChwcm9jZXNzSWRlbnRpZmllciAmJiBjb250ZXh0SWRl
bnRpZmllcikgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXIgeyBjb250ZXh0SWRlbnRpZmllciwgcHJvY2Vzc0lkZW50aWZpZXIgfSkgOiBzdGQ6Om51
bGxvcHQ7CisgICAgcHJvbWlzZS5yZXNvbHZlPElETEludGVyZmFjZTxTZXJ2aWNlV29ya2VyQ2xp
ZW50Pj4oU2VydmljZVdvcmtlckNsaWVudDo6Z2V0T3JDcmVhdGUoc2NvcGUsIFdURk1vdmUoKmNs
aWVudERhdGEpKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNsaWVudHM6OmdldChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGlkLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgYXV0byBpZGVudGlmaWVyID0gc2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXJGcm9tU3RyaW5nKGlkKTsKLSAgICBpZiAoIWlkZW50aWZpZXIp
IHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGF1dG8gY2xpZW50SWRlbnRpZmllciA9IGlkZW50aWZpZXIudmFsdWUoKTsKLQogICAgIGF1
dG8gc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU+KGNvbnRleHQpLnRocmVhZCgpLmlkZW50aWZpZXIoKTsKIAogICAgIGF1dG8gcHJvbWlz
ZVBvaW50ZXIgPSBwcm9taXNlLnB0cigpOwogICAgIG1fcGVuZGluZ1Byb21pc2VzLmFkZChwcm9t
aXNlUG9pbnRlciwgV1RGTW92ZShwcm9taXNlKSk7CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFtw
cm9taXNlUG9pbnRlciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXJd
ICgpIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm9taXNlUG9pbnRlciwgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGlkID0gaWQuaXNvbGF0ZWRDb3B5KCldICgpIHsKICAgICAgICAgYXV0byBj
b25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpOwot
ICAgICAgICBjb25uZWN0aW9uLT5maW5kQ2xpZW50QnlJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyLCBbcHJvbWlzZVBvaW50ZXIsIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyXSAoYXV0byYmIGNsaWVudERhdGEpIHsKKyAgICAgICAgY29ubmVjdGlvbi0+
ZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGlk
LCBbcHJvbWlzZVBvaW50ZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyXSAoYXV0byYmIGNsaWVu
dERhdGEpIHsKICAgICAgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnBvc3RU
YXNrVG9TZXJ2aWNlV29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbcHJvbWlzZVBvaW50
ZXIsIGRhdGEgPSBjcm9zc1RocmVhZENvcHkoY2xpZW50RGF0YSldIChhdXRvJiBjb250ZXh0KSBt
dXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBwcm9taXNlID0gY29udGV4dC5jbGll
bnRzKCkubV9wZW5kaW5nUHJvbWlzZXMudGFrZShwcm9taXNlUG9pbnRlcikpCiAgICAgICAgICAg
ICAgICAgICAgIGRpZEZpbmlzaEdldFJlcXVlc3QoY29udGV4dCwgKnByb21pc2UsIFdURk1vdmUo
ZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IDcxNmQwMDM1MWRkNzNiZmU5MjMyYTg4ZDhi
MjljNmQ3MmNjMjNkZTcuLmMwZTAzNjM2YjE4OWM1ODY2M2U0ODNjODBiYjlkNjkxOTJiMjBlOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTYyLDggKzYyLDggQEAgcHVibGljOgogICAgICAgICB2
aXJ0dWFsIHZvaWQgc2tpcFdhaXRpbmcoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0U2NyaXB0
UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmKSA9IDA7CiAKLSAgICAgICAgdXNp
bmcgRmluZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPj4mJik+
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllcihTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIEZpbmRDbGll
bnRCeUlkZW50aWZpZXJDYWxsYmFjayYmKSA9IDA7CisgICAgICAgIHVzaW5nIEZpbmRDbGllbnRC
eUlkZW50aWZpZXJDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+OworICAgICAgICB2aXJ0dWFsIHZvaWQgZmlu
ZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYsIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDYWxsYmFjayYmKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBtYXRjaEFsbChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2Vy
dmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hB
bGxDYWxsYmFjayYmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGFpbShTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYm
KT4mJikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCA3ZGE1MmU0MTkxZDU4
MzU0NjQ4NmZiNGZmZDRhNGM4YjEzYjBmODE1Li45NWVlYTkxNzE5YThlZWMyYjVkNmJjNGQ4NGUx
MmJkYTg1YmU0NjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTE0Niw3ICsxNDYs
NyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4
cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwgcwogICAgIH0pOwogfQogCi12b2lkIGRpc3BhdGNo
RmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNsaWVudCwgU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
JiBnbG9iYWxTY29wZSwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
Zmllcj4gY2xpZW50SWQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN0cmluZyYmIHJlZmVy
cmVyLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlm
aWVyLCBib29sIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCkKK3ZvaWQg
ZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYgY2xpZW50LCBTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUmIGdsb2JhbFNjb3BlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTdHJpbmcm
JiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgRmV0Y2hJZGVudGlmaWVyIGZldGNo
SWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQs
IFN0cmluZyYmIGNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIHJlc3VsdGluZ0NsaWVudElkZW50
aWZpZXIpCiB7CiAgICAgYXV0byByZXF1ZXN0SGVhZGVycyA9IEZldGNoSGVhZGVyczo6Y3JlYXRl
KEZldGNoSGVhZGVyczo6R3VhcmQ6OkltbXV0YWJsZSwgSFRUUEhlYWRlck1hcCB7IHJlcXVlc3Qu
aHR0cEhlYWRlckZpZWxkcygpIH0pOwogCkBAIC0xODEsMTIgKzE4MSw4IEBAIHZvaWQgZGlzcGF0
Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYgY2xpZW50LCBTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUmIGdsb2JhbFNjCiAKICAgICBGZXRjaEV2ZW50OjpJbml0IGluaXQ7CiAgICAgaW5pdC5yZXF1
ZXN0ID0gV1RGTW92ZShmZXRjaFJlcXVlc3QpOwotICAgIGlmIChpc05hdmlnYXRpb24pIHsKLSAg
ICAgICAgLy8gRklYTUU6IFNldCByZXNlcnZlZENsaWVudElkLgotICAgICAgICBpZiAoY2xpZW50
SWQpCi0gICAgICAgICAgICBpbml0LnRhcmdldENsaWVudElkID0gY2xpZW50SWQtPnRvU3RyaW5n
KCk7Ci0gICAgfSBlbHNlIGlmIChjbGllbnRJZCkKLSAgICAgICAgaW5pdC5jbGllbnRJZCA9IGNs
aWVudElkLT50b1N0cmluZygpOworICAgIGluaXQucmVzdWx0aW5nQ2xpZW50SWQgPSBXVEZNb3Zl
KHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIpOworICAgIGluaXQuY2xpZW50SWQgPSBXVEZNb3Zl
KGNsaWVudElkZW50aWZpZXIpOwogICAgIGluaXQuY2FuY2VsYWJsZSA9IHRydWU7CiAKICAgICBh
dXRvJiBqc0RPTUdsb2JhbE9iamVjdCA9ICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbFNjb3BlLmdsb2JhbE9iamVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmgKaW5kZXgg
NTY4ZTYyZDBmNDQwNjkxNjI5ZjhlMmFjMGMwOGY0Y2I3Nzc4MmM0ZS4uYjczM2JiZmE0MzFmZGZl
NmUzYzA2NWYyMzk3Yzk3OWQ5ZTBlYjVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmgKQEAgLTYy
LDcgKzYyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0RmV0Y2hUb0Rvd25s
b2FkKCkgPSAwOwogfTsKIAotdm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiwg
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllcj4sIFJlc291cmNlUmVxdWVzdCYmLCBTdHJpbmcmJiByZWZlcnJlciwg
RmV0Y2hPcHRpb25zJiYsIEZldGNoSWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZEVuYWJsZWQpOwordm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENsaWVu
dD4mJiwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFN0cmlu
ZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiwgRmV0Y2hJZGVudGlmaWVyLCBib29sIGlzU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCwgU3RyaW5nJiYgY2xpZW50SWRlbnRp
ZmllciwgU3RyaW5nJiYgcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IDY1MjVmYjk3
MDE2ZmZhZGVlOTFhMTE2MDYwNGMwMjcxMDljZTg2NjEuLjI2MGRiYmQzZTY2Mjk3OWNjOWZhNjky
ZDQzY2U0ZWI0MzcwNGRmYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0xMjQs
MTEgKzEyNCwxMSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnJ1bkV2ZW50TG9vcCgpCiAg
ICAgV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AoKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2Vy
VGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVGZXRjaEV2ZW50KFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6
OkNsaWVudD4mJiBjbGllbnQsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXI+JiYgY2xpZW50SWQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN0cmluZyYm
IHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJ
ZGVudGlmaWVyLCBib29sIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCkK
K3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudChSZWY8
U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYgY2xpZW50LCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgRmV0Y2hJ
ZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZEVuYWJsZWQsIFN0cmluZyYmIGNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIHJlc3Vs
dGluZ0NsaWVudElkZW50aWZpZXIpCiB7CiAgICAgUmVmIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oKmdsb2JhbFNjb3BlKCkpOwot
ICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tT
b3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgY2xpZW50
ID0gV1RGTW92ZShjbGllbnQpLCBjbGllbnRJZCwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCks
IHJlZmVycmVyID0gV1RGTW92ZShyZWZlcnJlciksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMp
LCBmZXRjaElkZW50aWZpZXIsIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxl
ZF0oKSBtdXRhYmxlIHsKLSAgICAgICAgU2VydmljZVdvcmtlckZldGNoOjpkaXNwYXRjaEZldGNo
RXZlbnQoV1RGTW92ZShjbGllbnQpLCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIGNsaWVudElk
LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZmVycmVyKSwgV1RGTW92ZShvcHRpb25zKSwg
ZmV0Y2hJZGVudGlmaWVyLCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQp
OworICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRh
c2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgY2xp
ZW50ID0gV1RGTW92ZShjbGllbnQpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVmZXJy
ZXIgPSBXVEZNb3ZlKHJlZmVycmVyKSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIGZldGNo
SWRlbnRpZmllciwgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkLCBjbGll
bnRJZGVudGlmaWVyID0gV1RGTW92ZShjbGllbnRJZGVudGlmaWVyKSwgcmVzdWx0aW5nQ2xpZW50
SWRlbnRpZmllciA9IFdURk1vdmUocmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcildKCkgbXV0YWJs
ZSB7CisgICAgICAgIFNlcnZpY2VXb3JrZXJGZXRjaDo6ZGlzcGF0Y2hGZXRjaEV2ZW50KFdURk1v
dmUoY2xpZW50KSwgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlZmVycmVyKSwgV1RGTW92ZShvcHRpb25zKSwgZmV0Y2hJZGVudGlmaWVyLCBpc1Nl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIFdURk1vdmUoY2xpZW50SWRlbnRp
ZmllciksIFdURk1vdmUocmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcikpOwogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKaW5kZXggMWRhMmRkODNlZTA3NzFmYTRhMTJjOTFhZTI1
NGE1MjNhOTMyMmU3Zi4uODhiNjVkZTgwMzBhYTk1MDkwZDM3Y2RjYTFhZTA3ZWNlNzViZjAxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCB3aWxsUG9zdFRhc2tUb0ZpcmVNZXNzYWdlRXZlbnQoKTsKICAgICB2b2lkIHdpbGxQb3N0
VGFza1RvRmlyZVB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudCgpOwogCi0gICAgdm9pZCBxdWV1
ZVRhc2tUb0ZpcmVGZXRjaEV2ZW50KFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiwg
c3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4mJiwgUmVzb3Vy
Y2VSZXF1ZXN0JiYsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMmJiwgRmV0Y2hJZGVu
dGlmaWVyLCBib29sIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCk7Cisg
ICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVGZXRjaEV2ZW50KFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6
OkNsaWVudD4mJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9w
dGlvbnMmJiwgRmV0Y2hJZGVudGlmaWVyLCBib29sIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkRW5hYmxlZCwgU3RyaW5nJiYgY2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgcmVzdWx0
aW5nQ2xpZW50SWRlbnRpZmllcik7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb1Bvc3RNZXNzYWdlKE1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEmJiBzb3Vy
Y2VEYXRhKTsKICAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZUluc3RhbGxFdmVudCgpOwogICAgIHZv
aWQgcXVldWVUYXNrVG9GaXJlQWN0aXZhdGVFdmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS5jcHAKaW5kZXggZGI2YzkzYjhiZTkxYjliOTIyNzEwOTQ3OTlkMGRkYzNmNjQ4
MmRmMC4uYzY2NjE0ZmEyYzk2MDAxMTY0NWU4YWM3NDVkNGY2ZDljODgzOTY0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlz
T25saW5lKQogICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogfQogCi12b2lk
IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c3RhcnRGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVu
dGlmaWVyLCBSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYgY2xpZW50LCBzdGQ6Om9w
dGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiYmIGNsaWVudElkLCBSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYg
b3B0aW9ucywgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQpCit2
b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c3RhcnRGZXRjaChTV1NlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJ
ZGVudGlmaWVyLCBSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYgY2xpZW50LCBSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYg
b3B0aW9ucywgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIFN0
cmluZyYmIGNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIHJlc3VsdGluZ0NsaWVudElkZW50aWZp
ZXIpCiB7CiAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eTo6c3RhcnRGZXRjaCAlbGx1IiwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOwog
CkBAIC0yMjEsOCArMjIxLDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0
RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW8KIAogICAgIEFTU0VS
VCghbV9vbmdvaW5nRmV0Y2hUYXNrcy5jb250YWlucyhrZXkpKTsKICAgICBtX29uZ29pbmdGZXRj
aFRhc2tzLmFkZChrZXksIGNsaWVudC5jb3B5UmVmKCkpOwotICAgIHBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBjbGllbnQgPSBXVEZNb3ZlKGNsaWVudCksIGNsaWVudElkLCByZXF1ZXN0ID0gcmVx
dWVzdC5pc29sYXRlZENvcHkoKSwgcmVmZXJyZXIgPSByZWZlcnJlci5pc29sYXRlZENvcHkoKSwg
b3B0aW9ucyA9IG9wdGlvbnMuaXNvbGF0ZWRDb3B5KCksIGZldGNoSWRlbnRpZmllciwgaXNTZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkXShhdXRvJikgbXV0YWJsZSB7Ci0gICAg
ICAgIHRocmVhZCgpLnF1ZXVlVGFza1RvRmlyZUZldGNoRXZlbnQoV1RGTW92ZShjbGllbnQpLCBX
VEZNb3ZlKGNsaWVudElkKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWZlcnJlciksIFdU
Rk1vdmUob3B0aW9ucyksIGZldGNoSWRlbnRpZmllciwgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlv
blByZWxvYWRFbmFibGVkKTsKKyAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2xpZW50ID0g
V1RGTW92ZShjbGllbnQpLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRlZENvcHkoKSwgcmVmZXJy
ZXIgPSBXVEZNb3ZlKHJlZmVycmVyKS5pc29sYXRlZENvcHkoKSwgb3B0aW9ucyA9IG9wdGlvbnMu
aXNvbGF0ZWRDb3B5KCksIGZldGNoSWRlbnRpZmllciwgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlv
blByZWxvYWRFbmFibGVkLCBjbGllbnRJZGVudGlmaWVyID0gV1RGTW92ZShjbGllbnRJZGVudGlm
aWVyKS5pc29sYXRlZENvcHkoKSwgcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllciA9IFdURk1vdmUo
cmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcikuaXNvbGF0ZWRDb3B5KCldKGF1dG8mKSBtdXRhYmxl
IHsKKyAgICAgICAgdGhyZWFkKCkucXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudChXVEZNb3ZlKGNs
aWVudCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVmZXJyZXIpLCBXVEZNb3ZlKG9wdGlv
bnMpLCBmZXRjaElkZW50aWZpZXIsIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5h
YmxlZCwgV1RGTW92ZShjbGllbnRJZGVudGlmaWVyKSwgV1RGTW92ZShyZXN1bHRpbmdDbGllbnRJ
ZGVudGlmaWVyKSk7CiAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKaW5kZXggMDFiM2FkMDQ5MTVkNGJlMjdi
MDFiY2ZmZGM2YjBjZmIyMDhmYzA3ZS4uYWJjYTQ4NjJiZDY1OWJiNGVjMTZiN2RkZjk5MThlNjI4
ZDMzNzVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKQEAgLTc1LDcgKzc1
LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBub3RpZnlOZXR3b3JrU3Rh
dGVDaGFuZ2UoYm9vbCBpc09ubGluZSk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0
RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyLCBSZWY8
U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXI+JiYsIFJlc291cmNlUmVxdWVzdCYmLCBTdHJpbmcmJiByZWZl
cnJlciwgRmV0Y2hPcHRpb25zJiYsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRFbmFibGVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0RmV0Y2goU1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyLCBSZWY8U2VydmljZVdvcmtlckZl
dGNoOjpDbGllbnQ+JiYsIFJlc291cmNlUmVxdWVzdCYmLCBTdHJpbmcmJiByZWZlcnJlciwgRmV0
Y2hPcHRpb25zJiYsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVk
LCBTdHJpbmcmJiBjbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiByZXN1bHRpbmdDbGllbnRJZGVu
dGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbmNlbEZldGNoKFNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjb252ZXJ0RmV0Y2hUb0Rvd25sb2FkKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IEZldGNoSWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb250aW51ZURpZFJl
Y2VpdmVGZXRjaFJlc3BvbnNlKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRl
bnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuY3BwCmluZGV4IDFhOTYzY2QxMjRlMjVmZGQzMGViMTVkNjczN2U3ZTQzNWRkNDEx
ODAuLjc5YmRmNDY4OWNmNzUwODU2Zjk5NTM2N2RiMTEzODRlYzFjMTgzY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC05
NDIsNiArOTQyLDggQEAgdm9pZCBTV1NlcnZlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
KENsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgU2VydmljZVcKICAgICAgICAgICAgIHVwZGF0
ZUFwcEluaXRpYXRlZFZhbHVlRm9yV29ya2VycyhjbGllbnRPcmlnaW4sIGRhdGEubGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQpOwogICAgIH0KIAorICAgIG1fdmlzaWJsZUNsaWVudElkVG9J
bnRlcm5hbENsaWVudElkTWFwLmFkZChkYXRhLmlkZW50aWZpZXIub2JqZWN0KCkudG9TdHJpbmco
KSwgY2xpZW50SWRlbnRpZmllcik7CisKICAgICBBU1NFUlQoIW1fY2xpZW50c0J5SWQuY29udGFp
bnMoY2xpZW50SWRlbnRpZmllcikpOwogICAgIG1fY2xpZW50c0J5SWQuYWRkKGNsaWVudElkZW50
aWZpZXIsIFdURk1vdmUoZGF0YSkpOwogCkBAIC05NzksOCArOTgxLDggQEAgdm9pZCBTV1NlcnZl
cjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGll
bnRPcmlnaW4sIFMKICAgICBhdXRvIGNsaWVudFJlZ2lzdHJhYmxlRG9tYWluID0gY2xpZW50T3Jp
Z2luLmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCk7CiAgICAgYXV0byBhcHBJbml0aWF0ZWRWYWx1
ZUJlZm9yZSA9IGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50
T3JpZ2luLmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCkpOwogCi0gICAgYm9vbCB3YXNSZW1vdmVk
ID0gbV9jbGllbnRzQnlJZC5yZW1vdmUoY2xpZW50SWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VO
VVNFRCh3YXNSZW1vdmVkLCB3YXNSZW1vdmVkKTsKKyAgICBtX2NsaWVudHNCeUlkLnJlbW92ZShj
bGllbnRJZGVudGlmaWVyKTsKKyAgICBtX3Zpc2libGVDbGllbnRJZFRvSW50ZXJuYWxDbGllbnRJ
ZE1hcC5yZW1vdmUoY2xpZW50SWRlbnRpZmllci50b1N0cmluZygpKTsKIAogICAgIGF1dG8gY2xp
ZW50c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRvciA9IG1fY2xpZW50c0J5UmVnaXN0cmFibGVE
b21haW4uZmluZChjbGllbnRSZWdpc3RyYWJsZURvbWFpbik7CiAgICAgQVNTRVJUKGNsaWVudHNC
eVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3IgIT0gbV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFp
bi5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmgKaW5kZXggYjE1ZjFhZjVlMGVkNzJhYWExZGRiZGE5YTJmZmUzZmIyOWFiMTM4Ny4u
NDM5NDFiMzRiMmE3MjdkNDM4ZjY1NGM3NTNkOGY1OWY1Y2YyNjllZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMjI2LDYgKzIy
Niw4IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFNob3VsZFNraXBFdmVudCA6IGJvb2wgeyBO
bywgWWVzIH07CiAgICAgdm9pZCBmaXJlRnVuY3Rpb25hbEV2ZW50KFNXU2VydmVyUmVnaXN0cmF0
aW9uJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24qLCBTaG91bGRTa2lwRXZlbnQ+KT4mJik7CiAKKyAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllciBjbGllbnRJZEZyb21WaXNpYmxlQ2xpZW50SWQoY29uc3QgU3RyaW5n
JiB2aXNpYmxlSWRlbnRpZmllcikgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlQ2xpZW50SWRUb0lu
dGVybmFsQ2xpZW50SWRNYXAuZ2V0KHZpc2libGVJZGVudGlmaWVyKTsgfQorCiBwcml2YXRlOgog
ICAgIHZvaWQgdmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4sIFNlcnZpY2VXb3JrZXJKb2JUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKIApAQCAtMjcxLDYgKzI3Myw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgV2Vha1B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4+
IG1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyVG9SZWdpc3RyYXRpb25NYXA7CiAgICAgSGFz
aE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVu
dERhdGE+IG1fY2xpZW50c0J5SWQ7CiAgICAgSGFzaE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IG1fY2xpZW50
VG9Db250cm9sbGluZ1JlZ2lzdHJhdGlvbjsKKyAgICBIYXNoTWFwPFN0cmluZywgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXI+IG1fdmlzaWJsZUNsaWVudElkVG9JbnRlcm5hbENsaWVu
dElkTWFwOwogCiAgICAgVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+IG1fb3JpZ2luU3RvcmU7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdHJhdGlvblN0b3JlPiBtX3JlZ2lzdHJhdGlvblN0b3Jl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IGJmZWVjY2Uw
M2UwNGNjNzhlODdlMWUxNjI2OWI5NjMwMWQ0ODE3YTEuLjU0MjhhYTQ2NTU0NTg4NDg3OTAxN2M0
NTFkOThmOGFjOWU2MmFkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAKQEAgLTg3LDEyICs4Nyw2IEBAIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Ojp3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpCiAgICAgICAg
IHdvcmtlci0+Y29udGV4dFRlcm1pbmF0ZWQoKTsKIH0KIAotdm9pZCBTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZpZXIodWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJZCkKLXsKLSAgICBpZiAoYXV0
byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihz
ZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCi0gICAgICAgIHdvcmtlci0+Y29udGV4dENvbm5lY3Rp
b24oKS0+ZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwg
d29ya2VyLT5maW5kQ2xpZW50QnlJZGVudGlmaWVyKGNsaWVudElkKSwgZmFsc2UpOwotfQotCiB2
b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWF0Y2hBbGwodWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJ
ZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkgewpAQCAtMTAyLDYgKzk2LDE0IEBA
IHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptYXRjaEFsbCh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgU2VydmljZVdvCiAgICAgfQogfQogCit2b2lkIFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6ZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY2xpZW50
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoYXV0
byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihz
ZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCisgICAgICAgIHdvcmtlci0+ZmluZENsaWVudEJ5Vmlz
aWJsZUlkZW50aWZpZXIoY2xpZW50SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworICAg
IGVsc2UKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKK30KKwogdm9pZCBTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OmNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9u
RGF0YT4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3Jr
ZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCBiZGQzNjNiMmJjNDUw
Y2MyOTkyZTY1NjgzNmFmNzdlZDUzYmNkYTQwLi5jMDU2ZjY0OGRkYTAzZTVmYWI0OGQyYWU0NmU3
MTM5NzU2ZjVkNTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAg
LTU4LDcgKzU4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaXJlQWN0aXZhdGVFdmVu
dChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5h
dGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNjcmlw
dEJ1ZmZlciYsIGNvbnN0IEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiBpbXBvcnRlZFNjcmlw
dHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRl
ZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YT4mLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgbWF0Y2hBbGxDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNv
bnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGZpcmVQdXNoRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y2FsbGJhY2spID0gMDsKIApAQCAtNzAsMTEgKzY5LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBib29sIGhhc1BlbmRpbmdFdmVudHMpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2tpcFdhaXRpbmcoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3b3JrZXJUZXJtaW5hdGVk
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmRD
bGllbnRCeUlkZW50aWZpZXIodWludDY0X3QgY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmllciwgU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hdGNoQWxsKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1
ZXJ5T3B0aW9ucyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xhaW0oU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRp
b25EYXRhPiYmKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JpcHRSZXNvdXJj
ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YT4mJik+JiYpOwogCiAgICAgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9t
YWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQogICAgIHN0ZDo6b3B0
aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdl
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVy
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDVkMTU1NmEwMDZkYWIxNTE2NzY1MWEyM2RmMmZiMzMz
MDQ3ZjZiNDMuLmNkYmZlNDRiZWVjMGM5MDhiYWMxMjI0ZDBlYTRiNmYxMmZlZGYxYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwCkBAIC0yMzEsNiArMjMxLDIyIEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdv
cmtlckNsaWVudERhdGE+IFNXU2VydmVyV29ya2VyOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyKGNv
CiAgICAgcmV0dXJuIG1fc2VydmVyLT5zZXJ2aWNlV29ya2VyQ2xpZW50V2l0aE9yaWdpbkJ5SUQo
b3JpZ2luKCksIGNsaWVudElkKTsKIH0KIAordm9pZCBTV1NlcnZlcldvcmtlcjo6ZmluZENsaWVu
dEJ5VmlzaWJsZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBjbGllbnRJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNs
aWVudERhdGE+JiYpPiYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9zZXJ2ZXIpIHsKKyAgICAg
ICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gaW50
ZXJuYWxJZGVudGlmaWVyID0gbV9zZXJ2ZXItPmNsaWVudElkRnJvbVZpc2libGVDbGllbnRJZChj
bGllbnRJZGVudGlmaWVyKTsKKyAgICBpZiAoIWludGVybmFsSWRlbnRpZmllcikgeworICAgICAg
ICBjYWxsYmFjayh7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FsbGJhY2so
ZmluZENsaWVudEJ5SWRlbnRpZmllcihpbnRlcm5hbElkZW50aWZpZXIpKTsKK30KKwogdm9pZCBT
V1NlcnZlcldvcmtlcjo6bWF0Y2hBbGwoY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0
aW9ucyYgb3B0aW9ucywgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7CiAgICAgQVNTRVJUKG1fc2VydmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCBiMjIxNWQ5
ZjRhZDRkMGZkOTE1MDRhNGMyMWFjYjkzMDQ3YTFjODI0Li4xZTgzMWZjNGNhODJkNjQ0ZTdjNmRi
MTFlMGVmNTNhNzZiNmRmNDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC0xMDMsNiArMTAzLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbigpOwogICAgIHZvaWQgY29udGV4dFRl
cm1pbmF0ZWQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhPiBmaW5kQ2xpZW50QnlJZGVudGlmaWVyKGNvbnN0IFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5k
Q2xpZW50QnlWaXNpYmxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YT4mJik+JiYpOwogICAgIHZvaWQgbWF0Y2hBbGwoY29uc3QgU2VydmljZVdv
cmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxs
YmFjayYmKTsKICAgICB2b2lkIHNldFNjcmlwdFJlc291cmNlKFVSTCYmLCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JiYpOwogICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNU
b0Rpc2soU2NyaXB0QnVmZmVyJiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZl
cj4mJiBpbXBvcnRlZFNjcmlwdHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggODE3YWVmMjZjODM2YzM0YTdkNDRl
ZTdjYzk1ZWRkOWEyOThkNmE0YS4uZGM4NzM1ZmY0OTUwZGUyMDgxNjMwZjM0ZjIyZDIzM2JjYzhl
YjcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCkBAIC0xNDUsNiArMTQ1LDggQEAgcHVibGljOgogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICAgICB2b2lkIHN0YXJ0V2l0aFNlcnZpY2VXb3JrZXIoKTsKICAgICB2
b2lkIHNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUoU2VydmljZVdvcmtlckZldGNoVGFzayopOwor
ICAgIHZvaWQgc2V0UmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcihTdHJpbmcmJiBpZGVudGlmaWVy
KSB7IG1fcmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcik7IH0K
KyAgICBjb25zdCBTdHJpbmcmIHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc3VsdGluZ0NsaWVudElkZW50aWZpZXI7IH0KICNlbmRpZgogCiAgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiBkb0Nyb3NzT3JpZ2luT3BlbmVySGFuZGxp
bmdPZlJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI1NSw2
ICsyNTcsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJh
Y2tlcj4gbV9uZXR3b3JrQWN0aXZpdHlUcmFja2VyOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gbV9zZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOworICAgIFN0cmluZyBtX3Jlc3VsdGluZ0NsaWVudElkZW50aWZpZXI7
CiAjZW5kaWYKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciBtX3Jlc291cmNlTG9h
ZElEOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZWRpcmVjdFJlc3BvbnNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IDIwMWUzNDhiNTk4
MjA2YWY4YTA2YmViMDIzMTgxZTZiNTY2MWUzYTguLjYxOWJmODRjZTM1YmFlMmJkZGZlYjg3MGE0
ZDJlYTM3ZjE2M2ZjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5j
cHAKQEAgLTE1MSw3ICsxNTEsMTIgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzdGFy
dEZldGNoKCkKICAgICBhdXRvIHJlcXVlc3QgPSBtX2N1cnJlbnRSZXF1ZXN0OwogICAgIGNsZWFu
SFRUUFJlcXVlc3RIZWFkZXJzRm9yQWNjZXNzQ29udHJvbChyZXF1ZXN0LCBtX2xvYWRlci5wYXJh
bWV0ZXJzKCkuaHR0cEhlYWRlcnNUb0tlZXApOwogCi0gICAgYm9vbCBpc1NlbnQgPSBzZW5kVG9T
ZXJ2aWNlV29ya2VyKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3Rh
cnRGZXRjaCB7IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1fc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIG1fZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zLCBJUEM6OkZvcm1E
YXRhUmVmZXJlbmNlIHsgbV9jdXJyZW50UmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZmVycmVyLCBt
X3ByZWxvYWRlciAmJiBtX3ByZWxvYWRlci0+aXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRFbmFibGVkKCkgfSk7CisgICAgU3RyaW5nIGNsaWVudElkZW50aWZpZXI7CisgICAgaWYgKG1f
bG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zLm1vZGUgIT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpO
YXZpZ2F0ZSkgeworICAgICAgICBpZiAoYXV0byBpZGVudGlmaWVyID0gbV9sb2FkZXIucGFyYW1l
dGVycygpLm9wdGlvbnMuY2xpZW50SWRlbnRpZmllcikKKyAgICAgICAgICAgIGNsaWVudElkZW50
aWZpZXIgPSBpZGVudGlmaWVyLT50b1N0cmluZygpOworICAgIH0KKyAgICBib29sIGlzU2VudCA9
IHNlbmRUb1NlcnZpY2VXb3JrZXIoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpTdGFydEZldGNoIHsgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgbV9zZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgbV9mZXRjaElkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UgeyBtX2N1cnJlbnRSZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVm
ZXJyZXIsIG1fcHJlbG9hZGVyICYmIG1fcHJlbG9hZGVyLT5pc1NlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZEVuYWJsZWQoKSwgY2xpZW50SWRlbnRpZmllciwgbV9sb2FkZXIucmVzdWx0aW5n
Q2xpZW50SWRlbnRpZmllcigpIH0pOwogICAgIEFTU0VSVF9VTlVTRUQoaXNTZW50LCBpc1NlbnQp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDQ3MmEy
MzEzOWY3NjhiMDkxM2M2YWMxNDQxOWY3ZDhiZGYyNDJlYWUuLmY4MWQ1NTBhMGFkNmMzM2FhY2I3
ZWQ2M2I1MjI4OWE0YTYwNjRjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uY3BwCkBAIC0xNzUsNiArMTc1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s+IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlRmV0Y2hUYXNrKE4KIAogICAg
ICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IHJlZ2lzdHJhdGlvbi0+
aWRlbnRpZmllcigpOwogICAgICAgICBjb250cm9sQ2xpZW50KCpsb2FkZXIucGFyYW1ldGVycygp
Lm9wdGlvbnMuY2xpZW50SWRlbnRpZmllciwgKnJlZ2lzdHJhdGlvbiwgcmVxdWVzdCk7CisgICAg
ICAgIGxvYWRlci5zZXRSZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKGxvYWRlci5wYXJhbWV0ZXJz
KCkub3B0aW9ucy5jbGllbnRJZGVudGlmaWVyLT50b1N0cmluZygpKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAoIWxvYWRlci5wYXJhbWV0ZXJzKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggZjBhODk2NzVj
YzE0NDM3MDhhMGI2OGFjOTMxY2U3N2ZkMjVjNDAwNS4uNWE4NzAzZWZkNmQ1ZGNkNDFhMjI1YThk
MTJlM2RkNWRkYWUxMDYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTE1NSwxMSArMTU1LDYgQEAgdm9pZCBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZUR1ZVRvVW5yZXNwb25zaXZlbmVzcygpCiAg
ICAgbV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRlVW5yZXNwb25z
aXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7
CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaW5kQ2xpZW50QnlJ
ZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYgZGF0YSwgYm9vbCBoYXNTZWN1cml0
eUVycm9yKQotewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkIHsgcmVxdWVzdElkZW50aWZpZXIs
IGRhdGEsIGhhc1NlY3VyaXR5RXJyb3IgfSk7Ci19Ci0KIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjptYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgY29uc3QgVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYgY2xpZW50c0RhdGEpCiB7
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Ok1hdGNo
QWxsQ29tcGxldGVkIHsgcmVxdWVzdElkZW50aWZpZXIsIGNsaWVudHNEYXRhIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDMzNjU4
YzU0YzE0ZmE0YTQ0NGI3NDM2ZGQ5MGIwODU5YTI0MmJiNTMuLmQ5NWI3Y2U4NTQ2OThjNTE2NmQz
YTE1OWEzNzg4ZWRlMmQ5YjIyOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTk1LDcgKzk1LDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5h
bDsKICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2NyaXB0QnVmZmVyJiwgY29uc3Qg
SGFzaE1hcDxVUkwsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4mIGltcG9ydGVkU2NyaXB0cykgZmlu
YWw7Ci0gICAgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhPiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikgZmluYWw7CiAgICAgdm9pZCBt
YXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYpIGZpbmFsOwogICAgIHZvaWQgZmly
ZVB1c2hFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qgc3RkOjpv
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGZkNzE5NDhjNWYzNTk5OWY1NTJkZjFk
ZmQ2MzUyYzEzZDJmNWY4MWUuLjBkNjE0NTBkNDFhMzAxZjA4ZjllYzVlNmEzYTYwMDYxZjliNjQz
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzIsNyArMzIsNyBAQCBtZXNzYWdlcyAtPiBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgU2V0U2Vydmlj
ZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKQogICAgIFNraXBXYWl0aW5nKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+ICgpIEFzeW5jCiAgICAg
V29ya2VyVGVybWluYXRlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlm
aWVyKQotICAgIEZpbmRDbGllbnRCeUlkZW50aWZpZXIodWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJZGVu
dGlmaWVyKQorICAgIEZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTdHJpbmcgY2xpZW50
SWRlbnRpZmllcikgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dERhdGE+IGRhdGEpIEFzeW5jCiAgICAgTWF0Y2hBbGwodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRp
b25zIG9wdGlvbnMpOwogICAgIENsYWltKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNl
cHRpb25EYXRhPiByZXN1bHQpIEFzeW5jCiAgICAgU2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgVVJMIHNjcmlwdFVSTCwgV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCBzY3JpcHQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVG
b3JUZXN0aW5nSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmll
d1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgKaW5kZXggMGY4ZGYyMWNjM2VhYjkwMjA1OWE0MTIwMWZi
NTMyMWZiOTU5ZTkxOS4uN2E0NmRiMWY3ZmMwZDkxMDA3NjYzNGMxN2RjZDBlMjczZTBiNmZkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2
YXRlRm9yVGVzdGluZ0lPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaApAQCAtODEsNyArODEsNyBAQAogCiAtICh2
b2lkKV9kb0FmdGVyUmVjZWl2aW5nRWRpdERyYWdTbmFwc2hvdEZvclRlc3Rpbmc6KGRpc3BhdGNo
X2Jsb2NrX3QpYWN0aW9uOwogCi0tICh2b2lkKV90cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbk9u
RWxlbWVudDoodWludDY0X3QpZWxlbWVudElEIGRvY3VtZW50Oih1aW50NjRfdClkb2N1bWVudElE
IHBhZ2U6KHVpbnQ2NF90KXBhZ2VJRDsKKy0gKHZvaWQpX3RyaWdnZXJTeXN0ZW1QcmV2aWV3QWN0
aW9uT25FbGVtZW50Oih1aW50NjRfdCllbGVtZW50SUQgZG9jdW1lbnQ6KE5TU3RyaW5nKilkb2N1
bWVudElEIHBhZ2U6KHVpbnQ2NF90KXBhZ2VJRDsKIAogLSAodm9pZClfc2V0RGV2aWNlT3JpZW50
YXRpb25Vc2VyUGVybWlzc2lvbkhhbmRsZXJGb3JUZXN0aW5nOihCT09MICheKSh2b2lkKSloYW5k
bGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2Vi
Vmlld1Rlc3RpbmdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2Vi
Vmlld1Rlc3RpbmdJT1MubW0KaW5kZXggNjA0N2QzYzc0MTJiZjYwMGJiMDljMjY2OGViNjI5MTFi
MTMyZjBkNC4uOTViODI5MjIyMjRhZWExNGIxZTE0MzlmMGE4ZjVlMDgzMDQzYjk0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGlu
Z0lPUy5tbQpAQCAtNDQ4LDcgKzQ0OCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBVSVZpZXcoVGV4dFN0
cmVhbSYgdHMsIFVJVmlldyAqdmlldykKICAgICBbX2NvbnRlbnRWaWV3IF9zaW11bGF0ZVRleHRF
bnRlcmVkOnRleHRdOwogfQogCi0tICh2b2lkKV90cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbk9u
RWxlbWVudDoodWludDY0X3QpZWxlbWVudElEIGRvY3VtZW50Oih1aW50NjRfdClkb2N1bWVudElE
IHBhZ2U6KHVpbnQ2NF90KXBhZ2VJRAorLSAodm9pZClfdHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rp
b25PbkVsZW1lbnQ6KHVpbnQ2NF90KWVsZW1lbnRJRCBkb2N1bWVudDooTlNTdHJpbmcqKWRvY3Vt
ZW50SUQgcGFnZToodWludDY0X3QpcGFnZUlECiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQog
ICAgIGlmIChfcGFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KaW5kZXggZGNjZDkwZGZl
YzI0MjMxMzIyMzMxMTA0YjY3YzkwYzM4MDc5MmY3OC4uMmY4YmEwMmRhMjgwNzBjNjg4MmQ3YTUz
M2ExOGY2MjE1MTk3YjZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCkBAIC0zMDEsMTEg
KzMwMSwxNiBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJl
dmlld0FjdGlvbigpCiAgICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9z
eXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCIpOwog
fQogCi12b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0Fj
dGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgdWludDY0X3QgZG9j
dW1lbnRJRCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6
dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb25XaXRoVGFyZ2V0Rm9yVGVzdGluZyh1aW50NjRfdCBl
bGVtZW50SUQsIE5TU3RyaW5nKiBkb2N1bWVudElELCB1aW50NjRfdCBwYWdlSUQpCiB7CisgICAg
YXV0byB1dWlkID0gVVVJRDo6cGFyc2UoU3RyaW5nKGRvY3VtZW50SUQpKTsKKyAgICBBU1NFUlQo
dXVpZCk7CisgICAgaWYgKCF1dWlkKQorICAgICAgICByZXR1cm47CisKICAgICBtX3N5c3RlbVBy
ZXZpZXdJbmZvLmlzUHJldmlldyA9IHRydWU7CiAgICAgbV9zeXN0ZW1QcmV2aWV3SW5mby5lbGVt
ZW50LmVsZW1lbnRJZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6RWxl
bWVudElkZW50aWZpZXJUeXBlPihlbGVtZW50SUQpOwotICAgIG1fc3lzdGVtUHJldmlld0luZm8u
ZWxlbWVudC5kb2N1bWVudElkZW50aWZpZXIgPSBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllciB7IG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyVHlwZT4oZG9jdW1lbnRJRCksIG1fd2ViUGFnZVByb3h5LnBy
b2Nlc3MoKS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSB9OworICAgIG1fc3lzdGVtUHJldmlld0lu
Zm8uZWxlbWVudC5kb2N1bWVudElkZW50aWZpZXIgPSB7ICp1dWlkLCBtX3dlYlBhZ2VQcm94eS5w
cm9jZXNzKCkuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkgfTsKICAgICBtX3N5c3RlbVByZXZpZXdJ
bmZvLmVsZW1lbnQud2ViUGFnZUlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllclR5cGU+KHBhZ2VJRCk7CiAgICAgdHJpZ2dlclN5c3RlbVByZXZp
ZXdBY3Rpb24oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3Rl
bVByZXZpZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2
aWV3Q29udHJvbGxlci5oCmluZGV4IDJlZGIwNDEyNzgxMGM2ZTFhNjZhZDM1Y2U4Y2I3NGEyZDJi
YTA1MzUuLjZhYjZkMmJiMTk3Mzc3N2U3ODhhYWY1ZjlmZWIxZDhhODRhMDE2NjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaApAQCAt
NjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHRyaWdnZXJTeXN0ZW1QcmV2aWV3QWN0
aW9uKCk7CiAKLSAgICB2b2lkIHRyaWdnZXJTeXN0ZW1QcmV2aWV3QWN0aW9uV2l0aFRhcmdldEZv
clRlc3RpbmcodWludDY0X3QgZWxlbWVudElELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQpOworICAgIHZvaWQgdHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb25XaXRoVGFyZ2V0Rm9y
VGVzdGluZyh1aW50NjRfdCBlbGVtZW50SUQsIE5TU3RyaW5nKiBkb2N1bWVudElELCB1aW50NjRf
dCBwYWdlSUQpOwogCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSYgbV93ZWJQYWdlUHJveHk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlLmNwcAppbmRleCBlNmRkODExMDU2NDQ0MWMzYTM1OTA5MGIwMTE0MmRk
Y2UyMDQzYWMzLi5jMzQyN2FhNTIwYzRmMWQ3ZGE0M2MxMjk3ZTY5ZDJhZjBlMTIyZjk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBXS0FycmF5UmVmIFdLQnVuZGxl
R2V0TGl2ZURvY3VtZW50VVJMc0ZvclRlc3RpbmcoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBib29s
IGV4YwogICAgICAgICBhdXRvIGRvY3VtZW50SURLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJpZCIpKTsKICAgICAgICAgYXV0byBkb2N1bWVudFVSTEtleSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInVybCIpKTsKIAotICAgICAgICBh
dXRvIGRvY3VtZW50SURWYWx1ZSA9IGFkb3B0V0soV0tVSW50NjRDcmVhdGUoaXQua2V5KSk7Cisg
ICAgICAgIGF1dG8gZG9jdW1lbnRJRFZhbHVlID0gYWRvcHRXSyhXZWJLaXQ6OnRvQ29waWVkQVBJ
KGl0LmtleS50b1N0cmluZygpKSk7CiAgICAgICAgIGF1dG8gZG9jdW1lbnRVUkxWYWx1ZSA9IGFk
b3B0V0soV2ViS2l0Ojp0b0NvcGllZEFQSShpdC52YWx1ZSkpOwogCiAgICAgICAgIFdLRGljdGlv
bmFyeVNldEl0ZW0odXJsSW5mby5nZXQoKSwgZG9jdW1lbnRJREtleS5nZXQoKSwgZG9jdW1lbnRJ
RFZhbHVlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDg1YzcwMTMwMjY5ZDFkNjBh
NGZkNjhmMjBjOTdiNjhhMmIyOGEzZWEuLmY0ZGQ1ODMxMjBiZTBjZmFkNDgwNTYyZDNiMDg1YTI1
Mjg4MWRkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMzM4LDE0ICszMzgsMTQgQEAgSW5q
ZWN0ZWRCdW5kbGU6OkRvY3VtZW50SURUb1VSTE1hcCBJbmplY3RlZEJ1bmRsZTo6bGl2ZURvY3Vt
ZW50VVJMcyhib29sIGV4Y2x1ZGUKICAgICBEb2N1bWVudElEVG9VUkxNYXAgcmVzdWx0OwogCiAg
ICAgZm9yIChjb25zdCBhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkK
LSAgICAgICAgcmVzdWx0LmFkZChkb2N1bWVudC0+aWRlbnRpZmllcigpLm9iamVjdCgpLnRvVUlu
dDY0KCksIGRvY3VtZW50LT51cmwoKS5zdHJpbmcoKSk7CisgICAgICAgIHJlc3VsdC5hZGQoZG9j
dW1lbnQtPmlkZW50aWZpZXIoKS5vYmplY3QoKSwgZG9jdW1lbnQtPnVybCgpLnN0cmluZygpKTsK
IAogICAgIGlmIChleGNsdWRlRG9jdW1lbnRzSW5QYWdlR3JvdXBQYWdlcykgewogICAgICAgICBQ
YWdlOjpmb3JFYWNoUGFnZShbJl0oUGFnZSYgcGFnZSkgewogICAgICAgICAgICAgZm9yIChhdXRv
KiBmcmFtZSA9ICZwYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQo
KSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgcmVzdWx0
LnJlbW92ZShmcmFtZS0+ZG9jdW1lbnQoKS0+aWRlbnRpZmllcigpLm9iamVjdCgpLnRvVUludDY0
KCkpOworICAgICAgICAgICAgICAgIHJlc3VsdC5yZW1vdmUoZnJhbWUtPmRvY3VtZW50KCktPmlk
ZW50aWZpZXIoKS5vYmplY3QoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmgKaW5kZXggZGRlZDk3MGIzY2YyZjFlZTFlNzRmYWE2MDkyODgzYWE2MTQy
ZGQ2MC4uNTFjMDQ3YTI3NTE1NzYyZThlMWRhZTJmNzI2ZjY2ODUzMjJjZGUwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxV
VUlEPiB3ZWJOb3RpZmljYXRpb25JRChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogICAgIFJl
ZjxBUEk6OkRhdGE+IGNyZWF0ZVdlYkRhdGFGcm9tVWludDhBcnJheShKU0NvbnRleHRSZWYsIEpT
VmFsdWVSZWYpOwogICAgIAotICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nPiBE
b2N1bWVudElEVG9VUkxNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFVVSUQsIFN0cmluZz4gRG9j
dW1lbnRJRFRvVVJMTWFwOwogICAgIERvY3VtZW50SURUb1VSTE1hcCBsaXZlRG9jdW1lbnRVUkxz
KGJvb2wgZXhjbHVkZURvY3VtZW50c0luUGFnZUdyb3VwUGFnZXMpOwogCiAgICAgLy8gR2FyYmFn
ZSBjb2xsZWN0aW9uIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4
IDAzZWViOGIyZDgxMzEwZjllOTY3N2ZmM2IwYzBlOTRjMzQ0ZjZmZDUuLjU1Y2E3ZGMzY2UwNmI1
NTE0OWNhOWMzY2FjZjU4MTJkNTY0OWFmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFNXU2VydmVyQ29ubgogICAg
ICAgICBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHktPmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVz
cG9uc2Uoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllcik7CiB9CiAK
LXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciBm
ZXRjaElkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZldGNoT3B0aW9ucyYm
IG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBmb3JtRGF0YSwgU3RyaW5nJiYgcmVm
ZXJyZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkKQordm9p
ZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTV1NlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGZldGNo
SWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmV0Y2hPcHRpb25zJiYgb3B0
aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIGZvcm1EYXRhLCBTdHJpbmcmJiByZWZlcnJl
ciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZEVuYWJsZWQsIFN0cmluZyYm
IGNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIpCiB7
CiAgICAgYXV0byogc2VydmljZVdvcmtlclRocmVhZFByb3h5ID0gU1dDb250ZXh0TWFuYWdlcjo6
c2luZ2xldG9uKCkuc2VydmljZVdvcmtlclRocmVhZFByb3h5KHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSkgewpAQCAtMjU3LDEwICsy
NTcsOSBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNX
U2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydgogICAgIH0KIAogICAgIGF1dG8gY2xpZW50
ID0gV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y3JlYXRlKG1fY29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MuY29weVJlZigpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciwgcmVxdWVzdC5yZXF1ZXN0ZXIo
KSA9PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbik7Ci0gICAgc3RkOjpvcHRpb25h
bDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gY2xpZW50SWQgPSBvcHRpb25zLmNs
aWVudElkZW50aWZpZXI7CiAKICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KGZvcm1EYXRhLnRha2VE
YXRhKCkpOwotICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+c3RhcnRGZXRjaChzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCBXVEZNb3ZlKGNsaWVudCksIFdU
Rk1vdmUoY2xpZW50SWQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZmVycmVyKSwgV1RG
TW92ZShvcHRpb25zKSwgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkKTsK
KyAgICBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHktPnN0YXJ0RmV0Y2goc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciwgV1RGTW92ZShjbGllbnQpLCBXVEZNb3ZlKHJl
cXVlc3QpLCBXVEZNb3ZlKHJlZmVycmVyKSwgV1RGTW92ZShvcHRpb25zKSwgaXNTZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRFbmFibGVkLCBXVEZNb3ZlKGNsaWVudElkZW50aWZpZXIpLCBX
VEZNb3ZlKHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdv
cmtlcklkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyYmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEmJiBzb3VyY2VEYXRhKQpA
QCAtMzMzLDIyICszMzIsOSBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp3
b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcgogICAgIG1fY29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6V29ya2VyVGVybWluYXRlZChzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDAp
OwogfQogCi12b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpmaW5kQ2xpZW50QnlJ
ZGVudGlmaWVyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJZGVudGlm
aWVyLCBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVy
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIsIEZpbmRDbGllbnRCeUlkZW50aWZpZXJD
YWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIGF1dG8gcmVxdWVzdElkZW50aWZpZXIgPSArK21f
cHJldmlvdXNSZXF1ZXN0SWRlbnRpZmllcjsKLSAgICBtX2ZpbmRDbGllbnRCeUlkZW50aWZpZXJS
ZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICBt
X2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OkZpbmRDbGllbnRCeUlkZW50aWZpZXIgeyByZXF1ZXN0SWRlbnRp
Zmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXIgfSwgMCk7Ci19
Ci0KLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50
aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYgY2xpZW50RGF0YSwgYm9vbCBoYXNTZWN1cml0eUVy
cm9yKQotewotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9maW5kQ2xpZW50QnlJZGVudGlmaWVy
UmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikpIHsKLSAgICAgICAgaWYgKGhhc1NlY3Vy
aXR5RXJyb3IpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJy
b3IgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgY2FsbGJhY2so
V1RGTW92ZShjbGllbnREYXRhKSk7Ci0gICAgfQorICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpGaW5kQ2xpZW50QnlWaXNpYmxlSWRlbnRpZmllciB7IHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAog
dm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWF0Y2hBbGwoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNlcnZp
Y2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmIG9wdGlvbnMsIFNlcnZpY2VXb3JrZXJDbGllbnRz
TWF0Y2hBbGxDYWxsYmFjayYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmgKaW5kZXggMDU4MGQ5ODMyMjhhNzJiYjhjOTk0OWNhMmIxYjRjNzExOGZhYzYxMC4uYWNlMWE5
OWRkMTE4NzFmYzJiZGQ3Y2I0NWZmNTc0YTg3OWYxNTFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGaW5p
c2hBY3RpdmF0aW9uKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAg
ICB2b2lkIHNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBib29sKSBmaW5hbDsKICAgICB2b2lkIHdvcmtlclRlcm1pbmF0ZWQo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwotICAgIHZvaWQgZmluZENs
aWVudEJ5SWRlbnRpZmllcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIEZpbmRDbGllbnRCeUlkZW50aWZp
ZXJDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmRDbGllbnRCeVZpc2libGVJZGVudGlm
aWVyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBGaW5k
Q2xpZW50QnlJZGVudGlmaWVyQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBtYXRjaEFsbChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdv
cmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRzTWF0
Y2hBbGxDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsYWltKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkV4Y2VwdGlv
bk9yPHZvaWQ+JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIHNraXBXYWl0aW5nKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFs
OwpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VydmljZVdvcmtlckZhaWxl
ZFRvU3RhcnQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXI+LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBl
eGNlcHRpb25NZXNzYWdlKSBmaW5hbDsKICAgICB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
RGF0YSYmLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdlYkNvcmU6OldvcmtlclRocmVhZE1vZGUpOwog
ICAgIHZvaWQgdXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUoV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKLSAgICB2
b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYsIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxlZCk7CisgICAgdm9pZCBzdGFydEZldGNoKFdlYkNv
cmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYm
LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZEVuYWJsZWQsIFN0cmluZyYmIGNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIHJlc3VsdGluZ0Ns
aWVudElkZW50aWZpZXIpOwogICAgIHZvaWQgY2FuY2VsRmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdl
YkNvcmU6OkZldGNoSWRlbnRpZmllcik7CiAgICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVGZXRj
aFJlc3BvbnNlKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIpOwogICAg
IHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cyYmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhJiYgc291cmNlRGF0
YSk7CkBAIC0xMDEsNyArMTAxLDYgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JF
U09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNr
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTY3JpcHRCdWZmZXIm
JiwgSGFzaE1hcDxVUkwsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMp
OwogI2VuZGlmCi0gICAgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhPiYmLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpOwogICAgIHZvaWQgbWF0Y2hB
bGxDb21wbGV0ZWQodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKTsKICAgICB2b2lkIHNldFVzZXJBZ2Vu
dChTdHJpbmcmJiB1c2VyQWdlbnQpOwogICAgIHZvaWQgY2xvc2UoKTsKQEAgLTExNyw3ICsxMTYs
NiBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogCiAg
ICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50
Pj4gbV9sb2FkZXJzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIEZpbmRDbGllbnRCeUlkZW50aWZp
ZXJDYWxsYmFjaz4gbV9maW5kQ2xpZW50QnlJZGVudGlmaWVyUmVxdWVzdHM7CiAgICAgSGFzaE1h
cDx1aW50NjRfdCwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNr
PiBtX21hdGNoQWxsUmVxdWVzdHM7CiAgICAgdWludDY0X3QgbV9wcmV2aW91c1JlcXVlc3RJZGVu
dGlmaWVyIHsgMCB9OwogICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZDU0MWI4MDMxOTJiOGQ1NGQx
ODIxN2ZiMTEyNTZkZjAwNjk1MzAyMC4uYzZhMWE4ZmIzNjc2ZGZjZDdmMmQ4Zjc0MjBhMWU4YmNj
OTBiMzEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAKIG1lc3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogICAgIEluc3RhbGxTZXJ2aWNlV29ya2VyKHN0cnVj
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgY29udGV4dERhdGEsIHN0cnVjdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyRGF0YSB3b3JrZXJEYXRhLCBTdHJpbmcgdXNlckFnZW50LCBl
bnVtOmJvb2wgV2ViQ29yZTo6V29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJlYWRNb2RlKQogICAg
IFVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBlbnVtOmJvb2wgV2ViQ29yZTo6TGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCi0gICAgU3Rh
cnRGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRj
aE9wdGlvbnMgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgU3Ry
aW5nIHJlZmVycmVyLCBib29sIGlzU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkRW5hYmxl
ZCkKKyAgICBTdGFydEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIg
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0
Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdl
YkNvcmU6OkZldGNoT3B0aW9ucyBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVl
c3RCb2R5LCBTdHJpbmcgcmVmZXJyZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRFbmFibGVkLCBTdHJpbmcgY2xpZW50SWRlbnRpZmVyLCBTdHJpbmcgcmVzdXRsaW5nQ2xp
ZW50SWRlbnRpZmllcikKICAgICBDYW5jZWxGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJ
ZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKICAgICBDb250aW51ZURpZFJlY2VpdmVGZXRjaFJl
c3BvbnNlKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVy
KQogICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudERh
dGEgc291cmNlRGF0YSkKQEAgLTM3LDcgKzM3LDYgQEAgbWVzc2FnZXMgLT4gV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9S
RVNPVVJDRSkgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgRGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdl
YkNvcmU6OlNjcmlwdEJ1ZmZlciBzY3JpcHQsIEhhc2hNYXA8VVJMLCBXZWJDb3JlOjpTY3JpcHRC
dWZmZXI+IGltcG9ydGVkU2NyaXB0cyk7CiAjZW5kaWYKLSAgICBGaW5kQ2xpZW50QnlJZGVudGlm
aWVyQ29tcGxldGVkKHVpbnQ2NF90IGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+IGRhdGEsIGJvb2wgaGFzU2Vj
dXJpdHlFcnJvcikKICAgICBNYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCBtYXRjaEFsbFJlcXVl
c3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+IGNs
aWVudHNEYXRhKQogICAgIFNldFVzZXJBZ2VudChTdHJpbmcgdXNlckFnZW50KQogICAgIFVwZGF0
ZVByZWZlcmVuY2VzU3RvcmUoc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9y
ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4
ZTFmZmQ3OTE4Y2ZhNjc5NTQwNWE1NmIzMTg3ZWYzZTc5ZDljZDhhLi42MDczY2FhOTVhY2FjM2E2
ZGVmYmEzYzE0Njg0ZTUyZDlkMTNkMjhhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDEtMTYgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgU2VydmljZVdvcmtlckNs
aWVudC5pZCBhIFVVSUQgaW5zdGVhZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MDcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVt
ZXouCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VVUlELmNw
cDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N5c3RlbVByZXZp
ZXcubW06CisKIDIwMjItMDEtMTUgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAg
ICAgICAgIENTUyBHcmFkaWVudHM6IGludGVycG9sYXRpb24gbW9kZSBzaG91bGQgZGVmYXVsdCB0
byBPS0xhYiBpZiBhbnkgbm9uLWxlZ2FjeSBjb2xvciBzeW50YXggY29sb3JzIGFyZSB1c2VkIGlu
IHRoZSBzdG9wcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxMjlmMzNkNjE2MWI0ZWNlZWRj
ZGJiNzZlOGViNzRiYzdlYmZlNDA5Li41YTUwZGZiMmYwMjVkYTQ0MDgzOWEzMzdjNjVlZjU2MmIw
ZjBlZGUzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA5LDYgKzIwOSw3IEBACiAJCTQx
NjYxQzY2MjM1NUU4NUUwMEQzM0MyNyAvKiBnZXRVc2VyTWVkaWEtd2ViYXVkaW8uaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTY2MUM2
NTIzNTVEOThCMDBEMzNDMjcgLyogZ2V0VXNlck1lZGlhLXdlYmF1ZGlvLmh0bWwgKi87IH07CiAJ
CTQxODFDNjJEMjU1QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3Rz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFD
NjJDMjU1QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCAq
LzsgfTsKIAkJNDE4NDhGNDQyNDg5MTg3OTAwMEUyNTg4IC8qIG9wZW4td2luZG93LXdpdGgtZmls
ZS11cmwtd2l0aC1ob3N0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE4NDhGNDMyNDg5MTgxNTAwMEUyNTg4IC8qIG9wZW4td2luZG93
LXdpdGgtZmlsZS11cmwtd2l0aC1ob3N0Lmh0bWwgKi87IH07CisJCTQxRDJBMjFGMjc5MDZGOUYw
MDg4RkNDRSAvKiBVVUlELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0NEQ0MEVDMjIxQjQ2QTcwMDRCNDc0RiAvKiBVVUlELmNwcCAqLzsgfTsKIAkJ
NDFFNjdBODUyNUQxNkU4MzAwN0IwQTRDIC8qIFNUVU5NZXNzYWdlUGFyc2luZ1Rlc3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFNjdBODQyNUQx
NkU4MzAwN0IwQTRDIC8qIFNUVU5NZXNzYWdlUGFyc2luZ1Rlc3QuY3BwICovOyB9OwogCQk0NDA3
N0JCMTIzMTQ0QjUwMDAxNzlFMkQgLyogRGF0YURldGVjdG9yc1Rlc3RJT1MubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDA3N0JCMDIzMTQ0OUQyMDAx
NzlFMkQgLyogRGF0YURldGVjdG9yc1Rlc3RJT1MubW0gKi87IH07CiAJCTQ0MzNBMzk2MjA4MDQ0
MTQwMDkxRUQ1NyAvKiBTeW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MzNBMzk1MjA4MDQ0MTMwMDkxRUQ1NyAv
KiBTeW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbSAqLzsgfTsKQEAgLTU0MDMsNiArNTQwNCw3IEBA
CiAJCQkJRTNDMjFBN0MyMUIyNUNBMjAwM0IzMUEzIC8qIFVSTEV4dHJhcy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUUzQTFFNzg1MjFCMjVCOTEwMDhDNjAwNyAvKiBVUkxQYXJzZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0M4M0UwM0IxRDBBNjAyNzAwRkVCQ0YzIC8qIFV0aWxpdGllc0NvY29h
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDFEMkEyMUYyNzkwNkY5RjAwODhGQ0NFIC8qIFVVSUQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGNEMxRDBBNTkwQzAwRkVCQ0YzIC8qIFZlY3Rv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzN0M3Q0MyRDFFQTQxNDZCMDA3QkQ5NTYgLyogV2Vh
a0xpbmtpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTdDM0ZBNjYxRjdDMjQ4RjAwOUQ0Qjgw
IC8qIFdlYWtQdHIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9VVUlELmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1VVSUQuY3BwCmluZGV4IGQ3ZGUzYWZjODcwZjlhMWIxNmY3OTM2MWVhMTA3YTBjYmY0NWJhNDAu
LjI4M2IwZjZlMjMxOTViMTMyMjgxN2QxMTFhMjMwZjRjODlhOWViYjcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VVSUQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1VVSUQuY3BwCkBAIC0zMSwzICszMSwyNiBAQCBURVNUKFdURiwgQm9v
dFNlc3Npb25VVUlESWRlbnRpdHkpCiB7CiAgICAgRVhQRUNUX0VRKGJvb3RTZXNzaW9uVVVJRFN0
cmluZygpLCBib290U2Vzc2lvblVVSURTdHJpbmcoKSk7CiB9CisKK1RFU1QoV1RGLCBUZXN0VVVJ
RFBhcnNpbmcpCit7CisgICAgYXV0byBjcmVhdGVkICA9IFVVSUQ6OmNyZWF0ZSgpOworICAgIGF1
dG8gdmFsdWUgPSBVVUlEOjpwYXJzZShjcmVhdGVkLnRvU3RyaW5nKCkpOworICAgIEVYUEVDVF9U
UlVFKCEhdmFsdWUpOworICAgIEVYUEVDVF9FUShjcmVhdGVkLCAqdmFsdWUpOworCisgICAgLy8g
eHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4CisgICAgdmFsdWUgPSBVVUlEOjpw
YXJzZSgiMTIzNDU2NzgtOWFiYy01ZGUwLTg5QUItMDEyMzQ1Njc4OWFiIik7CisgICAgRVhQRUNU
X0ZBTFNFKCEhdmFsdWUpOworCisgICAgdmFsdWUgPSBVVUlEOjpwYXJzZSgiMTIzNDU2NzgtOWFi
Yy00ZGVhLTc5QUItMDEyMzQ1Njc4OWFiIik7CisgICAgRVhQRUNUX0ZBTFNFKCEhdmFsdWUpOwor
CisgICAgdmFsdWUgPSBVVUlEOjpwYXJzZSgiMTIzNDU2NzgtOWFiYy00ZGUwLTg5YWItMDEyMzQ1
Njc4OWFiIik7CisgICAgRVhQRUNUX1RSVUUoISF2YWx1ZSk7CisgICAgRVhQRUNUX1RSVUUodmFs
dWUtPnRvU3RyaW5nKCkgPT0gIjEyMzQ1Njc4LTlhYmMtNGRlMC04OWFiLTAxMjM0NTY3ODlhYiIp
OworCisgICAgdmFsdWUgPSBVVUlEOjpwYXJzZSgiNmVmOTQ0YzEtNWNiOC00OGFhLUFkMTItQzVm
ODIzZjAwNWMzIik7CisgICAgRVhQRUNUX1RSVUUoISF2YWx1ZSk7CisgICAgRVhQRUNUX1RSVUUo
dmFsdWUtPnRvU3RyaW5nKCkgPT0gIjZlZjk0NGMxLTVjYjgtNDhhYS1hZDEyLWM1ZjgyM2YwMDVj
MyIpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TeXN0ZW1QcmV2aWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TeXN0ZW1QcmV2aWV3Lm1tCmluZGV4IGJkNGIzNWYyMDAwMDExMGU4YjVlMDQ2ZGMwN2IzMGJk
MzgwNjg5ZWMuLjczMWI4MTE1NWQ0YTcxNjcxZTg4YWM0Y2Y0MjAxZWMyMjdiMDQyODIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3lzdGVtUHJldmll
dy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N5c3RlbVBy
ZXZpZXcubW0KQEAgLTM3LDE5ICszNywxOSBAQAogc3RhdGljIGJvb2wgaGFzVHJpZ2dlckluZm87
CiBzdGF0aWMgYm9vbCB3YXNUcmlnZ2VyZWQ7CiBzdGF0aWMgdWludDY0X3QgZWxlbWVudElEOwot
c3RhdGljIHVpbnQ2NF90IGRvY3VtZW50SUQ7CiBzdGF0aWMgdWludDY0X3QgcGFnZUlEOwogCiBA
aW50ZXJmYWNlIFRlc3RTeXN0ZW1QcmV2aWV3VHJpZ2dlcmVkSGFuZGxlciA6IE5TT2JqZWN0IDxX
S1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gVGVzdFN5c3Rl
bVByZXZpZXdUcmlnZ2VyZWRIYW5kbGVyCitTdHJpbmcgZG9jdW1lbnRJRDsKIAogLSAodm9pZCl1
c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRl
bnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKilt
ZXNzYWdlCiB7CiAgICAgaWYgKFttZXNzYWdlLmJvZHlbQCJtZXNzYWdlIl0gaXNFcXVhbFRvU3Ry
aW5nOkAibG9hZGVkIl0pIHsKICAgICAgICAgZWxlbWVudElEID0gW21lc3NhZ2UuYm9keVtAImVs
ZW1lbnRJRCJdIHVuc2lnbmVkSW50VmFsdWVdOwotICAgICAgICBkb2N1bWVudElEID0gW21lc3Nh
Z2UuYm9keVtAImRvY3VtZW50SUQiXSB1bnNpZ25lZEludFZhbHVlXTsKKyAgICAgICAgZG9jdW1l
bnRJRCA9IG1lc3NhZ2UuYm9keVtAImRvY3VtZW50SUQiXTsKICAgICAgICAgcGFnZUlEID0gW21l
c3NhZ2UuYm9keVtAInBhZ2VJRCJdIHVuc2lnbmVkSW50VmFsdWVdOwogICAgICAgICBoYXNUcmln
Z2VySW5mbyA9IHRydWU7CiAgICAgfSBlbHNlIGlmIChbbWVzc2FnZS5ib2R5W0AibWVzc2FnZSJd
IGlzRXF1YWxUb1N0cmluZzpAInRyaWdnZXJlZCJdKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDNlOGU5ZGYxZTNhMWNi
YmZlMDhiMmNhZTRiMjllYmFhYzVhNjBjNC4uZWE1MTIwZDAyNzkxOTc0YzJmMDNjM2E3ZTIxM2Mz
NDU0NTYwNDNiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAxLTE2ICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFNlcnZpY2VXb3JrZXJDbGll
bnQuaWQgYSBVVUlEIGluc3RlYWQgb2YgYSBzdHJpbmcgZGVyaXZlZCBmcm9tIGEgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNTA3MAorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6
LgorCisgICAgICAgIFVwZGF0ZWQgdGVzdHMgdG8gbm90IHJlbHkgb24gdmlzaWJsZSBJRCB0byBi
ZSB0aGUgc2VyaWFsaXphdGlvbiBvZiBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
LgorICAgICAgICBGb3IgdGhhdCByZWFzb24sIGFkZCBpbnRlcm5hbHMgQVBJIHRvIGdldCB0aGUg
aW50ZXJuYWwgSUQgZnJvbSBhIFNlcnZpY2VXb3JrZXJDbGllbnQuCisKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9jbGllbnQtYWRkZWQtdG8tY2xpZW50cy13aGVuLXJlc3Rv
cmVkLWZyb20tcGFnZS1jYWNoZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL2NsaWVudC1yZW1vdmVkLWZyb20tY2xpZW50cy13aGlsZS1pbi1wYWdlLWNhY2hlLmh0
bWw6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2dldENs
aWVudElkcy13b3JrZXIuanM6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
c2VydmljZXdvcmtlcmNsaWVudHMtbWF0Y2hBbGwtd29ya2VyLmpzOgorICAgICAgICAqIGh0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLW1hdGNoQWxsLmh0dHBz
Lmh0bWw6CisKIDIwMjItMDEtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIFRyYW5zbWl0IG5ldHdvcmsgbG9hZCBtZXRyaWNzIHdoZW4gc2VydmljZSB3b3Jr
ZXIgaXMgdXNpbmcgb25lIG9mIGl0cyBuZXR3b3JrIGxvYWQgdG8gcmVzcG9uZCB0byBGZXRjaEV2
ZW50cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggOWNlMzY2OGZhNmMyN2QyN2M1
Nzk1Mzg1ZTllNzZkNmQzOGZmODFlMy4uZTJkNGI4YzIwZWViNTA4YTE4ZmQ2MTllYTYxYTM4MGFi
MDM0YTZkNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMjItMDEtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAg
IE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5pZCBhIFVVSUQgaW5zdGVhZCBvZiBhIHN0cmluZyBk
ZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MDcwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLWV2ZW50Lmh0dHBzLWV4cGVjdGVk
LnR4dDoKKwogMjAyMi0wMS0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgVHJhbnNtaXQgbmV0d29yayBsb2FkIG1ldHJpY3Mgd2hlbiBzZXJ2aWNlIHdvcmtl
ciBpcyB1c2luZyBvbmUgb2YgaXRzIG5ldHdvcmsgbG9hZCB0byByZXNwb25kIHRvIEZldGNoRXZl
bnRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9j
bGllbnQtYWRkZWQtdG8tY2xpZW50cy13aGVuLXJlc3RvcmVkLWZyb20tcGFnZS1jYWNoZS5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvY2xpZW50LWFkZGVkLXRv
LWNsaWVudHMtd2hlbi1yZXN0b3JlZC1mcm9tLXBhZ2UtY2FjaGUuaHRtbAppbmRleCAxMDc5N2Yy
OGUzNGU1YTk3MjIwODcwMWQyN2YzYWVmZDE3NTE4NDlmLi42YTIyODRlY2YyYzM5ZjFiODhkNjZk
YWJjMmY1YTdhYTZlMWIwMjJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9jbGllbnQtYWRkZWQtdG8tY2xpZW50cy13aGVuLXJlc3RvcmVkLWZyb20t
cGFnZS1jYWNoZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL2NsaWVudC1hZGRlZC10by1jbGllbnRzLXdoZW4tcmVzdG9yZWQtZnJvbS1wYWdlLWNhY2hl
Lmh0bWwKQEAgLTcwLDEyICs3MCwxMiBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVu
dExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKIH0pOwogCiBuYXZpZ2F0b3Iu
c2VydmljZVdvcmtlci5yZWdpc3RlcigicmVzb3VyY2VzL2dldENsaWVudElkcy13b3JrZXIuanMi
LCB7IH0pLnRoZW4oZnVuY3Rpb24ocmVnaXN0cmF0aW9uKSB7Ci0gICAgZXhwZWN0ZWRDbGllbnRJ
ZGVudGlmaWVycy5wdXNoKGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihk
b2N1bWVudCkpOworICAgIGV4cGVjdGVkQ2xpZW50SWRlbnRpZmllcnMucHVzaChpbnRlcm5hbHMu
c2VydmljZVdvcmtlckNsaWVudEludGVybmFsSWRlbnRpZmllcihkb2N1bWVudCkpOwogCiAgICAg
d29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CiAgICAgb3RoZXJXaW5kb3cgPSBvcGVu
KCJvdGhlcl9yZXNvdXJjZXMvdGVzdC5odG1sIik7CiAgICAgb3RoZXJXaW5kb3cub25sb2FkID0g
ZnVuY3Rpb24oKSB7Ci0gICAgICBleHBlY3RlZENsaWVudElkZW50aWZpZXJzLnB1c2goaW50ZXJu
YWxzLnNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKG90aGVyV2luZG93LmRvY3VtZW50KSk7
CisgICAgICBleHBlY3RlZENsaWVudElkZW50aWZpZXJzLnB1c2goaW50ZXJuYWxzLnNlcnZpY2VX
b3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIob3RoZXJXaW5kb3cuZG9jdW1lbnQpKTsKICAg
ICAgIHN0ZXAgPSAiQm90aENsaWVudHNJbml0aWFsbHlBY3RpdmUiCiAgICAgICB3b3JrZXIucG9z
dE1lc3NhZ2UoImdldENsaWVudElkcyIpOwogICAgIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9jbGllbnQtcmVtb3ZlZC1mcm9tLWNsaWVudHMt
d2hpbGUtaW4tcGFnZS1jYWNoZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvY2xpZW50LXJlbW92ZWQtZnJvbS1jbGllbnRzLXdoaWxlLWluLXBhZ2UtY2FjaGUu
aHRtbAppbmRleCBmOWZjZjVkMzQyYjEzYzBhZGUxYjVlZmJiMWE3NDVjOGNhYjZhNDc3Li42OGE5
ZmM2MjQ5ZjUwNTM1Mjk0ZGY0Mzk3NTFiNTM3ZGY4YjZiMDY2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9jbGllbnQtcmVtb3ZlZC1mcm9tLWNsaWVu
dHMtd2hpbGUtaW4tcGFnZS1jYWNoZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL2NsaWVudC1yZW1vdmVkLWZyb20tY2xpZW50cy13aGlsZS1pbi1wYWdl
LWNhY2hlLmh0bWwKQEAgLTY1LDEyICs2NSwxNCBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5h
ZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKIH0pOwogCiBuYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigicmVzb3VyY2VzL2dldENsaWVudElkcy13b3Jr
ZXIuanMiLCB7IH0pLnRoZW4oZnVuY3Rpb24ocmVnaXN0cmF0aW9uKSB7Ci0gICAgdG9wQ2xpZW50
SWRlbnRpZmllciA9IGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihkb2N1
bWVudCk7CisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICByZXR1cm47CisgICAg
dG9wQ2xpZW50SWRlbnRpZmllciA9IGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SW50ZXJu
YWxJZGVudGlmaWVyKGRvY3VtZW50KTsKIAogICAgIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0
YWxsaW5nOwogICAgIG90aGVyV2luZG93ID0gb3Blbigib3RoZXJfcmVzb3VyY2VzL3Rlc3QuaHRt
bCIpOwogICAgIG90aGVyV2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgICAgd2luZG93
Q2xpZW50SWRlbnRpZmllciA9IGludGVybmFscy5zZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
cihvdGhlcldpbmRvdy5kb2N1bWVudCk7CisgICAgICB3aW5kb3dDbGllbnRJZGVudGlmaWVyID0g
aW50ZXJuYWxzLnNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIob3RoZXJXaW5k
b3cuZG9jdW1lbnQpOwogICAgICAgc3RlcCA9ICJCb3RoQ2xpZW50c0luaXRpYWxseUFjdGl2ZSIK
ICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSgiZ2V0Q2xpZW50SWRzIik7CiAgICAgfTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9n
ZXRDbGllbnRJZHMtd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Nl
cnZpY2UvcmVzb3VyY2VzL2dldENsaWVudElkcy13b3JrZXIuanMKaW5kZXggOTlkYzFjYjgyMjFk
MGRmOGRmMGNlZWM3ZjVmYTZiMTA4M2Q3M2IxOC4uY2UxOWIyNGY4MDgwNGRhMGY1NTE3OTNhZGE3
YWZlNjdlZmUwNGNjNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvcmVzb3VyY2VzL2dldENsaWVudElkcy13b3JrZXIuanMKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2dldENsaWVudElkcy13b3Jr
ZXIuanMKQEAgLTMsNyArMyw3IEBAIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChl
dmVudCkgPT4gewogICAgIGNsaWVudHMubWF0Y2hBbGwoeyBpbmNsdWRlVW5jb250cm9sbGVkIDog
dHJ1ZSB9KS50aGVuKGZ1bmN0aW9uKGNsaWVudHMpIHsKICAgICAgICAgbGV0IGlkcyA9IFtdOwog
ICAgICAgICBmb3IgKGxldCBjbGllbnQgb2YgY2xpZW50cykKLSAgICAgICAgICAgIGlkcy5wdXNo
KGNsaWVudC5pZCk7CisgICAgICAgICAgICBpZHMucHVzaChzZWxmLmludGVybmFscy5zZXJ2aWNl
V29ya2VyQ2xpZW50SW50ZXJuYWxJZGVudGlmaWVyKGNsaWVudCkpOwogICAgICAgICBzb3VyY2Uu
cG9zdE1lc3NhZ2UoaWRzKTsKICAgICB9KTsKIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudHMtbWF0Y2hBbGwt
d29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2Vydmlj
ZXdvcmtlcmNsaWVudHMtbWF0Y2hBbGwtd29ya2VyLmpzCmluZGV4IGJkYmEyODI4NjA1M2YxZmRh
ZDAzNWQzOTMzYzI4NjgwMTE3MzY4YzMuLmRiNmYwNTRmNjg5MmNmMDJhNjhkZDk5OWZiODg2OGUy
MmYzY2NhNzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLW1hdGNoQWxsLXdvcmtlci5qcworKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1tYXRj
aEFsbC13b3JrZXIuanMKQEAgLTMsNiArMywxNSBAQCBmdW5jdGlvbiB3YWl0Rm9yKGR1cmF0aW9u
KQogICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZl
LCBkdXJhdGlvbikpOwogfQogCithc3luYyBmdW5jdGlvbiBzZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllckZyb21JbnRlcm5hbElkZW50aWZpZXIoaW50ZXJuYWxJZGVudGlmaWVyKQoreworICAg
ICBjb25zdCBjbGllbnRzID0gYXdhaXQgc2VsZi5jbGllbnRzLm1hdGNoQWxsKHsgaW5jbHVkZVVu
Y29udHJvbGxlZCA6IHRydWUgfSk7CisgICAgIGZvciAobGV0IGNsaWVudCBvZiBjbGllbnRzKSB7
CisgICAgICAgICBpZiAoaW50ZXJuYWxzLnNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50
aWZpZXIoY2xpZW50KSA9PSBpbnRlcm5hbElkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4g
Y2xpZW50LmlkOworICAgICB9Cit9CisKIGZ1bmN0aW9uIGNoZWNrQ2xpZW50Tm90SW5Db250cm9s
bGVkQ2xpZW50cyhjbGllbnRJZGVudGlmaWVyKQogewogICAgIHJldHVybiBzZWxmLmNsaWVudHMu
bWF0Y2hBbGwoKS50aGVuKChjbGllbnRzKSA9PiB7CkBAIC0zNyw3ICs0Niw3IEBAIGFzeW5jIGZ1
bmN0aW9uIGRvVGVzdEFmdGVyTWVzc2FnZShldmVudCkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIGNvbnN0IGNsaWVudElkZW50aWZpZXIgPSBldmVudC5kYXRhLmlk
ZW50aWZpZXI7CisgICAgICAgIGNvbnN0IGNsaWVudElkZW50aWZpZXIgPSBhd2FpdCBzZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllckZyb21JbnRlcm5hbElkZW50aWZpZXIoZXZlbnQuZGF0YS5p
ZGVudGlmaWVyKTsKIAogICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgY2hlY2tDbGllbnROb3RJ
bkNvbnRyb2xsZWRDbGllbnRzKGNsaWVudElkZW50aWZpZXIpOwogICAgICAgICBpZiAocmVzdWx0
ICE9PSAiUEFTUyIpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLW1hdGNoQWxsLmh0dHBzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1t
YXRjaEFsbC5odHRwcy5odG1sCmluZGV4IDJlNmRiZjk5MmQwNTJkOWYxZTNlNTE4ZGQ3YjBlODUx
ZWYyMDAwYTcuLjY5YjVmMjg5MDE2ZmU0ODAxYmUxYWE5MDEyYjVkYjllNmRiNDZmYTAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3Jr
ZXJjbGllbnRzLW1hdGNoQWxsLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudHMtbWF0Y2hBbGwuaHR0cHMuaHRt
bApAQCAtMjcsNyArMjcsNyBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKIH0sICJT
ZXR1cCB3b3JrZXIiKTsKIAogcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7Ci0gICAgY29u
c3Qgc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgPSBpbnRlcm5hbHMuc2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXIoZG9jdW1lbnQpOworICAgIGNvbnN0IHNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyID0gaW50ZXJuYWxzLnNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50
aWZpZXIoZG9jdW1lbnQpOwogICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUs
IHJlamVjdCkgPT4gewogICAgICAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExp
c3RlbmVyKCJtZXNzYWdlIiwgdGVzdC5zdGVwX2Z1bmMoKGV2ZW50KSA9PiB7CiAgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKGV2ZW50LmRhdGEsICJQQVNTIik7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2
aWNlLXdvcmtlci9mZXRjaC1ldmVudC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci9mZXRjaC1ldmVudC5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNWQyYjlhNDMyZGEwMzQ1
ZjkwMzA3N2YwMGI2ZWYwYTYwZmVlMmRiNC4uZGQzNmU5YmJhMzQ1YjhlNTYyMzFlZTUyZDgyYTUy
YTk1MmNlOGYyOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtZXZlbnQuaHR0
cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLWV2ZW50Lmh0dHBz
LWV4cGVjdGVkLnR4dApAQCAtNiw3ICs2LDcgQEAgUEFTUyBTZXJ2aWNlIFdvcmtlciByZXNwb25k
cyB0byBmZXRjaCBldmVudCB1c2luZyByZXF1ZXN0IGZyYWdtZW50IHdpdGggc3RyaW5nCiBQQVNT
IFNlcnZpY2UgV29ya2VyIHJlc3BvbmRzIHRvIGZldGNoIGV2ZW50IHdpdGggYmxvYiBib2R5CiBQ
QVNTIFNlcnZpY2UgV29ya2VyIHJlc3BvbmRzIHRvIGZldGNoIGV2ZW50IHdpdGggdGhlIHJlZmVy
cmVyIFVSTAogUEFTUyBTZXJ2aWNlIFdvcmtlciByZXNwb25kcyB0byBmZXRjaCBldmVudCB3aXRo
IGFuIGV4aXN0aW5nIGNsaWVudCBpZAotRkFJTCBTZXJ2aWNlIFdvcmtlciByZXNwb25kcyB0byBm
ZXRjaCBldmVudCB3aXRoIHRoZSBjb3JyZWN0IHJlc3VsdGluZyBjbGllbnQgaWQgYXNzZXJ0X2Vx
dWFsczogU2VydmljZSBXb3JrZXIgc2hvdWxkIHJlc3BvbmQgd2l0aCBhbiBlbXB0eSByZXN1bHRp
bmcgY2xpZW50IGlkIGZvciBzdWJyZXNvdXJjZSByZXF1ZXN0cyBleHBlY3RlZCAiUmVzdWx0aW5n
IENsaWVudCBJRCBOb3QgRm91bmQiIGJ1dCBnb3QgIlJlc3VsdGluZyBDbGllbnQgSUQgRm91bmQ6
IHVuZGVmaW5lZCIKK1BBU1MgU2VydmljZSBXb3JrZXIgcmVzcG9uZHMgdG8gZmV0Y2ggZXZlbnQg
d2l0aCB0aGUgY29ycmVjdCByZXN1bHRpbmcgY2xpZW50IGlkCiBQQVNTIFNlcnZpY2UgV29ya2Vy
IGRvZXMgbm90IHJlc3BvbmQgdG8gZmV0Y2ggZXZlbnQKIFBBU1MgU2VydmljZSBXb3JrZXIgcmVz
cG9uZHMgdG8gZmV0Y2ggZXZlbnQgd2l0aCBudWxsIHJlc3BvbnNlIGJvZHkKIFBBU1MgU2Vydmlj
ZSBXb3JrZXIgZmV0Y2hlcyBvdGhlciBmaWxlIGluIGZldGNoIGV2ZW50Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449374</attachid>
            <date>2022-01-18 03:45:33 -0800</date>
            <delta_ts>2022-01-18 04:01:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235070-20220118124531.patch</filename>
            <type>text/plain</type>
            <size>12430</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAwNThjMmQzNGY2ZGMwMzNiYjdiOGQx
N2UyNTgwOGQzMGMxNjhiM2YuLjE2OGE1YjlmZjAzNmU3MmUwZmViYzk3YTVmYWYxODUxNjYwOWQ0
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjItMDEtMTggIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5pZCBhIFVV
SUQgaW5zdGVhZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM1MDcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzY3MzU0MD4KKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlciBhbmQgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiB3
dGYvVVVJRC5jcHA6CisgICAgICAgICogd3RmL1VVSUQuaDoKKyAgICAgICAgVXNlIHVpbnQ2NF90
IGxvZ2ljIHRvIGdlbmVyYXRlIFVVSURzIGFuZCByZW1vdmUgc29tZSByZWludGVycHJldF9jYXN0
LgorICAgICAgICBSZW1vdmUgdGhlIEhhc2hlciBhZGQgc2luY2Ugd2UgZGlyZWN0bHkgdXNlIFVV
SUQgaGFzaCBpbiBXZWJDb3JlLgorICAgICAgICBTaW1wbGlmeSBwYXJzaW5nIGxvZ2ljIGJ5IHVz
aW5nIG1vcmUgcGFyc2VJbnRlZ2VycyBhbmQgYml0IGxvZ2ljLgorICAgICAgICBBbHNvIG1ha2Ug
c3VyZSB3ZSBhcmUgbm90IGFibGUgdG8gY3JlYXRlIGVtcHR5L2RlbGV0ZWQgVVVJRCB2YWx1ZSBm
cm9tIHN0cmluZ3MuCisKIDIwMjItMDEtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5pZCBhIFVVSUQgaW5zdGVh
ZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
ZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGRhYmM0YzQ2ZjM3NzJiZTk3NzNlYzcwMzE1ZTA0ODU0N2Q1YmFm
MGQuLmIwNTg4NTM0Zjc1NmUwYTFmMjUyNWFmOTlhZmY5MjJhZTM1ZWEwYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMS0xOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKKyAgICAgICAgTWFrZSBTZXJ2aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0
ZWFkIG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJvbSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzUwNzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3NjczNTQwPgorCisgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyIGFuZCBDaHJpcyBEdW1lei4KKworICAgICAgICBDb3ZlcmVkIGJ5
IGV4aXN0aW5nIGFuZCBiZWVmZWQtdXAgQVBJIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaDoKKyAgICAgICAgUmVtb3ZlIHVubmVl
ZGVkIGNvbnN0ICYgYW5kICYmIGNvbnN0cnVjdG9ycyBhbmQgdXNlIGJ5IHZhbHVlIGNvbnN0cnVj
dG9yIGluc3RlYWQuCisgICAgICAgIEFkZCBjb21wdXRlSGFzaCBkaXJlY3Qgc3BlY2lhbGl6YXRp
b24gdG8gcmVtb3ZlIFVVSUQgSGFzaGVyIHNwZWNpYWxpemF0aW9uLgorCiAyMDIyLTAxLTE4ICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBIHNhbmRib3hlZCBk
b2N1bWVudCBzaG91bGQgbm90IHJldXNlIGl0cyBzZXJ2aWNlIHdvcmtlciBjbGllbnQgSUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwIGIvU291cmNlL1dURi93dGYvVVVJRC5j
cHAKaW5kZXggZWI1ZGQzODkzMWQwNjdiMDdkNzkzODBlODMwM2I3YmY2ZDM2ZDEwMC4uZmU5Mzg1
MDZjNWI2NjEzNDg5NDk3MGMzNTgxZTExMTJiMWRkY2YzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvVVVJRC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVVJRC5jcHAKQEAgLTUyLDkgKzUy
LDExIEBAIFVVSUQ6OlVVSUQoKQogICAgICAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVl
cyhkYXRhLCAxNik7CiAgICAgfSB3aGlsZSAobV9kYXRhID09IGVtcHR5VmFsdWUgfHwgbV9kYXRh
ID09IGRlbGV0ZWRWYWx1ZSk7CiAKLSAgICAvLyBXZSBzYW5pdGl6ZSB0aGUgdmFsdWUgc28gYXMg
bm90IGxvb3NpbmcgYW55IGRhdGEgd2hlbiBnb2luZyB0byBWZXJzaW9uIDQgVVVJRHMuCi0gICAg
ZGF0YVs1XSAmPSAweDBmOwotICAgIGRhdGFbMTFdICY9IDB4Y2Y7CisgICAgLy8gV2Ugc2FuaXRp
emUgdGhlIHZhbHVlIHRvIG5vdCBsb29zZSBhbnkgaW5mb3JtYXRpb24gd2hlbiBzZXJpYWxpemlu
ZyBhcyBWZXJzaW9uIDQgVVVJRC4KKyAgICB1aW50NjRfdCBoaWdoID0gKG1fZGF0YSA+PiA2NCkg
JiAweGZmZmZmZmZmZmZmZjBmZmY7CisgICAgdWludDY0X3QgbG93ID0gbV9kYXRhICYgMHgzZmZm
ZmZmZmZmZmZmZmZmOworCisgICAgbV9kYXRhID0gKHN0YXRpY19jYXN0PFVJbnQxMjg+KGhpZ2gp
IDw8IDY0KSB8IGxvdzsKIH0KIAogdW5zaWduZWQgVVVJRDo6aGFzaCgpIGNvbnN0CkBAIC02NCwy
MSArNjYsMjAgQEAgdW5zaWduZWQgVVVJRDo6aGFzaCgpIGNvbnN0CiAKIFN0cmluZyBVVUlEOjp0
b1N0cmluZygpIGNvbnN0CiB7Ci0gICAgYXV0byogcmFuZG9tRGF0YSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdW5zaWduZWQqPigmbV9kYXRhKTsKKyAgICB1aW50NjRfdCBoaWdoID0gbV9kYXRh
ID4+IDY0OworICAgIHVpbnQ2NF90IGxvdyA9IG1fZGF0YSAmIDB4M2ZmZmZmZmZmZmZmZmZmZjsK
IAogICAgIC8vIEZvcm1hdCBhcyBWZXJzaW9uIDQgVVVJRC4KICAgICByZXR1cm4gbWFrZVN0cmlu
ZygKLSAgICAgICAgaGV4KHJhbmRvbURhdGFbMF0sIDgsIExvd2VyY2FzZSksCisgICAgICAgIGhl
eChoaWdoID4+IDMyLCA4LCBMb3dlcmNhc2UpLAogICAgICAgICAnLScsCi0gICAgICAgIGhleChy
YW5kb21EYXRhWzFdID4+IDE2LCA0LCBMb3dlcmNhc2UpLAorICAgICAgICBoZXgoKGhpZ2ggPj4g
MTYpICYgMHhmZmZmLCA0LCBMb3dlcmNhc2UpLAogICAgICAgICAiLTQiLAotICAgICAgICBoZXgo
cmFuZG9tRGF0YVsxXSAmIDB4MDAwMDBmZmYsIDMsIExvd2VyY2FzZSksCisgICAgICAgIGhleCho
aWdoICYgMHhmZmYsIDMsIExvd2VyY2FzZSksCiAgICAgICAgICctJywKLSAgICAgICAgaGV4KChy
YW5kb21EYXRhWzJdID4+IDMwKSB8IDB4OCwgMSwgTG93ZXJjYXNlKSwKLSAgICAgICAgaGV4KChy
YW5kb21EYXRhWzJdID4+IDE2KSAmIDB4MDAwMDBmZmYsIDMsIExvd2VyY2FzZSksCisgICAgICAg
IGhleCgobG93ID4+IDQ4KSB8IDB4ODAwMCwgNCwgTG93ZXJjYXNlKSwKICAgICAgICAgJy0nLAot
ICAgICAgICBoZXgocmFuZG9tRGF0YVsyXSAmIDB4MDAwMGZmZmYsIDQsIExvd2VyY2FzZSksCi0g
ICAgICAgIGhleChyYW5kb21EYXRhWzNdLCA4LCBMb3dlcmNhc2UpCisgICAgICAgIGhleChsb3cg
JiAweGZmZmZmZmZmZmZmZiwgMTIsIExvd2VyY2FzZSkKICAgICApOwogfQogCkBAIC05MSw0OSAr
OTIsNDMgQEAgc3RkOjpvcHRpb25hbDxVVUlEPiBVVUlEOjpwYXJzZShTdHJpbmdWaWV3IHZhbHVl
KQogICAgIGlmICh2YWx1ZVs4XSAhPSAnLScgfHwgdmFsdWVbMTNdICE9ICctJyAgfHwgdmFsdWVb
MTRdICE9ICc0JyB8fCB2YWx1ZVsxOF0gIT0gJy0nIHx8IHZhbHVlWzIzXSAhPSAnLScpCiAgICAg
ICAgIHJldHVybiB7IH07CiAKLSAgICB1bnNpZ25lZCB5ID0gdmFsdWVbMTldOwotICAgIGlmICh5
ID09ICc4JyB8fCB5ID09ICc5JykKLSAgICAgICAgeSA9IHkgLSAnOCc7Ci0gICAgZWxzZSBpZiAo
eSA9PSAnYScgfHwgeSA9PSAnQScpCi0gICAgICAgIHkgPSAyOwotICAgIGVsc2UgaWYgKHkgPT0g
J2InIHx8IHkgPT0gJ0InKQotICAgICAgICB5ID0gMzsKLSAgICBlbHNlCisgICAgLy8gcGFyc2VJ
bnRlZ2VyIG1heSBhY2NlcHQgaW50ZWdlcnMgc3RhcnRpbmcgd2l0aCArLCBsZXQncyBjaGVjayB0
aGlzIGJlZm9yZWhhbmQuCisgICAgaWYgKHZhbHVlWzBdID09ICcrJyB8fCB2YWx1ZVs5XSA9PSAn
KycgIHx8IHZhbHVlWzE5XSA9PSAnKycgfHwgdmFsdWVbMjRdID09ICcrJykKICAgICAgICAgcmV0
dXJuIHsgfTsKIAotICAgIGF1dG8gZmlyc3RWYWx1ZSA9IHBhcnNlSW50ZWdlcjx1bnNpZ25lZD4o
dmFsdWUuc3Vic3RyaW5nKDAsIDgpLCAxNik7CisgICAgYXV0byBmaXJzdFZhbHVlID0gcGFyc2VJ
bnRlZ2VyPHVpbnQ2NF90Pih2YWx1ZS5zdWJzdHJpbmcoMCwgOCksIDE2KTsKICAgICBpZiAoIWZp
cnN0VmFsdWUpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIHNlY29uZFZhbHVlID0g
cGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1ZS5zdWJzdHJpbmcoOSwgNCksIDE2KTsKKyAgICBh
dXRvIHNlY29uZFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90Pih2YWx1ZS5zdWJzdHJpbmco
OSwgNCksIDE2KTsKICAgICBpZiAoIXNlY29uZFZhbHVlKQogICAgICAgICByZXR1cm4geyB9Owog
Ci0gICAgYXV0byB0aGlyZFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1ZS5zdWJz
dHJpbmcoMTUsIDMpLCAxNik7CisgICAgYXV0byB0aGlyZFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVp
bnQ2NF90Pih2YWx1ZS5zdWJzdHJpbmcoMTUsIDMpLCAxNik7CiAgICAgaWYgKCF0aGlyZFZhbHVl
KQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byBmb3VydGhWYWx1ZSA9IHBhcnNlSW50
ZWdlcjx1bnNpZ25lZD4odmFsdWUuc3Vic3RyaW5nKDIwLCAzKSwgMTYpOworICAgIGF1dG8gZm91
cnRoVmFsdWUgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHZhbHVlLnN1YnN0cmluZygxOSwgNCks
IDE2KTsKICAgICBpZiAoIWZvdXJ0aFZhbHVlKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAg
YXV0byBmaWZ0aFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1ZS5zdWJzdHJpbmco
MjQsIDQpLCAxNik7Ci0gICAgaWYgKCFmaWZ0aFZhbHVlKQorICAgIC8vIEZvdXJ0aCB2YWx1ZSBz
dGFydHMgd2l0aCAneScsIGl0IG11c3QgYmUgYWJvdmUgMHg4MDAwIGFuZCBiZWxvdyAweEJGRkZG
LgorICAgIGlmICgoKmZvdXJ0aFZhbHVlICYgMHhjMDAwKSAhPSAweDgwMDApCiAgICAgICAgIHJl
dHVybiB7IH07CisgICAgZm91cnRoVmFsdWUgPSAqZm91cnRoVmFsdWUgJiAweDNmZmY7CiAKLSAg
ICBhdXRvIHNpeHRoVmFsdWUgPSBwYXJzZUludGVnZXI8dW5zaWduZWQ+KHZhbHVlLnN1YnN0cmlu
ZygyOCwgOCksIDE2KTsKLSAgICBpZiAoIXNpeHRoVmFsdWUpCisgICAgYXV0byBmaWZ0aFZhbHVl
ID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90Pih2YWx1ZS5zdWJzdHJpbmcoMjQsIDEyKSwgMTYpOwor
ICAgIGlmICghZmlmdGhWYWx1ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFVJbnQxMjgg
dXVpZFZhbHVlOworICAgIHVpbnQ2NF90IGhpZ2ggPSAoKmZpcnN0VmFsdWUgPDwgMzIpIHwgKCpz
ZWNvbmRWYWx1ZSA8PCAxNikgfCAqdGhpcmRWYWx1ZTsKKyAgICB1aW50NjRfdCBsb3cgPSAoKmZv
dXJ0aFZhbHVlIDw8IDQ4KSB8ICpmaWZ0aFZhbHVlOwogCi0gICAgYXV0byogZGF0YSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dW5zaWduZWQqPigmdXVpZFZhbHVlKTsKLSAgICBkYXRhWzBdID0gKmZpcnN0
VmFsdWU7Ci0gICAgZGF0YVsxXSA9ICgqc2Vjb25kVmFsdWUgPDwgMTYpIHwgKnRoaXJkVmFsdWU7
Ci0gICAgZGF0YVsyXSA9ICgoKmZvdXJ0aFZhbHVlIDw8IDE2KSB8ICpmaWZ0aFZhbHVlKSArICh5
IDw8IDMwKTsKLSAgICBkYXRhWzNdID0gKnNpeHRoVmFsdWU7CisgICAgYXV0byByZXN1bHQgPSAo
c3RhdGljX2Nhc3Q8VUludDEyOD4oaGlnaCkgPDwgNjQpIHwgbG93OworICAgIGlmIChyZXN1bHQg
PT0gZW1wdHlWYWx1ZSB8fCByZXN1bHQgPT0gZGVsZXRlZFZhbHVlKQorICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgcmV0dXJuIFVVSUQoV1RGTW92ZSh1dWlkVmFsdWUpKTsKKyAgICByZXR1cm4g
VVVJRChyZXN1bHQpOwogfQogCiBTdHJpbmcgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VVUlELmggYi9Tb3VyY2UvV1RGL3d0Zi9VVUlELmgK
aW5kZXggZDExNjE3ZDY5ZTAxZGUwYTM3ZjAyNmYxNjk3NWYxMGZlMDg0ZTI1NC4uMjdjYTEzMjEy
ZGU2OWM4ZmRjMjY0MzFiZmE2MzdmMWFkZjA0ZjFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvVVVJRC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VVSUQuaApAQCAtMTI2LDExICsxMjYsNiBA
QCBzdGQ6Om9wdGlvbmFsPFVVSUQ+IFVVSUQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
IHJldHVybiBVVUlEIHsgKHN0YXRpY19jYXN0PFVJbnQxMjg+KCpoaWdoKSA8PCA2NCkgfCAqbG93
IH07CiB9CiAKLWlubGluZSB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgVVVJRCYgdXVp
ZCkKLXsKLSAgICBhZGQoaGFzaGVyLCB1dWlkLmhhc2goKSk7Ci19Ci0KIC8vIENyZWF0ZXMgYSBV
VUlEIHRoYXQgY29uc2lzdHMgb2YgMzIgaGV4YWRlY2ltYWwgZGlnaXRzIGFuZCByZXR1cm5zIGl0
cyBjYW5vbmljYWwgZm9ybS4KIC8vIFRoZSBjYW5vbmljYWwgZm9ybSBpcyBkaXNwbGF5ZWQgaW4g
NSBncm91cHMgc2VwYXJhdGVkIGJ5IGh5cGhlbnMsIGluIHRoZSBmb3JtIDgtNC00LTQtMTIgZm9y
IGEgdG90YWwgb2YgMzYgY2hhcmFjdGVycy4KIC8vIFRoZSBoZXhhZGVjaW1hbCB2YWx1ZXMgImEi
IHRocm91Z2ggImYiIGFyZSBvdXRwdXQgYXMgbG93ZXIgY2FzZSBjaGFyYWN0ZXJzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyLmgKaW5kZXggMTAyOTk5YzY5YTIzODY3N2ZiNmUwYjM0MzM1ODFjN2VmMjM1YTE5
Ni4uMDk0NjJhY2VhZTk3MDhiZWM0ODk3YjMzMDQ5MGE5ZTcwOTcyN2RlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllci5oCkBAIC0zNywyMiArMzcsMTYgQEAgcHVibGljOgogICAgIHN0YXRpYyBQcm9jZXNz
UXVhbGlmaWVkIGdlbmVyYXRlKCkgeyByZXR1cm4geyBVVUlEOjpjcmVhdGUoKSwgUHJvY2Vzczo6
aWRlbnRpZmllcigpIH07IH0KIAogICAgIFByb2Nlc3NRdWFsaWZpZWQoKQotICAgICAgICA6IG1f
b2JqZWN0KFdURjo6VUludDEyOCgwKSkKKyAgICAgICAgOiBtX29iamVjdChVVUlEOjplbXB0eVZh
bHVlKQogICAgIHsKICAgICB9CiAKLSAgICBQcm9jZXNzUXVhbGlmaWVkKFVVSUQmJiBvYmplY3Qs
IFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQorICAgIFByb2Nlc3NRdWFsaWZp
ZWQoVVVJRCBvYmplY3QsIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQogICAg
ICAgICA6IG1fb2JqZWN0KFdURk1vdmUob2JqZWN0KSkKICAgICAgICAgLCBtX3Byb2Nlc3NJZGVu
dGlmaWVyKHByb2Nlc3NJZGVudGlmaWVyKQogICAgIHsKICAgICB9CiAKLSAgICBQcm9jZXNzUXVh
bGlmaWVkKGNvbnN0IFVVSUQmIG9iamVjdCwgUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50
aWZpZXIpCi0gICAgICAgIDogbV9vYmplY3Qob2JqZWN0KQotICAgICAgICAsIG1fcHJvY2Vzc0lk
ZW50aWZpZXIocHJvY2Vzc0lkZW50aWZpZXIpCi0gICAgewotICAgIH0KLQogICAgIFByb2Nlc3NR
dWFsaWZpZWQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQogICAgICAgICA6IG1fb2Jq
ZWN0KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQogICAgICAgICAsIG1fcHJvY2Vzc0lkZW50
aWZpZXIoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCkBAIC0xMDMsMyArOTcsMTMgQEAgaW5s
aW5lIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFByb2Nlc3NR
dWFsaWZpZWQ8VVVJRD4mIHByb2MKIHVzaW5nIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyID0gUHJvY2Vzc1F1YWxpZmllZDxVVUlEPjsKIAogfQorCituYW1lc3BhY2UgV1RGIHsKKwor
dGVtcGxhdGU8PgoraW5saW5lIHVpbnQzMl90IGNvbXB1dGVIYXNoKGNvbnN0IFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIHJldHVy
biBpZGVudGlmaWVyLm9iamVjdCgpLmhhc2goKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDYwNzNjYWE5NWFjYWMzYTZkZWZiYTNj
MTQ2ODRlNTJkOWQxM2QyOGEuLmFkMTEyNjMzYWY1NTJiNTk2ZDA3ZDc0MTZkMDU1OWEyOTc3NjYz
NjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAyMi0wMS0xOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CisKKyAgICAgICAgTWFrZSBTZXJ2aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0ZWFk
IG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJvbSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUw
NzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3NjczNTQwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyIGFuZCBDaHJpcyBEdW1lei4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9VVUlELmNwcDoKKyAgICAgICAgSW1wcm92ZSB0ZXN0IGNvdmVyYWdlLgorCiAy
MDIyLTAxLTE2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBN
YWtlIFNlcnZpY2VXb3JrZXJDbGllbnQuaWQgYSBVVUlEIGluc3RlYWQgb2YgYSBzdHJpbmcgZGVy
aXZlZCBmcm9tIGEgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VVSUQuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvVVVJRC5jcHAKaW5kZXggMjgzYjBmNmUyMzE5NWIxMzIyODE3ZDExMWEy
MzBmNGM4OWE5ZWJiNy4uYmExNWNkNzRjNzg0YTBjYTViNWJiODE5ODAyNzA3MjJiOWIzNzEyMSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVVJRC5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVVJRC5jcHAKQEAgLTMyLDI1ICszMiw1MCBA
QCBURVNUKFdURiwgQm9vdFNlc3Npb25VVUlESWRlbnRpdHkpCiAgICAgRVhQRUNUX0VRKGJvb3RT
ZXNzaW9uVVVJRFN0cmluZygpLCBib290U2Vzc2lvblVVSURTdHJpbmcoKSk7CiB9CiAKLVRFU1Qo
V1RGLCBUZXN0VVVJRFBhcnNpbmcpCitzdGF0aWMgU3RyaW5nIHBhcnNlQW5kU3RyaW5naWZ5VVVJ
RChjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIGF1dG8gY3JlYXRlZCAgPSBVVUlEOjpjcmVh
dGUoKTsKLSAgICBhdXRvIHZhbHVlID0gVVVJRDo6cGFyc2UoY3JlYXRlZC50b1N0cmluZygpKTsK
LSAgICBFWFBFQ1RfVFJVRSghIXZhbHVlKTsKLSAgICBFWFBFQ1RfRVEoY3JlYXRlZCwgKnZhbHVl
KTsKKyAgICBhdXRvIHV1aWQgPSBVVUlEOjpwYXJzZSh2YWx1ZSk7CisgICAgaWYgKCF1dWlkKQor
ICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiB1dWlkLT50b1N0cmluZygpOworfQogCitU
RVNUKFdURiwgVGVzdFVVSURQYXJzaW5nKQorewogICAgIC8vIHh4eHh4eHh4LXh4eHgtNHh4eC15
eHh4LXh4eHh4eHh4eHh4eAotICAgIHZhbHVlID0gVVVJRDo6cGFyc2UoIjEyMzQ1Njc4LTlhYmMt
NWRlMC04OUFCLTAxMjM0NTY3ODlhYiIpOwotICAgIEVYUEVDVF9GQUxTRSghIXZhbHVlKTsKIAot
ICAgIHZhbHVlID0gVVVJRDo6cGFyc2UoIjEyMzQ1Njc4LTlhYmMtNGRlYS03OUFCLTAxMjM0NTY3
ODlhYiIpOwotICAgIEVYUEVDVF9GQUxTRSghIXZhbHVlKTsKKyAgICBFWFBFQ1RfRkFMU0UoISFV
VUlEOjpwYXJzZSgiMTIzNDU2NzgtOWFiYy01ZGUwLTg5QUItMDEyMzQ1Njc4OWFiIikpOworICAg
IEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBhcnNlKCIxMjM0NTY3OC05YWJjLTRkZWEtNzlBQi0wMTIz
NDU2Nzg5YWIiKSk7CisgICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2UoIjEyMzQ1Njc4LTlh
YmMtNGRlMC03ZmZmLTAxMjM0NTY3ODlhYiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpw
YXJzZSgiMTIzNDU2NzgtOWFiYy00ZGUwLWMwMDAwLTAxMjM0NTY3ODlhYiIpKTsKKworICAgIEVY
UEVDVF9GQUxTRSghIVVVSUQ6OnBhcnNlKCIrZWY5NDRjMS01Y2I4LTQ4YWEtQWQxMi1DNWY4MjNm
MDA1YzMiKSk7CisgICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2UoIjZlZjk0NGMxLStjYjgt
NDhhYS1BZDEyLUM1ZjgyM2YwMDVjMyIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJz
ZSgiNmVmOTQ0YzEtNWNiOC0rOGFhLUFkMTItQzVmODIzZjAwNWMzIikpOworICAgIEVYUEVDVF9G
QUxTRSghIVVVSUQ6OnBhcnNlKCI2ZWY5NDRjMS01Y2I4LTQ4YWEtK2QxMi1DNWY4MjNmMDA1YzMi
KSk7CisgICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2UoIjZlZjk0NGMxLTVjYjgtNDhhYS1B
ZDEyLSs1ZjgyM2YwMDVjMyIpKTsKKworICAgIEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBhcnNlKCIw
MDAwMDAwMC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMDAwMDAiKSk7CisgICAgRVhQRUNUX0ZBTFNF
KCEhVVVJRDo6cGFyc2UoIjAwMDAwMDAwLTAwMDAtNDAwMC04MDAwLTAwMDAwMDAwMDAwMSIpKTsK
KworICAgIGZvciAoc2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwgMTAwOyArK2NwdHIpIHsKKyAgICAg
ICAgYXV0byBjcmVhdGVkID0gVVVJRDo6Y3JlYXRlKCkudG9TdHJpbmcoKTsKKyAgICAgICAgYXV0
byByZXN1bHQgPSBwYXJzZUFuZFN0cmluZ2lmeVVVSUQoY3JlYXRlZCk7CisKKyAgICAgICAgRVhQ
RUNUX0VRKHJlc3VsdC5sZW5ndGgoKSwgMzZ1KTsKKyAgICAgICAgRVhQRUNUX0VRKHJlc3VsdFsx
NF0sICc0Jyk7CisgICAgICAgIEVYUEVDVF9UUlVFKHJlc3VsdFsxOV0gPT0gJzgnIHx8IHJlc3Vs
dFsxOV0gPT0gJzknIHx8IHJlc3VsdFsxOV0gPT0gJ2EnIHx8IHJlc3VsdFsxOV0gPT0gJ2InKTsK
KyAgICB9CisKKyAgICBTdHJpbmcgdGVzdE5vcm1hbCA9ICIxMjM0NTY3OC05YWJjLTRkZTAtODlh
Yi0wMTIzNDU2Nzg5YWIiX3M7CisgICAgRVhQRUNUX0VRKHBhcnNlQW5kU3RyaW5naWZ5VVVJRCh0
ZXN0Tm9ybWFsKSwgdGVzdE5vcm1hbCk7CisKKyAgICBTdHJpbmcgdGVzdDgwMDAgPSAiMTIzNDU2
NzgtOWFiYy00ZGUwLTgwMDAtMDEyMzQ1Njc4OWFiIl9zOworICAgIEVYUEVDVF9FUShwYXJzZUFu
ZFN0cmluZ2lmeVVVSUQodGVzdDgwMDApLCB0ZXN0ODAwMCk7CiAKLSAgICB2YWx1ZSA9IFVVSUQ6
OnBhcnNlKCIxMjM0NTY3OC05YWJjLTRkZTAtODlhYi0wMTIzNDU2Nzg5YWIiKTsKLSAgICBFWFBF
Q1RfVFJVRSghIXZhbHVlKTsKLSAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+dG9TdHJpbmcoKSA9PSAi
MTIzNDU2NzgtOWFiYy00ZGUwLTg5YWItMDEyMzQ1Njc4OWFiIik7CisgICAgU3RyaW5nIHRlc3RC
ZmZmID0gIjEyMzQ1Njc4LTlhYmMtNGRlMC1CZmZmLTAxMjM0NTY3ODlhYiJfczsKKyAgICBFWFBF
Q1RfRVEocGFyc2VBbmRTdHJpbmdpZnlVVUlEKHRlc3RCZmZmKSwgdGVzdEJmZmYuY29udmVydFRv
QVNDSUlMb3dlcmNhc2UoKSk7CiAKLSAgICB2YWx1ZSA9IFVVSUQ6OnBhcnNlKCI2ZWY5NDRjMS01
Y2I4LTQ4YWEtQWQxMi1DNWY4MjNmMDA1YzMiKTsKLSAgICBFWFBFQ1RfVFJVRSghIXZhbHVlKTsK
LSAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+dG9TdHJpbmcoKSA9PSAiNmVmOTQ0YzEtNWNiOC00OGFh
LWFkMTItYzVmODIzZjAwNWMzIik7CisgICAgU3RyaW5nIHRlc3RBZDEyID0gIjZlZjk0NGMxLTVj
YjgtNDhhYS1BZDEyLUM1ZjgyM2YwMDVjMyJfczsKKyAgICBFWFBFQ1RfRVEocGFyc2VBbmRTdHJp
bmdpZnlVVUlEKHRlc3RBZDEyKSwgdGVzdEFkMTIuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7
CiB9Cg==
</data>
<flag name="commit-queue"
          id="475429"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449376</attachid>
            <date>2022-01-18 03:55:50 -0800</date>
            <delta_ts>2022-01-18 04:32:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235070-20220118125549.patch</filename>
            <type>text/plain</type>
            <size>12583</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAwNThjMmQzNGY2ZGMwMzNiYjdiOGQx
N2UyNTgwOGQzMGMxNjhiM2YuLjE2OGE1YjlmZjAzNmU3MmUwZmViYzk3YTVmYWYxODUxNjYwOWQ0
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjItMDEtMTggIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5pZCBhIFVV
SUQgaW5zdGVhZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM1MDcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzY3MzU0MD4KKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlciBhbmQgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiB3
dGYvVVVJRC5jcHA6CisgICAgICAgICogd3RmL1VVSUQuaDoKKyAgICAgICAgVXNlIHVpbnQ2NF90
IGxvZ2ljIHRvIGdlbmVyYXRlIFVVSURzIGFuZCByZW1vdmUgc29tZSByZWludGVycHJldF9jYXN0
LgorICAgICAgICBSZW1vdmUgdGhlIEhhc2hlciBhZGQgc2luY2Ugd2UgZGlyZWN0bHkgdXNlIFVV
SUQgaGFzaCBpbiBXZWJDb3JlLgorICAgICAgICBTaW1wbGlmeSBwYXJzaW5nIGxvZ2ljIGJ5IHVz
aW5nIG1vcmUgcGFyc2VJbnRlZ2VycyBhbmQgYml0IGxvZ2ljLgorICAgICAgICBBbHNvIG1ha2Ug
c3VyZSB3ZSBhcmUgbm90IGFibGUgdG8gY3JlYXRlIGVtcHR5L2RlbGV0ZWQgVVVJRCB2YWx1ZSBm
cm9tIHN0cmluZ3MuCisKIDIwMjItMDEtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5pZCBhIFVVSUQgaW5zdGVh
ZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
ZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGRhYmM0YzQ2ZjM3NzJiZTk3NzNlYzcwMzE1ZTA0ODU0N2Q1YmFm
MGQuLmIwNTg4NTM0Zjc1NmUwYTFmMjUyNWFmOTlhZmY5MjJhZTM1ZWEwYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMS0xOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKKyAgICAgICAgTWFrZSBTZXJ2aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0
ZWFkIG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJvbSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzUwNzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3NjczNTQwPgorCisgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyIGFuZCBDaHJpcyBEdW1lei4KKworICAgICAgICBDb3ZlcmVkIGJ5
IGV4aXN0aW5nIGFuZCBiZWVmZWQtdXAgQVBJIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaDoKKyAgICAgICAgUmVtb3ZlIHVubmVl
ZGVkIGNvbnN0ICYgYW5kICYmIGNvbnN0cnVjdG9ycyBhbmQgdXNlIGJ5IHZhbHVlIGNvbnN0cnVj
dG9yIGluc3RlYWQuCisgICAgICAgIEFkZCBjb21wdXRlSGFzaCBkaXJlY3Qgc3BlY2lhbGl6YXRp
b24gdG8gcmVtb3ZlIFVVSUQgSGFzaGVyIHNwZWNpYWxpemF0aW9uLgorCiAyMDIyLTAxLTE4ICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBIHNhbmRib3hlZCBk
b2N1bWVudCBzaG91bGQgbm90IHJldXNlIGl0cyBzZXJ2aWNlIHdvcmtlciBjbGllbnQgSUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwIGIvU291cmNlL1dURi93dGYvVVVJRC5j
cHAKaW5kZXggZWI1ZGQzODkzMWQwNjdiMDdkNzkzODBlODMwM2I3YmY2ZDM2ZDEwMC4uZmU5Mzg1
MDZjNWI2NjEzNDg5NDk3MGMzNTgxZTExMTJiMWRkY2YzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvVVVJRC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVVJRC5jcHAKQEAgLTUyLDkgKzUy
LDExIEBAIFVVSUQ6OlVVSUQoKQogICAgICAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVl
cyhkYXRhLCAxNik7CiAgICAgfSB3aGlsZSAobV9kYXRhID09IGVtcHR5VmFsdWUgfHwgbV9kYXRh
ID09IGRlbGV0ZWRWYWx1ZSk7CiAKLSAgICAvLyBXZSBzYW5pdGl6ZSB0aGUgdmFsdWUgc28gYXMg
bm90IGxvb3NpbmcgYW55IGRhdGEgd2hlbiBnb2luZyB0byBWZXJzaW9uIDQgVVVJRHMuCi0gICAg
ZGF0YVs1XSAmPSAweDBmOwotICAgIGRhdGFbMTFdICY9IDB4Y2Y7CisgICAgLy8gV2Ugc2FuaXRp
emUgdGhlIHZhbHVlIHRvIG5vdCBsb29zZSBhbnkgaW5mb3JtYXRpb24gd2hlbiBzZXJpYWxpemlu
ZyBhcyBWZXJzaW9uIDQgVVVJRC4KKyAgICB1aW50NjRfdCBoaWdoID0gKG1fZGF0YSA+PiA2NCkg
JiAweGZmZmZmZmZmZmZmZjBmZmY7CisgICAgdWludDY0X3QgbG93ID0gbV9kYXRhICYgMHgzZmZm
ZmZmZmZmZmZmZmZmOworCisgICAgbV9kYXRhID0gKHN0YXRpY19jYXN0PFVJbnQxMjg+KGhpZ2gp
IDw8IDY0KSB8IGxvdzsKIH0KIAogdW5zaWduZWQgVVVJRDo6aGFzaCgpIGNvbnN0CkBAIC02NCwy
MSArNjYsMjAgQEAgdW5zaWduZWQgVVVJRDo6aGFzaCgpIGNvbnN0CiAKIFN0cmluZyBVVUlEOjp0
b1N0cmluZygpIGNvbnN0CiB7Ci0gICAgYXV0byogcmFuZG9tRGF0YSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdW5zaWduZWQqPigmbV9kYXRhKTsKKyAgICB1aW50NjRfdCBoaWdoID0gbV9kYXRh
ID4+IDY0OworICAgIHVpbnQ2NF90IGxvdyA9IG1fZGF0YSAmIDB4M2ZmZmZmZmZmZmZmZmZmZjsK
IAogICAgIC8vIEZvcm1hdCBhcyBWZXJzaW9uIDQgVVVJRC4KICAgICByZXR1cm4gbWFrZVN0cmlu
ZygKLSAgICAgICAgaGV4KHJhbmRvbURhdGFbMF0sIDgsIExvd2VyY2FzZSksCisgICAgICAgIGhl
eChoaWdoID4+IDMyLCA4LCBMb3dlcmNhc2UpLAogICAgICAgICAnLScsCi0gICAgICAgIGhleChy
YW5kb21EYXRhWzFdID4+IDE2LCA0LCBMb3dlcmNhc2UpLAorICAgICAgICBoZXgoKGhpZ2ggPj4g
MTYpICYgMHhmZmZmLCA0LCBMb3dlcmNhc2UpLAogICAgICAgICAiLTQiLAotICAgICAgICBoZXgo
cmFuZG9tRGF0YVsxXSAmIDB4MDAwMDBmZmYsIDMsIExvd2VyY2FzZSksCisgICAgICAgIGhleCho
aWdoICYgMHhmZmYsIDMsIExvd2VyY2FzZSksCiAgICAgICAgICctJywKLSAgICAgICAgaGV4KChy
YW5kb21EYXRhWzJdID4+IDMwKSB8IDB4OCwgMSwgTG93ZXJjYXNlKSwKLSAgICAgICAgaGV4KChy
YW5kb21EYXRhWzJdID4+IDE2KSAmIDB4MDAwMDBmZmYsIDMsIExvd2VyY2FzZSksCisgICAgICAg
IGhleCgobG93ID4+IDQ4KSB8IDB4ODAwMCwgNCwgTG93ZXJjYXNlKSwKICAgICAgICAgJy0nLAot
ICAgICAgICBoZXgocmFuZG9tRGF0YVsyXSAmIDB4MDAwMGZmZmYsIDQsIExvd2VyY2FzZSksCi0g
ICAgICAgIGhleChyYW5kb21EYXRhWzNdLCA4LCBMb3dlcmNhc2UpCisgICAgICAgIGhleChsb3cg
JiAweGZmZmZmZmZmZmZmZiwgMTIsIExvd2VyY2FzZSkKICAgICApOwogfQogCkBAIC05MSw0OSAr
OTIsNDMgQEAgc3RkOjpvcHRpb25hbDxVVUlEPiBVVUlEOjpwYXJzZShTdHJpbmdWaWV3IHZhbHVl
KQogICAgIGlmICh2YWx1ZVs4XSAhPSAnLScgfHwgdmFsdWVbMTNdICE9ICctJyAgfHwgdmFsdWVb
MTRdICE9ICc0JyB8fCB2YWx1ZVsxOF0gIT0gJy0nIHx8IHZhbHVlWzIzXSAhPSAnLScpCiAgICAg
ICAgIHJldHVybiB7IH07CiAKLSAgICB1bnNpZ25lZCB5ID0gdmFsdWVbMTldOwotICAgIGlmICh5
ID09ICc4JyB8fCB5ID09ICc5JykKLSAgICAgICAgeSA9IHkgLSAnOCc7Ci0gICAgZWxzZSBpZiAo
eSA9PSAnYScgfHwgeSA9PSAnQScpCi0gICAgICAgIHkgPSAyOwotICAgIGVsc2UgaWYgKHkgPT0g
J2InIHx8IHkgPT0gJ0InKQotICAgICAgICB5ID0gMzsKLSAgICBlbHNlCisgICAgLy8gcGFyc2VJ
bnRlZ2VyIG1heSBhY2NlcHQgaW50ZWdlcnMgc3RhcnRpbmcgd2l0aCArLCBsZXQncyBjaGVjayB0
aGlzIGJlZm9yZWhhbmQuCisgICAgaWYgKHZhbHVlWzBdID09ICcrJyB8fCB2YWx1ZVs5XSA9PSAn
KycgIHx8IHZhbHVlWzE5XSA9PSAnKycgfHwgdmFsdWVbMjRdID09ICcrJykKICAgICAgICAgcmV0
dXJuIHsgfTsKIAotICAgIGF1dG8gZmlyc3RWYWx1ZSA9IHBhcnNlSW50ZWdlcjx1bnNpZ25lZD4o
dmFsdWUuc3Vic3RyaW5nKDAsIDgpLCAxNik7CisgICAgYXV0byBmaXJzdFZhbHVlID0gcGFyc2VJ
bnRlZ2VyPHVpbnQ2NF90Pih2YWx1ZS5zdWJzdHJpbmcoMCwgOCksIDE2KTsKICAgICBpZiAoIWZp
cnN0VmFsdWUpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIHNlY29uZFZhbHVlID0g
cGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1ZS5zdWJzdHJpbmcoOSwgNCksIDE2KTsKKyAgICBh
dXRvIHNlY29uZFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90Pih2YWx1ZS5zdWJzdHJpbmco
OSwgNCksIDE2KTsKICAgICBpZiAoIXNlY29uZFZhbHVlKQogICAgICAgICByZXR1cm4geyB9Owog
Ci0gICAgYXV0byB0aGlyZFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1ZS5zdWJz
dHJpbmcoMTUsIDMpLCAxNik7CisgICAgYXV0byB0aGlyZFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVp
bnQ2NF90Pih2YWx1ZS5zdWJzdHJpbmcoMTUsIDMpLCAxNik7CiAgICAgaWYgKCF0aGlyZFZhbHVl
KQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byBmb3VydGhWYWx1ZSA9IHBhcnNlSW50
ZWdlcjx1bnNpZ25lZD4odmFsdWUuc3Vic3RyaW5nKDIwLCAzKSwgMTYpOworICAgIGF1dG8gZm91
cnRoVmFsdWUgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHZhbHVlLnN1YnN0cmluZygxOSwgNCks
IDE2KTsKICAgICBpZiAoIWZvdXJ0aFZhbHVlKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAg
YXV0byBmaWZ0aFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1ZS5zdWJzdHJpbmco
MjQsIDQpLCAxNik7Ci0gICAgaWYgKCFmaWZ0aFZhbHVlKQorICAgIC8vIEZvdXJ0aCB2YWx1ZSBz
dGFydHMgd2l0aCAneScsIGl0IG11c3QgYmUgYWJvdmUgMHg4MDAwIGFuZCBiZWxvdyAweEJGRkZG
LgorICAgIGlmICgoKmZvdXJ0aFZhbHVlICYgMHhjMDAwKSAhPSAweDgwMDApCiAgICAgICAgIHJl
dHVybiB7IH07CisgICAgZm91cnRoVmFsdWUgPSAqZm91cnRoVmFsdWUgJiAweDNmZmY7CiAKLSAg
ICBhdXRvIHNpeHRoVmFsdWUgPSBwYXJzZUludGVnZXI8dW5zaWduZWQ+KHZhbHVlLnN1YnN0cmlu
ZygyOCwgOCksIDE2KTsKLSAgICBpZiAoIXNpeHRoVmFsdWUpCisgICAgYXV0byBmaWZ0aFZhbHVl
ID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90Pih2YWx1ZS5zdWJzdHJpbmcoMjQsIDEyKSwgMTYpOwor
ICAgIGlmICghZmlmdGhWYWx1ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFVJbnQxMjgg
dXVpZFZhbHVlOworICAgIHVpbnQ2NF90IGhpZ2ggPSAoKmZpcnN0VmFsdWUgPDwgMzIpIHwgKCpz
ZWNvbmRWYWx1ZSA8PCAxNikgfCAqdGhpcmRWYWx1ZTsKKyAgICB1aW50NjRfdCBsb3cgPSAoKmZv
dXJ0aFZhbHVlIDw8IDQ4KSB8ICpmaWZ0aFZhbHVlOwogCi0gICAgYXV0byogZGF0YSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dW5zaWduZWQqPigmdXVpZFZhbHVlKTsKLSAgICBkYXRhWzBdID0gKmZpcnN0
VmFsdWU7Ci0gICAgZGF0YVsxXSA9ICgqc2Vjb25kVmFsdWUgPDwgMTYpIHwgKnRoaXJkVmFsdWU7
Ci0gICAgZGF0YVsyXSA9ICgoKmZvdXJ0aFZhbHVlIDw8IDE2KSB8ICpmaWZ0aFZhbHVlKSArICh5
IDw8IDMwKTsKLSAgICBkYXRhWzNdID0gKnNpeHRoVmFsdWU7CisgICAgYXV0byByZXN1bHQgPSAo
c3RhdGljX2Nhc3Q8VUludDEyOD4oaGlnaCkgPDwgNjQpIHwgbG93OworICAgIGlmIChyZXN1bHQg
PT0gZW1wdHlWYWx1ZSB8fCByZXN1bHQgPT0gZGVsZXRlZFZhbHVlKQorICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgcmV0dXJuIFVVSUQoV1RGTW92ZSh1dWlkVmFsdWUpKTsKKyAgICByZXR1cm4g
VVVJRChyZXN1bHQpOwogfQogCiBTdHJpbmcgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VVUlELmggYi9Tb3VyY2UvV1RGL3d0Zi9VVUlELmgK
aW5kZXggZDExNjE3ZDY5ZTAxZGUwYTM3ZjAyNmYxNjk3NWYxMGZlMDg0ZTI1NC4uMjdjYTEzMjEy
ZGU2OWM4ZmRjMjY0MzFiZmE2MzdmMWFkZjA0ZjFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvVVVJRC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VVSUQuaApAQCAtMTI2LDExICsxMjYsNiBA
QCBzdGQ6Om9wdGlvbmFsPFVVSUQ+IFVVSUQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
IHJldHVybiBVVUlEIHsgKHN0YXRpY19jYXN0PFVJbnQxMjg+KCpoaWdoKSA8PCA2NCkgfCAqbG93
IH07CiB9CiAKLWlubGluZSB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgVVVJRCYgdXVp
ZCkKLXsKLSAgICBhZGQoaGFzaGVyLCB1dWlkLmhhc2goKSk7Ci19Ci0KIC8vIENyZWF0ZXMgYSBV
VUlEIHRoYXQgY29uc2lzdHMgb2YgMzIgaGV4YWRlY2ltYWwgZGlnaXRzIGFuZCByZXR1cm5zIGl0
cyBjYW5vbmljYWwgZm9ybS4KIC8vIFRoZSBjYW5vbmljYWwgZm9ybSBpcyBkaXNwbGF5ZWQgaW4g
NSBncm91cHMgc2VwYXJhdGVkIGJ5IGh5cGhlbnMsIGluIHRoZSBmb3JtIDgtNC00LTQtMTIgZm9y
IGEgdG90YWwgb2YgMzYgY2hhcmFjdGVycy4KIC8vIFRoZSBoZXhhZGVjaW1hbCB2YWx1ZXMgImEi
IHRocm91Z2ggImYiIGFyZSBvdXRwdXQgYXMgbG93ZXIgY2FzZSBjaGFyYWN0ZXJzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyLmgKaW5kZXggMTAyOTk5YzY5YTIzODY3N2ZiNmUwYjM0MzM1ODFjN2VmMjM1YTE5
Ni4uMDk0NjJhY2VhZTk3MDhiZWM0ODk3YjMzMDQ5MGE5ZTcwOTcyN2RlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllci5oCkBAIC0zNywyMiArMzcsMTYgQEAgcHVibGljOgogICAgIHN0YXRpYyBQcm9jZXNz
UXVhbGlmaWVkIGdlbmVyYXRlKCkgeyByZXR1cm4geyBVVUlEOjpjcmVhdGUoKSwgUHJvY2Vzczo6
aWRlbnRpZmllcigpIH07IH0KIAogICAgIFByb2Nlc3NRdWFsaWZpZWQoKQotICAgICAgICA6IG1f
b2JqZWN0KFdURjo6VUludDEyOCgwKSkKKyAgICAgICAgOiBtX29iamVjdChVVUlEOjplbXB0eVZh
bHVlKQogICAgIHsKICAgICB9CiAKLSAgICBQcm9jZXNzUXVhbGlmaWVkKFVVSUQmJiBvYmplY3Qs
IFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQorICAgIFByb2Nlc3NRdWFsaWZp
ZWQoVVVJRCBvYmplY3QsIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQogICAg
ICAgICA6IG1fb2JqZWN0KFdURk1vdmUob2JqZWN0KSkKICAgICAgICAgLCBtX3Byb2Nlc3NJZGVu
dGlmaWVyKHByb2Nlc3NJZGVudGlmaWVyKQogICAgIHsKICAgICB9CiAKLSAgICBQcm9jZXNzUXVh
bGlmaWVkKGNvbnN0IFVVSUQmIG9iamVjdCwgUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50
aWZpZXIpCi0gICAgICAgIDogbV9vYmplY3Qob2JqZWN0KQotICAgICAgICAsIG1fcHJvY2Vzc0lk
ZW50aWZpZXIocHJvY2Vzc0lkZW50aWZpZXIpCi0gICAgewotICAgIH0KLQogICAgIFByb2Nlc3NR
dWFsaWZpZWQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQogICAgICAgICA6IG1fb2Jq
ZWN0KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQogICAgICAgICAsIG1fcHJvY2Vzc0lkZW50
aWZpZXIoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCkBAIC0xMDMsMyArOTcsMTMgQEAgaW5s
aW5lIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFByb2Nlc3NR
dWFsaWZpZWQ8VVVJRD4mIHByb2MKIHVzaW5nIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyID0gUHJvY2Vzc1F1YWxpZmllZDxVVUlEPjsKIAogfQorCituYW1lc3BhY2UgV1RGIHsKKwor
dGVtcGxhdGU8PgoraW5saW5lIHVpbnQzMl90IGNvbXB1dGVIYXNoKGNvbnN0IFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIHJldHVy
biBpZGVudGlmaWVyLm9iamVjdCgpLmhhc2goKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDYwNzNjYWE5NWFjYWMzYTZkZWZiYTNj
MTQ2ODRlNTJkOWQxM2QyOGEuLmFkMTEyNjMzYWY1NTJiNTk2ZDA3ZDc0MTZkMDU1OWEyOTc3NjYz
NjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAyMi0wMS0xOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CisKKyAgICAgICAgTWFrZSBTZXJ2aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0ZWFk
IG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJvbSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUw
NzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3NjczNTQwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyIGFuZCBDaHJpcyBEdW1lei4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9VVUlELmNwcDoKKyAgICAgICAgSW1wcm92ZSB0ZXN0IGNvdmVyYWdlLgorCiAy
MDIyLTAxLTE2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBN
YWtlIFNlcnZpY2VXb3JrZXJDbGllbnQuaWQgYSBVVUlEIGluc3RlYWQgb2YgYSBzdHJpbmcgZGVy
aXZlZCBmcm9tIGEgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VVSUQuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvVVVJRC5jcHAKaW5kZXggMjgzYjBmNmUyMzE5NWIxMzIyODE3ZDExMWEy
MzBmNGM4OWE5ZWJiNy4uNjM3YzU0NjkwZGY2YjllNDc2MWNiMWRhZDI4NTZmODMxODAxYmZjOSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVVJRC5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVVJRC5jcHAKQEAgLTMyLDI1ICszMiw1MyBA
QCBURVNUKFdURiwgQm9vdFNlc3Npb25VVUlESWRlbnRpdHkpCiAgICAgRVhQRUNUX0VRKGJvb3RT
ZXNzaW9uVVVJRFN0cmluZygpLCBib290U2Vzc2lvblVVSURTdHJpbmcoKSk7CiB9CiAKLVRFU1Qo
V1RGLCBUZXN0VVVJRFBhcnNpbmcpCitzdGF0aWMgU3RyaW5nIHBhcnNlQW5kU3RyaW5naWZ5VVVJ
RChjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIGF1dG8gY3JlYXRlZCAgPSBVVUlEOjpjcmVh
dGUoKTsKLSAgICBhdXRvIHZhbHVlID0gVVVJRDo6cGFyc2UoY3JlYXRlZC50b1N0cmluZygpKTsK
LSAgICBFWFBFQ1RfVFJVRSghIXZhbHVlKTsKLSAgICBFWFBFQ1RfRVEoY3JlYXRlZCwgKnZhbHVl
KTsKKyAgICBhdXRvIHV1aWQgPSBVVUlEOjpwYXJzZSh2YWx1ZSk7CisgICAgaWYgKCF1dWlkKQor
ICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiB1dWlkLT50b1N0cmluZygpOworfQogCitU
RVNUKFdURiwgVGVzdFVVSURQYXJzaW5nKQorewogICAgIC8vIHh4eHh4eHh4LXh4eHgtNHh4eC15
eHh4LXh4eHh4eHh4eHh4eAotICAgIHZhbHVlID0gVVVJRDo6cGFyc2UoIjEyMzQ1Njc4LTlhYmMt
NWRlMC04OUFCLTAxMjM0NTY3ODlhYiIpOwotICAgIEVYUEVDVF9GQUxTRSghIXZhbHVlKTsKIAot
ICAgIHZhbHVlID0gVVVJRDo6cGFyc2UoIjEyMzQ1Njc4LTlhYmMtNGRlYS03OUFCLTAxMjM0NTY3
ODlhYiIpOwotICAgIEVYUEVDVF9GQUxTRSghIXZhbHVlKTsKKyAgICBFWFBFQ1RfRkFMU0UoISFV
VUlEOjpwYXJzZSgiMTIzNDU2NzgtOWFiYy01ZGUwLTg5QUItMDEyMzQ1Njc4OWFiIikpOworICAg
IEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBhcnNlKCIxMjM0NTY3OC05YWJjLTRkZWEtNzlBQi0wMTIz
NDU2Nzg5YWIiKSk7CisgICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2UoIjEyMzQ1Njc4LTlh
YmMtNGRlMC03ZmZmLTAxMjM0NTY3ODlhYiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpw
YXJzZSgiMTIzNDU2NzgtOWFiYy00ZGUwLWMwMDAwLTAxMjM0NTY3ODlhYiIpKTsKKworICAgIEVY
UEVDVF9GQUxTRSghIVVVSUQ6OnBhcnNlKCIrZWY5NDRjMS01Y2I4LTQ4YWEtQWQxMi1DNWY4MjNm
MDA1YzMiKSk7CisgICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2UoIjZlZjk0NGMxLStjYjgt
NDhhYS1BZDEyLUM1ZjgyM2YwMDVjMyIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJz
ZSgiNmVmOTQ0YzEtNWNiOC0rOGFhLUFkMTItQzVmODIzZjAwNWMzIikpOworICAgIEVYUEVDVF9G
QUxTRSghIVVVSUQ6OnBhcnNlKCI2ZWY5NDRjMS01Y2I4LTQ4YWEtK2QxMi1DNWY4MjNmMDA1YzMi
KSk7CisgICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2UoIjZlZjk0NGMxLTVjYjgtNDhhYS1B
ZDEyLSs1ZjgyM2YwMDVjMyIpKTsKKworICAgIEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBhcnNlKCIw
MDAwMDAwMC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMDAwMDAiKSk7CisgICAgRVhQRUNUX0ZBTFNF
KCEhVVVJRDo6cGFyc2UoIjAwMDAwMDAwLTAwMDAtNDAwMC04MDAwLTAwMDAwMDAwMDAwMSIpKTsK
KworICAgIGZvciAoc2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwgMTAwOyArK2NwdHIpIHsKKyAgICAg
ICAgYXV0byBjcmVhdGVkVVVJRCA9IFVVSUQ6OmNyZWF0ZSgpOworICAgICAgICBhdXRvIGNyZWF0
ZWRTdHJpbmcgPSBjcmVhdGVkVVVJRC50b1N0cmluZygpOworICAgICAgICBFWFBFQ1RfRVEoY3Jl
YXRlZFN0cmluZy5sZW5ndGgoKSwgMzZ1KTsKKyAgICAgICAgRVhQRUNUX0VRKGNyZWF0ZWRTdHJp
bmdbMTRdLCAnNCcpOworICAgICAgICBFWFBFQ1RfVFJVRShjcmVhdGVkU3RyaW5nWzE5XSA9PSAn
OCcgfHwgY3JlYXRlZFN0cmluZ1sxOV0gPT0gJzknIHx8IGNyZWF0ZWRTdHJpbmdbMTldID09ICdh
JyB8fCBjcmVhdGVkU3RyaW5nWzE5XSA9PSAnYicpOworCisgICAgICAgIGF1dG8gdXVpZCA9IFVV
SUQ6OnBhcnNlKGNyZWF0ZWRTdHJpbmcpOworICAgICAgICBFWFBFQ1RfVFJVRSghIXV1aWQpOwor
ICAgICAgICBFWFBFQ1RfRVEoKnV1aWQsIGNyZWF0ZWRVVUlEKTsKKyAgICB9CisKKyAgICBTdHJp
bmcgdGVzdE5vcm1hbCA9ICIxMjM0NTY3OC05YWJjLTRkZTAtODlhYi0wMTIzNDU2Nzg5YWIiX3M7
CisgICAgRVhQRUNUX0VRKHBhcnNlQW5kU3RyaW5naWZ5VVVJRCh0ZXN0Tm9ybWFsKSwgdGVzdE5v
cm1hbCk7CisKKyAgICBTdHJpbmcgdGVzdDgwMDAgPSAiMTIzNDU2NzgtOWFiYy00ZGUwLTgwMDAt
MDEyMzQ1Njc4OWFiIl9zOworICAgIEVYUEVDVF9FUShwYXJzZUFuZFN0cmluZ2lmeVVVSUQodGVz
dDgwMDApLCB0ZXN0ODAwMCk7CiAKLSAgICB2YWx1ZSA9IFVVSUQ6OnBhcnNlKCIxMjM0NTY3OC05
YWJjLTRkZTAtODlhYi0wMTIzNDU2Nzg5YWIiKTsKLSAgICBFWFBFQ1RfVFJVRSghIXZhbHVlKTsK
LSAgICBFWFBFQ1RfVFJVRSh2YWx1ZS0+dG9TdHJpbmcoKSA9PSAiMTIzNDU2NzgtOWFiYy00ZGUw
LTg5YWItMDEyMzQ1Njc4OWFiIik7CisgICAgU3RyaW5nIHRlc3RCZmZmID0gIjEyMzQ1Njc4LTlh
YmMtNGRlMC1CZmZmLTAxMjM0NTY3ODlhYiJfczsKKyAgICBFWFBFQ1RfRVEocGFyc2VBbmRTdHJp
bmdpZnlVVUlEKHRlc3RCZmZmKSwgdGVzdEJmZmYuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7
CiAKLSAgICB2YWx1ZSA9IFVVSUQ6OnBhcnNlKCI2ZWY5NDRjMS01Y2I4LTQ4YWEtQWQxMi1DNWY4
MjNmMDA1YzMiKTsKLSAgICBFWFBFQ1RfVFJVRSghIXZhbHVlKTsKLSAgICBFWFBFQ1RfVFJVRSh2
YWx1ZS0+dG9TdHJpbmcoKSA9PSAiNmVmOTQ0YzEtNWNiOC00OGFhLWFkMTItYzVmODIzZjAwNWMz
Iik7CisgICAgU3RyaW5nIHRlc3RBZDEyID0gIjZlZjk0NGMxLTVjYjgtNDhhYS1BZDEyLUM1Zjgy
M2YwMDVjMyJfczsKKyAgICBFWFBFQ1RfRVEocGFyc2VBbmRTdHJpbmdpZnlVVUlEKHRlc3RBZDEy
KSwgdGVzdEFkMTIuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CiB9Cg==
</data>
<flag name="commit-queue"
          id="475433"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449379</attachid>
            <date>2022-01-18 04:30:47 -0800</date>
            <delta_ts>2022-01-18 08:17:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235070-20220118133045.patch</filename>
            <type>text/plain</type>
            <size>12659</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAwNThjMmQzNGY2ZGMwMzNiYjdiOGQx
N2UyNTgwOGQzMGMxNjhiM2YuLjE2OGE1YjlmZjAzNmU3MmUwZmViYzk3YTVmYWYxODUxNjYwOWQ0
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjItMDEtMTggIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5pZCBhIFVV
SUQgaW5zdGVhZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM1MDcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzY3MzU0MD4KKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlciBhbmQgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiB3
dGYvVVVJRC5jcHA6CisgICAgICAgICogd3RmL1VVSUQuaDoKKyAgICAgICAgVXNlIHVpbnQ2NF90
IGxvZ2ljIHRvIGdlbmVyYXRlIFVVSURzIGFuZCByZW1vdmUgc29tZSByZWludGVycHJldF9jYXN0
LgorICAgICAgICBSZW1vdmUgdGhlIEhhc2hlciBhZGQgc2luY2Ugd2UgZGlyZWN0bHkgdXNlIFVV
SUQgaGFzaCBpbiBXZWJDb3JlLgorICAgICAgICBTaW1wbGlmeSBwYXJzaW5nIGxvZ2ljIGJ5IHVz
aW5nIG1vcmUgcGFyc2VJbnRlZ2VycyBhbmQgYml0IGxvZ2ljLgorICAgICAgICBBbHNvIG1ha2Ug
c3VyZSB3ZSBhcmUgbm90IGFibGUgdG8gY3JlYXRlIGVtcHR5L2RlbGV0ZWQgVVVJRCB2YWx1ZSBm
cm9tIHN0cmluZ3MuCisKIDIwMjItMDEtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5pZCBhIFVVSUQgaW5zdGVh
ZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
ZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGRhYmM0YzQ2ZjM3NzJiZTk3NzNlYzcwMzE1ZTA0ODU0N2Q1YmFm
MGQuLmIwNTg4NTM0Zjc1NmUwYTFmMjUyNWFmOTlhZmY5MjJhZTM1ZWEwYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMS0xOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKKyAgICAgICAgTWFrZSBTZXJ2aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0
ZWFkIG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJvbSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzUwNzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3NjczNTQwPgorCisgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyIGFuZCBDaHJpcyBEdW1lei4KKworICAgICAgICBDb3ZlcmVkIGJ5
IGV4aXN0aW5nIGFuZCBiZWVmZWQtdXAgQVBJIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaDoKKyAgICAgICAgUmVtb3ZlIHVubmVl
ZGVkIGNvbnN0ICYgYW5kICYmIGNvbnN0cnVjdG9ycyBhbmQgdXNlIGJ5IHZhbHVlIGNvbnN0cnVj
dG9yIGluc3RlYWQuCisgICAgICAgIEFkZCBjb21wdXRlSGFzaCBkaXJlY3Qgc3BlY2lhbGl6YXRp
b24gdG8gcmVtb3ZlIFVVSUQgSGFzaGVyIHNwZWNpYWxpemF0aW9uLgorCiAyMDIyLTAxLTE4ICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBIHNhbmRib3hlZCBk
b2N1bWVudCBzaG91bGQgbm90IHJldXNlIGl0cyBzZXJ2aWNlIHdvcmtlciBjbGllbnQgSUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwIGIvU291cmNlL1dURi93dGYvVVVJRC5j
cHAKaW5kZXggZWI1ZGQzODkzMWQwNjdiMDdkNzkzODBlODMwM2I3YmY2ZDM2ZDEwMC4uODVhNWUz
OGRmMTE3YzQ0Njk2NDFhYWU0MjBlNzhhZDljMWYwMjRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvVVVJRC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVVJRC5jcHAKQEAgLTUyLDkgKzUy
LDExIEBAIFVVSUQ6OlVVSUQoKQogICAgICAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVl
cyhkYXRhLCAxNik7CiAgICAgfSB3aGlsZSAobV9kYXRhID09IGVtcHR5VmFsdWUgfHwgbV9kYXRh
ID09IGRlbGV0ZWRWYWx1ZSk7CiAKLSAgICAvLyBXZSBzYW5pdGl6ZSB0aGUgdmFsdWUgc28gYXMg
bm90IGxvb3NpbmcgYW55IGRhdGEgd2hlbiBnb2luZyB0byBWZXJzaW9uIDQgVVVJRHMuCi0gICAg
ZGF0YVs1XSAmPSAweDBmOwotICAgIGRhdGFbMTFdICY9IDB4Y2Y7CisgICAgLy8gV2Ugc2FuaXRp
emUgdGhlIHZhbHVlIHRvIG5vdCBsb29zZSBhbnkgaW5mb3JtYXRpb24gd2hlbiBzZXJpYWxpemlu
ZyBhcyBWZXJzaW9uIDQgVVVJRC4KKyAgICBhdXRvIGhpZ2ggPSBzdGF0aWNfY2FzdDx1aW50NjRf
dD4oKG1fZGF0YSA+PiA2NCkgJiAweGZmZmZmZmZmZmZmZjBmZmYpOworICAgIGF1dG8gbG93ID0g
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fZGF0YSAmIDB4M2ZmZmZmZmZmZmZmZmZmZik7CisKKyAg
ICBtX2RhdGEgPSAoc3RhdGljX2Nhc3Q8VUludDEyOD4oaGlnaCkgPDwgNjQpIHwgbG93OwogfQog
CiB1bnNpZ25lZCBVVUlEOjpoYXNoKCkgY29uc3QKQEAgLTY0LDIxICs2NiwyMCBAQCB1bnNpZ25l
ZCBVVUlEOjpoYXNoKCkgY29uc3QKIAogU3RyaW5nIFVVSUQ6OnRvU3RyaW5nKCkgY29uc3QKIHsK
LSAgICBhdXRvKiByYW5kb21EYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCo+
KCZtX2RhdGEpOworICAgIGF1dG8gaGlnaCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX2RhdGEg
Pj4gNjQpOworICAgIGF1dG8gbG93ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fZGF0YSAmIDB4
M2ZmZmZmZmZmZmZmZmZmZik7CiAKICAgICAvLyBGb3JtYXQgYXMgVmVyc2lvbiA0IFVVSUQuCiAg
ICAgcmV0dXJuIG1ha2VTdHJpbmcoCi0gICAgICAgIGhleChyYW5kb21EYXRhWzBdLCA4LCBMb3dl
cmNhc2UpLAorICAgICAgICBoZXgoaGlnaCA+PiAzMiwgOCwgTG93ZXJjYXNlKSwKICAgICAgICAg
Jy0nLAotICAgICAgICBoZXgocmFuZG9tRGF0YVsxXSA+PiAxNiwgNCwgTG93ZXJjYXNlKSwKKyAg
ICAgICAgaGV4KChoaWdoID4+IDE2KSAmIDB4ZmZmZiwgNCwgTG93ZXJjYXNlKSwKICAgICAgICAg
Ii00IiwKLSAgICAgICAgaGV4KHJhbmRvbURhdGFbMV0gJiAweDAwMDAwZmZmLCAzLCBMb3dlcmNh
c2UpLAorICAgICAgICBoZXgoaGlnaCAmIDB4ZmZmLCAzLCBMb3dlcmNhc2UpLAogICAgICAgICAn
LScsCi0gICAgICAgIGhleCgocmFuZG9tRGF0YVsyXSA+PiAzMCkgfCAweDgsIDEsIExvd2VyY2Fz
ZSksCi0gICAgICAgIGhleCgocmFuZG9tRGF0YVsyXSA+PiAxNikgJiAweDAwMDAwZmZmLCAzLCBM
b3dlcmNhc2UpLAorICAgICAgICBoZXgoKGxvdyA+PiA0OCkgfCAweDgwMDAsIDQsIExvd2VyY2Fz
ZSksCiAgICAgICAgICctJywKLSAgICAgICAgaGV4KHJhbmRvbURhdGFbMl0gJiAweDAwMDBmZmZm
LCA0LCBMb3dlcmNhc2UpLAotICAgICAgICBoZXgocmFuZG9tRGF0YVszXSwgOCwgTG93ZXJjYXNl
KQorICAgICAgICBoZXgobG93ICYgMHhmZmZmZmZmZmZmZmYsIDEyLCBMb3dlcmNhc2UpCiAgICAg
KTsKIH0KIApAQCAtOTEsNDkgKzkyLDQzIEBAIHN0ZDo6b3B0aW9uYWw8VVVJRD4gVVVJRDo6cGFy
c2UoU3RyaW5nVmlldyB2YWx1ZSkKICAgICBpZiAodmFsdWVbOF0gIT0gJy0nIHx8IHZhbHVlWzEz
XSAhPSAnLScgIHx8IHZhbHVlWzE0XSAhPSAnNCcgfHwgdmFsdWVbMThdICE9ICctJyB8fCB2YWx1
ZVsyM10gIT0gJy0nKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgdW5zaWduZWQgeSA9IHZh
bHVlWzE5XTsKLSAgICBpZiAoeSA9PSAnOCcgfHwgeSA9PSAnOScpCi0gICAgICAgIHkgPSB5IC0g
JzgnOwotICAgIGVsc2UgaWYgKHkgPT0gJ2EnIHx8IHkgPT0gJ0EnKQotICAgICAgICB5ID0gMjsK
LSAgICBlbHNlIGlmICh5ID09ICdiJyB8fCB5ID09ICdCJykKLSAgICAgICAgeSA9IDM7Ci0gICAg
ZWxzZQorICAgIC8vIHBhcnNlSW50ZWdlciBtYXkgYWNjZXB0IGludGVnZXJzIHN0YXJ0aW5nIHdp
dGggKywgbGV0J3MgY2hlY2sgdGhpcyBiZWZvcmVoYW5kLgorICAgIGlmICh2YWx1ZVswXSA9PSAn
KycgfHwgdmFsdWVbOV0gPT0gJysnICB8fCB2YWx1ZVsxOV0gPT0gJysnIHx8IHZhbHVlWzI0XSA9
PSAnKycpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIGZpcnN0VmFsdWUgPSBwYXJz
ZUludGVnZXI8dW5zaWduZWQ+KHZhbHVlLnN1YnN0cmluZygwLCA4KSwgMTYpOworICAgIGF1dG8g
Zmlyc3RWYWx1ZSA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4odmFsdWUuc3Vic3RyaW5nKDAsIDgp
LCAxNik7CiAgICAgaWYgKCFmaXJzdFZhbHVlKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAg
YXV0byBzZWNvbmRWYWx1ZSA9IHBhcnNlSW50ZWdlcjx1bnNpZ25lZD4odmFsdWUuc3Vic3RyaW5n
KDksIDQpLCAxNik7CisgICAgYXV0byBzZWNvbmRWYWx1ZSA9IHBhcnNlSW50ZWdlcjx1aW50NjRf
dD4odmFsdWUuc3Vic3RyaW5nKDksIDQpLCAxNik7CiAgICAgaWYgKCFzZWNvbmRWYWx1ZSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gdGhpcmRWYWx1ZSA9IHBhcnNlSW50ZWdlcjx1
bnNpZ25lZD4odmFsdWUuc3Vic3RyaW5nKDE1LCAzKSwgMTYpOworICAgIGF1dG8gdGhpcmRWYWx1
ZSA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4odmFsdWUuc3Vic3RyaW5nKDE1LCAzKSwgMTYpOwog
ICAgIGlmICghdGhpcmRWYWx1ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gZm91
cnRoVmFsdWUgPSBwYXJzZUludGVnZXI8dW5zaWduZWQ+KHZhbHVlLnN1YnN0cmluZygyMCwgMyks
IDE2KTsKKyAgICBhdXRvIGZvdXJ0aFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90Pih2YWx1
ZS5zdWJzdHJpbmcoMTksIDQpLCAxNik7CiAgICAgaWYgKCFmb3VydGhWYWx1ZSkKICAgICAgICAg
cmV0dXJuIHsgfTsKIAotICAgIGF1dG8gZmlmdGhWYWx1ZSA9IHBhcnNlSW50ZWdlcjx1bnNpZ25l
ZD4odmFsdWUuc3Vic3RyaW5nKDI0LCA0KSwgMTYpOwotICAgIGlmICghZmlmdGhWYWx1ZSkKKyAg
ICAvLyBGb3VydGggdmFsdWUgc3RhcnRzIHdpdGggJ3knLCBpdCBtdXN0IGJlIGFib3ZlIDB4ODAw
MCBhbmQgYmVsb3cgMHhCRkZGRi4KKyAgICBpZiAoKCpmb3VydGhWYWx1ZSAmIDB4YzAwMCkgIT0g
MHg4MDAwKQogICAgICAgICByZXR1cm4geyB9OworICAgIGZvdXJ0aFZhbHVlID0gKmZvdXJ0aFZh
bHVlICYgMHgzZmZmOwogCi0gICAgYXV0byBzaXh0aFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVuc2ln
bmVkPih2YWx1ZS5zdWJzdHJpbmcoMjgsIDgpLCAxNik7Ci0gICAgaWYgKCFzaXh0aFZhbHVlKQor
ICAgIGF1dG8gZmlmdGhWYWx1ZSA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4odmFsdWUuc3Vic3Ry
aW5nKDI0LCAxMiksIDE2KTsKKyAgICBpZiAoIWZpZnRoVmFsdWUpCiAgICAgICAgIHJldHVybiB7
IH07CiAKLSAgICBVSW50MTI4IHV1aWRWYWx1ZTsKKyAgICB1aW50NjRfdCBoaWdoID0gKCpmaXJz
dFZhbHVlIDw8IDMyKSB8ICgqc2Vjb25kVmFsdWUgPDwgMTYpIHwgKnRoaXJkVmFsdWU7CisgICAg
dWludDY0X3QgbG93ID0gKCpmb3VydGhWYWx1ZSA8PCA0OCkgfCAqZmlmdGhWYWx1ZTsKIAotICAg
IGF1dG8qIGRhdGEgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4oJnV1aWRWYWx1ZSk7Ci0g
ICAgZGF0YVswXSA9ICpmaXJzdFZhbHVlOwotICAgIGRhdGFbMV0gPSAoKnNlY29uZFZhbHVlIDw8
IDE2KSB8ICp0aGlyZFZhbHVlOwotICAgIGRhdGFbMl0gPSAoKCpmb3VydGhWYWx1ZSA8PCAxNikg
fCAqZmlmdGhWYWx1ZSkgKyAoeSA8PCAzMCk7Ci0gICAgZGF0YVszXSA9ICpzaXh0aFZhbHVlOwor
ICAgIGF1dG8gcmVzdWx0ID0gKHN0YXRpY19jYXN0PFVJbnQxMjg+KGhpZ2gpIDw8IDY0KSB8IGxv
dzsKKyAgICBpZiAocmVzdWx0ID09IGVtcHR5VmFsdWUgfHwgcmVzdWx0ID09IGRlbGV0ZWRWYWx1
ZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBVVUlEKFdURk1vdmUodXVpZFZh
bHVlKSk7CisgICAgcmV0dXJuIFVVSUQocmVzdWx0KTsKIH0KIAogU3RyaW5nIGNyZWF0ZUNhbm9u
aWNhbFVVSURTdHJpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVVJRC5oIGIvU291
cmNlL1dURi93dGYvVVVJRC5oCmluZGV4IGQxMTYxN2Q2OWUwMWRlMGEzN2YwMjZmMTY5NzVmMTBm
ZTA4NGUyNTQuLjI3Y2ExMzIxMmRlNjljOGZkYzI2NDMxYmZhNjM3ZjFhZGYwNGYxZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VVUlELmgK
QEAgLTEyNiwxMSArMTI2LDYgQEAgc3RkOjpvcHRpb25hbDxVVUlEPiBVVUlEOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICByZXR1cm4gVVVJRCB7IChzdGF0aWNfY2FzdDxVSW50MTI4Pigq
aGlnaCkgPDwgNjQpIHwgKmxvdyB9OwogfQogCi1pbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNo
ZXIsIGNvbnN0IFVVSUQmIHV1aWQpCi17Ci0gICAgYWRkKGhhc2hlciwgdXVpZC5oYXNoKCkpOwot
fQotCiAvLyBDcmVhdGVzIGEgVVVJRCB0aGF0IGNvbnNpc3RzIG9mIDMyIGhleGFkZWNpbWFsIGRp
Z2l0cyBhbmQgcmV0dXJucyBpdHMgY2Fub25pY2FsIGZvcm0uCiAvLyBUaGUgY2Fub25pY2FsIGZv
cm0gaXMgZGlzcGxheWVkIGluIDUgZ3JvdXBzIHNlcGFyYXRlZCBieSBoeXBoZW5zLCBpbiB0aGUg
Zm9ybSA4LTQtNC00LTEyIGZvciBhIHRvdGFsIG9mIDM2IGNoYXJhY3RlcnMuCiAvLyBUaGUgaGV4
YWRlY2ltYWwgdmFsdWVzICJhIiB0aHJvdWdoICJmIiBhcmUgb3V0cHV0IGFzIGxvd2VyIGNhc2Ug
Y2hhcmFjdGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oCmluZGV4IDEwMjk5OWM2OWEyMzg2NzdmYjZl
MGIzNDMzNTgxYzdlZjIzNWExOTYuLjA5NDYyYWNlYWU5NzA4YmVjNDg5N2IzMzA0OTBhOWU3MDk3
MjdkZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaApAQCAtMzcsMjIgKzM3LDE2IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgUHJvY2Vzc1F1YWxpZmllZCBnZW5lcmF0ZSgpIHsgcmV0dXJuIHsgVVVJRDo6
Y3JlYXRlKCksIFByb2Nlc3M6OmlkZW50aWZpZXIoKSB9OyB9CiAKICAgICBQcm9jZXNzUXVhbGlm
aWVkKCkKLSAgICAgICAgOiBtX29iamVjdChXVEY6OlVJbnQxMjgoMCkpCisgICAgICAgIDogbV9v
YmplY3QoVVVJRDo6ZW1wdHlWYWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAgUHJvY2Vzc1F1YWxp
ZmllZChVVUlEJiYgb2JqZWN0LCBQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikK
KyAgICBQcm9jZXNzUXVhbGlmaWVkKFVVSUQgb2JqZWN0LCBQcm9jZXNzSWRlbnRpZmllciBwcm9j
ZXNzSWRlbnRpZmllcikKICAgICAgICAgOiBtX29iamVjdChXVEZNb3ZlKG9iamVjdCkpCiAgICAg
ICAgICwgbV9wcm9jZXNzSWRlbnRpZmllcihwcm9jZXNzSWRlbnRpZmllcikKICAgICB7CiAgICAg
fQogCi0gICAgUHJvY2Vzc1F1YWxpZmllZChjb25zdCBVVUlEJiBvYmplY3QsIFByb2Nlc3NJZGVu
dGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQotICAgICAgICA6IG1fb2JqZWN0KG9iamVjdCkKLSAg
ICAgICAgLCBtX3Byb2Nlc3NJZGVudGlmaWVyKHByb2Nlc3NJZGVudGlmaWVyKQotICAgIHsKLSAg
ICB9Ci0KICAgICBQcm9jZXNzUXVhbGlmaWVkKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlw
ZSkKICAgICAgICAgOiBtX29iamVjdChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKICAgICAg
ICAgLCBtX3Byb2Nlc3NJZGVudGlmaWVyKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQpAQCAt
MTAzLDMgKzk3LDEzIEBAIGlubGluZSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBQcm9jZXNzUXVhbGlmaWVkPFVVSUQ+JiBwcm9jCiB1c2luZyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllciA9IFByb2Nlc3NRdWFsaWZpZWQ8VVVJRD47CiAKIH0KKwor
bmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4KK2lubGluZSB1aW50MzJfdCBjb21wdXRlSGFz
aChjb25zdCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciYgaWRlbnRp
ZmllcikKK3sKKyAgICByZXR1cm4gaWRlbnRpZmllci5vYmplY3QoKS5oYXNoKCk7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2MDcz
Y2FhOTVhY2FjM2E2ZGVmYmEzYzE0Njg0ZTUyZDlkMTNkMjhhLi5hZDExMjYzM2FmNTUyYjU5NmQw
N2Q3NDE2ZDA1NTlhMjk3NzY2MzYwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEtMTggIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgU2VydmljZVdvcmtlckNsaWVu
dC5pZCBhIFVVSUQgaW5zdGVhZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM1MDcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzY3MzU0MD4K
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlciBhbmQgQ2hyaXMgRHVtZXouCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVVJRC5jcHA6CisgICAgICAgIEltcHJvdmUg
dGVzdCBjb3ZlcmFnZS4KKwogMjAyMi0wMS0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgTWFrZSBTZXJ2aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0
ZWFkIG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJvbSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VVUlELmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VVSUQuY3BwCmluZGV4IDI4M2IwZjZl
MjMxOTViMTMyMjgxN2QxMTFhMjMwZjRjODlhOWViYjcuLjYzN2M1NDY5MGRmNmI5ZTQ3NjFjYjFk
YWQyODU2ZjgzMTgwMWJmYzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1VVSUQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VVSUQuY3Bw
CkBAIC0zMiwyNSArMzIsNTMgQEAgVEVTVChXVEYsIEJvb3RTZXNzaW9uVVVJRElkZW50aXR5KQog
ICAgIEVYUEVDVF9FUShib290U2Vzc2lvblVVSURTdHJpbmcoKSwgYm9vdFNlc3Npb25VVUlEU3Ry
aW5nKCkpOwogfQogCi1URVNUKFdURiwgVGVzdFVVSURQYXJzaW5nKQorc3RhdGljIFN0cmluZyBw
YXJzZUFuZFN0cmluZ2lmeVVVSUQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBhdXRvIGNy
ZWF0ZWQgID0gVVVJRDo6Y3JlYXRlKCk7Ci0gICAgYXV0byB2YWx1ZSA9IFVVSUQ6OnBhcnNlKGNy
ZWF0ZWQudG9TdHJpbmcoKSk7Ci0gICAgRVhQRUNUX1RSVUUoISF2YWx1ZSk7Ci0gICAgRVhQRUNU
X0VRKGNyZWF0ZWQsICp2YWx1ZSk7CisgICAgYXV0byB1dWlkID0gVVVJRDo6cGFyc2UodmFsdWUp
OworICAgIGlmICghdXVpZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gdXVpZC0+
dG9TdHJpbmcoKTsKK30KIAorVEVTVChXVEYsIFRlc3RVVUlEUGFyc2luZykKK3sKICAgICAvLyB4
eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgKLSAgICB2YWx1ZSA9IFVVSUQ6OnBh
cnNlKCIxMjM0NTY3OC05YWJjLTVkZTAtODlBQi0wMTIzNDU2Nzg5YWIiKTsKLSAgICBFWFBFQ1Rf
RkFMU0UoISF2YWx1ZSk7CiAKLSAgICB2YWx1ZSA9IFVVSUQ6OnBhcnNlKCIxMjM0NTY3OC05YWJj
LTRkZWEtNzlBQi0wMTIzNDU2Nzg5YWIiKTsKLSAgICBFWFBFQ1RfRkFMU0UoISF2YWx1ZSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2UoIjEyMzQ1Njc4LTlhYmMtNWRlMC04OUFCLTAx
MjM0NTY3ODlhYiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZSgiMTIzNDU2Nzgt
OWFiYy00ZGVhLTc5QUItMDEyMzQ1Njc4OWFiIikpOworICAgIEVYUEVDVF9GQUxTRSghIVVVSUQ6
OnBhcnNlKCIxMjM0NTY3OC05YWJjLTRkZTAtN2ZmZi0wMTIzNDU2Nzg5YWIiKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKCEhVVVJRDo6cGFyc2UoIjEyMzQ1Njc4LTlhYmMtNGRlMC1jMDAwMC0wMTIzNDU2
Nzg5YWIiKSk7CisKKyAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZSgiK2VmOTQ0YzEtNWNi
OC00OGFhLUFkMTItQzVmODIzZjAwNWMzIikpOworICAgIEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBh
cnNlKCI2ZWY5NDRjMS0rY2I4LTQ4YWEtQWQxMi1DNWY4MjNmMDA1YzMiKSk7CisgICAgRVhQRUNU
X0ZBTFNFKCEhVVVJRDo6cGFyc2UoIjZlZjk0NGMxLTVjYjgtKzhhYS1BZDEyLUM1ZjgyM2YwMDVj
MyIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZSgiNmVmOTQ0YzEtNWNiOC00OGFh
LStkMTItQzVmODIzZjAwNWMzIikpOworICAgIEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBhcnNlKCI2
ZWY5NDRjMS01Y2I4LTQ4YWEtQWQxMi0rNWY4MjNmMDA1YzMiKSk7CisKKyAgICBFWFBFQ1RfRkFM
U0UoISFVVUlEOjpwYXJzZSgiMDAwMDAwMDAtMDAwMC00MDAwLTgwMDAtMDAwMDAwMDAwMDAwIikp
OworICAgIEVYUEVDVF9GQUxTRSghIVVVSUQ6OnBhcnNlKCIwMDAwMDAwMC0wMDAwLTQwMDAtODAw
MC0wMDAwMDAwMDAwMDEiKSk7CisKKyAgICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0ciA8IDEw
MDsgKytjcHRyKSB7CisgICAgICAgIGF1dG8gY3JlYXRlZFVVSUQgPSBVVUlEOjpjcmVhdGUoKTsK
KyAgICAgICAgYXV0byBjcmVhdGVkU3RyaW5nID0gY3JlYXRlZFVVSUQudG9TdHJpbmcoKTsKKyAg
ICAgICAgRVhQRUNUX0VRKGNyZWF0ZWRTdHJpbmcubGVuZ3RoKCksIDM2dSk7CisgICAgICAgIEVY
UEVDVF9FUShjcmVhdGVkU3RyaW5nWzE0XSwgJzQnKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoY3Jl
YXRlZFN0cmluZ1sxOV0gPT0gJzgnIHx8IGNyZWF0ZWRTdHJpbmdbMTldID09ICc5JyB8fCBjcmVh
dGVkU3RyaW5nWzE5XSA9PSAnYScgfHwgY3JlYXRlZFN0cmluZ1sxOV0gPT0gJ2InKTsKKworICAg
ICAgICBhdXRvIHV1aWQgPSBVVUlEOjpwYXJzZShjcmVhdGVkU3RyaW5nKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoISF1dWlkKTsKKyAgICAgICAgRVhQRUNUX0VRKCp1dWlkLCBjcmVhdGVkVVVJRCk7
CisgICAgfQorCisgICAgU3RyaW5nIHRlc3ROb3JtYWwgPSAiMTIzNDU2NzgtOWFiYy00ZGUwLTg5
YWItMDEyMzQ1Njc4OWFiIl9zOworICAgIEVYUEVDVF9FUShwYXJzZUFuZFN0cmluZ2lmeVVVSUQo
dGVzdE5vcm1hbCksIHRlc3ROb3JtYWwpOworCisgICAgU3RyaW5nIHRlc3Q4MDAwID0gIjEyMzQ1
Njc4LTlhYmMtNGRlMC04MDAwLTAxMjM0NTY3ODlhYiJfczsKKyAgICBFWFBFQ1RfRVEocGFyc2VB
bmRTdHJpbmdpZnlVVUlEKHRlc3Q4MDAwKSwgdGVzdDgwMDApOwogCi0gICAgdmFsdWUgPSBVVUlE
OjpwYXJzZSgiMTIzNDU2NzgtOWFiYy00ZGUwLTg5YWItMDEyMzQ1Njc4OWFiIik7Ci0gICAgRVhQ
RUNUX1RSVUUoISF2YWx1ZSk7Ci0gICAgRVhQRUNUX1RSVUUodmFsdWUtPnRvU3RyaW5nKCkgPT0g
IjEyMzQ1Njc4LTlhYmMtNGRlMC04OWFiLTAxMjM0NTY3ODlhYiIpOworICAgIFN0cmluZyB0ZXN0
QmZmZiA9ICIxMjM0NTY3OC05YWJjLTRkZTAtQmZmZi0wMTIzNDU2Nzg5YWIiX3M7CisgICAgRVhQ
RUNUX0VRKHBhcnNlQW5kU3RyaW5naWZ5VVVJRCh0ZXN0QmZmZiksIHRlc3RCZmZmLmNvbnZlcnRU
b0FTQ0lJTG93ZXJjYXNlKCkpOwogCi0gICAgdmFsdWUgPSBVVUlEOjpwYXJzZSgiNmVmOTQ0YzEt
NWNiOC00OGFhLUFkMTItQzVmODIzZjAwNWMzIik7Ci0gICAgRVhQRUNUX1RSVUUoISF2YWx1ZSk7
Ci0gICAgRVhQRUNUX1RSVUUodmFsdWUtPnRvU3RyaW5nKCkgPT0gIjZlZjk0NGMxLTVjYjgtNDhh
YS1hZDEyLWM1ZjgyM2YwMDVjMyIpOworICAgIFN0cmluZyB0ZXN0QWQxMiA9ICI2ZWY5NDRjMS01
Y2I4LTQ4YWEtQWQxMi1DNWY4MjNmMDA1YzMiX3M7CisgICAgRVhQRUNUX0VRKHBhcnNlQW5kU3Ry
aW5naWZ5VVVJRCh0ZXN0QWQxMiksIHRlc3RBZDEyLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkp
OwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>