<?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>97037</bug_id>
          
          <creation_ts>2012-09-18 12:57:57 -0700</creation_ts>
          <short_desc>Bring WebKit up to speed with latest Encrypted Media spec.</short_desc>
          <delta_ts>2013-02-08 15:33:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>109318</blocked>
    
    <blocked>109320</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>abarth</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ddorwin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gustavo</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>peter+ews</cc>
    
    <cc>philn</cc>
    
    <cc>rniwa</cc>
    
    <cc>scherkus</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>722995</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-18 12:57:57 -0700</bug_when>
    <thetext>Bring WebKit up to speed with latest Encrypted Media spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722996</commentid>
    <comment_count>1</comment_count>
      <attachid>164609</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-18 12:58:09 -0700</bug_when>
    <thetext>Created attachment 164609
Patch

Initial WIP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723132</commentid>
    <comment_count>2</comment_count>
      <attachid>164635</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-18 16:44:47 -0700</bug_when>
    <thetext>Created attachment 164635
Patch

WIP v2; Added a ENABLE_ENCRYPTED_MEDIA_V2 to allow the older spec implementation to be deprecated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723757</commentid>
    <comment_count>3</comment_count>
      <attachid>164768</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-19 13:20:56 -0700</bug_when>
    <thetext>Created attachment 164768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723765</commentid>
    <comment_count>4</comment_count>
      <attachid>164768</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-19 13:28:45 -0700</bug_when>
    <thetext>Comment on attachment 164768
Patch

Attachment 164768 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13898628</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723768</commentid>
    <comment_count>5</comment_count>
      <attachid>164768</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-19 13:30:39 -0700</bug_when>
    <thetext>Comment on attachment 164768
Patch

Attachment 164768 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13900647</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723774</commentid>
    <comment_count>6</comment_count>
      <attachid>164768</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-19 13:35:02 -0700</bug_when>
    <thetext>Comment on attachment 164768
Patch

Attachment 164768 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13894646</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723776</commentid>
    <comment_count>7</comment_count>
      <attachid>164768</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-19 13:36:08 -0700</bug_when>
    <thetext>Comment on attachment 164768
Patch

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

&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:66
&gt; +bool CDM::supportsKeySystem(const String&amp; keySystem)

CDM -&gt; generally we like to avoid acronyms whenever possible.  Can we us english words to describe the name of this class?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723777</commentid>
    <comment_count>8</comment_count>
      <attachid>164768</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-19 13:36:32 -0700</bug_when>
    <thetext>Comment on attachment 164768
Patch

Attachment 164768 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13895612</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723778</commentid>
    <comment_count>9</comment_count>
      <attachid>164768</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-19 13:37:54 -0700</bug_when>
    <thetext>Comment on attachment 164768
Patch

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

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.h:99
&gt; +    ScriptExecutionContext* m_scriptExecutionContext;

I should look more carefully, but having a RefCounted class with a raw pointer to a ScriptExecutionContext is generally a red flag.  How do we know this pointer will stay valid?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723782</commentid>
    <comment_count>10</comment_count>
      <attachid>164768</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-19 13:39:58 -0700</bug_when>
    <thetext>Comment on attachment 164768
Patch

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

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.idl:32
&gt; +    ] MediaKeySession {

It looks like this is a JavaScript object with no mechanism to make sure that the ScriptExecutionContext stays valid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724031</commentid>
    <comment_count>11</comment_count>
      <attachid>164768</attachid>
    <who name="David Dorwin">ddorwin</who>
    <bug_when>2012-09-19 18:12:06 -0700</bug_when>
    <thetext>Comment on attachment 164768
Patch

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

&gt; Source/WebCore/ChangeLog:42
&gt; +        (WebCore::MediaKeyMessageEventInit::MediaKeyMessageEventInit): Initializer now only takes message and defaultURL

defaultURL is now destinationURL.

&gt; Source/WebCore/ChangeLog:68
&gt; +        (WebCore::MediaKeySession::close): Tell the CDM to clear any saved session keys.

s/clear any saved/release any/
I think that is clearer and less likely to lead to confusion about what &quot;saved&quot; means.

&gt; Source/WebCore/ChangeLog:112
&gt; +        Add an ENABLE(ENCRYPTED_MEDIA_V2) check to the existing ENABLE(ENCRYPTED_MEDIA) one:

Is this accurate? It&apos;s a different set of members for &quot;V2&quot;.
Presumably you are also adding mediaKeys attribute.

&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:29
&gt; +#if ENABLE(ENCRYPTED_MEDIA_V2)

I think the new API should be ENCRYPTED_MEDIA. We can fix that later or change the existing version to ENCRYPTED_MEDIA_DEPRECATED. I can help change this in Chrome if you want.

&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:68
&gt; +    Vector&lt;CDMFactory*&gt;&amp; cdms = installedCDMs();

&quot;cdms&quot; is a confusing name when reading the code below. Suggest cdmFactories.
One reason the distinction is important is that the CDMs don&apos;t need to be initialized (i.e. loaded) for these functions to run.

&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:86
&gt; +static CDMFactory* bestCDMForKeySystem(const String&amp; keySystem)

Key system generally exactly identifies a CDM, so the name is a little strange.
I&apos;m guessing the use case might be different implementations of a key system for different media engines. If that is the case, though, then maybe more information is needed or the CDM selection will affect the media engine (or vice versa).

&gt; Source/WebCore/Modules/encryptedmedia/CDM.h:47
&gt; +    static bool supportsKeySystemMIMETypeAndCodec(const String&amp; keySystem, const String&amp; mimeType, const String&amp; codec);

I don&apos;t see any callers. I assume HTMLMediaElement will start deferring to this as part of canPlayType().

&gt; Source/WebCore/Modules/encryptedmedia/CDM.h:51
&gt; +    String generateSessionId();

I think we should preserve sessions as objects internally. That would mean adding a CDMSession class for these methods.

Using an object allows implementations that want to use objects to do so while also allowing other implementations to convert from shell objects to functions that take a session ID. It&apos;s much more awkward to go the other way (OO to functions to OO).

If we do that, it might be worth noting that this class represents a MediaKeys object from the spec and CDMSession represents a MediaKeySession.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp:96
&gt; +    // NOTE: Currently, no CDMs provide the ability to query for MIME type support.

Shouldn&apos;t we push this detail into the CDMs and have this class still poll? You can always have implementations return &quot;yes&quot; until they support real querying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724233</commentid>
    <comment_count>12</comment_count>
      <attachid>164768</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-20 00:29:21 -0700</bug_when>
    <thetext>Comment on attachment 164768
Patch

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

&gt;&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:66
&gt;&gt; +bool CDM::supportsKeySystem(const String&amp; keySystem)
&gt; 
&gt; CDM -&gt; generally we like to avoid acronyms whenever possible.  Can we us english words to describe the name of this class?

Sure.  ContentDecryptionModule is a little verbose though.  Suggestions?

&gt;&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:68
&gt;&gt; +    Vector&lt;CDMFactory*&gt;&amp; cdms = installedCDMs();
&gt; 
&gt; &quot;cdms&quot; is a confusing name when reading the code below. Suggest cdmFactories.
&gt; One reason the distinction is important is that the CDMs don&apos;t need to be initialized (i.e. loaded) for these functions to run.

Sure thing.

&gt;&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:86
&gt;&gt; +static CDMFactory* bestCDMForKeySystem(const String&amp; keySystem)
&gt; 
&gt; Key system generally exactly identifies a CDM, so the name is a little strange.
&gt; I&apos;m guessing the use case might be different implementations of a key system for different media engines. If that is the case, though, then maybe more information is needed or the CDM selection will affect the media engine (or vice versa).

I can change this so it&apos;s less strange.

&gt;&gt; Source/WebCore/Modules/encryptedmedia/CDM.h:47
&gt;&gt; +    static bool supportsKeySystemMIMETypeAndCodec(const String&amp; keySystem, const String&amp; mimeType, const String&amp; codec);
&gt; 
&gt; I don&apos;t see any callers. I assume HTMLMediaElement will start deferring to this as part of canPlayType().

Yes, I&apos;ve deleted this function in a later (local) revision.

&gt;&gt; Source/WebCore/Modules/encryptedmedia/CDM.h:51
&gt;&gt; +    String generateSessionId();
&gt; 
&gt; I think we should preserve sessions as objects internally. That would mean adding a CDMSession class for these methods.
&gt; 
&gt; Using an object allows implementations that want to use objects to do so while also allowing other implementations to convert from shell objects to functions that take a session ID. It&apos;s much more awkward to go the other way (OO to functions to OO).
&gt; 
&gt; If we do that, it might be worth noting that this class represents a MediaKeys object from the spec and CDMSession represents a MediaKeySession.

That just seems to complicate things for very little benefit.  Right now, there is a single abstract interface to the CDM with very simple lifetime mechanisms.  Adding a CDMSession interface parallel to MediaKeySession opens the door to hairy lifetime management bugs.

&gt;&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.idl:32
&gt;&gt; +    ] MediaKeySession {
&gt; 
&gt; It looks like this is a JavaScript object with no mechanism to make sure that the ScriptExecutionContext stays valid.

Would you suggest this be an ActiveDOMObject instead?

&gt;&gt; Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp:96
&gt;&gt; +    // NOTE: Currently, no CDMs provide the ability to query for MIME type support.
&gt; 
&gt; Shouldn&apos;t we push this detail into the CDMs and have this class still poll? You can always have implementations return &quot;yes&quot; until they support real querying.

Sorry, this has been implemented in my current (local) revision.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724235</commentid>
    <comment_count>13</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-20 00:33:59 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 164768 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164768&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:42
&gt; &gt; +        (WebCore::MediaKeyMessageEventInit::MediaKeyMessageEventInit): Initializer now only takes message and defaultURL
&gt; 
&gt; defaultURL is now destinationURL.

Got it.  Will change.

&gt; &gt; Source/WebCore/ChangeLog:68
&gt; &gt; +        (WebCore::MediaKeySession::close): Tell the CDM to clear any saved session keys.
&gt; 
&gt; s/clear any saved/release any/
&gt; I think that is clearer and less likely to lead to confusion about what &quot;saved&quot; means.

Will change.

&gt; &gt; Source/WebCore/ChangeLog:112
&gt; &gt; +        Add an ENABLE(ENCRYPTED_MEDIA_V2) check to the existing ENABLE(ENCRYPTED_MEDIA) one:
&gt; 
&gt; Is this accurate? It&apos;s a different set of members for &quot;V2&quot;.

It&apos;s a subset, yes.

&gt; Presumably you are also adding mediaKeys attribute.

::boggle::  I completely left out the mediaKeys attribute.  Will change.

&gt; &gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:29
&gt; &gt; +#if ENABLE(ENCRYPTED_MEDIA_V2)
&gt; 
&gt; I think the new API should be ENCRYPTED_MEDIA. We can fix that later or change the existing version to ENCRYPTED_MEDIA_DEPRECATED. I can help change this in Chrome if you want.
&gt; 
&gt; &gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:68
&gt; &gt; +    Vector&lt;CDMFactory*&gt;&amp; cdms = installedCDMs();
&gt; 
&gt; &quot;cdms&quot; is a confusing name when reading the code below. Suggest cdmFactories.
&gt; One reason the distinction is important is that the CDMs don&apos;t need to be initialized (i.e. loaded) for these functions to run.

Will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724239</commentid>
    <comment_count>14</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-20 00:45:15 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 164768 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164768&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:29
&gt; &gt; +#if ENABLE(ENCRYPTED_MEDIA_V2)
&gt; 
&gt; I think the new API should be ENCRYPTED_MEDIA. We can fix that later or change the existing version to ENCRYPTED_MEDIA_DEPRECATED. I can help change this in Chrome if you want.

Lets do it in another patch.  This one is big enough as it is. :)

Once Chrome has switched over to the _DEPRECATED flag, we can remove the _V2 from this new one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724325</commentid>
    <comment_count>15</comment_count>
      <attachid>164872</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-20 02:51:15 -0700</bug_when>
    <thetext>Created attachment 164872
Patch

This revision still has the ScriptExecutionContext which Adam mentioned, but should solve the compilation ploblems on platforms which do not enable ENCRYPTED_MEDIA_V2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724326</commentid>
    <comment_count>16</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-20 02:52:29 -0700</bug_when>
    <thetext>This patch also has all the necessary changes to Platform.h to enable this new flag on the Mac port, as well as new tests for the new spec API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724327</commentid>
    <comment_count>17</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-20 02:53:27 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=164872) [details]
&gt; Patch
&gt; 
&gt; This revision still has the ScriptExecutionContext [problem] which Adam mentioned...

This comment missing word.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724337</commentid>
    <comment_count>18</comment_count>
      <attachid>164874</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-20 03:07:30 -0700</bug_when>
    <thetext>Created attachment 164874
Patch

Made MediaKeySession inherit from ContextDestructionObserver, which should allay the problems Adam has with the bare ScriptExecutionContext pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724369</commentid>
    <comment_count>19</comment_count>
      <attachid>164874</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-20 03:34:22 -0700</bug_when>
    <thetext>Comment on attachment 164874
Patch

Attachment 164874 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13950157</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724386</commentid>
    <comment_count>20</comment_count>
      <attachid>164874</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-20 03:50:06 -0700</bug_when>
    <thetext>Comment on attachment 164874
Patch

Attachment 164874 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13953115</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724550</commentid>
    <comment_count>21</comment_count>
      <attachid>164927</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-20 08:53:38 -0700</bug_when>
    <thetext>Created attachment 164927
Patch

Wrapped the HTMLMediaElement mediaKey attribute in more careful conditionals. It should no longer be defined for the deprecated flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724554</commentid>
    <comment_count>22</comment_count>
      <attachid>164929</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-20 09:02:58 -0700</bug_when>
    <thetext>Created attachment 164929
Patch

Apparently the V8 code generator won&apos;t wrap #includes with the same conditionals it uses when wrapping the attributes which require them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724584</commentid>
    <comment_count>23</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-20 09:58:27 -0700</bug_when>
    <thetext>&gt; Would you suggest this be an ActiveDOMObject instead?

That will certainly work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724593</commentid>
    <comment_count>24</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-20 10:10:42 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; &gt; Would you suggest this be an ActiveDOMObject instead?
&gt; 
&gt; That will certainly work.

Well, I&apos;m not sure that MediaKeySession will have any long running tasks which would necessitate being an ActiveDOMObject.  I.e., I don&apos;t know if the &quot;fire a task&quot; portion of the spec would require calling setPendingActivity.  If it is, I can certainly do that, but for the mean time I&apos;ve made MediaKeySession a ContextDestructionObserver.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724598</commentid>
    <comment_count>25</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-20 10:13:47 -0700</bug_when>
    <thetext>And David, I&apos;ve changed my mind on making a separate CDMSession class (or interface).  I&apos;ll get that change into an upcoming patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724677</commentid>
    <comment_count>26</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-20 11:11:58 -0700</bug_when>
    <thetext>&gt; Well, I&apos;m not sure that MediaKeySession will have any long running tasks which would necessitate being an ActiveDOMObject.  I.e., I don&apos;t know if the &quot;fire a task&quot; portion of the spec would require calling setPendingActivity.  If it is, I can certainly do that, but for the mean time I&apos;ve made MediaKeySession a ContextDestructionObserver.

That works too.  :)

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724702</commentid>
    <comment_count>27</comment_count>
      <attachid>164929</attachid>
    <who name="David Dorwin">ddorwin</who>
    <bug_when>2012-09-20 11:29:23 -0700</bug_when>
    <thetext>Comment on attachment 164929
Patch

Some comments related to session lifetime. I&apos;ll wait for a new patch with CDMSession before reviewing further.

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        Tests: media/encrypted-media/encrypted-media-v2-events.html

I think we should have the test names correct from the beginning. If overrides get added later, it will be harder to fix.
Chromium does not have overrides, so you can rename the current tests to -v01 or -deprecated completely within WK then use the new name for your tests.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp:58
&gt; +    close();

I don&apos;t think this is correct. A CDM can still use a session&apos;s keys even if no representation of the session exists in the DOM.
close() is intended to give the application explicit control.

close() and &quot;noMoreDomReferences()&quot; (i.e. dereferencing the new CDMSession) are different messages. If the latter is received after the former, the session can be erased. Otherwise, the session must remain in the CDM implementation.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp:69
&gt; +        m_keys-&gt;cdm()-&gt;clearKeysFromSessionId(m_sessionId);

It seems that closeSession() would be better. CDMs will need to know that this means to clear the keys, but there are other things that closing a session ID might mean.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp:70
&gt; +    m_asyncEventQueue-&gt;cancelAllEvents();

I&apos;m not sure this is correct. The act of closing may trigger events, such as key release messages. close() does not destroy the key session.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.h:47
&gt; +class MediaKeySession : public RefCounted&lt;MediaKeySession&gt;, public EventTarget, public ContextDestructionObserver {

We need to figure out some lifetime issues in the DOM. What should happen if there are no references to a MediaKeys object in the DOM but there is still a reference to one of its MediaKeySession objects? Does the former disappear from the DOM but is kept alive internally? I think that might require a change to the implementation to hold a reference to MediaKeys from the MediaKeySession (the opposite of the current implementation).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724824</commentid>
    <comment_count>28</comment_count>
      <attachid>164929</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-20 13:43:39 -0700</bug_when>
    <thetext>Comment on attachment 164929
Patch

Attachment 164929 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13950290

New failing tests:
media/encrypted-media/encrypted-media-v2-syntax.html
media/encrypted-media/encrypted-media-v2-events.html
media/encrypted-media/encrypted-media-can-play-type.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724883</commentid>
    <comment_count>29</comment_count>
      <attachid>164929</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-20 14:42:37 -0700</bug_when>
    <thetext>Comment on attachment 164929
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt; +        Tests: media/encrypted-media/encrypted-media-v2-events.html
&gt; 
&gt; I think we should have the test names correct from the beginning. If overrides get added later, it will be harder to fix.
&gt; Chromium does not have overrides, so you can rename the current tests to -v01 or -deprecated completely within WK then use the new name for your tests.

Okay, will do.

&gt;&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp:58
&gt;&gt; +    close();
&gt; 
&gt; I don&apos;t think this is correct. A CDM can still use a session&apos;s keys even if no representation of the session exists in the DOM.
&gt; close() is intended to give the application explicit control.
&gt; 
&gt; close() and &quot;noMoreDomReferences()&quot; (i.e. dereferencing the new CDMSession) are different messages. If the latter is received after the former, the session can be erased. Otherwise, the session must remain in the CDM implementation.

Except, at this point, the CDMSession&apos;s lifetime is owned by the MediaKeySession.  If it&apos;s deleted, the CDMSession will be deleted soon after.  I thought it would make sense to release all the keys when the CDM was deleted, but we could also just make this the responsibility of the CDMSession itself.

So, if what you&apos;re saying is true (that the session must remain active until it&apos;s closed, it sounds like MediaKeySession /should/ be an ActiveDOMObject, and should bump it&apos;s activity count when a key is added and clear it when close() is called.  That way, the CDMSession stays alive, but doesn&apos;t have to persist past the end of the lifetime of the MediaKeySession object.

&gt;&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp:69
&gt;&gt; +        m_keys-&gt;cdm()-&gt;clearKeysFromSessionId(m_sessionId);
&gt; 
&gt; It seems that closeSession() would be better. CDMs will need to know that this means to clear the keys, but there are other things that closing a session ID might mean.

Okay, I had renamed this &quot;releaseKeys()&quot; on the new CDMSession object.  But I can further rename it to just &quot;close()&quot;.

&gt;&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp:70
&gt;&gt; +    m_asyncEventQueue-&gt;cancelAllEvents();
&gt; 
&gt; I&apos;m not sure this is correct. The act of closing may trigger events, such as key release messages. close() does not destroy the key session.

Okay.  I&apos;ll remove this.

&gt;&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.h:47
&gt;&gt; +class MediaKeySession : public RefCounted&lt;MediaKeySession&gt;, public EventTarget, public ContextDestructionObserver {
&gt; 
&gt; We need to figure out some lifetime issues in the DOM. What should happen if there are no references to a MediaKeys object in the DOM but there is still a reference to one of its MediaKeySession objects? Does the former disappear from the DOM but is kept alive internally? I think that might require a change to the implementation to hold a reference to MediaKeys from the MediaKeySession (the opposite of the current implementation).

More likely, this will need some isReachable hacks, but even so, this has the potential to cause some circular-reference leaks.

At what point should an MediaKeysSession be collectable?  Only if it has no keys (because none have been added or the session has been close()d) ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724886</commentid>
    <comment_count>30</comment_count>
      <attachid>164929</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-20 14:45:51 -0700</bug_when>
    <thetext>Comment on attachment 164929
Patch

Attachment 164929 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13950302

New failing tests:
media/encrypted-media/encrypted-media-v2-syntax.html
media/encrypted-media/encrypted-media-v2-events.html
media/encrypted-media/encrypted-media-can-play-type.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724904</commentid>
    <comment_count>31</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-20 15:17:09 -0700</bug_when>
    <thetext>Okay, how&apos;s this for an idea:

- a MediaKeys object is considered &quot;active&quot; when it has at least one &quot;active&quot; session
- a MediaKeySession object  is considered &quot;active&quot; when it has at least one outstanding keyRequest, or has had a key added, and has not been &quot;closed&quot;.
- Once a MediaKeySession has been &quot;closed&quot;, it can no longer generate key requests or add keys.  Adding a key will throw an INVALID_STATE_ERR exception.

This would guarantee the following:

- The MediaKeys object would not get GCd while there were active keys in any of its MediaKeySession objects
- Once all a MediaKeys&apos; session object were closed, it would be GCd.
- If ever a MediaKeySession object outlived its MediaKeys, it could no longer add keys or create key requests. (Because that session must have been closed.)
- Ownership would still flow normally (MediaKeys would still own MediaKeySessions &amp; CDMs, MediaKeySessions would still own CDMSessions), without needing upstream ownership.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725139</commentid>
    <comment_count>32</comment_count>
    <who name="David Dorwin">ddorwin</who>
    <bug_when>2012-09-20 21:30:14 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; &gt;&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp:58
&gt; &gt;&gt; +    close();
&gt; &gt; 
&gt; &gt; I don&apos;t think this is correct. A CDM can still use a session&apos;s keys even if no representation of the session exists in the DOM.
&gt; &gt; close() is intended to give the application explicit control.
&gt; &gt; 
&gt; &gt; close() and &quot;noMoreDomReferences()&quot; (i.e. dereferencing the new CDMSession) are different messages. If the latter is received after the former, the session can be erased. Otherwise, the session must remain in the CDM implementation.
&gt; 
&gt; Except, at this point, the CDMSession&apos;s lifetime is owned by the MediaKeySession.  If it&apos;s deleted, the CDMSession will be deleted soon after.  I thought it would make sense to release all the keys when the CDM was deleted, but we could also just make this the responsibility of the CDMSession itself.

The intent of the spec is that the MediaKeySession object in the DOM does not represent the lifetime of a session (and its keys). Technically, an app could call addKey() then release all references to the MKS. The MKS wouldn&apos;t exist in the DOM, but the session (or at least its keys) would still exist in the CDM.

Maybe this is weird and DOM references _should_ manage lifetime (I can think of a couple problems with this) or the MediaKeys (aka CDM) should hold a reference until close() is called, at which time it releases the reference and the MKS will only exist as long as there is a reference in the DOM. The latter seems harder to get right with respect to CDM implementations (for example, the CDM firing a key release message).
&gt; 
&gt; So, if what you&apos;re saying is true (that the session must remain active until it&apos;s closed, it sounds like MediaKeySession /should/ be an ActiveDOMObject, and should bump it&apos;s activity count when a key is added and clear it when close() is called.  That way, the CDMSession stays alive, but doesn&apos;t have to persist past the end of the lifetime of the MediaKeySession object.

I assume &quot;have&quot; means can if the CDM needs it to. Really, it puts the CDM in control once the MKS is destroyed. If so, sounds good.



&gt; &gt;&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.h:47
&gt; &gt;&gt; +class MediaKeySession : public RefCounted&lt;MediaKeySession&gt;, public EventTarget, public ContextDestructionObserver {
&gt; &gt; 
&gt; &gt; We need to figure out some lifetime issues in the DOM. What should happen if there are no references to a MediaKeys object in the DOM but there is still a reference to one of its MediaKeySession objects? Does the former disappear from the DOM but is kept alive internally? I think that might require a change to the implementation to hold a reference to MediaKeys from the MediaKeySession (the opposite of the current implementation).
&gt; 
&gt; More likely, this will need some isReachable hacks, but even so, this has the potential to cause some circular-reference leaks.
&gt; 
&gt; At what point should an MediaKeysSession be collectable?  Only if it has no keys (because none have been added or the session has been close()d) ?

The DOM object MKS should be collectable whenever there are no references to it, just like any other object. I suppose the CDM implementation gets to decide when it needs it, which means it may not need it if no keys have been added. The CDM can also decide when after close() it no longer needs it. When the MKS has been collected and the CDM no longer needs the session, the underlying object (CDMSession?) can be destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725147</commentid>
    <comment_count>33</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-09-20 21:47:10 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (In reply to comment #29)
&gt; &gt; &gt;&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp:58
&gt; &gt; &gt;&gt; +    close();
&gt; &gt; &gt; 
&gt; &gt; &gt; I don&apos;t think this is correct. A CDM can still use a session&apos;s keys even if no representation of the session exists in the DOM.
&gt; &gt; &gt; close() is intended to give the application explicit control.
&gt; &gt; &gt; 
&gt; &gt; &gt; close() and &quot;noMoreDomReferences()&quot; (i.e. dereferencing the new CDMSession) are different messages. If the latter is received after the former, the session can be erased. Otherwise, the session must remain in the CDM implementation.
&gt; &gt; 
&gt; &gt; Except, at this point, the CDMSession&apos;s lifetime is owned by the MediaKeySession.  If it&apos;s deleted, the CDMSession will be deleted soon after.  I thought it would make sense to release all the keys when the CDM was deleted, but we could also just make this the responsibility of the CDMSession itself.
&gt; 
&gt; The intent of the spec is that the MediaKeySession object in the DOM does not represent the lifetime of a session (and its keys). Technically, an app could call addKey() then release all references to the MKS. The MKS wouldn&apos;t exist in the DOM, but the session (or at least its keys) would still exist in the CDM.

But that&apos;s only true if the MediaKeys object has been added to a HTMLMediaElement.  Which therefore references the MediaKeys object, which in turn references the MediaKeySession object.  

If the MediaSession is owned by a MediaKeys object which is has not been added to a HTMLMediaElement, and no reference to that MediaKeys or MediaSession exists in JS, I would expect all the objects, including the CDM and CDMSession, to be GCd and deleted.

&gt; Maybe this is weird and DOM references _should_ manage lifetime (I can think of a couple problems with this) or the MediaKeys (aka CDM) should hold a reference until close() is called, at which time it releases the reference and the MKS will only exist as long as there is a reference in the DOM. The latter seems harder to get right with respect to CDM implementations (for example, the CDM firing a key release message).

That&apos;s an easily solved problem; TextTrackCue, for instance, has this same problem, and works around it by fending off GC while a message is being delivered.

&gt; &gt; &gt;&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.h:47
&gt; &gt; &gt;&gt; +class MediaKeySession : public RefCounted&lt;MediaKeySession&gt;, public EventTarget, public ContextDestructionObserver {
&gt; &gt; &gt; 
&gt; &gt; &gt; We need to figure out some lifetime issues in the DOM. What should happen if there are no references to a MediaKeys object in the DOM but there is still a reference to one of its MediaKeySession objects? Does the former disappear from the DOM but is kept alive internally? I think that might require a change to the implementation to hold a reference to MediaKeys from the MediaKeySession (the opposite of the current implementation).
&gt; &gt; 
&gt; &gt; More likely, this will need some isReachable hacks, but even so, this has the potential to cause some circular-reference leaks.
&gt; &gt; 
&gt; &gt; At what point should an MediaKeysSession be collectable?  Only if it has no keys (because none have been added or the session has been close()d) ?
&gt; 
&gt; The DOM object MKS should be collectable whenever there are no references to it, just like any other object. I suppose the CDM implementation gets to decide when it needs it, which means it may not need it if no keys have been added. The CDM can also decide when after close() it no longer needs it. When the MKS has been collected and the CDM no longer needs the session, the underlying object (CDMSession?) can be destroyed.

Well, since the CDM is an entirely opaque object, it can do whatever it wants.  The CDMSession could just be some flyweight proxy whose destruction simply drops the refcount of the underlying session object.  But this is all very handwavy.  I still believe the lifetime of the CDM and the CDMSessions created by it should be tied to the lifetiemes of the MediaKeys and MediaKeySession objects respectively.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725148</commentid>
    <comment_count>34</comment_count>
    <who name="David Dorwin">ddorwin</who>
    <bug_when>2012-09-20 21:49:32 -0700</bug_when>
    <thetext>Let me know if you want to discuss this more in depth offline.

(In reply to comment #31)
&gt; Okay, how&apos;s this for an idea:
&gt; 
&gt; - a MediaKeys object is considered &quot;active&quot; when it has at least one &quot;active&quot; session
Do we need to define this? The CDM&apos;s lifetime is the same as MediaKeys&apos;, which includes any DOM variables AND video.mediaKeys.
I don&apos;t think we need to define anything related to having a session.

&gt; - a MediaKeySession object  is considered &quot;active&quot; when it has at least one outstanding keyRequest, or has had a key added, and has not been &quot;closed&quot;.
Per the comments in Comment #32, I think it is more nuanced than this. This is a decent approximation but not true for all CDMs/key systems.

&gt; - Once a MediaKeySession has been &quot;closed&quot;, it can no longer generate key requests or add keys.  Adding a key will throw an INVALID_STATE_ERR exception.
generate key request is a one-time thing that occurs at construction. After that, apps and the CDM can communicate via addKey() and keymessage, respectively.

In the key release case, a keymessage is fired at the session object (assuming there are any references and/or attached listeners()), and the application can acknowledge this message by calling addKey(). (FYI, addKey() can be used for things other than adding keys and will probably get a new name.)

Related question: Does a listener add a reference to ensure the object is not destroyed even if all other references are destroyed?
&gt; 
&gt; This would guarantee the following:
&gt; 
&gt; - The MediaKeys object would not get GCd while there were active keys in any of its MediaKeySession objects
As mentioned above, I think basic references will work for MediaKeys. It&apos;s only MediaKeySessions that are complicated.

&gt; - Once all a MediaKeys&apos; session object were closed, it would be GCd.
Same as above.

&gt; - If ever a MediaKeySession object outlived its MediaKeys, it could no longer add keys or create key requests. (Because that session must have been closed.)
This is an interesting scenario. Maybe we should throw a INVALID_STATE_ERR. Alternatively, MediaKeySession can hold a reference to MediaKeys to ensure this can never happen.

Another interesting case would be if the media element was destroyed but a MediaKeys reference still existed in the DOM. I guess that should be fine since the CDM should not talk to the MediaPlayer (communication should only be the other way). Maybe that&apos;s worth including in the spec.

&gt; - Ownership would still flow normally (MediaKeys would still own MediaKeySessions &amp; CDMs, MediaKeySessions would still own CDMSessions), without needing upstream ownership.

Does MediaKeys need a reference to MediaKeySession or can we leave this to the CDM? Currently, the spec does not specify a relationship in MediaKeys. Thus, reversing the reference should work fine.

(If we ever do add such a relationship to the spec, we can have circular references but have something like MKS::close() remove the reference from MK to MKS.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824693</commentid>
    <comment_count>35</comment_count>
      <attachid>186446</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-02-04 13:21:49 -0800</bug_when>
    <thetext>Created attachment 186446
Patch

Rebased against current ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824738</commentid>
    <comment_count>36</comment_count>
      <attachid>186446</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-04 14:02:27 -0800</bug_when>
    <thetext>Comment on attachment 186446
Patch

Attachment 186446 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16376314</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824793</commentid>
    <comment_count>37</comment_count>
      <attachid>186446</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-04 14:53:53 -0800</bug_when>
    <thetext>Comment on attachment 186446
Patch

Attachment 186446 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16374346</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824849</commentid>
    <comment_count>38</comment_count>
      <attachid>186485</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-02-04 15:55:02 -0800</bug_when>
    <thetext>Created attachment 186485
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824922</commentid>
    <comment_count>39</comment_count>
      <attachid>186485</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-04 17:12:49 -0800</bug_when>
    <thetext>Comment on attachment 186485
Patch

Attachment 186485 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16366510

New failing tests:
media/encrypted-media/encrypted-media-v2-syntax.html
media/encrypted-media/encrypted-media-constants.html
fast/events/constructors/media-key-event-constructor.html
media/encrypted-media/encrypted-media-v2-events.html
media/encrypted-media/encrypted-media-can-play-type.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825016</commentid>
    <comment_count>40</comment_count>
      <attachid>186485</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-04 18:54:36 -0800</bug_when>
    <thetext>Comment on attachment 186485
Patch

Attachment 186485 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16367494

New failing tests:
media/encrypted-media/encrypted-media-v2-syntax.html
media/encrypted-media/encrypted-media-constants.html
fast/events/constructors/media-key-event-constructor.html
media/encrypted-media/encrypted-media-v2-events.html
media/encrypted-media/encrypted-media-can-play-type.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825049</commentid>
    <comment_count>41</comment_count>
      <attachid>186485</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-04 19:54:33 -0800</bug_when>
    <thetext>Comment on attachment 186485
Patch

Attachment 186485 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16367528

New failing tests:
media/encrypted-media/encrypted-media-v2-syntax.html
media/encrypted-media/encrypted-media-v2-events.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825093</commentid>
    <comment_count>42</comment_count>
      <attachid>186485</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-04 21:06:19 -0800</bug_when>
    <thetext>Comment on attachment 186485
Patch

Attachment 186485 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16377412

New failing tests:
media/encrypted-media/encrypted-media-v2-syntax.html
media/encrypted-media/encrypted-media-v2-events.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826922</commentid>
    <comment_count>43</comment_count>
      <attachid>186957</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-02-06 17:45:05 -0800</bug_when>
    <thetext>Created attachment 186957
Patch

Address build errors on mac bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826996</commentid>
    <comment_count>44</comment_count>
      <attachid>186957</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-06 19:02:19 -0800</bug_when>
    <thetext>Comment on attachment 186957
Patch

Attachment 186957 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16409001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827007</commentid>
    <comment_count>45</comment_count>
      <attachid>186957</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-06 19:36:47 -0800</bug_when>
    <thetext>Comment on attachment 186957
Patch

Attachment 186957 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16415025</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827025</commentid>
    <comment_count>46</comment_count>
      <attachid>186957</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-06 20:16:00 -0800</bug_when>
    <thetext>Comment on attachment 186957
Patch

Attachment 186957 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16404035</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827438</commentid>
    <comment_count>47</comment_count>
      <attachid>186957</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 06:37:14 -0800</bug_when>
    <thetext>Comment on attachment 186957
Patch

Attachment 186957 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16418143

New failing tests:
media/encrypted-media/encrypted-media-v2-syntax.html
media/encrypted-media/encrypted-media-v2-events.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827515</commentid>
    <comment_count>48</comment_count>
      <attachid>186957</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 07:51:17 -0800</bug_when>
    <thetext>Comment on attachment 186957
Patch

Attachment 186957 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16429167

New failing tests:
media/encrypted-media/encrypted-media-v2-syntax.html
media/encrypted-media/encrypted-media-v2-events.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828693</commentid>
    <comment_count>49</comment_count>
      <attachid>187340</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-02-08 11:31:35 -0800</bug_when>
    <thetext>Created attachment 187340
Patch

(Finally) fix build issues on 10.8 Mac build bots. Skip new tests on Chromium (where v2 is not yet enabled).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828704</commentid>
    <comment_count>50</comment_count>
      <attachid>187344</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-02-08 11:47:17 -0800</bug_when>
    <thetext>Created attachment 187344
Patch

Rebased against current ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828723</commentid>
    <comment_count>51</comment_count>
      <attachid>187344</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-08 12:53:33 -0800</bug_when>
    <thetext>Comment on attachment 187344
Patch

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

The WebCore ChangeLog entry is brilliant, the best ever in a patch I have reviewed. thanks!

&gt; Source/WebCore/ChangeLog:73
&gt; +        (WebCore::MediaKeySession::addKeyTimerFired): Follow the steps in the spec; provide the key data t othe CDM.

Nit: &quot;key data t othe CDM&quot; -&gt; &quot;key data to the CDM&quot;

&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:2
&gt; + * Copyright (C) 2012 Apple Inc. All rights reserved.

2012 is so last year.

&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:27
&gt; +#include &quot;CDM.h&quot;

Nit: this can be inside of the ENCRYPTED_MEDIA_V2 guard.

&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:58
&gt; +        // TODO: initialize specific UA CDMs.

Nit: &quot;TODO&quot; -&gt; &quot;FIXME&quot;, with bug number(s) if possible.

&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:76
&gt; +    Vector&lt;CDMFactory*&gt;&amp; cdmFactories = installedCDMFactories();
&gt; +    for (size_t i = 0; i &lt; cdmFactories.size(); ++i) {
&gt; +        if (cdmFactories[i]-&gt;supportsKeySystem(keySystem))
&gt; +            return true;
&gt; +    }
&gt; +    return false;

Couldn&apos;t this be reduced to &quot;return CDMFactoryForKeySystem(keySystem)&quot; ?

&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:79
&gt; +static CDMFactory* CDMFactoryForKeySystem(const String&amp; keySystem)

Does returned factory need to be mutable?

&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:109
&gt; +    return m_private-&gt;supportsMIMEType(mimeType);

Won&apos;t m_private be NULL if it was initialized with an unsupported key system?

&gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:114
&gt; +    return m_private-&gt;createSession();

Ditto.

&gt; Source/WebCore/Modules/encryptedmedia/CDM.h:2
&gt; + * Copyright (C) 2012 Apple Inc. All rights reserved.

2013.

&gt; Source/WebCore/Modules/encryptedmedia/CDM.h:44
&gt; +class MediaKeyError;
&gt; +class MediaKeySession;
&gt; +class MediaKeys;
&gt; +
&gt; +class CDM;
&gt; +class CDMPrivateInterface;
&gt; +class CDMSession;

Nit: these could be alphabetized.

&gt; Source/WebCore/Modules/encryptedmedia/CDMPrivate.h:2
&gt; + * Copyright (C) 2012 Apple Inc. All rights reserved.

2013.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeyMessageEvent.h:57
&gt; +    virtual const AtomicString&amp; interfaceName() const;

OVERRIDE.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeyNeededEvent.h:56
&gt; +    virtual const AtomicString&amp; interfaceName() const;

OVERRIDE.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp:2
&gt; + * Copyright (C) 2012 Apple Inc. All rights reserved.

2013.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.h:2
&gt; + * Copyright (C) 2012 Apple Inc. All rights reserved.

2013.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.idl:2
&gt; + * Copyright (C) 2012 Apple Inc.  All rights reserved.

2013.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp:2
&gt; + * Copyright (C) 2012 Apple Inc. All rights reserved.

2013.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeys.h:2
&gt; + * Copyright (C) 2012 Apple Inc. All rights reserved.

2013.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeys.idl:2
&gt; + * Copyright (C) 2012 Apple Inc.  All rights reserved.

2013.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:1971
&gt;  }

It is probably worth logging a &quot;deprecated!&quot; warning to console the first time this is used in a build which defines ENCRYPTED_MEDIA_V2.

&gt; Source/WebCore/html/HTMLMediaElement.h:454
&gt;      virtual bool mediaPlayerKeyNeeded(MediaPlayer*, const String&amp; keySystem, const String&amp; sessionId, const unsigned char* initData, unsigned initDataLength) OVERRIDE;

OVERRIDE.

&gt; Source/WebCore/html/HTMLMediaElement.h:458
&gt; +    virtual void mediaPlayerKeyNeeded(MediaPlayer*, Uint8Array*);

OVERRIDE.

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:1082
&gt;  }
&gt;  #endif

Log a &quot;deprecated!&quot; warning to console the first time this is used in a build which defines ENCRYPTED_MEDIA_V2.

&gt; Source/WebCore/testing/MockCDM.cpp:2
&gt; + * Copyright (C) 2012 Apple Inc. All rights reserved.

2013.

&gt; Source/WebCore/testing/MockCDM.h:2
&gt; + * Copyright (C) 2012 Apple Inc. All rights reserved.

2013.

&gt; LayoutTests/media/encrypted-media/encrypted-media-v2-events.html:11
&gt; +                for(var i=0,j=str.length;i&lt;j;++i){
&gt; +                  arr[i]=str.charCodeAt(i);

Nit: braces aren&apos;t needed.

&gt; LayoutTests/media/encrypted-media/encrypted-media-v2-syntax.html:12
&gt; +                for(var i=0,j=str.length;i&lt;j;++i){
&gt; +                  arr[i]=str.charCodeAt(i);
&gt; +                }

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828789</commentid>
    <comment_count>52</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-02-08 15:15:45 -0800</bug_when>
    <thetext>(In reply to comment #51)
&gt; (From update of attachment 187344 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=187344&amp;action=review
&gt; 
&gt; The WebCore ChangeLog entry is brilliant, the best ever in a patch I have reviewed. thanks!

Thanks!

&gt; &gt; Source/WebCore/ChangeLog:73
&gt; &gt; +        (WebCore::MediaKeySession::addKeyTimerFired): Follow the steps in the spec; provide the key data t othe CDM.
&gt; 
&gt; Nit: &quot;key data t othe CDM&quot; -&gt; &quot;key data to the CDM&quot;

Whoops, fixed.

&gt; &gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:2
&gt; &gt; + * Copyright (C) 2012 Apple Inc. All rights reserved.
&gt; 
&gt; 2012 is so last year.

Yep. #hipsterglasses

Changed here and everywhere else.

&gt; &gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:27
&gt; &gt; +#include &quot;CDM.h&quot;
&gt; 
&gt; Nit: this can be inside of the ENCRYPTED_MEDIA_V2 guard.

Changed.

&gt; &gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:58
&gt; &gt; +        // TODO: initialize specific UA CDMs.
&gt; 
&gt; Nit: &quot;TODO&quot; -&gt; &quot;FIXME&quot;, with bug number(s) if possible.

Sure thing. 

&gt; &gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:76
&gt; &gt; +    Vector&lt;CDMFactory*&gt;&amp; cdmFactories = installedCDMFactories();
&gt; &gt; +    for (size_t i = 0; i &lt; cdmFactories.size(); ++i) {
&gt; &gt; +        if (cdmFactories[i]-&gt;supportsKeySystem(keySystem))
&gt; &gt; +            return true;
&gt; &gt; +    }
&gt; &gt; +    return false;
&gt; 
&gt; Couldn&apos;t this be reduced to &quot;return CDMFactoryForKeySystem(keySystem)&quot; ?

Sure!

&gt; &gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:79
&gt; &gt; +static CDMFactory* CDMFactoryForKeySystem(const String&amp; keySystem)
&gt; 
&gt; Does returned factory need to be mutable?

Yep, since we&apos;re assigning it to a non-const pointer.

&gt; &gt; Source/WebCore/Modules/encryptedmedia/CDM.cpp:109
&gt; &gt; +    return m_private-&gt;supportsMIMEType(mimeType);
&gt; 
&gt; Won&apos;t m_private be NULL if it was initialized with an unsupported key system?

I don&apos;t think so; that case would be caught in CDM::create(), where it checks to see if the key system is supported before actually creating the CDM object.

Basically, if we got to this point, the key system is supported.

&gt; &gt; Source/WebCore/Modules/encryptedmedia/CDM.h:44
&gt; &gt; +class MediaKeyError;
&gt; &gt; +class MediaKeySession;
&gt; &gt; +class MediaKeys;
&gt; &gt; +
&gt; &gt; +class CDM;
&gt; &gt; +class CDMPrivateInterface;
&gt; &gt; +class CDMSession;
&gt; 
&gt; Nit: these could be alphabetized.

Sorted.

&gt; &gt; Source/WebCore/Modules/encryptedmedia/MediaKeyMessageEvent.h:57
&gt; &gt; +    virtual const AtomicString&amp; interfaceName() const;
&gt; 
&gt; OVERRIDE.

Overridden.

&gt; &gt; Source/WebCore/Modules/encryptedmedia/MediaKeyNeededEvent.h:56
&gt; &gt; +    virtual const AtomicString&amp; interfaceName() const;
&gt; 
&gt; OVERRIDE.

Ditto.

&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:1971
&gt; &gt;  }
&gt; 
&gt; It is probably worth logging a &quot;deprecated!&quot; warning to console the first time this is used in a build which defines ENCRYPTED_MEDIA_V2.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.h:454
&gt; &gt;      virtual bool mediaPlayerKeyNeeded(MediaPlayer*, const String&amp; keySystem, const String&amp; sessionId, const unsigned char* initData, unsigned initDataLength) OVERRIDE;
&gt; 
&gt; OVERRIDE.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.h:458
&gt; &gt; +    virtual void mediaPlayerKeyNeeded(MediaPlayer*, Uint8Array*);
&gt; 
&gt; OVERRIDE.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:1082
&gt; &gt;  }
&gt; &gt;  #endif
&gt; 
&gt; Log a &quot;deprecated!&quot; warning to console the first time this is used in a build which defines ENCRYPTED_MEDIA_V2.

Sure, but I&apos;ll add the message in webkitGenerateKey() and webkitAddKey().

&gt; &gt; LayoutTests/media/encrypted-media/encrypted-media-v2-events.html:11
&gt; &gt; +                for(var i=0,j=str.length;i&lt;j;++i){
&gt; &gt; +                  arr[i]=str.charCodeAt(i);
&gt; 
&gt; Nit: braces aren&apos;t needed.

Removed.

&gt; &gt; LayoutTests/media/encrypted-media/encrypted-media-v2-syntax.html:12
&gt; &gt; +                for(var i=0,j=str.length;i&lt;j;++i){
&gt; &gt; +                  arr[i]=str.charCodeAt(i);
&gt; &gt; +                }
&gt; 
&gt; Ditto.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828793</commentid>
    <comment_count>53</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-02-08 15:33:07 -0800</bug_when>
    <thetext>Committed r142327: &lt;http://trac.webkit.org/changeset/142327&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164609</attachid>
            <date>2012-09-18 12:58:09 -0700</date>
            <delta_ts>2012-09-18 16:44:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97037-20120918125736.patch</filename>
            <type>text/plain</type>
            <size>136593</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXgg
ZWMzNWNmNjczZjRhMGZkMjEyN2NmNTU1Y2Y0ZWM3MDI3OGMzZDY2Ny4uYzE4OWQyNmZlMWRmNjY1
M2RiNDc4ZWM0OWE1M2UyOGFlM2RmNzQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAt
NTcsNiArNTcsMTEgQEAgRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCA9IEVOQUJMRV9ERVRBSUxTX0VM
RU1FTlQ7CiBFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OID0gOwogRU5BQkxFX0RJQUxPR19FTEVN
RU5UID0gOwogRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQgPSA7CitFTkFCTEVfRU5DUllQVEVEX01F
RElBID0gJChFTkFCTEVfRU5DUllQVEVEX01FRElBXyQoUkVBTF9QTEFURk9STV9OQU1FKSk7CitF
TkFCTEVfRU5DUllQVEVEX01FRElBX21hY29zeCA9ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9t
YWNvc3hfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOworRU5BQkxFX0VOQ1JZUFRF
RF9NRURJQV9tYWNvc3hfMTA3MCA9IDsKK0VOQUJMRV9FTkNSWVBURURfTUVESUFfbWFjb3N4XzEw
ODAgPSA7CitFTkFCTEVfRU5DUllQVEVEX01FRElBX21hY29zeF8xMDkwID0gRU5BQkxFX0VOQ1JZ
UFRFRF9NRURJQTsKIEVOQUJMRV9GSUxFX1NZU1RFTSA9IDsKIEVOQUJMRV9GSUxURVJTID0gJChF
TkFCTEVfRklMVEVSU18kKFJFQUxfUExBVEZPUk1fTkFNRSkpOwogRU5BQkxFX0ZJTFRFUlNfbWFj
b3N4ID0gRU5BQkxFX0ZJTFRFUlM7CkBAIC0xNDAsNCArMTQ1LDQgQEAgRU5BQkxFX1dJREdFVF9S
RUdJT05fbWFjb3N4ID0gRU5BQkxFX1dJREdFVF9SRUdJT047CiBFTkFCTEVfV09SS0VSUyA9IEVO
QUJMRV9XT1JLRVJTOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJ
TkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5W
QVMpICQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5O
RUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFU
SU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfRVhDTFVTSU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMp
ICQoRU5BQkxFX0NTU19ISUVSQVJDSElFUykgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9O
KSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQo
RU5BQkxFX0NTU19TSEFERVJTKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NT
U19TVElDS1lfUE9TSVRJT04pICQoRU5BQkxFX0NTU19WQVJJQUJMRVMpICQoRU5BQkxFX0NTUzNf
VEVYVF9ERUNPUkFUSU9OKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxF
X0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9E
QVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RF
VklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElBTE9HX0VMRU1FTlQpICQoRU5BQkxFX0RJUkVD
VE9SWV9VUExPQUQpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVO
QUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJ
T04pICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVO
QUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxF
X0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lO
UFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NS
SVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFC
TEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMp
ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJTktfUFJFUkVOREVSKSAkKEVOQUJM
RV9NQVRITUwpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElD
UykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01JQ1JP
REFUQSkgJChFTkFCTEVfTVVUQVRJT05fT0JTRVJWRVJTKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09O
VEVOVF9VVElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklM
SVRZX0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUVVPVEEpICQoRU5B
QkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQo
RU5BQkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUUxf
REFUQUJBU0UpICQoRU5BQkxFX1NUWUxFX1NDT1BFRCkgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9T
VkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVYVF9B
VVRPU0laSU5HKSAkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWSkgJChFTkFCTEVfVE9V
Q0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VTkRPX01BTkFHRVIpICQoRU5BQkxFX1ZJREVPKSAk
KEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykg
JChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dJREdF
VF9SRUdJT04pICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJ
TkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5W
QVMpICQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5O
RUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFU
SU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfRVhDTFVTSU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMp
ICQoRU5BQkxFX0NTU19ISUVSQVJDSElFUykgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9O
KSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQo
RU5BQkxFX0NTU19TSEFERVJTKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NT
U19TVElDS1lfUE9TSVRJT04pICQoRU5BQkxFX0NTU19WQVJJQUJMRVMpICQoRU5BQkxFX0NTUzNf
VEVYVF9ERUNPUkFUSU9OKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxF
X0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9E
QVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RF
VklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElBTE9HX0VMRU1FTlQpICQoRU5BQkxFX0RJUkVD
VE9SWV9VUExPQUQpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRklMRV9TWVNU
RU0pICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9H
QU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKSAk
KEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lGUkFNRV9TRUFNTEVTUykgJChFTkFCTEVf
SU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVf
REFURVRJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5Q
VVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX1dFRUspICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX0xFR0FDWV9D
U1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFC
TEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFC
TEVfTElOS19QUkVSRU5ERVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfU09VUkNF
KSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVO
QUJMRV9NSFRNTCkgJChFTkFCTEVfTUlDUk9EQVRBKSAkKEVOQUJMRV9NVVRBVElPTl9PQlNFUlZF
UlMpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OT1RJRklDQVRJ
T05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19FTEVN
RU5UKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQo
RU5BQkxFX1NDUklQVEVEX1NQRUVDSCkgJChFTkFCTEVfU0hBRE9XX0RPTSkgJChFTkFCTEVfU0hB
UkVEX1dPUktFUlMpICQoRU5BQkxFX1NRTF9EQVRBQkFTRSkgJChFTkFCTEVfU1RZTEVfU0NPUEVE
KSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVf
U1ZHX0ZPTlRTKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RFWFRfTk9USUZJ
Q0FUSU9OU19PTkxZKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VORE9f
TUFOQUdFUikgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9X
RUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVf
V0VCX1RJTUlORykgJChFTkFCTEVfV0lER0VUX1JFR0lPTikgJChFTkFCTEVfV09SS0VSUykgJChF
TkFCTEVfWFNMVCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCAwYmU0YmIwN2RjMjhmYzkxMTYyZWQzMDY1YWNi
MTUyMDlmMjFkM2UyLi44ZmEyMzQ2MWU4ZmZmN2Y0YjYxN2FhYjNkN2U0ODFlM2E2NTMzNGE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgKQEAgLTExNDgsNiArMTE0OCwxMCBAQAogI2RlZmluZSBXVEZfVVNFX0NPUkVN
RURJQSAxCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisjZGVmaW5lIEVOQUJMRV9F
TkNSWVBURURfTUVESUEgMQorI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oRUZMKSB8fCAoUExBVEZPUk0oV0lOKSAmJiAhT1MoV0lOQ0UpICYm
ICFQTEFURk9STShXSU5fQ0FJUk8pKSB8fCBQTEFURk9STShCTEFDS0JFUlJZKQogI2RlZmluZSBX
VEZfVVNFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJTUVSIDEKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcg
Yi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpp
bmRleCA0NDM5M2I5MGUxZTc0ZWQ2NTlhMWY2NjRjNDczY2Y3YmU3ZjQ5NjMzLi41MThhOTA1N2E5
NWE4N2M5N2NkZGJlMTZiZWMyMGFiZmRiYThlNDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNTgsNiArNTgs
MTEgQEAgRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCA9IEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQ7CiBF
TkFCTEVfREVWSUNFX09SSUVOVEFUSU9OID0gOwogRU5BQkxFX0RJQUxPR19FTEVNRU5UID0gOwog
RU5BQkxFX0RJUkVDVE9SWV9VUExPQUQgPSA7CitFTkFCTEVfRU5DUllQVEVEX01FRElBID0gJChF
TkFCTEVfRU5DUllQVEVEX01FRElBXyQoUkVBTF9QTEFURk9STV9OQU1FKSk7CitFTkFCTEVfRU5D
UllQVEVEX01FRElBX21hY29zeCA9ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9tYWNvc3hfJChU
QVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9t
YWNvc3hfMTA3MCA9IDsKK0VOQUJMRV9FTkNSWVBURURfTUVESUFfbWFjb3N4XzEwODAgPSA7CitF
TkFCTEVfRU5DUllQVEVEX01FRElBX21hY29zeF8xMDkwID0gRU5BQkxFX0VOQ1JZUFRFRF9NRURJ
QTsKIEVOQUJMRV9GSUxFX1NZU1RFTSA9IDsKIEVOQUJMRV9GSUxURVJTID0gJChFTkFCTEVfRklM
VEVSU18kKFJFQUxfUExBVEZPUk1fTkFNRSkpOwogRU5BQkxFX0ZJTFRFUlNfbWFjb3N4ID0gRU5B
QkxFX0ZJTFRFUlM7CkBAIC0xNDEsNCArMTQ2LDQgQEAgRU5BQkxFX1dJREdFVF9SRUdJT05fbWFj
b3N4ID0gRU5BQkxFX1dJREdFVF9SRUdJT047CiBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JL
RVJTOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChF
TkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5B
QkxFX0FOSU1BVElPTl9BUEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FH
SU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFL
KSAkKEVOQUJMRV9DU1NfRVhDTFVTSU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxF
X0NTU19ISUVSQVJDSElFUykgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NT
U19TSEFERVJTKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19TVElDS1lf
UE9TSVRJT04pICQoRU5BQkxFX0NTU19WQVJJQUJMRVMpICQoRU5BQkxFX0NTUzNfVEVYVF9ERUNP
UkFUSU9OKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FS
RF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5T
RkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklF
TlRBVElPTikgJChFTkFCTEVfRElBTE9HX0VMRU1FTlQpICQoRU5BQkxFX0RJUkVDVE9SWV9VUExP
QUQpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GVUxM
U0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5B
QkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJB
TUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQ
RUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRF
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVU
SU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVf
VElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVH
R0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZ
X05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxF
X0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJTktfUFJFUkVOREVSKSAkKEVOQUJMRV9NQVRITUwp
ICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFC
TEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01JQ1JPREFUQSkgJChF
TkFCTEVfTVVUQVRJT05fT0JTRVJWRVJTKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElM
UykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkg
JChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVF
U1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NI
QURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUUxfREFUQUJBU0Up
ICQoRU5BQkxFX1NUWUxFX1NDT1BFRCkgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfRE9NX09C
SkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5H
KSAkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWSkgJChFTkFCTEVfVE9VQ0hfSUNPTl9M
T0FESU5HKSAkKEVOQUJMRV9VTkRPX01BTkFHRVIpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9W
SURFT19UUkFDSykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVf
V0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dJREdFVF9SRUdJT04p
ICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChF
TkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5B
QkxFX0FOSU1BVElPTl9BUEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FH
SU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFL
KSAkKEVOQUJMRV9DU1NfRVhDTFVTSU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxF
X0NTU19ISUVSQVJDSElFUykgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NT
U19TSEFERVJTKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19TVElDS1lf
UE9TSVRJT04pICQoRU5BQkxFX0NTU19WQVJJQUJMRVMpICQoRU5BQkxFX0NTUzNfVEVYVF9ERUNP
UkFUSU9OKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FS
RF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5T
RkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklF
TlRBVElPTikgJChFTkFCTEVfRElBTE9HX0VMRU1FTlQpICQoRU5BQkxFX0RJUkVDVE9SWV9VUExP
QUQpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5B
QkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAk
KEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKSAkKEVOQUJMRV9J
Q09OREFUQUJBU0UpICQoRU5BQkxFX0lGUkFNRV9TRUFNTEVTUykgJChFTkFCTEVfSU5ERVhFRF9E
QVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9S
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUUp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9N
T05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUsp
ICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9S
X1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZ
X1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTElOS19Q
UkVSRU5ERVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJM
RV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRN
TCkgJChFTkFCTEVfTUlDUk9EQVRBKSAkKEVOQUJMRV9NVVRBVElPTl9PQlNFUlZFUlMpICQoRU5B
QkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVO
QUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UKSAkKEVO
QUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1ND
UklQVEVEX1NQRUVDSCkgJChFTkFCTEVfU0hBRE9XX0RPTSkgJChFTkFCTEVfU0hBUkVEX1dPUktF
UlMpICQoRU5BQkxFX1NRTF9EQVRBQkFTRSkgJChFTkFCTEVfU1RZTEVfU0NPUEVEKSAkKEVOQUJM
RV9TVkcpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRT
KSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19P
TkxZKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VORE9fTUFOQUdFUikg
JChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9XRUJHTCkgJChF
TkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlO
RykgJChFTkFCTEVfV0lER0VUX1JFR0lPTikgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFNM
VCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkMWYwOTcyY2QxNzk4OTJmYzU0
Yjg5ZTU2YWVjMWVlZTNiZTMzY2Q1Li43NGYzYzZjNjEyYmRkNTdmNGNjMWJiZWJkMTQzM2EyNzcy
Mzc1YjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI4LDYgKzI4LDcgQEAK
IAogVlBBVEggPSBcCiAgICAgJChXZWJDb3JlKSBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbSBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvaW5k
ZXhlZGRiIFwKQEAgLTYxLDYgKzYyLDExIEBAIFZQQVRIID0gXAogIwogCiBCSU5ESU5HX0lETFMg
PSBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5RXJyb3Iu
aWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNz
YWdlRXZlbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlOZWVkZWRFdmVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRE9NRmlsZVN5c3RlbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVt
L0RPTUZpbGVTeXN0ZW1TeW5jLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRE9NV2luZG93RmlsZVN5c3RlbS5pZGwgXApAQCAtODQ4LDYgKzg1NCwxMCBAQCBpZmVxICgk
KGZpbmRzdHJpbmcgRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCwkKEZFQVRVUkVfREVGSU5FUykpLCBF
TkFCTEVfREVUQUlMU19FTAogICAgIEhUTUxfRkxBR1MgOj0gJChIVE1MX0ZMQUdTKSBFTkFCTEVf
REVUQUlMU19FTEVNRU5UPTEKIGVuZGlmCiAKK2lmZXEgKCQoZmluZHN0cmluZyBFTkFCTEVfRU5D
UllQVEVEX01FRElBLCQoRkVBVFVSRV9ERUZJTkVTKSksIEVOQUJMRV9FTkNSWVBURURfTUVESUEp
CisJSFRNTF9GTEFHUyA6PSAkKEhUTUxfRkxBR1MpIEVOQUJMRV9FTkNSWVBURURfTUVESUE9MQor
ZW5kaWYKKwogaWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9NRVRFUl9FTEVNRU5ULCQoRkVBVFVS
RV9ERUZJTkVTKSksIEVOQUJMRV9NRVRFUl9FTEVNRU5UKQogICAgIEhUTUxfRkxBR1MgOj0gJChI
VE1MX0ZMQUdTKSBFTkFCTEVfTUVURVJfRUxFTUVOVD0xCiBlbmRpZgpAQCAtOTY1LDYgKzk3NSw3
IEBAIHByZXByb2Nlc3NfaWRsc19zY3JpcHQgPSBwZXJsICQoYWRkcHJlZml4IC1JICQoV2ViQ29y
ZSkvLCAkKHNvcnQgJChkaXIgJCgxKSkpKSAkCiAKIElETF9JTkNMVURFUyA9IFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvYmF0dGVyeSBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbSBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL2dhbWVwYWQgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbiBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBjYTZkYWJjZjUxNDQyNjFiNDA5NzZk
NWEwOWFjYTcyYWUzYzg4NDU2Li4xYThkYmU3ZjE1ODAxNDQ3ZDNkYjk0MTE4OTk5MTJiZDdjZWVj
ZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE0ODAsNyArMTQ4MCw4IEBA
IGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvaHRtbC9NZWRpYUNvbnRyb2xsZXIu
aWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvTWVkaWFFcnJvci5pZGwgXAogCSQoV2ViQ29yZSkvaHRt
bC9NZWRpYUtleUVycm9yLmlkbCBcCi0JJChXZWJDb3JlKS9odG1sL01lZGlhS2V5RXZlbnQuaWRs
IFwKKwkkKFdlYkNvcmUpL2h0bWwvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaWRsIFwKKwkkKFdlYkNv
cmUpL2h0bWwvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9NaWNy
b0RhdGFJdGVtVmFsdWUuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvUmFkaW9Ob2RlTGlzdC5pZGwg
XAogCSQoV2ViQ29yZSkvaHRtbC9UZXh0TWV0cmljcy5pZGwgXApAQCAtMzQ0Nyw4ICszNDQ4LDEw
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3Vt
ZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhS2V5RXJyb3IuaCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtl
eUV2ZW50LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50LmggXAorCVNv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhS2V5TWVzc2FnZUV2ZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlO
ZWVkZWRFdmVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJz
ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCBc
CiAJU291cmNlL1dlYkNvcmUvaHRtbC9NaWNyb0RhdGFJdGVtVmFsdWUuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjhi
NmU1OTQ5M2M4NGQyNGJiYjA0ZjBjNGE0MzkxMTliOGY2MjFjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCkBAIC0wLDAgKzEs
MTM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNETS5o
IgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkNETVByaXZhdGUu
aCIKKyNpbmNsdWRlICJNZWRpYUtleUVycm9yLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlzLmgiCisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RydWN0IENETUZhY3RvcnkgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENETUZhY3Rvcnkp
OyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBDRE1GYWN0b3J5KENyZWF0
ZUNETSBjb25zdHJ1Y3RvciwgQ0RNU3VwcG9ydHNLZXlTeXRlbSBzdXBwb3J0c0tleVN5c3RlbSwg
Q0RNU3VwcG9ydHNLZXlTeXN0ZW1NSU1FVHlwZUFuZENvZGVjIHN1cHBvcnRzS2V5U3lzdGVtTUlN
RVR5cGVBbmRDb2RlYykKKyAgICAgICAgOiBjb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcikKKyAgICAg
ICAgLCBzdXBwb3J0c0tleVN5c3RlbShzdXBwb3J0c0tleVN5c3RlbSkKKyAgICAgICAgLCBzdXBw
b3J0c0tleVN5c3RlbU1JTUVUeXBlQW5kQ29kZWMoc3VwcG9ydHNLZXlTeXN0ZW1NSU1FVHlwZUFu
ZENvZGVjKQorICAgIHsKKyAgICB9CisKKyAgICBDcmVhdGVDRE0gY29uc3RydWN0b3I7CisgICAg
Q0RNU3VwcG9ydHNLZXlTeXRlbSBzdXBwb3J0c0tleVN5c3RlbTsKKyAgICBDRE1TdXBwb3J0c0tl
eVN5c3RlbU1JTUVUeXBlQW5kQ29kZWMgc3VwcG9ydHNLZXlTeXN0ZW1NSU1FVHlwZUFuZENvZGVj
OworfTsKKworc3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIGluc3RhbGxlZENETXMoKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPENETUZhY3RvcnkqPiwgY2RtcywgKCkpOwor
ICAgIHN0YXRpYyBib29sIHF1ZXJpZWRDRE1zID0gZmFsc2U7CisgICAgaWYgKCFxdWVyaWVkQ0RN
cykgeworICAgICAgICBxdWVyaWVkQ0RNcyA9IHRydWU7CisKKyAgICAgICAgLy8gVE9ETzogaW5p
dGlhbGl6ZSBzcGVjaWZpYyBVQSBDRE1zLgorICAgIH0KKworICAgIHJldHVybiBjZG1zOworfQor
Citib29sIENETTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7
CisgICAgVmVjdG9yPENETUZhY3RvcnkqPiYgY2RtcyA9IGluc3RhbGxlZENETXMoKTsKKyAgICBm
b3Ioc2l6ZV90IGkgPSAwOyBpIDwgY2Rtcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoY2Rt
c1tpXS0+c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQ0RNOjpzdXBwb3J0c0tl
eVN5c3RlbU1JTUVUeXBlQW5kQ29kZWMoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWMpCit7CisgICAgVmVjdG9yPENETUZh
Y3RvcnkqPiYgY2RtcyA9IGluc3RhbGxlZENETXMoKTsKKyAgICBmb3Ioc2l6ZV90IGkgPSAwOyBp
IDwgY2Rtcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoY2Rtc1tpXS0+c3VwcG9ydHNLZXlT
eXN0ZW1NSU1FVHlwZUFuZENvZGVjKGtleVN5c3RlbSwgbWltZVR5cGUsIGNvZGVjKSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRp
YyBDRE1GYWN0b3J5KiBiZXN0Q0RNRm9yS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
KQoreworICAgIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIGNkbXMgPSBpbnN0YWxsZWRDRE1zKCk7Cisg
ICAgZm9yKHNpemVfdCBpID0gMDsgaSA8IGNkbXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYg
KGNkbXNbaV0tPnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCisgICAgICAgICAgICByZXR1
cm4gY2Rtc1tpXTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK093blB0cjxDRE0+IENETTo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAgIGlmICghc3VwcG9ydHNLZXlT
eXN0ZW0oa2V5U3lzdGVtKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4g
YWRvcHRQdHIobmV3IENETShrZXlTeXN0ZW0pKTsKK30KKworQ0RNOjpDRE0oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0pCisgICAgOiBtX2tleVN5c3RlbShrZXlTeXN0ZW0pCit7CisgICAgbV9wcml2
YXRlID0gYmVzdENETUZvcktleVN5c3RlbShrZXlTeXN0ZW0pLT5jb25zdHJ1Y3Rvcih0aGlzKTsK
K30KKworQ0RNOjp+Q0RNKCkKK3sKK30KKworU3RyaW5nIENETTo6Z2VuZXJhdGVTZXNzaW9uSWQo
KQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmdlbmVyYXRlU2Vzc2lvbklkKCk7Cit9CisKK1Bh
c3NSZWZQdHI8VWludDhBcnJheT4gQ0RNOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBTdHJpbmcmIGRlZmF1bHRVUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVk
IGxvbmcmIHN5c3RlbUNvZGUpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2VuZXJhdGVLZXlS
ZXF1ZXN0KG1pbWVUeXBlLCBpbml0RGF0YSwgc2Vzc2lvbklkLCBkZWZhdWx0VVJMLCBlcnJvckNv
ZGUsIHN5c3RlbUNvZGUpOworfQorCitib29sIENETTo6YWRkS2V5Rm9yU2Vzc2lvbklkKFVpbnQ4
QXJyYXkqIGtleSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZlB0cjxVaW50OEFycmF5PiYg
bmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5
c3RlbUNvZGUpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YWRkS2V5Rm9yU2Vzc2lvbklkKGtl
eSwgc2Vzc2lvbklkLCBuZXh0TWVzc2FnZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKK30KKwor
dm9pZCBDRE06OmNsZWFyS2V5c0Zyb21TZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQp
Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y2xlYXJLZXlzRnJvbVNlc3Npb25JZChzZXNzaW9u
SWQpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk5OTQ1
MDcwOGQ5NWI4MzkxMDUzOTAxNmE1NDM0OTBiYjhiZjQzNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTAsMCArMSw3NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgQ0RNX2gKKyNkZWZpbmUgQ0RNX2gKKworI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBN
ZWRpYUtleUVycm9yOworY2xhc3MgTWVkaWFLZXlTZXNzaW9uOworY2xhc3MgTWVkaWFLZXlzOwor
CitjbGFzcyBDRE1Qcml2YXRlSW50ZXJmYWNlOworCitjbGFzcyBDRE0geworcHVibGljOgorICAg
IHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRp
YyBib29sIHN1cHBvcnRzS2V5U3lzdGVtTUlNRVR5cGVBbmRDb2RlYyhjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlYyk7Cisg
ICAgc3RhdGljIE93blB0cjxDRE0+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7Cisg
ICAgfkNETSgpOworCisgICAgU3RyaW5nIGdlbmVyYXRlU2Vzc2lvbklkKCk7CisgICAgUGFzc1Jl
ZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgVWludDhBcnJheSogaW5pdERhdGEsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBTdHJpbmcm
IGRlZmF1bHRVUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5
c3RlbUNvZGUpOworICAgIHZvaWQgY2xlYXJLZXlzRnJvbVNlc3Npb25JZChjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCk7CisgICAgYm9vbCBhZGRLZXlGb3JTZXNzaW9uSWQoVWludDhBcnJheSosIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBSZWZQdHI8VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCB1
bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNpZ25lZCBsb25nJiBzeXN0ZW1Db2RlKTsKKwor
ICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgeyByZXR1cm4gbV9rZXlTeXN0ZW07
IH0KKworcHJpdmF0ZToKKyAgICBDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOworCisgICAg
U3RyaW5nIG1fa2V5U3lzdGVtOworICAgIE93blB0cjxDRE1Qcml2YXRlSW50ZXJmYWNlPiBtX3By
aXZhdGU7Cit9OworCit0eXBlZGVmIFBhc3NPd25QdHI8Q0RNUHJpdmF0ZUludGVyZmFjZT4gKCpD
cmVhdGVDRE0pKENETSopOwordHlwZWRlZiBib29sICgqQ0RNU3VwcG9ydHNLZXlTeXRlbSkoY29u
c3QgU3RyaW5nJik7Cit0eXBlZGVmIGJvb2wgKCpDRE1TdXBwb3J0c0tleVN5c3RlbU1JTUVUeXBl
QW5kQ29kZWMpKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwor
dHlwZWRlZiB2b2lkICgqQ0RNUmVnaXN0cmFyKShDcmVhdGVDRE0sIENETVN1cHBvcnRzS2V5U3l0
ZW0pOworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjZW5kaWYg
Ly8gQ0RNX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9D
RE1Qcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmViNmY3MGIwYzkwZWVlMDIxOTVhNWExYjY4MWE4NWFh
NDExMDNmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIENETVByaXZhdGVfaAorI2RlZmluZSBDRE1Qcml2YXRlX2gKKworI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0RNUHJpdmF0ZUlu
dGVyZmFjZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0RNUHJpdmF0ZUludGVyZmFjZSk7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIENETVByaXZhdGVJbnRlcmZh
Y2UoKSB7IH0KKyAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlSW50ZXJmYWNlKCkgeyB9CisKKyAgICB2
aXJ0dWFsIFN0cmluZyBnZW5lcmF0ZVNlc3Npb25JZCgpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgU3RyaW5n
JiBkZWZhdWx0VVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNpZ25lZCBsb25nJiBz
eXN0ZW1Db2RlKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJLZXlzRnJvbVNlc3Npb25J
ZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhZGRLZXlG
b3JTZXNzaW9uSWQoVWludDhBcnJheSosIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBSZWZQdHI8
VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNp
Z25lZCBsb25nJiBzeXN0ZW1Db2RlKSA9IDA7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQorCisjZW5kaWYgLy8gQ0RNUHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhRWxlbWVudENETS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUVsZW1lbnRDRE0uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40NzhmNThlYWE4YmJmYzZkZTI3MzhhNGFlOWI1ZThmNTllNzM5Mjc2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUVsZW1lbnRDRE0uaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDRE1f
aAorI2RlZmluZSBDRE1faAorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhS2V5RXJyb3I7CitjbGFzcyBNZWRpYUtl
eVNlc3Npb247CitjbGFzcyBNZWRpYUtleXM7CisKK2NsYXNzIENETVByaXZhdGVJbnRlcmZhY2U7
CisKK2NsYXNzIENETSB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNLZXlTeXN0
ZW0oY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW1NSU1F
VHlwZUFuZENvZGVjKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjKTsKKyAgICBzdGF0aWMgT3duUHRyPENETT4gY3JlYXRl
KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKKyAgICB+Q0RNKCk7CisKKyAgICBTdHJpbmcgZ2Vu
ZXJhdGVTZXNzaW9uSWQoKTsKKyAgICBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5
UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgTWVk
aWFLZXlTZXNzaW9uKik7CisgICAgdm9pZCBjbG9zZSgpOworCisgICAgY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2tleVN5c3RlbTsgfQorCitwcml2YXRlOgorICAg
IENETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CisKKyAgICBTdHJpbmcgbV9rZXlTeXN0ZW07
CisgICAgT3duUHRyPENETVByaXZhdGVJbnRlcmZhY2U+IG1fcHJpdmF0ZTsKK307CisKK3R5cGVk
ZWYgUGFzc093blB0cjxDRE1Qcml2YXRlSW50ZXJmYWNlPiAoKkNyZWF0ZUNETSkoQ0RNKik7Cit0
eXBlZGVmIGJvb2wgKCpDRE1TdXBwb3J0c0tleVN5dGVtKShjb25zdCBTdHJpbmcmKTsKK3R5cGVk
ZWYgYm9vbCAoKkNETVN1cHBvcnRzS2V5U3lzdGVtTUlNRVR5cGVBbmRDb2RlYykoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Cit0eXBlZGVmIHZvaWQgKCpDRE1S
ZWdpc3RyYXIpKENyZWF0ZUNETSwgQ0RNU3VwcG9ydHNLZXlTeXRlbSk7CisKK30KKworI2VuZGlm
IC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNlbmRpZiAvLyBDRE1faApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleUVycm9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5RXJyb3IuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44OTMyODllYmU0YjU0M2UwYTJkZWNlMjA0MjhjMzdmMTQxYmI3OGI5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleUVycm9yLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNZWRpYUtl
eUVycm9yX2gKKyNkZWZpbmUgTWVkaWFLZXlFcnJvcl9oCisKKyNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhS2V5RXJyb3Ig
OiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUtleUVycm9yPiB7CitwdWJsaWM6CisgICAgZW51bSB7
CisgICAgICAgIE1FRElBX0tFWUVSUl9VTktOT1dOID0gMSwKKyAgICAgICAgTUVESUFfS0VZRVJS
X0NMSUVOVCwKKyAgICAgICAgTUVESUFfS0VZRVJSX1NFUlZJQ0UsCisgICAgICAgIE1FRElBX0tF
WUVSUl9PVVRQVVQsCisgICAgICAgIE1FRElBX0tFWUVSUl9IQVJEV0FSRUNIQU5HRSwKKyAgICAg
ICAgTUVESUFfS0VZRVJSX0RPTUFJTgorICAgIH07CisgICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBDb2RlOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFLZXlFcnJvcj4gY3JlYXRlKENv
ZGUgY29kZSwgdW5zaWduZWQgbG9uZyBzeXN0ZW1Db2RlKSB7IHJldHVybiBhZG9wdFJlZihuZXcg
TWVkaWFLZXlFcnJvcihjb2RlLCBzeXN0ZW1Db2RlKSk7IH0KKworICAgIENvZGUgY29kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZTsgfQorICAgIHVuc2lnbmVkIGxvbmcgc3lzdGVtQ29kZSgpIHsg
cmV0dXJuIG1fc3lzdGVtQ29kZTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IE1lZGlhS2V5
RXJyb3IoQ29kZSBjb2RlLCB1bnNpZ25lZCBsb25nIHN5c3RlbUNvZGUpIDogbV9jb2RlKGNvZGUp
LCBtX3N5c3RlbUNvZGUoc3lzdGVtQ29kZSkgeyB9CisKKyAgICBDb2RlIG1fY29kZTsKKyAgICB1
bnNpZ25lZCBsb25nIG1fc3lzdGVtQ29kZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlFcnJvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5RXJyb3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmMDhlZDM4M2RkNzFm
MzVkZjA0MjRmZTA1NzI4YjlkNTY3NjI3YjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5RXJyb3IuaWRsCkBAIC0wLDAgKzEs
NDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKK21vZHVsZSBlbmNyeXB0ZWRtZWRpYSB7CisKKyAgICBpbnRlcmZh
Y2UgWworICAgICAgICBDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEsCisgICAgICAgIFY4RW5h
YmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYSwgCisgICAgXSBNZWRpYUtleUVycm9yIHsKKyAg
ICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfS0VZRVJSX1VOS05PV04gPSAxOworICAg
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9LRVlFUlJfQ0xJRU5UID0gMjsKKyAgICAg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfS0VZRVJSX1NFUlZJQ0UgPSAzOworICAgICAg
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9LRVlFUlJfT1VUUFVUID0gNDsKKyAgICAgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfS0VZRVJSX0hBUkRXQVJFQ0hBTkdFID0gNTsKKyAg
ICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfS0VZRVJSX0RPTUFJTiA9IDY7CisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBjb2RlOworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBzeXN0ZW1Db2RlOworICAgIH07Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVz
c2FnZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlNZXNzYWdlRXZlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhNjk3MDY0NzcxMjg0MzE0ZjE3MmJl
MzcxN2E0ZTYyNjk0MDY5MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcApAQCAtMCwwICsxLDYz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorCisjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCIKKworI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK01lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdDo6TWVkaWFLZXlNZXNzYWdl
RXZlbnRJbml0KCkKK3sKK30KKworTWVkaWFLZXlNZXNzYWdlRXZlbnQ6Ok1lZGlhS2V5TWVzc2Fn
ZUV2ZW50KCkKK3sKK30KKworTWVkaWFLZXlNZXNzYWdlRXZlbnQ6Ok1lZGlhS2V5TWVzc2FnZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdlRXZlbnRJ
bml0JiBpbml0aWFsaXplcikKKyAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKQorICAgICwg
bV9tZXNzYWdlKGluaXRpYWxpemVyLm1lc3NhZ2UpCisgICAgLCBtX2RlZmF1bHRVUkwoaW5pdGlh
bGl6ZXIuZGVmYXVsdFVSTCkKK3sKK30KKworTWVkaWFLZXlNZXNzYWdlRXZlbnQ6On5NZWRpYUtl
eU1lc3NhZ2VFdmVudCgpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFLZXlNZXNz
YWdlRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVz
KCkuaW50ZXJmYWNlRm9yTWVkaWFLZXlNZXNzYWdlRXZlbnQ7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWIz
ZmYzYTliYzcyMzZiOGIxMmUyYWMzYmIzY2IyOGM0ODFlNTljOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZl
bnQuaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhS2V5TWVzc2Fn
ZUV2ZW50X2gKKyNkZWZpbmUgTWVkaWFLZXlNZXNzYWdlRXZlbnRfaAorCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlF
cnJvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBNZWRpYUtleU1lc3NhZ2VF
dmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKKyAgICBNZWRpYUtleU1lc3NhZ2VFdmVudElu
aXQoKTsKKworICAgIFJlZlB0cjxVaW50OEFycmF5PiBtZXNzYWdlOworICAgIFN0cmluZyBkZWZh
dWx0VVJMOworfTsKKworY2xhc3MgTWVkaWFLZXlNZXNzYWdlRXZlbnQgOiBwdWJsaWMgRXZlbnQg
eworcHVibGljOgorICAgIHZpcnR1YWwgfk1lZGlhS2V5TWVzc2FnZUV2ZW50KCk7CisKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleU1lc3NhZ2VFdmVudD4gY3JlYXRlKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFLZXlNZXNzYWdlRXZlbnQpOworICAgIH0K
KworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5TWVzc2FnZUV2ZW50PiBjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQmIGlu
aXRpYWxpemVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUtleU1l
c3NhZ2VFdmVudCh0eXBlLCBpbml0aWFsaXplcikpOworICAgIH0KKworICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKKyAgICBVaW50OEFycmF5
KiBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlLmdldCgpOyB9CisgICAgU3RyaW5n
IGRlZmF1bHRVUkwoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRVUkw7IH0KKworcHJpdmF0ZToK
KyAgICBNZWRpYUtleU1lc3NhZ2VFdmVudCgpOworICAgIE1lZGlhS2V5TWVzc2FnZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0JiBp
bml0aWFsaXplcik7CisKKyAgICBSZWZQdHI8VWludDhBcnJheT4gbV9tZXNzYWdlOworICAgIFN0
cmluZyBtX2RlZmF1bHRVUkw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhM2QwOWMz
MzFkOTEyZGZiMTg0YmU4ZGYwODI0NjhmNjcwMGM4N2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50Lmlk
bApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUgZW5jcnlwdGVkbWVkaWEgewor
CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBLAor
ICAgICAgICBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWEsCisgICAgICAgIENvbnN0
cnVjdG9yVGVtcGxhdGU9RXZlbnQgCisgICAgXSBNZWRpYUtleU1lc3NhZ2VFdmVudCA6IEV2ZW50
IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVpbnQ4QXJyYXkgbWVzc2FnZTsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFtJbml0aWFsaXplZEJ5RXZlbnRDb25zdHJ1Y3Rvcl0gRE9N
U3RyaW5nIGRlZmF1bHRVUkw7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTViOTUwNWM3YzY4ZjM2YjBjNjhmY2M3MzAzODBiZDMwOTdhYzBmMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlOZWVkZWRFdmVudC5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUg
Ik1lZGlhS2V5TmVlZGVkRXZlbnQuaCIKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNs
dWRlIDx3dGYvVWludDhBcnJheS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01lZGlhS2V5
TmVlZGVkRXZlbnRJbml0OjpNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCgpCit7Cit9CisKK01lZGlh
S2V5TmVlZGVkRXZlbnQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnQoKQoreworfQorCitNZWRpYUtleU5l
ZWRlZEV2ZW50OjpNZWRpYUtleU5lZWRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Y29uc3QgTWVkaWFLZXlOZWVkZWRFdmVudEluaXQmIGluaXRpYWxpemVyKQorICAgIDogRXZlbnQo
dHlwZSwgaW5pdGlhbGl6ZXIpCisgICAgLCBtX2luaXREYXRhKGluaXRpYWxpemVyLmluaXREYXRh
KQoreworfQorCitNZWRpYUtleU5lZWRlZEV2ZW50Ojp+TWVkaWFLZXlOZWVkZWRFdmVudCgpCit7
Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFLZXlOZWVkZWRFdmVudDo6aW50ZXJmYWNl
TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JNZWRp
YUtleU5lZWRlZEV2ZW50OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eU5lZWRlZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5TmVlZGVkRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOWI4N2E5ZDEzYjExMTFlZmQ0MGIwZmEy
MTY2MDc2NDhmY2UwNzNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmgKQEAgLTAsMCArMSw3MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBNZWRpYUtleU5lZWRlZEV2ZW50X2gKKyNkZWZpbmUgTWVkaWFL
ZXlOZWVkZWRFdmVudF9oCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVk
ZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJNZWRpYUtleUVycm9yLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RydWN0IE1lZGlhS2V5TmVlZGVkRXZlbnRJbml0IDogcHVibGljIEV2ZW50SW5p
dCB7CisgICAgTWVkaWFLZXlOZWVkZWRFdmVudEluaXQoKTsKKworICAgIFJlZlB0cjxVaW50OEFy
cmF5PiBpbml0RGF0YTsKK307CisKK2NsYXNzIE1lZGlhS2V5TmVlZGVkRXZlbnQgOiBwdWJsaWMg
RXZlbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfk1lZGlhS2V5TmVlZGVkRXZlbnQoKTsKKwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5TmVlZGVkRXZlbnQ+IGNyZWF0ZSgpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhS2V5TmVlZGVkRXZlbnQpOworICAg
IH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5TmVlZGVkRXZlbnQ+IGNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IE1lZGlhS2V5TmVlZGVkRXZlbnRJbml0JiBp
bml0aWFsaXplcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFLZXlO
ZWVkZWRFdmVudCh0eXBlLCBpbml0aWFsaXplcikpOworICAgIH0KKworICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKKyAgICBVaW50OEFycmF5
KiBpbml0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdERhdGEuZ2V0KCk7IH0KKworcHJpdmF0
ZToKKyAgICBNZWRpYUtleU5lZWRlZEV2ZW50KCk7CisgICAgTWVkaWFLZXlOZWVkZWRFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IE1lZGlhS2V5TmVlZGVkRXZlbnRJbml0JiBp
bml0aWFsaXplcik7CisKKyAgICBSZWZQdHI8VWludDhBcnJheT4gbV9pbml0RGF0YTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVk
RXZlbnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5ZTc1Y2I1NjJmMzIzZWI1ZGFkZTkwZmM0ZTlkNDVjYTdj
MzAwNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaWRsCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKK21vZHVsZSBlbmNyeXB0ZWRtZWRpYSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBD
b25kaXRpb25hbD1FTkNSWVBURURfTUVESUEsCisgICAgICAgIFY4RW5hYmxlZEF0UnVudGltZT1l
bmNyeXB0ZWRNZWRpYSwKKyAgICAgICAgQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudCAKKyAgICBd
IE1lZGlhS2V5TmVlZGVkRXZlbnQgOiBFdmVudCB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBVaW50OEFycmF5IGluaXREYXRhOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zZGViYmYyYjFlNmQ2OGZkMmY0ZWM0OTI2MTY2YTA2MTlhMjNhNTBmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVNlc3Npb24uY3BwCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlTZXNzaW9uLmgiCisKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRR
dWV1ZS5oIgorI2luY2x1ZGUgIk1lZGlhS2V5RXJyb3IuaCIKKyNpbmNsdWRlICJNZWRpYUtleXMu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlhS2V5U2Vzc2lvbj4g
TWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
TWVkaWFLZXlzKiBrZXlzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUtleVNlc3Npb24oY29u
dGV4dCwga2V5cywga2V5U3lzdGVtLCBzZXNzaW9uSWQpKTsKK30KKworTWVkaWFLZXlTZXNzaW9u
OjpNZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWVkaWFL
ZXlzKiBrZXlzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQpCisgICAgOiBtX2tleXMoa2V5cykKKyAgICAsIG1fa2V5U3lzdGVtKGtleVN5c3RlbSkKKyAg
ICAsIG1fc2Vzc2lvbklkKHNlc3Npb25JZCkKKyAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKEdlbmVy
aWNFdmVudFF1ZXVlOjpjcmVhdGUodGhpcykpCisgICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoY29udGV4dCkKK3sKK30KKworTWVkaWFLZXlTZXNzaW9uOjp+TWVkaWFLZXlTZXNzaW9uKCkK
K3sKKyAgICBjbG9zZSgpOworfQorCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6c2V0RXJyb3IoTWVk
aWFLZXlFcnJvciogZXJyb3IpCit7CisgICAgbV9lcnJvciA9IGVycm9yOworfQorCit2b2lkIE1l
ZGlhS2V5U2Vzc2lvbjo6Y2xvc2UoKQoreworICAgIGlmIChtX2tleXMpCisgICAgICAgIG1fa2V5
cy0+c2Vzc2lvbldpbGxDbG9zZSh0aGlzKTsKKyAgICBtX2tleXMgPSAwOworCisgICAgbV9hc3lu
Y0V2ZW50UXVldWUtPmNhbmNlbEFsbEV2ZW50cygpOworfQorCit2b2lkIE1lZGlhS2V5U2Vzc2lv
bjo6YWRkS2V5KFVpbnQ4QXJyYXkqIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYg
KG1fa2V5cykKKyAgICAgICAgbV9rZXlzLT5zZXNzaW9uRGlkQWRkS2V5KHRoaXMsIGtleSwgZWMp
OworfQorCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZl
bnQ+IGV2ZW50KQoreworICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQp
OworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhS2V5U2Vzc2lvbjo6aW50ZXJmYWNlTmFt
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JNZWRpYUtl
eVNlc3Npb247Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lN2Q1
MjdhNzc3MTVkNWFlYzBjNzIwZWQyNTZhZTUzZWVkNzY3MDI2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApA
QCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYUtleVNlc3Npb25faAor
I2RlZmluZSBNZWRpYUtleVNlc3Npb25faAorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KworI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBHZW5lcmljRXZlbnRRdWV1ZTsKK2NsYXNzIE1lZGlhS2V5RXJyb3I7CitjbGFzcyBN
ZWRpYUtleXM7CisKK2NsYXNzIE1lZGlhS2V5U2Vzc2lvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE1l
ZGlhS2V5U2Vzc2lvbj4sIHB1YmxpYyBFdmVudFRhcmdldCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIE1lZGlhS2V5cyosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCk7CisgICAgfk1lZGlhS2V5U2Vzc2lvbigpOworCisgICAgY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2tleVN5c3RlbTsgfQorICAgIGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSWQ7IH0KKworICAgIHZvaWQg
c2V0RXJyb3IoTWVkaWFLZXlFcnJvciogZXJyb3IpOworICAgIE1lZGlhS2V5RXJyb3IqIGVycm9y
KCkgeyByZXR1cm4gbV9lcnJvci5nZXQoKTsgfQorCisgICAgdm9pZCBhZGRLZXkoVWludDhBcnJh
eSoga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBjbG9zZSgpOworCisgICAgdXNpbmcg
UmVmQ291bnRlZDxNZWRpYUtleVNlc3Npb24+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxN
ZWRpYUtleVNlc3Npb24+OjpkZXJlZjsKKworICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+KTsKKworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0
a2V5YWRkZWQpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0a2V5
ZXJyb3IpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0a2V5bWVz
c2FnZSk7CisKK3Byb3RlY3RlZDoKKyAgICBNZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIE1lZGlhS2V5cyosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCk7CisKKyAgICBNZWRpYUtleXMqIG1fa2V5czsKKyAgICBTdHJpbmcgbV9r
ZXlTeXN0ZW07CisgICAgU3RyaW5nIG1fc2Vzc2lvbklkOworICAgIFJlZlB0cjxNZWRpYUtleUVy
cm9yPiBtX2Vycm9yOworICAgIE93blB0cjxHZW5lcmljRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50
UXVldWU7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyBy
ZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9
CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJu
ICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1
cmVFdmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KKyAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworICAgIHZp
cnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQorCisgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIEV2ZW50VGFyZ2V0
RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisKKyNlbmRpZiAvLyBNZWRpYUtleVNlc3Npb25faApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24u
aWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmIyZWUxYTM0MTQ5NGM2ZDUxZTg0OTEwYWUyOGY4Y2I3YzY5NjI4NjUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5pZGwKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworIAorbW9kdWxl
IGVuY3J5cHRlZG1lZGlhIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFs
PUVOQ1JZUFRFRF9NRURJQSwKKyAgICAgICAgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1l
ZGlhLAorICAgICAgICBFdmVudFRhcmdldCwKKyAgICBdIE1lZGlhS2V5U2Vzc2lvbiB7CisgICAg
ICAgIC8vIGVycm9yIHN0YXRlCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYUtleUVy
cm9yIGVycm9yOworCisgICAgICAgIC8vIHNlc3Npb24gcHJvcGVydGllcworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtleVN5c3RlbTsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyBzZXNzaW9uSWQ7CisKKyAgICAgICAgLy8gc2Vzc2lvbiBvcGVyYXRp
b25zCisgICAgICAgIHZvaWQgYWRkS2V5KGluIFVpbnQ4QXJyYXkga2V5KQorICAgICAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgY2xvc2UoKTsKKyAgICB9OworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmMyODJiYjVjNmE4NDEzOWEyMzAyNmJhMGE5YmFkYmQyMzcwZDg1MTEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5jcHAKQEAgLTAsMCArMSwyNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlzLmgiCisKKyNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorCisjaW5jbHVkZSAiQ0RNLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2lu
Y2x1ZGUgIk1lZGlhS2V5TWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlTZXNzaW9u
LmgiCisjaW5jbHVkZSAiVVVJRC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxNZWRpYUtleXM+IE1lZGlhS2V5czo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICAvLyBG
cm9tIDxodHRwOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS90aXAvZW5jcnlw
dGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS5odG1sI2RvbS1tZWRpYS1rZXlzLWNvbnN0cnVjdG9y
PjoKKyAgICAvLyBUaGUgTWVkaWFLZXlzKGtleVN5c3RlbSkgY29uc3RydWN0b3IgbXVzdCBydW4g
dGhlIGZvbGxvd2luZyBzdGVwczoKKworICAgIC8vIDEuIElmIGtleVN5c3RlbSBpcyBudWxsIG9y
IGFuIGVtcHR5IHN0cmluZywgdGhyb3cgYW4gSU5WQUxJRF9BQ0NFU1NfRVJSIGV4Y2VwdGlvbiBh
bmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgaWYgKGtleVN5c3RlbS5pc051bGwoKSB8fCBrZXlT
eXN0ZW0uaXNFbXB0eSgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyAyLiBJZiBrZXlTeXN0ZW0gaXMgbm90IG9u
ZSBvZiB0aGUgdXNlciBhZ2VudCdzIHN1cHBvcnRlZCBLZXkgU3lzdGVtcywgdGhyb3cgYSBOT1Rf
U1VQUE9SVEVEX0VSUiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgaWYgKCFDRE06OnN1cHBv
cnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VS
UjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gMy4gTGV0IGNkbSBiZSB0aGUg
Y29udGVudCBkZWNyeXB0aW9uIG1vZHVsZSBjb3JyZXNwb25kaW5nIHRvIGtleVN5c3RlbS4KKyAg
ICAvLyA0LiBMb2FkIGNkbSBpZiBuZWNlc3NhcnkuCisgICAgT3duUHRyPENETT4gY2RtID0gQ0RN
OjpjcmVhdGUoa2V5U3lzdGVtKTsKKworICAgIC8vIDUuIENyZWF0ZSBhIG5ldyBNZWRpYUtleXMg
b2JqZWN0LgorICAgIC8vIDUuMSBMZXQgdGhlIGtleVN5c3RlbSBhdHRyaWJ1dGUgYmUga2V5U3lz
dGVtLgorICAgIC8vIDYuIFJldHVybiB0aGUgbmV3IG9iamVjdCB0byB0aGUgY2FsbGVyLgorICAg
IHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFLZXlzKGtleVN5c3RlbSwgY2RtLnJlbGVhc2UoKSkp
OworfQorCitNZWRpYUtleXM6Ok1lZGlhS2V5cyhjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgUGFz
c093blB0cjxDRE0+IGNkbSkKKyAgICA6IG1fa2V5U3lzdGVtKGtleVN5c3RlbSkKKyAgICAsIG1f
Y2RtKGNkbSkKKyAgICAsIG1fa2V5UmVxdWVzdFRpbWVyKHRoaXMsICZNZWRpYUtleXM6OmtleVJl
cXVlc3RUaW1lckZpcmVkKQorICAgICwgbV9hZGRLZXlUaW1lcih0aGlzLCAmTWVkaWFLZXlzOjph
ZGRLZXlUaW1lckZpcmVkKQoreworfQorCitNZWRpYUtleXM6On5NZWRpYUtleXMoKQoreworICAg
IC8vIEZyb20gPGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9l
bmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLmh0bWwjZG9tLW1lZGlhLWtleXMtY29uc3Ry
dWN0b3I+OgorICAgIC8vIFdoZW4gZGVzdHJveWluZyBhIE1lZGlhS2V5cyBvYmplY3QsIGZvbGxv
dyB0aGUgc3RlcHMgaW4gY2xvc2UoKS4KKyAgICBmb3IgKFNlc3Npb25NYXA6Oml0ZXJhdG9yIGkg
PSBtX3Nlc3Npb25zLmJlZ2luKCk7IGkgIT0gbV9zZXNzaW9ucy5lbmQoKTsgKytpKQorICAgICAg
ICBpLT5zZWNvbmQtPmNsb3NlKCk7CisKK30KKworUGFzc1JlZlB0cjxNZWRpYUtleVNlc3Npb24+
IE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICAvLyBGcm9tIDxodHRwOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9y
YXctZmlsZS90aXAvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS5odG1sI2RvbS1jcmVh
dGVzZXNzaW9uPjoKKyAgICAvLyBUaGUgY3JlYXRlU2Vzc2lvbih0eXBlLCBpbml0RGF0YSkgbWV0
aG9kIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgLy8gTm90ZTogVGhlIGNvbnRl
bnRzIG9mIGluaXREYXRhIGFyZSBjb250YWluZXItc3BlY2lmaWMgSW5pdGlhbGl6YXRpb24gRGF0
YS4KKworICAgIC8vIDEuIElmIHR5cGUgaXMgbnVsbCBvciBhbiBlbXB0eSBzdHJpbmcgYW5kIGlu
aXREYXRhIGlzIG5vdCBudWxsIG9yIGFuIGVtcHR5IHN0cmluZywgdGhyb3cgYW4KKyAgICAvLyBJ
TlZBTElEX0FDQ0VTU19FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBp
ZiAoKHR5cGUuaXNOdWxsKCkgfHwgdHlwZS5pc0VtcHR5KCkpICYmICghaW5pdERhdGEgfHwgaW5p
dERhdGEtPmxlbmd0aCgpKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gMi4gSWYgdHlwZSBjb250YWlucyBhIE1J
TUUgdHlwZSB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQgb3IgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUg
a2V5U3lzdGVtLCB0aHJvdworICAgIC8vIGEgTk9UX1NVUFBPUlRFRF9FUlIgZXhjZXB0aW9uIGFu
ZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICAvLyBOT1RFOiBDdXJyZW50bHksIG5vIENETXMgcHJv
dmlkZSB0aGUgYWJpbGl0eSB0byBxdWVyeSBmb3IgTUlNRSB0eXBlIHN1cHBvcnQuCisKKyAgICAv
LyAzLiBDcmVhdGUgYSBuZXcgTWVkaWFLZXlTZXNzaW9uIG9iamVjdC4KKyAgICAvLyAzLjEgTGV0
IHRoZSBrZXlTeXN0ZW0gYXR0cmlidXRlIGJlIGtleVN5c3RlbS4KKyAgICAvLyAzLjIgTGV0IHRo
ZSBzZXNzaW9uSWQgYXR0cmlidXRlIGJlIGEgdW5pcXVlIFNlc3Npb24gSUQgc3RyaW5nLiBJdCBt
YXkgYmUgZ2VuZXJhdGVkIGJ5IGNkbS4KKyAgICBSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBzZXNz
aW9uID0gTWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUoY29udGV4dCwgdGhpcywga2V5U3lzdGVtKCks
IG1fY2RtLT5nZW5lcmF0ZVNlc3Npb25JZCgpKTsKKworICAgIC8vIDQuIEFkZCB0aGUgbmV3IG9i
amVjdCB0byBhbiBpbnRlcm5hbCBsaXN0IG9mIHNlc3Npb24gb2JqZWN0cy4KKyAgICBtX3Nlc3Np
b25zLnNldChzZXNzaW9uLT5zZXNzaW9uSWQoKSwgc2Vzc2lvbik7CisKKyAgICAvLyA1LiBTY2hl
ZHVsZSBhIHRhc2sgdG8gZ2VuZXJhdGUgYSBrZXkgcmVxdWVzdCwgcHJvdmlkaW5nIHR5cGUsIGlu
aXREYXRhLCBhbmQgdGhlIG5ldyBvYmplY3QuCisgICAgbV9wZW5kaW5nS2V5UmVxdWVzdHMuYXBw
ZW5kKFBlbmRpbmdLZXlSZXF1ZXN0KHR5cGUsIGluaXREYXRhLCBzZXNzaW9uLT5zZXNzaW9uSWQo
KSkpOworICAgIG1fa2V5UmVxdWVzdFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKworICAgIC8vIDYu
IFJldHVybiB0aGUgbmV3IG9iamVjdCB0byB0aGUgY2FsbGVyLgorICAgIHJldHVybiBzZXNzaW9u
OworfQorCit2b2lkIE1lZGlhS2V5czo6a2V5UmVxdWVzdFRpbWVyRmlyZWQoVGltZXI8TWVkaWFL
ZXlzPiopCit7CisgICAgQVNTRVJUKG1fcGVuZGluZ0tleVJlcXVlc3RzLnNpemUoKSk7CisKKyAg
ICB3aGlsZSAoIW1fcGVuZGluZ0tleVJlcXVlc3RzLmlzRW1wdHkoKSkgeworICAgICAgICBQZW5k
aW5nS2V5UmVxdWVzdCByZXF1ZXN0ID0gbV9wZW5kaW5nS2V5UmVxdWVzdHMudGFrZUZpcnN0KCk7
CisgICAgICAgIEFTU0VSVChtX3Nlc3Npb25zLmNvbnRhaW5zKHJlcXVlc3Quc2Vzc2lvbklkKSk7
CisgICAgICAgIE1lZGlhS2V5U2Vzc2lvbiogc2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZmluZChyZXF1
ZXN0LnNlc3Npb25JZCktPnNlY29uZC5nZXQoKTsKKworICAgICAgICAvLyBOT1RFOiBDb250aW51
ZWQgZnJvbSBzdGVwIDUgaW4gTWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9uKCkuCisgICAgICAgIC8v
IFRoZSB1c2VyIGFnZW50IHdpbGwgYXN5bmNocm9ub3VzbHkgZXhlY3V0ZSB0aGUgZm9sbG93aW5n
IHN0ZXBzIGluIHRoZSB0YXNrOgorCisgICAgICAgIC8vIDEuIExldCBjZG0gYmUgdGhlIGNkbSBs
b2FkZWQgaW4gdGhlIE1lZGlhS2V5cyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgLy8gMi4gTGV0IGRl
ZmF1bHRVUkwgYmUgbnVsbC4KKyAgICAgICAgU3RyaW5nIGRlZmF1bHRVUkw7CisgICAgICAgIE1l
ZGlhS2V5RXJyb3I6OkNvZGUgZXJyb3JDb2RlID0gMDsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBz
eXN0ZW1Db2RlID0gMDsKKworICAgICAgICAvLyAzLiBVc2UgY2RtIHRvIGdlbmVyYXRlIGEga2V5
IHJlcXVlc3QgYW5kIGZvbGxvdyB0aGUgc3RlcHMgZm9yIHRoZSBmaXJzdCBtYXRjaGluZyBjb25k
aXRpb24gZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6CisKKyAgICAgICAgUmVmUHRyPFVpbnQ4QXJy
YXk+IGtleVJlcXVlc3QgPSBtX2NkbS0+Z2VuZXJhdGVLZXlSZXF1ZXN0KHJlcXVlc3QubWltZVR5
cGUsIHJlcXVlc3QuaW5pdERhdGEuZ2V0KCksIHJlcXVlc3Quc2Vzc2lvbklkLCBkZWZhdWx0VVJM
LCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOworCisgICAgICAgIC8vIE90aGVyd2lzZSBbaWYgYSBy
ZXF1ZXN0IGlzIG5vdCBzdWNjZXNzZnVsbHkgZ2VuZXJhdGVkXToKKyAgICAgICAgaWYgKCFrZXlS
ZXF1ZXN0KSB7CisgICAgICAgICAgICAvLyAzLjEuIENyZWF0ZSBhIG5ldyBNZWRpYUtleUVycm9y
IG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKyAgICAgICAgICAgIC8vICAg
ICAgY29kZSA9IHRoZSBhcHByb3ByaWF0ZSBNZWRpYUtleUVycm9yIGNvZGUKKyAgICAgICAgICAg
IC8vICAgICAgc3lzdGVtQ29kZSA9IGEgS2V5IFN5c3RlbS1zcGVjaWZpYyB2YWx1ZSwgaWYgcHJv
dmlkZWQsIGFuZCAwIG90aGVyd2lzZQorICAgICAgICAgICAgUmVmUHRyPE1lZGlhS2V5RXJyb3I+
IGVycm9yID0gTWVkaWFLZXlFcnJvcjo6Y3JlYXRlKGVycm9yQ29kZSwgc3lzdGVtQ29kZSkuZ2V0
KCk7CisKKyAgICAgICAgICAgIC8vIDMuMi4gU2V0IHRoZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0
J3MgZXJyb3IgYXR0cmlidXRlIHRvIHRoZSBlcnJvciBvYmplY3QgY3JlYXRlZCBpbiB0aGUgcHJl
dmlvdXMgc3RlcC4KKyAgICAgICAgICAgIHNlc3Npb24tPnNldEVycm9yKGVycm9yLmdldCgpKTsK
KworICAgICAgICAgICAgLy8gMy4zLiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVu
dCBuYW1lZCBrZXllcnJvciBhdCB0aGUgTWVkaWFLZXlTZXNzaW9uIG9iamVjdC4KKyAgICAgICAg
ICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJr
aXRrZXllcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgZXZlbnQtPnNldFRh
cmdldChzZXNzaW9uKTsKKyAgICAgICAgICAgIHNlc3Npb24tPmVucXVldWVFdmVudChldmVudC5y
ZWxlYXNlKCkpOworCisgICAgICAgICAgICAvLyAzLjQuIEFib3J0IHRoZSB0YXNrLgorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyA0LiBxdWV1ZSBhIHRhc2sg
dG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBrZXltZXNzYWdlIGF0IHRoZSBuZXcgb2JqZWN0
CisgICAgICAgIC8vICAgIFRoZSBldmVudCBpcyBvZiB0eXBlIE1lZGlhS2V5TWVzc2FnZUV2ZW50
IGFuZCBoYXM6CisgICAgICAgIC8vICAgIG1lc3NhZ2UgPSBrZXkgcmVxdWVzdAorICAgICAgICAv
LyAgICBkZXN0aW5hdGlvblVSTCA9IGRlZmF1bHRVUkwKKyAgICAgICAgTWVkaWFLZXlNZXNzYWdl
RXZlbnRJbml0IGluaXQ7CisgICAgICAgIGluaXQuYnViYmxlcyA9IGZhbHNlOworICAgICAgICBp
bml0LmNhbmNlbGFibGUgPSBmYWxzZTsKKyAgICAgICAgaW5pdC5tZXNzYWdlID0ga2V5UmVxdWVz
dDsKKyAgICAgICAgaW5pdC5kZWZhdWx0VVJMID0gZGVmYXVsdFVSTDsKKyAgICAgICAgUmVmUHRy
PE1lZGlhS2V5TWVzc2FnZUV2ZW50PiBldmVudCA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLndlYmtpdGtleW1lc3NhZ2VFdmVudCwgaW5pdCk7CisgICAgICAgIGV2
ZW50LT5zZXRUYXJnZXQoc2Vzc2lvbik7CisgICAgICAgIHNlc3Npb24tPmVucXVldWVFdmVudChl
dmVudCk7CisgICAgfQorfQorCit2b2lkIE1lZGlhS2V5czo6c2Vzc2lvbkRpZEFkZEtleShNZWRp
YUtleVNlc3Npb24qIHNlc3Npb24sIFVpbnQ4QXJyYXkqIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgQVNTRVJUKHNlc3Npb24pOworICAgIC8vIEZyb20gPGh0dHA6Ly9kdmNzLnczLm9y
Zy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1l
ZGlhLmh0bWwjZG9tLWFkZGtleT46CisgICAgLy8gVGhlIGFkZEtleShrZXkpIG1ldGhvZCBtdXN0
IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIC8vIDEuIElmIHRoZSBmaXJzdCBvciBzZWNv
bmQgYXJndW1lbnQgW3NpY10gaXMgbnVsbCBvciBhbiBlbXB0eSBhcnJheSwgdGhyb3cgYW4gSU5W
QUxJRF9BQ0NFU1NfRVJSLgorICAgIC8vIE5PVEU6IHRoZSByZWZlcmVuY2UgdG8gYSAic2Vjb25k
IGFyZ3VtZW50IiBpcyBhIHNwZWMgYnVnLgorICAgIGlmICgha2V5IHx8ICFrZXktPmxlbmd0aCgp
KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgLy8gMi4gU2NoZWR1bGUgYSB0YXNrIHRvIGhhbmRsZSB0aGUgY2FsbCwgcHJv
dmlkaW5nIGtleS4KKyAgICBtX3BlbmRpbmdLZXlzLmFwcGVuZChQZW5kaW5nS2V5KHNlc3Npb24t
PnNlc3Npb25JZCgpLCBrZXkpKTsKKyAgICBtX2FkZEtleVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
K30KKwordm9pZCBNZWRpYUtleXM6OmFkZEtleVRpbWVyRmlyZWQoVGltZXI8TWVkaWFLZXlzPiop
Cit7CisgICAgQVNTRVJUKG1fcGVuZGluZ0tleXMuc2l6ZSgpKTsKKworICAgIHdoaWxlICghbV9w
ZW5kaW5nS2V5cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgUGVuZGluZ0tleSBwZW5kaW5nS2V5ID0g
bV9wZW5kaW5nS2V5cy50YWtlRmlyc3QoKTsKKyAgICAgICAgQVNTRVJUKG1fc2Vzc2lvbnMuY29u
dGFpbnMocGVuZGluZ0tleS5zZXNzaW9uSWQpKTsKKyAgICAgICAgTWVkaWFLZXlTZXNzaW9uKiBz
ZXNzaW9uID0gbV9zZXNzaW9ucy5maW5kKHBlbmRpbmdLZXkuc2Vzc2lvbklkKS0+c2Vjb25kLmdl
dCgpOworICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcnJvckNvZGUgPSAwOworICAgICAgICB1bnNp
Z25lZCBsb25nIHN5c3RlbUNvZGUgPSAwOworCisgICAgICAgIC8vIE5PVEU6IENvbnRpbnVlZCBm
cm9tIHN0ZXAgMi4gb2YgTWVkaWFLZXlzOjpzZXNzaW9uRGlkQWRkS2V5KCkKKyAgICAgICAgLy8g
Mi4xLiBMZXQgY2RtIGJlIHRoZSBjZG0gbG9hZGVkIGluIHRoZSBNZWRpYUtleXMgY29uc3RydWN0
b3IuCisgICAgICAgIC8vIDIuMi4gTGV0ICdkaWQgc3RvcmUga2V5JyBiZSBmYWxzZS4KKyAgICAg
ICAgYm9vbCBkaWRTdG9yZUtleSA9IGZhbHNlOworICAgICAgICAvLyAyLjMuIExldCAnbmV4dCBt
ZXNzYWdlJyBiZSBudWxsLgorICAgICAgICBSZWZQdHI8VWludDhBcnJheT4gbmV4dE1lc3NhZ2U7
CisgICAgICAgIC8vIDIuNC4gVXNlIGNkbSB0byBoYW5kbGUga2V5LgorICAgICAgICBkaWRTdG9y
ZUtleSA9IG1fY2RtLT5hZGRLZXlGb3JTZXNzaW9uSWQocGVuZGluZ0tleS5rZXkuZ2V0KCksIHBl
bmRpbmdLZXkuc2Vzc2lvbklkLCBuZXh0TWVzc2FnZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsK
KyAgICAgICAgLy8gMi41LiBJZiBkaWQgc3RvcmUga2V5IGlzIHRydWUgYW5kIHRoZSBtZWRpYSBl
bGVtZW50IGlzIHdhaXRpbmcgZm9yIGEga2V5LCBxdWV1ZSBhIHRhc2sgdG8gYXR0ZW1wdCB0byBy
ZXN1bWUgcGxheWJhY2suCisgICAgICAgIC8vIFRPRE86IEZpbmQgYW5kIHJlc3RhcnQgdGhlIG1l
ZGlhIGVsZW1lbnQKKworICAgICAgICAvLyAyLjYuIElmIG5leHQgbWVzc2FnZSBpcyBub3QgbnVs
bCwgcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQga2V5bWVzc2FnZSBh
dCB0aGUgTWVkaWFLZXlTZXNzaW9uIG9iamVjdC4KKyAgICAgICAgLy8gICAgICBUaGUgZXZlbnQg
aXMgb2YgdHlwZSBNZWRpYUtleU1lc3NhZ2VFdmVudCBhbmQgaGFzOgorICAgICAgICAvLyAgICAg
IG1lc3NhZ2UgPSBuZXh0IG1lc3NhZ2UKKyAgICAgICAgLy8gICAgICBkZXN0aW5hdGlvblVSTCA9
IG51bGwKKyAgICAgICAgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0IGluaXQ7CisgICAgICAgIGlu
aXQuYnViYmxlcyA9IGZhbHNlOworICAgICAgICBpbml0LmNhbmNlbGFibGUgPSBmYWxzZTsKKyAg
ICAgICAgaW5pdC5tZXNzYWdlID0gbmV4dE1lc3NhZ2U7CisgICAgICAgIFJlZlB0cjxNZWRpYUtl
eU1lc3NhZ2VFdmVudD4gZXZlbnQgPSBNZWRpYUtleU1lc3NhZ2VFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS53ZWJraXRrZXltZXNzYWdlRXZlbnQsIGluaXQpOworICAgICAgICBldmVudC0+c2V0
VGFyZ2V0KHNlc3Npb24pOworICAgICAgICBzZXNzaW9uLT5lbnF1ZXVlRXZlbnQoZXZlbnQpOwor
CisgICAgICAgIC8vIDIuNy4gSWYgZGlkIHN0b3JlIGtleSBpcyB0cnVlLCBxdWV1ZSBhIHRhc2sg
dG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBrZXlhZGRlZCBhdCB0aGUgTWVkaWFLZXlTZXNz
aW9uIG9iamVjdC4KKyAgICAgICAgc2Vzc2lvbi0+ZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLndlYmtpdGtleWFkZGVkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworCisgICAg
ICAgIC8vIDIuOC4gSWYgYW55IG9mIHRoZSBwcmVjZWRpbmcgc3RlcHMgaW4gdGhlIHRhc2sgZmFp
bGVkCisgICAgICAgIC8vIDIuOC4xLiBDcmVhdGUgYSBuZXcgTWVkaWFLZXlFcnJvciBvYmplY3Qg
d2l0aCB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CisgICAgICAgIC8vICAgICAgICBjb2RlID0g
dGhlIGFwcHJvcHJpYXRlIE1lZGlhS2V5RXJyb3IgY29kZQorICAgICAgICAvLyAgICAgICAgc3lz
dGVtQ29kZSA9IGEgS2V5IFN5c3RlbS1zcGVjaWZpYyB2YWx1ZSwgaWYgcHJvdmlkZWQsIGFuZCAw
IG90aGVyd2lzZQorICAgICAgICBSZWZQdHI8TWVkaWFLZXlFcnJvcj4gZXJyb3IgPSBNZWRpYUtl
eUVycm9yOjpjcmVhdGUoZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKS5nZXQoKTsKKworICAgICAgICAv
LyAyLjguMi4gU2V0IHRoZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0J3MgZXJyb3IgYXR0cmlidXRl
IHRvIHRoZSBlcnJvciBvYmplY3QgY3JlYXRlZCBpbiB0aGUgcHJldmlvdXMgc3RlcC4KKyAgICAg
ICAgc2Vzc2lvbi0+c2V0RXJyb3IoZXJyb3IuZ2V0KCkpOworCisgICAgICAgIC8vIDIuOC4zLiBx
dWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBrZXllcnJvciBhdCB0aGUg
TWVkaWFLZXlTZXNzaW9uIG9iamVjdC4KKyAgICAgICAgUmVmUHRyPEV2ZW50PiBrZXllcnJvckV2
ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0a2V5ZXJyb3JFdmVudCwgZmFs
c2UsIGZhbHNlKTsKKyAgICAgICAga2V5ZXJyb3JFdmVudC0+c2V0VGFyZ2V0KHNlc3Npb24pOwor
ICAgICAgICBzZXNzaW9uLT5lbnF1ZXVlRXZlbnQoa2V5ZXJyb3JFdmVudC5yZWxlYXNlKCkpOwor
CisgICAgICAgIC8vIDIuOC40LiBBYm9ydCB0aGUgdGFzay4KKyAgICAgICAgLy8gTk9URTogbm8t
b3AKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFLZXlzOjpzZXNzaW9uV2lsbENsb3NlKE1lZGlhS2V5
U2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICAvLyBGcm9tIDxodHRwOi8vZHZjcy53My5vcmcvaGcv
aHRtbC1tZWRpYS9yYXctZmlsZS90aXAvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS5o
dG1sI2RvbS1jbG9zZT46CisgICAgLy8gVGhlIGNsb3NlKCkgbWV0aG9kIGNhdXNlcyB0aGUga2V5
IGFjcXVpc2l0aW9uIHNlc3Npb24gdG8gY2xvc2UgYW5kIGFsbCBrZXlzIHRvIGJlIHJlbGVhc2Vk
LiBJdCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIC8vCisgICAgLy8gMS4gQ2xl
YXIgYW55IGludGVybmFsIHN0YXRlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2Vzc2lvbiwgaW5jbHVk
aW5nIGFsbCBrZXlzIGFuZCBsaWNlbnNlcy4KKyAgICBtX2NkbS0+Y2xlYXJLZXlzRnJvbVNlc3Np
b25JZChzZXNzaW9uLT5zZXNzaW9uSWQoKSk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lMzBmNWJhMzk4ZTA3MDhhYWQxNzA4Mzk3NWViYTY4MDFlZWRhMjMxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaApA
QCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYUtleXNfaAorI2RlZmlu
ZSBNZWRpYUtleXNfaAorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL093
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlICJFdmVudFRh
cmdldC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJUaW1lci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENETTsKK2NsYXNzIE1lZGlhS2V5U2Vzc2lv
bjsKKworY2xhc3MgTWVkaWFLZXlzIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlzPiB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFLZXlzPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICB+TWVkaWFLZXlzKCk7CisK
KyAgICBQYXNzUmVmUHRyPE1lZGlhS2V5U2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERh
dGEsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29u
c3QgeyByZXR1cm4gbV9rZXlTeXN0ZW07IH0KKworICAgIHZvaWQgc2Vzc2lvbldpbGxDbG9zZShN
ZWRpYUtleVNlc3Npb24qKTsKKyAgICB2b2lkIHNlc3Npb25EaWRBZGRLZXkoTWVkaWFLZXlTZXNz
aW9uKiwgVWludDhBcnJheSoga2V5LCBFeGNlcHRpb25Db2RlJiBlYyk7CisKK3Byb3RlY3RlZDoK
KyAgICB2b2lkIGtleVJlcXVlc3RUaW1lckZpcmVkKFRpbWVyPE1lZGlhS2V5cz4qKTsKKyAgICB2
b2lkIGFkZEtleVRpbWVyRmlyZWQoVGltZXI8TWVkaWFLZXlzPiopOworCisgICAgTWVkaWFLZXlz
KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBQYXNzT3duUHRyPENETT4gY2RtKTsKKworICAgIFN0
cmluZyBtX2tleVN5c3RlbTsKKyAgICBPd25QdHI8Q0RNPiBtX2NkbTsKKyAgICB0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiA+IFNlc3Npb25NYXA7CisgICAg
U2Vzc2lvbk1hcCBtX3Nlc3Npb25zOworCisgICAgc3RydWN0IFBlbmRpbmdLZXlSZXF1ZXN0IHsK
KyAgICAgICAgUGVuZGluZ0tleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhB
cnJheSogaW5pdERhdGEsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQorICAgICAgICAgICAgOiBt
aW1lVHlwZShtaW1lVHlwZSkKKyAgICAgICAgICAgICwgaW5pdERhdGEoaW5pdERhdGEpCisgICAg
ICAgICAgICAsIHNlc3Npb25JZChzZXNzaW9uSWQpCisgICAgICAgIHsKKyAgICAgICAgfQorICAg
ICAgICBTdHJpbmcgbWltZVR5cGU7CisgICAgICAgIFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0
YTsKKyAgICAgICAgU3RyaW5nIHNlc3Npb25JZDsKKyAgICB9OworICAgIERlcXVlPFBlbmRpbmdL
ZXlSZXF1ZXN0PiBtX3BlbmRpbmdLZXlSZXF1ZXN0czsKKyAgICBUaW1lcjxNZWRpYUtleXM+IG1f
a2V5UmVxdWVzdFRpbWVyOworCisgICAgc3RydWN0IFBlbmRpbmdLZXkgeworICAgICAgICBQZW5k
aW5nS2V5KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBVaW50OEFycmF5KiBrZXkpIDogc2Vzc2lv
bklkKHNlc3Npb25JZCksIGtleShrZXkpIHsgfQorICAgICAgICBTdHJpbmcgc2Vzc2lvbklkOwor
ICAgICAgICBSZWZQdHI8VWludDhBcnJheT4ga2V5OworICAgIH07CisgICAgRGVxdWU8UGVuZGlu
Z0tleT4gbV9wZW5kaW5nS2V5czsKKyAgICBUaW1lcjxNZWRpYUtleXM+IG1fYWRkS2V5VGltZXI7
Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjZW5kaWYg
Ly8gTWVkaWFLZXlzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlzLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lM2I0YWFmY2Y3MDIwMGRlNDc0ODBhZjdk
YjBjN2YyYTRmNzU5NjU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KyAKK21vZHVsZSBlbmNyeXB0ZWRtZWRpYSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBD
b25kaXRpb25hbD1FTkNSWVBURURfTUVESUEsCisgICAgICAgIFY4RW5hYmxlZEF0UnVudGltZT1l
bmNyeXB0ZWRNZWRpYSwKKyAgICAgICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTEsCisgICAgXSBN
ZWRpYUtleXMgeworICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gTWVk
aWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24oaW4gRE9NU3RyaW5nIHR5cGUsIGluIFVpbnQ4QXJy
YXkgaW5pdERhdGEpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtleVN5c3RlbTsKKyAgICB9OworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IGQ2ZmY3NzU3NTZkNTc3M2NmNTYzMmRkMjMwZTEzZjFhODEwMWEyMzYu
LjAzNDAzOTFlMTdmZTU0ZjY0ODJjMjdjZWJkYTJlNTNkMzk3OTM5NjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTExMzIsNyArMTEzMiw4IEBACiAgICAgICAgICAgICAnaHRtbC9NZWRpYUVycm9yLmlk
bCcsCiAgICAgICAgICAgICAnaHRtbC9NaWNyb0RhdGFJdGVtVmFsdWUuaWRsJywKICAgICAgICAg
ICAgICdodG1sL01lZGlhS2V5RXJyb3IuaWRsJywKLSAgICAgICAgICAgICdodG1sL01lZGlhS2V5
RXZlbnQuaWRsJywKKyAgICAgICAgICAgICdodG1sL01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbCcs
CisgICAgICAgICAgICAnaHRtbC9NZWRpYUtleU5lZWRlZEV2ZW50LmlkbCcsCiAgICAgICAgICAg
ICAnaHRtbC9SYWRpb05vZGVMaXN0LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9UZXh0TWV0cmlj
cy5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvVGltZVJhbmdlcy5pZGwnLApAQCAtNDIyMyw4ICs0
MjI0LDEwIEBACiAgICAgICAgICAgICAnaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcCcs
CiAgICAgICAgICAgICAnaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmgnLAogICAgICAgICAg
ICAgJ2h0bWwvTWVkaWFLZXlFcnJvci5oJywKLSAgICAgICAgICAgICdodG1sL01lZGlhS2V5RXZl
bnQuY3BwJywKLSAgICAgICAgICAgICdodG1sL01lZGlhS2V5RXZlbnQuaCcsCisgICAgICAgICAg
ICAnaHRtbC9NZWRpYUtleU1lc3NnZUV2ZW50LmNwcCcsCisgICAgICAgICAgICAnaHRtbC9NZWRp
YUtleU1lc3NhZ2VFdmVudC5oJywKKyAgICAgICAgICAgICdodG1sL01lZGlhS2V5TmVlZGVkRXZl
bnQuY3BwJywKKyAgICAgICAgICAgICdodG1sL01lZGlhS2V5TmVlZGVkRXZlbnQuaCcsCiAgICAg
ICAgICAgICAnaHRtbC9NaWNyb0RhdGFJdGVtVmFsdWUuY3BwJywKICAgICAgICAgICAgICdodG1s
L01pY3JvRGF0YUl0ZW1WYWx1ZS5oJywKICAgICAgICAgICAgICdodG1sL01vbnRoSW5wdXRUeXBl
LmNwcCcsCkBAIC03NzIxLDggKzc3MjQsMTAgQEAKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFFcnJvci5oJywKICAgICAgICAgICAgICc8
KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFLZXlFcnJvci5jcHAn
LAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNN
ZWRpYUtleUVycm9yLmgnLAotICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNNZWRpYUtleUV2ZW50LmNwcCcsCi0gICAgICAgICAgICAnPChQUk9EVUNU
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhS2V5RXZlbnQuaCcsCisgICAgICAg
ICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhS2V5TWVz
c2FnZUV2ZW50LmNwcCcsCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU01lZGlhS2V5TWVzc2FnZUV2ZW50LmgnLAorICAgICAgICAgICAgJzwoUFJP
RFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUtleU5lZWRlZEV2ZW50LmNw
cCcsCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U01lZGlhS2V5TmVlZGVkRXZlbnQuaCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhTGlzdC5jcHAnLAogICAgICAgICAgICAgJzwoUFJP
RFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUxpc3QuaCcsCiAgICAgICAg
ICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhUXVlcnlM
aXN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMjBkYjhmNDQ0MTRjZWFlYTRjZjU4ZGUzMTE0Y2I3YzFkYjc3ODUyYi4u
MTBjZjFlY2M0NjY2MDkzODVhOTE2NjEyODc1YTM1NTJmODYyOTVkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTg1OCw2ICs1
ODU4LDcgQEAKIAkJQ0FFOUY5MTAxNDY0NDFGMDAwQzI0NUIxIC8qIENTU1ZhcmlhYmxlVmFsdWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBRTlGOTBF
MTQ2NDQxRjAwMEMyNDVCMSAvKiBDU1NWYXJpYWJsZVZhbHVlLmggKi87IH07CiAJCUNEMTI3REVE
MTRGMzA5N0QwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMTI3REVCMTRGMzA5NzkwMEU4
NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbSAqLzsgfTsKIAkJQ0QxMjdERUUxNEYz
MDk4NDAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RFQTE0RjMwOTc5MDBFODQ3Nzkg
LyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlDRDFCNEE2NTE2MDc4NkFFMDAyODJERjkgLyogTWVkaWFL
ZXlOZWVkZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREE5OERDMjE2MDE0RUVFMDBGRUEzQjEgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5j
cHAgKi87IH07CiAJCUNEMjdGNkU1MTQ1NzY4NUEwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3
RjZFMjE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlD
RDI3RjZFNzE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkU2MTQ1NzcwRDMwMDc4
MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlDRDM3QjM5ODE1QzFCOTcxMDA2
REM4OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzdCMzc0MTVDMUE3RTEwMDZEQzg5OCAvKiBEaWFn
bm9zdGljTG9nZ2luZ0tleXMuY3BwICovOyB9OwpAQCAtNTg2OCw2ICs1ODY5LDE2IEBACiAJCUNE
ODIwMzBEMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250
cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0Q4MjAzMDkxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0Nv
bnRyb2xsZXIubW0gKi87IH07CiAJCUNEODIwMzEwMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5k
b3dBbmltYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDgyMDMxMTEz
OTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4MjAzMEYxMzk1QUNFNzAwRjk1NkM2IC8q
IFdlYldpbmRvd0FuaW1hdGlvbi5tbSAqLzsgfTsKKwkJQ0RBOThEQTMxNjAxNDY0MTAwRkVBM0Ix
IC8qIEpTTWVkaWFLZXlFcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREE5OEQ5QjE2MDEyOEE1MDBGRUEzQjEgLyogSlNNZWRpYUtleUVycm9y
LmNwcCAqLzsgfTsKKwkJQ0RBOThERDQxNjAxNUY3MzAwRkVBM0IxIC8qIEpTTWVkaWFLZXlzQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
QTk4REQyMTYwMTVERTkwMEZFQTNCMSAvKiBKU01lZGlhS2V5c0N1c3RvbS5jcHAgKi87IH07CisJ
CUNEQTk4REQ4MTYwMjVCRUYwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERENTE2MDI1
QkVEMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwICovOyB9OworCQlDREE5OERE
RjE2MDI2QTM3MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OEREQjE2MDI2QTE4MDBG
RUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgKi87IH07CisJCUNEQTk4REUwMTYw
MjZBMzcwMEZFQTNCMSAvKiBKU01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEREQxNjAyNkExOTAwRkVBM0Ix
IC8qIEpTTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgKi87IH07CisJCUNEQTk4RTA0MTYwMzlFMUEw
MEZFQTNCMSAvKiBKU01lZGlhS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREE5OERDRTE2MDE1OTc5MDBGRUEzQjEgLyogSlNNZWRpYUtleXMu
Y3BwICovOyB9OworCQlDREE5OEUwNjE2MDM5RTFGMDBGRUEzQjEgLyogSlNNZWRpYUtleVNlc3Np
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RB
OThERDAxNjAxNTk3OTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlTZXNzaW9uLmNwcCAqLzsgfTsKKwkJ
Q0RBOThFMEIxNjAzQ0Q2MDAwRkVBM0IxIC8qIENETS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OEUwOTE2MDNDRDU5MDBGRUEzQjEgLyogQ0RN
LmNwcCAqLzsgfTsKKwkJQ0RBOThFMEQxNjAzRkU0QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERDQTE2
MDE1MDhBMDBGRUEzQjEgLyogTWVkaWFLZXlzLmNwcCAqLzsgfTsKKwkJQ0RBOThFMEUxNjAzRkU1
ODAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERDNzE2MDE0RjJDMDBGRUEzQjEgLyogTWVkaWFL
ZXlTZXNzaW9uLmNwcCAqLzsgfTsKIAkJQ0RBQThEMEExNEQ3MUIyRTAwNjFFQTYwIC8qIFBsYXRm
b3JtQ2xvY2tDTS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQUE4RDA4MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gKi87IH07
CiAJCUNERDUyNUQ3MTQ1QjZERDAwMDhEMjA0RCAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVD
Q0MxNDVCNkFGRTAwQzRDN0FBIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgKi87IH07
CiAJCUNERUE3NjMwMTQ2MDhBNTMwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MkUxNDYwODRE
RTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi87IH07CkBAIC0xMzIxMCw2ICsxMzIy
MSwzNCBAQAogCQlDRDgyMDMwOTEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVu
SFVEV2luZG93Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5k
b3dBbmltYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViV2luZG93
QW5pbWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzBGMTM5NUFD
RTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJXaW5kb3dBbmltYXRpb24ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQTk4RDlCMTYwMTI4QTUwMEZFQTNCMSAvKiBKU01lZGlhS2V5RXJy
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYUtleUVy
cm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEOUMxNjAxMjhBNTAw
RkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU01lZGlhS2V5RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
OThEQzAxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5RXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFLZXlFcnJvci5oOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QTk4REMxMTYwMTRFRUUwMEZFQTNCMSAvKiBNZWRpYUtleUVycm9yLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IG5hbWUgPSBNZWRpYUtleUVycm9yLmlkbDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlFcnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4
REMyMTYwMTRFRUUwMEZFQTNCMSAvKiBNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwOyBwYXRo
ID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQzMxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlh
S2V5TmVlZGVkRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFL
ZXlOZWVkZWRFdmVudC5oOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5l
ZWRlZEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REM0MTYwMTRF
RUUwMEZFQTNCMSAvKiBNZWRpYUtleU5lZWRlZEV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5h
bWUgPSBNZWRpYUtleU5lZWRlZEV2ZW50LmlkbDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQTk4REM3MTYwMTRGMkMwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTWVkaWFLZXlTZXNzaW9uLmNwcDsgcGF0aCA9
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQzgxNjAxNEYyQzAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vz
c2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYUtleVNlc3Npb24u
aDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REM5MTYwMTRGNDAwMEZFQTNCMSAvKiBNZWRp
YUtleVNlc3Npb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE1lZGlhS2V5U2Vzc2lvbi5p
ZGw7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RENBMTYwMTUwOEEwMEZFQTNCMSAvKiBN
ZWRpYUtleXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTWVkaWFL
ZXlzLmNwcDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQ0IxNjAxNTA4QTAwRkVBM0IxIC8qIE1l
ZGlhS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYUtleXMuaDsg
cGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQTk4RENDMTYwMTUwOEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE1lZGlhS2V5cy5pZGw7IHBhdGggPSBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQTk4RENFMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5cy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5cy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQTk4RENGMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5cy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhS2V5cy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OEREMDE2MDE1OTc5MDBGRUEzQjEgLyogSlNNZWRp
YUtleVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNN
ZWRpYUtleVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERE
MTE2MDE1OTc5MDBGRUEzQjEgLyogSlNNZWRpYUtleVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUtleVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBOThERDIxNjAxNURFOTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlzQ3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFLZXlzQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThERDUxNjAyNUJFRDAw
RkVBM0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcDsgcGF0aCA9IE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREE5OERENjE2MDI1QkVEMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdl
RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFLZXlNZXNzYWdl
RXZlbnQuaDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThERDcxNjAyNUJFRTAwRkVB
M0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBN
ZWRpYUtleU1lc3NhZ2VFdmVudC5pZGw7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5TWVzc2FnZUV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
OThEREIxNjAyNkExODAwRkVBM0IxIC8qIEpTTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQTk4RERDMTYwMjZBMTkwMEZFQTNCMSAvKiBKU01lZGlhS2V5TWVz
c2FnZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFLZXlNZXNzYWdlRXZlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEREQxNjAyNkExOTAwRkVBM0IxIC8qIEpT
TWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5TmVl
ZGVkRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERERTE2MDI2
QTE5MDBGRUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
TWVkaWFLZXlOZWVkZWRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5
OEUwOTE2MDNDRDU5MDBGRUEzQjEgLyogQ0RNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENETS5j
cHA7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQTk4RTBBMTYwM0NENTkwMEZFQTNCMSAvKiBDRE0uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQ0RNLmg7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OEUwQzE2MDNDRjNDMDBGRUEzQjEgLyogQ0RN
UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RB
QThEMDcxNEQzODU2MDAwNjFFQTYwIC8qIFBsYXRmb3JtQ2xvY2tDTS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUNsb2NrQ00uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0RBQThEMDgxNEQzODU2MDAwNjFFQTYwIC8qIFBsYXRmb3JtQ2xvY2tDTS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtQ2xvY2tD
TS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCRDkzQkExMzMzQkQ0QjAwMjU3
MEUzIC8qIGZ1bGxzY3JlZW5RdWlja1RpbWUuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGgg
PSBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE0MzYwLDYgKzE0Mzk5LDcgQEAKIAkJMTRERkIzM0YwQTdERjc2MzAwMThGNzY5IC8qIERlcml2
ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJQ0RBOThEQ0QxNjAxNTE1QzAwRkVBM0IxIC8qIEVuY3J5cHRlZE1lZGlhICovLAogCQkJCUE4
M0I3OTEwMENDQjAwMUIwMDBCMDgyNSAvKiBDb3JlICovLAogCQkJCUE4M0I3OTBFMENDQUZGOTcw
MDBCMDgyNSAvKiBDU1MgKi8sCiAJCQkJN0I3RjY4NkQxNTc2QkZBMTAwM0ZBQkYyIC8qIEVkaXRp
bmcgKi8sCkBAIC0xNzc0NCw2ICsxNzc4NCw3IEBACiAJCTk3MTE0NUZFMTRFRjAwNkUwMDY3NEZE
OSAvKiBNb2R1bGVzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQlDREE5OERCRDE2MDE0RTA4MDBGRUEzQjEgLyogZW5jcnlwdGVkbWVkaWEgKi8sCiAJCQkJ
OTcxMTQ1RkYxNEVGMDA3OTAwNjc0RkQ5IC8qIGdlb2xvY2F0aW9uICovLAogCQkJCTk3MTJBNTUz
MTUwMDRFM0MwMDQ4QUYxMCAvKiBpbmRleGVkZGIgKi8sCiAJCQkJQjFBOTQyREQxNUI1Q0UyMjAw
RDUyNUQxIC8qIG1lZGlhc291cmNlICovLApAQCAtMjA0NjMsNiArMjA1MDQsNyBAQAogCQkJCUJD
REZENDkxMEUzMDU2QkQwMDlEMTBBRCAvKiBKU1hNTEh0dHBSZXF1ZXN0VXBsb2FkQ3VzdG9tLmNw
cCAqLywKIAkJCQlBMUM3RkFBMTEzM0E1RDM1MDBENjczMkQgLyogSlNYUGF0aFJlc3VsdEN1c3Rv
bS5jcHAgKi8sCiAJCQkJQkNFRkUxRTQwRENBNUYzMzAwNzM5MjE5IC8qIEpTWFNMVFByb2Nlc3Nv
ckN1c3RvbS5jcHAgKi8sCisJCQkJQ0RBOThERDIxNjAxNURFOTAwRkVBM0IxIC8qIEpTTWVkaWFL
ZXlzQ3VzdG9tLmNwcCAqLywKIAkJCSk7CiAJCQluYW1lID0gQ3VzdG9tOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTIwOTQwLDYgKzIwOTgyLDQ3IEBACiAJCQluYW1lID0gYXVkaW87
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlDREE5OERCRDE2MDE0RTA4MDBG
RUEzQjEgLyogZW5jcnlwdGVkbWVkaWEgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCUNEQTk4REMwMTYwMTRFRUUwMEZFQTNCMSAvKiBNZWRpYUtleUVycm9y
LmggKi8sCisJCQkJQ0RBOThEQzExNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5RXJyb3IuaWRs
ICovLAorCQkJCUNEQTk4REQ1MTYwMjVCRUQwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVu
dC5jcHAgKi8sCisJCQkJQ0RBOThERDYxNjAyNUJFRDAwRkVBM0IxIC8qIE1lZGlhS2V5TWVzc2Fn
ZUV2ZW50LmggKi8sCisJCQkJQ0RBOThERDcxNjAyNUJFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TWVz
c2FnZUV2ZW50LmlkbCAqLywKKwkJCQlDREE5OERDMjE2MDE0RUVFMDBGRUEzQjEgLyogTWVkaWFL
ZXlOZWVkZWRFdmVudC5jcHAgKi8sCisJCQkJQ0RBOThEQzMxNjAxNEVFRTAwRkVBM0IxIC8qIE1l
ZGlhS2V5TmVlZGVkRXZlbnQuaCAqLywKKwkJCQlDREE5OERDNDE2MDE0RUVFMDBGRUEzQjEgLyog
TWVkaWFLZXlOZWVkZWRFdmVudC5pZGwgKi8sCisJCQkJQ0RBOThEQ0ExNjAxNTA4QTAwRkVBM0Ix
IC8qIE1lZGlhS2V5cy5jcHAgKi8sCisJCQkJQ0RBOThEQ0IxNjAxNTA4QTAwRkVBM0IxIC8qIE1l
ZGlhS2V5cy5oICovLAorCQkJCUNEQTk4RENDMTYwMTUwOEEwMEZFQTNCMSAvKiBNZWRpYUtleXMu
aWRsICovLAorCQkJCUNEQTk4REM3MTYwMTRGMkMwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24u
Y3BwICovLAorCQkJCUNEQTk4REM4MTYwMTRGMkMwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24u
aCAqLywKKwkJCQlDREE5OERDOTE2MDE0RjQwMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmlk
bCAqLywKKwkJCQlDREE5OEUwOTE2MDNDRDU5MDBGRUEzQjEgLyogQ0RNLmNwcCAqLywKKwkJCQlD
REE5OEUwQTE2MDNDRDU5MDBGRUEzQjEgLyogQ0RNLmggKi8sCisJCQkJQ0RBOThFMEMxNjAzQ0Yz
QzAwRkVBM0IxIC8qIENETVByaXZhdGUuaCAqLywKKwkJCSk7CisJCQluYW1lID0gZW5jcnlwdGVk
bWVkaWE7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDREE5OERDRDE2MDE1
MTVDMDBGRUEzQjEgLyogRW5jcnlwdGVkTWVkaWEgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCUNEQTk4RDlCMTYwMTI4QTUwMEZFQTNCMSAvKiBKU01lZGlh
S2V5RXJyb3IuY3BwICovLAorCQkJCUNEQTk4RDlDMTYwMTI4QTUwMEZFQTNCMSAvKiBKU01lZGlh
S2V5RXJyb3IuaCAqLywKKwkJCQlDREE5OEREQjE2MDI2QTE4MDBGRUEzQjEgLyogSlNNZWRpYUtl
eU1lc3NhZ2VFdmVudC5jcHAgKi8sCisJCQkJQ0RBOThEREMxNjAyNkExOTAwRkVBM0IxIC8qIEpT
TWVkaWFLZXlNZXNzYWdlRXZlbnQuaCAqLywKKwkJCQlDREE5OERERDE2MDI2QTE5MDBGRUEzQjEg
LyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCAqLywKKwkJCQlDREE5OERERTE2MDI2QTE5MDBG
RUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmggKi8sCisJCQkJQ0RBOThEQ0UxNjAxNTk3
OTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlzLmNwcCAqLywKKwkJCQlDREE5OERDRjE2MDE1OTc5MDBG
RUEzQjEgLyogSlNNZWRpYUtleXMuaCAqLywKKwkJCQlDREE5OEREMDE2MDE1OTc5MDBGRUEzQjEg
LyogSlNNZWRpYUtleVNlc3Npb24uY3BwICovLAorCQkJCUNEQTk4REQxMTYwMTU5NzkwMEZFQTNC
MSAvKiBKU01lZGlhS2V5U2Vzc2lvbi5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBFbmNyeXB0ZWRN
ZWRpYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCURGOUFGRDZGMTNGQzMx
QjAwMDE1RkVCNyAvKiBvYmpjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKQEAgLTI4NjY5LDYgKzI4NzUyLDE3IEBACiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEz
Mzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIxMzdCNjUx
ODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRGMUQxMUJGMTVG
RjM3MjAwMDI2RTkwOCAvKiBQbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlDREE5OERBMzE2MDE0NjQxMDBGRUEzQjEgLyogSlNNZWRpYUtleUVycm9y
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4REQ0MTYwMTVGNzMwMEZFQTNCMSAvKiBKU01l
ZGlhS2V5c0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OEREODE2MDI1QkVGMDBG
RUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RB
OThEREYxNjAyNkEzNzAwRkVBM0IxIC8qIEpTTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQ0RBOThERTAxNjAyNkEzNzAwRkVBM0IxIC8qIEpTTWVkaWFLZXlOZWVk
ZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OEUwNDE2MDM5RTFBMDBGRUEzQjEg
LyogSlNNZWRpYUtleXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThFMDYxNjAzOUUxRjAw
RkVBM0IxIC8qIEpTTWVkaWFLZXlTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4
RTBCMTYwM0NENjAwMEZFQTNCMSAvKiBDRE0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThF
MEQxNjAzRkU0QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlD
REE5OEUwRTE2MDNGRTU4MDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUNEMUI0QTY1MTYwNzg2QUUwMDI4MkRGOSAvKiBNZWRpYUtleU5lZWRlZEV2ZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNZWRpYUtleXNDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
ZWRpYUtleXNDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMWNlMWQwMjNjZjhhZmNmZWRiZjY1YjEx
ZmI2Y2QyMzRjOGY0MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01lZGlhS2V5c0N1c3RvbS5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTWVkaWFLZXlzLmgiCisjaW5jbHVkZSAiTWVk
aWFLZXlFcnJvci5oIgorI2luY2x1ZGUgIk1lZGlhS2V5U2Vzc2lvbi5oIgorI2luY2x1ZGUgIk1l
ZGlhS2V5cy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworICAgIC8qCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTTWVkaWFLZXlzQ29uc3Ry
dWN0b3I6OmNvbnN0cnVjdEpTTWVkaWFLZXlzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU01l
ZGlhS2V5c0NvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PEpTTWVkaWFLZXlzQ29u
c3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CisgICAgaWYgKCFqc0NvbnN0cnVjdG9yKQorICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMs
ICJNZWRpYUtleXMgY29uc3RydWN0b3IgY2FsbGVlIGlzIHVuYXZhaWxhYmxlIikpOworCisgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGpzQ29uc3Ry
dWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJl
bmNlRXJyb3IoZXhlYywgIk1lZGlhS2V5cyBjb25zdHJ1Y3RvciBzY3JpcHQgZXhlY3V0aW9uIGNv
bnRleHQgaXMgdW5hdmFpbGFibGUiKSk7CisKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmlzRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVSZWZlcmVuY2VFcnJvcihleGVjLCAiTWVkaWFLZXlzIGNvbnN0cnVjdG9yIGNhbGxlZCBpbiBh
IHNjcmlwdCBleGVjdXRpb24gY29udGV4dCB3aGljaCBpcyBub3QgYSBkb2N1bWVudCIpKTsKKwor
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKworICAg
IFN0cmluZyBrZXlTeXN0ZW0gPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUmVmUHRyPE1lZGlhS2V5
cz4gbWVkaWFLZXlzID0gTWVkaWFLZXlzOjpjcmVhdGUoa2V5U3lzdGVtLCBlYyk7CisgICAgaWYg
KGVjKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICB9CisKKyAgICBpZiAoIW1lZGlhS2V5
cy5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVFcnJvcihl
eGVjLCAiRXJyb3IgY3JlYXRpbmcgTWVkaWFLZXlzIikpOworICAgIAorICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2Jh
bE9iamVjdCgpLCBNZWRpYUtleXMsIG1lZGlhS2V5cy5nZXQoKSkpOworfQorICAgICAqLworCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggYjNjZDg0NmVhODAxYmEzY2Q3
NjcyMWNiYTUyMWU5ZmEwMzM4YjJhMy4uNDJhYzI2YzU1NjcxMzdlMmI1MGY1ODJkZWY0MWJmMGJi
NTc4ZTU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0yNDQsNiArMjQ0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIFwKICAgICBtYWNybyh3ZWJraXRkZXZpY2Vwcm94aW1pdHkp
IFwKICAgICBcCisgICAgbWFjcm8obWVkaWFrZXkpIFwKIAogLy8gZW5kIG9mIERPTV9FVkVOVF9O
QU1FU19GT1JfRUFDSAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCmluZGV4IDllOWUwYzg2MzA3
YWQwMGVjODY3YThiYTY3NjQwZTBmYTA1MDBlNWUuLmM5ZmViYmVlMzM3NzMzYjM1ZTgwMDQ1NTNi
MzJmZDIzYjMxN2Q1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVz
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCkBAIC00Nyw1ICs0Nyw2
IEBAIERldmljZU1vdGlvbkV2ZW50IGNvbmRpdGlvbmFsPURFVklDRV9PUklFTlRBVElPTgogRGV2
aWNlT3JpZW50YXRpb25FdmVudCBjb25kaXRpb25hbD1ERVZJQ0VfT1JJRU5UQVRJT04KIERldmlj
ZVByb3hpbWl0eUV2ZW50IGNvbmRpdGlvbmFsPVBST1hJTUlUWV9FVkVOVFMKIE9yaWVudGF0aW9u
RXZlbnQgaW50ZXJmYWNlTmFtZT1FdmVudCwgY29uZGl0aW9uYWw9T1JJRU5UQVRJT05fRVZFTlRT
Ci1NZWRpYUtleUV2ZW50IGNvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQQorTWVkaWFLZXlNZXNz
YWdlRXZlbnQgY29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBCitNZWRpYUtleU5lZWRlZEV2ZW50
IGNvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQQogVHJhY2tFdmVudCBjb25kaXRpb25hbD1WSURF
T19UUkFDSwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9y
eS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggNzkx
YmQ0ZWRhNWNhMzdhZjQ1NzgzNjM0OTc3OTUxMzA3NGMyZDJmNC4uZGM5Nzg5OGZkZmIzNjQ5Mjk2
ODY3ZWQwMGNiYTgxNmY4YzQ2N2FiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRG
YWN0b3J5LmluCkBAIC0xNSw2ICsxNSw4IEBAIElEQlRyYW5zYWN0aW9uIGNvbmRpdGlvbmFsPUlO
REVYRURfREFUQUJBU0UKIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IGNvbmRpdGlvbmFsPUlOREVY
RURfREFUQUJBU0UKIEphdmFTY3JpcHRBdWRpb05vZGUgY29uZGl0aW9uYWw9V0VCX0FVRElPCiBM
b2NhbE1lZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQorTWVkaWFLZXlzIGNvbmRp
dGlvbmFsPUVOQ1JZUFRFRF9NRURJQQorTWVkaWFLZXlTZXNzaW9uIGNvbmRpdGlvbmFsPUVOQ1JZ
UFRFRF9NRURJQQogTWVkaWFDb250cm9sbGVyIGNvbmRpdGlvbmFsPVZJREVPCiBNZWRpYVNvdXJj
ZSBjb25kaXRpb25hbD1NRURJQV9TT1VSQ0UKIE1lZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1FRElB
X1NUUkVBTQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNWY1
Njc0NTE3NTQyZjYzOGY1ODcwZDNhYTYzMjVjYjNjYTgyNDJjNC4uN2VjM2FiZTdlOTdkOThmNTk1
YTVmNGEzYTlhNzI3NTk1NTQzYzU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC02MSw3ICs2MSw4IEBACiAjaW5jbHVkZSAiTWVkaWFFcnJvci5oIgogI2lu
Y2x1ZGUgIk1lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCIKICNpbmNsdWRlICJNZWRpYUtleUVycm9y
LmgiCi0jaW5jbHVkZSAiTWVkaWFLZXlFdmVudC5oIgorI2luY2x1ZGUgIk1lZGlhS2V5TWVzc2Fn
ZUV2ZW50LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlOZWVkZWRFdmVudC5oIgogI2luY2x1ZGUgIk1l
ZGlhTGlzdC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVy
eUV2YWx1YXRvci5oIgpAQCAtMTgwLDIzICsxODEsNiBAQCBzdGF0aWMgdm9pZCByZW1vdmVFbGVt
ZW50RnJvbURvY3VtZW50TWFwKEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQsIERvY3VtZW50KiBk
bwogICAgICAgICBtYXAuYWRkKGRvY3VtZW50LCBzZXQpOwogfQogCi0jaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKLXN0YXRpYyBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNvZGVGb3JNZWRpYUtl
eUV4Y2VwdGlvbihNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gZXhjZXB0aW9uKQotewot
ICAgIHN3aXRjaCAoZXhjZXB0aW9uKSB7Ci0gICAgY2FzZSBNZWRpYVBsYXllcjo6Tm9FcnJvcjoK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBNZWRpYVBsYXllcjo6SW52YWxpZFBsYXllclN0
YXRlOgotICAgICAgICByZXR1cm4gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgY2FzZSBNZWRpYVBs
YXllcjo6S2V5U3lzdGVtTm90U3VwcG9ydGVkOgotICAgICAgICByZXR1cm4gTk9UX1NVUFBPUlRF
RF9FUlI7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIElO
VkFMSURfU1RBVEVfRVJSOwotfQotI2VuZGlmCi0KIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRp
YUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KQogICAgICwgQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50LCB0aGlzKQpAQCAtMTc2OSw4NiAr
MTc1Myw2IEBAIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNvdXJjZVVSTCgp
IGNvbnN0CiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCi12b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5QWRkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCi17Ci0gICAgTWVkaWFL
ZXlFdmVudEluaXQgaW5pdGlhbGl6ZXI7Ci0gICAgaW5pdGlhbGl6ZXIua2V5U3lzdGVtID0ga2V5
U3lzdGVtOwotICAgIGluaXRpYWxpemVyLnNlc3Npb25JZCA9IHNlc3Npb25JZDsKLSAgICBpbml0
aWFsaXplci5idWJibGVzID0gZmFsc2U7Ci0gICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJsZSA9IGZh
bHNlOwotCi0gICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IE1lZGlhS2V5RXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkud2Via2l0a2V5YWRkZWRFdmVudCwgaW5pdGlhbGl6ZXIpOwotICAgIGV2ZW50
LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChl
dmVudC5yZWxlYXNlKCkpOwotfQotCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
S2V5RXJyb3IoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIE1lZGlhUGxheWVyQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSBlcnJv
ckNvZGUsIHVuc2lnbmVkIHNob3J0IHN5c3RlbUNvZGUpCi17Ci0gICAgTWVkaWFLZXlFcnJvcjo6
Q29kZSBtZWRpYUtleUVycm9yQ29kZSA9IE1lZGlhS2V5RXJyb3I6Ok1FRElBX0tFWUVSUl9VTktO
T1dOOwotICAgIHN3aXRjaCAoZXJyb3JDb2RlKSB7Ci0gICAgY2FzZSBNZWRpYVBsYXllckNsaWVu
dDo6VW5rbm93bkVycm9yOgotICAgICAgICBtZWRpYUtleUVycm9yQ29kZSA9IE1lZGlhS2V5RXJy
b3I6Ok1FRElBX0tFWUVSUl9VTktOT1dOOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlh
UGxheWVyQ2xpZW50OjpDbGllbnRFcnJvcjoKLSAgICAgICAgbWVkaWFLZXlFcnJvckNvZGUgPSBN
ZWRpYUtleUVycm9yOjpNRURJQV9LRVlFUlJfQ0xJRU5UOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIE1lZGlhUGxheWVyQ2xpZW50OjpTZXJ2aWNlRXJyb3I6Ci0gICAgICAgIG1lZGlhS2V5RXJy
b3JDb2RlID0gTWVkaWFLZXlFcnJvcjo6TUVESUFfS0VZRVJSX1NFUlZJQ0U7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgTWVkaWFQbGF5ZXJDbGllbnQ6Ok91dHB1dEVycm9yOgotICAgICAgICBt
ZWRpYUtleUVycm9yQ29kZSA9IE1lZGlhS2V5RXJyb3I6Ok1FRElBX0tFWUVSUl9PVVRQVVQ7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFQbGF5ZXJDbGllbnQ6OkhhcmR3YXJlQ2hhbmdl
RXJyb3I6Ci0gICAgICAgIG1lZGlhS2V5RXJyb3JDb2RlID0gTWVkaWFLZXlFcnJvcjo6TUVESUFf
S0VZRVJSX0hBUkRXQVJFQ0hBTkdFOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhUGxh
eWVyQ2xpZW50OjpEb21haW5FcnJvcjoKLSAgICAgICAgbWVkaWFLZXlFcnJvckNvZGUgPSBNZWRp
YUtleUVycm9yOjpNRURJQV9LRVlFUlJfRE9NQUlOOwotICAgICAgICBicmVhazsKLSAgICB9Ci0K
LSAgICBNZWRpYUtleUV2ZW50SW5pdCBpbml0aWFsaXplcjsKLSAgICBpbml0aWFsaXplci5rZXlT
eXN0ZW0gPSBrZXlTeXN0ZW07Ci0gICAgaW5pdGlhbGl6ZXIuc2Vzc2lvbklkID0gc2Vzc2lvbklk
OwotICAgIGluaXRpYWxpemVyLmVycm9yQ29kZSA9IE1lZGlhS2V5RXJyb3I6OmNyZWF0ZShtZWRp
YUtleUVycm9yQ29kZSk7Ci0gICAgaW5pdGlhbGl6ZXIuc3lzdGVtQ29kZSA9IHN5c3RlbUNvZGU7
Ci0gICAgaW5pdGlhbGl6ZXIuYnViYmxlcyA9IGZhbHNlOwotICAgIGluaXRpYWxpemVyLmNhbmNl
bGFibGUgPSBmYWxzZTsKLQotICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBNZWRpYUtleUV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtleWVycm9yRXZlbnQsIGluaXRpYWxpemVyKTsK
LSAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwotICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1
ZXVlRXZlbnQoZXZlbnQucmVsZWFzZSgpKTsKLX0KLQotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllcktleU1lc3NhZ2UoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1lc3NhZ2Us
IHVuc2lnbmVkIG1lc3NhZ2VMZW5ndGgpCi17Ci0gICAgTWVkaWFLZXlFdmVudEluaXQgaW5pdGlh
bGl6ZXI7Ci0gICAgaW5pdGlhbGl6ZXIua2V5U3lzdGVtID0ga2V5U3lzdGVtOwotICAgIGluaXRp
YWxpemVyLnNlc3Npb25JZCA9IHNlc3Npb25JZDsKLSAgICBpbml0aWFsaXplci5tZXNzYWdlID0g
VWludDhBcnJheTo6Y3JlYXRlKG1lc3NhZ2UsIG1lc3NhZ2VMZW5ndGgpOwotICAgIGluaXRpYWxp
emVyLmJ1YmJsZXMgPSBmYWxzZTsKLSAgICBpbml0aWFsaXplci5jYW5jZWxhYmxlID0gZmFsc2U7
Ci0KLSAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gTWVkaWFLZXlFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS53ZWJraXRrZXltZXNzYWdlRXZlbnQsIGluaXRpYWxpemVyKTsKLSAgICBldmVudC0+
c2V0VGFyZ2V0KHRoaXMpOwotICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZl
bnQucmVsZWFzZSgpKTsKLX0KLQotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktl
eU5lZWRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogaW5pdERhdGEsIHVuc2lnbmVkIGlu
aXREYXRhTGVuZ3RoKQotewotICAgIE1lZGlhS2V5RXZlbnRJbml0IGluaXRpYWxpemVyOwotICAg
IGluaXRpYWxpemVyLmtleVN5c3RlbSA9IGtleVN5c3RlbTsKLSAgICBpbml0aWFsaXplci5zZXNz
aW9uSWQgPSBzZXNzaW9uSWQ7Ci0gICAgaW5pdGlhbGl6ZXIuaW5pdERhdGEgPSBVaW50OEFycmF5
OjpjcmVhdGUoaW5pdERhdGEsIGluaXREYXRhTGVuZ3RoKTsKLSAgICBpbml0aWFsaXplci5idWJi
bGVzID0gZmFsc2U7Ci0gICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJsZSA9IGZhbHNlOwotCi0gICAg
UmVmUHRyPEV2ZW50PiBldmVudCA9IE1lZGlhS2V5RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
d2Via2l0bmVlZGtleUV2ZW50LCBpbml0aWFsaXplcik7Ci0gICAgZXZlbnQtPnNldFRhcmdldCh0
aGlzKTsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2Uo
KSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpwcm9ncmVzc0V2ZW50VGlt
ZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopCiB7CiAgICAgQVNTRVJUKG1fcGxheWVy
KTsKQEAgLTIzNzIsODggKzIyNzYsMTcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRTb3Vy
Y2VTdGF0ZShjb25zdCBTdHJpbmcmIHN0YXRlKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3ZWJraXRHZW5lcmF0ZUtleVJlcXVl
c3QoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIFBhc3NSZWZQdHI8VWludDhBcnJheT4gaW5pdERh
dGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmIChrZXlTeXN0ZW0uaXNFbXB0eSgpKSB7
Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmICghbV9wbGF5ZXIpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhUG9p
bnRlciA9IDA7Ci0gICAgdW5zaWduZWQgaW5pdERhdGFMZW5ndGggPSAwOwotICAgIGlmIChpbml0
RGF0YSkgewotICAgICAgICBpbml0RGF0YVBvaW50ZXIgPSBpbml0RGF0YS0+ZGF0YSgpOwotICAg
ICAgICBpbml0RGF0YUxlbmd0aCA9IGluaXREYXRhLT5sZW5ndGgoKTsKLSAgICB9Ci0KLSAgICBN
ZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gcmVzdWx0ID0gbV9wbGF5ZXItPmdlbmVyYXRl
S2V5UmVxdWVzdChrZXlTeXN0ZW0sIGluaXREYXRhUG9pbnRlciwgaW5pdERhdGFMZW5ndGgpOwot
ICAgIGVjID0gZXhjZXB0aW9uQ29kZUZvck1lZGlhS2V5RXhjZXB0aW9uKHJlc3VsdCk7Ci19Ci0K
LXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2Via2l0R2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICB3ZWJraXRHZW5lcmF0
ZUtleVJlcXVlc3Qoa2V5U3lzdGVtLCBVaW50OEFycmF5OjpjcmVhdGUoMCksIGVjKTsKLX0KLQot
dm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3ZWJraXRBZGRLZXkoY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0sIFBhc3NSZWZQdHI8VWludDhBcnJheT4ga2V5LCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGlu
aXREYXRhLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0g
ICAgaWYgKGtleVN5c3RlbS5pc0VtcHR5KCkpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFrZXkpIHsKLSAgICAgICAgZWMgPSBT
WU5UQVhfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFrZXktPmxlbmd0
aCgpKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoIW1fcGxheWVyKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFU
RV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb25zdCB1bnNpZ25lZCBjaGFy
KiBpbml0RGF0YVBvaW50ZXIgPSAwOwotICAgIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoID0gMDsK
LSAgICBpZiAoaW5pdERhdGEpIHsKLSAgICAgICAgaW5pdERhdGFQb2ludGVyID0gaW5pdERhdGEt
PmRhdGEoKTsKLSAgICAgICAgaW5pdERhdGFMZW5ndGggPSBpbml0RGF0YS0+bGVuZ3RoKCk7Ci0g
ICAgfQotCi0gICAgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIHJlc3VsdCA9IG1fcGxh
eWVyLT5hZGRLZXkoa2V5U3lzdGVtLCBrZXktPmRhdGEoKSwga2V5LT5sZW5ndGgoKSwgaW5pdERh
dGFQb2ludGVyLCBpbml0RGF0YUxlbmd0aCwgc2Vzc2lvbklkKTsKLSAgICBlYyA9IGV4Y2VwdGlv
bkNvZGVGb3JNZWRpYUtleUV4Y2VwdGlvbihyZXN1bHQpOwotfQotCi12b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OndlYmtpdEFkZEtleShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgUGFzc1JlZlB0cjxV
aW50OEFycmF5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIHdlYmtpdEFkZEtleShr
ZXlTeXN0ZW0sIGtleSwgVWludDhBcnJheTo6Y3JlYXRlKDApLCBTdHJpbmcoKSwgZWMpOwotfQot
Ci12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdENhbmNlbEtleVJlcXVlc3QoY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBFeGNlcHRpb25Db2RlJiBl
YykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5
ZXIqLCBVaW50OEFycmF5KiBpbml0RGF0YSkKIHsKLSAgICBpZiAoa2V5U3lzdGVtLmlzRW1wdHko
KSkgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoIW1fcGxheWVyKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRp
b24gcmVzdWx0ID0gbV9wbGF5ZXItPmNhbmNlbEtleVJlcXVlc3Qoa2V5U3lzdGVtLCBzZXNzaW9u
SWQpOwotICAgIGVjID0gZXhjZXB0aW9uQ29kZUZvck1lZGlhS2V5RXhjZXB0aW9uKHJlc3VsdCk7
CisgICAgTWVkaWFLZXlOZWVkZWRFdmVudEluaXQgaW5pdGlhbGl6ZXI7CisgICAgaW5pdGlhbGl6
ZXIuaW5pdERhdGEgPSBpbml0RGF0YTsKKyAgICBpbml0aWFsaXplci5idWJibGVzID0gZmFsc2U7
CisgICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJsZSA9IGZhbHNlOworICAgIAorICAgIFJlZlB0cjxF
dmVudD4gZXZlbnQgPSBNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndl
YmtpdG5lZWRrZXlFdmVudCwgaW5pdGlhbGl6ZXIpOworICAgIGV2ZW50LT5zZXRUYXJnZXQodGhp
cyk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChldmVudC5yZWxlYXNlKCkp
OwogfQotCiAjZW5kaWYKIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpsb29wKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggODIxZTIyODViNDFjZGNlYjA1
NjM3Y2RjYjUwMTg1ODk4ZTViZDlkMC4uNDcyZDU2YTQ4YjI3MGI3NTNiZmFiZGNkNDg0NmFhYjM4
ZTc3NTFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTE3OSwx
NSArMTc5LDYgQEAgcHVibGljOgogI2VuZGlmIAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKLSAgICB2b2lkIHdlYmtpdEdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSwgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YSwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIHZvaWQgd2Via2l0R2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB3ZWJraXRBZGRLZXkoY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0sIFBhc3NSZWZQdHI8VWludDhBcnJheT4ga2V5LCBQYXNzUmVmUHRyPFVpbnQ4QXJy
YXk+IGluaXREYXRhLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIHZvaWQgd2Via2l0QWRkS2V5KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBQYXNzUmVmUHRy
PFVpbnQ4QXJyYXk+IGtleSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgd2Via2l0Q2FuY2Vs
S2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIod2Via2l0a2V5YWRkZWQpOwotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
d2Via2l0a2V5ZXJyb3IpOwotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Vi
a2l0a2V5bWVzc2FnZSk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJr
aXRuZWVka2V5KTsKICNlbmRpZgogCkBAIC00MTEsMTMgKzQwMiw2IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJTb3VyY2VVUkwoKSBjb25zdDsKICNlbmRpZgogCi0j
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJL
ZXlBZGRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5
RXJyb3IoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIE1lZGlhUGxheWVyQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSwgdW5zaWdu
ZWQgc2hvcnQgc3lzdGVtQ29kZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxh
eWVyS2V5TWVzc2FnZShNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogbWVzc2FnZSwgdW5zaWdu
ZWQgbWVzc2FnZUxlbmd0aCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
S2V5TmVlZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbml0RGF0YSwgdW5zaWduZWQg
aW5pdERhdGFMZW5ndGgpIE9WRVJSSURFOwotI2VuZGlmCi0KICAgICB2aXJ0dWFsIFN0cmluZyBt
ZWRpYVBsYXllclJlZmVycmVyKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcg
bWVkaWFQbGF5ZXJVc2VyQWdlbnQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIENPUlNN
b2RlIG1lZGlhUGxheWVyQ09SU01vZGUoKSBjb25zdCBPVkVSUklERTsKQEAgLTQ0MCw2ICs0MjQs
MTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEdyYXBoaWNzRGV2aWNlQWRhcHRlciogbWVkaWFQ
bGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29uc3QgTWVkaWFQbGF5ZXIqKSBjb25zdCBPVkVS
UklERTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2aXJ0dWFs
IHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBVaW50OEFycmF5KiBpbml0
RGF0YSkgT1ZFUlJJREU7CisjZW5kaWYKKwogICAgIHZvaWQgbG9hZFRpbWVyRmlyZWQoVGltZXI8
SFRNTE1lZGlhRWxlbWVudD4qKTsKICAgICB2b2lkIHByb2dyZXNzRXZlbnRUaW1lckZpcmVkKFRp
bWVyPEhUTUxNZWRpYUVsZW1lbnQ+Kik7CiAgICAgdm9pZCBwbGF5YmFja1Byb2dyZXNzVGltZXJG
aXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5pZGwKaW5kZXggYjZhMGE2MzZmMTY1MjY1YWMxNTUxOWI0Mzc1YjI2M2NjMjli
NjYwOS4uMzQ0MDRlN2E5OGQyZWIzMDk4MTdiNDZhOWFmZmJiYzRmNzAyNTZjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCkBAIC05NiwxNiArOTYsNiBAQCBtb2R1
bGUgaHRtbCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb25kaXRpb25hbD1NRURJQV9TVEFU
SVNUSUNTXSB1bnNpZ25lZCBsb25nIHdlYmtpdFZpZGVvRGVjb2RlZEJ5dGVDb3VudDsKIAogI2lm
IGRlZmluZWQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFX0VOQ1JZUFRFRF9NRURJ
QQotICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIHZvaWQgd2Via2l0R2Vu
ZXJhdGVLZXlSZXF1ZXN0KGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5l
ZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBrZXlTeXN0ZW0sIGluIFtPcHRpb25hbF0gVWludDhB
cnJheSBpbml0RGF0YSkKLSAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwotICAgIFtWOEVu
YWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIHZvaWQgd2Via2l0QWRkS2V5KGluIFtUcmVh
dE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmlu
ZyBrZXlTeXN0ZW0sIGluIFVpbnQ4QXJyYXkga2V5LCBpbiBbT3B0aW9uYWxdIFVpbnQ4QXJyYXkg
aW5pdERhdGEsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNOdWxsU3RyaW5nXSBET01TdHJpbmcgc2Vz
c2lvbklkKQotICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0gICAgW1Y4RW5hYmxlZEF0
UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gdm9pZCB3ZWJraXRDYW5jZWxLZXlSZXF1ZXN0KGluIFtU
cmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0
cmluZyBrZXlTeXN0ZW0sIGluIFtPcHRpb25hbD1EZWZhdWx0SXNOdWxsU3RyaW5nXSBET01TdHJp
bmcgc2Vzc2lvbklkKQotICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0KLSAgICBhdHRy
aWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gRXZlbnRMaXN0ZW5lciBv
bndlYmtpdGtleWFkZGVkOwotICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5
cHRlZE1lZGlhXSBFdmVudExpc3RlbmVyIG9ud2Via2l0a2V5ZXJyb3I7Ci0gICAgYXR0cmlidXRl
IFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJr
aXRrZXltZXNzYWdlOwogICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRl
ZE1lZGlhXSBFdmVudExpc3RlbmVyIG9ud2Via2l0bmVlZGtleTsKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXJyb3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFLZXlFcnJvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMmM3
MzZkNDg3YTNmNGMwNzE2NWI0YzY1MjhlZmQ5OTljZjc1ZGUyLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlF
cnJvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRl
ZiBNZWRpYUtleUVycm9yX2gKLSNkZWZpbmUgTWVkaWFLZXlFcnJvcl9oCi0KLSNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQotCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE1lZGlh
S2V5RXJyb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUtleUVycm9yPiB7Ci1wdWJsaWM6Ci0g
ICAgZW51bSBDb2RlIHsKLSAgICAgICAgTUVESUFfS0VZRVJSX1VOS05PV04gPSAxLAotICAgICAg
ICBNRURJQV9LRVlFUlJfQ0xJRU5ULAotICAgICAgICBNRURJQV9LRVlFUlJfU0VSVklDRSwKLSAg
ICAgICAgTUVESUFfS0VZRVJSX09VVFBVVCwKLSAgICAgICAgTUVESUFfS0VZRVJSX0hBUkRXQVJF
Q0hBTkdFLAotICAgICAgICBNRURJQV9LRVlFUlJfRE9NQUlOCi0gICAgfTsKLQotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE1lZGlhS2V5RXJyb3I+IGNyZWF0ZShDb2RlIGNvZGUpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYUtleUVycm9yKGNvZGUpKTsgfQotCi0gICAgQ29kZSBjb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9jb2RlOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgTWVkaWFLZXlF
cnJvcihDb2RlIGNvZGUpIDogbV9jb2RlKGNvZGUpIHsgfQotCi0gICAgQ29kZSBtX2NvZGU7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXJyb3IuaWRsIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUtleUVycm9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTVi
OWIwNGQwZjdmNTczZTM5NDA2ZTJhMTExYjQ3NmFhZDkyYjg5My4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5
RXJyb3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotbW9k
dWxlIGh0bWwgewotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPUVOQ1JZUFRF
RF9NRURJQSwKLSAgICAgICAgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhLCAKLSAg
ICBdIE1lZGlhS2V5RXJyb3IgewotICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9L
RVlFUlJfVU5LTk9XTiA9IDE7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0tF
WUVSUl9DTElFTlQgPSAyOwotICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9LRVlF
UlJfU0VSVklDRSA9IDM7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0tFWUVS
Ul9PVVRQVVQgPSA0OwotICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9LRVlFUlJf
SEFSRFdBUkVDSEFOR0UgPSA1OwotICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9L
RVlFUlJfRE9NQUlOID0gNjsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNo
b3J0IGNvZGU7Ci0gICAgfTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFLZXlFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXZlbnQuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjYyZGJjNDkwOWViMjNlMzFjOWM3NTc3Zjhj
MjQzZTIyMjJiN2M3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVudC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQotCi0jaW5jbHVkZSAiTWVkaWFLZXlFdmVudC5oIgotCi0j
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotTWVkaWFLZXlFdmVudEluaXQ6Ok1lZGlhS2V5RXZlbnRJbml0
KCkKLSAgICA6IHN5c3RlbUNvZGUoMCkKLXsKLX0KLQotTWVkaWFLZXlFdmVudDo6TWVkaWFLZXlF
dmVudCgpCi17Ci19Ci0KLU1lZGlhS2V5RXZlbnQ6Ok1lZGlhS2V5RXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBjb25zdCBNZWRpYUtleUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCi0gICAg
OiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKLSAgICAsIG1fa2V5U3lzdGVtKGluaXRpYWxpemVy
LmtleVN5c3RlbSkKLSAgICAsIG1fc2Vzc2lvbklkKGluaXRpYWxpemVyLnNlc3Npb25JZCkKLSAg
ICAsIG1faW5pdERhdGEoaW5pdGlhbGl6ZXIuaW5pdERhdGEpCi0gICAgLCBtX21lc3NhZ2UoaW5p
dGlhbGl6ZXIubWVzc2FnZSkKLSAgICAsIG1fZGVmYXVsdFVSTChpbml0aWFsaXplci5kZWZhdWx0
VVJMKQotICAgICwgbV9lcnJvckNvZGUoaW5pdGlhbGl6ZXIuZXJyb3JDb2RlKQotICAgICwgbV9z
eXN0ZW1Db2RlKGluaXRpYWxpemVyLnN5c3RlbUNvZGUpCi17Ci19Ci0KLU1lZGlhS2V5RXZlbnQ6
On5NZWRpYUtleUV2ZW50KCkKLXsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUtleUV2
ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZXZlbnROYW1lcygpLmlu
dGVyZmFjZUZvck1lZGlhS2V5RXZlbnQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXZlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzYjBkNjYzZTJjODQ4MzJlZTYyZDIwZTVhY2E3MzE3NTVhMGY0YzhiLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFLZXlFdmVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2lmbmRlZiBNZWRpYUtleUV2ZW50X2gKLSNkZWZpbmUgTWVkaWFLZXlFdmVudF9o
Ci0KLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotCi0jaW5jbHVkZSAiRXZlbnQuaCIKLSNp
bmNsdWRlICJNZWRpYUtleUVycm9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0
IE1lZGlhS2V5RXZlbnRJbml0IDogcHVibGljIEV2ZW50SW5pdCB7Ci0gICAgTWVkaWFLZXlFdmVu
dEluaXQoKTsKLQotICAgIFN0cmluZyBrZXlTeXN0ZW07Ci0gICAgU3RyaW5nIHNlc3Npb25JZDsK
LSAgICBSZWZQdHI8VWludDhBcnJheT4gaW5pdERhdGE7Ci0gICAgUmVmUHRyPFVpbnQ4QXJyYXk+
IG1lc3NhZ2U7Ci0gICAgU3RyaW5nIGRlZmF1bHRVUkw7Ci0gICAgUmVmUHRyPE1lZGlhS2V5RXJy
b3I+IGVycm9yQ29kZTsKLSAgICB1bnNpZ25lZCBzaG9ydCBzeXN0ZW1Db2RlOwotfTsKLQotY2xh
c3MgTWVkaWFLZXlFdmVudCA6IHB1YmxpYyBFdmVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+
TWVkaWFLZXlFdmVudCgpOwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFLZXlFdmVudD4g
Y3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFLZXlFdmVu
dCk7Ci0gICAgfQotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFLZXlFdmVudD4gY3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlFdmVudEluaXQmIGluaXRp
YWxpemVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUtleUV2ZW50
KHR5cGUsIGluaXRpYWxpemVyKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKLQotICAgIFN0cmluZyBrZXlTeXN0ZW0oKSBj
b25zdCB7IHJldHVybiBtX2tleVN5c3RlbTsgfQotICAgIFN0cmluZyBzZXNzaW9uSWQoKSBjb25z
dCB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQotICAgIFVpbnQ4QXJyYXkqIGluaXREYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9pbml0RGF0YS5nZXQoKTsgfQotICAgIFVpbnQ4QXJyYXkqIG1lc3NhZ2Uo
KSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2UuZ2V0KCk7IH0KLSAgICBTdHJpbmcgZGVmYXVsdFVS
TCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFVSTDsgfQotICAgIE1lZGlhS2V5RXJyb3IqIGVy
cm9yQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JDb2RlLmdldCgpOyB9Ci0gICAgdW5zaWdu
ZWQgc2hvcnQgc3lzdGVtQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtQ29kZTsgfQotCi1w
cml2YXRlOgotICAgIE1lZGlhS2V5RXZlbnQoKTsKLSAgICBNZWRpYUtleUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlFdmVudEluaXQmIGluaXRpYWxpemVyKTsK
LQotICAgIFN0cmluZyBtX2tleVN5c3RlbTsKLSAgICBTdHJpbmcgbV9zZXNzaW9uSWQ7Ci0gICAg
UmVmUHRyPFVpbnQ4QXJyYXk+IG1faW5pdERhdGE7Ci0gICAgUmVmUHRyPFVpbnQ4QXJyYXk+IG1f
bWVzc2FnZTsKLSAgICBTdHJpbmcgbV9kZWZhdWx0VVJMOwotICAgIFJlZlB0cjxNZWRpYUtleUVy
cm9yPiBtX2Vycm9yQ29kZTsKLSAgICB1bnNpZ25lZCBzaG9ydCBtX3N5c3RlbUNvZGU7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUtleUV2ZW50LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjEzODdk
Y2ZjNDcwMDdhZDc1ZTgyZmRmYzgzYTlkN2JlYmU3MzY1Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXZl
bnQuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotbW9kdWxl
IGh0bWwgewotCi0gICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9RU5DUllQVEVE
X01FRElBLAotICAgICAgICBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWEsCi0gICAg
ICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQgCi0gICAgXSBNZWRpYUtleUV2ZW50IDogRXZl
bnQgewotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0luaXRpYWxpemVkQnlFdmVudENvbnN0
cnVjdG9yXSBET01TdHJpbmcga2V5U3lzdGVtOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
W0luaXRpYWxpemVkQnlFdmVudENvbnN0cnVjdG9yXSBET01TdHJpbmcgc2Vzc2lvbklkOwotICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0luaXRpYWxpemVkQnlFdmVudENvbnN0cnVjdG9yXSBV
aW50OEFycmF5IGluaXREYXRhOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0luaXRpYWxp
emVkQnlFdmVudENvbnN0cnVjdG9yXSBVaW50OEFycmF5IG1lc3NhZ2U7Ci0gICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3JdIERPTVN0cmluZyBk
ZWZhdWx0VVJMOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0luaXRpYWxpemVkQnlFdmVu
dENvbnN0cnVjdG9yXSBNZWRpYUtleUVycm9yIGVycm9yQ29kZTsKLSAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFtJbml0aWFsaXplZEJ5RXZlbnRDb25zdHJ1Y3Rvcl0gdW5zaWduZWQgc2hvcnQg
c3lzdGVtQ29kZTsKLSAgICB9OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXgg
OTY0OWFhOTMxOGMzNTBiYjQxMGIyOWUwY2Q4NTI0NzBmMzQxMzlmNy4uNzIwYTAzY2ZmYjQ5NGNj
MjMyYTdhNzQxOGY0ZGVmMDI2MmE0YjEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApA
QCAtNDc3LDcgKzQ3Nyw4IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgW0pT
Q3VzdG9tR2V0dGVyXSBIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IgT3B0
aW9uOyAvLyBVc2FibGUgd2l0aCBuZXcgb3BlcmF0b3IKIAogICAgICAgICBhdHRyaWJ1dGUgW0Nv
bmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQSwgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1l
ZGlhXSBNZWRpYUtleUVycm9yQ29uc3RydWN0b3IgTWVkaWFLZXlFcnJvcjsKLSAgICAgICAgYXR0
cmlidXRlIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEsIFY4RW5hYmxlZEF0UnVudGltZT1l
bmNyeXB0ZWRNZWRpYV0gTWVkaWFLZXlFdmVudENvbnN0cnVjdG9yIE1lZGlhS2V5RXZlbnQ7Cisg
ICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBLCBWOEVuYWJsZWRB
dFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIE1lZGlhS2V5TWVzc2FnZUV2ZW50Q29uc3RydWN0b3Ig
TWVkaWFLZXlNZXNzYWdlRXZlbnQ7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9RU5D
UllQVEVEX01FRElBLCBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIE1lZGlhS2V5
TmVlZGVkRXZlbnRDb25zdHJ1Y3RvciBNZWRpYUtleU5lZWRlZEV2ZW50OwogCiAgICAgICAgIGF0
dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU9fVFJBQ0ssIFY4RW5hYmxlZEF0UnVudGltZT13ZWJr
aXRWaWRlb1RyYWNrXSBIVE1MVHJhY2tFbGVtZW50Q29uc3RydWN0b3IgSFRNTFRyYWNrRWxlbWVu
dDsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1WSURFT19UUkFDSywgVjhFbmFibGVk
QXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2tdIFRleHRUcmFja0NvbnN0cnVjdG9yIFRleHRUcmFj
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAppbmRleCAzMGVlOTQ4NzIwMGU0MzlmNDY2ZjAzMjFiNjA5OTU1YWRiM2Q2MjBiLi4zZjFkYzA1
MjA3ZTVmMDU5ZjI3OGI0NjY5NDI0NTU0MTE3ODFlNzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xMDYwLDI4ICsxMDYwLDEw
IEBAIEF1ZGlvU291cmNlUHJvdmlkZXIqIE1lZGlhUGxheWVyOjphdWRpb1NvdXJjZVByb3ZpZGVy
KCkKICNlbmRpZiAvLyBXRUJfQVVESU8KIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCi12
b2lkIE1lZGlhUGxheWVyOjprZXlBZGRlZChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQpCit2b2lkIE1lZGlhUGxheWVyOjprZXlOZWVkZWQoVWludDhBcnJh
eSogaW5pdERhdGEpCiB7CiAgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCi0gICAgICAgIG1f
bWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyS2V5QWRkZWQodGhpcywga2V5U3lzdGVtLCBz
ZXNzaW9uSWQpOwotfQotCi12b2lkIE1lZGlhUGxheWVyOjprZXlFcnJvcihjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIE1lZGlhUGxheWVyQ2xpZW50OjpN
ZWRpYUtleUVycm9yQ29kZSBlcnJvckNvZGUsIHVuc2lnbmVkIHNob3J0IHN5c3RlbUNvZGUpCi17
Ci0gICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCi0gICAgICAgIG1fbWVkaWFQbGF5ZXJDbGll
bnQtPm1lZGlhUGxheWVyS2V5RXJyb3IodGhpcywga2V5U3lzdGVtLCBzZXNzaW9uSWQsIGVycm9y
Q29kZSwgc3lzdGVtQ29kZSk7Ci19Ci0KLXZvaWQgTWVkaWFQbGF5ZXI6OmtleU1lc3NhZ2UoY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCB1bnNp
Z25lZCBjaGFyKiBtZXNzYWdlLCB1bnNpZ25lZCBtZXNzYWdlTGVuZ3RoKQotewotICAgIGlmICht
X21lZGlhUGxheWVyQ2xpZW50KQotICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBs
YXllcktleU1lc3NhZ2UodGhpcywga2V5U3lzdGVtLCBzZXNzaW9uSWQsIG1lc3NhZ2UsIG1lc3Nh
Z2VMZW5ndGgpOwotfQotCi12b2lkIE1lZGlhUGxheWVyOjprZXlOZWVkZWQoY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCB1bnNpZ25lZCBjaGFy
KiBpbml0RGF0YSwgdW5zaWduZWQgaW5pdERhdGFMZW5ndGgpCi17Ci0gICAgaWYgKG1fbWVkaWFQ
bGF5ZXJDbGllbnQpCi0gICAgICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyS2V5
TmVlZGVkKHRoaXMsIGtleVN5c3RlbSwgc2Vzc2lvbklkLCBpbml0RGF0YSwgaW5pdERhdGFMZW5n
dGgpOworICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllcktleU5lZWRlZCh0
aGlzLCBpbml0RGF0YSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggNjA4NzZlNjM4NWJiOTU4MDY2NTAyNzAyZjgz
ZjYyNGIzMThlMTU5Yy4uMzBhODhkMjIzOGRjYWVjMTg3ZWRjNWMyNGQ4YTBlZjg0MjU4Yjk3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBA
IC0xODQsMTAgKzE4NCwxMCBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQogICAgIGVudW0gTWVkaWFLZXlFcnJvckNvZGUgeyBVbmtub3duRXJyb3IgPSAxLCBDbGllbnRF
cnJvciwgU2VydmljZUVycm9yLCBPdXRwdXRFcnJvciwgSGFyZHdhcmVDaGFuZ2VFcnJvciwgRG9t
YWluRXJyb3IgfTsKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlBZGRlZChNZWRpYVBs
YXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5RXJyb3IoTWVkaWFQbGF5ZXIqLCBj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIE1lZGlhS2V5
RXJyb3JDb2RlIGVycm9yQ29kZSwgdW5zaWduZWQgc2hvcnQgc3lzdGVtQ29kZSkgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5TWVzc2FnZShNZWRpYVBsYXllciosIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQg
Y2hhciogbWVzc2FnZSwgdW5zaWduZWQgbWVzc2FnZUxlbmd0aCkgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbml0
RGF0YSwgdW5zaWduZWQgaW5pdERhdGFMZW5ndGgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRp
YVBsYXllcktleUFkZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5RXJyb3IoTWVkaWFQbGF5ZXIq
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBNZWRpYUtleUVycm9yQ29kZSwgdW5zaWdu
ZWQgc2hvcnQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleU1lc3NhZ2UoTWVk
aWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCB1bnNpZ25lZCBj
aGFyKiwgdW5zaWduZWQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleU5lZWRl
ZChNZWRpYVBsYXllciosIFVpbnQ4QXJyYXkqKSB7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCBT
dHJpbmcgbWVkaWFQbGF5ZXJSZWZlcnJlcigpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CkBA
IC00MDksMTAgKzQwOSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKLSAgICB2b2lkIGtleUFkZGVkKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCk7Ci0gICAgdm9pZCBrZXlFcnJvcihjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIE1lZGlhUGxheWVyQ2xpZW50OjpNZWRp
YUtleUVycm9yQ29kZSwgdW5zaWduZWQgc2hvcnQgc3lzdGVtQ29kZSk7Ci0gICAgdm9pZCBrZXlN
ZXNzYWdlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
Y29uc3QgdW5zaWduZWQgY2hhciogbWVzc2FnZSwgdW5zaWduZWQgbWVzc2FnZUxlbmd0aCk7Ci0g
ICAgdm9pZCBrZXlOZWVkZWQoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbml0RGF0YSwgdW5zaWduZWQgaW5pdERh
dGFMZW5ndGgpOworICAgIHZvaWQga2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKTsKICNl
bmRpZgogCiAgICAgU3RyaW5nIHJlZmVycmVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IDg3ODUx
ZTQ0Yzk1OGYyNGY0MjM4OGYyNTg2ZDI4OTBmN2VmYTVmYzMuLmM4MTY0MmYyNzFjMzJkNmUwNmMz
NzFkMWQ3NjUyMTkyM2FlYzg0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0xNzksOSArMTc5LDkgQEAgcHVi
bGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotICAgIHZpcnR1YWwg
TWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIGFkZEtleShjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSwgY29uc3QgdW5zaWduZWQgY2hhcioga2V5LCB1bnNpZ25lZCBrZXlMZW5ndGgsIGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCwgY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQpIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpLZXlTeXN0ZW1Ob3RTdXBw
b3J0ZWQ7IH0KLSAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBnZW5l
cmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCkgeyByZXR1cm4gTWVkaWFQbGF5
ZXI6OktleVN5c3RlbU5vdFN1cHBvcnRlZDsgfQotICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok1l
ZGlhS2V5RXhjZXB0aW9uIGNhbmNlbEtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSB7IHJldHVybiBNZWRpYVBsYXllcjo6S2V5U3lzdGVt
Tm90U3VwcG9ydGVkOyB9CisgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRp
b24gYWRkS2V5KGNvbnN0IFN0cmluZyYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCwg
Y29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmKSB7IHJldHVybiBN
ZWRpYVBsYXllcjo6S2V5U3lzdGVtTm90U3VwcG9ydGVkOyB9CisgICAgdmlydHVhbCBNZWRpYVBs
YXllcjo6TWVkaWFLZXlFeGNlcHRpb24gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYs
IGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCkgeyByZXR1cm4gTWVkaWFQbGF5ZXI6Oktl
eVN5c3RlbU5vdFN1cHBvcnRlZDsgfQorICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5
RXhjZXB0aW9uIGNhbmNlbEtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikg
eyByZXR1cm4gTWVkaWFQbGF5ZXI6OktleVN5c3RlbU5vdFN1cHBvcnRlZDsgfQogI2VuZGlmCiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggZDQ0YTMwYzczMjAzNzJhM2RkMjI1NzM3NGE1
M2FlMjNjMjgzODg2OS4uNDU0MDljODM2MGY0NTViYzMxMGZmZWQyNDE2MzIyNjcyZDcyYzAzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtNjMsNiArNjMsMTAgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShNZWRp
YVBsYXllciopOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3Ry
aW5nPiYgdHlwZXMpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBv
cnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBL
VVJMJik7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBzdGF0aWMgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBleHRlbmRlZFN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgS1VS
TCYpOworI2VuZGlmCisKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogCiAgICAgdmly
dHVhbCB2b2lkIGNhbmNlbExvYWQoKTsKQEAgLTEyNCw2ICsxMjgsMTIgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJl
Y3QmKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICB2aXJ0dWFs
IE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBhZGRLZXkoY29uc3QgU3RyaW5nJiwgY29u
c3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWdu
ZWQsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhj
ZXB0aW9uIGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmLCBjb25zdCB1bnNpZ25lZCBj
aGFyKiwgdW5zaWduZWQpOworICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0
aW9uIGNhbmNlbEtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisjZW5k
aWYKKwogICAgIFJldGFpblB0cjxBVkFzc2V0PiBtX2F2QXNzZXQ7CiAgICAgUmV0YWluUHRyPEFW
UGxheWVyPiBtX2F2UGxheWVyOwogICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW0+IG1fYXZQbGF5
ZXJJdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggY2Y3NWQwY2Y2Y2ZkNzYwOGFkNzFk
Njc3ZjQ2ZjFlNzY5ODc4YTM2Ni4uYjQ4NmY2MDc4MzZhZGIyZDhmYTAwMWZlNTQwODc3YWI2ODA4
YmJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xMzIsNyArMTMyLDExIEBAIFBhc3NP
d25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpjcmVhCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQog
ewogICAgIGlmIChpc0F2YWlsYWJsZSgpKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisg
ICAgICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5cGVzLCBleHRlbmRlZFN1cHBv
cnRzVHlwZSwgMCwgMCwgMCk7CisjZWxzZQogICAgICAgICByZWdpc3RyYXIoY3JlYXRlLCBnZXRT
dXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwKTsKKyNlbmRpZgogfQogCiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDKE1lZGlhUGxheWVyKiBwbGF5ZXIpCkBAIC03MjUsNiArNzI5LDMxIEBAIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c3VwcG9ydHNUeXBlKGNvbnN0CiAgICAgcmV0dXJuIFtBVlVSTEFzc2V0IGlzUGxheWFibGVFeHRl
bmRlZE1JTUVUeXBlOnR5cGVTdHJpbmddID8gTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkIDogTWVk
aWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOzsKIH0KIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmV4dGVuZGVkU3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJiB1cmwp
Cit7CisgICAgLy8gRnJvbTogPGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1m
aWxlL3RpcC9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLmh0bWwjZG9tLWNhbnBsYXl0
eXBlPgorICAgIC8vIEluIGFkZGl0aW9uIHRvIHRoZSBzdGVwcyBpbiB0aGUgY3VycmVudCBzcGVj
aWZpY2F0aW9uLCB0aGlzIG1ldGhvZCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAg
IGRvIHsKKyAgICAgICAgLy8gMS4gQ2hlY2sgd2hldGhlciB0aGUgS2V5IFN5c3RlbSBpcyBzdXBw
b3J0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbnRhaW5lciBhbmQgY29kZWMgdHlwZShzKSBieSBm
b2xsb3dpbmcgdGhlIHN0ZXBzIGZvciB0aGUgZmlyc3QgbWF0Y2hpbmcgY29uZGl0aW9uIGZyb20g
dGhlIGZvbGxvd2luZyBsaXN0OgorICAgICAgICAvLyAgICBJZiBrZXlTeXN0ZW0gaXMgbnVsbCwg
Y29udGludWUgdG8gdGhlIG5leHQgc3RlcC4KKyAgICAgICAgaWYgKCFrZXlTeXN0ZW0uaXNOdWxs
KCkgJiYgIWtleVN5c3RlbS5pc0VtcHR5KCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAvLyBJZiBrZXlTeXN0ZW0gY29udGFpbnMgYW4gdW5yZWNvZ25pemVkIG9yIHVuc3VwcG9ydGVk
IEtleSBTeXN0ZW0sIHJldHVybiB0aGUgZW1wdHkgc3RyaW5nCisgICAgICAgIGlmICghZXF1YWxJ
Z25vcmluZ0Nhc2Uoa2V5U3lzdGVtLCAiY29tLmFwcGxlLmZwcyIpIHx8ICFlcXVhbElnbm9yaW5n
Q2FzZShrZXlTeXN0ZW0sICJjb20uYXBwbGUuZnBzLjFfMCIpKQorICAgICAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKworICAgICAgICAvLyBJZiB0aGUgS2V5IFN5
c3RlbSBzcGVjaWZpZWQgYnkga2V5U3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgZGVjcnlwdGluZyB0
aGUgY29udGFpbmVyIGFuZC9vciBjb2RlYyBzcGVjaWZpZWQgaW4gdGhlIHJlc3Qgb2YgdGhlIHR5
cGUgc3RyaW5nLgorICAgICAgICAvLyAoQVZGb3VuZGF0aW9uIGRvZXMgbm90IHByb3ZpZGUgYW4g
QVBJIHdoaWNoIHdvdWxkIGFsbG93IHVzIHRvIGRldGVybWluZSB0aGlzLCBzbyB0aGlzIGlzIGEg
bm8tb3ApCisKKyAgICB9IHdoaWxlKGZhbHNlKTsKKworICAgIC8vIDIuIFJldHVybiAibWF5YmUi
IG9yICJwcm9iYWJseSIgYXMgYXBwcm9wcmlhdGUgcGVyIHRoZSBleGlzdGluZyBzcGVjaWZpY2F0
aW9uIG9mIGNhblBsYXlUeXBlKCkuCisgICAgcmV0dXJuIHN1cHBvcnRzVHlwZSh0eXBlLCBjb2Rl
Y3MsIHVybCk7OworfQorI2VuZGlmCisKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6aXNBdmFpbGFibGUoKQogewogICAgIHJldHVybiBBVkZvdW5kYXRpb25MaWJyYXJ5
KCkgJiYgQ29yZU1lZGlhTGlicmFyeSgpOwpAQCAtODk3LDYgKzkyNiwzNCBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBo
aWNzQ29udGV4dCogYwogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCitN
ZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6YWRkS2V5KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCB1bnNpZ25lZCBj
aGFyKiBrZXksIHVuc2lnbmVkIGtleUxlbmd0aCwgY29uc3QgdW5zaWduZWQgY2hhciogaW5pdERh
dGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKK3sK
KyAgICBVTlVTRURfUEFSQU0oa2V5U3lzdGVtKTsKKyAgICBVTlVTRURfUEFSQU0oa2V5KTsKKyAg
ICBVTlVTRURfUEFSQU0oa2V5TGVuZ3RoKTsKKyAgICBVTlVTRURfUEFSQU0oaW5pdERhdGEpOwor
ICAgIFVOVVNFRF9QQVJBTShpbml0RGF0YUxlbmd0aCk7CisgICAgVU5VU0VEX1BBUkFNKHNlc3Np
b25JZCk7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpLZXlTeXN0ZW1Ob3RTdXBwb3J0ZWQ7Cit9
CisKK01lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCkK
K3sKKyAgICBVTlVTRURfUEFSQU0oa2V5U3lzdGVtKTsKKyAgICBVTlVTRURfUEFSQU0oaW5pdERh
dGEpOworICAgIFVOVVNFRF9QQVJBTShpbml0RGF0YUxlbmd0aCk7CisgICAgcmV0dXJuIE1lZGlh
UGxheWVyOjpLZXlTeXN0ZW1Ob3RTdXBwb3J0ZWQ7Cit9CisKK01lZGlhUGxheWVyOjpNZWRpYUtl
eUV4Y2VwdGlvbiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjYW5jZWxLZXlS
ZXF1ZXN0KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkK
K3sKKyAgICBVTlVTRURfUEFSQU0oa2V5U3lzdGVtKTsKKyAgICBVTlVTRURfUEFSQU0oc2Vzc2lv
bklkKTsKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OktleVN5c3RlbU5vdFN1cHBvcnRlZDsKK30K
KyNlbmRpZgorCiBOU0FycmF5KiBhc3NldE1ldGFkYXRhS2V5TmFtZXMoKQogewogICAgIHN0YXRp
YyBOU0FycmF5KiBrZXlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAppbmRleCA0MzYxNjA3
MTgyMWI5ZmI3YTg1YjU2Mjc2MmI1MTUzYWUyOGUyOTNiLi4zZWUxYTRjMjk4NmRjODkyNGIzN2Q2
ZjEzZTFhZThjNDEyYjA0OGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaApAQCAtNzYs
NiArNzYsMTAgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgUGFzc093blB0cjxNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShNZWRpYVBsYXllciopOwogICAgIHN0YXRpYyB2b2lkIGdl
dFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpOwogICAgIHN0YXRpYyBNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBLVVJMJik7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBleHRlbmRlZFN1cHBv
cnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgY29uc3QgS1VSTCYpOworI2VuZGlmCisKICAgICBzdGF0aWMgdm9p
ZCBnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYpOwogICAgIHN0YXRpYyB2b2lk
IGNsZWFyTWVkaWFDYWNoZSgpOwogICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvclNp
dGUoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggMmU4
NDlhZjYxYzhhNGIzODNjMTZlNzg3N2NmYmE0MGIyMzhiNmY4ZC4uZjc3NDA0MGVlNDBkMDcxNDJl
ZTc4ZmI4YjNhYjAzOTU0ZmY5M2I1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpA
QCAtMTkwLDcgKzE5MCwxMSBAQCBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZT4gTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNyZWF0ZShNZWRpYVBsYQogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJh
ciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyAgICAgICAgcmVnaXN0cmFyKGNyZWF0ZSwgZ2V0U3VwcG9ydGVkVHlwZXMs
IGV4dGVuZGVkU3VwcG9ydHNUeXBlLCBnZXRTaXRlc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNh
Y2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKTsKKyNlbHNlCiAgICAgICAgIHJlZ2lzdHJhcihj
cmVhdGUsIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIGdldFNpdGVzSW5NZWRpYUNh
Y2hlLCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUpOworI2VuZGlmCiB9
CiAKIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpNZWRpYVBsYXllclByaXZhdGVRVEtpdChNZWRp
YVBsYXllciogcGxheWVyKQpAQCAtMTUxOCw2ICsxNTIyLDE3IEBAIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJp
bmcmIHR5CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIH0KIAorI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0OjpleHRlbmRlZFN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3Qg
S1VSTCYgdXJsKQoreworICAgIC8vIFFUS2l0IGRvZXMgbm90IHN1cHBvcnQgYW55IGVuY3J5dHBl
ZCBtZWRpYSwgc28gcmV0dXJuIElzTm90U3VwcG9ydGVkIGlmIHRoZSBrZXlTeXN0ZW0gaXMgbm9u
LU5VTEw6CisgICAgaWYgKCFrZXlTeXN0ZW0uaXNOdWxsKCkgfHwgIWtleVN5c3RlbS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisKKyAgICBy
ZXR1cm4gc3VwcG9ydHNUeXBlKHR5cGUsIGNvZGVjcywgdXJsKTs7Cit9CisjZW5kaWYKKwogYm9v
bCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aXNBdmFpbGFibGUoKQogewogICAgIC8vIE9uIDEw
LjUgYW5kIGhpZ2hlciwgUXVpY2tUaW1lIHdpbGwgYWx3YXlzIGJlIG5ldyBlbm91Z2ggZm9yIDx2
aWRlbz4gYW5kIDxhdWRpbz4gc3VwcG9ydCwgc28gd2UganVzdCBjaGVjayB0aGF0IHRoZSBmcmFt
ZXdvcmsgY2FuIGJlIGxvYWRlZC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164635</attachid>
            <date>2012-09-18 16:44:47 -0700</date>
            <delta_ts>2012-09-19 13:20:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97037-20120918164414.patch</filename>
            <type>text/plain</type>
            <size>105068</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXgg
ZWMzNWNmNjczZjRhMGZkMjEyN2NmNTU1Y2Y0ZWM3MDI3OGMzZDY2Ny4uZjgwYzAyYzlkNDQ2MGMz
NzQ5MDg2Y2M0ODI3ZmYzYjAwMGQyMzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAt
NTcsNiArNTcsMTEgQEAgRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCA9IEVOQUJMRV9ERVRBSUxTX0VM
RU1FTlQ7CiBFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OID0gOwogRU5BQkxFX0RJQUxPR19FTEVN
RU5UID0gOwogRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQgPSA7CitFTkFCTEVfRU5DUllQVEVEX01F
RElBX1YyID0gJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyXyQoUkVBTF9QTEFURk9STV9OQU1F
KSk7CitFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeCA9ICQoRU5BQkxFX0VOQ1JZUFRF
RF9NRURJQV9tYWNvc3hfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOworRU5BQkxF
X0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3hfMTA3MCA9IDsKK0VOQUJMRV9FTkNSWVBURURfTUVE
SUFfVjJfbWFjb3N4XzEwODAgPSA7CitFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeF8x
MDkwID0gRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMjsKIEVOQUJMRV9GSUxFX1NZU1RFTSA9IDsK
IEVOQUJMRV9GSUxURVJTID0gJChFTkFCTEVfRklMVEVSU18kKFJFQUxfUExBVEZPUk1fTkFNRSkp
OwogRU5BQkxFX0ZJTFRFUlNfbWFjb3N4ID0gRU5BQkxFX0ZJTFRFUlM7CkBAIC0xNDAsNCArMTQ1
LDQgQEAgRU5BQkxFX1dJREdFVF9SRUdJT05fbWFjb3N4ID0gRU5BQkxFX1dJREdFVF9SRUdJT047
CiBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVf
WFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJM
RV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICQoRU5BQkxF
X0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChF
TkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfRVhDTFVTSU9OUykg
JChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NTU19ISUVSQVJDSElFUykgJChFTkFCTEVf
Q1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChF
TkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFERVJTKSAkKEVOQUJMRV9DU1NfQ09N
UE9TSVRJTkcpICQoRU5BQkxFX0NTU19TVElDS1lfUE9TSVRJT04pICQoRU5BQkxFX0NTU19WQVJJ
QUJMRVMpICQoRU5BQkxFX0NTUzNfVEVYVF9ERUNPUkFUSU9OKSAkKEVOQUJMRV9DVVNUT01fU0NI
RU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElT
VF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxT
X0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElBTE9HX0VM
RU1FTlQpICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAk
KEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBB
RCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFC
TEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVY
RURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9D
T0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVU
SU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9X
RUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZF
TkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xF
R0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJ
TktfUFJFUkVOREVSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChF
TkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVf
TUhUTUwpICQoRU5BQkxFX01JQ1JPREFUQSkgJChFTkFCTEVfTVVUQVRJT05fT0JTRVJWRVJTKSAk
KEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykg
JChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkg
JChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJM
RV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9X
T1JLRVJTKSAkKEVOQUJMRV9TUUxfREFUQUJBU0UpICQoRU5BQkxFX1NUWUxFX1NDT1BFRCkgJChF
TkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19G
T05UUykgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9URVhUX05PVElGSUNBVElP
TlNfT05MWSkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VTkRPX01BTkFH
RVIpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfV0VCR0wp
ICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9U
SU1JTkcpICQoRU5BQkxFX1dJREdFVF9SRUdJT04pICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxF
X1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJM
RV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICQoRU5BQkxF
X0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChF
TkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfRVhDTFVTSU9OUykg
JChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NTU19ISUVSQVJDSElFUykgJChFTkFCTEVf
Q1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChF
TkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFERVJTKSAkKEVOQUJMRV9DU1NfQ09N
UE9TSVRJTkcpICQoRU5BQkxFX0NTU19TVElDS1lfUE9TSVRJT04pICQoRU5BQkxFX0NTU19WQVJJ
QUJMRVMpICQoRU5BQkxFX0NTUzNfVEVYVF9ERUNPUkFUSU9OKSAkKEVOQUJMRV9DVVNUT01fU0NI
RU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElT
VF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxT
X0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElBTE9HX0VM
RU1FTlQpICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJ
QV9WMikgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZV
TExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChF
TkFCTEVfSElHSF9EUElfQ0FOVkFTKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lG
UkFNRV9TRUFNTEVTUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRf
U1BFRUNIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RB
VEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFU
RVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVC
VUdHRVIpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdB
Q1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFC
TEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTElOS19QUkVSRU5ERVIpICQoRU5BQkxFX01BVEhN
TCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVO
QUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTUlDUk9EQVRBKSAk
KEVOQUJMRV9NVVRBVElPTl9PQlNFUlZFUlMpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VU
SUxTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJ
KSAkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVR
VUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCkgJChFTkFCTEVf
U0hBRE9XX0RPTSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NRTF9EQVRBQkFT
RSkgJChFTkFCTEVfU1RZTEVfU0NPUEVEKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19ET01f
T0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJ
TkcpICQoRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZKSAkKEVOQUJMRV9UT1VDSF9JQ09O
X0xPQURJTkcpICQoRU5BQkxFX1VORE9fTUFOQUdFUikgJChFTkFCTEVfVklERU8pICQoRU5BQkxF
X1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJM
RV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV0lER0VUX1JFR0lP
TikgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFNMVCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCAwYmU0
YmIwN2RjMjhmYzkxMTYyZWQzMDY1YWNiMTUyMDlmMjFkM2UyLi5kZDUxZWQ3OWFjYzNkNmIwYmNi
OTY2MmY3NDNjOWVjOGVhNDY4NWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTExNDgsNiArMTE0OCwxMCBA
QAogI2RlZmluZSBXVEZfVVNFX0NPUkVNRURJQSAxCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1B
QykgJiYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDkwCisjZGVmaW5lIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIgMQorI2VuZGlmCisKICNp
ZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKSB8fCAoUExB
VEZPUk0oV0lOKSAmJiAhT1MoV0lOQ0UpICYmICFQTEFURk9STShXSU5fQ0FJUk8pKSB8fCBQTEFU
Rk9STShCTEFDS0JFUlJZKQogI2RlZmluZSBXVEZfVVNFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
X1RJTUVSIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCA0NDM5M2I5MGUxZTc0ZWQ2NTlhMWY2NjRj
NDczY2Y3YmU3ZjQ5NjMzLi4zMTU0YjBkNmZjYmExMGFmYzgzN2JjM2IwZjc1NWU0ZGNiY2FlMmM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZwpAQCAtNTgsNiArNTgsMTEgQEAgRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCA9
IEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQ7CiBFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OID0gOwog
RU5BQkxFX0RJQUxPR19FTEVNRU5UID0gOwogRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQgPSA7CitF
TkFCTEVfRU5DUllQVEVEX01FRElBX1YyID0gJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyXyQo
UkVBTF9QTEFURk9STV9OQU1FKSk7CitFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeCA9
ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3hfJChUQVJHRVRfTUFDX09TX1hfVkVS
U0lPTl9NQUpPUikpOworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3hfMTA3MCA9IDsK
K0VOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEwODAgPSA7CitFTkFCTEVfRU5DUllQ
VEVEX01FRElBX1YyX21hY29zeF8xMDkwID0gRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMjsKIEVO
QUJMRV9GSUxFX1NZU1RFTSA9IDsKIEVOQUJMRV9GSUxURVJTID0gJChFTkFCTEVfRklMVEVSU18k
KFJFQUxfUExBVEZPUk1fTkFNRSkpOwogRU5BQkxFX0ZJTFRFUlNfbWFjb3N4ID0gRU5BQkxFX0ZJ
TFRFUlM7CkBAIC0xNDEsNCArMTQ2LDQgQEAgRU5BQkxFX1dJREdFVF9SRUdJT05fbWFjb3N4ID0g
RU5BQkxFX1dJREdFVF9SRUdJT047CiBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwog
RU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVf
M0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FO
SU1BVElPTl9BUEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAk
KEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVO
QUJMRV9DU1NfRVhDTFVTSU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NTU19I
SUVSQVJDSElFUykgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1Nf
SU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFE
RVJTKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19TVElDS1lfUE9TSVRJ
T04pICQoRU5BQkxFX0NTU19WQVJJQUJMRVMpICQoRU5BQkxFX0NTUzNfVEVYVF9ERUNPUkFUSU9O
KSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQ
T1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lU
RU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElP
TikgJChFTkFCTEVfRElBTE9HX0VMRU1FTlQpICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQo
RU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GVUxMU0NSRUVO
X0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJ
R0hfRFBJX0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VB
TUxFU1MpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkg
JChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9D
QUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkg
JChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAk
KEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElG
SUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xJTktf
UFJFRkVUQ0gpICQoRU5BQkxFX0xJTktfUFJFUkVOREVSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5B
QkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVU
RVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01JQ1JPREFUQSkgJChFTkFCTEVf
TVVUQVRJT05fT0JTRVJWRVJTKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChF
TkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFC
TEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5J
TUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURPV19E
T00pICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUUxfREFUQUJBU0UpICQoRU5B
QkxFX1NUWUxFX1NDT1BFRCkgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklO
RElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVO
QUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWSkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5H
KSAkKEVOQUJMRV9VTkRPX01BTkFHRVIpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19U
UkFDSykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NP
Q0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dJREdFVF9SRUdJT04pICQoRU5B
QkxFX1dPUktFUlMpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVf
M0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FO
SU1BVElPTl9BUEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAk
KEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVO
QUJMRV9DU1NfRVhDTFVTSU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NTU19I
SUVSQVJDSElFUykgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1Nf
SU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFE
RVJTKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19TVElDS1lfUE9TSVRJ
T04pICQoRU5BQkxFX0NTU19WQVJJQUJMRVMpICQoRU5BQkxFX0NTUzNfVEVYVF9ERUNPUkFUSU9O
KSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQ
T1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lU
RU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElP
TikgJChFTkFCTEVfRElBTE9HX0VMRU1FTlQpICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQo
RU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxF
X0ZJTFRFUlMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVO
QUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKSAkKEVOQUJMRV9JQ09O
REFUQUJBU0UpICQoRU5BQkxFX0lGUkFNRV9TRUFNTEVTUykgJChFTkFCTEVfSU5ERVhFRF9EQVRB
QkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUUpICQo
RU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05U
SCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQo
RU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BS
RUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZF
TkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTElOS19QUkVS
RU5ERVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9N
RURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkg
JChFTkFCTEVfTUlDUk9EQVRBKSAkKEVOQUJMRV9NVVRBVElPTl9PQlNFUlZFUlMpICQoRU5BQkxF
X05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJM
RV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UKSAkKEVOQUJM
RV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1NDUklQ
VEVEX1NQRUVDSCkgJChFTkFCTEVfU0hBRE9XX0RPTSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMp
ICQoRU5BQkxFX1NRTF9EQVRBQkFTRSkgJChFTkFCTEVfU1RZTEVfU0NPUEVEKSAkKEVOQUJMRV9T
VkcpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAk
KEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZ
KSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VORE9fTUFOQUdFUikgJChF
TkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFC
TEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykg
JChFTkFCTEVfV0lER0VUX1JFR0lPTikgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFNMVCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkMWYwOTcyY2QxNzk4OTJmYzU0Yjg5
ZTU2YWVjMWVlZTNiZTMzY2Q1Li5jNTVmMGVkYjBiODUxYTZiNWE1ODcxZDVkZjM3ZWU3MzllNDE0
NzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI4LDYgKzI4LDcgQEAKIAog
VlBBVEggPSBcCiAgICAgJChXZWJDb3JlKSBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbSBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvaW5kZXhl
ZGRiIFwKQEAgLTYxLDYgKzYyLDEwIEBAIFZQQVRIID0gXAogIwogCiBCSU5ESU5HX0lETFMgPSBc
CisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2
ZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
TmVlZGVkRXZlbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5cy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RP
TUZpbGVTeXN0ZW0uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9ET01G
aWxlU3lzdGVtU3luYy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RP
TVdpbmRvd0ZpbGVTeXN0ZW0uaWRsIFwKQEAgLTM1Nyw2ICszNjIsNyBAQCBCSU5ESU5HX0lETFMg
PSBcCiAgICAgJChXZWJDb3JlKS9odG1sL0ltYWdlRGF0YS5pZGwgXAogICAgICQoV2ViQ29yZSkv
aHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvTWVkaWFFcnJv
ci5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9NZWRpYUtleUVycm9yLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9odG1sL01pY3JvRGF0YUl0ZW1WYWx1ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRt
bC9SYWRpb05vZGVMaXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL1RleHRNZXRyaWNzLmlk
bCBcCkBAIC04NDgsNiArODU0LDEwIEBAIGlmZXEgKCQoZmluZHN0cmluZyBFTkFCTEVfREVUQUlM
U19FTEVNRU5ULCQoRkVBVFVSRV9ERUZJTkVTKSksIEVOQUJMRV9ERVRBSUxTX0VMCiAgICAgSFRN
TF9GTEFHUyA6PSAkKEhUTUxfRkxBR1MpIEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQ9MQogZW5kaWYK
IAoraWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIsJChGRUFUVVJF
X0RFRklORVMpKSwgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikKKwlIVE1MX0ZMQUdTIDo9ICQo
SFRNTF9GTEFHUykgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMj0xCitlbmRpZgorCiBpZmVxICgk
KGZpbmRzdHJpbmcgRU5BQkxFX01FVEVSX0VMRU1FTlQsJChGRUFUVVJFX0RFRklORVMpKSwgRU5B
QkxFX01FVEVSX0VMRU1FTlQpCiAgICAgSFRNTF9GTEFHUyA6PSAkKEhUTUxfRkxBR1MpIEVOQUJM
RV9NRVRFUl9FTEVNRU5UPTEKIGVuZGlmCkBAIC05NjUsNiArOTc1LDcgQEAgcHJlcHJvY2Vzc19p
ZGxzX3NjcmlwdCA9IHBlcmwgJChhZGRwcmVmaXggLUkgJChXZWJDb3JlKS8sICQoc29ydCAkKGRp
ciAkKDEpKSkpICQKIAogSURMX0lOQ0xVREVTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9i
YXR0ZXJ5IFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9maWxlc3lzdGVtIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZ2FtZXBh
ZCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IGNhNmRhYmNmNTE0NDI2MWI0MDk3NmQ1YTA5YWNhNzJhZTNjODg0
NTYuLjMwYjMwNGU5NTM0OGRhM2NmNzBlMzFkMmYxYzdmMmU5NGE4YTM5OWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTE2MSw2ICsxMTYxLDggQEAgd2ViY29yZV9idWlsdF9z
b3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL1hQYXRoR3JhbW1hci5oCiAKIGRv
bV9iaW5kaW5nX2lkbHMgKz0gXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleU1lc3NhZ2VFdmVudC5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRE9NRmlsZVN5c3RlbS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVt
L0RPTUZpbGVTeXN0ZW1TeW5jLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RE9NV2luZG93RmlsZVN5c3RlbS5pZGwgXApAQCAtMTczNSw2ICsxNzM3LDEwIEBAIGRvbV9iaW5k
aW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkveG1sL1hTTFRQcm9jZXNzb3IuaWRsCiAKIHdlYmNv
cmVfbW9kdWxlc19zb3VyY2VzICs9IFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaCBc
CiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0FzeW5jRmlsZVdyaXRlci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vQXN5bmNGaWxlV3JpdGVyQ2xpZW50
LmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlUGF0aC5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNiMWM3YWY4NzAzNWUzNGE3NjU4YjY4ZjMwNTk3NzM3NzA1MmY2YzkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAK
QEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQ0RNLmgiCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjaW5jbHVk
ZSAiQ0RNUHJpdmF0ZS5oIgorI2luY2x1ZGUgIk1lZGlhS2V5RXJyb3IuaCIKKyNpbmNsdWRlICJN
ZWRpYUtleXMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdHJ1Y3QgQ0RNRmFjdG9yeSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQ0RNRmFjdG9yeSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIENE
TUZhY3RvcnkoQ3JlYXRlQ0RNIGNvbnN0cnVjdG9yLCBDRE1TdXBwb3J0c0tleVN5dGVtIHN1cHBv
cnRzS2V5U3lzdGVtLCBDRE1TdXBwb3J0c0tleVN5c3RlbU1JTUVUeXBlQW5kQ29kZWMgc3VwcG9y
dHNLZXlTeXN0ZW1NSU1FVHlwZUFuZENvZGVjKQorICAgICAgICA6IGNvbnN0cnVjdG9yKGNvbnN0
cnVjdG9yKQorICAgICAgICAsIHN1cHBvcnRzS2V5U3lzdGVtKHN1cHBvcnRzS2V5U3lzdGVtKQor
ICAgICAgICAsIHN1cHBvcnRzS2V5U3lzdGVtTUlNRVR5cGVBbmRDb2RlYyhzdXBwb3J0c0tleVN5
c3RlbU1JTUVUeXBlQW5kQ29kZWMpCisgICAgeworICAgIH0KKworICAgIENyZWF0ZUNETSBjb25z
dHJ1Y3RvcjsKKyAgICBDRE1TdXBwb3J0c0tleVN5dGVtIHN1cHBvcnRzS2V5U3lzdGVtOworICAg
IENETVN1cHBvcnRzS2V5U3lzdGVtTUlNRVR5cGVBbmRDb2RlYyBzdXBwb3J0c0tleVN5c3RlbU1J
TUVUeXBlQW5kQ29kZWM7Cit9OworCitzdGF0aWMgVmVjdG9yPENETUZhY3RvcnkqPiYgaW5zdGFs
bGVkQ0RNcygpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8Q0RNRmFjdG9yeSo+
LCBjZG1zLCAoKSk7CisgICAgc3RhdGljIGJvb2wgcXVlcmllZENETXMgPSBmYWxzZTsKKyAgICBp
ZiAoIXF1ZXJpZWRDRE1zKSB7CisgICAgICAgIHF1ZXJpZWRDRE1zID0gdHJ1ZTsKKworICAgICAg
ICAvLyBUT0RPOiBpbml0aWFsaXplIHNwZWNpZmljIFVBIENETXMuCisgICAgfQorCisgICAgcmV0
dXJuIGNkbXM7Cit9CisKK2Jvb2wgQ0RNOjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSkKK3sKKyAgICBWZWN0b3I8Q0RNRmFjdG9yeSo+JiBjZG1zID0gaW5zdGFsbGVk
Q0RNcygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2Rtcy5zaXplKCk7ICsraSkgewor
ICAgICAgICBpZiAoY2Rtc1tpXS0+c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
Q0RNOjpzdXBwb3J0c0tleVN5c3RlbU1JTUVUeXBlQW5kQ29kZWMoY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWMpCit7Cisg
ICAgVmVjdG9yPENETUZhY3RvcnkqPiYgY2RtcyA9IGluc3RhbGxlZENETXMoKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNkbXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGNkbXNb
aV0tPnN1cHBvcnRzS2V5U3lzdGVtTUlNRVR5cGVBbmRDb2RlYyhrZXlTeXN0ZW0sIG1pbWVUeXBl
LCBjb2RlYykpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitzdGF0aWMgQ0RNRmFjdG9yeSogYmVzdENETUZvcktleVN5c3RlbShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSkKK3sKKyAgICBWZWN0b3I8Q0RNRmFjdG9yeSo+JiBjZG1zID0gaW5z
dGFsbGVkQ0RNcygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2Rtcy5zaXplKCk7ICsr
aSkgeworICAgICAgICBpZiAoY2Rtc1tpXS0+c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkK
KyAgICAgICAgICAgIHJldHVybiBjZG1zW2ldOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwor
UGFzc093blB0cjxDRE0+IENETTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQorewor
ICAgIGlmICghc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IENETShrZXlTeXN0ZW0pKTsKK30KKwor
Q0RNOjpDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCisgICAgOiBtX2tleVN5c3RlbShrZXlT
eXN0ZW0pCit7CisgICAgbV9wcml2YXRlID0gYmVzdENETUZvcktleVN5c3RlbShrZXlTeXN0ZW0p
LT5jb25zdHJ1Y3Rvcih0aGlzKTsKK30KKworQ0RNOjp+Q0RNKCkKK3sKK30KKworU3RyaW5nIENE
TTo6Z2VuZXJhdGVTZXNzaW9uSWQoKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmdlbmVyYXRl
U2Vzc2lvbklkKCk7Cit9CisKK1Bhc3NSZWZQdHI8VWludDhBcnJheT4gQ0RNOjpnZW5lcmF0ZUtl
eVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBTdHJpbmcmIGRlZmF1bHRVUkwsIHVuc2lnbmVkIHNob3J0
JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpCit7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+Z2VuZXJhdGVLZXlSZXF1ZXN0KG1pbWVUeXBlLCBpbml0RGF0YSwgc2Vzc2lvbklk
LCBkZWZhdWx0VVJMLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOworfQorCitib29sIENETTo6YWRk
S2V5Rm9yU2Vzc2lvbklkKFVpbnQ4QXJyYXkqIGtleSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNv
ZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+
YWRkS2V5Rm9yU2Vzc2lvbklkKGtleSwgc2Vzc2lvbklkLCBuZXh0TWVzc2FnZSwgZXJyb3JDb2Rl
LCBzeXN0ZW1Db2RlKTsKK30KKwordm9pZCBDRE06OmNsZWFyS2V5c0Zyb21TZXNzaW9uSWQoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y2xlYXJLZXlz
RnJvbVNlc3Npb25JZChzZXNzaW9uSWQpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5D
UllQVEVEX01FRElBX1YyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODhlNjI0Yjk3YTgyZmE1ZDc0YTdmNzZkNzhkZGExMzk2OTMwMGY3
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0RNX2gKKyNk
ZWZpbmUgQ0RNX2gKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYUtleUVycm9yOworY2xhc3MgTWVkaWFLZXlT
ZXNzaW9uOworY2xhc3MgTWVkaWFLZXlzOworCitjbGFzcyBDRE1Qcml2YXRlSW50ZXJmYWNlOwor
CitjbGFzcyBDRE0geworcHVibGljOgorICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVt
KGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtTUlNRVR5
cGVBbmRDb2RlYyhjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBjb2RlYyk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0RNPiBjcmVh
dGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOworICAgIH5DRE0oKTsKKworICAgIFN0cmluZyBn
ZW5lcmF0ZVNlc3Npb25JZCgpOworICAgIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVL
ZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgU3RyaW5nJiBkZWZhdWx0VVJMLCB1bnNpZ25lZCBzaG9y
dCYgZXJyb3JDb2RlLCB1bnNpZ25lZCBsb25nJiBzeXN0ZW1Db2RlKTsKKyAgICB2b2lkIGNsZWFy
S2V5c0Zyb21TZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOworICAgIGJvb2wgYWRk
S2V5Rm9yU2Vzc2lvbklkKFVpbnQ4QXJyYXkqLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgUmVm
UHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwg
dW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSk7CisKKyAgICBjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9CisKK3ByaXZhdGU6CisgICAgQ0RNKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKTsKKworICAgIFN0cmluZyBtX2tleVN5c3RlbTsKKyAgICBP
d25QdHI8Q0RNUHJpdmF0ZUludGVyZmFjZT4gbV9wcml2YXRlOworfTsKKwordHlwZWRlZiBQYXNz
T3duUHRyPENETVByaXZhdGVJbnRlcmZhY2U+ICgqQ3JlYXRlQ0RNKShDRE0qKTsKK3R5cGVkZWYg
Ym9vbCAoKkNETVN1cHBvcnRzS2V5U3l0ZW0pKGNvbnN0IFN0cmluZyYpOwordHlwZWRlZiBib29s
ICgqQ0RNU3VwcG9ydHNLZXlTeXN0ZW1NSU1FVHlwZUFuZENvZGVjKShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKK3R5cGVkZWYgdm9pZCAoKkNETVJlZ2lzdHJh
cikoQ3JlYXRlQ0RNLCBDRE1TdXBwb3J0c0tleVN5dGVtKTsKKworfQorCisjZW5kaWYgLy8gRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2VuZGlmIC8vIENETV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJhNGY3MTExZmI5ZGQ4MDEyMWQzYzM5MmUyNGEzNzIzNWU3NDViMjEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApA
QCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDRE1Qcml2YXRlX2gKKyNkZWZp
bmUgQ0RNUHJpdmF0ZV9oCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENETVByaXZhdGVJbnRlcmZhY2UgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKENETVByaXZhdGVJbnRlcmZhY2UpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBDRE1Qcml2YXRlSW50ZXJmYWNlKCkgeyB9CisgICAgdmlydHVh
bCB+Q0RNUHJpdmF0ZUludGVyZmFjZSgpIHsgfQorCisgICAgdmlydHVhbCBTdHJpbmcgZ2VuZXJh
dGVTZXNzaW9uSWQoKSA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGdl
bmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0
RGF0YSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFN0cmluZyYgZGVmYXVsdFVSTCwgdW5zaWdu
ZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkgPSAwOworCisg
ICAgdmlydHVhbCB2b2lkIGNsZWFyS2V5c0Zyb21TZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkS2V5Rm9yU2Vzc2lvbklkKFVpbnQ4QXJy
YXkqLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVz
c2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29k
ZSkgPSAwOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikK
KworI2VuZGlmIC8vIENETVByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41NDBiNmQ0MDdkZmJiZGQ0Yjg5YzY1ZDhkOThjMWNkMjdjYjU0ZTkwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eU1lc3NhZ2VFdmVudC5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUg
Ik1lZGlhS2V5TWVzc2FnZUV2ZW50LmgiCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5j
bHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRpYUtl
eU1lc3NhZ2VFdmVudEluaXQ6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCgpCit7Cit9CisKK01l
ZGlhS2V5TWVzc2FnZUV2ZW50OjpNZWRpYUtleU1lc3NhZ2VFdmVudCgpCit7Cit9CisKK01lZGlh
S2V5TWVzc2FnZUV2ZW50OjpNZWRpYUtleU1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGNvbnN0IE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCisgICAg
OiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKKyAgICAsIG1fbWVzc2FnZShpbml0aWFsaXplci5t
ZXNzYWdlKQorICAgICwgbV9kZWZhdWx0VVJMKGluaXRpYWxpemVyLmRlZmF1bHRVUkwpCit7Cit9
CisKK01lZGlhS2V5TWVzc2FnZUV2ZW50Ojp+TWVkaWFLZXlNZXNzYWdlRXZlbnQoKQoreworfQor
Citjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhS2V5TWVzc2FnZUV2ZW50OjppbnRlcmZhY2VOYW1l
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvck1lZGlhS2V5
TWVzc2FnZUV2ZW50OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1l
c3NhZ2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleU1lc3NhZ2VFdmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0MWZjMGQ4NDg5Y2NiZGRlYzhkMjZlZjVi
OTcwMDg4ZGEzN2YxN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmgKQEAgLTAsMCArMSw3MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBNZWRpYUtleU1lc3NhZ2VFdmVudF9oCisjZGVmaW5lIE1lZGlh
S2V5TWVzc2FnZUV2ZW50X2gKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNp
bmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIk1lZGlhS2V5RXJyb3IuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdHJ1Y3QgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0IDogcHVibGljIEV2
ZW50SW5pdCB7CisgICAgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0KCk7CisKKyAgICBSZWZQdHI8
VWludDhBcnJheT4gbWVzc2FnZTsKKyAgICBTdHJpbmcgZGVmYXVsdFVSTDsKK307CisKK2NsYXNz
IE1lZGlhS2V5TWVzc2FnZUV2ZW50IDogcHVibGljIEV2ZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5NZWRpYUtleU1lc3NhZ2VFdmVudCgpOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFLZXlNZXNzYWdlRXZlbnQ+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IE1lZGlhS2V5TWVzc2FnZUV2ZW50KTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxNZWRpYUtleU1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0JiBpbml0aWFsaXplcikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFLZXlNZXNzYWdlRXZlbnQodHlwZSwgaW5p
dGlhbGl6ZXIpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50
ZXJmYWNlTmFtZSgpIGNvbnN0OworCisgICAgVWludDhBcnJheSogbWVzc2FnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWVzc2FnZS5nZXQoKTsgfQorICAgIFN0cmluZyBkZWZhdWx0VVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWZhdWx0VVJMOyB9CisKK3ByaXZhdGU6CisgICAgTWVkaWFLZXlNZXNzYWdl
RXZlbnQoKTsKKyAgICBNZWRpYUtleU1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGNvbnN0IE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpOworCisgICAg
UmVmUHRyPFVpbnQ4QXJyYXk+IG1fbWVzc2FnZTsKKyAgICBTdHJpbmcgbV9kZWZhdWx0VVJMOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VF
dmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
TWVzc2FnZUV2ZW50LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDQ1YjZhOTRiMWQzOTBlOTFhNDI4ZjUxYjRl
NzhiYzhhZGE1ZWYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5pZGwKQEAgLTAsMCArMSwzNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworbW9kdWxlIGVuY3J5cHRlZG1lZGlhIHsKKworICAgIGludGVyZmFjZSBbCisg
ICAgICAgIENvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMiwKKyAgICAgICAgVjhFbmFibGVk
QXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhLAorICAgICAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPUV2
ZW50IAorICAgIF0gTWVkaWFLZXlNZXNzYWdlRXZlbnQgOiBFdmVudCB7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBVaW50OEFycmF5IG1lc3NhZ2U7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3JdIERPTVN0cmluZyBkZWZhdWx0VVJM
OworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlMDZm
OGQ1MDYzMTdlYTNmYjlhODM3ODc5ZmY4MDFjOGY5NjdhMjUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQu
Y3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlICJNZWRpYUtleU5lZWRl
ZEV2ZW50LmgiCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL1VpbnQ4
QXJyYXkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRpYUtleU5lZWRlZEV2ZW50SW5p
dDo6TWVkaWFLZXlOZWVkZWRFdmVudEluaXQoKQoreworfQorCitNZWRpYUtleU5lZWRlZEV2ZW50
OjpNZWRpYUtleU5lZWRlZEV2ZW50KCkKK3sKK30KKworTWVkaWFLZXlOZWVkZWRFdmVudDo6TWVk
aWFLZXlOZWVkZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IE1lZGlhS2V5
TmVlZGVkRXZlbnRJbml0JiBpbml0aWFsaXplcikKKyAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxp
emVyKQorICAgICwgbV9pbml0RGF0YShpbml0aWFsaXplci5pbml0RGF0YSkKK3sKK30KKworTWVk
aWFLZXlOZWVkZWRFdmVudDo6fk1lZGlhS2V5TmVlZGVkRXZlbnQoKQoreworfQorCitjb25zdCBB
dG9taWNTdHJpbmcmIE1lZGlhS2V5TmVlZGVkRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAor
eworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yTWVkaWFLZXlOZWVkZWRFdmVu
dDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzZhY2UzMjMzYTNkMWVmNGJlNmM3ZDMyNWNkZGViYjVmNjIwMDk3
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlOZWVkZWRFdmVudC5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgTWVkaWFLZXlOZWVkZWRFdmVudF9oCisjZGVmaW5lIE1lZGlhS2V5TmVlZGVkRXZlbnRf
aAorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIkV2ZW50Lmgi
CisjaW5jbHVkZSAiTWVkaWFLZXlFcnJvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
cnVjdCBNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCA6IHB1YmxpYyBFdmVudEluaXQgeworICAgIE1l
ZGlhS2V5TmVlZGVkRXZlbnRJbml0KCk7CisKKyAgICBSZWZQdHI8VWludDhBcnJheT4gaW5pdERh
dGE7Cit9OworCitjbGFzcyBNZWRpYUtleU5lZWRlZEV2ZW50IDogcHVibGljIEV2ZW50IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5NZWRpYUtleU5lZWRlZEV2ZW50KCk7CisKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNZWRpYUtleU5lZWRlZEV2ZW50PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUtleU5lZWRlZEV2ZW50KTsKKyAgICB9CisKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleU5lZWRlZEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBjb25zdCBNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhS2V5TmVlZGVkRXZlbnQo
dHlwZSwgaW5pdGlhbGl6ZXIpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCisgICAgVWludDhBcnJheSogaW5pdERhdGEo
KSBjb25zdCB7IHJldHVybiBtX2luaXREYXRhLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgTWVk
aWFLZXlOZWVkZWRFdmVudCgpOworICAgIE1lZGlhS2V5TmVlZGVkRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBjb25zdCBNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIp
OworCisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IG1faW5pdERhdGE7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44N2YxMGI4NGY3M2EwZWRhYzg0ZWY2YmRmNTk0OTgxMjc4NzdjNDA3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleU5lZWRlZEV2ZW50LmlkbApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUg
ZW5jcnlwdGVkbWVkaWEgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9
RU5DUllQVEVEX01FRElBX1YyLAorICAgICAgICBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVk
TWVkaWEsCisgICAgICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQgCisgICAgXSBNZWRpYUtl
eU5lZWRlZEV2ZW50IDogRXZlbnQgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgVWludDhB
cnJheSBpbml0RGF0YTsKKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTI3YmY1OTc4Mjg0ZTU3YjhlODYzNTRiZmNkMjdiMWIzMGZiNTY5MgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9u
LmNwcApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIk1lZGlhS2V5U2Vzc2lvbi5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QV9WMikKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVldWUu
aCIKKyNpbmNsdWRlICJNZWRpYUtleUVycm9yLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlzLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxNZWRpYUtleVNlc3Npb24+IE1lZGlh
S2V5U2Vzc2lvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE1lZGlh
S2V5cyoga2V5cywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFLZXlTZXNzaW9uKGNvbnRleHQs
IGtleXMsIGtleVN5c3RlbSwgc2Vzc2lvbklkKSk7Cit9CisKK01lZGlhS2V5U2Vzc2lvbjo6TWVk
aWFLZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE1lZGlhS2V5cyog
a2V5cywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQor
ICAgIDogbV9rZXlzKGtleXMpCisgICAgLCBtX2tleVN5c3RlbShrZXlTeXN0ZW0pCisgICAgLCBt
X3Nlc3Npb25JZChzZXNzaW9uSWQpCisgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShHZW5lcmljRXZl
bnRRdWV1ZTo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNv
bnRleHQpCit7Cit9CisKK01lZGlhS2V5U2Vzc2lvbjo6fk1lZGlhS2V5U2Vzc2lvbigpCit7Cisg
ICAgY2xvc2UoKTsKK30KKwordm9pZCBNZWRpYUtleVNlc3Npb246OnNldEVycm9yKE1lZGlhS2V5
RXJyb3IqIGVycm9yKQoreworICAgIG1fZXJyb3IgPSBlcnJvcjsKK30KKwordm9pZCBNZWRpYUtl
eVNlc3Npb246OmNsb3NlKCkKK3sKKyAgICBpZiAobV9rZXlzKQorICAgICAgICBtX2tleXMtPnNl
c3Npb25XaWxsQ2xvc2UodGhpcyk7CisgICAgbV9rZXlzID0gMDsKKworICAgIG1fYXN5bmNFdmVu
dFF1ZXVlLT5jYW5jZWxBbGxFdmVudHMoKTsKK30KKwordm9pZCBNZWRpYUtleVNlc3Npb246OmFk
ZEtleShVaW50OEFycmF5KiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX2tl
eXMpCisgICAgICAgIG1fa2V5cy0+c2Vzc2lvbkRpZEFkZEtleSh0aGlzLCBrZXksIGVjKTsKK30K
Kwordm9pZCBNZWRpYUtleVNlc3Npb246OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBl
dmVudCkKK3sKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50KTsKK30K
KworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUtleVNlc3Npb246OmludGVyZmFjZU5hbWUoKSBj
b25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yTWVkaWFLZXlTZXNz
aW9uOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzA5Yjc5NDg3
NDBlMzIxYWJmNWMwMjgwMzRmYjFlYTAzNTMyZGEzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKQEAgLTAs
MCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFLZXlTZXNzaW9uX2gKKyNkZWZp
bmUgTWVkaWFLZXlTZXNzaW9uX2gKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisK
KyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgR2VuZXJpY0V2ZW50UXVldWU7CitjbGFzcyBNZWRpYUtleUVycm9yOworY2xhc3MgTWVk
aWFLZXlzOworCitjbGFzcyBNZWRpYUtleVNlc3Npb24gOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRp
YUtleVNlc3Npb24+LCBwdWJsaWMgRXZlbnRUYXJnZXQgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE1lZGlhS2V5U2Vzc2lvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBNZWRpYUtleXMqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQpOworICAgIH5NZWRpYUtleVNlc3Npb24oKTsKKworICAgIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtKCkgY29uc3QgeyByZXR1cm4gbV9rZXlTeXN0ZW07IH0KKyAgICBjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklkOyB9CisKKyAgICB2b2lkIHNl
dEVycm9yKE1lZGlhS2V5RXJyb3IqKTsKKyAgICBNZWRpYUtleUVycm9yKiBlcnJvcigpIHsgcmV0
dXJuIG1fZXJyb3IuZ2V0KCk7IH0KKworICAgIHZvaWQgYWRkS2V5KFVpbnQ4QXJyYXkqIGtleSwg
RXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgY2xvc2UoKTsKKworICAgIHVzaW5nIFJlZkNvdW50
ZWQ8TWVkaWFLZXlTZXNzaW9uPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFLZXlT
ZXNzaW9uPjo6ZGVyZWY7CisKKyAgICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50
Pik7CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGtleWFkZGVk
KTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGtleWVycm9yKTsK
KyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGtleW1lc3NhZ2UpOwor
Citwcm90ZWN0ZWQ6CisgICAgTWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBNZWRpYUtleXMqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQpOworCisgICAgTWVkaWFLZXlzKiBtX2tleXM7CisgICAgU3RyaW5nIG1fa2V5U3lzdGVt
OworICAgIFN0cmluZyBtX3Nlc3Npb25JZDsKKyAgICBSZWZQdHI8TWVkaWFLZXlFcnJvcj4gbV9l
cnJvcjsKKyAgICBPd25QdHI8R2VuZXJpY0V2ZW50UXVldWU+IG1fYXN5bmNFdmVudFF1ZXVlOwor
Citwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAgIHZp
cnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVu
dFRhcmdldERhdGE7IH0KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRU
YXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisgICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KKworICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBFdmVudFRhcmdldERhdGEgbV9l
dmVudFRhcmdldERhdGE7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01F
RElBX1YyKQorCisjZW5kaWYgLy8gTWVkaWFLZXlTZXNzaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xOGFkNmMwYjhlNzBmMzlkOWY1MDIwY2Q1YjAyOGZjNWE2MTQ2ZmM4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uaWRsCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyAKK21vZHVsZSBlbmNy
eXB0ZWRtZWRpYSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1FTkNS
WVBURURfTUVESUFfVjIsCisgICAgICAgIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRp
YSwKKyAgICAgICAgRXZlbnRUYXJnZXQsCisgICAgXSBNZWRpYUtleVNlc3Npb24geworICAgICAg
ICAvLyBlcnJvciBzdGF0ZQorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFLZXlFcnJv
ciBlcnJvcjsKKworICAgICAgICAvLyBzZXNzaW9uIHByb3BlcnRpZXMKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBrZXlTeXN0ZW07CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcgc2Vzc2lvbklkOworCisgICAgICAgIC8vIHNlc3Npb24gb3BlcmF0aW9u
cworICAgICAgICB2b2lkIGFkZEtleShpbiBVaW50OEFycmF5IGtleSkKKyAgICAgICAgICAgIHJh
aXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIGNsb3NlKCk7CisgICAgfTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hMjhhZjJlYTA2NjBkMTUxOTBiNjgxOTY5MDQ1M2VlN2Y5YTVhOGEyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleXMuY3BwCkBAIC0wLDAgKzEsMjU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhS2V5cy5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQV9WMikKKworI2luY2x1ZGUgIkNETS5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNp
bmNsdWRlICJNZWRpYUtleU1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIk1lZGlhS2V5U2Vzc2lv
bi5oIgorI2luY2x1ZGUgIlVVSUQuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWVkaWFLZXlzPiBNZWRpYUtleXM6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8g
RnJvbSA8aHR0cDovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL2VuY3J5
cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEuaHRtbCNkb20tbWVkaWEta2V5cy1jb25zdHJ1Y3Rv
cj46CisgICAgLy8gVGhlIE1lZGlhS2V5cyhrZXlTeXN0ZW0pIGNvbnN0cnVjdG9yIG11c3QgcnVu
IHRoZSBmb2xsb3dpbmcgc3RlcHM6CisKKyAgICAvLyAxLiBJZiBrZXlTeXN0ZW0gaXMgbnVsbCBv
ciBhbiBlbXB0eSBzdHJpbmcsIHRocm93IGFuIElOVkFMSURfQUNDRVNTX0VSUiBleGNlcHRpb24g
YW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmIChrZXlTeXN0ZW0uaXNOdWxsKCkgfHwga2V5
U3lzdGVtLmlzRW1wdHkoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gMi4gSWYga2V5U3lzdGVtIGlzIG5vdCBv
bmUgb2YgdGhlIHVzZXIgYWdlbnQncyBzdXBwb3J0ZWQgS2V5IFN5c3RlbXMsIHRocm93IGEgTk9U
X1NVUFBPUlRFRF9FUlIgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICghQ0RNOjpzdXBw
b3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9F
UlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8vIDMuIExldCBjZG0gYmUgdGhl
IGNvbnRlbnQgZGVjcnlwdGlvbiBtb2R1bGUgY29ycmVzcG9uZGluZyB0byBrZXlTeXN0ZW0uCisg
ICAgLy8gNC4gTG9hZCBjZG0gaWYgbmVjZXNzYXJ5LgorICAgIE93blB0cjxDRE0+IGNkbSA9IENE
TTo6Y3JlYXRlKGtleVN5c3RlbSk7CisKKyAgICAvLyA1LiBDcmVhdGUgYSBuZXcgTWVkaWFLZXlz
IG9iamVjdC4KKyAgICAvLyA1LjEgTGV0IHRoZSBrZXlTeXN0ZW0gYXR0cmlidXRlIGJlIGtleVN5
c3RlbS4KKyAgICAvLyA2LiBSZXR1cm4gdGhlIG5ldyBvYmplY3QgdG8gdGhlIGNhbGxlci4KKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhS2V5cyhrZXlTeXN0ZW0sIGNkbS5yZWxlYXNlKCkp
KTsKK30KKworTWVkaWFLZXlzOjpNZWRpYUtleXMoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIFBh
c3NPd25QdHI8Q0RNPiBjZG0pCisgICAgOiBtX2tleVN5c3RlbShrZXlTeXN0ZW0pCisgICAgLCBt
X2NkbShjZG0pCisgICAgLCBtX2tleVJlcXVlc3RUaW1lcih0aGlzLCAmTWVkaWFLZXlzOjprZXlS
ZXF1ZXN0VGltZXJGaXJlZCkKKyAgICAsIG1fYWRkS2V5VGltZXIodGhpcywgJk1lZGlhS2V5czo6
YWRkS2V5VGltZXJGaXJlZCkKK3sKK30KKworTWVkaWFLZXlzOjp+TWVkaWFLZXlzKCkKK3sKKyAg
ICAvLyBGcm9tIDxodHRwOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS90aXAv
ZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS5odG1sI2RvbS1tZWRpYS1rZXlzLWNvbnN0
cnVjdG9yPjoKKyAgICAvLyBXaGVuIGRlc3Ryb3lpbmcgYSBNZWRpYUtleXMgb2JqZWN0LCBmb2xs
b3cgdGhlIHN0ZXBzIGluIGNsb3NlKCkuCisgICAgZm9yIChTZXNzaW9uTWFwOjppdGVyYXRvciBp
ID0gbV9zZXNzaW9ucy5iZWdpbigpOyBpICE9IG1fc2Vzc2lvbnMuZW5kKCk7ICsraSkKKyAgICAg
ICAgaS0+c2Vjb25kLT5jbG9zZSgpOworCit9CisKK1Bhc3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9u
PiBNZWRpYUtleXM6OmNyZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgU3RyaW5nJiB0eXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgLy8gRnJvbSA8aHR0cDovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEv
cmF3LWZpbGUvdGlwL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEuaHRtbCNkb20tY3Jl
YXRlc2Vzc2lvbj46CisgICAgLy8gVGhlIGNyZWF0ZVNlc3Npb24odHlwZSwgaW5pdERhdGEpIG1l
dGhvZCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIC8vIE5vdGU6IFRoZSBjb250
ZW50cyBvZiBpbml0RGF0YSBhcmUgY29udGFpbmVyLXNwZWNpZmljIEluaXRpYWxpemF0aW9uIERh
dGEuCisKKyAgICAvLyAxLiBJZiB0eXBlIGlzIG51bGwgb3IgYW4gZW1wdHkgc3RyaW5nIGFuZCBp
bml0RGF0YSBpcyBub3QgbnVsbCBvciBhbiBlbXB0eSBzdHJpbmcsIHRocm93IGFuCisgICAgLy8g
SU5WQUxJRF9BQ0NFU1NfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAg
aWYgKCh0eXBlLmlzTnVsbCgpIHx8IHR5cGUuaXNFbXB0eSgpKSAmJiAoIWluaXREYXRhIHx8IGlu
aXREYXRhLT5sZW5ndGgoKSkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8vIDIuIElmIHR5cGUgY29udGFpbnMgYSBN
SU1FIHR5cGUgdGhhdCBpcyBub3Qgc3VwcG9ydGVkIG9yIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhl
IGtleVN5c3RlbSwgdGhyb3cKKyAgICAvLyBhIE5PVF9TVVBQT1JURURfRVJSIGV4Y2VwdGlvbiBh
bmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgLy8gTk9URTogQ3VycmVudGx5LCBubyBDRE1zIHBy
b3ZpZGUgdGhlIGFiaWxpdHkgdG8gcXVlcnkgZm9yIE1JTUUgdHlwZSBzdXBwb3J0LgorCisgICAg
Ly8gMy4gQ3JlYXRlIGEgbmV3IE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuCisgICAgLy8gMy4xIExl
dCB0aGUga2V5U3lzdGVtIGF0dHJpYnV0ZSBiZSBrZXlTeXN0ZW0uCisgICAgLy8gMy4yIExldCB0
aGUgc2Vzc2lvbklkIGF0dHJpYnV0ZSBiZSBhIHVuaXF1ZSBTZXNzaW9uIElEIHN0cmluZy4gSXQg
bWF5IGJlIGdlbmVyYXRlZCBieSBjZG0uCisgICAgUmVmUHRyPE1lZGlhS2V5U2Vzc2lvbj4gc2Vz
c2lvbiA9IE1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKGNvbnRleHQsIHRoaXMsIGtleVN5c3RlbSgp
LCBtX2NkbS0+Z2VuZXJhdGVTZXNzaW9uSWQoKSk7CisKKyAgICAvLyA0LiBBZGQgdGhlIG5ldyBv
YmplY3QgdG8gYW4gaW50ZXJuYWwgbGlzdCBvZiBzZXNzaW9uIG9iamVjdHMuCisgICAgbV9zZXNz
aW9ucy5zZXQoc2Vzc2lvbi0+c2Vzc2lvbklkKCksIHNlc3Npb24pOworCisgICAgLy8gNS4gU2No
ZWR1bGUgYSB0YXNrIHRvIGdlbmVyYXRlIGEga2V5IHJlcXVlc3QsIHByb3ZpZGluZyB0eXBlLCBp
bml0RGF0YSwgYW5kIHRoZSBuZXcgb2JqZWN0LgorICAgIG1fcGVuZGluZ0tleVJlcXVlc3RzLmFw
cGVuZChQZW5kaW5nS2V5UmVxdWVzdCh0eXBlLCBpbml0RGF0YSwgc2Vzc2lvbi0+c2Vzc2lvbklk
KCkpKTsKKyAgICBtX2tleVJlcXVlc3RUaW1lci5zdGFydE9uZVNob3QoMCk7CisKKyAgICAvLyA2
LiBSZXR1cm4gdGhlIG5ldyBvYmplY3QgdG8gdGhlIGNhbGxlci4KKyAgICByZXR1cm4gc2Vzc2lv
bjsKK30KKwordm9pZCBNZWRpYUtleXM6OmtleVJlcXVlc3RUaW1lckZpcmVkKFRpbWVyPE1lZGlh
S2V5cz4qKQoreworICAgIEFTU0VSVChtX3BlbmRpbmdLZXlSZXF1ZXN0cy5zaXplKCkpOworCisg
ICAgd2hpbGUgKCFtX3BlbmRpbmdLZXlSZXF1ZXN0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgUGVu
ZGluZ0tleVJlcXVlc3QgcmVxdWVzdCA9IG1fcGVuZGluZ0tleVJlcXVlc3RzLnRha2VGaXJzdCgp
OworICAgICAgICBBU1NFUlQobV9zZXNzaW9ucy5jb250YWlucyhyZXF1ZXN0LnNlc3Npb25JZCkp
OworICAgICAgICBNZWRpYUtleVNlc3Npb24qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmZpbmQocmVx
dWVzdC5zZXNzaW9uSWQpLT5zZWNvbmQuZ2V0KCk7CisKKyAgICAgICAgLy8gTk9URTogQ29udGlu
dWVkIGZyb20gc3RlcCA1IGluIE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbigpLgorICAgICAgICAv
LyBUaGUgdXNlciBhZ2VudCB3aWxsIGFzeW5jaHJvbm91c2x5IGV4ZWN1dGUgdGhlIGZvbGxvd2lu
ZyBzdGVwcyBpbiB0aGUgdGFzazoKKworICAgICAgICAvLyAxLiBMZXQgY2RtIGJlIHRoZSBjZG0g
bG9hZGVkIGluIHRoZSBNZWRpYUtleXMgY29uc3RydWN0b3IuCisgICAgICAgIC8vIDIuIExldCBk
ZWZhdWx0VVJMIGJlIG51bGwuCisgICAgICAgIFN0cmluZyBkZWZhdWx0VVJMOworICAgICAgICBN
ZWRpYUtleUVycm9yOjpDb2RlIGVycm9yQ29kZSA9IDA7CisgICAgICAgIHVuc2lnbmVkIGxvbmcg
c3lzdGVtQ29kZSA9IDA7CisKKyAgICAgICAgLy8gMy4gVXNlIGNkbSB0byBnZW5lcmF0ZSBhIGtl
eSByZXF1ZXN0IGFuZCBmb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUgZmlyc3QgbWF0Y2hpbmcgY29u
ZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgorCisgICAgICAgIFJlZlB0cjxVaW50OEFy
cmF5PiBrZXlSZXF1ZXN0ID0gbV9jZG0tPmdlbmVyYXRlS2V5UmVxdWVzdChyZXF1ZXN0Lm1pbWVU
eXBlLCByZXF1ZXN0LmluaXREYXRhLmdldCgpLCByZXF1ZXN0LnNlc3Npb25JZCwgZGVmYXVsdFVS
TCwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKKworICAgICAgICAvLyBPdGhlcndpc2UgW2lmIGEg
cmVxdWVzdCBpcyBub3Qgc3VjY2Vzc2Z1bGx5IGdlbmVyYXRlZF06CisgICAgICAgIGlmICgha2V5
UmVxdWVzdCkgeworICAgICAgICAgICAgLy8gMy4xLiBDcmVhdGUgYSBuZXcgTWVkaWFLZXlFcnJv
ciBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CisgICAgICAgICAgICAvLyAg
ICAgIGNvZGUgPSB0aGUgYXBwcm9wcmlhdGUgTWVkaWFLZXlFcnJvciBjb2RlCisgICAgICAgICAg
ICAvLyAgICAgIHN5c3RlbUNvZGUgPSBhIEtleSBTeXN0ZW0tc3BlY2lmaWMgdmFsdWUsIGlmIHBy
b3ZpZGVkLCBhbmQgMCBvdGhlcndpc2UKKyAgICAgICAgICAgIFJlZlB0cjxNZWRpYUtleUVycm9y
PiBlcnJvciA9IE1lZGlhS2V5RXJyb3I6OmNyZWF0ZShlcnJvckNvZGUsIHN5c3RlbUNvZGUpLmdl
dCgpOworCisgICAgICAgICAgICAvLyAzLjIuIFNldCB0aGUgTWVkaWFLZXlTZXNzaW9uIG9iamVj
dCdzIGVycm9yIGF0dHJpYnV0ZSB0byB0aGUgZXJyb3Igb2JqZWN0IGNyZWF0ZWQgaW4gdGhlIHBy
ZXZpb3VzIHN0ZXAuCisgICAgICAgICAgICBzZXNzaW9uLT5zZXRFcnJvcihlcnJvci5nZXQoKSk7
CisKKyAgICAgICAgICAgIC8vIDMuMy4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZl
bnQgbmFtZWQga2V5ZXJyb3IgYXQgdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuCisgICAgICAg
ICAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Vi
a2l0a2V5ZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50LT5zZXRU
YXJnZXQoc2Vzc2lvbik7CisgICAgICAgICAgICBzZXNzaW9uLT5lbnF1ZXVlRXZlbnQoZXZlbnQu
cmVsZWFzZSgpKTsKKworICAgICAgICAgICAgLy8gMy40LiBBYm9ydCB0aGUgdGFzay4KKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gNC4gcXVldWUgYSB0YXNr
IHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQga2V5bWVzc2FnZSBhdCB0aGUgbmV3IG9iamVj
dAorICAgICAgICAvLyAgICBUaGUgZXZlbnQgaXMgb2YgdHlwZSBNZWRpYUtleU1lc3NhZ2VFdmVu
dCBhbmQgaGFzOgorICAgICAgICAvLyAgICBtZXNzYWdlID0ga2V5IHJlcXVlc3QKKyAgICAgICAg
Ly8gICAgZGVzdGluYXRpb25VUkwgPSBkZWZhdWx0VVJMCisgICAgICAgIE1lZGlhS2V5TWVzc2Fn
ZUV2ZW50SW5pdCBpbml0OworICAgICAgICBpbml0LmJ1YmJsZXMgPSBmYWxzZTsKKyAgICAgICAg
aW5pdC5jYW5jZWxhYmxlID0gZmFsc2U7CisgICAgICAgIGluaXQubWVzc2FnZSA9IGtleVJlcXVl
c3Q7CisgICAgICAgIGluaXQuZGVmYXVsdFVSTCA9IGRlZmF1bHRVUkw7CisgICAgICAgIFJlZlB0
cjxNZWRpYUtleU1lc3NhZ2VFdmVudD4gZXZlbnQgPSBNZWRpYUtleU1lc3NhZ2VFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXltZXNzYWdlRXZlbnQsIGluaXQpOworICAgICAgICBl
dmVudC0+c2V0VGFyZ2V0KHNlc3Npb24pOworICAgICAgICBzZXNzaW9uLT5lbnF1ZXVlRXZlbnQo
ZXZlbnQpOworICAgIH0KK30KKwordm9pZCBNZWRpYUtleXM6OnNlc3Npb25EaWRBZGRLZXkoTWVk
aWFLZXlTZXNzaW9uKiBzZXNzaW9uLCBVaW50OEFycmF5KiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIEFTU0VSVChzZXNzaW9uKTsKKyAgICAvLyBGcm9tIDxodHRwOi8vZHZjcy53My5v
cmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS90aXAvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1t
ZWRpYS5odG1sI2RvbS1hZGRrZXk+OgorICAgIC8vIFRoZSBhZGRLZXkoa2V5KSBtZXRob2QgbXVz
dCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAvLyAxLiBJZiB0aGUgZmlyc3Qgb3Igc2Vj
b25kIGFyZ3VtZW50IFtzaWNdIGlzIG51bGwgb3IgYW4gZW1wdHkgYXJyYXksIHRocm93IGFuIElO
VkFMSURfQUNDRVNTX0VSUi4KKyAgICAvLyBOT1RFOiB0aGUgcmVmZXJlbmNlIHRvIGEgInNlY29u
ZCBhcmd1bWVudCIgaXMgYSBzcGVjIGJ1Zy4KKyAgICBpZiAoIWtleSB8fCAha2V5LT5sZW5ndGgo
KSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIC8vIDIuIFNjaGVkdWxlIGEgdGFzayB0byBoYW5kbGUgdGhlIGNhbGwsIHBy
b3ZpZGluZyBrZXkuCisgICAgbV9wZW5kaW5nS2V5cy5hcHBlbmQoUGVuZGluZ0tleShzZXNzaW9u
LT5zZXNzaW9uSWQoKSwga2V5KSk7CisgICAgbV9hZGRLZXlUaW1lci5zdGFydE9uZVNob3QoMCk7
Cit9CisKK3ZvaWQgTWVkaWFLZXlzOjphZGRLZXlUaW1lckZpcmVkKFRpbWVyPE1lZGlhS2V5cz4q
KQoreworICAgIEFTU0VSVChtX3BlbmRpbmdLZXlzLnNpemUoKSk7CisKKyAgICB3aGlsZSAoIW1f
cGVuZGluZ0tleXMuaXNFbXB0eSgpKSB7CisgICAgICAgIFBlbmRpbmdLZXkgcGVuZGluZ0tleSA9
IG1fcGVuZGluZ0tleXMudGFrZUZpcnN0KCk7CisgICAgICAgIEFTU0VSVChtX3Nlc3Npb25zLmNv
bnRhaW5zKHBlbmRpbmdLZXkuc2Vzc2lvbklkKSk7CisgICAgICAgIE1lZGlhS2V5U2Vzc2lvbiog
c2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZmluZChwZW5kaW5nS2V5LnNlc3Npb25JZCktPnNlY29uZC5n
ZXQoKTsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgZXJyb3JDb2RlID0gMDsKKyAgICAgICAgdW5z
aWduZWQgbG9uZyBzeXN0ZW1Db2RlID0gMDsKKworICAgICAgICAvLyBOT1RFOiBDb250aW51ZWQg
ZnJvbSBzdGVwIDIuIG9mIE1lZGlhS2V5czo6c2Vzc2lvbkRpZEFkZEtleSgpCisgICAgICAgIC8v
IDIuMS4gTGV0IGNkbSBiZSB0aGUgY2RtIGxvYWRlZCBpbiB0aGUgTWVkaWFLZXlzIGNvbnN0cnVj
dG9yLgorICAgICAgICAvLyAyLjIuIExldCAnZGlkIHN0b3JlIGtleScgYmUgZmFsc2UuCisgICAg
ICAgIGJvb2wgZGlkU3RvcmVLZXkgPSBmYWxzZTsKKyAgICAgICAgLy8gMi4zLiBMZXQgJ25leHQg
bWVzc2FnZScgYmUgbnVsbC4KKyAgICAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IG5leHRNZXNzYWdl
OworICAgICAgICAvLyAyLjQuIFVzZSBjZG0gdG8gaGFuZGxlIGtleS4KKyAgICAgICAgZGlkU3Rv
cmVLZXkgPSBtX2NkbS0+YWRkS2V5Rm9yU2Vzc2lvbklkKHBlbmRpbmdLZXkua2V5LmdldCgpLCBw
ZW5kaW5nS2V5LnNlc3Npb25JZCwgbmV4dE1lc3NhZ2UsIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7
CisgICAgICAgIC8vIDIuNS4gSWYgZGlkIHN0b3JlIGtleSBpcyB0cnVlIGFuZCB0aGUgbWVkaWEg
ZWxlbWVudCBpcyB3YWl0aW5nIGZvciBhIGtleSwgcXVldWUgYSB0YXNrIHRvIGF0dGVtcHQgdG8g
cmVzdW1lIHBsYXliYWNrLgorICAgICAgICAvLyBUT0RPOiBGaW5kIGFuZCByZXN0YXJ0IHRoZSBt
ZWRpYSBlbGVtZW50CisKKyAgICAgICAgLy8gMi42LiBJZiBuZXh0IG1lc3NhZ2UgaXMgbm90IG51
bGwsIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGtleW1lc3NhZ2Ug
YXQgdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuCisgICAgICAgIC8vICAgICAgVGhlIGV2ZW50
IGlzIG9mIHR5cGUgTWVkaWFLZXlNZXNzYWdlRXZlbnQgYW5kIGhhczoKKyAgICAgICAgLy8gICAg
ICBtZXNzYWdlID0gbmV4dCBtZXNzYWdlCisgICAgICAgIC8vICAgICAgZGVzdGluYXRpb25VUkwg
PSBudWxsCisgICAgICAgIE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCBpbml0OworICAgICAgICBp
bml0LmJ1YmJsZXMgPSBmYWxzZTsKKyAgICAgICAgaW5pdC5jYW5jZWxhYmxlID0gZmFsc2U7Cisg
ICAgICAgIGluaXQubWVzc2FnZSA9IG5leHRNZXNzYWdlOworICAgICAgICBSZWZQdHI8TWVkaWFL
ZXlNZXNzYWdlRXZlbnQ+IGV2ZW50ID0gTWVkaWFLZXlNZXNzYWdlRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkud2Via2l0a2V5bWVzc2FnZUV2ZW50LCBpbml0KTsKKyAgICAgICAgZXZlbnQtPnNl
dFRhcmdldChzZXNzaW9uKTsKKyAgICAgICAgc2Vzc2lvbi0+ZW5xdWV1ZUV2ZW50KGV2ZW50KTsK
KworICAgICAgICAvLyAyLjcuIElmIGRpZCBzdG9yZSBrZXkgaXMgdHJ1ZSwgcXVldWUgYSB0YXNr
IHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQga2V5YWRkZWQgYXQgdGhlIE1lZGlhS2V5U2Vz
c2lvbiBvYmplY3QuCisgICAgICAgIHNlc3Npb24tPmVucXVldWVFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS53ZWJraXRrZXlhZGRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKworICAg
ICAgICAvLyAyLjguIElmIGFueSBvZiB0aGUgcHJlY2VkaW5nIHN0ZXBzIGluIHRoZSB0YXNrIGZh
aWxlZAorICAgICAgICAvLyAyLjguMS4gQ3JlYXRlIGEgbmV3IE1lZGlhS2V5RXJyb3Igb2JqZWN0
IHdpdGggdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgorICAgICAgICAvLyAgICAgICAgY29kZSA9
IHRoZSBhcHByb3ByaWF0ZSBNZWRpYUtleUVycm9yIGNvZGUKKyAgICAgICAgLy8gICAgICAgIHN5
c3RlbUNvZGUgPSBhIEtleSBTeXN0ZW0tc3BlY2lmaWMgdmFsdWUsIGlmIHByb3ZpZGVkLCBhbmQg
MCBvdGhlcndpc2UKKyAgICAgICAgUmVmUHRyPE1lZGlhS2V5RXJyb3I+IGVycm9yID0gTWVkaWFL
ZXlFcnJvcjo6Y3JlYXRlKGVycm9yQ29kZSwgc3lzdGVtQ29kZSkuZ2V0KCk7CisKKyAgICAgICAg
Ly8gMi44LjIuIFNldCB0aGUgTWVkaWFLZXlTZXNzaW9uIG9iamVjdCdzIGVycm9yIGF0dHJpYnV0
ZSB0byB0aGUgZXJyb3Igb2JqZWN0IGNyZWF0ZWQgaW4gdGhlIHByZXZpb3VzIHN0ZXAuCisgICAg
ICAgIHNlc3Npb24tPnNldEVycm9yKGVycm9yLmdldCgpKTsKKworICAgICAgICAvLyAyLjguMy4g
cXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQga2V5ZXJyb3IgYXQgdGhl
IE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuCisgICAgICAgIFJlZlB0cjxFdmVudD4ga2V5ZXJyb3JF
dmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtleWVycm9yRXZlbnQsIGZh
bHNlLCBmYWxzZSk7CisgICAgICAgIGtleWVycm9yRXZlbnQtPnNldFRhcmdldChzZXNzaW9uKTsK
KyAgICAgICAgc2Vzc2lvbi0+ZW5xdWV1ZUV2ZW50KGtleWVycm9yRXZlbnQucmVsZWFzZSgpKTsK
KworICAgICAgICAvLyAyLjguNC4gQWJvcnQgdGhlIHRhc2suCisgICAgICAgIC8vIE5PVEU6IG5v
LW9wCisgICAgfQorfQorCit2b2lkIE1lZGlhS2V5czo6c2Vzc2lvbldpbGxDbG9zZShNZWRpYUtl
eVNlc3Npb24qIHNlc3Npb24pCit7CisgICAgLy8gRnJvbSA8aHR0cDovL2R2Y3MudzMub3JnL2hn
L2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEu
aHRtbCNkb20tY2xvc2U+OgorICAgIC8vIFRoZSBjbG9zZSgpIG1ldGhvZCBjYXVzZXMgdGhlIGtl
eSBhY3F1aXNpdGlvbiBzZXNzaW9uIHRvIGNsb3NlIGFuZCBhbGwga2V5cyB0byBiZSByZWxlYXNl
ZC4gSXQgbXVzdCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAvLworICAgIC8vIDEuIENs
ZWFyIGFueSBpbnRlcm5hbCBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNlc3Npb24sIGluY2x1
ZGluZyBhbGwga2V5cyBhbmQgbGljZW5zZXMuCisgICAgbV9jZG0tPmNsZWFyS2V5c0Zyb21TZXNz
aW9uSWQoc2Vzc2lvbi0+c2Vzc2lvbklkKCkpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGFlNmFhYWM3MjRmZWUzNGIwYjM1MzBmODhiOWEzMzQ3Yjg3MDYxOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgK
QEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFLZXlzX2gKKyNkZWZp
bmUgTWVkaWFLZXlzX2gKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNs
dWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRl
ICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDRE07CitjbGFzcyBNZWRpYUtleVNl
c3Npb247CisKK2NsYXNzIE1lZGlhS2V5cyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5cz4g
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5cz4gY3JlYXRlKGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtLCBFeGNlcHRpb25Db2RlJik7CisgICAgfk1lZGlhS2V5cygpOwor
CisgICAgUGFzc1JlZlB0cjxNZWRpYUtleVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXRE
YXRhLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNv
bnN0IHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9CisKKyAgICB2b2lkIHNlc3Npb25XaWxsQ2xvc2Uo
TWVkaWFLZXlTZXNzaW9uKik7CisgICAgdm9pZCBzZXNzaW9uRGlkQWRkS2V5KE1lZGlhS2V5U2Vz
c2lvbiosIFVpbnQ4QXJyYXkqIGtleSwgRXhjZXB0aW9uQ29kZSYpOworCitwcm90ZWN0ZWQ6Cisg
ICAgdm9pZCBrZXlSZXF1ZXN0VGltZXJGaXJlZChUaW1lcjxNZWRpYUtleXM+Kik7CisgICAgdm9p
ZCBhZGRLZXlUaW1lckZpcmVkKFRpbWVyPE1lZGlhS2V5cz4qKTsKKworICAgIE1lZGlhS2V5cyhj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgUGFzc093blB0cjxDRE0+KTsKKworICAgIFN0cmluZyBt
X2tleVN5c3RlbTsKKyAgICBPd25QdHI8Q0RNPiBtX2NkbTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiA+IFNlc3Npb25NYXA7CisgICAgU2Vzc2lv
bk1hcCBtX3Nlc3Npb25zOworCisgICAgc3RydWN0IFBlbmRpbmdLZXlSZXF1ZXN0IHsKKyAgICAg
ICAgUGVuZGluZ0tleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSog
aW5pdERhdGEsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQorICAgICAgICAgICAgOiBtaW1lVHlw
ZShtaW1lVHlwZSkKKyAgICAgICAgICAgICwgaW5pdERhdGEoaW5pdERhdGEpCisgICAgICAgICAg
ICAsIHNlc3Npb25JZChzZXNzaW9uSWQpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICBT
dHJpbmcgbWltZVR5cGU7CisgICAgICAgIFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YTsKKyAg
ICAgICAgU3RyaW5nIHNlc3Npb25JZDsKKyAgICB9OworICAgIERlcXVlPFBlbmRpbmdLZXlSZXF1
ZXN0PiBtX3BlbmRpbmdLZXlSZXF1ZXN0czsKKyAgICBUaW1lcjxNZWRpYUtleXM+IG1fa2V5UmVx
dWVzdFRpbWVyOworCisgICAgc3RydWN0IFBlbmRpbmdLZXkgeworICAgICAgICBQZW5kaW5nS2V5
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBVaW50OEFycmF5KiBrZXkpIDogc2Vzc2lvbklkKHNl
c3Npb25JZCksIGtleShrZXkpIHsgfQorICAgICAgICBTdHJpbmcgc2Vzc2lvbklkOworICAgICAg
ICBSZWZQdHI8VWludDhBcnJheT4ga2V5OworICAgIH07CisgICAgRGVxdWU8UGVuZGluZ0tleT4g
bV9wZW5kaW5nS2V5czsKKyAgICBUaW1lcjxNZWRpYUtleXM+IG1fYWRkS2V5VGltZXI7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjZW5kaWYgLy8g
TWVkaWFLZXlzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDMxNzIyMjE4MzRhMTFkYjFiNDJiNDEwZDc4
OTRlODdmZWE4NmI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyAK
K21vZHVsZSBlbmNyeXB0ZWRtZWRpYSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25k
aXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIsCisgICAgICAgIFY4RW5hYmxlZEF0UnVudGltZT1l
bmNyeXB0ZWRNZWRpYSwKKyAgICAgICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTEsCisgICAgXSBN
ZWRpYUtleXMgeworICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gTWVk
aWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24oaW4gRE9NU3RyaW5nIHR5cGUsIGluIFVpbnQ4QXJy
YXkgaW5pdERhdGEpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtleVN5c3RlbTsKKyAgICB9OworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IGQ2ZmY3NzU3NTZkNTc3M2NmNTYzMmRkMjMwZTEzZjFhODEwMWEyMzYu
LmQ4Yzg5NTQyNzRjY2UxMzk4ZDZiNTYzMjFkOTFjZWNhZmNkMjg3NDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTExMzMsNiArMTEzMyw4IEBACiAgICAgICAgICAgICAnaHRtbC9NaWNyb0RhdGFJdGVt
VmFsdWUuaWRsJywKICAgICAgICAgICAgICdodG1sL01lZGlhS2V5RXJyb3IuaWRsJywKICAgICAg
ICAgICAgICdodG1sL01lZGlhS2V5RXZlbnQuaWRsJywKKyAgICAgICAgICAgICdodG1sL01lZGlh
S2V5TWVzc2FnZUV2ZW50LmlkbCcsCisgICAgICAgICAgICAnaHRtbC9NZWRpYUtleU5lZWRlZEV2
ZW50LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9SYWRpb05vZGVMaXN0LmlkbCcsCiAgICAgICAg
ICAgICAnaHRtbC9UZXh0TWV0cmljcy5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvVGltZVJhbmdl
cy5pZGwnLApAQCAtNDIyNSw2ICs0MjI3LDEwIEBACiAgICAgICAgICAgICAnaHRtbC9NZWRpYUtl
eUVycm9yLmgnLAogICAgICAgICAgICAgJ2h0bWwvTWVkaWFLZXlFdmVudC5jcHAnLAogICAgICAg
ICAgICAgJ2h0bWwvTWVkaWFLZXlFdmVudC5oJywKKyAgICAgICAgICAgICdodG1sL01lZGlhS2V5
TWVzc2dlRXZlbnQuY3BwJywKKyAgICAgICAgICAgICdodG1sL01lZGlhS2V5TWVzc2FnZUV2ZW50
LmgnLAorICAgICAgICAgICAgJ2h0bWwvTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAnLAorICAgICAg
ICAgICAgJ2h0bWwvTWVkaWFLZXlOZWVkZWRFdmVudC5oJywKICAgICAgICAgICAgICdodG1sL01p
Y3JvRGF0YUl0ZW1WYWx1ZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvTWljcm9EYXRhSXRlbVZh
bHVlLmgnLAogICAgICAgICAgICAgJ2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwJywKQEAgLTc3MjMs
NiArNzcyOSwxMCBAQAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNNZWRpYUtleUVycm9yLmgnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUtleUV2ZW50LmNwcCcsCiAgICAgICAgICAg
ICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhS2V5RXZlbnQu
aCcsCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCcsCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhS2V5TWVzc2FnZUV2ZW50LmgnLAorICAgICAg
ICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUtleU5l
ZWRlZEV2ZW50LmNwcCcsCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU01lZGlhS2V5TmVlZGVkRXZlbnQuaCcsCiAgICAgICAgICAgICAnPChQUk9E
VUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhTGlzdC5jcHAnLAogICAgICAg
ICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUxpc3Qu
aCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U01lZGlhUXVlcnlMaXN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjBkYjhmNDQ0MTRjZWFlYTRjZjU4ZGUzMTE0Y2I3
YzFkYjc3ODUyYi4uNDgwOWQ3ZDdiNzliZjQ3NDYwMThiZWUyOTg3ZWI2ZWViY2Y5YTRiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNTg1OCw2ICs1ODU4LDcgQEAKIAkJQ0FFOUY5MTAxNDY0NDFGMDAwQzI0NUIxIC8qIENTU1Zh
cmlhYmxlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENBRTlGOTBFMTQ2NDQxRjAwMEMyNDVCMSAvKiBDU1NWYXJpYWJsZVZhbHVlLmggKi87IH07
CiAJCUNEMTI3REVEMTRGMzA5N0QwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMTI3REVC
MTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbSAqLzsgfTsKIAkJ
Q0QxMjdERUUxNEYzMDk4NDAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RFQTE0RjMw
OTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDFCNEE2NTE2MDc4NkFFMDAyODJE
RjkgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERDMjE2MDE0RUVFMDBGRUEzQjEgLyogTWVkaWFLZXlO
ZWVkZWRFdmVudC5jcHAgKi87IH07CiAJCUNEMjdGNkU1MTQ1NzY4NUEwMDc4MjA3RCAvKiBKU01l
ZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDI3RjZFMjE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3Bw
ICovOyB9OwogCQlDRDI3RjZFNzE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkU2
MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlDRDM3QjM5
ODE1QzFCOTcxMDA2REM4OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzdCMzc0MTVDMUE3RTEwMDZE
Qzg5OCAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwICovOyB9OwpAQCAtNTg2OCw2ICs1ODY5
LDE1IEBACiAJCUNEODIwMzBEMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5I
VURXaW5kb3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0Q4MjAzMDkxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVl
bkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gKi87IH07CiAJCUNEODIwMzEwMTM5NUFDRTcwMEY5NTZD
NiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmlt
YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDRDgyMDMxMTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4MjAzMEYxMzk1QUNF
NzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSAqLzsgfTsKKwkJQ0RBOThEQTMxNjAx
NDY0MTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OEQ5QjE2MDEyOEE1MDBGRUEzQjEgLyogSlNN
ZWRpYUtleUVycm9yLmNwcCAqLzsgfTsKKwkJQ0RBOThERDgxNjAyNUJFRjAwRkVBM0IxIC8qIE1l
ZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEQTk4REQ1MTYwMjVCRUQwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VF
dmVudC5jcHAgKi87IH07CisJCUNEQTk4RERGMTYwMjZBMzcwMEZFQTNCMSAvKiBKU01lZGlhS2V5
TWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQTk4RERCMTYwMjZBMTgwMEZFQTNCMSAvKiBKU01lZGlhS2V5TWVzc2FnZUV2ZW50
LmNwcCAqLzsgfTsKKwkJQ0RBOThERTAxNjAyNkEzNzAwRkVBM0IxIC8qIEpTTWVkaWFLZXlOZWVk
ZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREE5OERERDE2MDI2QTE5MDBGRUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCAq
LzsgfTsKKwkJQ0RBOThFMDQxNjAzOUUxQTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTk4RENFMTYwMTU5
NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5cy5jcHAgKi87IH07CisJCUNEQTk4RTA2MTYwMzlFMUYw
MEZFQTNCMSAvKiBKU01lZGlhS2V5U2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OEREMDE2MDE1OTc5MDBGRUEzQjEgLyogSlNNZWRp
YUtleVNlc3Npb24uY3BwICovOyB9OworCQlDREE5OEUwQjE2MDNDRDYwMDBGRUEzQjEgLyogQ0RN
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTk4
RTA5MTYwM0NENTkwMEZFQTNCMSAvKiBDRE0uY3BwICovOyB9OworCQlDREE5OEUwRDE2MDNGRTRB
MDBGRUEzQjEgLyogTWVkaWFLZXlzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEQTk4RENBMTYwMTUwOEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuY3Bw
ICovOyB9OworCQlDREE5OEUwRTE2MDNGRTU4MDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTk4REM3
MTYwMTRGMkMwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uY3BwICovOyB9OwogCQlDREFBOEQw
QTE0RDcxQjJFMDA2MUVBNjAgLyogUGxhdGZvcm1DbG9ja0NNLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQThEMDgxNEQzODU2MDAwNjFFQTYwIC8q
IFBsYXRmb3JtQ2xvY2tDTS5tbSAqLzsgfTsKIAkJQ0RENTI1RDcxNDVCNkREMDAwOEQyMDREIC8q
IEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREY2NUNDQzE0NUI2QUZFMDBDNEM3QUEgLyogSlNIVE1MTWVk
aWFFbGVtZW50Q3VzdG9tLmNwcCAqLzsgfTsKIAkJQ0RFQTc2MzAxNDYwOEE1MzAwOEIzMUYxIC8q
IFBsYXRmb3JtQ2xvY2tDQS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREVBNzYyRTE0NjA4NERFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNw
cCAqLzsgfTsKQEAgLTEzMjEwLDYgKzEzMjIwLDMzIEBACiAJCUNEODIwMzA5MTM5NUFCNkEwMEY5
NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2lu
ZG93Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4MjAzMEUx
Mzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJXaW5kb3dBbmltYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0Q4MjAzMEYxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlv
bi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYldpbmRvd0Fu
aW1hdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEOUIxNjAxMjhB
NTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU01lZGlhS2V5RXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREE5OEQ5QzE2MDEyOEE1MDBGRUEzQjEgLyogSlNNZWRpYUtleUVycm9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFLZXlFcnJvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERDMDE2MDE0RUVFMDBGRUEzQjEgLyogTWVkaWFL
ZXlFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYUtleUVycm9y
Lmg7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5RXJyb3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQzExNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlh
S2V5RXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE1lZGlhS2V5RXJyb3IuaWRsOyBw
YXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleUVycm9yLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQzIxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5
TmVlZGVkRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTWVk
aWFLZXlOZWVkZWRFdmVudC5jcHA7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5TmVlZGVkRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERD
MzE2MDE0RUVFMDBGRUEzQjEgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYUtleU5lZWRlZEV2ZW50Lmg7IHBhdGggPSBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBOThEQzQxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZl
bnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE1lZGlhS2V5TmVlZGVkRXZlbnQuaWRsOyBw
YXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQzcxNjAxNEYyQzAwRkVBM0IxIC8qIE1l
ZGlhS2V5U2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBN
ZWRpYUtleVNlc3Npb24uY3BwOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERDODE2MDE0
RjJDMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IE1lZGlhS2V5U2Vzc2lvbi5oOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThE
QzkxNjAxNEY0MDAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBuYW1lID0gTWVkaWFLZXlTZXNzaW9uLmlkbDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTZXNzaW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
OThEQ0ExNjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBNZWRpYUtleXMuY3BwOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5
OERDQjE2MDE1MDhBMDBGRUEzQjEgLyogTWVkaWFLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IE1lZGlhS2V5cy5oOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQ0MxNjAxNTA4
QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTWVkaWFL
ZXlzLmlkbDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQ0UxNjAxNTk3OTAwRkVBM0IxIC8qIEpT
TWVkaWFLZXlzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVk
aWFLZXlzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQ0YxNjAxNTk3
OTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTTWVkaWFLZXlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REQw
MTYwMTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5U2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5U2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REQxMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5
U2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhS2V5U2Vz
c2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERENTE2MDI1QkVEMDBG
RUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwOyBwYXRoID0gTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEQTk4REQ2MTYwMjVCRUQwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VF
dmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYUtleU1lc3NhZ2VF
dmVudC5oOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERENzE2MDI1QkVFMDBGRUEz
QjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE1l
ZGlhS2V5TWVzc2FnZUV2ZW50LmlkbDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlNZXNzYWdlRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5
OEREQjE2MDI2QTE4MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBOThEREMxNjAyNkExOTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlNZXNz
YWdlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERERDE2MDI2QTE5MDBGRUEzQjEgLyogSlNN
ZWRpYUtleU5lZWRlZEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFLZXlOZWVk
ZWRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RERFMTYwMjZB
MTkwMEZFQTNCMSAvKiBKU01lZGlhS2V5TmVlZGVkRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNN
ZWRpYUtleU5lZWRlZEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4
RTA5MTYwM0NENTkwMEZFQTNCMSAvKiBDRE0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ0RNLmNw
cDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBOThFMEExNjAzQ0Q1OTAwRkVBM0IxIC8qIENETS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBDRE0uaDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RTBDMTYwM0NGM0MwMEZFQTNCMSAvKiBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEQUE4RDA3MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNs
b2NrQ00uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1DbG9ja0NN
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQUE4RDA4MTREMzg1NjAwMDYxRUE2
MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQbGF0Zm9ybUNsb2NrQ00ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEQkQ5M0JBMTMzM0JENEIwMDI1NzBFMyAvKiBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlblF1aWNrVGltZS5jc3M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDM2MCw2ICsxNDM5Nyw3IEBACiAJCTE0REZCMzNGMEE3
REY3NjMwMDE4Rjc2OSAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNEQTk4RENEMTYwMTUxNUMwMEZFQTNCMSAvKiBFbmNy
eXB0ZWRNZWRpYSAqLywKIAkJCQlBODNCNzkxMDBDQ0IwMDFCMDAwQjA4MjUgLyogQ29yZSAqLywK
IAkJCQlBODNCNzkwRTBDQ0FGRjk3MDAwQjA4MjUgLyogQ1NTICovLAogCQkJCTdCN0Y2ODZEMTU3
NkJGQTEwMDNGQUJGMiAvKiBFZGl0aW5nICovLApAQCAtMTc3NDQsNiArMTc3ODIsNyBAQAogCQk5
NzExNDVGRTE0RUYwMDZFMDA2NzRGRDkgLyogTW9kdWxlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0RBOThEQkQxNjAxNEUwODAwRkVBM0IxIC8qIGVu
Y3J5cHRlZG1lZGlhICovLAogCQkJCTk3MTE0NUZGMTRFRjAwNzkwMDY3NEZEOSAvKiBnZW9sb2Nh
dGlvbiAqLywKIAkJCQk5NzEyQTU1MzE1MDA0RTNDMDA0OEFGMTAgLyogaW5kZXhlZGRiICovLAog
CQkJCUIxQTk0MkREMTVCNUNFMjIwMEQ1MjVEMSAvKiBtZWRpYXNvdXJjZSAqLywKQEAgLTIwOTQw
LDYgKzIwOTc5LDQ3IEBACiAJCQluYW1lID0gYXVkaW87CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OworCQlDREE5OERCRDE2MDE0RTA4MDBGRUEzQjEgLyogZW5jcnlwdGVkbWVkaWEg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUNEQTk4REMw
MTYwMTRFRUUwMEZFQTNCMSAvKiBNZWRpYUtleUVycm9yLmggKi8sCisJCQkJQ0RBOThEQzExNjAx
NEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5RXJyb3IuaWRsICovLAorCQkJCUNEQTk4REQ1MTYwMjVC
RUQwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgKi8sCisJCQkJQ0RBOThERDYx
NjAyNUJFRDAwRkVBM0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmggKi8sCisJCQkJQ0RBOThE
RDcxNjAyNUJFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbCAqLywKKwkJCQlD
REE5OERDMjE2MDE0RUVFMDBGRUEzQjEgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgKi8sCisJ
CQkJQ0RBOThEQzMxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuaCAqLywK
KwkJCQlDREE5OERDNDE2MDE0RUVFMDBGRUEzQjEgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwg
Ki8sCisJCQkJQ0RBOThEQ0ExNjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgKi8sCisJ
CQkJQ0RBOThEQ0IxNjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5oICovLAorCQkJCUNEQTk4
RENDMTYwMTUwOEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuaWRsICovLAorCQkJCUNEQTk4REM3MTYw
MTRGMkMwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uY3BwICovLAorCQkJCUNEQTk4REM4MTYw
MTRGMkMwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uaCAqLywKKwkJCQlDREE5OERDOTE2MDE0
RjQwMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmlkbCAqLywKKwkJCQlDREE5OEUwOTE2MDND
RDU5MDBGRUEzQjEgLyogQ0RNLmNwcCAqLywKKwkJCQlDREE5OEUwQTE2MDNDRDU5MDBGRUEzQjEg
LyogQ0RNLmggKi8sCisJCQkJQ0RBOThFMEMxNjAzQ0YzQzAwRkVBM0IxIC8qIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBlbmNyeXB0ZWRt
ZWRpYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUNEQTk4RENEMTYwMTUx
NUMwMEZFQTNCMSAvKiBFbmNyeXB0ZWRNZWRpYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJQ0RBOThEOUIxNjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFL
ZXlFcnJvci5jcHAgKi8sCisJCQkJQ0RBOThEOUMxNjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFL
ZXlFcnJvci5oICovLAorCQkJCUNEQTk4RERCMTYwMjZBMTgwMEZFQTNCMSAvKiBKU01lZGlhS2V5
TWVzc2FnZUV2ZW50LmNwcCAqLywKKwkJCQlDREE5OEREQzE2MDI2QTE5MDBGRUEzQjEgLyogSlNN
ZWRpYUtleU1lc3NhZ2VFdmVudC5oICovLAorCQkJCUNEQTk4REREMTYwMjZBMTkwMEZFQTNCMSAv
KiBKU01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwICovLAorCQkJCUNEQTk4RERFMTYwMjZBMTkwMEZF
QTNCMSAvKiBKU01lZGlhS2V5TmVlZGVkRXZlbnQuaCAqLywKKwkJCQlDREE5OERDRTE2MDE1OTc5
MDBGRUEzQjEgLyogSlNNZWRpYUtleXMuY3BwICovLAorCQkJCUNEQTk4RENGMTYwMTU5NzkwMEZF
QTNCMSAvKiBKU01lZGlhS2V5cy5oICovLAorCQkJCUNEQTk4REQwMTYwMTU5NzkwMEZFQTNCMSAv
KiBKU01lZGlhS2V5U2Vzc2lvbi5jcHAgKi8sCisJCQkJQ0RBOThERDExNjAxNTk3OTAwRkVBM0Ix
IC8qIEpTTWVkaWFLZXlTZXNzaW9uLmggKi8sCisJCQkpOworCQkJbmFtZSA9IEVuY3J5cHRlZE1l
ZGlhOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJREY5QUZENkYxM0ZDMzFC
MDAwMTVGRUI3IC8qIG9iamMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKApAQCAtMjg2NjksNiArMjg3NDksMTYgQEAKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMz
NzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4
MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEYxRDExQkYxNUZG
MzcyMDAwMjZFOTA4IC8qIFBsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUNEQTk4REEzMTYwMTQ2NDEwMEZFQTNCMSAvKiBKU01lZGlhS2V5RXJyb3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThERDgxNjAyNUJFRjAwRkVBM0IxIC8qIE1lZGlh
S2V5TWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4RERGMTYwMjZBMzcw
MEZFQTNCMSAvKiBKU01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUNEQTk4REUwMTYwMjZBMzcwMEZFQTNCMSAvKiBKU01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQ0RBOThFMDQxNjAzOUUxQTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4RTA2MTYwMzlFMUYwMEZFQTNCMSAvKiBKU01l
ZGlhS2V5U2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OEUwQjE2MDNDRDYwMDBG
RUEzQjEgLyogQ0RNLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4RTBEMTYwM0ZFNEEwMEZF
QTNCMSAvKiBNZWRpYUtleXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThFMEUxNjAzRkU1
ODAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDFC
NEE2NTE2MDc4NkFFMDAyODJERjkgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1
bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCmluZGV4IDk4NjE4Yzc3NzQ2OTA4ZGJjMTk0MmI2YmVk
MjcyYzUwZmY0ZWM3YTMuLmM5YmVmOTc4MGZlN2VhMzVhOTRiY2Y1NGYwZTQwYmViNzU1MjlhODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIGJvb2wgUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6aXNNZWRpYVNvdXJjZUVuYWJsZWQgPSBmYWxzZTsKICNlbmRpZgogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiBib29sIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OmlzRW5jcnlwdGVkTWVkaWFFbmFibGVkID0gZmFsc2U7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaAppbmRleCBmOTA2Y2U2MTFiNTg5ZTdhMmIzODFhZDRlMGZkNzkwNjY1MWI4NzYy
Li43ZWQxMzQ2ZjcyMjA3YzRiMTc2MTM4YTI5YmVkYjU5ZjVjYWU1OTlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaApAQCAtMjA0LDcgKzIwNCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRNZWRp
YVNvdXJjZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNNZWRpYVNvdXJjZUVuYWJsZWQgPSBp
c0VuYWJsZWQ7IH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQogICAg
IHN0YXRpYyBib29sIGVuY3J5cHRlZE1lZGlhRW5hYmxlZCgpIHsgcmV0dXJuIGlzRW5jcnlwdGVk
TWVkaWFFbmFibGVkOyB9CiAgICAgc3RhdGljIHZvaWQgc2V0RW5jcnlwdGVkTWVkaWFFbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IGlzRW5jcnlwdGVkTWVkaWFFbmFibGVkID0gaXNFbmFibGVkOyB9
CiAjZW5kaWYKQEAgLTMyMCw3ICszMjAsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGlz
TWVkaWFTb3VyY2VFbmFibGVkOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFf
VjIpCiAgICAgc3RhdGljIGJvb2wgaXNFbmNyeXB0ZWRNZWRpYUVuYWJsZWQ7CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggYjNjZDg0NmVhODAxYmEzY2Q3NjcyMWNiYTUyMWU5
ZmEwMzM4YjJhMy4uNDJhYzI2YzU1NjcxMzdlMmI1MGY1ODJkZWY0MWJmMGJiNTc4ZTU4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0yNDQsNiArMjQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIFwKICAgICBtYWNybyh3ZWJraXRkZXZpY2Vwcm94aW1pdHkpIFwKICAgICBcCisg
ICAgbWFjcm8obWVkaWFrZXkpIFwKIAogLy8gZW5kIG9mIERPTV9FVkVOVF9OQU1FU19GT1JfRUFD
SAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbiBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCmluZGV4IDllOWUwYzg2MzA3YWQwMGVjODY3YThi
YTY3NjQwZTBmYTA1MDBlNWUuLmFmZjU5ZTlhOGU2MzRjNGNhM2RmNWVjZjJlYjVkYjI3NzJkNmZk
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCkBAIC00OCw0ICs0OCw2IEBAIERldmljZU9y
aWVudGF0aW9uRXZlbnQgY29uZGl0aW9uYWw9REVWSUNFX09SSUVOVEFUSU9OCiBEZXZpY2VQcm94
aW1pdHlFdmVudCBjb25kaXRpb25hbD1QUk9YSU1JVFlfRVZFTlRTCiBPcmllbnRhdGlvbkV2ZW50
IGludGVyZmFjZU5hbWU9RXZlbnQsIGNvbmRpdGlvbmFsPU9SSUVOVEFUSU9OX0VWRU5UUwogTWVk
aWFLZXlFdmVudCBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEKK01lZGlhS2V5TWVzc2FnZUV2
ZW50IGNvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMgorTWVkaWFLZXlOZWVkZWRFdmVudCBj
b25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIKIFRyYWNrRXZlbnQgY29uZGl0aW9uYWw9VklE
RU9fVFJBQ0sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IDc5
MWJkNGVkYTVjYTM3YWY0NTc4MzYzNDk3Nzk1MTMwNzRjMmQyZjQuLmZkMmFjN2NlZTQyOGQwYTky
YTFlNzQyOTlkZjRlMTBiOTEyM2NlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
RmFjdG9yeS5pbgpAQCAtMTUsNiArMTUsOCBAQCBJREJUcmFuc2FjdGlvbiBjb25kaXRpb25hbD1J
TkRFWEVEX0RBVEFCQVNFCiBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCBjb25kaXRpb25hbD1JTkRF
WEVEX0RBVEFCQVNFCiBKYXZhU2NyaXB0QXVkaW9Ob2RlIGNvbmRpdGlvbmFsPVdFQl9BVURJTwog
TG9jYWxNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KK01lZGlhS2V5cyBjb25k
aXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIKK01lZGlhS2V5U2Vzc2lvbiBjb25kaXRpb25hbD1F
TkNSWVBURURfTUVESUFfVjIKIE1lZGlhQ29udHJvbGxlciBjb25kaXRpb25hbD1WSURFTwogTWVk
aWFTb3VyY2UgY29uZGl0aW9uYWw9TUVESUFfU09VUkNFCiBNZWRpYVN0cmVhbSBjb25kaXRpb25h
bD1NRURJQV9TVFJFQU0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IDVmNTY3NDUxNzU0MmY2MzhmNTg3MGQzYWE2MzI1Y2IzY2E4MjQyYzQuLjNlYWYyZTg1NGQx
YWU1NmM5NjljOTBmZGU2OTEwMjMxNjQzNGUyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgIk1lZGlhRnJhZ21l
bnRVUklQYXJzZXIuaCIKICNpbmNsdWRlICJNZWRpYUtleUVycm9yLmgiCiAjaW5jbHVkZSAiTWVk
aWFLZXlFdmVudC5oIgorI2luY2x1ZGUgIk1lZGlhS2V5TmVlZGVkRXZlbnQuaCIKICNpbmNsdWRl
ICJNZWRpYUxpc3QuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIk1lZGlh
UXVlcnlFdmFsdWF0b3IuaCIKQEAgLTE4NDcsNiArMTg0OCwxOCBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZQogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CiAgICAgbV9hc3luY0V2ZW50UXVl
dWUtPmVucXVldWVFdmVudChldmVudC5yZWxlYXNlKCkpOwogfQorI2VsaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQV9WMikKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVk
ZWQoTWVkaWFQbGF5ZXIqLCBVaW50OEFycmF5KiBpbml0RGF0YSkKK3sKKyAgICBNZWRpYUtleU5l
ZWRlZEV2ZW50SW5pdCBpbml0aWFsaXplcjsKKyAgICBpbml0aWFsaXplci5pbml0RGF0YSA9IGlu
aXREYXRhOworICAgIGluaXRpYWxpemVyLmJ1YmJsZXMgPSBmYWxzZTsKKyAgICBpbml0aWFsaXpl
ci5jYW5jZWxhYmxlID0gZmFsc2U7CisgICAgCisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IE1l
ZGlhS2V5TmVlZGVkRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50
LCBpbml0aWFsaXplcik7CisgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICBtX2FzeW5j
RXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7Cit9CiAjZW5kaWYKIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpwcm9ncmVzc0V2ZW50VGltZXJGaXJlZChUaW1lcjxIVE1M
TWVkaWFFbGVtZW50PiopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4
IDgyMWUyMjg1YjQxY2RjZWIwNTYzN2NkY2I1MDE4NTg5OGU1YmQ5ZDAuLjJlMGQxOThlMGZmMjFl
ZjAxYTYyOTFhYTVlYzg4NmJkZDg5MDUyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCkBAIC0xODksOCArMTg5LDExIEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklC
VVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGtleWVycm9yKTsKICAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKHdlYmtpdGtleW1lc3NhZ2UpOwogICAgIERFRklORV9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIod2Via2l0bmVlZGtleSk7CisjZWxpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBX1YyKQorICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0bmVlZGtl
eSk7CiAjZW5kaWYKIAorCiAvLyBjb250cm9scwogICAgIGJvb2wgY29udHJvbHMoKSBjb25zdDsK
ICAgICB2b2lkIHNldENvbnRyb2xzKGJvb2wpOwpAQCAtNDE4LDYgKzQyMSwxMCBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChNZWRpYVBsYXllciosIGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5z
aWduZWQgY2hhciogaW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoKSBPVkVSUklERTsK
ICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKyAgICB2aXJ0dWFsIHZv
aWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBVaW50OEFycmF5KiBpbml0RGF0
YSkgT1ZFUlJJREU7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyUmVm
ZXJyZXIoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclVz
ZXJBZ2VudCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgQ09SU01vZGUgbWVkaWFQbGF5
ZXJDT1JTTW9kZSgpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5pZGwKaW5kZXggYjZhMGE2MzZmMTY1MjY1YWMxNTUxOWI0Mzc1YjI2M2NjMjliNjYw
OS4uMjdhOGZiYjliNGY4MDFiNzBhODRkMDc3N2M2OThmNWY5NjRlZmE0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCkBAIC00OCw2ICs0OCw4IEBAIG1vZHVsZSBo
dG1sIHsKICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwogI2lmIGRlZmluZWQoRU5BQkxF
X0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQQogICAgIERPTVN0cmlu
ZyBjYW5QbGF5VHlwZShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcg
dHlwZSwgaW4gW09wdGlvbmFsPURlZmF1bHRJc051bGxTdHJpbmcsIFRyZWF0TnVsbEFzPU51bGxT
dHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIGtleVN5c3RlbSk7
CisjZWxpZiBkZWZpbmVkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICYmIEVOQUJMRV9FTkNS
WVBURURfTUVESUFfVjIKKyAgICBET01TdHJpbmcgY2FuUGxheVR5cGUoaW4gW09wdGlvbmFsPURl
ZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHR5cGUsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNO
dWxsU3RyaW5nLCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxT
dHJpbmddIERPTVN0cmluZyBrZXlTeXN0ZW0pOwogI2Vsc2UKICAgICBET01TdHJpbmcgY2FuUGxh
eVR5cGUoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHR5cGUpOwog
I2VuZGlmCkBAIC0xMDcsNiArMTA5LDggQEAgbW9kdWxlIGh0bWwgewogICAgIGF0dHJpYnV0ZSBb
VjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBFdmVudExpc3RlbmVyIG9ud2Via2l0
a2V5ZXJyb3I7CiAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVk
aWFdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXltZXNzYWdlOwogICAgIGF0dHJpYnV0ZSBbVjhF
bmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBFdmVudExpc3RlbmVyIG9ud2Via2l0bmVl
ZGtleTsKKyNlbGlmIGRlZmluZWQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJiYgRU5BQkxF
X0VOQ1JZUFRFRF9NRURJQV9WMgorICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPWVu
Y3J5cHRlZE1lZGlhXSBFdmVudExpc3RlbmVyIG9ud2Via2l0bmVlZGtleTsKICNlbmRpZgogCiAj
aWYgZGVmaW5lZChFTkFCTEVfVklERU9fVFJBQ0spICYmIEVOQUJMRV9WSURFT19UUkFDSwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRXJyb3IuaAppbmRleCA5MGY0NDdmMDVlNWE0ZjBjYWQxNGI1YzQyOWJmYmZl
OGM4NzBkMzA0Li5iMGJmNWY3NjVkNWEzODY2Njc5OGIwNDkzNTc1YjJhMDY0MDIxOGQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRXJyb3IuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgICAg
IE1FRElBX0VSUl9ORVRXT1JLLAogICAgICAgICBNRURJQV9FUlJfREVDT0RFLAogICAgICAgICBN
RURJQV9FUlJfU1JDX05PVF9TVVBQT1JURUQKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIp
CiAgICAgICAgICwgTUVESUFfRVJSX0VOQ1JZUFRFRAogI2VuZGlmCiAgICAgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRXJyb3IuaWRsCmluZGV4IDhlYjlkNTQwMjk0NjUwMzRkZDQzZGY4MTlmZGRjZDEx
NTE2NzI3NTIuLmUzY2Q4ZDJhNzFkNDg5ODljYTIxOTdhNzNmODQwZjExOTU2M2FhMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUVycm9yLmlkbApAQCAtMzEsNyArMzEsNyBAQCBtb2R1bGUgaHRtbCB7
CiAgICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfRVJSX05FVFdPUksgPSAyOwog
ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0VSUl9ERUNPREUgPSAzOwogICAg
ICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0VSUl9TUkNfTk9UX1NVUFBPUlRFRCA9
IDQ7Ci0jaWYgZGVmaW5lZChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEVfRU5DUllQ
VEVEX01FRElBCisjaWYgKGRlZmluZWQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxF
X0VOQ1JZUFRFRF9NRURJQSkgfHwgKGRlZmluZWQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikg
JiYgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikKICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBz
aG9ydCBNRURJQV9FUlJfRU5DUllQVEVEID0gNTsKICNlbmRpZgogICAgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBjb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUtleUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXJy
b3IuaAppbmRleCAxMmM3MzZkNDg3YTNmNGMwNzE2NWI0YzY1MjhlZmQ5OTljZjc1ZGUyLi40OWUz
ODQzZTMyOGIzOTA4NzhlNjVlMTJjMTFlMDY5NWQ5NzE4ZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhS2V5RXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhS2V5RXJyb3IuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBNZWRpYUtleUVycm9yX2gK
ICNkZWZpbmUgTWVkaWFLZXlFcnJvcl9oCiAKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIp
CiAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFL
ZXlFcnJvciA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5RXJyb3I+IHsKIHB1YmxpYzoKLSAg
ICBlbnVtIENvZGUgeworICAgIGVudW0gewogICAgICAgICBNRURJQV9LRVlFUlJfVU5LTk9XTiA9
IDEsCiAgICAgICAgIE1FRElBX0tFWUVSUl9DTElFTlQsCiAgICAgICAgIE1FRElBX0tFWUVSUl9T
RVJWSUNFLApAQCAtNDMsMTUgKzQzLDE4IEBAIHB1YmxpYzoKICAgICAgICAgTUVESUFfS0VZRVJS
X0hBUkRXQVJFQ0hBTkdFLAogICAgICAgICBNRURJQV9LRVlFUlJfRE9NQUlOCiAgICAgfTsKKyAg
ICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IENvZGU7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYUtleUVycm9yPiBjcmVhdGUoQ29kZSBjb2RlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgTWVk
aWFLZXlFcnJvcihjb2RlKSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleUVycm9y
PiBjcmVhdGUoQ29kZSBjb2RlLCB1bnNpZ25lZCBsb25nIHN5c3RlbUNvZGUgPSAwKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgTWVkaWFLZXlFcnJvcihjb2RlLCBzeXN0ZW1Db2RlKSk7IH0KIAogICAg
IENvZGUgY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQorICAgIHVuc2lnbmVkIGxvbmcg
c3lzdGVtQ29kZSgpIHsgcmV0dXJuIG1fc3lzdGVtQ29kZTsgfQogCiBwcml2YXRlOgotICAgIGV4
cGxpY2l0IE1lZGlhS2V5RXJyb3IoQ29kZSBjb2RlKSA6IG1fY29kZShjb2RlKSB7IH0KKyAgICBl
eHBsaWNpdCBNZWRpYUtleUVycm9yKENvZGUgY29kZSwgdW5zaWduZWQgbG9uZyBzeXN0ZW1Db2Rl
KSA6IG1fY29kZShjb2RlKSwgbV9zeXN0ZW1Db2RlKHN5c3RlbUNvZGUpIHsgfQogCiAgICAgQ29k
ZSBtX2NvZGU7CisgICAgdW5zaWduZWQgbG9uZyBtX3N5c3RlbUNvZGU7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5
RXJyb3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUVycm9yLmlkbAppbmRleCA1
NWI5YjA0ZDBmN2Y1NzNlMzk0MDZlMmExMTFiNDc2YWFkOTJiODkzLi5kZjFjODE3OGE5OWRmMzNm
NTcxYWI0ODdmM2QzNTk2MjQwNzRlMWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhS2V5RXJyb3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFcnJv
ci5pZGwKQEAgLTI0LDggKzI0LDkgQEAKICAqLwogCiBtb2R1bGUgaHRtbCB7CisKICAgICBpbnRl
cmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEsCisgICAgICAgIENv
bmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQXxFTkNSWVBURURfTUVESUFfVjIsCiAgICAgICAgIFY4
RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYSwgCiAgICAgXSBNZWRpYUtleUVycm9yIHsK
ICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfS0VZRVJSX1VOS05PV04gPSAxOwpA
QCAtMzUsNSArMzYsNiBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IE1FRElBX0tFWUVSUl9IQVJEV0FSRUNIQU5HRSA9IDU7CiAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IE1FRElBX0tFWUVSUl9ET01BSU4gPSA2OwogICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgdW5zaWduZWQgc2hvcnQgY29kZTsKKyAgICAgICAgW0NvbmRpdGlvbmFsPUVOQ1JZUFRF
RF9NRURJQV9WMl0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgc3lzdGVtQ29kZTsK
ICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDk2NDlhYTkzMThjMzUw
YmI0MTBiMjllMGNkODUyNDcwZjM0MTM5ZjcuLmI5NTU5ODQ3ODRiMGI2NDM1ZmViNTA4ODg2YjEw
Yzc4YmRlZjU2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTQ3OCw2ICs0Nzgs
OSBAQCBtb2R1bGUgd2luZG93IHsKIAogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUVO
Q1JZUFRFRF9NRURJQSwgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBNZWRpYUtl
eUVycm9yQ29uc3RydWN0b3IgTWVkaWFLZXlFcnJvcjsKICAgICAgICAgYXR0cmlidXRlIFtDb25k
aXRpb25hbD1FTkNSWVBURURfTUVESUEsIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRp
YV0gTWVkaWFLZXlFdmVudENvbnN0cnVjdG9yIE1lZGlhS2V5RXZlbnQ7CisgICAgICAgIGF0dHJp
YnV0ZSBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyLCBWOEVuYWJsZWRBdFJ1bnRpbWU9
ZW5jcnlwdGVkTWVkaWFdIE1lZGlhS2V5RXJyb3JDb25zdHJ1Y3RvciBNZWRpYUtleUVycm9yOwor
ICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMiwgVjhFbmFi
bGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBNZWRpYUtleU1lc3NhZ2VFdmVudENvbnN0cnVj
dG9yIE1lZGlhS2V5TWVzc2FnZUV2ZW50OworICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFs
PUVOQ1JZUFRFRF9NRURJQV9WMiwgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBN
ZWRpYUtleU5lZWRlZEV2ZW50Q29uc3RydWN0b3IgTWVkaWFLZXlOZWVkZWRFdmVudDsKIAogICAg
ICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLLCBWOEVuYWJsZWRBdFJ1bnRp
bWU9d2Via2l0VmlkZW9UcmFja10gSFRNTFRyYWNrRWxlbWVudENvbnN0cnVjdG9yIEhUTUxUcmFj
a0VsZW1lbnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU9fVFJBQ0ssIFY4
RW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrXSBUZXh0VHJhY2tDb25zdHJ1Y3RvciBU
ZXh0VHJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAKaW5kZXggMzBlZTk0ODcyMDBlNDM5ZjQ2NmYwMzIxYjYwOTk1NWFkYjNkNjIwYi4u
M2JmNzQ0MjVkMmIzZmZiODQ2Y2ZiNDlkNzZmNjI1ZmE0NWZlZjYyNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMjgxLDcgKzI4
MSw3IEBAIHN0YXRpYyBNZWRpYVBsYXllckZhY3RvcnkqIGJlc3RNZWRpYUVuZ2luZUZvclR5cGVB
bmRDb2RlY3MoY29uc3QgU3RyaW5nJiB0eXBlLCBjCiAgICAgICAgICAgICAgICAgY3VycmVudCA9
IDA7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQV9WMikKICAgICAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdpbmVTdXBw
b3J0ID0gZW5naW5lc1tuZHhdLT5zdXBwb3J0c1R5cGVBbmRDb2RlY3ModHlwZSwgY29kZWNzLCBr
ZXlTeXN0ZW0sIHVybCk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oa2V5U3lzdGVtKTsK
QEAgLTc4OSw3ICs3ODksNyBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVy
OjpzdXBwb3J0c1R5cGUoY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeQogICAgIFVOVVNFRF9Q
QVJBTShjbGllbnQpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAg
ICAgcmV0dXJuIGVuZ2luZS0+c3VwcG9ydHNUeXBlQW5kQ29kZWNzKHR5cGUsIHR5cGVDb2RlY3Ms
IHN5c3RlbSwgdXJsKTsKICNlbHNlCiAgICAgQVNTRVJUKHN5c3RlbS5pc0VtcHR5KCkpOwpAQCAt
MTA4NSw2ICsxMDg1LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvCiB9CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCit2b2lkIE1lZGlhUGxheWVyOjprZXlOZWVk
ZWQoVWludDhBcnJheSogaW5pdERhdGEpCit7CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQp
CisgICAgICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyS2V5TmVlZGVkKHRoaXMs
IGluaXREYXRhKTsKK30KKyNlbmRpZgorCiBTdHJpbmcgTWVkaWFQbGF5ZXI6OnJlZmVycmVyKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA2MDg3NmU2Mzg1YmI5NTgw
NjY1MDI3MDJmODNmNjI0YjMxOGUxNTljLi40ZGM1MWIyYzU1YzcyZWFlMTU2YjIzYzJjZTMyOWUx
MWY3MzNmODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKQEAgLTE4OSw2ICsxODksMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBt
ZWRpYVBsYXllcktleU1lc3NhZ2UoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1lc3NhZ2Us
IHVuc2lnbmVkIG1lc3NhZ2VMZW5ndGgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXll
cktleU5lZWRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogaW5pdERhdGEsIHVuc2lnbmVk
IGluaXREYXRhTGVuZ3RoKSB7IH0KICNlbmRpZgorICAgIAorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUFfVjIpCisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxh
eWVyKiwgVWludDhBcnJheSopIHsgfQorI2VuZGlmCiAKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRp
YVBsYXllclJlZmVycmVyKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFs
IFN0cmluZyBtZWRpYVBsYXllclVzZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9
CkBAIC00MTUsNiArNDE5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGtleU5lZWRlZChjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IHVuc2lnbmVk
IGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCk7CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisgICAgdm9pZCBrZXlOZWVkZWQoVWludDhBcnJh
eSogaW5pdERhdGEpOworI2VuZGlmCisKICAgICBTdHJpbmcgcmVmZXJyZXIoKSBjb25zdDsKICAg
ICBTdHJpbmcgdXNlckFnZW50KCkgY29uc3Q7CiAKQEAgLTQ1Myw3ICs0NjEsNyBAQCBwcml2YXRl
OgogCiB0eXBlZGVmIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiAoKkNy
ZWF0ZU1lZGlhRW5naW5lUGxheWVyKShNZWRpYVBsYXllciopOwogdHlwZWRlZiB2b2lkICgqTWVk
aWFFbmdpbmVTdXBwb3J0ZWRUeXBlcykoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7Ci0jaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFC
TEUoRU5DUllQVEVEX01FRElBX1YyKQogdHlwZWRlZiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
ICgqTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUpKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJiB1cmwpOwog
I2Vsc2UKIHR5cGVkZWYgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSAoKk1lZGlhRW5naW5lU3Vw
cG9ydHNUeXBlKShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25z
dCBLVVJMJiB1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IGQ0NGEzMGM3MzIwMzcyYTNk
ZDIyNTczNzRhNTNhZTIzYzI4Mzg4NjkuLjExYjYxOTEyNDZmZGZlMzRhOGU2OTFlN2VkNjA5ODgw
NzljODA0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTYzLDYgKzYzLDEwIEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBj
cmVhdGUoTWVkaWFQbGF5ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhI
YXNoU2V0PFN0cmluZz4mIHR5cGVzKTsKICAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVj
cywgY29uc3QgS1VSTCYpOworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisgICAgc3Rh
dGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0sIGNvbnN0IEtVUkwmKTsKKyNlbmRpZgorCiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUo
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxMb2FkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQppbmRleCBjZjc1ZDBjZjZjZmQ3NjA4YWQ3MWQ2NzdmNDZmMWU3Njk4NzhhMzY2Li41Y2QyZmNl
ZDZhNWJkYmJkOGU1ODdlMDNiZTNiMWM1Zjg5N2VlMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KQEAgLTEzMiw3ICsxMzIsMTEgQEAgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2U+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWEKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRp
YUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKyAgICAgICAgcmVnaXN0cmFyKGNyZWF0ZSwg
Z2V0U3VwcG9ydGVkVHlwZXMsIGV4dGVuZGVkU3VwcG9ydHNUeXBlLCAwLCAwLCAwKTsKKyNlbHNl
CiAgICAgICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5
cGUsIDAsIDAsIDApOworI2VuZGlmCiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXIqIHBs
YXllcikKQEAgLTcyNSw2ICs3MjksMzEgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c1R5cGUoY29uc3QKICAgICBy
ZXR1cm4gW0FWVVJMQXNzZXQgaXNQbGF5YWJsZUV4dGVuZGVkTUlNRVR5cGU6dHlwZVN0cmluZ10g
PyBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ7
OwogfQogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKK01lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZXh0ZW5kZWRTdXBw
b3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICAvLyBGcm9tOiA8aHR0
cDovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL2VuY3J5cHRlZC1tZWRp
YS9lbmNyeXB0ZWQtbWVkaWEuaHRtbCNkb20tY2FucGxheXR5cGU+CisgICAgLy8gSW4gYWRkaXRp
b24gdG8gdGhlIHN0ZXBzIGluIHRoZSBjdXJyZW50IHNwZWNpZmljYXRpb24sIHRoaXMgbWV0aG9k
IG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgZG8geworICAgICAgICAvLyAxLiBD
aGVjayB3aGV0aGVyIHRoZSBLZXkgU3lzdGVtIGlzIHN1cHBvcnRlZCB3aXRoIHRoZSBzcGVjaWZp
ZWQgY29udGFpbmVyIGFuZCBjb2RlYyB0eXBlKHMpIGJ5IGZvbGxvd2luZyB0aGUgc3RlcHMgZm9y
IHRoZSBmaXJzdCBtYXRjaGluZyBjb25kaXRpb24gZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6Cisg
ICAgICAgIC8vICAgIElmIGtleVN5c3RlbSBpcyBudWxsLCBjb250aW51ZSB0byB0aGUgbmV4dCBz
dGVwLgorICAgICAgICBpZiAoIWtleVN5c3RlbS5pc051bGwoKSAmJiAha2V5U3lzdGVtLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8vIElmIGtleVN5c3RlbSBjb250
YWlucyBhbiB1bnJlY29nbml6ZWQgb3IgdW5zdXBwb3J0ZWQgS2V5IFN5c3RlbSwgcmV0dXJuIHRo
ZSBlbXB0eSBzdHJpbmcKKyAgICAgICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZShrZXlTeXN0ZW0s
ICJjb20uYXBwbGUuZnBzIikgfHwgIWVxdWFsSWdub3JpbmdDYXNlKGtleVN5c3RlbSwgImNvbS5h
cHBsZS5mcHMuMV8wIikpCisgICAgICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3Vw
cG9ydGVkOworCisgICAgICAgIC8vIElmIHRoZSBLZXkgU3lzdGVtIHNwZWNpZmllZCBieSBrZXlT
eXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBkZWNyeXB0aW5nIHRoZSBjb250YWluZXIgYW5kL29yIGNv
ZGVjIHNwZWNpZmllZCBpbiB0aGUgcmVzdCBvZiB0aGUgdHlwZSBzdHJpbmcuCisgICAgICAgIC8v
IChBVkZvdW5kYXRpb24gZG9lcyBub3QgcHJvdmlkZSBhbiBBUEkgd2hpY2ggd291bGQgYWxsb3cg
dXMgdG8gZGV0ZXJtaW5lIHRoaXMsIHNvIHRoaXMgaXMgYSBuby1vcCkKKworICAgIH0gd2hpbGUo
ZmFsc2UpOworCisgICAgLy8gMi4gUmV0dXJuICJtYXliZSIgb3IgInByb2JhYmx5IiBhcyBhcHBy
b3ByaWF0ZSBwZXIgdGhlIGV4aXN0aW5nIHNwZWNpZmljYXRpb24gb2YgY2FuUGxheVR5cGUoKS4K
KyAgICByZXR1cm4gc3VwcG9ydHNUeXBlKHR5cGUsIGNvZGVjcywgdXJsKTs7Cit9CisjZW5kaWYK
KwogYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjppc0F2YWlsYWJsZSgp
CiB7CiAgICAgcmV0dXJuIEFWRm91bmRhdGlvbkxpYnJhcnkoKSAmJiBDb3JlTWVkaWFMaWJyYXJ5
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCmluZGV4IDQzNjE2MDcxODIxYjlmYjdhODVi
NTYyNzYyYjUxNTNhZTI4ZTI5M2IuLjZlYjFiN2RiOTM4NDJjMTE3MjZiNTU2NzZlOTU1NjliNmFh
NTllMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCkBAIC03Niw2ICs3NiwxMCBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlw
ZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBj
b2RlY3MsIGNvbnN0IEtVUkwmKTsKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorICAg
IHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIGV4dGVuZGVkU3VwcG9ydHNUeXBlKGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBjb25zdCBLVVJMJik7CisjZW5kaWYKKwogICAgIHN0YXRpYyB2b2lkIGdldFNpdGVz
SW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+Jik7CiAgICAgc3RhdGljIHZvaWQgY2xlYXJNZWRp
YUNhY2hlKCk7CiAgICAgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShjb25zdCBT
dHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQppbmRleCAyZTg0OWFmNjFjOGE0
YjM4M2MxNmU3ODc3Y2ZiYTQwYjIzOGI2ZjhkLi4wY2YxZmMzYmMwOWNjNzM2ZDlhOTBlMWFjZTRj
NzE2OGYxY2E3MGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCkBAIC0xOTAsNyAr
MTkwLDExIEBAIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6Y3JlYXRlKE1lZGlhUGxhCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0OjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJh
cikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
X1YyKQorICAgICAgICByZWdpc3RyYXIoY3JlYXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywgZXh0ZW5k
ZWRTdXBwb3J0c1R5cGUsIGdldFNpdGVzSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUsIGNs
ZWFyTWVkaWFDYWNoZUZvclNpdGUpOworI2Vsc2UKICAgICAgICAgcmVnaXN0cmFyKGNyZWF0ZSwg
Z2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUsIGNs
ZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk7CisjZW5kaWYKIH0KIAogTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0KE1lZGlhUGxheWVy
KiBwbGF5ZXIpCkBAIC0xNTE4LDYgKzE1MjIsMTcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHkK
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwogfQogCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQV9WMikKK01lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OmV4dGVuZGVkU3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJM
JiB1cmwpCit7CisgICAgLy8gUVRLaXQgZG9lcyBub3Qgc3VwcG9ydCBhbnkgZW5jcnl0cGVkIG1l
ZGlhLCBzbyByZXR1cm4gSXNOb3RTdXBwb3J0ZWQgaWYgdGhlIGtleVN5c3RlbSBpcyBub24tTlVM
TDoKKyAgICBpZiAoIWtleVN5c3RlbS5pc051bGwoKSB8fCAha2V5U3lzdGVtLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKworICAgIHJldHVy
biBzdXBwb3J0c1R5cGUodHlwZSwgY29kZWNzLCB1cmwpOzsKK30KKyNlbmRpZgorCiBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojppc0F2YWlsYWJsZSgpCiB7CiAgICAgLy8gT24gMTAuNSBh
bmQgaGlnaGVyLCBRdWlja1RpbWUgd2lsbCBhbHdheXMgYmUgbmV3IGVub3VnaCBmb3IgPHZpZGVv
PiBhbmQgPGF1ZGlvPiBzdXBwb3J0LCBzbyB3ZSBqdXN0IGNoZWNrIHRoYXQgdGhlIGZyYW1ld29y
ayBjYW4gYmUgbG9hZGVkLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164768</attachid>
            <date>2012-09-19 13:20:56 -0700</date>
            <delta_ts>2012-09-20 02:51:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97037-20120919132022.patch</filename>
            <type>text/plain</type>
            <size>85682</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM4NGRkZGVkNWIzMDg4
NjgzZjE0MjEwYTcyNzQzNzE5ODU2NTdlZi4uN2FmZTJhZTIyZTNkNmEwMGNkYmZkYjNjNmFlOGU2
MmJkNmZjYjNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNCBAQAorMjAxMi0wOS0xOSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBCcmluZyBXZWJLaXQgdXAg
dG8gc3BlZWQgd2l0aCBsYXRlc3QgRW5jcnlwdGVkIE1lZGlhIHNwZWMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzAzNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBtb3N0IHJlY2VudCB2ZXJzaW9u
IG9mIHRoZSBFbmNyeXB0ZWQgTWVkaWEgRXh0ZW5zaW9ucyBzcGVjIGJyZWFrcyBmdW5jdGlvbmFs
aXR5IG91dCBvZiB0aGUKKyAgICAgICAgSFRNTE1lZGlhRWxlbWVudCBhbmQgaW50byBuZXcgTWVk
aWFLZXlzIGFuZCBNZWRpYUtleVNlc3Npb24gY2xhc3Nlcy4gU2luY2UgdGhlIENETSBmdW5jdGlv
bmFsaXR5CisgICAgICAgIGhhcyBiZWVuIHB1bGxlZCBvdXQgb2YgdGhlIG1lZGlhIGVsZW1lbnQs
IHdlIGNyZWF0ZSBhIHByb3h5IENETSBjbGFzcyBhbmQgZmFjdG9yeSBzeXN0ZW0gZm9yCisgICAg
ICAgIGNyZWF0aW5nIHNwZWNpZmljIENETSBrZXkgc3lzdGVtIGltcGxlbWVudGF0aW9ucy4gVGhl
IHNwZWMgYWxzbyBicmVha3Mgb3V0IE1lZGlhS2V5RXZlbnQKKyAgICAgICAgaW50byBkaXN0aW5j
dCBldmVudCBjbGFzc2VzLCBNZWRpYUtleU5lZWRlZEV2ZW50IGFuZCBNZWRpYUtleU1lc3NhZ2VF
dmVudCwgZm9yIG5lZWRrZXkgYW5kCisgICAgICAgIGtleW1lc3NhZ2UgZXZlbnRzLCByZXNwZWN0
aXZlbHkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgQ0RNIGlz
IGEgcHJveHkgY2xhc3MgKGEgbGEgTWVkaWFQbGF5ZXIpIGZvciBhIHNwZWNpZmljIENETVByaXZh
dGVJbnRlcmZhY2UgaW1wbGVtZW50YXRpb24uIEEgQ0RNCisgICAgICAgIGltcGxlbWVudGF0aW9u
IGlzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgQ0RNRmFjdG9yeSBhbmQgd2lsbCBiZSBjcmVhdGVkIGlm
IHRoYXQgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMKKyAgICAgICAgdGhlIGtleSBzeXN0ZW0gcGFz
c2VkIGludG8gdGhlIE1lZGlhS2V5cyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0RNRmFjdG9y
eTo6Q0RNRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjppbnN0YWxsZWRDRE1zKTogSW5pdGlh
bGl6ZSBhbGwgdGhlIGtub3duIENETSBzdWJ0eXBlcy4gUG9ydHMgd2lsbCBhZGQgQ0RNIGltcGxl
bWVudGF0aW9ucyBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0tleVN5c3Rl
bSk6IFdhbGsgdGhlIGluc3RhbGxlZCBDRE1zIGFuZCBhc2sgaWYgdGhlIGdpdmVuIGtleSBzeXN0
ZW0gaXMgc3VwcG9ydGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0tleVN5c3Rl
bU1JTUVUeXBlQW5kQ29kZWMpOiBEaXR0bywgd2l0aCBhbiBhZGRpdGlvbmFsIE1JTUUgdHlwZSBh
bmQgY29kZWMgc3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6YmVzdENETUZvcktleVN5c3RlbSk6
IFJldHVybiB0aGUgZmlyc3QgQ0RNIGZhY3Rvcnkgd2hpY2ggc3VwcG9ydHMgdGhlIHJlcXVlc3Rl
ZCBrZXkgc3lzdGVtLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpjcmVhdGUpOiBTaW1wbGUgY29u
c3RydWN0b3Igd3JhcHBlci4KKyAgICAgICAgKFdlYkNvcmU6OkNETTo6Q0RNKTogU2ltcGxlIGNv
bnN0cnVjdG9yOyBjYWxscyBiZXN0Q0RNRm9yS2V5U3lzdGVtKCkgdG8gY3JlYXRlIGl0J3MgcHJp
dmF0ZSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNETTo6fkNETSk6IFNpbXBs
ZSBkZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpnZW5lcmF0ZVNlc3Npb25JZCk6
IFBhc3MgdGhyb3VnaCB0byBwcml2YXRlIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNOjpnZW5lcmF0ZUtleVJlcXVlc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNE
TTo6YWRkS2V5Rm9yU2Vzc2lvbklkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDRE06OmNs
ZWFyS2V5c0Zyb21TZXNzaW9uSWQpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNETTo6a2V5U3lzdGVtKTog
U2ltcGxlIGFjY2Vzc29yIGZvciBtX2tleVN5c3RlbS4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETVByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlSW50ZXJmYWNlOjpDRE1Qcml2YXRlSW50ZXJmYWNlKTogU2ltcGxlIGNvbnN0cnVjdG9yLgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUludGVyZmFjZTo6fkNETVByaXZhdGVJbnRlcmZh
Y2UpOiBTaW1wbGUgZGVzdHJ1Y3Rvci4KKworICAgICAgICBUaGUgbmV3IGNsYXNzZXMsIE1lZGlh
S2V5TWVzc2FnZUV2ZW50IGFuZCBNZWRpYUtleU5lZWRlZEV2ZW50LCB0YWtlIGRpc3RpbmN0IHN1
YnNldHMgb2YgdGhlIGluaXRpYWxpemVycyBvZgorICAgICAgICB0aGUgb3JpZ2luYWwgTWVkaWFL
ZXlNZXNzYWdlRXZlbnQuCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eU1lc3NhZ2VFdmVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFL
ZXlFdmVudC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQ6
Ok1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCk6IEluaXRpYWxpemVyIG5vdyBvbmx5IHRha2VzIG1l
c3NhZ2UgYW5kIGRlZmF1bHRVUkwKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVudDo6TWVkaWFLZXlNZXNzYWdlRXZlbnQpOiBTaW1w
bGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVudDo6
fk1lZGlhS2V5TWVzc2FnZUV2ZW50KTogU2ltcGxlIGRlc3RydWN0b3IuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVudDo6aW50ZXJmYWNlTmFtZSk6IFN0YW5kYXJkIGludGVy
ZmFjZU5hbWUuCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3Nh
Z2VFdmVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXZlbnQu
aC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUpOiBTaW1w
bGUgY29uc3RydWN0aW9uIHdyYXBwZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU1lc3Nh
Z2VFdmVudDo6bWVzc2FnZSk6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9tZXNzYWdlLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlRXZlbnQ6OmRlZmF1bHRVUkwpOiBTaW1wbGUgYWNj
ZXNzb3IgZm9yIG1fZGVmYXVsdFVSTC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUtleUV2ZW50LmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5TmVlZGVkRXZlbnQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhS2V5RXZlbnQuaC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5TmVlZGVkRXZlbnRJbml0
OjpNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCk6IEluaXRpYWxpemVyIG5vdyBvbmx5IHRha2VzIGlu
aXREYXRhIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5TmVlZGVkRXZlbnQ6
Ok1lZGlhS2V5TmVlZGVkRXZlbnQpOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUtleU5lZWRlZEV2ZW50Ojp+TWVkaWFLZXlOZWVkZWRFdmVudCk6IFNpbXBsZSBk
ZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlOZWVkZWRFdmVudDo6aW50ZXJm
YWNlTmFtZSk6IFN0YW5kYXJkIGludGVyZmFjZU5hbWUuCisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFLZXlFdmVudC5oLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlOZWVk
ZWRFdmVudDo6Y3JlYXRlKTogU2ltcGxlIGNvbnN0cnVjdGlvbiB3cmFwcGVyLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlOZWVkZWRFdmVudDo6aW5pdERhdGEpOiBTaW1wbGUgYWNjZXNzb3Ig
Zm9yIG1faW5pdERhdGEuCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eU5lZWRlZEV2ZW50LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtl
eUV2ZW50LmlkbC4KKworICAgICAgICBNZWRpYUtleVNlc3Npb24gaXMgYSBuZXcgY2xhc3MgdGhh
dCBtYXBzIGtleXMgYW5kIGtleSByZXF1ZXN0cyB0byBhIGdpdmVuIHNlc3Npb24gSUQ6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKTogU2ltcGxlIGNvbnN0
cnVjdGlvbiB3cmFwcGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpNZWRp
YUtleVNlc3Npb24pOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUtleVNlc3Npb246On5NZWRpYUtleVNlc3Npb24pOiBTaW1wbGUgZGVzdHJ1Y3RvcjsgY2FsbHMg
Y2xvc2UoKS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6c2V0RXJyb3IpOiBT
aW1wbGUgc2V0dGVyIGZvciBtX2Vycm9yOworICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNz
aW9uOjpjbG9zZSk6IFRlbGwgdGhlIENETSB0byBjbGVhciBhbnkgc2F2ZWQgc2Vzc2lvbiBrZXlz
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3Qp
OiBTdGFydCBhIG9uZS1zaG90IHRpbWVyLCBoYW5kbGVkIGluIGtleVJlcXVlc3RUaW1lckZpcmVk
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjprZXlSZXF1ZXN0VGltZXJGaXJl
ZCk6IEZvbGxvdyB0aGUgc3RlcHMgaW4gdGhlIHNwZWM7IGFzayB0aGUgQ0RNIHRvIGdlbmVyYXRl
IGEga2V5IHJlcXVlc3QuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmFkZEtl
eSk6IFN0YXJ0IGEgb25lLXNob3QgdGltZXIsIGhhbmRsZWQgaW4gYWRkS2V5VGltZXJGaXJlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGltZXJGaXJlZCk6IEZv
bGxvdyB0aGUgc3RlcHMgaW4gdGhlIHNwZWM7IHByb3ZpZGUgdGhlIGtleSBkYXRhIHQgb3RoZSBD
RE0uCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmtleVN5c3RlbSk6IFNp
bXBsZSBhY2Nlc3NvciBmb3IgbV9rZXlTeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtl
eVNlc3Npb246OnNlc3Npb25JZCk6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9zZXNzaW9uSWQuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmVycm9yKTogU2ltcGxlIGFjY2Vzc29y
IGZvciBtX2Vycm9yOworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmlkbDoKKworICAgICAgICBNZWRpYUtleVNlc3Npb24gaW5oZXJpdHMgZnJvbSBFdmVu
dFRhcmdldCwgYW5kIG11c3Qgb3ZlcnJpZGUgdGhlIHB1cmUgdmlydHVhbCBmdW5jdGlvbnMgaW4g
dGhhdCBjbGFzczoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjppbnRl
cmZhY2VOYW1lKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6cmVmRXZl
bnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpkZXJlZkV2ZW50
VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6ZXZlbnRUYXJnZXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6ZW5zdXJlRXZlbnRUYXJn
ZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk6CisKKyAgICAgICAgTWVkaWFLZXlzIGlzIGEgbmV3IGNsYXNzIHRoYXQgZW5j
YXBzdWxhdGVzIGEgQ0RNIGFuZCBhIG51bWJlciBvZiBrZXkgc2Vzc2lvbnM6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhS2V5czo6Y3JlYXRlKTogVGhyb3cgYW4gZXhjZXB0aW9uIGlmIHRoZSBrZXkg
c3lzdGVtIHBhcmFtZXRlciBpcyB1bnN1cHBvcnRlZDsgY3JlYXRlIGEgQ0RNIG9iamVjdAorICAg
ICAgICAgICAgYW5kIGEgbmV3IE1lZGlhS2V5cyBzZXNzaW9uLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFLZXlzOjpNZWRpYUtleXMpOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUtleXM6On5NZWRpYUtleXMpOiBTaW1wbGUgZGVzdHJ1Y3Rvci4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbik6IEZvbGxvdyB0aGUgc3BlYyBhbmQg
Y3JlYXRlIGEgbmV3IGtleSBzZXNzaW9uLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlzLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVycm9y
LmlkbC4KKworICAgICAgICBQcm92aWRlIGEgbmV3IGludGVyZmFjZSB0byBIVE1MTWVkaWFFbGVt
ZW50IGZvciBNZWRpYVBsYXllciB3aGljaCBkb2VzIG5vdCByZXF1aXJlIGEgc2Vzc2lvbklkIG9y
IGEga2V5IHN5c3RlbToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjprZXlOZWVkZWQpOgorCisgICAgICAgIE1lZGlhS2V5RXJyb3Ig
bm93IGhhcyBhIHN5c3RlbUNvZGUgcGFyYW1ldGVyIGFuZCBtZW1iZXIgdmFyaWFibGUuCisgICAg
ICAgICogaHRtbC9NZWRpYUtleUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleUVy
cm9yOjpjcmVhdGUpOiBUYWtlIGEgc3lzdGVtQ29kZSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQg
KDApIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlFcnJvcjo6TWVkaWFLZXlFcnJv
cik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlFcnJvcjo6c3lzdGVtQ29kZSk6
IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9zeXN0ZW1Db2RlLgorICAgICAgICAqIGh0bWwvTWVkaWFL
ZXlFcnJvci5pZGw6CisKKyAgICAgICAgQWRkIGFuIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIp
IGNoZWNrIHRvIHRoZSBleGlzdGluZyBFTkFCTEUoRU5DUllQVEVEX01FRElBKSBvbmU6CisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL01lZGlhRXJyb3IuaDoKKyAgICAgICAgKiBodG1s
L01lZGlhRXJyb3IuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RNZWRpYUVuZ2luZUZvclR5cGVBbmRDb2RlY3Mp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKwogMjAxMi0wOS0xOCAgQm8gTGl1
ICA8Ym9saXVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmVydCAxMjg3ODAsIDEyODY3Niwg
MTI4NjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2IxYzdhZjg3MDM1ZTM0YTc2NThiNjhmMzA1OTc3Mzc3MDUyZjZjOQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
LmNwcApAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDRE0uaCIKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNp
bmNsdWRlICJDRE1Qcml2YXRlLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlFcnJvci5oIgorI2luY2x1
ZGUgIk1lZGlhS2V5cy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBDRE1GYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShDRE1GYWN0b3J5KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgQ0RNRmFjdG9yeShDcmVhdGVDRE0gY29uc3RydWN0b3IsIENETVN1cHBvcnRzS2V5U3l0ZW0g
c3VwcG9ydHNLZXlTeXN0ZW0sIENETVN1cHBvcnRzS2V5U3lzdGVtTUlNRVR5cGVBbmRDb2RlYyBz
dXBwb3J0c0tleVN5c3RlbU1JTUVUeXBlQW5kQ29kZWMpCisgICAgICAgIDogY29uc3RydWN0b3Io
Y29uc3RydWN0b3IpCisgICAgICAgICwgc3VwcG9ydHNLZXlTeXN0ZW0oc3VwcG9ydHNLZXlTeXN0
ZW0pCisgICAgICAgICwgc3VwcG9ydHNLZXlTeXN0ZW1NSU1FVHlwZUFuZENvZGVjKHN1cHBvcnRz
S2V5U3lzdGVtTUlNRVR5cGVBbmRDb2RlYykKKyAgICB7CisgICAgfQorCisgICAgQ3JlYXRlQ0RN
IGNvbnN0cnVjdG9yOworICAgIENETVN1cHBvcnRzS2V5U3l0ZW0gc3VwcG9ydHNLZXlTeXN0ZW07
CisgICAgQ0RNU3VwcG9ydHNLZXlTeXN0ZW1NSU1FVHlwZUFuZENvZGVjIHN1cHBvcnRzS2V5U3lz
dGVtTUlNRVR5cGVBbmRDb2RlYzsKK307CisKK3N0YXRpYyBWZWN0b3I8Q0RNRmFjdG9yeSo+JiBp
bnN0YWxsZWRDRE1zKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxDRE1GYWN0
b3J5Kj4sIGNkbXMsICgpKTsKKyAgICBzdGF0aWMgYm9vbCBxdWVyaWVkQ0RNcyA9IGZhbHNlOwor
ICAgIGlmICghcXVlcmllZENETXMpIHsKKyAgICAgICAgcXVlcmllZENETXMgPSB0cnVlOworCisg
ICAgICAgIC8vIFRPRE86IGluaXRpYWxpemUgc3BlY2lmaWMgVUEgQ0RNcy4KKyAgICB9CisKKyAg
ICByZXR1cm4gY2RtczsKK30KKworYm9vbCBDRE06OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKQoreworICAgIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIGNkbXMgPSBpbnN0
YWxsZWRDRE1zKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjZG1zLnNpemUoKTsgKytp
KSB7CisgICAgICAgIGlmIChjZG1zW2ldLT5zdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBDRE06OnN1cHBvcnRzS2V5U3lzdGVtTUlNRVR5cGVBbmRDb2RlYyhjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlYykK
K3sKKyAgICBWZWN0b3I8Q0RNRmFjdG9yeSo+JiBjZG1zID0gaW5zdGFsbGVkQ0RNcygpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2Rtcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAo
Y2Rtc1tpXS0+c3VwcG9ydHNLZXlTeXN0ZW1NSU1FVHlwZUFuZENvZGVjKGtleVN5c3RlbSwgbWlt
ZVR5cGUsIGNvZGVjKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBDRE1GYWN0b3J5KiBiZXN0Q0RNRm9yS2V5U3lzdGVtKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAgIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIGNkbXMg
PSBpbnN0YWxsZWRDRE1zKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjZG1zLnNpemUo
KTsgKytpKSB7CisgICAgICAgIGlmIChjZG1zW2ldLT5zdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0
ZW0pKQorICAgICAgICAgICAgcmV0dXJuIGNkbXNbaV07CisgICAgfQorICAgIHJldHVybiAwOwor
fQorCitQYXNzT3duUHRyPENETT4gQ0RNOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0p
Cit7CisgICAgaWYgKCFzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0RNKGtleVN5c3RlbSkpOwor
fQorCitDRE06OkNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKKyAgICA6IG1fa2V5U3lzdGVt
KGtleVN5c3RlbSkKK3sKKyAgICBtX3ByaXZhdGUgPSBiZXN0Q0RNRm9yS2V5U3lzdGVtKGtleVN5
c3RlbSktPmNvbnN0cnVjdG9yKHRoaXMpOworfQorCitDRE06On5DRE0oKQoreworfQorCitTdHJp
bmcgQ0RNOjpnZW5lcmF0ZVNlc3Npb25JZCgpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2Vu
ZXJhdGVTZXNzaW9uSWQoKTsKK30KKworUGFzc1JlZlB0cjxVaW50OEFycmF5PiBDRE06OmdlbmVy
YXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0
YSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFN0cmluZyYgZGVmYXVsdFVSTCwgdW5zaWduZWQg
c2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkKK3sKKyAgICByZXR1
cm4gbV9wcml2YXRlLT5nZW5lcmF0ZUtleVJlcXVlc3QobWltZVR5cGUsIGluaXREYXRhLCBzZXNz
aW9uSWQsIGRlZmF1bHRVUkwsIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7Cit9CisKK2Jvb2wgQ0RN
OjphZGRLZXlGb3JTZXNzaW9uSWQoVWludDhBcnJheSoga2V5LCBjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVy
cm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkKK3sKKyAgICByZXR1cm4gbV9wcml2
YXRlLT5hZGRLZXlGb3JTZXNzaW9uSWQoa2V5LCBzZXNzaW9uSWQsIG5leHRNZXNzYWdlLCBlcnJv
ckNvZGUsIHN5c3RlbUNvZGUpOworfQorCit2b2lkIENETTo6Y2xlYXJLZXlzRnJvbVNlc3Npb25J
ZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5jbGVh
cktleXNGcm9tU2Vzc2lvbklkKHNlc3Npb25JZCk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJM
RShFTkNSWVBURURfTUVESUFfVjIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGU2MjRiOTdhODJmYTVkNzRhN2Y3NmQ3OGRkYTEzOTY5
MzAwZjc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE0uaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDRE1f
aAorI2RlZmluZSBDRE1faAorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhS2V5RXJyb3I7CitjbGFzcyBNZWRp
YUtleVNlc3Npb247CitjbGFzcyBNZWRpYUtleXM7CisKK2NsYXNzIENETVByaXZhdGVJbnRlcmZh
Y2U7CisKK2NsYXNzIENETSB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNLZXlT
eXN0ZW0oY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW1N
SU1FVHlwZUFuZENvZGVjKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDRE0+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CisgICAgfkNETSgpOworCisgICAgU3Ry
aW5nIGdlbmVyYXRlU2Vzc2lvbklkKCk7CisgICAgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBnZW5l
cmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERh
dGEsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBTdHJpbmcmIGRlZmF1bHRVUkwsIHVuc2lnbmVk
IHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpOworICAgIHZvaWQg
Y2xlYXJLZXlzRnJvbVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CisgICAgYm9v
bCBhZGRLZXlGb3JTZXNzaW9uSWQoVWludDhBcnJheSosIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBSZWZQdHI8VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JD
b2RlLCB1bnNpZ25lZCBsb25nJiBzeXN0ZW1Db2RlKTsKKworICAgIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtKCkgY29uc3QgeyByZXR1cm4gbV9rZXlTeXN0ZW07IH0KKworcHJpdmF0ZToKKyAgICBD
RE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOworCisgICAgU3RyaW5nIG1fa2V5U3lzdGVtOwor
ICAgIE93blB0cjxDRE1Qcml2YXRlSW50ZXJmYWNlPiBtX3ByaXZhdGU7Cit9OworCit0eXBlZGVm
IFBhc3NPd25QdHI8Q0RNUHJpdmF0ZUludGVyZmFjZT4gKCpDcmVhdGVDRE0pKENETSopOwordHlw
ZWRlZiBib29sICgqQ0RNU3VwcG9ydHNLZXlTeXRlbSkoY29uc3QgU3RyaW5nJik7Cit0eXBlZGVm
IGJvb2wgKCpDRE1TdXBwb3J0c0tleVN5c3RlbU1JTUVUeXBlQW5kQ29kZWMpKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwordHlwZWRlZiB2b2lkICgqQ0RNUmVn
aXN0cmFyKShDcmVhdGVDRE0sIENETVN1cHBvcnRzS2V5U3l0ZW0pOworCit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjZW5kaWYgLy8gQ0RNX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMmE0ZjcxMTFmYjlkZDgwMTIxZDNjMzkyZTI0YTM3MjM1ZTc0NWIyMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0
ZS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENETVByaXZhdGVfaAor
I2RlZmluZSBDRE1Qcml2YXRlX2gKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0RNUHJpdmF0ZUludGVyZmFjZSB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ0RNUHJpdmF0ZUludGVyZmFjZSk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIENETVByaXZhdGVJbnRlcmZhY2UoKSB7IH0KKyAgICB2
aXJ0dWFsIH5DRE1Qcml2YXRlSW50ZXJmYWNlKCkgeyB9CisKKyAgICB2aXJ0dWFsIFN0cmluZyBn
ZW5lcmF0ZVNlc3Npb25JZCgpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VWludDhBcnJh
eT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkq
IGluaXREYXRhLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgU3RyaW5nJiBkZWZhdWx0VVJMLCB1
bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNpZ25lZCBsb25nJiBzeXN0ZW1Db2RlKSA9IDA7
CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJLZXlzRnJvbVNlc3Npb25JZChjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhZGRLZXlGb3JTZXNzaW9uSWQoVWlu
dDhBcnJheSosIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBSZWZQdHI8VWludDhBcnJheT4mIG5l
eHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNpZ25lZCBsb25nJiBzeXN0
ZW1Db2RlKSA9IDA7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElB
X1YyKQorCisjZW5kaWYgLy8gQ0RNUHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjU0MGI2ZDQwN2RmYmJkZDRiODljNjVkOGQ5OGMxY2QyN2NiNTRlOTAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5TWVzc2FnZUV2ZW50LmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjaW5j
bHVkZSAiTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCIKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIK
KyNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01l
ZGlhS2V5TWVzc2FnZUV2ZW50SW5pdDo6TWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0KCkKK3sKK30K
KworTWVkaWFLZXlNZXNzYWdlRXZlbnQ6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50KCkKK3sKK30KKwor
TWVkaWFLZXlNZXNzYWdlRXZlbnQ6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0JiBpbml0aWFsaXplcikK
KyAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKQorICAgICwgbV9tZXNzYWdlKGluaXRpYWxp
emVyLm1lc3NhZ2UpCisgICAgLCBtX2RlZmF1bHRVUkwoaW5pdGlhbGl6ZXIuZGVmYXVsdFVSTCkK
K3sKK30KKworTWVkaWFLZXlNZXNzYWdlRXZlbnQ6On5NZWRpYUtleU1lc3NhZ2VFdmVudCgpCit7
Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFLZXlNZXNzYWdlRXZlbnQ6OmludGVyZmFj
ZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yTWVk
aWFLZXlNZXNzYWdlRXZlbnQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5TWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5TWVzc2FnZUV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQxZmMwZDg0ODljY2JkZGVjOGQy
NmVmNWI5NzAwODhkYTM3ZjE3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaApAQCAtMCwwICsxLDcz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhS2V5TWVzc2FnZUV2ZW50X2gKKyNkZWZpbmUg
TWVkaWFLZXlNZXNzYWdlRXZlbnRfaAorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikK
KworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlFcnJvci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQgOiBwdWJs
aWMgRXZlbnRJbml0IHsKKyAgICBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQoKTsKKworICAgIFJl
ZlB0cjxVaW50OEFycmF5PiBtZXNzYWdlOworICAgIFN0cmluZyBkZWZhdWx0VVJMOworfTsKKwor
Y2xhc3MgTWVkaWFLZXlNZXNzYWdlRXZlbnQgOiBwdWJsaWMgRXZlbnQgeworcHVibGljOgorICAg
IHZpcnR1YWwgfk1lZGlhS2V5TWVzc2FnZUV2ZW50KCk7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNZWRpYUtleU1lc3NhZ2VFdmVudD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTWVkaWFLZXlNZXNzYWdlRXZlbnQpOworICAgIH0KKworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE1lZGlhS2V5TWVzc2FnZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBjb25zdCBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQmIGluaXRpYWxpemVyKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUtleU1lc3NhZ2VFdmVudCh0eXBl
LCBpbml0aWFsaXplcikpOworICAgIH0KKworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKKyAgICBVaW50OEFycmF5KiBtZXNzYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9tZXNzYWdlLmdldCgpOyB9CisgICAgU3RyaW5nIGRlZmF1bHRVUkwoKSBj
b25zdCB7IHJldHVybiBtX2RlZmF1bHRVUkw7IH0KKworcHJpdmF0ZToKKyAgICBNZWRpYUtleU1l
c3NhZ2VFdmVudCgpOworICAgIE1lZGlhS2V5TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0JiBpbml0aWFsaXplcik7CisK
KyAgICBSZWZQdHI8VWludDhBcnJheT4gbV9tZXNzYWdlOworICAgIFN0cmluZyBtX2RlZmF1bHRV
Ukw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVz
c2FnZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlNZXNzYWdlRXZlbnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwNDViNmE5NGIxZDM5MGU5MWE0Mjhm
NTFiNGU3OGJjOGFkYTVlZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbApAQCAtMCwwICsxLDM3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCittb2R1bGUgZW5jcnlwdGVkbWVkaWEgeworCisgICAgaW50ZXJmYWNl
IFsKKyAgICAgICAgQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyLAorICAgICAgICBWOEVu
YWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWEsCisgICAgICAgIENvbnN0cnVjdG9yVGVtcGxh
dGU9RXZlbnQgCisgICAgXSBNZWRpYUtleU1lc3NhZ2VFdmVudCA6IEV2ZW50IHsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFVpbnQ4QXJyYXkgbWVzc2FnZTsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFtJbml0aWFsaXplZEJ5RXZlbnRDb25zdHJ1Y3Rvcl0gRE9NU3RyaW5nIGRlZmF1
bHRVUkw7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWUwNmY4ZDUwNjMxN2VhM2ZiOWE4Mzc4NzlmZjgwMWM4Zjk2N2EyNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRF
dmVudC5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIk1lZGlhS2V5
TmVlZGVkRXZlbnQuaCIKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYv
VWludDhBcnJheS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01lZGlhS2V5TmVlZGVkRXZl
bnRJbml0OjpNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCgpCit7Cit9CisKK01lZGlhS2V5TmVlZGVk
RXZlbnQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnQoKQoreworfQorCitNZWRpYUtleU5lZWRlZEV2ZW50
OjpNZWRpYUtleU5lZWRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVk
aWFLZXlOZWVkZWRFdmVudEluaXQmIGluaXRpYWxpemVyKQorICAgIDogRXZlbnQodHlwZSwgaW5p
dGlhbGl6ZXIpCisgICAgLCBtX2luaXREYXRhKGluaXRpYWxpemVyLmluaXREYXRhKQoreworfQor
CitNZWRpYUtleU5lZWRlZEV2ZW50Ojp+TWVkaWFLZXlOZWVkZWRFdmVudCgpCit7Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgTWVkaWFLZXlOZWVkZWRFdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JNZWRpYUtleU5lZWRl
ZEV2ZW50OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVl
ZGVkRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmFjZTMyMzNhM2QxZWY0YmU2YzdkMzI1Y2RkZWJiNWY2
MjAwOTc3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBNZWRpYUtleU5lZWRlZEV2ZW50X2gKKyNkZWZpbmUgTWVkaWFLZXlOZWVkZWRF
dmVudF9oCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjaW5jbHVkZSAiRXZl
bnQuaCIKKyNpbmNsdWRlICJNZWRpYUtleUVycm9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RydWN0IE1lZGlhS2V5TmVlZGVkRXZlbnRJbml0IDogcHVibGljIEV2ZW50SW5pdCB7Cisg
ICAgTWVkaWFLZXlOZWVkZWRFdmVudEluaXQoKTsKKworICAgIFJlZlB0cjxVaW50OEFycmF5PiBp
bml0RGF0YTsKK307CisKK2NsYXNzIE1lZGlhS2V5TmVlZGVkRXZlbnQgOiBwdWJsaWMgRXZlbnQg
eworcHVibGljOgorICAgIHZpcnR1YWwgfk1lZGlhS2V5TmVlZGVkRXZlbnQoKTsKKworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5TmVlZGVkRXZlbnQ+IGNyZWF0ZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhS2V5TmVlZGVkRXZlbnQpOworICAgIH0KKwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5TmVlZGVkRXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IE1lZGlhS2V5TmVlZGVkRXZlbnRJbml0JiBpbml0aWFs
aXplcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFLZXlOZWVkZWRF
dmVudCh0eXBlLCBpbml0aWFsaXplcikpOworICAgIH0KKworICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKKyAgICBVaW50OEFycmF5KiBpbml0
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdERhdGEuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAg
ICBNZWRpYUtleU5lZWRlZEV2ZW50KCk7CisgICAgTWVkaWFLZXlOZWVkZWRFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IE1lZGlhS2V5TmVlZGVkRXZlbnRJbml0JiBpbml0aWFs
aXplcik7CisKKyAgICBSZWZQdHI8VWludDhBcnJheT4gbV9pbml0RGF0YTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQu
aWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg3ZjEwYjg0ZjczYTBlZGFjODRlZjZiZGY1OTQ5ODEyNzg3N2M0MDcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5TmVlZGVkRXZlbnQuaWRsCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21v
ZHVsZSBlbmNyeXB0ZWRtZWRpYSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRp
b25hbD1FTkNSWVBURURfTUVESUFfVjIsCisgICAgICAgIFY4RW5hYmxlZEF0UnVudGltZT1lbmNy
eXB0ZWRNZWRpYSwKKyAgICAgICAgQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudCAKKyAgICBdIE1l
ZGlhS2V5TmVlZGVkRXZlbnQgOiBFdmVudCB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBV
aW50OEFycmF5IGluaXREYXRhOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mMDIxMTE3NDQyOTMzYzI3NzFlODA3ODcxMTZiMWFmM2NjY2E1NmRiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNl
c3Npb24uY3BwCkBAIC0wLDAgKzEsMjEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIk1lZGlhS2V5U2Vzc2lvbi5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQV9WMikKKworI2luY2x1ZGUgIkNETS5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5j
bHVkZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIKKyNpbmNsdWRlICJNZWRpYUtleUVycm9yLmgiCisj
aW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJNZWRpYUtleXMuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlhS2V5U2Vzc2lvbj4gTWVk
aWFLZXlTZXNzaW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWVk
aWFLZXlzKiBrZXlzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUtleVNlc3Npb24oY29udGV4
dCwga2V5cywga2V5U3lzdGVtLCBzZXNzaW9uSWQpKTsKK30KKworTWVkaWFLZXlTZXNzaW9uOjpN
ZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWVkaWFLZXlz
KiBrZXlzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQp
CisgICAgOiBtX2tleXMoa2V5cykKKyAgICAsIG1fa2V5U3lzdGVtKGtleVN5c3RlbSkKKyAgICAs
IG1fc2Vzc2lvbklkKHNlc3Npb25JZCkKKyAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKEdlbmVyaWNF
dmVudFF1ZXVlOjpjcmVhdGUodGhpcykpCisgICAgLCBtX2tleVJlcXVlc3RUaW1lcih0aGlzLCAm
TWVkaWFLZXlTZXNzaW9uOjprZXlSZXF1ZXN0VGltZXJGaXJlZCkKKyAgICAsIG1fYWRkS2V5VGlt
ZXIodGhpcywgJk1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGltZXJGaXJlZCkKKyAgICAsIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQoreworfQorCitNZWRpYUtleVNlc3Npb246On5N
ZWRpYUtleVNlc3Npb24oKQoreworICAgIGNsb3NlKCk7Cit9CisKK3ZvaWQgTWVkaWFLZXlTZXNz
aW9uOjpzZXRFcnJvcihNZWRpYUtleUVycm9yKiBlcnJvcikKK3sKKyAgICBtX2Vycm9yID0gZXJy
b3I7Cit9CisKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjpjbG9zZSgpCit7CisgICAgQVNTRVJUKG1f
a2V5cyk7CisgICAgbV9rZXlzLT5jZG0oKS0+Y2xlYXJLZXlzRnJvbVNlc3Npb25JZChtX3Nlc3Np
b25JZCk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmNhbmNlbEFsbEV2ZW50cygpOworfQorCit2
b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhKQoreworICAgIG1fcGVuZGluZ0tleVJlcXVlc3Rz
LmFwcGVuZChQZW5kaW5nS2V5UmVxdWVzdChtaW1lVHlwZSwgaW5pdERhdGEpKTsKKyAgICBtX2tl
eVJlcXVlc3RUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgTWVkaWFLZXlTZXNzaW9u
OjprZXlSZXF1ZXN0VGltZXJGaXJlZChUaW1lcjxNZWRpYUtleVNlc3Npb24+KikKK3sKKyAgICBB
U1NFUlQobV9wZW5kaW5nS2V5UmVxdWVzdHMuc2l6ZSgpKTsKKyAgICBBU1NFUlQobV9rZXlzKTsK
KworICAgIHdoaWxlICghbV9wZW5kaW5nS2V5UmVxdWVzdHMuaXNFbXB0eSgpKSB7CisgICAgICAg
IFBlbmRpbmdLZXlSZXF1ZXN0IHJlcXVlc3QgPSBtX3BlbmRpbmdLZXlSZXF1ZXN0cy50YWtlRmly
c3QoKTsKKworICAgICAgICAvLyBOT1RFOiBDb250aW51ZWQgZnJvbSBzdGVwIDUgaW4gTWVkaWFL
ZXlzOjpjcmVhdGVTZXNzaW9uKCkuCisgICAgICAgIC8vIFRoZSB1c2VyIGFnZW50IHdpbGwgYXN5
bmNocm9ub3VzbHkgZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHRoZSB0YXNrOgorCisg
ICAgICAgIC8vIDEuIExldCBjZG0gYmUgdGhlIGNkbSBsb2FkZWQgaW4gdGhlIE1lZGlhS2V5cyBj
b25zdHJ1Y3Rvci4KKyAgICAgICAgLy8gMi4gTGV0IGRlZmF1bHRVUkwgYmUgbnVsbC4KKyAgICAg
ICAgU3RyaW5nIGRlZmF1bHRVUkw7CisgICAgICAgIE1lZGlhS2V5RXJyb3I6OkNvZGUgZXJyb3JD
b2RlID0gMDsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBzeXN0ZW1Db2RlID0gMDsKKworICAgICAg
ICAvLyAzLiBVc2UgY2RtIHRvIGdlbmVyYXRlIGEga2V5IHJlcXVlc3QgYW5kIGZvbGxvdyB0aGUg
c3RlcHMgZm9yIHRoZSBmaXJzdCBtYXRjaGluZyBjb25kaXRpb24gZnJvbSB0aGUgZm9sbG93aW5n
IGxpc3Q6CisKKyAgICAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGtleVJlcXVlc3QgPSBtX2tleXMt
PmNkbSgpLT5nZW5lcmF0ZUtleVJlcXVlc3QocmVxdWVzdC5taW1lVHlwZSwgcmVxdWVzdC5pbml0
RGF0YS5nZXQoKSwgbV9zZXNzaW9uSWQsIGRlZmF1bHRVUkwsIGVycm9yQ29kZSwgc3lzdGVtQ29k
ZSk7CisKKyAgICAgICAgLy8gT3RoZXJ3aXNlIFtpZiBhIHJlcXVlc3QgaXMgbm90IHN1Y2Nlc3Nm
dWxseSBnZW5lcmF0ZWRdOgorICAgICAgICBpZiAoIWtleVJlcXVlc3QpIHsKKyAgICAgICAgICAg
IC8vIDMuMS4gQ3JlYXRlIGEgbmV3IE1lZGlhS2V5RXJyb3Igb2JqZWN0IHdpdGggdGhlIGZvbGxv
d2luZyBhdHRyaWJ1dGVzOgorICAgICAgICAgICAgLy8gICAgICBjb2RlID0gdGhlIGFwcHJvcHJp
YXRlIE1lZGlhS2V5RXJyb3IgY29kZQorICAgICAgICAgICAgLy8gICAgICBzeXN0ZW1Db2RlID0g
YSBLZXkgU3lzdGVtLXNwZWNpZmljIHZhbHVlLCBpZiBwcm92aWRlZCwgYW5kIDAgb3RoZXJ3aXNl
CisgICAgICAgICAgICBSZWZQdHI8TWVkaWFLZXlFcnJvcj4gZXJyb3IgPSBNZWRpYUtleUVycm9y
OjpjcmVhdGUoZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKS5nZXQoKTsKKworICAgICAgICAgICAgLy8g
My4yLiBTZXQgdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QncyBlcnJvciBhdHRyaWJ1dGUgdG8g
dGhlIGVycm9yIG9iamVjdCBjcmVhdGVkIGluIHRoZSBwcmV2aW91cyBzdGVwLgorICAgICAgICAg
ICAgc2V0RXJyb3IoZXJyb3IuZ2V0KCkpOworCisgICAgICAgICAgICAvLyAzLjMuIHF1ZXVlIGEg
dGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGtleWVycm9yIGF0IHRoZSBNZWRpYUtl
eVNlc3Npb24gb2JqZWN0LgorICAgICAgICAgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtleWVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSk7
CisgICAgICAgICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICAgICAgbV9hc3lu
Y0V2ZW50UXVldWUtPmVucXVldWVFdmVudChldmVudC5yZWxlYXNlKCkpOworCisgICAgICAgICAg
ICAvLyAzLjQuIEFib3J0IHRoZSB0YXNrLgorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKworICAgICAgICAvLyA0LiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBu
YW1lZCBrZXltZXNzYWdlIGF0IHRoZSBuZXcgb2JqZWN0CisgICAgICAgIC8vICAgIFRoZSBldmVu
dCBpcyBvZiB0eXBlIE1lZGlhS2V5TWVzc2FnZUV2ZW50IGFuZCBoYXM6CisgICAgICAgIC8vICAg
IG1lc3NhZ2UgPSBrZXkgcmVxdWVzdAorICAgICAgICAvLyAgICBkZXN0aW5hdGlvblVSTCA9IGRl
ZmF1bHRVUkwKKyAgICAgICAgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0IGluaXQ7CisgICAgICAg
IGluaXQuYnViYmxlcyA9IGZhbHNlOworICAgICAgICBpbml0LmNhbmNlbGFibGUgPSBmYWxzZTsK
KyAgICAgICAgaW5pdC5tZXNzYWdlID0ga2V5UmVxdWVzdDsKKyAgICAgICAgaW5pdC5kZWZhdWx0
VVJMID0gZGVmYXVsdFVSTDsKKyAgICAgICAgUmVmUHRyPE1lZGlhS2V5TWVzc2FnZUV2ZW50PiBl
dmVudCA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtl
eW1lc3NhZ2VFdmVudCwgaW5pdCk7CisgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7Cisg
ICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQpOworICAgIH0KK30K
Kwordm9pZCBNZWRpYUtleVNlc3Npb246OmFkZEtleShVaW50OEFycmF5KiBrZXksIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIC8vIEZyb20gPGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1l
ZGlhL3Jhdy1maWxlL3RpcC9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLmh0bWwjZG9t
LWFkZGtleT46CisgICAgLy8gVGhlIGFkZEtleShrZXkpIG1ldGhvZCBtdXN0IHJ1biB0aGUgZm9s
bG93aW5nIHN0ZXBzOgorICAgIC8vIDEuIElmIHRoZSBmaXJzdCBvciBzZWNvbmQgYXJndW1lbnQg
W3NpY10gaXMgbnVsbCBvciBhbiBlbXB0eSBhcnJheSwgdGhyb3cgYW4gSU5WQUxJRF9BQ0NFU1Nf
RVJSLgorICAgIC8vIE5PVEU6IHRoZSByZWZlcmVuY2UgdG8gYSAic2Vjb25kIGFyZ3VtZW50IiBp
cyBhIHNwZWMgYnVnLgorICAgIGlmICgha2V5IHx8ICFrZXktPmxlbmd0aCgpKSB7CisgICAgICAg
IGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Ly8gMi4gU2NoZWR1bGUgYSB0YXNrIHRvIGhhbmRsZSB0aGUgY2FsbCwgcHJvdmlkaW5nIGtleS4K
KyAgICBtX3BlbmRpbmdLZXlzLmFwcGVuZChrZXkpOworICAgIG1fYWRkS2V5VGltZXIuc3RhcnRP
bmVTaG90KDApOworfQorCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGltZXJGaXJlZChU
aW1lcjxNZWRpYUtleVNlc3Npb24+KikKK3sKKyAgICBBU1NFUlQobV9wZW5kaW5nS2V5cy5zaXpl
KCkpOworICAgIEFTU0VSVChtX2tleXMpOworCisgICAgd2hpbGUgKCFtX3BlbmRpbmdLZXlzLmlz
RW1wdHkoKSkgeworICAgICAgICBSZWZQdHI8VWludDhBcnJheT4gcGVuZGluZ0tleSA9IG1fcGVu
ZGluZ0tleXMudGFrZUZpcnN0KCk7CisgICAgICAgIHVuc2lnbmVkIHNob3J0IGVycm9yQ29kZSA9
IDA7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgc3lzdGVtQ29kZSA9IDA7CisKKyAgICAgICAgLy8g
Tk9URTogQ29udGludWVkIGZyb20gc3RlcCAyLiBvZiBNZWRpYUtleVNlc3Npb246OmFkZEtleSgp
CisgICAgICAgIC8vIDIuMS4gTGV0IGNkbSBiZSB0aGUgY2RtIGxvYWRlZCBpbiB0aGUgTWVkaWFL
ZXlzIGNvbnN0cnVjdG9yLgorICAgICAgICBDRE0qIGNkbSA9IG1fa2V5cy0+Y2RtKCk7CisgICAg
ICAgIC8vIDIuMi4gTGV0ICdkaWQgc3RvcmUga2V5JyBiZSBmYWxzZS4KKyAgICAgICAgYm9vbCBk
aWRTdG9yZUtleSA9IGZhbHNlOworICAgICAgICAvLyAyLjMuIExldCAnbmV4dCBtZXNzYWdlJyBi
ZSBudWxsLgorICAgICAgICBSZWZQdHI8VWludDhBcnJheT4gbmV4dE1lc3NhZ2U7CisgICAgICAg
IC8vIDIuNC4gVXNlIGNkbSB0byBoYW5kbGUga2V5LgorICAgICAgICBkaWRTdG9yZUtleSA9IGNk
bS0+YWRkS2V5Rm9yU2Vzc2lvbklkKHBlbmRpbmdLZXkuZ2V0KCksIG1fc2Vzc2lvbklkLCBuZXh0
TWVzc2FnZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKKyAgICAgICAgLy8gMi41LiBJZiBkaWQg
c3RvcmUga2V5IGlzIHRydWUgYW5kIHRoZSBtZWRpYSBlbGVtZW50IGlzIHdhaXRpbmcgZm9yIGEg
a2V5LCBxdWV1ZSBhIHRhc2sgdG8gYXR0ZW1wdCB0byByZXN1bWUgcGxheWJhY2suCisgICAgICAg
IC8vIFRPRE86IEZpbmQgYW5kIHJlc3RhcnQgdGhlIG1lZGlhIGVsZW1lbnQKKworICAgICAgICAv
LyAyLjYuIElmIG5leHQgbWVzc2FnZSBpcyBub3QgbnVsbCwgcXVldWUgYSB0YXNrIHRvIGZpcmUg
YSBzaW1wbGUgZXZlbnQgbmFtZWQga2V5bWVzc2FnZSBhdCB0aGUgTWVkaWFLZXlTZXNzaW9uIG9i
amVjdC4KKyAgICAgICAgLy8gICAgICBUaGUgZXZlbnQgaXMgb2YgdHlwZSBNZWRpYUtleU1lc3Nh
Z2VFdmVudCBhbmQgaGFzOgorICAgICAgICAvLyAgICAgIG1lc3NhZ2UgPSBuZXh0IG1lc3NhZ2UK
KyAgICAgICAgLy8gICAgICBkZXN0aW5hdGlvblVSTCA9IG51bGwKKyAgICAgICAgTWVkaWFLZXlN
ZXNzYWdlRXZlbnRJbml0IGluaXQ7CisgICAgICAgIGluaXQuYnViYmxlcyA9IGZhbHNlOworICAg
ICAgICBpbml0LmNhbmNlbGFibGUgPSBmYWxzZTsKKyAgICAgICAgaW5pdC5tZXNzYWdlID0gbmV4
dE1lc3NhZ2U7CisgICAgICAgIFJlZlB0cjxNZWRpYUtleU1lc3NhZ2VFdmVudD4gZXZlbnQgPSBN
ZWRpYUtleU1lc3NhZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXltZXNzYWdl
RXZlbnQsIGluaXQpOworICAgICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICBt
X2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50KTsKKworICAgICAgICAvLyAyLjcu
IElmIGRpZCBzdG9yZSBrZXkgaXMgdHJ1ZSwgcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUg
ZXZlbnQgbmFtZWQga2V5YWRkZWQgYXQgdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuCisgICAg
ICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkud2Via2l0a2V5YWRkZWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisKKyAgICAgICAgLy8g
Mi44LiBJZiBhbnkgb2YgdGhlIHByZWNlZGluZyBzdGVwcyBpbiB0aGUgdGFzayBmYWlsZWQKKyAg
ICAgICAgLy8gMi44LjEuIENyZWF0ZSBhIG5ldyBNZWRpYUtleUVycm9yIG9iamVjdCB3aXRoIHRo
ZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKyAgICAgICAgLy8gICAgICAgIGNvZGUgPSB0aGUgYXBw
cm9wcmlhdGUgTWVkaWFLZXlFcnJvciBjb2RlCisgICAgICAgIC8vICAgICAgICBzeXN0ZW1Db2Rl
ID0gYSBLZXkgU3lzdGVtLXNwZWNpZmljIHZhbHVlLCBpZiBwcm92aWRlZCwgYW5kIDAgb3RoZXJ3
aXNlCisgICAgICAgIFJlZlB0cjxNZWRpYUtleUVycm9yPiBlcnJvciA9IE1lZGlhS2V5RXJyb3I6
OmNyZWF0ZShlcnJvckNvZGUsIHN5c3RlbUNvZGUpLmdldCgpOworCisgICAgICAgIC8vIDIuOC4y
LiBTZXQgdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QncyBlcnJvciBhdHRyaWJ1dGUgdG8gdGhl
IGVycm9yIG9iamVjdCBjcmVhdGVkIGluIHRoZSBwcmV2aW91cyBzdGVwLgorICAgICAgICBzZXRF
cnJvcihlcnJvci5nZXQoKSk7CisKKyAgICAgICAgLy8gMi44LjMuIHF1ZXVlIGEgdGFzayB0byBm
aXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGtleWVycm9yIGF0IHRoZSBNZWRpYUtleVNlc3Npb24g
b2JqZWN0LgorICAgICAgICBSZWZQdHI8RXZlbnQ+IGtleWVycm9yRXZlbnQgPSBFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXllcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAg
ICAgICBrZXllcnJvckV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIG1fYXN5bmNFdmVu
dFF1ZXVlLT5lbnF1ZXVlRXZlbnQoa2V5ZXJyb3JFdmVudC5yZWxlYXNlKCkpOworICAgICAgICAK
KyAgICAgICAgLy8gMi44LjQuIEFib3J0IHRoZSB0YXNrLgorICAgICAgICAvLyBOT1RFOiBuby1v
cAorICAgIH0KK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUtleVNlc3Npb246OmludGVy
ZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9y
TWVkaWFLZXlTZXNzaW9uOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmNmYWEyMjk0ODQ2Y2RhMGQ5MzlkYTI3ZjM1ZGM3MjgxNDAyNjE4NAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNz
aW9uLmgKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhS2V5U2Vz
c2lvbl9oCisjZGVmaW5lIE1lZGlhS2V5U2Vzc2lvbl9oCisKKyNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBX1YyKQorCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgR2VuZXJpY0V2ZW50UXVldWU7CitjbGFzcyBNZWRpYUtleUVycm9yOworY2xhc3MgTWVk
aWFLZXlzOworCitjbGFzcyBNZWRpYUtleVNlc3Npb24gOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRp
YUtleVNlc3Npb24+LCBwdWJsaWMgRXZlbnRUYXJnZXQgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE1lZGlhS2V5U2Vzc2lvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBNZWRpYUtleXMqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQpOworICAgIH5NZWRpYUtleVNlc3Npb24oKTsKKworICAgIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtKCkgY29uc3QgeyByZXR1cm4gbV9rZXlTeXN0ZW07IH0KKyAgICBjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklkOyB9CisKKyAgICB2b2lkIHNl
dEVycm9yKE1lZGlhS2V5RXJyb3IqKTsKKyAgICBNZWRpYUtleUVycm9yKiBlcnJvcigpIHsgcmV0
dXJuIG1fZXJyb3IuZ2V0KCk7IH0KKworICAgIHZvaWQgZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhKTsKKyAgICB2b2lkIGFkZEtl
eShVaW50OEFycmF5KiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGNsb3NlKCk7CisK
KyAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhS2V5U2Vzc2lvbj46OnJlZjsKKyAgICB1c2luZyBS
ZWZDb3VudGVkPE1lZGlhS2V5U2Vzc2lvbj46OmRlcmVmOworCisgICAgdm9pZCBlbnF1ZXVlRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4pOworCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUih3ZWJraXRrZXlhZGRlZCk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
Uih3ZWJraXRrZXllcnJvcik7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3
ZWJraXRrZXltZXNzYWdlKTsKKworcHJvdGVjdGVkOgorICAgIE1lZGlhS2V5U2Vzc2lvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgTWVkaWFLZXlzKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKKyAgICB2b2lkIGtleVJlcXVlc3RUaW1lckZpcmVk
KFRpbWVyPE1lZGlhS2V5U2Vzc2lvbj4qKTsKKyAgICB2b2lkIGFkZEtleVRpbWVyRmlyZWQoVGlt
ZXI8TWVkaWFLZXlTZXNzaW9uPiopOworCisgICAgTWVkaWFLZXlzKiBtX2tleXM7CisgICAgU3Ry
aW5nIG1fa2V5U3lzdGVtOworICAgIFN0cmluZyBtX3Nlc3Npb25JZDsKKyAgICBSZWZQdHI8TWVk
aWFLZXlFcnJvcj4gbV9lcnJvcjsKKyAgICBPd25QdHI8R2VuZXJpY0V2ZW50UXVldWU+IG1fYXN5
bmNFdmVudFF1ZXVlOworCisgICAgc3RydWN0IFBlbmRpbmdLZXlSZXF1ZXN0IHsKKyAgICAgICAg
UGVuZGluZ0tleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5p
dERhdGEpIDogbWltZVR5cGUobWltZVR5cGUpLCBpbml0RGF0YShpbml0RGF0YSkgeyB9CisgICAg
ICAgIFN0cmluZyBtaW1lVHlwZTsKKyAgICAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGluaXREYXRh
OworICAgIH07CisgICAgRGVxdWU8UGVuZGluZ0tleVJlcXVlc3Q+IG1fcGVuZGluZ0tleVJlcXVl
c3RzOworICAgIFRpbWVyPE1lZGlhS2V5U2Vzc2lvbj4gbV9rZXlSZXF1ZXN0VGltZXI7CisKKyAg
ICBEZXF1ZTxSZWZQdHI8VWludDhBcnJheT4gPiBtX3BlbmRpbmdLZXlzOworICAgIFRpbWVyPE1l
ZGlhS2V5U2Vzc2lvbj4gbV9hZGRLZXlUaW1lcjsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZl
bnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisgICAgdmlydHVh
bCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2
ZW50VGFyZ2V0RGF0YTsgfQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZh
Y2VOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0OyB9CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworfTsKKworfQor
CisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2VuZGlmIC8vIE1lZGlh
S2V5U2Vzc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMThhZDZjMGI4ZTcwZjM5
ZDlmNTAyMGNkNWIwMjhmYzVhNjE0NmZjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmlkbApAQCAtMCwwICsx
LDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisgCittb2R1bGUgZW5jcnlwdGVkbWVkaWEgeworCisgICAgaW50ZXJm
YWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyLAorICAgICAgICBW
OEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWEsCisgICAgICAgIEV2ZW50VGFyZ2V0LAor
ICAgIF0gTWVkaWFLZXlTZXNzaW9uIHsKKyAgICAgICAgLy8gZXJyb3Igc3RhdGUKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhS2V5RXJyb3IgZXJyb3I7CisKKyAgICAgICAgLy8gc2Vz
c2lvbiBwcm9wZXJ0aWVzCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2V5
U3lzdGVtOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNlc3Npb25JZDsK
KworICAgICAgICAvLyBzZXNzaW9uIG9wZXJhdGlvbnMKKyAgICAgICAgdm9pZCBhZGRLZXkoaW4g
VWludDhBcnJheSBrZXkpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAg
ICAgdm9pZCBjbG9zZSgpOworICAgIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU4OWU4OTVlZjM3
ZTRlYWRjNWExMmM4NWYxNDdkMDNlZjU1YWJjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAtMCwwICsxLDEx
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYUtl
eXMuaCIKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlICJDRE0u
aCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdlRXZl
bnQuaCIKKyNpbmNsdWRlICJNZWRpYUtleVNlc3Npb24uaCIKKyNpbmNsdWRlICJVVUlELmgiCisj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVm
UHRyPE1lZGlhS2V5cz4gTWVkaWFLZXlzOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIEZyb20gPGh0dHA6Ly9kdmNzLnczLm9yZy9o
Zy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlh
Lmh0bWwjZG9tLW1lZGlhLWtleXMtY29uc3RydWN0b3I+OgorICAgIC8vIFRoZSBNZWRpYUtleXMo
a2V5U3lzdGVtKSBjb25zdHJ1Y3RvciBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorCisg
ICAgLy8gMS4gSWYga2V5U3lzdGVtIGlzIG51bGwgb3IgYW4gZW1wdHkgc3RyaW5nLCB0aHJvdyBh
biBJTlZBTElEX0FDQ0VTU19FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAg
ICBpZiAoa2V5U3lzdGVtLmlzTnVsbCgpIHx8IGtleVN5c3RlbS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwor
ICAgIC8vIDIuIElmIGtleVN5c3RlbSBpcyBub3Qgb25lIG9mIHRoZSB1c2VyIGFnZW50J3Mgc3Vw
cG9ydGVkIEtleSBTeXN0ZW1zLCB0aHJvdyBhIE5PVF9TVVBQT1JURURfRVJSIGFuZCBhYm9ydCB0
aGVzZSBzdGVwcy4KKyAgICBpZiAoIUNETTo6c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkg
eworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKKyAgICAvLyAzLiBMZXQgY2RtIGJlIHRoZSBjb250ZW50IGRlY3J5cHRpb24gbW9kdWxl
IGNvcnJlc3BvbmRpbmcgdG8ga2V5U3lzdGVtLgorICAgIC8vIDQuIExvYWQgY2RtIGlmIG5lY2Vz
c2FyeS4KKyAgICBPd25QdHI8Q0RNPiBjZG0gPSBDRE06OmNyZWF0ZShrZXlTeXN0ZW0pOworCisg
ICAgLy8gNS4gQ3JlYXRlIGEgbmV3IE1lZGlhS2V5cyBvYmplY3QuCisgICAgLy8gNS4xIExldCB0
aGUga2V5U3lzdGVtIGF0dHJpYnV0ZSBiZSBrZXlTeXN0ZW0uCisgICAgLy8gNi4gUmV0dXJuIHRo
ZSBuZXcgb2JqZWN0IHRvIHRoZSBjYWxsZXIuCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRp
YUtleXMoa2V5U3lzdGVtLCBjZG0ucmVsZWFzZSgpKSk7Cit9CisKK01lZGlhS2V5czo6TWVkaWFL
ZXlzKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBQYXNzT3duUHRyPENETT4gY2RtKQorICAgIDog
bV9rZXlTeXN0ZW0oa2V5U3lzdGVtKQorICAgICwgbV9jZG0oY2RtKQoreworfQorCitNZWRpYUtl
eXM6On5NZWRpYUtleXMoKQoreworICAgIC8vIEZyb20gPGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9o
dG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLmh0
bWwjZG9tLW1lZGlhLWtleXMtY29uc3RydWN0b3I+OgorICAgIC8vIFdoZW4gZGVzdHJveWluZyBh
IE1lZGlhS2V5cyBvYmplY3QsIGZvbGxvdyB0aGUgc3RlcHMgaW4gY2xvc2UoKS4KKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fc2Vzc2lvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fc2Vz
c2lvbnNbaV0tPmNsb3NlKCk7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBNZWRp
YUtleXM6OmNyZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiB0eXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgLy8gRnJvbSA8aHR0cDovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZp
bGUvdGlwL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEuaHRtbCNkb20tY3JlYXRlc2Vz
c2lvbj46CisgICAgLy8gVGhlIGNyZWF0ZVNlc3Npb24odHlwZSwgaW5pdERhdGEpIG1ldGhvZCBt
dXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIC8vIE5vdGU6IFRoZSBjb250ZW50cyBv
ZiBpbml0RGF0YSBhcmUgY29udGFpbmVyLXNwZWNpZmljIEluaXRpYWxpemF0aW9uIERhdGEuCisK
KyAgICAvLyAxLiBJZiB0eXBlIGlzIG51bGwgb3IgYW4gZW1wdHkgc3RyaW5nIGFuZCBpbml0RGF0
YSBpcyBub3QgbnVsbCBvciBhbiBlbXB0eSBzdHJpbmcsIHRocm93IGFuCisgICAgLy8gSU5WQUxJ
RF9BQ0NFU1NfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgaWYgKCh0
eXBlLmlzTnVsbCgpIHx8IHR5cGUuaXNFbXB0eSgpKSAmJiAoIWluaXREYXRhIHx8IGluaXREYXRh
LT5sZW5ndGgoKSkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKworICAgIC8vIDIuIElmIHR5cGUgY29udGFpbnMgYSBNSU1FIHR5
cGUgdGhhdCBpcyBub3Qgc3VwcG9ydGVkIG9yIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGtleVN5
c3RlbSwgdGhyb3cKKyAgICAvLyBhIE5PVF9TVVBQT1JURURfRVJSIGV4Y2VwdGlvbiBhbmQgYWJv
cnQgdGhlc2Ugc3RlcHMuCisgICAgLy8gTk9URTogQ3VycmVudGx5LCBubyBDRE1zIHByb3ZpZGUg
dGhlIGFiaWxpdHkgdG8gcXVlcnkgZm9yIE1JTUUgdHlwZSBzdXBwb3J0LgorCisgICAgLy8gMy4g
Q3JlYXRlIGEgbmV3IE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuCisgICAgLy8gMy4xIExldCB0aGUg
a2V5U3lzdGVtIGF0dHJpYnV0ZSBiZSBrZXlTeXN0ZW0uCisgICAgLy8gMy4yIExldCB0aGUgc2Vz
c2lvbklkIGF0dHJpYnV0ZSBiZSBhIHVuaXF1ZSBTZXNzaW9uIElEIHN0cmluZy4gSXQgbWF5IGJl
IGdlbmVyYXRlZCBieSBjZG0uCisgICAgUmVmUHRyPE1lZGlhS2V5U2Vzc2lvbj4gc2Vzc2lvbiA9
IE1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKGNvbnRleHQsIHRoaXMsIGtleVN5c3RlbSgpLCBtX2Nk
bS0+Z2VuZXJhdGVTZXNzaW9uSWQoKSk7CisKKyAgICAvLyA0LiBBZGQgdGhlIG5ldyBvYmplY3Qg
dG8gYW4gaW50ZXJuYWwgbGlzdCBvZiBzZXNzaW9uIG9iamVjdHMuCisgICAgbV9zZXNzaW9ucy5h
cHBlbmQoc2Vzc2lvbik7CisKKyAgICAvLyA1LiBTY2hlZHVsZSBhIHRhc2sgdG8gZ2VuZXJhdGUg
YSBrZXkgcmVxdWVzdCwgcHJvdmlkaW5nIHR5cGUsIGluaXREYXRhLCBhbmQgdGhlIG5ldyBvYmpl
Y3QuCisgICAgc2Vzc2lvbi0+Z2VuZXJhdGVLZXlSZXF1ZXN0KHR5cGUsIGluaXREYXRhKTsKKwor
ICAgIC8vIDYuIFJldHVybiB0aGUgbmV3IG9iamVjdCB0byB0aGUgY2FsbGVyLgorICAgIHJldHVy
biBzZXNzaW9uOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThhZGI3NWY2MWUzYzZi
MmFkYWQ3NTBiYzM0ZDY4MmZjOWVlMDdkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKQEAgLTAsMCArMSw2OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFLZXlzX2gKKyNkZWZpbmUgTWVkaWFLZXlzX2gKKwor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlICJFdmVudFRhcmdldC5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIENETTsKK2NsYXNzIE1lZGlhS2V5U2Vzc2lvbjsKKworY2xhc3MgTWVkaWFLZXlzIDogcHVi
bGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlzPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFLZXlzPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICB+TWVkaWFLZXlzKCk7CisKKyAgICBQYXNzUmVmUHRyPE1lZGlhS2V5U2Vzc2lv
bj4gY3JlYXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgeyByZXR1cm4gbV9rZXlTeXN0ZW07IH0KKyAg
ICBDRE0qIGNkbSgpIHsgcmV0dXJuIG1fY2RtLmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBN
ZWRpYUtleXMoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIFBhc3NPd25QdHI8Q0RNPik7CisKKyAg
ICBWZWN0b3I8UmVmUHRyPE1lZGlhS2V5U2Vzc2lvbj4gPiBtX3Nlc3Npb25zOworCisgICAgU3Ry
aW5nIG1fa2V5U3lzdGVtOworICAgIE93blB0cjxDRE0+IG1fY2RtOworfTsKKworfQorCisjZW5k
aWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2VuZGlmIC8vIE1lZGlhS2V5c19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
cy5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjQzMTcyMjIxODM0YTExZGIxYjQyYjQxMGQ3ODk0ZTg3ZmVhODZi
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmlkbApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisgCittb2R1bGUgZW5j
cnlwdGVkbWVkaWEgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9RU5D
UllQVEVEX01FRElBX1YyLAorICAgICAgICBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVk
aWEsCisgICAgICAgIENvbnN0cnVjdG9yUGFyYW1ldGVycz0xLAorICAgIF0gTWVkaWFLZXlzIHsK
KyAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIE1lZGlhS2V5U2Vzc2lv
biBjcmVhdGVTZXNzaW9uKGluIERPTVN0cmluZyB0eXBlLCBpbiBVaW50OEFycmF5IGluaXREYXRh
KQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBrZXlTeXN0ZW07CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMGRiOGY0NDQx
NGNlYWVhNGNmNThkZTMxMTRjYjdjMWRiNzc4NTJiLi40ODA5ZDdkN2I3OWJmNDc0NjAxOGJlZTI5
ODdlYjZlZWJjZjlhNGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC01ODU4LDYgKzU4NTgsNyBAQAogCQlDQUU5RjkxMDE0NjQ0
MUYwMDBDMjQ1QjEgLyogQ1NTVmFyaWFibGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0FFOUY5MEUxNDY0NDFGMDAwQzI0NUIxIC8qIENTU1Zh
cmlhYmxlVmFsdWUuaCAqLzsgfTsKIAkJQ0QxMjdERUQxNEYzMDk3RDAwRTg0Nzc5IC8qIFdlYkNv
cmVGdWxsU2NyZWVuV2luZG93Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0QxMjdERUIxNEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVu
V2luZG93Lm1tICovOyB9OwogCQlDRDEyN0RFRTE0RjMwOTg0MDBFODQ3NzkgLyogV2ViQ29yZUZ1
bGxTY3JlZW5XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEMTI3REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRv
dy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNE
MUI0QTY1MTYwNzg2QUUwMDI4MkRGOSAvKiBNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTk4REMyMTYwMTRFRUUw
MEZFQTNCMSAvKiBNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCAqLzsgfTsKIAkJQ0QyN0Y2RTUxNDU3
Njg1QTAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkUyMTQ1NzY3NTgwMDc4MjA3RCAvKiBK
U01lZGlhQ29udHJvbGxlci5jcHAgKi87IH07CiAJCUNEMjdGNkU3MTQ1NzcwRDMwMDc4MjA3RCAv
KiBNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0QyN0Y2RTYxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5j
cHAgKi87IH07CiAJCUNEMzdCMzk4MTVDMUI5NzEwMDZEQzg5OCAvKiBEaWFnbm9zdGljTG9nZ2lu
Z0tleXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0QzN0IzNzQxNUMxQTdFMTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAgKi87
IH07CkBAIC01ODY4LDYgKzU4NjksMTUgQEAKIAkJQ0Q4MjAzMEQxMzk1QUI2QTAwRjk1NkM2IC8q
IFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwOTEzOTVBQjZBMDBGOTU2QzYg
LyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSAqLzsgfTsKIAkJQ0Q4
MjAzMTAxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4MjAzMEUxMzk1QUNFNzAwRjk1
NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUNEODIwMzExMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5k
b3dBbmltYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDgyMDMwRjEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLm1tICov
OyB9OworCQlDREE5OERBMzE2MDE0NjQxMDBGRUEzQjEgLyogSlNNZWRpYUtleUVycm9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTk4RDlCMTYw
MTI4QTUwMEZFQTNCMSAvKiBKU01lZGlhS2V5RXJyb3IuY3BwICovOyB9OworCQlDREE5OEREODE2
MDI1QkVGMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThERDUxNjAyNUJFRDAwRkVBM0Ix
IC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCAqLzsgfTsKKwkJQ0RBOThEREYxNjAyNkEzNzAw
RkVBM0IxIC8qIEpTTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEREIxNjAyNkExODAwRkVBM0IxIC8qIEpT
TWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwICovOyB9OworCQlDREE5OERFMDE2MDI2QTM3MDBGRUEz
QjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTk4REREMTYwMjZBMTkwMEZFQTNCMSAvKiBKU01lZGlh
S2V5TmVlZGVkRXZlbnQuY3BwICovOyB9OworCQlDREE5OEUwNDE2MDM5RTFBMDBGRUEzQjEgLyog
SlNNZWRpYUtleXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RBOThEQ0UxNjAxNTk3OTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlzLmNwcCAqLzsgfTsK
KwkJQ0RBOThFMDYxNjAzOUUxRjAwRkVBM0IxIC8qIEpTTWVkaWFLZXlTZXNzaW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTk4REQwMTYwMTU5
NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5U2Vzc2lvbi5jcHAgKi87IH07CisJCUNEQTk4RTBCMTYw
M0NENjAwMEZFQTNCMSAvKiBDRE0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RBOThFMDkxNjAzQ0Q1OTAwRkVBM0IxIC8qIENETS5jcHAgKi87IH07
CisJCUNEQTk4RTBEMTYwM0ZFNEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEQ0ExNjAxNTA4QTAwRkVB
M0IxIC8qIE1lZGlhS2V5cy5jcHAgKi87IH07CisJCUNEQTk4RTBFMTYwM0ZFNTgwMEZFQTNCMSAv
KiBNZWRpYUtleVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RBOThEQzcxNjAxNEYyQzAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5j
cHAgKi87IH07CiAJCUNEQUE4RDBBMTRENzFCMkUwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFBOEQw
ODE0RDM4NTYwMDA2MUVBNjAgLyogUGxhdGZvcm1DbG9ja0NNLm1tICovOyB9OwogCQlDREQ1MjVE
NzE0NUI2REQwMDA4RDIwNEQgLyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjY1Q0NDMTQ1QjZBRkUw
MEM0QzdBQSAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlDREVBNzYz
MDE0NjA4QTUzMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3NjJFMTQ2MDg0REUwMDhCMzFGMSAv
KiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovOyB9OwpAQCAtMTMyMTAsNiArMTMyMjAsMzMgQEAKIAkJ
Q0Q4MjAzMDkxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0Nv
bnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRDgyMDMwRTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYldpbmRvd0FuaW1hdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDgyMDMwRjEzOTVBQ0U3MDBGOTU2QzYg
LyogV2ViV2luZG93QW5pbWF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViV2luZG93QW5pbWF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREE5OEQ5QjE2MDEyOEE1MDBGRUEzQjEgLyogSlNNZWRpYUtleUVycm9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFLZXlFcnJvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RDlDMTYwMTI4QTUwMEZFQTNCMSAvKiBK
U01lZGlhS2V5RXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRp
YUtleUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REMwMTYwMTRF
RUUwMEZFQTNCMSAvKiBNZWRpYUtleUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IE1lZGlhS2V5RXJyb3IuaDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERDMTE2MDE0
RUVFMDBGRUEzQjEgLyogTWVkaWFLZXlFcnJvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0g
TWVkaWFLZXlFcnJvci5pZGw7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
RXJyb3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERDMjE2MDE0RUVF
MDBGRUEzQjEgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBNZWRpYUtleU5lZWRlZEV2ZW50LmNwcDsgcGF0aCA9IE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEQTk4REMzMTYwMTRFRUUwMEZFQTNCMSAvKiBNZWRpYUtleU5lZWRlZEV2
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGlhS2V5TmVlZGVkRXZl
bnQuaDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERDNDE2MDE0RUVFMDBGRUEzQjEg
LyogTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTWVkaWFL
ZXlOZWVkZWRFdmVudC5pZGw7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
TmVlZGVkRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERDNzE2
MDE0RjJDMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IE1lZGlhS2V5U2Vzc2lvbi5jcHA7IHBhdGggPSBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQTk4REM4MTYwMTRGMkMwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFLZXlTZXNzaW9uLmg7IHBhdGggPSBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREE5OERDOTE2MDE0RjQwMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9u
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBNZWRpYUtleVNlc3Npb24uaWRsOyBwYXRoID0g
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREE5OERDQTE2MDE1MDhBMDBGRUEzQjEgLyogTWVkaWFLZXlzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1lZGlhS2V5cy5jcHA7IHBh
dGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQTk4RENCMTYwMTUwOEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFLZXlzLmg7IHBhdGggPSBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREE5OERDQzE2MDE1MDhBMDBGRUEzQjEgLyogTWVkaWFLZXlzLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IG5hbWUgPSBNZWRpYUtleXMuaWRsOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERDRTE2
MDE1OTc5MDBGRUEzQjEgLyogSlNNZWRpYUtleXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNNZWRpYUtleXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREE5OERDRjE2MDE1OTc5MDBGRUEzQjEgLyogSlNNZWRpYUtleXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUtleXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBOThERDAxNjAxNTk3OTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlTZXNzaW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFLZXlTZXNz
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThERDExNjAxNTk3OTAw
RkVBM0IxIC8qIEpTTWVkaWFLZXlTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTTWVkaWFLZXlTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQTk4REQ1MTYwMjVCRUQwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBNZWRpYUtleU1lc3NhZ2VFdmVudC5j
cHA7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThERDYxNjAyNUJFRDAwRkVBM0Ix
IC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50Lmg7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5TWVzc2FnZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QTk4REQ3MTYwMjVCRUUwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBuYW1lID0gTWVkaWFLZXlNZXNzYWdlRXZlbnQuaWRsOyBwYXRoID0gTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQTk4RERCMTYwMjZBMTgwMEZFQTNCMSAvKiBKU01lZGlhS2V5TWVz
c2FnZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFLZXlNZXNzYWdlRXZlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OEREQzE2MDI2QTE5MDBGRUEz
QjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhS2V5
TWVzc2FnZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REREMTYw
MjZBMTkwMEZFQTNCMSAvKiBKU01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNNZWRpYUtleU5lZWRlZEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBOThEREUxNjAyNkExOTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlOZWVkZWRFdmVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU01lZGlhS2V5TmVlZGVkRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBOThFMDkxNjAzQ0Q1OTAwRkVBM0IxIC8qIENETS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBDRE0uY3BwOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OEUwQTE2MDNDRDU5MDBGRUEz
QjEgLyogQ0RNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENETS5oOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThFMEMxNjAz
Q0YzQzAwRkVBM0IxIC8qIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVBy
aXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBQThEMDcxNEQzODU2MDAw
NjFFQTYwIC8qIFBsYXRmb3JtQ2xvY2tDTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQbGF0Zm9ybUNsb2NrQ00uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RB
QThEMDgxNEQzODU2MDAwNjFFQTYwIC8qIFBsYXRmb3JtQ2xvY2tDTS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtQ2xvY2tDTS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCRDkzQkExMzMzQkQ0QjAwMjU3MEUzIC8qIGZ1bGxzY3Jl
ZW5RdWlja1RpbWUuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuUXVp
Y2tUaW1lLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MzYwLDYgKzE0Mzk3
LDcgQEAKIAkJMTRERkIzM0YwQTdERjc2MzAwMThGNzY5IC8qIERlcml2ZWQgU291cmNlcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0RBOThEQ0QxNjAx
NTE1QzAwRkVBM0IxIC8qIEVuY3J5cHRlZE1lZGlhICovLAogCQkJCUE4M0I3OTEwMENDQjAwMUIw
MDBCMDgyNSAvKiBDb3JlICovLAogCQkJCUE4M0I3OTBFMENDQUZGOTcwMDBCMDgyNSAvKiBDU1Mg
Ki8sCiAJCQkJN0I3RjY4NkQxNTc2QkZBMTAwM0ZBQkYyIC8qIEVkaXRpbmcgKi8sCkBAIC0xNzc0
NCw2ICsxNzc4Miw3IEBACiAJCTk3MTE0NUZFMTRFRjAwNkUwMDY3NEZEOSAvKiBNb2R1bGVzICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDREE5OERCRDE2
MDE0RTA4MDBGRUEzQjEgLyogZW5jcnlwdGVkbWVkaWEgKi8sCiAJCQkJOTcxMTQ1RkYxNEVGMDA3
OTAwNjc0RkQ5IC8qIGdlb2xvY2F0aW9uICovLAogCQkJCTk3MTJBNTUzMTUwMDRFM0MwMDQ4QUYx
MCAvKiBpbmRleGVkZGIgKi8sCiAJCQkJQjFBOTQyREQxNUI1Q0UyMjAwRDUyNUQxIC8qIG1lZGlh
c291cmNlICovLApAQCAtMjA5NDAsNiArMjA5NzksNDcgQEAKIAkJCW5hbWUgPSBhdWRpbzsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUNEQTk4REJEMTYwMTRFMDgwMEZFQTNC
MSAvKiBlbmNyeXB0ZWRtZWRpYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJQ0RBOThEQzAxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5RXJyb3IuaCAq
LywKKwkJCQlDREE5OERDMTE2MDE0RUVFMDBGRUEzQjEgLyogTWVkaWFLZXlFcnJvci5pZGwgKi8s
CisJCQkJQ0RBOThERDUxNjAyNUJFRDAwRkVBM0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNw
cCAqLywKKwkJCQlDREE5OERENjE2MDI1QkVEMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZl
bnQuaCAqLywKKwkJCQlDREE5OERENzE2MDI1QkVFMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdl
RXZlbnQuaWRsICovLAorCQkJCUNEQTk4REMyMTYwMTRFRUUwMEZFQTNCMSAvKiBNZWRpYUtleU5l
ZWRlZEV2ZW50LmNwcCAqLywKKwkJCQlDREE5OERDMzE2MDE0RUVFMDBGRUEzQjEgLyogTWVkaWFL
ZXlOZWVkZWRFdmVudC5oICovLAorCQkJCUNEQTk4REM0MTYwMTRFRUUwMEZFQTNCMSAvKiBNZWRp
YUtleU5lZWRlZEV2ZW50LmlkbCAqLywKKwkJCQlDREE5OERDQTE2MDE1MDhBMDBGRUEzQjEgLyog
TWVkaWFLZXlzLmNwcCAqLywKKwkJCQlDREE5OERDQjE2MDE1MDhBMDBGRUEzQjEgLyogTWVkaWFL
ZXlzLmggKi8sCisJCQkJQ0RBOThEQ0MxNjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5pZGwg
Ki8sCisJCQkJQ0RBOThEQzcxNjAxNEYyQzAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5jcHAg
Ki8sCisJCQkJQ0RBOThEQzgxNjAxNEYyQzAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5oICov
LAorCQkJCUNEQTk4REM5MTYwMTRGNDAwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uaWRsICov
LAorCQkJCUNEQTk4RTA5MTYwM0NENTkwMEZFQTNCMSAvKiBDRE0uY3BwICovLAorCQkJCUNEQTk4
RTBBMTYwM0NENTkwMEZFQTNCMSAvKiBDRE0uaCAqLywKKwkJCQlDREE5OEUwQzE2MDNDRjNDMDBG
RUEzQjEgLyogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggKi8sCisJCQkpOwor
CQkJbmFtZSA9IGVuY3J5cHRlZG1lZGlhOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKKwkJQ0RBOThEQ0QxNjAxNTE1QzAwRkVBM0IxIC8qIEVuY3J5cHRlZE1lZGlhICovID0gewor
CQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDREE5OEQ5QjE2MDEyOEE1
MDBGRUEzQjEgLyogSlNNZWRpYUtleUVycm9yLmNwcCAqLywKKwkJCQlDREE5OEQ5QzE2MDEyOEE1
MDBGRUEzQjEgLyogSlNNZWRpYUtleUVycm9yLmggKi8sCisJCQkJQ0RBOThEREIxNjAyNkExODAw
RkVBM0IxIC8qIEpTTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwICovLAorCQkJCUNEQTk4RERDMTYw
MjZBMTkwMEZFQTNCMSAvKiBKU01lZGlhS2V5TWVzc2FnZUV2ZW50LmggKi8sCisJCQkJQ0RBOThE
REQxNjAyNkExOTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgKi8sCisJCQkJ
Q0RBOThEREUxNjAyNkExOTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlOZWVkZWRFdmVudC5oICovLAor
CQkJCUNEQTk4RENFMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5cy5jcHAgKi8sCisJCQkJ
Q0RBOThEQ0YxNjAxNTk3OTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlzLmggKi8sCisJCQkJQ0RBOThE
RDAxNjAxNTk3OTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlTZXNzaW9uLmNwcCAqLywKKwkJCQlDREE5
OEREMTE2MDE1OTc5MDBGRUEzQjEgLyogSlNNZWRpYUtleVNlc3Npb24uaCAqLywKKwkJCSk7CisJ
CQluYW1lID0gRW5jcnlwdGVkTWVkaWE7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OwogCQlERjlBRkQ2RjEzRkMzMUIwMDAxNUZFQjcgLyogb2JqYyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yODY2OSw2ICsyODc0OSwxNiBAQAogCQkJCTk3
N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0RjFEMTFCRjE1RkYzNzIwMDAyNkU5MDggLyogUGxhdGZvcm1NZW1vcnlJbnN0cnVt
ZW50YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThEQTMxNjAxNDY0MTAwRkVBM0Ix
IC8qIEpTTWVkaWFLZXlFcnJvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OEREODE2MDI1
QkVGMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0RBOThEREYxNjAyNkEzNzAwRkVBM0IxIC8qIEpTTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThERTAxNjAyNkEzNzAwRkVBM0IxIC8qIEpTTWVkaWFL
ZXlOZWVkZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OEUwNDE2MDM5RTFBMDBG
RUEzQjEgLyogSlNNZWRpYUtleXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThFMDYxNjAz
OUUxRjAwRkVBM0IxIC8qIEpTTWVkaWFLZXlTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUNEQTk4RTBCMTYwM0NENjAwMEZFQTNCMSAvKiBDRE0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
Q0RBOThFMEQxNjAzRkU0QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDREE5OEUwRTE2MDNGRTU4MDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUNEMUI0QTY1MTYwNzg2QUUwMDI4MkRGOSAvKiBNZWRpYUtleU5lZWRl
ZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKaW5kZXggNWY1Njc0NTE3NTQyZjYzOGY1ODcwZDNhYTYzMjVjYjNjYTgyNDJjNC4u
NjYzNThkNjQyZTY1MjI1YWZhOTA1ZTExZDZjNGIzN2MyMDBkYmQ3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAi
TWVkaWFGcmFnbWVudFVSSVBhcnNlci5oIgogI2luY2x1ZGUgIk1lZGlhS2V5RXJyb3IuaCIKICNp
bmNsdWRlICJNZWRpYUtleUV2ZW50LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlOZWVkZWRFdmVudC5o
IgogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5j
bHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgpAQCAtMTg0OSw2ICsxODUwLDIwIEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBjb25z
dCBTdHJpbmcmIGtleVN5c3RlCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUFfVjIpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlh
UGxheWVyKiwgVWludDhBcnJheSogaW5pdERhdGEpCit7CisgICAgTWVkaWFLZXlOZWVkZWRFdmVu
dEluaXQgaW5pdGlhbGl6ZXI7CisgICAgaW5pdGlhbGl6ZXIuaW5pdERhdGEgPSBpbml0RGF0YTsK
KyAgICBpbml0aWFsaXplci5idWJibGVzID0gZmFsc2U7CisgICAgaW5pdGlhbGl6ZXIuY2FuY2Vs
YWJsZSA9IGZhbHNlOworCisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IE1lZGlhS2V5TmVlZGVk
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50LCBpbml0aWFsaXpl
cik7CisgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+
ZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7Cit9CisjZW5kaWYKKwogdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojpwcm9ncmVzc0V2ZW50VGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50
PiopCiB7CiAgICAgQVNTRVJUKG1fcGxheWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKaW5kZXggODIxZTIyODViNDFjZGNlYjA1NjM3Y2RjYjUwMTg1ODk4ZTViZDlkMC4u
ZGEyYTI4OGZiZWQwMDE0ZjE3ZmVmODJlOTQ4OThmMWQzYTcyY2Y5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTE4OCw2ICsxODgsOCBAQCBwdWJsaWM6CiAgICAg
REVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRrZXlhZGRlZCk7CiAgICAgREVG
SU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRrZXllcnJvcik7CiAgICAgREVGSU5F
X0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRrZXltZXNzYWdlKTsKKyNlbmRpZgorI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAg
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRuZWVka2V5KTsKICNlbmRp
ZgogCkBAIC00MTgsNiArNDIwLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbml0RGF0YSwgdW5z
aWduZWQgaW5pdERhdGFMZW5ndGgpIE9WRVJSSURFOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBX1YyKQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChN
ZWRpYVBsYXllciosIFVpbnQ4QXJyYXkqKTsKKyNlbmRpZgorCiAgICAgdmlydHVhbCBTdHJpbmcg
bWVkaWFQbGF5ZXJSZWZlcnJlcigpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5n
IG1lZGlhUGxheWVyVXNlckFnZW50KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBDT1JT
TW9kZSBtZWRpYVBsYXllckNPUlNNb2RlKCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAppbmRleCBiNmEwYTYzNmYxNjUyNjVhYzE1NTE5YjQz
NzViMjYzY2MyOWI2NjA5Li5jY2NjNTJhYmIxOGIxMjA1MmNlZTlmOTBmMGZkYTNkNTQxNTRmNmM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKQEAgLTQ2LDcgKzQ2
LDcgQEAgbW9kdWxlIGh0bWwgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUaW1lUmFuZ2VzIGJ1
ZmZlcmVkOwogICAgIHZvaWQgbG9hZCgpIAogICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7
Ci0jaWYgZGVmaW5lZChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEVfRU5DUllQVEVE
X01FRElBCisjaWYgKGRlZmluZWQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFX0VO
Q1JZUFRFRF9NRURJQSkgfHwgKGRlZmluZWQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJiYg
RU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikKICAgICBET01TdHJpbmcgY2FuUGxheVR5cGUoaW4g
W09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHR5cGUsIGluIFtPcHRpb25h
bD1EZWZhdWx0SXNOdWxsU3RyaW5nLCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVm
aW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBrZXlTeXN0ZW0pOwogI2Vsc2UKICAgICBET01T
dHJpbmcgY2FuUGxheVR5cGUoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3Ry
aW5nIHR5cGUpOwpAQCAtMTA2LDYgKzEwNiw4IEBAIG1vZHVsZSBodG1sIHsKICAgICBhdHRyaWJ1
dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gRXZlbnRMaXN0ZW5lciBvbndl
YmtpdGtleWFkZGVkOwogICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRl
ZE1lZGlhXSBFdmVudExpc3RlbmVyIG9ud2Via2l0a2V5ZXJyb3I7CiAgICAgYXR0cmlidXRlIFtW
OEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRr
ZXltZXNzYWdlOworI2VuZGlmCisjaWYgKGRlZmluZWQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkg
JiYgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgfHwgKGRlZmluZWQoRU5BQkxFX0VOQ1JZUFRFRF9N
RURJQV9WMikgJiYgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikKICAgICBhdHRyaWJ1dGUgW1Y4
RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gRXZlbnRMaXN0ZW5lciBvbndlYmtpdG5l
ZWRrZXk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVy
cm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaAppbmRleCA5MGY0NDdmMDVl
NWE0ZjBjYWQxNGI1YzQyOWJmYmZlOGM4NzBkMzA0Li5iMGJmNWY3NjVkNWEzODY2Njc5OGIwNDkz
NTc1YjJhMDY0MDIxOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRXJy
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaApAQCAtNDAsNyArNDAs
NyBAQCBwdWJsaWM6CiAgICAgICAgIE1FRElBX0VSUl9ORVRXT1JLLAogICAgICAgICBNRURJQV9F
UlJfREVDT0RFLAogICAgICAgICBNRURJQV9FUlJfU1JDX05PVF9TVVBQT1JURUQKLSNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJM
RShFTkNSWVBURURfTUVESUFfVjIpCiAgICAgICAgICwgTUVESUFfRVJSX0VOQ1JZUFRFRAogI2Vu
ZGlmCiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaWRsCmluZGV4IDhlYjlkNTQwMjk0
NjUwMzRkZDQzZGY4MTlmZGRjZDExNTE2NzI3NTIuLmUzY2Q4ZDJhNzFkNDg5ODljYTIxOTdhNzNm
ODQwZjExOTU2M2FhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFcnJv
ci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmlkbApAQCAtMzEsNyAr
MzEsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVE
SUFfRVJSX05FVFdPUksgPSAyOwogICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElB
X0VSUl9ERUNPREUgPSAzOwogICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0VS
Ul9TUkNfTk9UX1NVUFBPUlRFRCA9IDQ7Ci0jaWYgZGVmaW5lZChFTkFCTEVfRU5DUllQVEVEX01F
RElBKSAmJiBFTkFCTEVfRU5DUllQVEVEX01FRElBCisjaWYgKGRlZmluZWQoRU5BQkxFX0VOQ1JZ
UFRFRF9NRURJQSkgJiYgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgfHwgKGRlZmluZWQoRU5BQkxF
X0VOQ1JZUFRFRF9NRURJQV9WMikgJiYgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikKICAgICAg
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfRU5DUllQVEVEID0gNTsKICNlbmRp
ZgogICAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBjb2RlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUVycm9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhS2V5RXJyb3IuaAppbmRleCAxMmM3MzZkNDg3YTNmNGMwNzE2NWI0YzY1
MjhlZmQ5OTljZjc1ZGUyLi40OWUzODQzZTMyOGIzOTA4NzhlNjVlMTJjMTFlMDY5NWQ5NzE4ZDgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXJyb3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXJyb3IuaApAQCAtMjYsNyArMjYsNyBAQAogI2lm
bmRlZiBNZWRpYUtleUVycm9yX2gKICNkZWZpbmUgTWVkaWFLZXlFcnJvcl9oCiAKLSNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJM
RShFTkNSWVBURURfTUVESUFfVjIpCiAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgTWVkaWFLZXlFcnJvciA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5
RXJyb3I+IHsKIHB1YmxpYzoKLSAgICBlbnVtIENvZGUgeworICAgIGVudW0gewogICAgICAgICBN
RURJQV9LRVlFUlJfVU5LTk9XTiA9IDEsCiAgICAgICAgIE1FRElBX0tFWUVSUl9DTElFTlQsCiAg
ICAgICAgIE1FRElBX0tFWUVSUl9TRVJWSUNFLApAQCAtNDMsMTUgKzQzLDE4IEBAIHB1YmxpYzoK
ICAgICAgICAgTUVESUFfS0VZRVJSX0hBUkRXQVJFQ0hBTkdFLAogICAgICAgICBNRURJQV9LRVlF
UlJfRE9NQUlOCiAgICAgfTsKKyAgICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IENvZGU7CiAKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleUVycm9yPiBjcmVhdGUoQ29kZSBjb2RlKSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgTWVkaWFLZXlFcnJvcihjb2RlKSk7IH0KKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNZWRpYUtleUVycm9yPiBjcmVhdGUoQ29kZSBjb2RlLCB1bnNpZ25lZCBsb25nIHN5
c3RlbUNvZGUgPSAwKSB7IHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFLZXlFcnJvcihjb2RlLCBz
eXN0ZW1Db2RlKSk7IH0KIAogICAgIENvZGUgY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsg
fQorICAgIHVuc2lnbmVkIGxvbmcgc3lzdGVtQ29kZSgpIHsgcmV0dXJuIG1fc3lzdGVtQ29kZTsg
fQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1lZGlhS2V5RXJyb3IoQ29kZSBjb2RlKSA6IG1f
Y29kZShjb2RlKSB7IH0KKyAgICBleHBsaWNpdCBNZWRpYUtleUVycm9yKENvZGUgY29kZSwgdW5z
aWduZWQgbG9uZyBzeXN0ZW1Db2RlKSA6IG1fY29kZShjb2RlKSwgbV9zeXN0ZW1Db2RlKHN5c3Rl
bUNvZGUpIHsgfQogCiAgICAgQ29kZSBtX2NvZGU7CisgICAgdW5zaWduZWQgbG9uZyBtX3N5c3Rl
bUNvZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhS2V5RXJyb3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUtleUVycm9yLmlkbAppbmRleCA1NWI5YjA0ZDBmN2Y1NzNlMzk0MDZlMmExMTFiNDc2YWFkOTJi
ODkzLi5kZjFjODE3OGE5OWRmMzNmNTcxYWI0ODdmM2QzNTk2MjQwNzRlMWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXJyb3IuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFLZXlFcnJvci5pZGwKQEAgLTI0LDggKzI0LDkgQEAKICAqLwogCiBtb2R1
bGUgaHRtbCB7CisKICAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1FTkNSWVBU
RURfTUVESUEsCisgICAgICAgIENvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQXxFTkNSWVBURURf
TUVESUFfVjIsCiAgICAgICAgIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYSwgCiAg
ICAgXSBNZWRpYUtleUVycm9yIHsKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFf
S0VZRVJSX1VOS05PV04gPSAxOwpAQCAtMzUsNSArMzYsNiBAQCBtb2R1bGUgaHRtbCB7CiAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0tFWUVSUl9IQVJEV0FSRUNIQU5HRSA9IDU7
CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0tFWUVSUl9ET01BSU4gPSA2Owog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgY29kZTsKKyAgICAgICAg
W0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMl0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgc3lzdGVtQ29kZTsKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDMwZWU5NDg3MjAwZTQzOWY0NjZm
MDMyMWI2MDk5NTVhZGIzZDYyMGIuLjNiZjc0NDI1ZDJiM2ZmYjg0NmNmYjQ5ZDc2ZjYyNWZhNDVm
ZWY2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCBzdGF0aWMgTWVkaWFQbGF5ZXJGYWN0b3J5KiBi
ZXN0TWVkaWFFbmdpbmVGb3JUeXBlQW5kQ29kZWNzKGNvbnN0IFN0cmluZyYgdHlwZSwgYwogICAg
ICAgICAgICAgICAgIGN1cnJlbnQgPSAwOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAgICAgICAgIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgZW5naW5lU3VwcG9ydCA9IGVuZ2luZXNbbmR4XS0+c3VwcG9ydHNUeXBlQW5k
Q29kZWNzKHR5cGUsIGNvZGVjcywga2V5U3lzdGVtLCB1cmwpOwogI2Vsc2UKICAgICAgICAgVU5V
U0VEX1BBUkFNKGtleVN5c3RlbSk7CkBAIC03ODksNyArNzg5LDcgQEAgTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSBNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKGNvbnN0IENvbnRlbnRUeXBlJiBj
b250ZW50VHkKICAgICBVTlVTRURfUEFSQU0oY2xpZW50KTsKICNlbmRpZgogCi0jaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUo
RU5DUllQVEVEX01FRElBX1YyKQogICAgIHJldHVybiBlbmdpbmUtPnN1cHBvcnRzVHlwZUFuZENv
ZGVjcyh0eXBlLCB0eXBlQ29kZWNzLCBzeXN0ZW0sIHVybCk7CiAjZWxzZQogICAgIEFTU0VSVChz
eXN0ZW0uaXNFbXB0eSgpKTsKQEAgLTEwODUsNiArMTA4NSwxNCBAQCB2b2lkIE1lZGlhUGxheWVy
OjprZXlOZWVkZWQoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBjbwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQordm9p
ZCBNZWRpYVBsYXllcjo6a2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQoreworICAgIGlm
IChtX21lZGlhUGxheWVyQ2xpZW50KQorICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRp
YVBsYXllcktleU5lZWRlZCh0aGlzLCBpbml0RGF0YSk7Cit9CisjZW5kaWYKKwogU3RyaW5nIE1l
ZGlhUGxheWVyOjpyZWZlcnJlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX21lZGlhUGxheWVyQ2xp
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
aW5kZXggNjA4NzZlNjM4NWJiOTU4MDY2NTAyNzAyZjgzZjYyNGIzMThlMTU5Yy4uNmIzYjY3YmUw
YzhlNjNlYjgzMzRiNmMwYzhiNGE0ZWIwM2Y1YTlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0xODQsMTIgKzE4NCwxNiBAQCBwdWJs
aWM6CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIGVudW0gTWVkaWFLZXlFcnJv
ckNvZGUgeyBVbmtub3duRXJyb3IgPSAxLCBDbGllbnRFcnJvciwgU2VydmljZUVycm9yLCBPdXRw
dXRFcnJvciwgSGFyZHdhcmVDaGFuZ2VFcnJvciwgRG9tYWluRXJyb3IgfTsKLSAgICB2aXJ0dWFs
IHZvaWQgbWVkaWFQbGF5ZXJLZXlBZGRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG1l
ZGlhUGxheWVyS2V5RXJyb3IoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwg
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIE1lZGlhS2V5RXJyb3JDb2RlIGVycm9yQ29kZSwgdW5z
aWduZWQgc2hvcnQgc3lzdGVtQ29kZSkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
S2V5TWVzc2FnZShNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogbWVzc2FnZSwgdW5zaWduZWQg
bWVzc2FnZUxlbmd0aCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVk
KE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbml0RGF0YSwgdW5zaWduZWQgaW5pdERhdGFM
ZW5ndGgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleUFkZGVkKE1lZGlhUGxh
eWVyKiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lk
IG1lZGlhUGxheWVyS2V5RXJyb3IoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBNZWRpYUtleUVycm9yQ29kZSwgdW5zaWduZWQgc2hvcnQpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllcktleU1lc3NhZ2UoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCkgeyB9
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisgICAgdmlydHVhbCB2
b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwgVWludDhBcnJheSopIHsgfQor
I2VuZGlmCisgICAgCiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJSZWZlcnJlcigpIGNv
bnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJV
c2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgQ09SU01v
ZGUgbWVkaWFQbGF5ZXJDT1JTTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFVuc3BlY2lmaWVkOyB9CkBA
IC00MTUsNiArNDE5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGtleU5lZWRlZChjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCk7CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUFfVjIpCisgICAgdm9pZCBrZXlOZWVkZWQoVWludDhBcnJheSog
aW5pdERhdGEpOworI2VuZGlmCisKICAgICBTdHJpbmcgcmVmZXJyZXIoKSBjb25zdDsKICAgICBT
dHJpbmcgdXNlckFnZW50KCkgY29uc3Q7CiAKQEAgLTQ1Myw3ICs0NjEsNyBAQCBwcml2YXRlOgog
CiB0eXBlZGVmIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiAoKkNyZWF0
ZU1lZGlhRW5naW5lUGxheWVyKShNZWRpYVBsYXllciopOwogdHlwZWRlZiB2b2lkICgqTWVkaWFF
bmdpbmVTdXBwb3J0ZWRUeXBlcykoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7Ci0jaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUo
RU5DUllQVEVEX01FRElBX1YyKQogdHlwZWRlZiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlICgq
TWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUpKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJiB1cmwpOwogI2Vs
c2UKIHR5cGVkZWYgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSAoKk1lZGlhRW5naW5lU3VwcG9y
dHNUeXBlKShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBL
VVJMJiB1cmwpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164872</attachid>
            <date>2012-09-20 02:51:15 -0700</date>
            <delta_ts>2012-09-20 03:07:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97037-20120920025041.patch</filename>
            <type>text/plain</type>
            <size>140322</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NDNlMmE4ODc0NjQ1NWIzZjBmOThiMTMwYjk2MjIzMmE0Y2M4OGZjLi4zYjRlZTYwMjhkY2U1ODQz
YzE4MzJhZDBlMGI2YjNmNmI4YTU3NmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOS0xOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KworICAgICAgICBCcmluZyBXZWJLaXQgdXAgdG8gc3BlZWQgd2l0aCBsYXRlc3QgRW5jcnlwdGVk
IE1lZGlhIHNwZWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NzAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIERlZmluZSB0aGUgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiBzZXR0aW5nLgorCisgICAg
ICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTItMDkt
MTkgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBPU1IgZXhp
dCBzb21ldGltZXMgbmVnbGVjdHMgdG8gY3JlYXRlIHRoZSBhcmd1bWVudHMgb2JqZWN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDdjMzJlOTIyNDYxOWI4ZDQwZThlYjc2ZTk5YWMxZTdiMzg4MTZlNzguLjhiOWI4NGVkOGE1MTRh
N2RjZDI1ZjNkYmNhZDM3ZTgxZmU1NjAzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDkt
MTkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQnJpbmcgV2Vi
S2l0IHVwIHRvIHNwZWVkIHdpdGggbGF0ZXN0IEVuY3J5cHRlZCBNZWRpYSBzcGVjLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcwMzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZWZpbmUgdGhlIEVOQUJM
RV9FTkNSWVBURURfTUVESUFfVjIgc2V0dGluZy4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5o
OgorCiAyMDEyLTA5LTE5ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgT1NSIGV4aXQgc29tZXRpbWVzIG5lZ2xlY3RzIHRvIGNyZWF0ZSB0aGUgYXJndW1lbnRz
IG9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE3Njk2Njk0MzFkOGFiNTE0OGI1NTJiOTQ0MDZhMjlhZGZk
NzliYmUuLjRmMDBjNDAxOGI3ZmQ5ZWYxM2YyZjUzOGJkMjdiYjRhZTI4Y2MyMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNzcgQEAKKzIwMTItMDktMTkgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CisKKyAgICAgICAgQnJpbmcgV2ViS2l0IHVwIHRvIHNwZWVkIHdpdGggbGF0ZXN0
IEVuY3J5cHRlZCBNZWRpYSBzcGVjLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTcwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgbW9zdCByZWNlbnQgdmVyc2lvbiBvZiB0aGUgRW5jcnlwdGVkIE1l
ZGlhIEV4dGVuc2lvbnMgc3BlYyBicmVha3MgZnVuY3Rpb25hbGl0eSBvdXQgb2YgdGhlCisgICAg
ICAgIEhUTUxNZWRpYUVsZW1lbnQgYW5kIGludG8gbmV3IE1lZGlhS2V5cyBhbmQgTWVkaWFLZXlT
ZXNzaW9uIGNsYXNzZXMuIFNpbmNlIHRoZSBDRE0gZnVuY3Rpb25hbGl0eQorICAgICAgICBoYXMg
YmVlbiBwdWxsZWQgb3V0IG9mIHRoZSBtZWRpYSBlbGVtZW50LCB3ZSBjcmVhdGUgYSBwcm94eSBD
RE0gY2xhc3MgYW5kIGZhY3Rvcnkgc3lzdGVtIGZvcgorICAgICAgICBjcmVhdGluZyBzcGVjaWZp
YyBDRE0ga2V5IHN5c3RlbSBpbXBsZW1lbnRhdGlvbnMuIFRoZSBzcGVjIGFsc28gYnJlYWtzIG91
dCBNZWRpYUtleUV2ZW50CisgICAgICAgIGludG8gZGlzdGluY3QgZXZlbnQgY2xhc3NlcywgTWVk
aWFLZXlOZWVkZWRFdmVudCBhbmQgTWVkaWFLZXlNZXNzYWdlRXZlbnQsIGZvciBuZWVka2V5IGFu
ZAorICAgICAgICBrZXltZXNzYWdlIGV2ZW50cywgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgIFRl
c3RzOiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLWV2ZW50cy5odG1s
CisgICAgICAgICAgICAgICBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYy
LXN5bnRheC5odG1sCisKKyAgICAgICAgQ0RNIGlzIGEgcHJveHkgY2xhc3MgKGEgbGEgTWVkaWFQ
bGF5ZXIpIGZvciBhIHNwZWNpZmljIENETVByaXZhdGVJbnRlcmZhY2UgaW1wbGVtZW50YXRpb24u
IEEgQ0RNCisgICAgICAgIGltcGxlbWVudGF0aW9uIGlzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgQ0RN
RmFjdG9yeSBhbmQgd2lsbCBiZSBjcmVhdGVkIGlmIHRoYXQgaW1wbGVtZW50YXRpb24gc3VwcG9y
dHMKKyAgICAgICAgdGhlIGtleSBzeXN0ZW0gcGFzc2VkIGludG8gdGhlIE1lZGlhS2V5cyBjb25z
dHJ1Y3Rvci4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6aW5zdGFsbGVkQ0RNRmFjdG9yaWVzKTogSW5pdGlhbGl6ZSBh
bGwgdGhlIGtub3duIENETSBzdWJ0eXBlcy4gUG9ydHMgd2lsbCBhZGQgQ0RNIGltcGxlbWVudGF0
aW9ucyBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpyZWdpc3RlckNETUZhY3RvcnkpOiBS
ZWdpc3RlcnMgYSBuZXcgQ0RNRmFjdG9yeSB1c2luZyB0aGUgcGFzc2VkIGluIGZ1bmN0aW9uIHBv
aW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6Q0RNRmFjdG9yeUZvcktleVN5c3RlbSk6IFJldHVy
biB0aGUgZmlyc3QgQ0RNIGZhY3Rvcnkgd2hpY2ggc3VwcG9ydHMgdGhlIHJlcXVlc3RlZCBrZXkg
c3lzdGVtLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0tleVN5c3RlbSk6IFdhbGsg
dGhlIGluc3RhbGxlZCBDRE1zIGFuZCBhc2sgaWYgdGhlIGdpdmVuIGtleSBzeXN0ZW0gaXMgc3Vw
cG9ydGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0tleVN5c3RlbU1JTUVUeXBl
QW5kQ29kZWMpOiBEaXR0bywgd2l0aCBhbiBhZGRpdGlvbmFsIE1JTUUgdHlwZSBhbmQgY29kZWMg
c3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpjcmVhdGUpOiBTaW1wbGUgY29uc3RydWN0
b3Igd3JhcHBlci4KKyAgICAgICAgKFdlYkNvcmU6OkNETTo6Q0RNKTogU2ltcGxlIGNvbnN0cnVj
dG9yOyBjYWxscyBiZXN0Q0RNRm9yS2V5U3lzdGVtKCkgdG8gY3JlYXRlIGl0J3MgcHJpdmF0ZSBp
bXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNETTo6fkNETSk6IFNpbXBsZSBkZXN0
cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpnZW5lcmF0ZVNlc3Npb25JZCk6IFBhc3Mg
dGhyb3VnaCB0byBwcml2YXRlIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q0RN
OjpnZW5lcmF0ZUtleVJlcXVlc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNETTo6YWRk
S2V5Rm9yU2Vzc2lvbklkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDRE06OmNsZWFyS2V5
c0Zyb21TZXNzaW9uSWQpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNETTo6a2V5U3lzdGVtKTogU2ltcGxl
IGFjY2Vzc29yIGZvciBtX2tleVN5c3RlbS4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETVByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlSW50
ZXJmYWNlOjpDRE1Qcml2YXRlSW50ZXJmYWNlKTogU2ltcGxlIGNvbnN0cnVjdG9yLgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUludGVyZmFjZTo6fkNETVByaXZhdGVJbnRlcmZhY2UpOiBT
aW1wbGUgZGVzdHJ1Y3Rvci4KKworICAgICAgICBUaGUgbmV3IGNsYXNzZXMsIE1lZGlhS2V5TWVz
c2FnZUV2ZW50IGFuZCBNZWRpYUtleU5lZWRlZEV2ZW50LCB0YWtlIGRpc3RpbmN0IHN1YnNldHMg
b2YgdGhlIGluaXRpYWxpemVycyBvZgorICAgICAgICB0aGUgb3JpZ2luYWwgTWVkaWFLZXlNZXNz
YWdlRXZlbnQuCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3Nh
Z2VFdmVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVu
dC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQ6Ok1lZGlh
S2V5TWVzc2FnZUV2ZW50SW5pdCk6IEluaXRpYWxpemVyIG5vdyBvbmx5IHRha2VzIG1lc3NhZ2Ug
YW5kIGRlc3RpbmF0aW9uVVJMCisgICAgICAgICAgICBwYXJhbWV0ZXJzLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlNZXNzYWdlRXZlbnQ6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50KTogU2ltcGxl
IGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlRXZlbnQ6On5N
ZWRpYUtleU1lc3NhZ2VFdmVudCk6IFNpbXBsZSBkZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlNZXNzYWdlRXZlbnQ6OmludGVyZmFjZU5hbWUpOiBTdGFuZGFyZCBpbnRlcmZh
Y2VOYW1lLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdl
RXZlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50Lmgu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVudDo6Y3JlYXRlKTogU2ltcGxl
IGNvbnN0cnVjdGlvbiB3cmFwcGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdl
RXZlbnQ6Om1lc3NhZ2UpOiBTaW1wbGUgYWNjZXNzb3IgZm9yIG1fbWVzc2FnZS4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50OjpkZXN0aW5hdGlvblVSTCk6IFNpbXBsZSBh
Y2Nlc3NvciBmb3IgbV9kZXN0aW5hdGlvblVSTC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUtleUV2ZW50LmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhS2V5RXZlbnQuaC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5TmVlZGVkRXZl
bnRJbml0OjpNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCk6IEluaXRpYWxpemVyIG5vdyBvbmx5IHRh
a2VzIGluaXREYXRhIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5TmVlZGVk
RXZlbnQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnQpOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleU5lZWRlZEV2ZW50Ojp+TWVkaWFLZXlOZWVkZWRFdmVudCk6IFNp
bXBsZSBkZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlOZWVkZWRFdmVudDo6
aW50ZXJmYWNlTmFtZSk6IFN0YW5kYXJkIGludGVyZmFjZU5hbWUuCisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50Lmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVudC5oLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFL
ZXlOZWVkZWRFdmVudDo6Y3JlYXRlKTogU2ltcGxlIGNvbnN0cnVjdGlvbiB3cmFwcGVyLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlOZWVkZWRFdmVudDo6aW5pdERhdGEpOiBTaW1wbGUgYWNj
ZXNzb3IgZm9yIG1faW5pdERhdGEuCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleU5lZWRlZEV2ZW50LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUtleUV2ZW50LmlkbC4KKworICAgICAgICBNZWRpYUtleVNlc3Npb24gaXMgYSBuZXcgY2xh
c3MgdGhhdCBtYXBzIGtleXMgYW5kIGtleSByZXF1ZXN0cyB0byBhIGdpdmVuIHNlc3Npb24gSUQ6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKTogU2ltcGxl
IGNvbnN0cnVjdGlvbiB3cmFwcGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9u
OjpNZWRpYUtleVNlc3Npb24pOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVNlc3Npb246On5NZWRpYUtleVNlc3Npb24pOiBTaW1wbGUgZGVzdHJ1Y3Rvcjsg
Y2FsbHMgY2xvc2UoKS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6c2V0RXJy
b3IpOiBTaW1wbGUgc2V0dGVyIGZvciBtX2Vycm9yOworICAgICAgICAoV2ViQ29yZTo6TWVkaWFL
ZXlTZXNzaW9uOjpjbG9zZSk6IFRlbGwgdGhlIENETSB0byBjbGVhciBhbnkgc2F2ZWQgc2Vzc2lv
biBrZXlzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJl
cXVlc3QpOiBTdGFydCBhIG9uZS1zaG90IHRpbWVyLCBoYW5kbGVkIGluIGtleVJlcXVlc3RUaW1l
ckZpcmVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjprZXlSZXF1ZXN0VGlt
ZXJGaXJlZCk6IEZvbGxvdyB0aGUgc3RlcHMgaW4gdGhlIHNwZWM7IGFzayB0aGUgQ0RNIHRvIGdl
bmVyYXRlIGEga2V5IHJlcXVlc3QuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246
OmFkZEtleSk6IFN0YXJ0IGEgb25lLXNob3QgdGltZXIsIGhhbmRsZWQgaW4gYWRkS2V5VGltZXJG
aXJlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGltZXJGaXJl
ZCk6IEZvbGxvdyB0aGUgc3RlcHMgaW4gdGhlIHNwZWM7IHByb3ZpZGUgdGhlIGtleSBkYXRhIHQg
b3RoZSBDRE0uCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmtleVN5c3Rl
bSk6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9rZXlTeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUtleVNlc3Npb246OnNlc3Npb25JZCk6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9zZXNzaW9u
SWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmVycm9yKTogU2ltcGxlIGFj
Y2Vzc29yIGZvciBtX2Vycm9yOworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmlkbDoKKworICAgICAgICBNZWRpYUtleVNlc3Npb24gaW5oZXJpdHMgZnJv
bSBFdmVudFRhcmdldCwgYW5kIG11c3Qgb3ZlcnJpZGUgdGhlIHB1cmUgdmlydHVhbCBmdW5jdGlv
bnMgaW4gdGhhdCBjbGFzczoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9u
OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6
cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpkZXJl
ZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6ZXZlbnRU
YXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6ZW5zdXJlRXZl
bnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk6CisKKyAgICAgICAgTWVkaWFLZXlzIGlzIGEgbmV3IGNsYXNzIHRo
YXQgZW5jYXBzdWxhdGVzIGEgQ0RNIGFuZCBhIG51bWJlciBvZiBrZXkgc2Vzc2lvbnM6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3JlYXRlKTogVGhyb3cgYW4gZXhjZXB0aW9uIGlmIHRo
ZSBrZXkgc3lzdGVtIHBhcmFtZXRlciBpcyB1bnN1cHBvcnRlZDsgY3JlYXRlIGEgQ0RNIG9iamVj
dAorICAgICAgICAgICAgYW5kIGEgbmV3IE1lZGlhS2V5cyBzZXNzaW9uLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlzOjpNZWRpYUtleXMpOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleXM6On5NZWRpYUtleXMpOiBTaW1wbGUgZGVzdHJ1Y3Rvci4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbik6IEZvbGxvdyB0aGUgc3Bl
YyBhbmQgY3JlYXRlIGEgbmV3IGtleSBzZXNzaW9uLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlzLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUVycm9yLmlkbC4KKworICAgICAgICBQcm92aWRlIGEgbmV3IGludGVyZmFjZSB0byBIVE1MTWVk
aWFFbGVtZW50IGZvciBNZWRpYVBsYXllciB3aGljaCBkb2VzIG5vdCByZXF1aXJlIGEgc2Vzc2lv
bklkIG9yIGEga2V5IHN5c3RlbToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVk
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjprZXlOZWVkZWQpOgorCisgICAgICAgIE1lZGlhS2V5
RXJyb3Igbm93IGhhcyBhIHN5c3RlbUNvZGUgcGFyYW1ldGVyIGFuZCBtZW1iZXIgdmFyaWFibGUu
CisgICAgICAgICogaHRtbC9NZWRpYUtleUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUtleUVycm9yOjpjcmVhdGUpOiBUYWtlIGEgc3lzdGVtQ29kZSBwYXJhbWV0ZXIgd2l0aCBhIGRl
ZmF1bHQgKDApIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlFcnJvcjo6TWVkaWFL
ZXlFcnJvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlFcnJvcjo6c3lzdGVt
Q29kZSk6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9zeXN0ZW1Db2RlLgorICAgICAgICAqIGh0bWwv
TWVkaWFLZXlFcnJvci5pZGw6CisKKyAgICAgICAgQWRkIG5ldyBtZXRob2RzIHRvIEhUTUxNZWRp
YUVsZW1lbnQgdG8gc3VwcG9ydCBNZWRpYUtleXMuIFN1cHBvcnQgZGlmZmVyZW50IGluaXRpYWxp
emVyCisgICAgICAgIGZvciB0aGUgTWVkaWFLZXlOZWVkZWRFdmVudC4KKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6c2V0TWVkaWFLZXlzKTogU2ltcGxlIHNldHRlciBmb3IgbV9tZWRpYUtleXMuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6IFRoaXMg
dmVyc2lvbiB0YWtlcyBmZXdlciBwYXJhbWV0ZXJzCisgICAgICAgICAgICB0aGFuIHRoZSBkZXBy
ZWNhdGVkIHZlcnNpb24uCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYUtleXMpOiBTaW1wbGUgYWNjZXNz
b3IgZm9yIG1fbWVkaWFLZXlzLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6
IEFkZCB0aGUgbWVkaWFLZXlzIGF0dHJpYnV0ZS4KKworICAgICAgICBBZGQgYW4gRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQV9WMikgY2hlY2sgdG8gdGhlIGV4aXN0aW5nIEVOQUJMRShFTkNSWVBURURf
TUVESUEpIG9uZToKKyAgICAgICAgKiBodG1sL01lZGlhRXJyb3IuaDoKKyAgICAgICAgKiBodG1s
L01lZGlhRXJyb3IuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RNZWRpYUVuZ2luZUZvclR5cGVBbmRDb2RlY3Mp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjprZXlOZWVkZWQpOiBUaGlzIHZlcnNpb24gdGFrZXMgZmV3ZXIgcGFyYW1ldGVy
cyB0aGFuIHRoZQorICAgICAgICAgICAgZGVwcmVjYXRlZCB2ZXJzaW9uLgorCisgICAgICAgIFN1
cHBvcnQgdGhlIG5ldyB2ZXJzaW9uIG9mIGNhblBsYXlUeXBlIHdoaWNoIHRha2VzIGFuIGV4dHJh
IHBhcmFtZXRlcjoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZXh0ZW5kZWRTdXBwb3J0c1R5cGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpyZWdpc3Rlck1l
ZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojpl
eHRlbmRlZFN1cHBvcnRzVHlwZSk6CisKKyAgICAgICAgQWRkIGEgbW9jayBDRE0gZm9yIHVzZSB3
aXRoaW4gRFJUIGFuZCBXS1RSIHRvIHRlc3QgdGhlIE1lZGlhS2V5cyBhbmQgTWVkaWFLZXlTZXNz
aW9uCisgICAgICAgIEFQSXMgYW5kIGV2ZW50czoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RNKTog
QWRkIHRoZSBNb2NrQ0RNIGNsYXNzIHRvIHRoZSBDRE0gZmFjdG9yaWVzLgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOiBBZGQg
dGhlIGluaXRpYWxpemVNb2NrQ0RNKCkgbWV0aG9kLgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NE
TS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydHNLZXlTeXN0
ZW0pOiBPbmx5IHN1cHBvcnRzIHRoZSAnY29tLndlYmNvcmUubW9jaycga2V5IHN5c3RlbS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnN1cHBvcnRzTUlNRVR5cGUpOiBPbmx5IHN1cHBvcnRz
IHRoZSAndmlkZW8vbW9jaycgbWltZSB0eXBlLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6
Z2VuZXJhdGVTZXNzaW9uSWQpOiBSZXR1cm4gYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgbnVt
YmVyLgorICAgICAgICAoV2ViQ29yZTo6aW5pdERhdGFQcmVmaXgpOiBTdGF0aWMgbWV0aG9kIHdo
aWNoIHJldHVybnMgYSBVaW50OEFycmF5IGNvbnRhaW5pbmcgJ21vY2snLgorICAgICAgICAoV2Vi
Q29yZTo6a2V5UHJlZml4KTogU3RhdGljIG1ldGhvZCB3aGljaCByZXR1cm5zIGEgVWludDhBcnJh
eSBjb250YWluaW5nICdrZXknLgorICAgICAgICAoV2ViQ29yZTo6a2V5UmVxdWVzdCk6IFN0YXRp
YyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIFVpbnQ4QXJyYXkgY29udGFpbmluZyAncmVxdWVzdCcu
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpnZW5lcmF0ZUtleVJlcXVlc3QpOiBJZ25vcmVz
IHRoZSBwYXJhbWV0ZXJzIGFuZCByZXR1cm5zIGEga2V5UmVxdWVzdCgpIGFycmF5LgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja0NETTo6Y2xlYXJLZXlzRnJvbVNlc3Npb25JZCk6IE5vLW9wLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NETTo6YWRkS2V5Rm9yU2Vzc2lvbklkKTogQ2hlY2tzIHRoYXQg
dGhlIGtleSBzdGFydHMgd2l0aCB0aGUga2V5UHJlZml4KCkgYXJyYXkuCisgICAgICAgICogdGVz
dGluZy9Nb2NrQ0RNLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06On5Nb2NrQ0RNKTogU2ltcGxlIGRlc3RydWN0
b3IuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpNb2NrQ0RNKTogU2ltcGxlIGNvbnN0cnVj
dG9yLgorCisgICAgICAgIEFkZCB0aGUgbmV3IGNsYXNzZXMgdG8gdGhlIGJ1aWx0IHN5c3RlbToK
KyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBNaXNj
ZWxhbmVvdXMgY2hhbmdlczoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5pbjogQWRkIHRoZSB0
d28gbmV3IGV2ZW50IHR5cGVzLCBNZWRpYUtleU1lc3NhZ2VFdmVudCBhbmQgTWVkaWFLZXlOZWVk
ZWRFdmVudC4KKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOiBBZGQgdGhlIG5l
dyBFdmVudFRhcmdldCwgTWVkaWFLZXlTZXNzaW9uLgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmlkbDogQWRkIGNvbnN0cnVjdG9ycyBmb3IgdGhlIG5ldyBjbGFzc2VzIHRvIHRoZSB3aW5kb3cg
b2JqZWN0LgorCiAyMDEyLTA5LTE5ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViQ29yZSBwYXJ0IG9mIGFkZGluZyBhIHNldHRpbmcgYW5kIEFQSSBmb3IgZGlz
YWJsaW5nIHNjcmVlbiBmb250IHN1YnN0aXR1dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmlu
ZGV4IGVjMzVjZjY3M2Y0YTBmZDIxMjdjZjU1NWNmNGVjNzAyNzhjM2Q2NjcuLmY4MGMwMmM5ZDQ0
NjBjMzc0OTA4NmNjNDgyN2ZmM2IwMDBkMjM0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcK
QEAgLTU3LDYgKzU3LDExIEBAIEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQgPSBFTkFCTEVfREVUQUlM
U19FTEVNRU5UOwogRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTiA9IDsKIEVOQUJMRV9ESUFMT0df
RUxFTUVOVCA9IDsKIEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEID0gOworRU5BQkxFX0VOQ1JZUFRF
RF9NRURJQV9WMiA9ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl8kKFJFQUxfUExBVEZPUk1f
TkFNRSkpOworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3ggPSAkKEVOQUJMRV9FTkNS
WVBURURfTUVESUFfbWFjb3N4XyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKK0VO
QUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEwNzAgPSA7CitFTkFCTEVfRU5DUllQVEVE
X01FRElBX1YyX21hY29zeF8xMDgwID0gOworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNv
c3hfMTA5MCA9IEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI7CiBFTkFCTEVfRklMRV9TWVNURU0g
PSA7CiBFTkFCTEVfRklMVEVSUyA9ICQoRU5BQkxFX0ZJTFRFUlNfJChSRUFMX1BMQVRGT1JNX05B
TUUpKTsKIEVOQUJMRV9GSUxURVJTX21hY29zeCA9IEVOQUJMRV9GSUxURVJTOwpAQCAtMTQwLDQg
KzE0NSw0IEBAIEVOQUJMRV9XSURHRVRfUkVHSU9OX21hY29zeCA9IEVOQUJMRV9XSURHRVRfUkVH
SU9OOwogRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VSUzsKIEVOQUJMRV9YU0xUID0gRU5B
QkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChF
TkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVO
QUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQp
ICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0VYQ0xVU0lP
TlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSElFUkFSQ0hJRVMpICQoRU5B
QkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04p
ICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0hBREVSUykgJChFTkFCTEVfQ1NT
X0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BPU0lUSU9OKSAkKEVOQUJMRV9DU1Nf
VkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFRfREVDT1JBVElPTikgJChFTkFCTEVfQ1VTVE9N
X1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFU
QUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVU
QUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJQUxP
R19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9GSUxFX1NZU1RF
TSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dB
TUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpICQo
RU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1FX1NFQU1MRVNTKSAkKEVOQUJMRV9J
TkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9E
QVRFVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfV0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTEVHQUNZX0NT
U19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJM
RV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJM
RV9MSU5LX1BSRVJFTkRFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0Up
ICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5B
QkxFX01IVE1MKSAkKEVOQUJMRV9NSUNST0RBVEEpICQoRU5BQkxFX01VVEFUSU9OX09CU0VSVkVS
UykgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05PVElGSUNBVElP
TlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BST0dSRVNTX0VMRU1F
TlQpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChF
TkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFET1dfRE9NKSAkKEVOQUJMRV9TSEFS
RURfV09SS0VSUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9TVFlMRV9TQ09QRUQp
ICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9T
VkdfRk9OVFMpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVEVYVF9OT1RJRklD
QVRJT05TX09OTFkpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVU5ET19N
QU5BR0VSKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1dF
QkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9X
RUJfVElNSU5HKSAkKEVOQUJMRV9XSURHRVRfUkVHSU9OKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVO
QUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChF
TkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVO
QUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQp
ICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0VYQ0xVU0lP
TlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSElFUkFSQ0hJRVMpICQoRU5B
QkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04p
ICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0hBREVSUykgJChFTkFCTEVfQ1NT
X0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BPU0lUSU9OKSAkKEVOQUJMRV9DU1Nf
VkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFRfREVDT1JBVElPTikgJChFTkFCTEVfQ1VTVE9N
X1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFU
QUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVU
QUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJQUxP
R19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9FTkNSWVBURURf
TUVESUFfVjIpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJM
RV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04p
ICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJM
RV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lO
UFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQ
RV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVU
X1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBU
X0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVf
TEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQo
RU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJTktfUFJFUkVOREVSKSAkKEVOQUJMRV9N
QVRITUwpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykg
JChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01JQ1JPREFU
QSkgJChFTkFCTEVfTVVUQVRJT05fT0JTRVJWRVJTKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVO
VF9VVElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZ
X0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxF
X1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5B
QkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUUxfREFU
QUJBU0UpICQoRU5BQkxFX1NUWUxFX1NDT1BFRCkgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdf
RE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVYVF9BVVRP
U0laSU5HKSAkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWSkgJChFTkFCTEVfVE9VQ0hf
SUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VTkRPX01BTkFHRVIpICQoRU5BQkxFX1ZJREVPKSAkKEVO
QUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChF
TkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dJREdFVF9S
RUdJT04pICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hTTFQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXgg
MGJlNGJiMDdkYzI4ZmM5MTE2MmVkMzA2NWFjYjE1MjA5ZjIxZDNlMi4uZGQ1MWVkNzlhY2MzZDZi
MGJjYjk2NjJmNzQzYzllYzhlYTQ2ODVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMTQ4LDYgKzExNDgs
MTAgQEAKICNkZWZpbmUgV1RGX1VTRV9DT1JFTUVESUEgMQogI2VuZGlmCiAKKyNpZiBQTEFURk9S
TShNQUMpICYmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA5MAorI2RlZmluZSBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyIDEKKyNlbmRpZgor
CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkgfHwg
KFBMQVRGT1JNKFdJTikgJiYgIU9TKFdJTkNFKSAmJiAhUExBVEZPUk0oV0lOX0NBSVJPKSkgfHwg
UExBVEZPUk0oQkxBQ0tCRVJSWSkKICNkZWZpbmUgV1RGX1VTRV9SRVFVRVNUX0FOSU1BVElPTl9G
UkFNRV9USU1FUiAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggNDQzOTNiOTBlMWU3NGVkNjU5YTFm
NjY0YzQ3M2NmN2JlN2Y0OTYzMy4uMzE1NGIwZDZmY2JhMTBhZmM4MzdiYzNiMGY3NTVlNGRjYmNh
ZTJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKQEAgLTU4LDYgKzU4LDExIEBAIEVOQUJMRV9ERVRBSUxTX0VMRU1F
TlQgPSBFTkFCTEVfREVUQUlMU19FTEVNRU5UOwogRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTiA9
IDsKIEVOQUJMRV9ESUFMT0dfRUxFTUVOVCA9IDsKIEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEID0g
OworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiA9ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9W
Ml8kKFJFQUxfUExBVEZPUk1fTkFNRSkpOworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNv
c3ggPSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XyQoVEFSR0VUX01BQ19PU19Y
X1ZFUlNJT05fTUFKT1IpKTsKK0VOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEwNzAg
PSA7CitFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeF8xMDgwID0gOworRU5BQkxFX0VO
Q1JZUFRFRF9NRURJQV9WMl9tYWNvc3hfMTA5MCA9IEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI7
CiBFTkFCTEVfRklMRV9TWVNURU0gPSA7CiBFTkFCTEVfRklMVEVSUyA9ICQoRU5BQkxFX0ZJTFRF
UlNfJChSRUFMX1BMQVRGT1JNX05BTUUpKTsKIEVOQUJMRV9GSUxURVJTX21hY29zeCA9IEVOQUJM
RV9GSUxURVJTOwpAQCAtMTQxLDQgKzE0Niw0IEBAIEVOQUJMRV9XSURHRVRfUkVHSU9OX21hY29z
eCA9IEVOQUJMRV9XSURHRVRfUkVHSU9OOwogRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VS
UzsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5B
QkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJM
RV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykg
JChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9D
U1NfSElFUkFSQ0hJRVMpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVf
Q1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1Nf
U0hBREVSUykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BP
U0lUSU9OKSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFRfREVDT1JB
VElPTikgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRf
U1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZF
Ul9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0RJQUxPR19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FE
KSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRlVMTFND
UkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9ISUdIX0RQSV9DQU5WQVMpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1F
X1NFQU1MRVNTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVF
Q0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkg
JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElN
RUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJ
TUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dF
UikgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9O
T1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9M
SU5LX1BSRUZFVENIKSAkKEVOQUJMRV9MSU5LX1BSRVJFTkRFUikgJChFTkFCTEVfTUFUSE1MKSAk
KEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxF
X01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NSUNST0RBVEEpICQoRU5B
QkxFX01VVEFUSU9OX09CU0VSVkVSUykgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMp
ICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQo
RU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNU
X0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFE
T1dfRE9NKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAk
KEVOQUJMRV9TVFlMRV9TQ09QRUQpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0RPTV9PQkpD
X0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykg
JChFTkFCTEVfVEVYVF9OT1RJRklDQVRJT05TX09OTFkpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9B
RElORykgJChFTkFCTEVfVU5ET19NQU5BR0VSKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklE
RU9fVFJBQ0spICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dF
Ql9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XSURHRVRfUkVHSU9OKSAk
KEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5B
QkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJM
RV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykg
JChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9D
U1NfSElFUkFSQ0hJRVMpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVf
Q1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1Nf
U0hBREVSUykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BP
U0lUSU9OKSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFRfREVDT1JB
VElPTikgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRf
U1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZF
Ul9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0RJQUxPR19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FE
KSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVO
QUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkg
JChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVf
SUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xP
UikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1F
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVf
TU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVL
KSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRP
Ul9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FD
WV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJTktf
UFJFUkVOREVSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFC
TEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhU
TUwpICQoRU5BQkxFX01JQ1JPREFUQSkgJChFTkFCTEVfTVVUQVRJT05fT0JTRVJWRVJTKSAkKEVO
QUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChF
TkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChF
TkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9T
Q1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JL
RVJTKSAkKEVOQUJMRV9TUUxfREFUQUJBU0UpICQoRU5BQkxFX1NUWUxFX1NDT1BFRCkgJChFTkFC
TEVfU1ZHKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05U
UykgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNf
T05MWSkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VTkRPX01BTkFHRVIp
ICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfV0VCR0wpICQo
RU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1J
TkcpICQoRU5BQkxFX1dJREdFVF9SRUdJT04pICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hT
TFQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZjc3NTU1MjM5MWZmODQxNGNi
ZTQ1ZmY4MGM4MGE4ZGNhZjlhZDZlYS4uYjFhNWI4ZjVjMWQwNjkxNzM4NDc3OTRiOGZkMmIyYTQ2
NTk4NzBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yOCw2ICsyOCw3IEBA
CiAKIFZQQVRIID0gXAogICAgICQoV2ViQ29yZSkgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0gXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2lu
ZGV4ZWRkYiBcCkBAIC02MSw2ICs2MiwxMCBAQCBWUEFUSCA9IFwKICMKIAogQklORElOR19JRExT
ID0gXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3Nh
Z2VFdmVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleU5lZWRlZEV2ZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3Rl
bS9ET01GaWxlU3lzdGVtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RE9NRmlsZVN5c3RlbVN5bmMuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3Rl
bS9ET01XaW5kb3dGaWxlU3lzdGVtLmlkbCBcCkBAIC0zNTcsNiArMzYyLDcgQEAgQklORElOR19J
RExTID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9JbWFnZURhdGEuaWRsIFwKICAgICAkKFdlYkNv
cmUpL2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL01lZGlh
RXJyb3IuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvTWVkaWFLZXlFcnJvci5pZGwgXAogICAg
ICQoV2ViQ29yZSkvaHRtbC9NaWNyb0RhdGFJdGVtVmFsdWUuaWRsIFwKICAgICAkKFdlYkNvcmUp
L2h0bWwvUmFkaW9Ob2RlTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9UZXh0TWV0cmlj
cy5pZGwgXApAQCAtODQ4LDYgKzg1NCwxMCBAQCBpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX0RF
VEFJTFNfRUxFTUVOVCwkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfREVUQUlMU19FTAogICAg
IEhUTUxfRkxBR1MgOj0gJChIVE1MX0ZMQUdTKSBFTkFCTEVfREVUQUlMU19FTEVNRU5UPTEKIGVu
ZGlmCiAKK2lmZXEgKCQoZmluZHN0cmluZyBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyLCQoRkVB
VFVSRV9ERUZJTkVTKSksIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpCisJSFRNTF9GTEFHUyA6
PSAkKEhUTUxfRkxBR1MpIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI9MQorZW5kaWYKKwogaWZl
cSAoJChmaW5kc3RyaW5nIEVOQUJMRV9NRVRFUl9FTEVNRU5ULCQoRkVBVFVSRV9ERUZJTkVTKSks
IEVOQUJMRV9NRVRFUl9FTEVNRU5UKQogICAgIEhUTUxfRkxBR1MgOj0gJChIVE1MX0ZMQUdTKSBF
TkFCTEVfTUVURVJfRUxFTUVOVD0xCiBlbmRpZgpAQCAtOTY1LDYgKzk3NSw3IEBAIHByZXByb2Nl
c3NfaWRsc19zY3JpcHQgPSBwZXJsICQoYWRkcHJlZml4IC1JICQoV2ViQ29yZSkvLCAkKHNvcnQg
JChkaXIgJCgxKSkpKSAkCiAKIElETF9JTkNMVURFUyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvYmF0dGVyeSBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2dh
bWVwYWQgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQwYzYy
NWNjZDQ0ODFhMTk1OWQyY2UyZWQ5NmU5NzExOTdkZTNkOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtMCwwICsxLDEz
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDRE0uaCIK
KworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlICJDRE1Qcml2YXRl
LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlFcnJvci5oIgorI2luY2x1ZGUgIk1lZGlhS2V5cy5oIgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0cnVjdCBDRE1GYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDRE1GYWN0b3J5
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgQ0RNRmFjdG9yeShDcmVh
dGVDRE0gY29uc3RydWN0b3IsIENETVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVt
KQorICAgICAgICA6IGNvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKQorICAgICAgICAsIHN1cHBvcnRz
S2V5U3lzdGVtKHN1cHBvcnRzS2V5U3lzdGVtKQorICAgIHsKKyAgICB9CisKKyAgICBDcmVhdGVD
RE0gY29uc3RydWN0b3I7CisgICAgQ0RNU3VwcG9ydHNLZXlTeXN0ZW0gc3VwcG9ydHNLZXlTeXN0
ZW07Cit9OworCitzdGF0aWMgVmVjdG9yPENETUZhY3RvcnkqPiYgaW5zdGFsbGVkQ0RNRmFjdG9y
aWVzKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxDRE1GYWN0b3J5Kj4sIGNk
bXMsICgpKTsKKyAgICBzdGF0aWMgYm9vbCBxdWVyaWVkQ0RNcyA9IGZhbHNlOworICAgIGlmICgh
cXVlcmllZENETXMpIHsKKyAgICAgICAgcXVlcmllZENETXMgPSB0cnVlOworCisgICAgICAgIC8v
IFRPRE86IGluaXRpYWxpemUgc3BlY2lmaWMgVUEgQ0RNcy4KKyAgICB9CisKKyAgICByZXR1cm4g
Y2RtczsKK30KKwordm9pZCBDRE06OnJlZ2lzdGVyQ0RNRmFjdG9yeShDcmVhdGVDRE0gY29uc3Ry
dWN0b3IsIENETVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtKQoreworICAgIGlu
c3RhbGxlZENETUZhY3RvcmllcygpLmFwcGVuZChuZXcgQ0RNRmFjdG9yeShjb25zdHJ1Y3Rvciwg
c3VwcG9ydHNLZXlTeXN0ZW0pKTsKK30KKworYm9vbCBDRE06OnN1cHBvcnRzS2V5U3lzdGVtKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAgIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIGNkbUZh
Y3RvcmllcyA9IGluc3RhbGxlZENETUZhY3RvcmllcygpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY2RtRmFjdG9yaWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChjZG1GYWN0b3Jp
ZXNbaV0tPnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgQ0RNRmFjdG9yeSog
Q0RNRmFjdG9yeUZvcktleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKK3sKKyAgICBW
ZWN0b3I8Q0RNRmFjdG9yeSo+JiBjZG1GYWN0b3JpZXMgPSBpbnN0YWxsZWRDRE1GYWN0b3JpZXMo
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNkbUZhY3Rvcmllcy5zaXplKCk7ICsraSkg
eworICAgICAgICBpZiAoY2RtRmFjdG9yaWVzW2ldLT5zdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0
ZW0pKQorICAgICAgICAgICAgcmV0dXJuIGNkbUZhY3Rvcmllc1tpXTsKKyAgICB9CisgICAgcmV0
dXJuIDA7Cit9CisKK1Bhc3NPd25QdHI8Q0RNPiBDRE06OmNyZWF0ZShjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSkKK3sKKyAgICBpZiAoIXN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDRE0oa2V5U3lz
dGVtKSk7Cit9CisKK0NETTo6Q0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQorICAgIDogbV9r
ZXlTeXN0ZW0oa2V5U3lzdGVtKQoreworICAgIG1fcHJpdmF0ZSA9IENETUZhY3RvcnlGb3JLZXlT
eXN0ZW0oa2V5U3lzdGVtKS0+Y29uc3RydWN0b3IodGhpcyk7Cit9CisKK0NETTo6fkNETSgpCit7
Cit9CisKK2Jvb2wgQ0RNOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNNSU1FVHlwZShtaW1lVHlwZSk7Cit9
CisKK1N0cmluZyBDRE06OmdlbmVyYXRlU2Vzc2lvbklkKCkKK3sKKyAgICByZXR1cm4gbV9wcml2
YXRlLT5nZW5lcmF0ZVNlc3Npb25JZCgpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IENE
TTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkq
IGluaXREYXRhLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgU3RyaW5nJiBkZXN0aW5hdGlvblVS
TCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkK
K3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5nZW5lcmF0ZUtleVJlcXVlc3QobWltZVR5cGUsIGlu
aXREYXRhLCBzZXNzaW9uSWQsIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUp
OworfQorCitib29sIENETTo6YWRkS2V5Rm9yU2Vzc2lvbklkKFVpbnQ4QXJyYXkqIGtleSwgY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVu
c2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpCit7Cisg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+YWRkS2V5Rm9yU2Vzc2lvbklkKGtleSwgc2Vzc2lvbklkLCBu
ZXh0TWVzc2FnZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKK30KKwordm9pZCBDRE06OmNsZWFy
S2V5c0Zyb21TZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCit7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+Y2xlYXJLZXlzRnJvbVNlc3Npb25JZChzZXNzaW9uSWQpOworfQorCit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2IzNTk2MjAzNzAxMGU0OWVh
ODU1ODY5MzBlMjZiNTM1Nzk0Y2M1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgQ0RNX2gKKyNkZWZpbmUgQ0RNX2gKKworI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUFfVjIpCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYUtleUVy
cm9yOworY2xhc3MgTWVkaWFLZXlTZXNzaW9uOworY2xhc3MgTWVkaWFLZXlzOworCitjbGFzcyBD
RE07CitjbGFzcyBDRE1Qcml2YXRlSW50ZXJmYWNlOworCit0eXBlZGVmIFBhc3NPd25QdHI8Q0RN
UHJpdmF0ZUludGVyZmFjZT4gKCpDcmVhdGVDRE0pKENETSopOwordHlwZWRlZiBib29sICgqQ0RN
U3VwcG9ydHNLZXlTeXN0ZW0pKGNvbnN0IFN0cmluZyYpOworCitjbGFzcyBDRE0geworcHVibGlj
OgorICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpOworICAg
IHN0YXRpYyBQYXNzT3duUHRyPENETT4gY3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsK
KyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckNETUZhY3RvcnkoQ3JlYXRlQ0RNLCBDRE1TdXBwb3J0
c0tleVN5c3RlbSk7CisgICAgfkNETSgpOworCisgICAgYm9vbCBzdXBwb3J0c01JTUVUeXBlKGNv
bnN0IFN0cmluZyYpOworICAgIFN0cmluZyBnZW5lcmF0ZVNlc3Npb25JZCgpOworICAgIFBhc3NS
ZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgU3RyaW5n
JiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9u
ZyYgc3lzdGVtQ29kZSk7CisgICAgdm9pZCBjbGVhcktleXNGcm9tU2Vzc2lvbklkKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKTsKKyAgICBib29sIGFkZEtleUZvclNlc3Npb25JZChVaW50OEFycmF5
KiwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3Nh
Z2UsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUp
OworCisgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2tleVN5
c3RlbTsgfQorCitwcml2YXRlOgorICAgIENETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CisK
KyAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CisgICAgT3duUHRyPENETVByaXZhdGVJbnRlcmZhY2U+
IG1fcHJpdmF0ZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUFf
VjIpCisKKyNlbmRpZiAvLyBDRE1faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjAwM2NiZGJiZmM4ZmVhZWFj
MmUyOTNmYjkxMmI1YmNlNzRmYWIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKQEAgLTAsMCArMSw1MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQ0RNUHJpdmF0ZV9oCisjZGVmaW5lIENETVByaXZhdGVfaAorCisj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENETVByaXZhdGVJbnRlcmZh
Y2UgeworcHVibGljOgorICAgIENETVByaXZhdGVJbnRlcmZhY2UoKSB7IH0KKyAgICB2aXJ0dWFs
IH5DRE1Qcml2YXRlSW50ZXJmYWNlKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNN
SU1FVHlwZShjb25zdCBTdHJpbmcmKSA9IDA7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBnZW5lcmF0
ZVNlc3Npb25JZCgpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZ2Vu
ZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXRE
YXRhLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5z
aWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkgPSAwOwor
CisgICAgdmlydHVhbCB2b2lkIGNsZWFyS2V5c0Zyb21TZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkS2V5Rm9yU2Vzc2lvbklkKFVpbnQ4
QXJyYXkqLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0
TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVt
Q29kZSkgPSAwOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9W
MikKKworI2VuZGlmIC8vIENETVByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YTljODQzYTY1MjFmOWIxYzdmMmQ5YmJiZjIwMzZjNDNlN2FjYTc5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleU1lc3NhZ2VFdmVudC5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1
ZGUgIk1lZGlhS2V5TWVzc2FnZUV2ZW50LmgiCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisj
aW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRp
YUtleU1lc3NhZ2VFdmVudEluaXQ6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCgpCit7Cit9CisK
K01lZGlhS2V5TWVzc2FnZUV2ZW50OjpNZWRpYUtleU1lc3NhZ2VFdmVudCgpCit7Cit9CisKK01l
ZGlhS2V5TWVzc2FnZUV2ZW50OjpNZWRpYUtleU1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGNvbnN0IE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCisg
ICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKKyAgICAsIG1fbWVzc2FnZShpbml0aWFsaXpl
ci5tZXNzYWdlKQorICAgICwgbV9kZXN0aW5hdGlvblVSTChpbml0aWFsaXplci5kZXN0aW5hdGlv
blVSTCkKK3sKK30KKworTWVkaWFLZXlNZXNzYWdlRXZlbnQ6On5NZWRpYUtleU1lc3NhZ2VFdmVu
dCgpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFLZXlNZXNzYWdlRXZlbnQ6Omlu
dGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNl
Rm9yTWVkaWFLZXlNZXNzYWdlRXZlbnQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5TWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNmZjAyMTkxMmU0MDAz
MGZjNDQ2YjRkMTVmNWY2MmNiOGJlNTMzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaApAQCAtMCww
ICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhS2V5TWVzc2FnZUV2ZW50X2gKKyNk
ZWZpbmUgTWVkaWFLZXlNZXNzYWdlRXZlbnRfaAorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QV9WMikKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlFcnJvci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQg
OiBwdWJsaWMgRXZlbnRJbml0IHsKKyAgICBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQoKTsKKwor
ICAgIFJlZlB0cjxVaW50OEFycmF5PiBtZXNzYWdlOworICAgIFN0cmluZyBkZXN0aW5hdGlvblVS
TDsKK307CisKK2NsYXNzIE1lZGlhS2V5TWVzc2FnZUV2ZW50IDogcHVibGljIEV2ZW50IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5NZWRpYUtleU1lc3NhZ2VFdmVudCgpOworCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFLZXlNZXNzYWdlRXZlbnQ+IGNyZWF0ZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhS2V5TWVzc2FnZUV2ZW50KTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleU1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0JiBpbml0aWFs
aXplcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFLZXlNZXNzYWdl
RXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCisgICAgVWludDhBcnJheSogbWVz
c2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZS5nZXQoKTsgfQorICAgIFN0cmluZyBkZXN0
aW5hdGlvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25VUkw7IH0KKworcHJpdmF0
ZToKKyAgICBNZWRpYUtleU1lc3NhZ2VFdmVudCgpOworICAgIE1lZGlhS2V5TWVzc2FnZUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0
JiBpbml0aWFsaXplcik7CisKKyAgICBSZWZQdHI8VWludDhBcnJheT4gbV9tZXNzYWdlOworICAg
IFN0cmluZyBtX2Rlc3RpbmF0aW9uVVJMOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
MTBmZDA1ZGI5NmMxYjM2ZTkyNjkxMDY3NDQ3ZjZlYWYxNjg3NDk0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VF
dmVudC5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGVuY3J5cHRlZG1l
ZGlhIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUVOQ1JZUFRFRF9N
RURJQV9WMiwKKyAgICAgICAgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhLAorICAg
ICAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50IAorICAgIF0gTWVkaWFLZXlNZXNzYWdlRXZl
bnQgOiBFdmVudCB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVaW50OEFycmF5IG1lc3Nh
Z2U7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3Ry
dWN0b3JdIERPTVN0cmluZyBkZXN0aW5hdGlvblVSTDsKKyAgICB9OworCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5l
ZWRlZEV2ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTA2ZjhkNTA2MzE3ZWEzZmI5YTgzNzg3OWZmODAx
YzhmOTY3YTI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmNwcApAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
X1YyKQorCisjaW5jbHVkZSAiTWVkaWFLZXlOZWVkZWRFdmVudC5oIgorCisjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworTWVkaWFLZXlOZWVkZWRFdmVudEluaXQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnRJbml0
KCkKK3sKK30KKworTWVkaWFLZXlOZWVkZWRFdmVudDo6TWVkaWFLZXlOZWVkZWRFdmVudCgpCit7
Cit9CisKK01lZGlhS2V5TmVlZGVkRXZlbnQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCYgaW5pdGlhbGl6
ZXIpCisgICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKKyAgICAsIG1faW5pdERhdGEoaW5p
dGlhbGl6ZXIuaW5pdERhdGEpCit7Cit9CisKK01lZGlhS2V5TmVlZGVkRXZlbnQ6On5NZWRpYUtl
eU5lZWRlZEV2ZW50KCkKK3sKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUtleU5lZWRl
ZEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygp
LmludGVyZmFjZUZvck1lZGlhS2V5TmVlZGVkRXZlbnQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2YWNlMzIz
M2EzZDFlZjRiZTZjN2QzMjVjZGRlYmI1ZjYyMDA5NzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaApA
QCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhS2V5TmVlZGVkRXZlbnRf
aAorI2RlZmluZSBNZWRpYUtleU5lZWRlZEV2ZW50X2gKKworI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUFfVjIpCisKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIk1lZGlhS2V5RXJyb3Iu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgTWVkaWFLZXlOZWVkZWRFdmVudElu
aXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKKyAgICBNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCgpOwor
CisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGluaXREYXRhOworfTsKKworY2xhc3MgTWVkaWFLZXlO
ZWVkZWRFdmVudCA6IHB1YmxpYyBFdmVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TWVkaWFL
ZXlOZWVkZWRFdmVudCgpOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFLZXlOZWVkZWRF
dmVudD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFL
ZXlOZWVkZWRFdmVudCk7CisgICAgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFLZXlO
ZWVkZWRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFL
ZXlOZWVkZWRFdmVudEluaXQmIGluaXRpYWxpemVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYUtleU5lZWRlZEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKSk7CisgICAg
fQorCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25z
dDsKKworICAgIFVpbnQ4QXJyYXkqIGluaXREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9pbml0RGF0
YS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIE1lZGlhS2V5TmVlZGVkRXZlbnQoKTsKKyAgICBN
ZWRpYUtleU5lZWRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFL
ZXlOZWVkZWRFdmVudEluaXQmIGluaXRpYWxpemVyKTsKKworICAgIFJlZlB0cjxVaW50OEFycmF5
PiBtX2luaXREYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleU5lZWRlZEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdmMTBiODRmNzNhMGVk
YWM4NGVmNmJkZjU5NDk4MTI3ODc3YzQwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwKQEAgLTAs
MCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGVuY3J5cHRlZG1lZGlhIHsKKworICAgIGlu
dGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMiwKKyAgICAg
ICAgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhLAorICAgICAgICBDb25zdHJ1Y3Rv
clRlbXBsYXRlPUV2ZW50IAorICAgIF0gTWVkaWFLZXlOZWVkZWRFdmVudCA6IEV2ZW50IHsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVpbnQ4QXJyYXkgaW5pdERhdGE7CisgICAgfTsKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVNlc3Npb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3MDgzOTM3MGNlMjYyNGNlMTJkOTA0MGY0
MjRlZDViNDkyYTYzMzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTAsMCArMSwyMjMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlTZXNzaW9u
LmgiCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjaW5jbHVkZSAiQ0RNLmgi
CisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgorI2lu
Y2x1ZGUgIk1lZGlhS2V5RXJyb3IuaCIKKyNpbmNsdWRlICJNZWRpYUtleU1lc3NhZ2VFdmVudC5o
IgorI2luY2x1ZGUgIk1lZGlhS2V5cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NS
ZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleVNlc3Npb246OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBNZWRpYUtleXMqIGtleXMsIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1lZGlhS2V5U2Vzc2lvbihjb250ZXh0LCBrZXlzLCBrZXlTeXN0ZW0sIHNlc3Npb25JZCkp
OworfQorCitNZWRpYUtleVNlc3Npb246Ok1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBNZWRpYUtleXMqIGtleXMsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
LCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKKyAgICA6IG1fa2V5cyhrZXlzKQorICAgICwgbV9r
ZXlTeXN0ZW0oa2V5U3lzdGVtKQorICAgICwgbV9zZXNzaW9uSWQoc2Vzc2lvbklkKQorICAgICwg
bV9hc3luY0V2ZW50UXVldWUoR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSh0aGlzKSkKKyAgICAs
IG1fa2V5UmVxdWVzdFRpbWVyKHRoaXMsICZNZWRpYUtleVNlc3Npb246OmtleVJlcXVlc3RUaW1l
ckZpcmVkKQorICAgICwgbV9hZGRLZXlUaW1lcih0aGlzLCAmTWVkaWFLZXlTZXNzaW9uOjphZGRL
ZXlUaW1lckZpcmVkKQorICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCit7
Cit9CisKK01lZGlhS2V5U2Vzc2lvbjo6fk1lZGlhS2V5U2Vzc2lvbigpCit7CisgICAgY2xvc2Uo
KTsKK30KKwordm9pZCBNZWRpYUtleVNlc3Npb246OnNldEVycm9yKE1lZGlhS2V5RXJyb3IqIGVy
cm9yKQoreworICAgIG1fZXJyb3IgPSBlcnJvcjsKK30KKwordm9pZCBNZWRpYUtleVNlc3Npb246
OmNsb3NlKCkKK3sKKyAgICBpZiAobV9rZXlzKQorICAgICAgICBtX2tleXMtPmNkbSgpLT5jbGVh
cktleXNGcm9tU2Vzc2lvbklkKG1fc2Vzc2lvbklkKTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+
Y2FuY2VsQWxsRXZlbnRzKCk7Cit9CisKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZUtl
eVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEpCit7
CisgICAgbV9wZW5kaW5nS2V5UmVxdWVzdHMuYXBwZW5kKFBlbmRpbmdLZXlSZXF1ZXN0KG1pbWVU
eXBlLCBpbml0RGF0YSkpOworICAgIG1fa2V5UmVxdWVzdFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
K30KKwordm9pZCBNZWRpYUtleVNlc3Npb246OmtleVJlcXVlc3RUaW1lckZpcmVkKFRpbWVyPE1l
ZGlhS2V5U2Vzc2lvbj4qKQoreworICAgIEFTU0VSVChtX3BlbmRpbmdLZXlSZXF1ZXN0cy5zaXpl
KCkpOworICAgIGlmICghbV9rZXlzKQorICAgICAgICByZXR1cm47CisKKyAgICB3aGlsZSAoIW1f
cGVuZGluZ0tleVJlcXVlc3RzLmlzRW1wdHkoKSkgeworICAgICAgICBQZW5kaW5nS2V5UmVxdWVz
dCByZXF1ZXN0ID0gbV9wZW5kaW5nS2V5UmVxdWVzdHMudGFrZUZpcnN0KCk7CisKKyAgICAgICAg
Ly8gTk9URTogQ29udGludWVkIGZyb20gc3RlcCA1IGluIE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lv
bigpLgorICAgICAgICAvLyBUaGUgdXNlciBhZ2VudCB3aWxsIGFzeW5jaHJvbm91c2x5IGV4ZWN1
dGUgdGhlIGZvbGxvd2luZyBzdGVwcyBpbiB0aGUgdGFzazoKKworICAgICAgICAvLyAxLiBMZXQg
Y2RtIGJlIHRoZSBjZG0gbG9hZGVkIGluIHRoZSBNZWRpYUtleXMgY29uc3RydWN0b3IuCisgICAg
ICAgIC8vIDIuIExldCBkZXN0aW5hdGlvblVSTCBiZSBudWxsLgorICAgICAgICBTdHJpbmcgZGVz
dGluYXRpb25VUkw7CisgICAgICAgIE1lZGlhS2V5RXJyb3I6OkNvZGUgZXJyb3JDb2RlID0gMDsK
KyAgICAgICAgdW5zaWduZWQgbG9uZyBzeXN0ZW1Db2RlID0gMDsKKworICAgICAgICAvLyAzLiBV
c2UgY2RtIHRvIGdlbmVyYXRlIGEga2V5IHJlcXVlc3QgYW5kIGZvbGxvdyB0aGUgc3RlcHMgZm9y
IHRoZSBmaXJzdCBtYXRjaGluZyBjb25kaXRpb24gZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6CisK
KyAgICAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGtleVJlcXVlc3QgPSBtX2tleXMtPmNkbSgpLT5n
ZW5lcmF0ZUtleVJlcXVlc3QocmVxdWVzdC5taW1lVHlwZSwgcmVxdWVzdC5pbml0RGF0YS5nZXQo
KSwgbV9zZXNzaW9uSWQsIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOwor
CisgICAgICAgIC8vIE90aGVyd2lzZSBbaWYgYSByZXF1ZXN0IGlzIG5vdCBzdWNjZXNzZnVsbHkg
Z2VuZXJhdGVkXToKKyAgICAgICAgaWYgKCFrZXlSZXF1ZXN0KSB7CisgICAgICAgICAgICAvLyAz
LjEuIENyZWF0ZSBhIG5ldyBNZWRpYUtleUVycm9yIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcg
YXR0cmlidXRlczoKKyAgICAgICAgICAgIC8vICAgICAgY29kZSA9IHRoZSBhcHByb3ByaWF0ZSBN
ZWRpYUtleUVycm9yIGNvZGUKKyAgICAgICAgICAgIC8vICAgICAgc3lzdGVtQ29kZSA9IGEgS2V5
IFN5c3RlbS1zcGVjaWZpYyB2YWx1ZSwgaWYgcHJvdmlkZWQsIGFuZCAwIG90aGVyd2lzZQorICAg
ICAgICAgICAgUmVmUHRyPE1lZGlhS2V5RXJyb3I+IGVycm9yID0gTWVkaWFLZXlFcnJvcjo6Y3Jl
YXRlKGVycm9yQ29kZSwgc3lzdGVtQ29kZSkuZ2V0KCk7CisKKyAgICAgICAgICAgIC8vIDMuMi4g
U2V0IHRoZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0J3MgZXJyb3IgYXR0cmlidXRlIHRvIHRoZSBl
cnJvciBvYmplY3QgY3JlYXRlZCBpbiB0aGUgcHJldmlvdXMgc3RlcC4KKyAgICAgICAgICAgIHNl
dEVycm9yKGVycm9yLmdldCgpKTsKKworICAgICAgICAgICAgLy8gMy4zLiBxdWV1ZSBhIHRhc2sg
dG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBrZXllcnJvciBhdCB0aGUgTWVkaWFLZXlTZXNz
aW9uIG9iamVjdC4KKyAgICAgICAgICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXllcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAg
ICAgICAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgICAgIG1fYXN5bmNFdmVu
dFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQucmVsZWFzZSgpKTsKKworICAgICAgICAgICAgLy8g
My40LiBBYm9ydCB0aGUgdGFzay4KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisK
KyAgICAgICAgLy8gNC4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQg
a2V5bWVzc2FnZSBhdCB0aGUgbmV3IG9iamVjdAorICAgICAgICAvLyAgICBUaGUgZXZlbnQgaXMg
b2YgdHlwZSBNZWRpYUtleU1lc3NhZ2VFdmVudCBhbmQgaGFzOgorICAgICAgICAvLyAgICBtZXNz
YWdlID0ga2V5IHJlcXVlc3QKKyAgICAgICAgLy8gICAgZGVzdGluYXRpb25VUkwgPSBkZXN0aW5h
dGlvblVSTAorICAgICAgICBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQgaW5pdDsKKyAgICAgICAg
aW5pdC5idWJibGVzID0gZmFsc2U7CisgICAgICAgIGluaXQuY2FuY2VsYWJsZSA9IGZhbHNlOwor
ICAgICAgICBpbml0Lm1lc3NhZ2UgPSBrZXlSZXF1ZXN0OworICAgICAgICBpbml0LmRlc3RpbmF0
aW9uVVJMID0gZGVzdGluYXRpb25VUkw7CisgICAgICAgIFJlZlB0cjxNZWRpYUtleU1lc3NhZ2VF
dmVudD4gZXZlbnQgPSBNZWRpYUtleU1lc3NhZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53
ZWJraXRrZXltZXNzYWdlRXZlbnQsIGluaXQpOworICAgICAgICBldmVudC0+c2V0VGFyZ2V0KHRo
aXMpOworICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50KTsKKyAg
ICB9Cit9CisKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjphZGRLZXkoVWludDhBcnJheSoga2V5LCBF
eGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICAvLyBGcm9tIDxodHRwOi8vZHZjcy53My5vcmcvaGcv
aHRtbC1tZWRpYS9yYXctZmlsZS90aXAvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS5o
dG1sI2RvbS1hZGRrZXk+OgorICAgIC8vIFRoZSBhZGRLZXkoa2V5KSBtZXRob2QgbXVzdCBydW4g
dGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAvLyAxLiBJZiB0aGUgZmlyc3Qgb3Igc2Vjb25kIGFy
Z3VtZW50IFtzaWNdIGlzIG51bGwgb3IgYW4gZW1wdHkgYXJyYXksIHRocm93IGFuIElOVkFMSURf
QUNDRVNTX0VSUi4KKyAgICAvLyBOT1RFOiB0aGUgcmVmZXJlbmNlIHRvIGEgInNlY29uZCBhcmd1
bWVudCIgaXMgYSBzcGVjIGJ1Zy4KKyAgICBpZiAoIWtleSB8fCAha2V5LT5sZW5ndGgoKSkgewor
ICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIDIuIFNjaGVkdWxlIGEgdGFzayB0byBoYW5kbGUgdGhlIGNhbGwsIHByb3ZpZGlu
ZyBrZXkuCisgICAgbV9wZW5kaW5nS2V5cy5hcHBlbmQoa2V5KTsKKyAgICBtX2FkZEtleVRpbWVy
LnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBNZWRpYUtleVNlc3Npb246OmFkZEtleVRpbWVy
RmlyZWQoVGltZXI8TWVkaWFLZXlTZXNzaW9uPiopCit7CisgICAgQVNTRVJUKG1fcGVuZGluZ0tl
eXMuc2l6ZSgpKTsKKyAgICBpZiAoIW1fa2V5cykKKyAgICAgICAgcmV0dXJuOworCisgICAgd2hp
bGUgKCFtX3BlbmRpbmdLZXlzLmlzRW1wdHkoKSkgeworICAgICAgICBSZWZQdHI8VWludDhBcnJh
eT4gcGVuZGluZ0tleSA9IG1fcGVuZGluZ0tleXMudGFrZUZpcnN0KCk7CisgICAgICAgIHVuc2ln
bmVkIHNob3J0IGVycm9yQ29kZSA9IDA7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgc3lzdGVtQ29k
ZSA9IDA7CisKKyAgICAgICAgLy8gTk9URTogQ29udGludWVkIGZyb20gc3RlcCAyLiBvZiBNZWRp
YUtleVNlc3Npb246OmFkZEtleSgpCisgICAgICAgIC8vIDIuMS4gTGV0IGNkbSBiZSB0aGUgY2Rt
IGxvYWRlZCBpbiB0aGUgTWVkaWFLZXlzIGNvbnN0cnVjdG9yLgorICAgICAgICBDRE0qIGNkbSA9
IG1fa2V5cy0+Y2RtKCk7CisgICAgICAgIC8vIDIuMi4gTGV0ICdkaWQgc3RvcmUga2V5JyBiZSBm
YWxzZS4KKyAgICAgICAgYm9vbCBkaWRTdG9yZUtleSA9IGZhbHNlOworICAgICAgICAvLyAyLjMu
IExldCAnbmV4dCBtZXNzYWdlJyBiZSBudWxsLgorICAgICAgICBSZWZQdHI8VWludDhBcnJheT4g
bmV4dE1lc3NhZ2U7CisgICAgICAgIC8vIDIuNC4gVXNlIGNkbSB0byBoYW5kbGUga2V5LgorICAg
ICAgICBkaWRTdG9yZUtleSA9IGNkbS0+YWRkS2V5Rm9yU2Vzc2lvbklkKHBlbmRpbmdLZXkuZ2V0
KCksIG1fc2Vzc2lvbklkLCBuZXh0TWVzc2FnZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKKyAg
ICAgICAgLy8gMi41LiBJZiBkaWQgc3RvcmUga2V5IGlzIHRydWUgYW5kIHRoZSBtZWRpYSBlbGVt
ZW50IGlzIHdhaXRpbmcgZm9yIGEga2V5LCBxdWV1ZSBhIHRhc2sgdG8gYXR0ZW1wdCB0byByZXN1
bWUgcGxheWJhY2suCisgICAgICAgIC8vIFRPRE86IEZpbmQgYW5kIHJlc3RhcnQgdGhlIG1lZGlh
IGVsZW1lbnQKKworICAgICAgICAvLyAyLjYuIElmIG5leHQgbWVzc2FnZSBpcyBub3QgbnVsbCwg
cXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQga2V5bWVzc2FnZSBhdCB0
aGUgTWVkaWFLZXlTZXNzaW9uIG9iamVjdC4KKyAgICAgICAgLy8gICAgICBUaGUgZXZlbnQgaXMg
b2YgdHlwZSBNZWRpYUtleU1lc3NhZ2VFdmVudCBhbmQgaGFzOgorICAgICAgICAvLyAgICAgIG1l
c3NhZ2UgPSBuZXh0IG1lc3NhZ2UKKyAgICAgICAgLy8gICAgICBkZXN0aW5hdGlvblVSTCA9IG51
bGwKKyAgICAgICAgaWYgKG5leHRNZXNzYWdlKSB7CisgICAgICAgICAgICBNZWRpYUtleU1lc3Nh
Z2VFdmVudEluaXQgaW5pdDsKKyAgICAgICAgICAgIGluaXQuYnViYmxlcyA9IGZhbHNlOworICAg
ICAgICAgICAgaW5pdC5jYW5jZWxhYmxlID0gZmFsc2U7CisgICAgICAgICAgICBpbml0Lm1lc3Nh
Z2UgPSBuZXh0TWVzc2FnZTsKKyAgICAgICAgICAgIFJlZlB0cjxNZWRpYUtleU1lc3NhZ2VFdmVu
dD4gZXZlbnQgPSBNZWRpYUtleU1lc3NhZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJr
aXRrZXltZXNzYWdlRXZlbnQsIGluaXQpOworICAgICAgICAgICAgZXZlbnQtPnNldFRhcmdldCh0
aGlzKTsKKyAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gMi43LiBJZiBkaWQgc3RvcmUga2V5IGlzIHRydWUs
IHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGtleWFkZGVkIGF0IHRo
ZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0LgorICAgICAgICBpZiAoZGlkU3RvcmVLZXkpIHsKKyAg
ICAgICAgICAgIFJlZlB0cjxFdmVudD4ga2V5YWRkZWRFdmVudCA9IEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLndlYmtpdGtleWFkZGVkRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAg
ICBrZXlhZGRlZEV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgICAgICBtX2FzeW5jRXZl
bnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGtleWFkZGVkRXZlbnQpOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gMi44LiBJZiBhbnkgb2YgdGhlIHByZWNlZGluZyBzdGVwcyBpbiB0aGUgdGFzayBmYWls
ZWQKKyAgICAgICAgaWYgKCFkaWRTdG9yZUtleSkgeworICAgICAgICAgICAgLy8gMi44LjEuIENy
ZWF0ZSBhIG5ldyBNZWRpYUtleUVycm9yIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcgYXR0cmli
dXRlczoKKyAgICAgICAgICAgIC8vICAgICAgICBjb2RlID0gdGhlIGFwcHJvcHJpYXRlIE1lZGlh
S2V5RXJyb3IgY29kZQorICAgICAgICAgICAgLy8gICAgICAgIHN5c3RlbUNvZGUgPSBhIEtleSBT
eXN0ZW0tc3BlY2lmaWMgdmFsdWUsIGlmIHByb3ZpZGVkLCBhbmQgMCBvdGhlcndpc2UKKyAgICAg
ICAgICAgIFJlZlB0cjxNZWRpYUtleUVycm9yPiBlcnJvciA9IE1lZGlhS2V5RXJyb3I6OmNyZWF0
ZShlcnJvckNvZGUsIHN5c3RlbUNvZGUpLmdldCgpOworCisgICAgICAgICAgICAvLyAyLjguMi4g
U2V0IHRoZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0J3MgZXJyb3IgYXR0cmlidXRlIHRvIHRoZSBl
cnJvciBvYmplY3QgY3JlYXRlZCBpbiB0aGUgcHJldmlvdXMgc3RlcC4KKyAgICAgICAgICAgIHNl
dEVycm9yKGVycm9yLmdldCgpKTsKKworICAgICAgICAgICAgLy8gMi44LjMuIHF1ZXVlIGEgdGFz
ayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGtleWVycm9yIGF0IHRoZSBNZWRpYUtleVNl
c3Npb24gb2JqZWN0LgorICAgICAgICAgICAgUmVmUHRyPEV2ZW50PiBrZXllcnJvckV2ZW50ID0g
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0a2V5ZXJyb3JFdmVudCwgZmFsc2UsIGZh
bHNlKTsKKyAgICAgICAgICAgIGtleWVycm9yRXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAg
ICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoa2V5ZXJyb3JFdmVudC5yZWxl
YXNlKCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyAyLjguNC4gQWJvcnQgdGhlIHRh
c2suCisgICAgICAgICAgICAvLyBOT1RFOiBuby1vcAorICAgICAgICB9CisgICAgfQorfQorCitj
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhS2V5U2Vzc2lvbjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JNZWRpYUtleVNlc3Npb247
Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzM2MTA1YzhlODdh
MzhkMTU1Y2YzYzY2MTFjMjlkNDY5NGI0NzczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtMCwwICsx
LDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFLZXlTZXNzaW9uX2gKKyNkZWZpbmUg
TWVkaWFLZXlTZXNzaW9uX2gKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNs
dWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVWlu
dDhBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEdlbmVyaWNFdmVudFF1ZXVlOworY2xhc3MgTWVkaWFLZXlFcnJv
cjsKK2NsYXNzIE1lZGlhS2V5czsKKworY2xhc3MgTWVkaWFLZXlTZXNzaW9uIDogcHVibGljIFJl
ZkNvdW50ZWQ8TWVkaWFLZXlTZXNzaW9uPiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleVNlc3Npb24+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgTWVkaWFLZXlzKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkKTsKKyAgICB+TWVkaWFLZXlTZXNzaW9uKCk7CisKKyAgICBjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9CisgICAg
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQor
CisgICAgdm9pZCBzZXRFcnJvcihNZWRpYUtleUVycm9yKik7CisgICAgTWVkaWFLZXlFcnJvciog
ZXJyb3IoKSB7IHJldHVybiBtX2Vycm9yLmdldCgpOyB9CisKKyAgICB2b2lkIHNldEtleXMoTWVk
aWFLZXlzKiBrZXlzKSB7IG1fa2V5cyA9IGtleXM7IH0KKyAgICBNZWRpYUtleXMqIGtleXMoKSBj
b25zdCB7IHJldHVybiBtX2tleXM7IH0KKworICAgIHZvaWQgZ2VuZXJhdGVLZXlSZXF1ZXN0KGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhKTsKKyAgICB2b2lkIGFk
ZEtleShVaW50OEFycmF5KiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGNsb3NlKCk7
CisKKyAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhS2V5U2Vzc2lvbj46OnJlZjsKKyAgICB1c2lu
ZyBSZWZDb3VudGVkPE1lZGlhS2V5U2Vzc2lvbj46OmRlcmVmOworCisgICAgdm9pZCBlbnF1ZXVl
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOworCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUih3ZWJraXRrZXlhZGRlZCk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUih3ZWJraXRrZXllcnJvcik7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
Uih3ZWJraXRrZXltZXNzYWdlKTsKKworICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgp
IHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYo
KTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKSB7IHJl
dHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSog
ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9Cisg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KKworcHJvdGVjdGVk
OgorICAgIE1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWVkaWFLZXlz
KiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKKyAg
ICB2b2lkIGtleVJlcXVlc3RUaW1lckZpcmVkKFRpbWVyPE1lZGlhS2V5U2Vzc2lvbj4qKTsKKyAg
ICB2b2lkIGFkZEtleVRpbWVyRmlyZWQoVGltZXI8TWVkaWFLZXlTZXNzaW9uPiopOworCisgICAg
TWVkaWFLZXlzKiBtX2tleXM7CisgICAgU3RyaW5nIG1fa2V5U3lzdGVtOworICAgIFN0cmluZyBt
X3Nlc3Npb25JZDsKKyAgICBSZWZQdHI8TWVkaWFLZXlFcnJvcj4gbV9lcnJvcjsKKyAgICBPd25Q
dHI8R2VuZXJpY0V2ZW50UXVldWU+IG1fYXN5bmNFdmVudFF1ZXVlOworCisgICAgc3RydWN0IFBl
bmRpbmdLZXlSZXF1ZXN0IHsKKyAgICAgICAgUGVuZGluZ0tleVJlcXVlc3QoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEpIDogbWltZVR5cGUobWltZVR5cGUpLCBp
bml0RGF0YShpbml0RGF0YSkgeyB9CisgICAgICAgIFN0cmluZyBtaW1lVHlwZTsKKyAgICAgICAg
UmVmUHRyPFVpbnQ4QXJyYXk+IGluaXREYXRhOworICAgIH07CisgICAgRGVxdWU8UGVuZGluZ0tl
eVJlcXVlc3Q+IG1fcGVuZGluZ0tleVJlcXVlc3RzOworICAgIFRpbWVyPE1lZGlhS2V5U2Vzc2lv
bj4gbV9rZXlSZXF1ZXN0VGltZXI7CisKKyAgICBEZXF1ZTxSZWZQdHI8VWludDhBcnJheT4gPiBt
X3BlbmRpbmdLZXlzOworICAgIFRpbWVyPE1lZGlhS2V5U2Vzc2lvbj4gbV9hZGRLZXlUaW1lcjsK
KworcHJpdmF0ZToKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworfTsKKwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2VuZGlmIC8vIE1l
ZGlhS2V5U2Vzc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBjY2I3YTc0Mzhm
YjcwM2Q5NGJjYTQ4MmFhMzAzZDBlMGI2MTkyZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmlkbApAQCAtMCww
ICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICAgICAqLworCittb2R1bGUgZW5jcnlwdGVkbWVkaWEgeworCisgICAg
aW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyLAorICAg
ICAgICBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWEsCisgICAgICAgIEV2ZW50VGFy
Z2V0LAorICAgIF0gTWVkaWFLZXlTZXNzaW9uIHsKKyAgICAgICAgLy8gZXJyb3Igc3RhdGUKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhS2V5RXJyb3IgZXJyb3I7CisKKyAgICAgICAg
Ly8gc2Vzc2lvbiBwcm9wZXJ0aWVzCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcga2V5U3lzdGVtOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNlc3Np
b25JZDsKKworICAgICAgICAvLyBzZXNzaW9uIG9wZXJhdGlvbnMKKyAgICAgICAgdm9pZCBhZGRL
ZXkoaW4gVWludDhBcnJheSBrZXkpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
KyAgICAgICAgdm9pZCBjbG9zZSgpOworICAgICAgICAKKyAgICAgICAgLy8gRXZlbnRMaXN0ZW5l
cnMKKyAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFd
IEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXlhZGRlZDsKKyAgICAgICAgYXR0cmlidXRlIFtWOEVu
YWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXll
cnJvcjsKKyAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVk
aWFdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXltZXNzYWdlOworCisgICAgICAgIC8vIEV2ZW50
VGFyZ2V0IGludGVyZmFjZQorICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3Ry
aW5nIHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5l
ciBsaXN0ZW5lciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxd
IGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihp
biBET01TdHJpbmcgdHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBF
dmVudExpc3RlbmVyIGxpc3RlbmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgYm9vbGVhbiBkaXNw
YXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlv
bik7CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDEzODZkMmFhMTUxZmIxNTAwNGNiYjhm
YzIzZWUwMGZiZDFmMjgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhS2V5cy5oIgorCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIkNETS5oIgorI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJNZWRpYUtleU1lc3NhZ2VFdmVudC5oIgorI2luY2x1
ZGUgIk1lZGlhS2V5U2Vzc2lvbi5oIgorI2luY2x1ZGUgIlVVSUQuaCIKKyNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWVkaWFLZXlz
PiBNZWRpYUtleXM6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgLy8gRnJvbSA8aHR0cDovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEv
cmF3LWZpbGUvdGlwL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEuaHRtbCNkb20tbWVk
aWEta2V5cy1jb25zdHJ1Y3Rvcj46CisgICAgLy8gVGhlIE1lZGlhS2V5cyhrZXlTeXN0ZW0pIGNv
bnN0cnVjdG9yIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisKKyAgICAvLyAxLiBJZiBr
ZXlTeXN0ZW0gaXMgbnVsbCBvciBhbiBlbXB0eSBzdHJpbmcsIHRocm93IGFuIElOVkFMSURfQUND
RVNTX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmIChrZXlTeXN0
ZW0uaXNOdWxsKCkgfHwga2V5U3lzdGVtLmlzRW1wdHkoKSkgeworICAgICAgICBlYyA9IElOVkFM
SURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gMi4gSWYg
a2V5U3lzdGVtIGlzIG5vdCBvbmUgb2YgdGhlIHVzZXIgYWdlbnQncyBzdXBwb3J0ZWQgS2V5IFN5
c3RlbXMsIHRocm93IGEgTk9UX1NVUFBPUlRFRF9FUlIgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgor
ICAgIGlmICghQ0RNOjpzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKSB7CisgICAgICAgIGVj
ID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8v
IDMuIExldCBjZG0gYmUgdGhlIGNvbnRlbnQgZGVjcnlwdGlvbiBtb2R1bGUgY29ycmVzcG9uZGlu
ZyB0byBrZXlTeXN0ZW0uCisgICAgLy8gNC4gTG9hZCBjZG0gaWYgbmVjZXNzYXJ5LgorICAgIE93
blB0cjxDRE0+IGNkbSA9IENETTo6Y3JlYXRlKGtleVN5c3RlbSk7CisKKyAgICAvLyA1LiBDcmVh
dGUgYSBuZXcgTWVkaWFLZXlzIG9iamVjdC4KKyAgICAvLyA1LjEgTGV0IHRoZSBrZXlTeXN0ZW0g
YXR0cmlidXRlIGJlIGtleVN5c3RlbS4KKyAgICAvLyA2LiBSZXR1cm4gdGhlIG5ldyBvYmplY3Qg
dG8gdGhlIGNhbGxlci4KKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhS2V5cyhrZXlTeXN0
ZW0sIGNkbS5yZWxlYXNlKCkpKTsKK30KKworTWVkaWFLZXlzOjpNZWRpYUtleXMoY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIFBhc3NPd25QdHI8Q0RNPiBjZG0pCisgICAgOiBtX2tleVN5c3RlbShr
ZXlTeXN0ZW0pCisgICAgLCBtX2NkbShjZG0pCit7Cit9CisKK01lZGlhS2V5czo6fk1lZGlhS2V5
cygpCit7CisgICAgLy8gRnJvbSA8aHR0cDovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3
LWZpbGUvdGlwL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEuaHRtbCNkb20tbWVkaWEt
a2V5cy1jb25zdHJ1Y3Rvcj46CisgICAgLy8gV2hlbiBkZXN0cm95aW5nIGEgTWVkaWFLZXlzIG9i
amVjdCwgZm9sbG93IHRoZSBzdGVwcyBpbiBjbG9zZSgpLgorICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9zZXNzaW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBtX3Nlc3Npb25zW2ldLT5j
bG9zZSgpOworICAgICAgICBtX3Nlc3Npb25zW2ldLT5zZXRLZXlzKDApOworICAgIH0KK30KKwor
UGFzc1JlZlB0cjxNZWRpYUtleVNlc3Npb24+IE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHR5cGUsIFVpbnQ4QXJy
YXkqIGluaXREYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICAvLyBGcm9tIDxodHRwOi8v
ZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS90aXAvZW5jcnlwdGVkLW1lZGlhL2Vu
Y3J5cHRlZC1tZWRpYS5odG1sI2RvbS1jcmVhdGVzZXNzaW9uPjoKKyAgICAvLyBUaGUgY3JlYXRl
U2Vzc2lvbih0eXBlLCBpbml0RGF0YSkgbWV0aG9kIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3Rl
cHM6CisgICAgLy8gTm90ZTogVGhlIGNvbnRlbnRzIG9mIGluaXREYXRhIGFyZSBjb250YWluZXIt
c3BlY2lmaWMgSW5pdGlhbGl6YXRpb24gRGF0YS4KKworICAgIC8vIDEuIElmIHR5cGUgaXMgbnVs
bCBvciBhbiBlbXB0eSBzdHJpbmcgYW5kIGluaXREYXRhIGlzIG5vdCBudWxsIG9yIGFuIGVtcHR5
IHN0cmluZywgdGhyb3cgYW4KKyAgICAvLyBJTlZBTElEX0FDQ0VTU19FUlIgZXhjZXB0aW9uIGFu
ZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoKHR5cGUuaXNOdWxsKCkgfHwgdHlwZS5pc0Vt
cHR5KCkpICYmICghaW5pdERhdGEgfHwgaW5pdERhdGEtPmxlbmd0aCgpKSkgeworICAgICAgICBl
YyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAg
Ly8gMi4gSWYgdHlwZSBjb250YWlucyBhIE1JTUUgdHlwZSB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQg
b3IgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUga2V5U3lzdGVtLCB0aHJvdworICAgIC8vIGEgTk9U
X1NVUFBPUlRFRF9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAo
IXR5cGUuaXNOdWxsKCkgJiYgIXR5cGUuaXNFbXB0eSgpICYmICFtX2NkbS0+c3VwcG9ydHNNSU1F
VHlwZSh0eXBlKSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyAzLiBDcmVhdGUgYSBuZXcgTWVkaWFLZXlTZXNzaW9u
IG9iamVjdC4KKyAgICAvLyAzLjEgTGV0IHRoZSBrZXlTeXN0ZW0gYXR0cmlidXRlIGJlIGtleVN5
c3RlbS4KKyAgICAvLyAzLjIgTGV0IHRoZSBzZXNzaW9uSWQgYXR0cmlidXRlIGJlIGEgdW5pcXVl
IFNlc3Npb24gSUQgc3RyaW5nLiBJdCBtYXkgYmUgZ2VuZXJhdGVkIGJ5IGNkbS4KKyAgICBSZWZQ
dHI8TWVkaWFLZXlTZXNzaW9uPiBzZXNzaW9uID0gTWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUoY29u
dGV4dCwgdGhpcywga2V5U3lzdGVtKCksIG1fY2RtLT5nZW5lcmF0ZVNlc3Npb25JZCgpKTsKKwor
ICAgIC8vIDQuIEFkZCB0aGUgbmV3IG9iamVjdCB0byBhbiBpbnRlcm5hbCBsaXN0IG9mIHNlc3Np
b24gb2JqZWN0cy4KKyAgICBtX3Nlc3Npb25zLmFwcGVuZChzZXNzaW9uKTsKKworICAgIC8vIDUu
IFNjaGVkdWxlIGEgdGFzayB0byBnZW5lcmF0ZSBhIGtleSByZXF1ZXN0LCBwcm92aWRpbmcgdHlw
ZSwgaW5pdERhdGEsIGFuZCB0aGUgbmV3IG9iamVjdC4KKyAgICBzZXNzaW9uLT5nZW5lcmF0ZUtl
eVJlcXVlc3QodHlwZSwgaW5pdERhdGEpOworCisgICAgLy8gNi4gUmV0dXJuIHRoZSBuZXcgb2Jq
ZWN0IHRvIHRoZSBjYWxsZXIuCisgICAgcmV0dXJuIHNlc3Npb247Cit9CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lOGFkYjc1ZjYxZTNjNmIyYWRhZDc1MGJjMzRkNjgyZmM5ZWUwN2Q5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleXMuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYUtl
eXNfaAorI2RlZmluZSBNZWRpYUtleXNfaAorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9W
MikKKworI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0RNOworY2xhc3MgTWVkaWFLZXlTZXNz
aW9uOworCitjbGFzcyBNZWRpYUtleXMgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUtleXM+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleXM+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgRXhjZXB0aW9uQ29kZSYpOworICAgIH5NZWRpYUtleXMoKTsKKwor
ICAgIFBhc3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0
YSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25z
dCB7IHJldHVybiBtX2tleVN5c3RlbTsgfQorICAgIENETSogY2RtKCkgeyByZXR1cm4gbV9jZG0u
Z2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIE1lZGlhS2V5cyhjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSwgUGFzc093blB0cjxDRE0+KTsKKworICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFLZXlTZXNz
aW9uPiA+IG1fc2Vzc2lvbnM7CisKKyAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CisgICAgT3duUHRy
PENETT4gbV9jZG07Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElB
X1YyKQorCisjZW5kaWYgLy8gTWVkaWFLZXlzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjQzOTEyZGU5
MDJjNzkwMmZjYzRmZjBiMTQyMTc1NTVhYWM1NWRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCkBAIC0wLDAgKzEs
MzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKyAKK21vZHVsZSBlbmNyeXB0ZWRtZWRpYSB7CisKKyAgICBpbnRlcmZh
Y2UgWworICAgICAgICBDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIsCisgICAgICAgIFY4
RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYSwKKyAgICAgICAgQ29uc3RydWN0b3IoaW4g
RE9NU3RyaW5nIGtleVN5c3RlbSksCisgICAgICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9u
LAorICAgIF0gTWVkaWFLZXlzIHsKKyAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIE1lZGlhS2V5U2Vzc2lvbiBjcmVhdGVTZXNzaW9uKGluIFtPcHRpb25hbD1EZWZhdWx0
SXNVbmRlZmluZWRdIERPTVN0cmluZyB0eXBlLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZp
bmVkXSBVaW50OEFycmF5IGluaXREYXRhKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBrZXlTeXN0ZW07Cisg
ICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggZGZmODMwZDUwMzg0OTJmZDJkZTQxMGNm
MjVmODMyOTM3MjIwMTAzOC4uZWRiMjJjMTg2ZmY5OWI3MmE0YTU0Y2Y1OGU4NWFiNDhjOGNhMzFm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTI1ODYsMyArMjU4Niw3IEBAIF9fWk43V2ViQ29y
ZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMTZzaG93QWx0ZXJuYXRpdmVzRVA2TlNWaWV3
UktOU185RmxvYXRSCiBfX1pON1dlYkNvcmUyNFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZUMxRVAx
OE5TVGV4dEFsdGVybmF0aXZlczhfTlNSYW5nZQogX19aTjdXZWJDb3JlMzJjb2xsZWN0RGljdGF0
aW9uVGV4dEFsdGVybmF0aXZlc0VQMThOU0F0dHJpYnV0ZWRTdHJpbmdSTjNXVEY2VmVjdG9ySU5T
XzI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlRUxtMEVFRQogI2VuZGlmCisKKyNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBX1YyKQorX19aTjdXZWJDb3JlM0NETTE4cmVnaXN0ZXJDRE1GYWN0b3J5
RVBGTjNXVEYxMFBhc3NPd25QdHJJTlNfMTlDRE1Qcml2YXRlSW50ZXJmYWNlRUVFUFMwX0VQRmJS
S05TMV82U3RyaW5nRUUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdhMjVlYWE4ODE0YWQ0ODU3MzMxYTZjNTNhNzY2
MzY2Y2QzYzIyZGMuLjgxZDM4OGQ5NTM0MTkwOGU3YzVkNDUwMmI2ODI2NmMxNmJlMDEyM2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTU4NTgsNiArNTg1OCw3IEBACiAJCUNBRTlGOTEwMTQ2NDQxRjAwMEMyNDVCMSAvKiBDU1NW
YXJpYWJsZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDQUU5RjkwRTE0NjQ0MUYwMDBDMjQ1QjEgLyogQ1NTVmFyaWFibGVWYWx1ZS5oICovOyB9
OwogCQlDRDEyN0RFRDE0RjMwOTdEMDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RF
QjE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0gKi87IH07CiAJ
CUNEMTI3REVFMTRGMzA5ODQwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxMjdERUExNEYz
MDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QxQjRBNjUxNjA3ODZBRTAwMjgy
REY5IC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEQzIxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5
TmVlZGVkRXZlbnQuY3BwICovOyB9OwogCQlDRDI3RjZFNTE0NTc2ODVBMDA3ODIwN0QgLyogSlNN
ZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNw
cCAqLzsgfTsKIAkJQ0QyN0Y2RTcxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZF
NjE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0QzN0Iz
OTgxNUMxQjk3MTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDM3QjM3NDE1QzFBN0UxMDA2
REM4OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcCAqLzsgfTsKQEAgLTU4NjgsNyArNTg2
OSwxOCBAQAogCQlDRDgyMDMwRDEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVu
SFVEV2luZG93Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEODIwMzA5MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyLm1tICovOyB9OwogCQlDRDgyMDMxMDEzOTVBQ0U3MDBGOTU2
QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwRTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5p
bWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQ0Q4MjAzMTExMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzBGMTM5NUFD
RTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi87IH07CisJCUNEQTk4REEzMTYw
MTQ2NDEwMEZFQTNCMSAvKiBKU01lZGlhS2V5RXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEOUIxNjAxMjhBNTAwRkVBM0IxIC8qIEpT
TWVkaWFLZXlFcnJvci5jcHAgKi87IH07CisJCUNEQTk4REQ4MTYwMjVCRUYwMEZFQTNCMSAvKiBN
ZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREE5OERENTE2MDI1QkVEMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdl
RXZlbnQuY3BwICovOyB9OworCQlDREE5OERERjE2MDI2QTM3MDBGRUEzQjEgLyogSlNNZWRpYUtl
eU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREE5OEREQjE2MDI2QTE4MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVu
dC5jcHAgKi87IH07CisJCUNEQTk4REUwMTYwMjZBMzcwMEZFQTNCMSAvKiBKU01lZGlhS2V5TmVl
ZGVkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RBOThEREQxNjAyNkExOTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAg
Ki87IH07CisJCUNEQTk4RTA0MTYwMzlFMUEwMEZFQTNCMSAvKiBKU01lZGlhS2V5cy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERDRTE2MDE1
OTc5MDBGRUEzQjEgLyogSlNNZWRpYUtleXMuY3BwICovOyB9OworCQlDREE5OEUwNjE2MDM5RTFG
MDBGRUEzQjEgLyogSlNNZWRpYUtleVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThERDAxNjAxNTk3OTAwRkVBM0IxIC8qIEpTTWVk
aWFLZXlTZXNzaW9uLmNwcCAqLzsgfTsKKwkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVBM0IxIC8qIENE
TS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5
OEUwOTE2MDNDRDU5MDBGRUEzQjEgLyogQ0RNLmNwcCAqLzsgfTsKKwkJQ0RBOThFMEQxNjAzRkU0
QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREE5OERDQTE2MDE1MDhBMDBGRUEzQjEgLyogTWVkaWFLZXlzLmNw
cCAqLzsgfTsKKwkJQ0RBOThFMEUxNjAzRkU1ODAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERD
NzE2MDE0RjJDMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmNwcCAqLzsgfTsKIAkJQ0RBQThE
MEExNEQ3MUIyRTAwNjFFQTYwIC8qIFBsYXRmb3JtQ2xvY2tDTS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUE4RDA4MTREMzg1NjAwMDYxRUE2MCAv
KiBQbGF0Zm9ybUNsb2NrQ00ubW0gKi87IH07CisJCUNEQzI2QjQwMTYwQThDQzYwMDI2NzU3QiAv
KiBNb2NrQ0RNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQzI2QjNDMTYwQTYyQjAwMDI2NzU3QiAvKiBNb2NrQ0RNLmNwcCAqLzsgfTsKKwkJQ0RD
MjZCNDExNjBBOENDRTAwMjY3NTdCIC8qIE1vY2tDRE0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzI2QjNEMTYwQTYyQjAwMDI2NzU3QiAvKiBNb2Nr
Q0RNLmggKi87IH07CiAJCUNERDUyNUQ3MTQ1QjZERDAwMDhEMjA0RCAvKiBKU0hUTUxNZWRpYUVs
ZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RGNjVDQ0MxNDVCNkFGRTAwQzRDN0FBIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3Rv
bS5jcHAgKi87IH07CiAJCUNERUE3NjMwMTQ2MDhBNTMwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2Nr
Q0EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RF
QTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi87IH07CiAJCUNE
RUE3NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MzIxNDYwQUUyOTAwOEIzMUYx
IC8qIENsb2NrR2VuZXJpYy5jcHAgKi87IH07CkBAIC0xMzIxMCw5ICsxMzIyMiwzOCBAQAogCQlD
RDgyMDMwOTEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29u
dHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZp
ZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViV2luZG93QW5pbWF0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzBGMTM5NUFDRTcwMEY5NTZDNiAv
KiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJXaW5kb3dBbmltYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQTk4RDlCMTYwMTI4QTUwMEZFQTNCMSAvKiBKU01lZGlhS2V5RXJyb3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYUtleUVycm9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEOUMxNjAxMjhBNTAwRkVBM0IxIC8qIEpT
TWVkaWFLZXlFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlh
S2V5RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQzIxNjAxNEVF
RTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTWVkaWFLZXlOZWVkZWRFdmVudC5jcHA7IHBhdGggPSBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREE5OERDMzE2MDE0RUVFMDBGRUEzQjEgLyogTWVkaWFLZXlOZWVkZWRF
dmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYUtleU5lZWRlZEV2
ZW50Lmg7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQzQxNjAxNEVFRTAwRkVBM0Ix
IC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE1lZGlh
S2V5TmVlZGVkRXZlbnQuaWRsOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eU5lZWRlZEV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQzcx
NjAxNEYyQzAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBNZWRpYUtleVNlc3Npb24uY3BwOyBwYXRoID0gTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREE5OERDODE2MDE0RjJDMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGlhS2V5U2Vzc2lvbi5oOyBwYXRoID0g
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQzkxNjAxNEY0MDAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lv
bi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTWVkaWFLZXlTZXNzaW9uLmlkbDsgcGF0aCA9
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQ0ExNjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBNZWRpYUtleXMuY3BwOyBw
YXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREE5OERDQjE2MDE1MDhBMDBGRUEzQjEgLyogTWVkaWFLZXlzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGlhS2V5cy5oOyBwYXRoID0gTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBOThEQ0MxNjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBuYW1lID0gTWVkaWFLZXlzLmlkbDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQ0Ux
NjAxNTk3OTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFLZXlzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBOThEQ0YxNjAxNTk3OTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFLZXlzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEQTk4REQwMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5U2Vzc2lv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5U2Vz
c2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REQxMTYwMTU5Nzkw
MEZFQTNCMSAvKiBKU01lZGlhS2V5U2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU01lZGlhS2V5U2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDREE5OERENTE2MDI1QkVEMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTWVkaWFLZXlNZXNzYWdlRXZlbnQu
Y3BwOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REQ2MTYwMjVCRUQwMEZFQTNC
MSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBNZWRpYUtleU1lc3NhZ2VFdmVudC5oOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleU1lc3NhZ2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REE5OERENzE2MDI1QkVFMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgbmFtZSA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbDsgcGF0aCA9IE1vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREE5OEREQjE2MDI2QTE4MDBGRUEzQjEgLyogSlNNZWRpYUtleU1l
c3NhZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5TWVzc2FnZUV2ZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEREMxNjAyNkExOTAwRkVB
M0IxIC8qIEpTTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUtl
eU1lc3NhZ2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERERDE2
MDI2QTE5MDBGRUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTTWVkaWFLZXlOZWVkZWRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQTk4RERFMTYwMjZBMTkwMEZFQTNCMSAvKiBKU01lZGlhS2V5TmVlZGVkRXZlbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUtleU5lZWRlZEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQTk4RTA5MTYwM0NENTkwMEZFQTNCMSAvKiBDRE0uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQ0RNLmNwcDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThFMEExNjAzQ0Q1OTAwRkVB
M0IxIC8qIENETS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDRE0uaDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RTBDMTYw
M0NGM0MwMEZFQTNCMSAvKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQUE4RDA3MTREMzg1NjAw
MDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGxhdGZvcm1DbG9ja0NNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
QUE4RDA4MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybUNsb2NrQ00ubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQkQ5M0JBMTMzM0JENEIwMDI1NzBFMyAvKiBmdWxsc2Ny
ZWVuUXVpY2tUaW1lLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlblF1
aWNrVGltZS5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQzI2QjNDMTYwQTYy
QjAwMDI2NzU3QiAvKiBNb2NrQ0RNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tDRE0uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREMyNkIzRDE2MEE2MkIwMDAyNjc1N0Ig
LyogTW9ja0NETS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ0RNLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEQzI2QjQyMTYwQThEQjAwMDI2NzU3QiAvKiBNZWRpYUtleUVycm9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhS2V5RXJyb3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDMjZCNDMxNjBBOERCMDAwMjY3NTdCIC8qIE1lZGlh
S2V5RXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhS2V5RXJyb3IuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRENFNUNEMDE0NjMzQkM5MDBENDdDQ0EgLyog
RXZlbnRUYXJnZXRGYWN0b3J5LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEV2ZW50VGFyZ2V0
RmFjdG9yeS5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTc2MkMxNDYwODIy
NDAwOEIzMUYxIC8qIENsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENs
b2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUE3NjJFMTQ2MDg0REUwMDhC
MzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUGxhdGZvcm1DbG9ja0NBLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE0MzYwLDYgKzE0NDAxLDcgQEAKIAkJMTRERkIzM0YwQTdERjc2MzAwMThGNzY5IC8qIERl
cml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJQ0RBOThEQ0QxNjAxNTE1QzAwRkVBM0IxIC8qIEVuY3J5cHRlZE1lZGlhICovLAogCQkJ
CUE4M0I3OTEwMENDQjAwMUIwMDBCMDgyNSAvKiBDb3JlICovLAogCQkJCUE4M0I3OTBFMENDQUZG
OTcwMDBCMDgyNSAvKiBDU1MgKi8sCiAJCQkJN0I3RjY4NkQxNTc2QkZBMTAwM0ZBQkYyIC8qIEVk
aXRpbmcgKi8sCkBAIC0xNTA0Myw2ICsxNTA4NSw4IEBACiAJCQkJQTdCRjdFREUxNEM5MTc1QTAw
MTQ0ODlEIC8qIEludGVybmFsU2V0dGluZ3MuaWRsICovLAogCQkJCUE3QkU3RUREMTRDOTE3NUEw
MDE0NDg5RCAvKiBNYWxsb2NTdGF0aXN0aWNzLmggKi8sCiAJCQkJQTdCRTdFREUxNEM5MTc1QTAw
MTQ0ODlEIC8qIE1hbGxvY1N0YXRpc3RpY3MuaWRsICovLAorCQkJCUNEQzI2QjNDMTYwQTYyQjAw
MDI2NzU3QiAvKiBNb2NrQ0RNLmNwcCAqLywKKwkJCQlDREMyNkIzRDE2MEE2MkIwMDAyNjc1N0Ig
LyogTW9ja0NETS5oICovLAogCQkJKTsKIAkJCXBhdGggPSB0ZXN0aW5nOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTE3NjgzLDYgKzE3NzI3LDggQEAKIAkJCQlFNDQ2MTM5QzBDRDYz
MzEwMDBGQURBNzUgLyogTWVkaWFFcnJvci5pZGwgKi8sCiAJCQkJMDdBNkQxRTkxNDkxMTM3NzAw
MDUxRDBDIC8qIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwICovLAogCQkJCTA3QTZEMUVBMTQ5
MTEzNzcwMDA1MUQwQyAvKiBNZWRpYUZyYWdtZW50VVJJUGFyc2VyLmggKi8sCisJCQkJQ0RDMjZC
NDIxNjBBOERCMDAwMjY3NTdCIC8qIE1lZGlhS2V5RXJyb3IuaCAqLywKKwkJCQlDREMyNkI0MzE2
MEE4REIwMDAyNjc1N0IgLyogTWVkaWFLZXlFcnJvci5pZGwgKi8sCiAJCQkJOUIyRjdDRjcxNDU2
MjEyMDAwN0Y4QjUwIC8qIE1pY3JvRGF0YUl0ZW1WYWx1ZS5jcHAgKi8sCiAJCQkJOUIyRjdDRjgx
NDU2MjEyMDAwN0Y4QjUwIC8qIE1pY3JvRGF0YUl0ZW1WYWx1ZS5oICovLAogCQkJCTEwNTk0NTcx
MTVCNDI4QzMwMDREMzdGRCAvKiBNaWNyb0RhdGFJdGVtVmFsdWUuaWRsICovLApAQCAtMTc3NDQs
NiArMTc3OTAsNyBAQAogCQk5NzExNDVGRTE0RUYwMDZFMDA2NzRGRDkgLyogTW9kdWxlcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0RBOThEQkQxNjAx
NEUwODAwRkVBM0IxIC8qIGVuY3J5cHRlZG1lZGlhICovLAogCQkJCTk3MTE0NUZGMTRFRjAwNzkw
MDY3NEZEOSAvKiBnZW9sb2NhdGlvbiAqLywKIAkJCQk5NzEyQTU1MzE1MDA0RTNDMDA0OEFGMTAg
LyogaW5kZXhlZGRiICovLAogCQkJCUIxQTk0MkREMTVCNUNFMjIwMEQ1MjVEMSAvKiBtZWRpYXNv
dXJjZSAqLywKQEAgLTIwOTQwLDYgKzIwOTg3LDQ1IEBACiAJCQluYW1lID0gYXVkaW87CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlDREE5OERCRDE2MDE0RTA4MDBGRUEzQjEg
LyogZW5jcnlwdGVkbWVkaWEgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCUNEQTk4REQ1MTYwMjVCRUQwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVu
dC5jcHAgKi8sCisJCQkJQ0RBOThERDYxNjAyNUJFRDAwRkVBM0IxIC8qIE1lZGlhS2V5TWVzc2Fn
ZUV2ZW50LmggKi8sCisJCQkJQ0RBOThERDcxNjAyNUJFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TWVz
c2FnZUV2ZW50LmlkbCAqLywKKwkJCQlDREE5OERDMjE2MDE0RUVFMDBGRUEzQjEgLyogTWVkaWFL
ZXlOZWVkZWRFdmVudC5jcHAgKi8sCisJCQkJQ0RBOThEQzMxNjAxNEVFRTAwRkVBM0IxIC8qIE1l
ZGlhS2V5TmVlZGVkRXZlbnQuaCAqLywKKwkJCQlDREE5OERDNDE2MDE0RUVFMDBGRUEzQjEgLyog
TWVkaWFLZXlOZWVkZWRFdmVudC5pZGwgKi8sCisJCQkJQ0RBOThEQ0ExNjAxNTA4QTAwRkVBM0Ix
IC8qIE1lZGlhS2V5cy5jcHAgKi8sCisJCQkJQ0RBOThEQ0IxNjAxNTA4QTAwRkVBM0IxIC8qIE1l
ZGlhS2V5cy5oICovLAorCQkJCUNEQTk4RENDMTYwMTUwOEEwMEZFQTNCMSAvKiBNZWRpYUtleXMu
aWRsICovLAorCQkJCUNEQTk4REM3MTYwMTRGMkMwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24u
Y3BwICovLAorCQkJCUNEQTk4REM4MTYwMTRGMkMwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24u
aCAqLywKKwkJCQlDREE5OERDOTE2MDE0RjQwMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmlk
bCAqLywKKwkJCQlDREE5OEUwOTE2MDNDRDU5MDBGRUEzQjEgLyogQ0RNLmNwcCAqLywKKwkJCQlD
REE5OEUwQTE2MDNDRDU5MDBGRUEzQjEgLyogQ0RNLmggKi8sCisJCQkJQ0RBOThFMEMxNjAzQ0Yz
QzAwRkVBM0IxIC8qIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oICovLAorCQkJ
KTsKKwkJCW5hbWUgPSBlbmNyeXB0ZWRtZWRpYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CisJCUNEQTk4RENEMTYwMTUxNUMwMEZFQTNCMSAvKiBFbmNyeXB0ZWRNZWRpYSAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0RBOThEOUIxNjAx
MjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5jcHAgKi8sCisJCQkJQ0RBOThEOUMxNjAx
MjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5oICovLAorCQkJCUNEQTk4RERCMTYwMjZB
MTgwMEZFQTNCMSAvKiBKU01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCAqLywKKwkJCQlDREE5OERE
QzE2MDI2QTE5MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5oICovLAorCQkJCUNE
QTk4REREMTYwMjZBMTkwMEZFQTNCMSAvKiBKU01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwICovLAor
CQkJCUNEQTk4RERFMTYwMjZBMTkwMEZFQTNCMSAvKiBKU01lZGlhS2V5TmVlZGVkRXZlbnQuaCAq
LywKKwkJCQlDREE5OERDRTE2MDE1OTc5MDBGRUEzQjEgLyogSlNNZWRpYUtleXMuY3BwICovLAor
CQkJCUNEQTk4RENGMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5cy5oICovLAorCQkJCUNE
QTk4REQwMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5U2Vzc2lvbi5jcHAgKi8sCisJCQkJ
Q0RBOThERDExNjAxNTk3OTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlTZXNzaW9uLmggKi8sCisJCQkp
OworCQkJbmFtZSA9IEVuY3J5cHRlZE1lZGlhOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKIAkJREY5QUZENkYxM0ZDMzFCMDAwMTVGRUI3IC8qIG9iamMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjIyNjgsNiArMjIzNTQsNyBAQAogCQkJ
CUE3NDBCNUE1MTRDOTM1QUIwMEE3N0ZBNCAvKiBKU0ludGVybmFsU2V0dGluZ3MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3NDBCNTk1MTRDOTM1QUIwMEE3N0ZBNCAvKiBKU01hbGxvY1N0YXRpc3Rp
Y3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxODE1QzFGMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJD
b3JlVGVzdFN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQzI2QjQxMTYwQThDQ0UwMDI2
NzU3QiAvKiBNb2NrQ0RNLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1OTIxLDYgKzI2MDA4LDcgQEAK
IAkJCQlBNzQwQjVBNzE0QzkzNUFGMDBBNzdGQTQgLyogSlNJbnRlcm5hbFNldHRpbmdzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE3NDBCNTk3MTRDOTM1QUYwMEE3N0ZBNCAvKiBKU01hbGxvY1N0
YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE4MTVDMUUxMzgzMTk4MzAwNTdBQUE0
IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREMyNkI0MDE2
MEE4Q0M2MDAyNjc1N0IgLyogTW9ja0NETS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI4NjY5LDYg
KzI4NzU3LDE2IEBACiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Q
b2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRGMUQxMUJGMTVGRjM3MjAwMDI2RTkwOCAvKiBQ
bGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5
OERBMzE2MDE0NjQxMDBGRUEzQjEgLyogSlNNZWRpYUtleUVycm9yLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUNEQTk4REQ4MTYwMjVCRUYwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OERERjE2MDI2QTM3MDBGRUEzQjEgLyogSlNNZWRp
YUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OERFMDE2MDI2QTM3
MDBGRUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUNEQTk4RTA0MTYwMzlFMUEwMEZFQTNCMSAvKiBKU01lZGlhS2V5cy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlDREE5OEUwNjE2MDM5RTFGMDBGRUEzQjEgLyogSlNNZWRpYUtleVNlc3Npb24uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVBM0IxIC8qIENETS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlDREE5OEUwRDE2MDNGRTRBMDBGRUEzQjEgLyogTWVkaWFLZXlz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4RTBFMTYwM0ZFNTgwMEZFQTNCMSAvKiBNZWRp
YUtleVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QxQjRBNjUxNjA3ODZBRTAwMjgy
REY5IC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudE5hbWVzLmluCmluZGV4IDllOWUwYzg2MzA3YWQwMGVjODY3YThiYTY3NjQwZTBmYTA1MDBl
NWUuLmFmZjU5ZTlhOGU2MzRjNGNhM2RmNWVjZjJlYjVkYjI3NzJkNmZkNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudE5hbWVzLmluCkBAIC00OCw0ICs0OCw2IEBAIERldmljZU9yaWVudGF0aW9uRXZlbnQg
Y29uZGl0aW9uYWw9REVWSUNFX09SSUVOVEFUSU9OCiBEZXZpY2VQcm94aW1pdHlFdmVudCBjb25k
aXRpb25hbD1QUk9YSU1JVFlfRVZFTlRTCiBPcmllbnRhdGlvbkV2ZW50IGludGVyZmFjZU5hbWU9
RXZlbnQsIGNvbmRpdGlvbmFsPU9SSUVOVEFUSU9OX0VWRU5UUwogTWVkaWFLZXlFdmVudCBjb25k
aXRpb25hbD1FTkNSWVBURURfTUVESUEKK01lZGlhS2V5TWVzc2FnZUV2ZW50IGNvbmRpdGlvbmFs
PUVOQ1JZUFRFRF9NRURJQV9WMgorTWVkaWFLZXlOZWVkZWRFdmVudCBjb25kaXRpb25hbD1FTkNS
WVBURURfTUVESUFfVjIKIFRyYWNrRXZlbnQgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IDc5MWJkNGVkYTVjYTM3YWY0
NTc4MzYzNDk3Nzk1MTMwNzRjMmQyZjQuLjk5ZDUwOGQyNmU4MmJmZGQ4ODg0NDBlNzFhYzNmY2Ew
MTlhNjcwMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAt
MTUsNiArMTUsNyBAQCBJREJUcmFuc2FjdGlvbiBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNF
CiBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBK
YXZhU2NyaXB0QXVkaW9Ob2RlIGNvbmRpdGlvbmFsPVdFQl9BVURJTwogTG9jYWxNZWRpYVN0cmVh
bSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KK01lZGlhS2V5U2Vzc2lvbiBjb25kaXRpb25hbD1F
TkNSWVBURURfTUVESUFfVjIKIE1lZGlhQ29udHJvbGxlciBjb25kaXRpb25hbD1WSURFTwogTWVk
aWFTb3VyY2UgY29uZGl0aW9uYWw9TUVESUFfU09VUkNFCiBNZWRpYVN0cmVhbSBjb25kaXRpb25h
bD1NRURJQV9TVFJFQU0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IDVmNTY3NDUxNzU0MmY2MzhmNTg3MGQzYWE2MzI1Y2IzY2E4MjQyYzQuLjI0OGMyNDVjNjY3
NThkODRlOGZiMjE4MDQzNjVkMDZkZWZiNzM1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtMTE2LDYgKzExNiwxMSBAQAogI2luY2x1ZGUgIk1lZGlhU291
cmNlUmVnaXN0cnkuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikK
KyNpbmNsdWRlICJNZWRpYUtleU5lZWRlZEV2ZW50LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlzLmgi
CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMTg0OSw2ICsxODU0LDI1IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJL
ZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlCiB9CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwgVWludDhBcnJheSogaW5pdERhdGEp
Cit7CisgICAgTWVkaWFLZXlOZWVkZWRFdmVudEluaXQgaW5pdGlhbGl6ZXI7CisgICAgaW5pdGlh
bGl6ZXIuaW5pdERhdGEgPSBpbml0RGF0YTsKKyAgICBpbml0aWFsaXplci5idWJibGVzID0gZmFs
c2U7CisgICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJsZSA9IGZhbHNlOworCisgICAgUmVmUHRyPEV2
ZW50PiBldmVudCA9IE1lZGlhS2V5TmVlZGVkRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Vi
a2l0bmVlZGtleUV2ZW50LCBpbml0aWFsaXplcik7CisgICAgZXZlbnQtPnNldFRhcmdldCh0aGlz
KTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7
Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TWVkaWFLZXlzKE1lZGlhS2V5cyogbWVk
aWFLZXlzKQoreworICAgIG1fbWVkaWFLZXlzID0gbWVkaWFLZXlzOworfQorI2VuZGlmCisKIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6cHJvZ3Jlc3NFdmVudFRpbWVyRmlyZWQoVGltZXI8SFRNTE1l
ZGlhRWxlbWVudD4qKQogewogICAgIEFTU0VSVChtX3BsYXllcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDgyMWUyMjg1YjQxY2RjZWIwNTYzN2NkY2I1MDE4NTg5
OGU1YmQ5ZDAuLjUzZTlkY2ExMjRiOGU1MDJiZDEwYTEyNTNjYjcyOTlhZDUwN2YzYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC02Niw2ICs2Niw5IEBAIGNsYXNz
IFdpZGdldDsKICNpZiBQTEFURk9STShNQUMpCiBjbGFzcyBEaXNwbGF5U2xlZXBEaXNhYmxlcjsK
ICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCitjbGFzcyBNZWRpYUtleXM7
CisjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIHR5cGVkZWYgUE9ESW50ZXJ2YWxU
cmVlPGRvdWJsZSwgVGV4dFRyYWNrQ3VlKj4gQ3VlSW50ZXJ2YWxUcmVlOwpAQCAtMTg4LDkgKzE5
MSwxNiBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJr
aXRrZXlhZGRlZCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRr
ZXllcnJvcik7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRrZXlt
ZXNzYWdlKTsKKyNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShF
TkNSWVBURURfTUVESUFfVjIpCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3
ZWJraXRuZWVka2V5KTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikK
KyAgICBNZWRpYUtleXMqIG1lZGlhS2V5cygpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFLZXlzLmdl
dCgpOyB9CisgICAgdm9pZCBzZXRNZWRpYUtleXMoTWVkaWFLZXlzKik7CisjZW5kaWYKKwogLy8g
Y29udHJvbHMKICAgICBib29sIGNvbnRyb2xzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250cm9s
cyhib29sKTsKQEAgLTQxOCw2ICs0MjgsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
bWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRh
LCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCkgT1ZFUlJJREU7CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUFfVjIpCisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5TmVl
ZGVkKE1lZGlhUGxheWVyKiwgVWludDhBcnJheSopOworI2VuZGlmCisKICAgICB2aXJ0dWFsIFN0
cmluZyBtZWRpYVBsYXllclJlZmVycmVyKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBT
dHJpbmcgbWVkaWFQbGF5ZXJVc2VyQWdlbnQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IENPUlNNb2RlIG1lZGlhUGxheWVyQ09SU01vZGUoKSBjb25zdCBPVkVSUklERTsKQEAgLTY3NCw2
ICs2ODgsMTAgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShNQUMpCiAgICAgT3duUHRyPERpc3Bs
YXlTbGVlcERpc2FibGVyPiBtX3NsZWVwRGlzYWJsZXI7CiAjZW5kaWYKKworI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUFfVjIpCisgICAgUmVmUHRyPE1lZGlhS2V5cz4gbV9tZWRpYUtleXM7Cisj
ZW5kaWYKIH07CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmlkbAppbmRleCBiNmEwYTYzNmYxNjUyNjVhYzE1NTE5YjQzNzViMjYz
Y2MyOWI2NjA5Li5jYjgyMzlmMTFmM2FmYjc5NWFlODFhZWJlNDFhNDdhMjk0NDVlNzM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKQEAgLTQ4LDYgKzQ4LDggQEAg
bW9kdWxlIGh0bWwgewogICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAjaWYgZGVmaW5l
ZChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEVfRU5DUllQVEVEX01FRElBCiAgICAg
RE9NU3RyaW5nIGNhblBsYXlUeXBlKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERP
TVN0cmluZyB0eXBlLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzTnVsbFN0cmluZywgVHJlYXROdWxs
QXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcga2V5
U3lzdGVtKTsKKyNlbGlmIGRlZmluZWQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJiYgRU5B
QkxFX0VOQ1JZUFRFRF9NRURJQV9WMgorICAgIERPTVN0cmluZyBjYW5QbGF5VHlwZShpbiBbT3B0
aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgdHlwZSwgaW4gW09wdGlvbmFsPURl
ZmF1bHRJc1VuZGVmaW5lZCwgVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRB
cz1OdWxsU3RyaW5nXSBET01TdHJpbmcga2V5U3lzdGVtKTsKICNlbHNlCiAgICAgRE9NU3RyaW5n
IGNhblBsYXlUeXBlKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0
eXBlKTsKICNlbmRpZgpAQCAtMTA2LDcgKzEwOCwxMCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgYXR0
cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIg
b253ZWJraXRrZXlhZGRlZDsKICAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1lbmNy
eXB0ZWRNZWRpYV0gRXZlbnRMaXN0ZW5lciBvbndlYmtpdGtleWVycm9yOwogICAgIGF0dHJpYnV0
ZSBbVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBFdmVudExpc3RlbmVyIG9ud2Vi
a2l0a2V5bWVzc2FnZTsKKyNlbmRpZgorI2lmIChkZWZpbmVkKEVOQUJMRV9FTkNSWVBURURfTUVE
SUEpICYmIEVOQUJMRV9FTkNSWVBURURfTUVESUEpIHx8IChkZWZpbmVkKEVOQUJMRV9FTkNSWVBU
RURfTUVESUFfVjIpICYmIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpCiAgICAgYXR0cmlidXRl
IFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJr
aXRuZWVka2V5OworICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1l
ZGlhXSBNZWRpYUtleXMgbWVkaWFLZXlzOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKEVOQUJMRV9W
SURFT19UUkFDSykgJiYgRU5BQkxFX1ZJREVPX1RSQUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5o
CmluZGV4IDkwZjQ0N2YwNWU1YTRmMGNhZDE0YjVjNDI5YmZiZmU4Yzg3MGQzMDQuLmIwYmY1Zjc2
NWQ1YTM4NjY2Nzk4YjA0OTM1NzViMmEwNjQwMjE4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFcnJv
ci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgTUVESUFfRVJSX05FVFdPUkss
CiAgICAgICAgIE1FRElBX0VSUl9ERUNPREUsCiAgICAgICAgIE1FRElBX0VSUl9TUkNfTk9UX1NV
UFBPUlRFRAotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKICAgICAgICAgLCBNRURJQV9F
UlJfRU5DUllQVEVECiAjZW5kaWYKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUVycm9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5pZGwK
aW5kZXggOGViOWQ1NDAyOTQ2NTAzNGRkNDNkZjgxOWZkZGNkMTE1MTY3Mjc1Mi4uZTNjZDhkMmE3
MWQ0ODk4OWNhMjE5N2E3M2Y4NDBmMTE5NTYzYWEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUVycm9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRXJy
b3IuaWRsCkBAIC0zMSw3ICszMSw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfTkVUV09SSyA9IDI7CiAgICAgICAgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgTUVESUFfRVJSX0RFQ09ERSA9IDM7CiAgICAgICAgICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgTUVESUFfRVJSX1NSQ19OT1RfU1VQUE9SVEVEID0gNDsKLSNpZiBkZWZpbmVkKEVO
QUJMRV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRV9FTkNSWVBURURfTUVESUEKKyNpZiAoZGVm
aW5lZChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEVfRU5DUllQVEVEX01FRElBKSB8
fCAoZGVmaW5lZChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAmJiBFTkFCTEVfRU5DUllQVEVE
X01FRElBX1YyKQogICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0VSUl9FTkNS
WVBURUQgPSA1OwogI2VuZGlmCiAgICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IHNob3J0IGNvZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXJy
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFcnJvci5oCmluZGV4IDEyYzczNmQ0
ODdhM2Y0YzA3MTY1YjRjNjUyOGVmZDk5OWNmNzVkZTIuLjQ5ZTM4NDNlMzI4YjM5MDg3OGU2NWUx
MmMxMWUwNjk1ZDk3MThkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFL
ZXlFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFcnJvci5oCkBAIC0y
Niw3ICsyNiw3IEBACiAjaWZuZGVmIE1lZGlhS2V5RXJyb3JfaAogI2RlZmluZSBNZWRpYUtleUVy
cm9yX2gKIAotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKIAogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTM1LDcgKzM1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYUtleUVycm9yIDogcHVibGljIFJl
ZkNvdW50ZWQ8TWVkaWFLZXlFcnJvcj4gewogcHVibGljOgotICAgIGVudW0gQ29kZSB7CisgICAg
ZW51bSB7CiAgICAgICAgIE1FRElBX0tFWUVSUl9VTktOT1dOID0gMSwKICAgICAgICAgTUVESUFf
S0VZRVJSX0NMSUVOVCwKICAgICAgICAgTUVESUFfS0VZRVJSX1NFUlZJQ0UsCkBAIC00MywxNSAr
NDMsMTggQEAgcHVibGljOgogICAgICAgICBNRURJQV9LRVlFUlJfSEFSRFdBUkVDSEFOR0UsCiAg
ICAgICAgIE1FRElBX0tFWUVSUl9ET01BSU4KICAgICB9OworICAgIHR5cGVkZWYgdW5zaWduZWQg
c2hvcnQgQ29kZTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5RXJyb3I+IGNyZWF0
ZShDb2RlIGNvZGUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUtleUVycm9yKGNvZGUpKTsg
fQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5RXJyb3I+IGNyZWF0ZShDb2RlIGNvZGUs
IHVuc2lnbmVkIGxvbmcgc3lzdGVtQ29kZSA9IDApIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRp
YUtleUVycm9yKGNvZGUsIHN5c3RlbUNvZGUpKTsgfQogCiAgICAgQ29kZSBjb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlOyB9CisgICAgdW5zaWduZWQgbG9uZyBzeXN0ZW1Db2RlKCkgeyByZXR1
cm4gbV9zeXN0ZW1Db2RlOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTWVkaWFLZXlFcnJv
cihDb2RlIGNvZGUpIDogbV9jb2RlKGNvZGUpIHsgfQorICAgIGV4cGxpY2l0IE1lZGlhS2V5RXJy
b3IoQ29kZSBjb2RlLCB1bnNpZ25lZCBsb25nIHN5c3RlbUNvZGUpIDogbV9jb2RlKGNvZGUpLCBt
X3N5c3RlbUNvZGUoc3lzdGVtQ29kZSkgeyB9CiAKICAgICBDb2RlIG1fY29kZTsKKyAgICB1bnNp
Z25lZCBsb25nIG1fc3lzdGVtQ29kZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFcnJvci5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhS2V5RXJyb3IuaWRsCmluZGV4IDU1YjliMDRkMGY3ZjU3M2UzOTQw
NmUyYTExMWI0NzZhYWQ5MmI4OTMuLmRmMWM4MTc4YTk5ZGYzM2Y1NzFhYjQ4N2YzZDM1OTYyNDA3
NGUxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFcnJvci5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUVycm9yLmlkbApAQCAtMjQsOCArMjQs
OSBAQAogICovCiAKIG1vZHVsZSBodG1sIHsKKwogICAgIGludGVyZmFjZSBbCi0gICAgICAgIENv
bmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQSwKKyAgICAgICAgQ29uZGl0aW9uYWw9RU5DUllQVEVE
X01FRElBfEVOQ1JZUFRFRF9NRURJQV9WMiwKICAgICAgICAgVjhFbmFibGVkQXRSdW50aW1lPWVu
Y3J5cHRlZE1lZGlhLCAKICAgICBdIE1lZGlhS2V5RXJyb3IgewogICAgICAgICBjb25zdCB1bnNp
Z25lZCBzaG9ydCBNRURJQV9LRVlFUlJfVU5LTk9XTiA9IDE7CkBAIC0zNSw1ICszNiw2IEBAIG1v
ZHVsZSBodG1sIHsKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfS0VZRVJSX0hB
UkRXQVJFQ0hBTkdFID0gNTsKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfS0VZ
RVJSX0RPTUFJTiA9IDY7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9y
dCBjb2RlOworICAgICAgICBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyXSByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBzeXN0ZW1Db2RlOwogICAgIH07CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggOTY0OWFhOTMxOGMzNTBiYjQxMGIyOWUwY2Q4NTI0NzBm
MzQxMzlmNy4uYTQ5YzVjYmE1ZDM5NWFmOTljZDk2ODZkMzBjZGYzODY0MGE1OTRhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtNDc4LDYgKzQ3OCwxMCBAQCBtb2R1bGUgd2luZG93
IHsKIAogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQSwgVjhF
bmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBNZWRpYUtleUVycm9yQ29uc3RydWN0b3Ig
TWVkaWFLZXlFcnJvcjsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1FTkNSWVBURURf
TUVESUEsIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gTWVkaWFLZXlFdmVudENv
bnN0cnVjdG9yIE1lZGlhS2V5RXZlbnQ7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9
RU5DUllQVEVEX01FRElBX1YyLCBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIE1l
ZGlhS2V5c0NvbnN0cnVjdG9yIE1lZGlhS2V5czsKKyAgICAgICAgYXR0cmlidXRlIFtDb25kaXRp
b25hbD1FTkNSWVBURURfTUVESUFfVjIsIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRp
YV0gTWVkaWFLZXlFcnJvckNvbnN0cnVjdG9yIE1lZGlhS2V5RXJyb3I7CisgICAgICAgIGF0dHJp
YnV0ZSBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyLCBWOEVuYWJsZWRBdFJ1bnRpbWU9
ZW5jcnlwdGVkTWVkaWFdIE1lZGlhS2V5TWVzc2FnZUV2ZW50Q29uc3RydWN0b3IgTWVkaWFLZXlN
ZXNzYWdlRXZlbnQ7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01F
RElBX1YyLCBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIE1lZGlhS2V5TmVlZGVk
RXZlbnRDb25zdHJ1Y3RvciBNZWRpYUtleU5lZWRlZEV2ZW50OwogCiAgICAgICAgIGF0dHJpYnV0
ZSBbQ29uZGl0aW9uYWw9VklERU9fVFJBQ0ssIFY4RW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRl
b1RyYWNrXSBIVE1MVHJhY2tFbGVtZW50Q29uc3RydWN0b3IgSFRNTFRyYWNrRWxlbWVudDsKICAg
ICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1WSURFT19UUkFDSywgVjhFbmFibGVkQXRSdW50
aW1lPXdlYmtpdFZpZGVvVHJhY2tdIFRleHRUcmFja0NvbnN0cnVjdG9yIFRleHRUcmFjazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRl
eCA0NzgzNGQ1YWIxNWMxNTZlYjY2MmJjMGY4ZTBiYTVhMmRiYjYwMGMzLi4xMmUzZmM1YmMzODc5
Njk3ZmM1NWFiNmQwMzVmNzkxYjBlNWEwZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgc3RhdGlj
IE1lZGlhUGxheWVyRmFjdG9yeSogYmVzdE1lZGlhRW5naW5lRm9yVHlwZUFuZENvZGVjcyhjb25z
dCBTdHJpbmcmIHR5cGUsIGMKICAgICAgICAgICAgICAgICBjdXJyZW50ID0gMDsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQog
ICAgICAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIGVuZ2luZVN1cHBvcnQgPSBlbmdpbmVz
W25keF0tPnN1cHBvcnRzVHlwZUFuZENvZGVjcyh0eXBlLCBjb2RlY3MsIGtleVN5c3RlbSwgdXJs
KTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShrZXlTeXN0ZW0pOwpAQCAtNzg5LDcgKzc4
OSw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlw
ZShjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5CiAgICAgVU5VU0VEX1BBUkFNKGNsaWVudCk7
CiAjZW5kaWYKIAotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKICAgICByZXR1cm4gZW5n
aW5lLT5zdXBwb3J0c1R5cGVBbmRDb2RlY3ModHlwZSwgdHlwZUNvZGVjcywgc3lzdGVtLCB1cmwp
OwogI2Vsc2UKICAgICBBU1NFUlQoc3lzdGVtLmlzRW1wdHkoKSk7CkBAIC0xMDg1LDYgKzEwODUs
MTQgQEAgdm9pZCBNZWRpYVBsYXllcjo6a2V5TmVlZGVkKGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
LCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY28KIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQV9WMikKK3ZvaWQgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChVaW50OEFycmF5
KiBpbml0RGF0YSkKK3sKKyAgICBpZiAobV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgbV9t
ZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJLZXlOZWVkZWQodGhpcywgaW5pdERhdGEpOwor
fQorI2VuZGlmCisKIFN0cmluZyBNZWRpYVBsYXllcjo6cmVmZXJyZXIoKSBjb25zdAogewogICAg
IGlmICghbV9tZWRpYVBsYXllckNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDYwODc2ZTYzODViYjk1ODA2NjUwMjcwMmY4M2Y2
MjRiMzE4ZTE1OWMuLjQwODFhODg2NTg5NzI3NmZmZTcwZWVjOWFkODY2NTU2MTAzMTNiMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAt
MTkwLDYgKzE5MCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5
TmVlZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbml0RGF0YSwgdW5zaWduZWQgaW5p
dERhdGFMZW5ndGgpIHsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1Yy
KQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChNZWRpYVBsYXllciosIFVp
bnQ4QXJyYXkqKSB7IH0KKyNlbmRpZgorICAgIAogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxh
eWVyUmVmZXJyZXIoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgU3Ry
aW5nIG1lZGlhUGxheWVyVXNlckFnZW50KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAg
ICB2aXJ0dWFsIENPUlNNb2RlIG1lZGlhUGxheWVyQ09SU01vZGUoKSBjb25zdCB7IHJldHVybiBV
bnNwZWNpZmllZDsgfQpAQCAtNDE1LDYgKzQxOSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBrZXlO
ZWVkZWQoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBj
b25zdCB1bnNpZ25lZCBjaGFyKiBpbml0RGF0YSwgdW5zaWduZWQgaW5pdERhdGFMZW5ndGgpOwog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIHZvaWQga2V5TmVl
ZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKTsKKyNlbmRpZgorCiAgICAgU3RyaW5nIHJlZmVycmVy
KCkgY29uc3Q7CiAgICAgU3RyaW5nIHVzZXJBZ2VudCgpIGNvbnN0OwogCkBAIC00NTMsNyArNDYx
LDcgQEAgcHJpdmF0ZToKIAogdHlwZWRlZiBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUlu
dGVyZmFjZT4gKCpDcmVhdGVNZWRpYUVuZ2luZVBsYXllcikoTWVkaWFQbGF5ZXIqKTsKIHR5cGVk
ZWYgdm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMpKEhhc2hTZXQ8U3RyaW5nPiYgdHlw
ZXMpOwotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKIHR5cGVkZWYgTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSAoKk1lZGlhRW5naW5lU3VwcG9ydHNUeXBlKShjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3Qg
S1VSTCYgdXJsKTsKICNlbHNlCiB0eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpN
ZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IGNvZGVjcywgY29uc3QgS1VSTCYgdXJsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCBkNDRh
MzBjNzMyMDM3MmEzZGQyMjU3Mzc0YTUzYWUyM2MyODM4ODY5Li4xMWI2MTkxMjQ2ZmRmZTM0YThl
NjkxZTdlZDYwOTg4MDc5YzgwNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC02Myw2ICs2
MywxMCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3Vw
cG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7CiAgICAgc3RhdGljIE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwmKTsKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
X1YyKQorICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIGV4dGVuZGVkU3VwcG9y
dHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJik7CisjZW5kaWYKKwogICAgIHN0YXRpYyBib29s
IGlzQXZhaWxhYmxlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsTG9hZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KaW5kZXggY2Y3NWQwY2Y2Y2ZkNzYwOGFkNzFkNjc3ZjQ2ZjFlNzY5ODc4
YTM2Ni4uZWViYWYxZWJkMjRkNzVjODczMTdiMTI1OTBkODU3NTViZGQ3NTE5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCkBAIC0xMzIsNyArMTMyLDExIEBAIFBhc3NPd25QdHI8TWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYWNlPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpj
cmVhCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVk
aWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpc0F2
YWlsYWJsZSgpKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisgICAgICAgIHJlZ2lz
dHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5cGVzLCBleHRlbmRlZFN1cHBvcnRzVHlwZSwgMCwg
MCwgMCk7CisjZWxzZQogICAgICAgICByZWdpc3RyYXIoY3JlYXRlLCBnZXRTdXBwb3J0ZWRUeXBl
cywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwKTsKKyNlbmRpZgogfQogCiBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKE1l
ZGlhUGxheWVyKiBwbGF5ZXIpCkBAIC03MjUsNiArNzI5LDE3IEBAIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3VwcG9ydHNUeXBl
KGNvbnN0CiAgICAgcmV0dXJuIFtBVlVSTEFzc2V0IGlzUGxheWFibGVFeHRlbmRlZE1JTUVUeXBl
OnR5cGVTdHJpbmddID8gTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6Ok1h
eUJlU3VwcG9ydGVkOzsKIH0KIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCitNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OmV4dGVuZGVkU3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBj
b2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJiB1cmwpCit7CisgICAg
Ly8gQVZGb3VuZGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgYW55IGVuY3J5dHBlZCBtZWRpYSwgc28g
cmV0dXJuIElzTm90U3VwcG9ydGVkIGlmIHRoZSBrZXlTeXN0ZW0gaXMgbm9uLU5VTEw6CisgICAg
aWYgKCFrZXlTeXN0ZW0uaXNOdWxsKCkgJiYgIWtleVN5c3RlbS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisKKyAgICByZXR1cm4gc3VwcG9y
dHNUeXBlKHR5cGUsIGNvZGVjcywgdXJsKTs7Cit9CisjZW5kaWYKKwogYm9vbCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjppc0F2YWlsYWJsZSgpCiB7CiAgICAgcmV0dXJuIEFW
Rm91bmRhdGlvbkxpYnJhcnkoKSAmJiBDb3JlTWVkaWFMaWJyYXJ5KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclBy
aXZhdGVRVEtpdC5oCmluZGV4IDQzNjE2MDcxODIxYjlmYjdhODViNTYyNzYyYjUxNTNhZTI4ZTI5
M2IuLjZlYjFiN2RiOTM4NDJjMTE3MjZiNTU2NzZlOTU1NjliNmFhNTllMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVR
VEtpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5oCkBAIC03Niw2ICs3NiwxMCBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxh
eWVyKik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+
JiB0eXBlcyk7CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNU
eXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwm
KTsKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIHN0YXRpYyBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlIGV4dGVuZGVkU3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJM
Jik7CisjZW5kaWYKKwogICAgIHN0YXRpYyB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3Rv
cjxTdHJpbmc+Jik7CiAgICAgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlKCk7CiAgICAgc3Rh
dGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZh
dGVRVEtpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5tbQppbmRleCAyZTg0OWFmNjFjOGE0YjM4M2MxNmU3ODc3Y2ZiYTQw
YjIzOGI2ZjhkLi40YzY2Nzc0OWY4ZjYxNDY1NTQ0NTVlMjhlODAxMzkyYmVhNGJkNzE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCkBAIC0xOTAsNyArMTkwLDExIEBAIFBhc3NPd25Q
dHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y3JlYXRlKE1lZGlhUGxhCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpyZWdpc3Rlck1l
ZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNB
dmFpbGFibGUoKSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgICAgICByZWdp
c3RyYXIoY3JlYXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywgZXh0ZW5kZWRTdXBwb3J0c1R5cGUsIGdl
dFNpdGVzSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvclNp
dGUpOworI2Vsc2UKICAgICAgICAgcmVnaXN0cmFyKGNyZWF0ZSwgZ2V0U3VwcG9ydGVkVHlwZXMs
IHN1cHBvcnRzVHlwZSwgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xl
YXJNZWRpYUNhY2hlRm9yU2l0ZSk7CisjZW5kaWYKIH0KIAogTWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0KE1lZGlhUGxheWVyKiBwbGF5ZXIpCkBAIC0xNTE4
LDYgKzE1MjIsMTcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHkKICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6OklzTm90U3VwcG9ydGVkOwogfQogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9W
MikKK01lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmV4
dGVuZGVkU3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2Rl
Y3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJiB1cmwpCit7CisgICAgLy8g
UVRLaXQgZG9lcyBub3Qgc3VwcG9ydCBhbnkgZW5jcnl0cGVkIG1lZGlhLCBzbyByZXR1cm4gSXNO
b3RTdXBwb3J0ZWQgaWYgdGhlIGtleVN5c3RlbSBpcyBub24tTlVMTDoKKyAgICBpZiAoIWtleVN5
c3RlbS5pc051bGwoKSAmJiAha2V5U3lzdGVtLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKworICAgIHJldHVybiBzdXBwb3J0c1R5cGUodHlw
ZSwgY29kZWNzLCB1cmwpOzsKK30KKyNlbmRpZgorCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0Ojppc0F2YWlsYWJsZSgpCiB7CiAgICAgLy8gT24gMTAuNSBhbmQgaGlnaGVyLCBRdWlja1Rp
bWUgd2lsbCBhbHdheXMgYmUgbmV3IGVub3VnaCBmb3IgPHZpZGVvPiBhbmQgPGF1ZGlvPiBzdXBw
b3J0LCBzbyB3ZSBqdXN0IGNoZWNrIHRoYXQgdGhlIGZyYW1ld29yayBjYW4gYmUgbG9hZGVkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDNhZmIzMzQ3YWVkMWI1NTQ2YmEx
ZTA0ZWRiYzIxYWM1ZTI0MWEwNGUuLmRiMGVlYmEwMDE2NWE1N2NhZDYzNzcyYzBiMzcxMGM5NjE0
YTkyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEwMSw2ICsxMDEs
MTEgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKICNlbmRpZgogCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKyNpbmNsdWRlICJDRE0uaCIKKyNpbmNsdWRlICJNb2Nr
Q0RNLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwpAQCAtMTI1Myw0ICsxMjU4LDExIEBAIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlz
dD4gSW50ZXJuYWxzOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCkgY29uc3QKICAgICByZXR1cm4g
c3RyaW5nTGlzdC5yZWxlYXNlKCk7CiB9CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1Yy
KQordm9pZCBJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RNKCkKK3sKKyAgICBDRE06OnJlZ2lz
dGVyQ0RNRmFjdG9yeShNb2NrQ0RNOjpjcmVhdGUsIE1vY2tDRE06OnN1cHBvcnRzS2V5U3l0ZW0p
OworfQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGQyZDQ1
MmVhOTVhMGVlN2Q2Mzk4OTUwMDJmNzZjNDAwMDAzMTQ4MjkuLmE3ZTdlOTcwYjEwMTFhNzA5ODg5
YWMyMGIyMmFjZjI5YmY3N2ZhYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAt
MjE3LDYgKzIxNywxMCBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+
IGdldFJlZmVyZW5jZWRGaWxlUGF0aHMoKSBjb25zdDsKIAorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUFfVjIpCisgICAgdm9pZCBpbml0aWFsaXplTW9ja0NETSgpOworI2VuZGlmCisKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERvY3VtZW50Kik7CiAgICAgRG9jdW1lbnQqIGNv
bnRleHREb2N1bWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmlu
ZGV4IDNiZDkxMjk5ZjBhNTU3NDY2MjVjZmM5MWQ1MjlhMWY4ZmEzYjFlY2IuLjhkZGM5MWVlNTRl
MmFhYjgwN2VlZjEzNTA4MjM4NTBjMDQ1ZDAzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKQEAgLTE5Myw2ICsxOTMsOCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgTWFs
bG9jU3RhdGlzdGljcyBtYWxsb2NTdGF0aXN0aWNzKCk7CiAKICAgICAgICAgRE9NU3RyaW5nW10g
Z2V0UmVmZXJlbmNlZEZpbGVQYXRocygpOworCisgICAgICAgIFtDb25kaXRpb25hbD1FTkNSWVBU
RURfTUVESUFfVjJdIHZvaWQgaW5pdGlhbGl6ZU1vY2tDRE0oKTsKICAgICB9OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ0RNLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTEzNjVmMzk5MjllZTE5N2IwNDY0
MzE4ODVmMDBjMGY4MDA1MTVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ0RNLmNwcApAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2NrQ0RNLmgiCisKKyNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBX1YyKQorCisjaW5jbHVkZSAiTWVkaWFLZXlFcnJvci5oIgorI2luY2x1ZGUgPHd0Zi9V
aW50OEFycmF5Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBNb2NrQ0RNOjpzdXBw
b3J0c0tleVN5dGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAgIHJldHVybiBlcXVh
bElnbm9yaW5nQ2FzZShrZXlTeXN0ZW0sICJjb20ud2ViY29yZS5tb2NrIik7Cit9CisKK2Jvb2wg
TW9ja0NETTo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAg
IHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShtaW1lVHlwZSwgInZpZGVvL21vY2siKTsKK30KKwor
U3RyaW5nIE1vY2tDRE06OmdlbmVyYXRlU2Vzc2lvbklkKCkKK3sKKyAgICBzdGF0aWMgaW50IG1v
bm90b25pY2FsbHlJbmNyZWFzaW5nU2Vzc2lvbklkID0gMDsKKyAgICByZXR1cm4gU3RyaW5nOjpu
dW1iZXIobW9ub3RvbmljYWxseUluY3JlYXNpbmdTZXNzaW9uSWQrKyk7Cit9CisKK3N0YXRpYyBV
aW50OEFycmF5KiBpbml0RGF0YVByZWZpeCgpCit7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGNoYXIgcHJlZml4RGF0YVtdID0geydtJywgJ28nLCAnYycsICdrJ307CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChSZWZQdHI8VWludDhBcnJheT4sIHByZWZpeCwgKCkpOworICAgIHN0YXRpYyBi
b29sIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKCFpbml0aWFsaXplZCkgeworICAgICAg
ICBpbml0aWFsaXplZCA9IHRydWU7CisgICAgICAgIHByZWZpeCA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShwcmVmaXhEYXRhLCBzaXplb2YocHJlZml4RGF0YSkgLyBzaXplb2YocHJlZml4RGF0YVswXSkp
OworICAgIH0KKyAgICByZXR1cm4gcHJlZml4LmdldCgpOworfQorCisKK3N0YXRpYyBVaW50OEFy
cmF5KiBrZXlQcmVmaXgoKQoreworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHByZWZp
eERhdGFbXSA9IHsnaycsICdlJywgJ3knfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0
cjxXVEY6OlVpbnQ4QXJyYXk+LCBwcmVmaXgsICgpKTsKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFs
aXplZCA9IGZhbHNlOworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgaW5pdGlhbGl6
ZWQgPSB0cnVlOworICAgICAgICBwcmVmaXggPSBVaW50OEFycmF5OjpjcmVhdGUocHJlZml4RGF0
YSwgc2l6ZW9mKHByZWZpeERhdGEpIC8gc2l6ZW9mKHByZWZpeERhdGFbMF0pKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHByZWZpeC5nZXQoKTsKK30KKworc3RhdGljIFVpbnQ4QXJyYXkqIGtleVJlcXVl
c3QoKQoreworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHJlcXVlc3REYXRhW10gPSB7
J3InLCAnZScsICdxJywgJ3UnLCAnZScsICdzJywgJ3QnfTsKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFJlZlB0cjxXVEY6OlVpbnQ4QXJyYXk+LCByZXF1ZXN0LCAoKSk7CisgICAgc3RhdGljIGJv
b2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoIWluaXRpYWxpemVkKSB7CisgICAgICAg
IGluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAgcmVxdWVzdCA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShyZXF1ZXN0RGF0YSwgc2l6ZW9mKHJlcXVlc3REYXRhKSAvIHNpemVvZihyZXF1ZXN0RGF0YVsw
XSkpOworICAgIH0KKyAgICByZXR1cm4gcmVxdWVzdC5nZXQoKTsKK30KKworUGFzc1JlZlB0cjxV
aW50OEFycmF5PiBNb2NrQ0RNOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiwgVWlu
dDhBcnJheSogaW5pdERhdGEsIGNvbnN0IFN0cmluZyYsIFN0cmluZyYsIHVuc2lnbmVkIHNob3J0
JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBpbml0RGF0YVByZWZpeCgpLT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGlmICghaW5p
dERhdGEgfHwgaSA+PSBpbml0RGF0YS0+bGVuZ3RoKCkgfHwgaW5pdERhdGEtPml0ZW0oaSkgIT0g
aW5pdERhdGFQcmVmaXgoKS0+aXRlbShpKSkgeworICAgICAgICAgICAgZXJyb3JDb2RlID0gTWVk
aWFLZXlFcnJvcjo6TUVESUFfS0VZRVJSX1VOS05PV047CisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4ga2V5UmVxdWVzdCgpOworfQorCit2b2lkIE1v
Y2tDRE06OmNsZWFyS2V5c0Zyb21TZXNzaW9uSWQoY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBu
by1vcAorfQorCitib29sIE1vY2tDRE06OmFkZEtleUZvclNlc3Npb25JZChVaW50OEFycmF5KiBr
ZXksIGNvbnN0IFN0cmluZyYsIFJlZlB0cjxVaW50OEFycmF5PiYsIHVuc2lnbmVkIHNob3J0JiBl
cnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBrZXlQcmVmaXgoKS0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAoaSA+PSBrZXktPmxl
bmd0aCgpIHx8IGtleS0+aXRlbShpKSAhPSBrZXlQcmVmaXgoKS0+aXRlbShpKSkgeworICAgICAg
ICAgICAgZXJyb3JDb2RlID0gTWVkaWFLZXlFcnJvcjo6TUVESUFfS0VZRVJSX0NMSUVOVDsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5oIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ0RNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Y3MGIzMzU5NDJhYTY4YjM2ZWZlZjkzZDkx
NzI4MTMyMDFiM2MxZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NETS5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1vY2tDRE1f
aAorI2RlZmluZSBNb2NrQ0RNX2gKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisK
KyNpbmNsdWRlICJDRE1Qcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDRE07CisKK2NsYXNzIE1vY2tDRE0gOiBwdWJs
aWMgQ0RNUHJpdmF0ZUludGVyZmFjZSB7CitwdWJsaWM6CisgICAgLy8gQ0RNRmFjdG9yeSBzdXBw
b3J0OgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENETVByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShD
RE0qIGNkbSkgeyByZXR1cm4gYWRvcHRQdHIobmV3IE1vY2tDRE0oY2RtKSk7IH0KKyAgICBzdGF0
aWMgYm9vbCBzdXBwb3J0c0tleVN5dGVtKGNvbnN0IFN0cmluZyYpOworCisgICAgdmlydHVhbCB+
TW9ja0NETSgpIHsgfQorCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSk7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBnZW5lcmF0ZVNlc3Npb25J
ZCgpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVl
c3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYg
ZXJyb3JDb2RlLCB1bnNpZ25lZCBsb25nJiBzeXN0ZW1Db2RlKTsKKworICAgIHZpcnR1YWwgdm9p
ZCBjbGVhcktleXNGcm9tU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKKyAgICB2
aXJ0dWFsIGJvb2wgYWRkS2V5Rm9yU2Vzc2lvbklkKFVpbnQ4QXJyYXkqLCBjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hv
cnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSk7CisKK3Byb3RlY3RlZDoK
KyAgICBNb2NrQ0RNKENETSogY2RtKSA6IG1fY2RtKGNkbSkgeyB9CisgICAgQ0RNKiBtX2NkbTsK
K307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNlbmRpZiAv
LyBNb2NrQ0RNX2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA3NWU2ZWUwZDM5MTVhNjVlNTZjZDNhM2I1NjI5OWM3MjkwZjVh
NmJkLi5iYjgyZTM3OTg5ZDNhODAyNmQ3YTIwMjA3MGJkNWVlZjFlNzk0NWQ5IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTItMDktMTkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgQnJpbmcgV2ViS2l0IHVwIHRvIHNwZWVkIHdpdGggbGF0ZXN0IEVuY3J5cHRl
ZCBNZWRpYSBzcGVjLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTcwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCBuZXcgdGVzdHMgZm9yIHRoZSB1cGRhdGVkIEVuY3J5cHRlZCBNZWRpYSBFeHRl
bnNpb25zIHNwZWMuCisKKyAgICAgICAgKiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVk
LW1lZGlhLXYyLWV2ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL2Vu
Y3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItZXZlbnRzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5
cHRlZC1tZWRpYS12Mi1zeW50YXguaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L1NraXBwZWQ6IFVuc2tpcCAobW9zdCBvZikgdGhlIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS8gdGVz
dHMKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRl
ZC1tZWRpYS1jYW4tcGxheS10eXBlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTItMDktMjAg
IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CiAKICAgICAg
ICAgW1F0XVtXSzJdIGZhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtbWVkaWEtZWxlbWVudHMu
aHRtbCB0aW1lb3V0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1l
ZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1ldmVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
bWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1ldmVudHMtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdiMjk2M2EwNjQzMDRkNjg4NjIwMmU5YjgyNjk5MjVmZGRiZDU1MzEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5j
cnlwdGVkLW1lZGlhLXYyLWV2ZW50cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGhp
cyB0ZXN0cyB0aGUgZXZlbnRzIGNyZWF0ZWQgYnkgTWVkaWFLZXlzLgorCitSVU4obWVkaWFLZXlz
ID0gbmV3IE1lZGlhS2V5cygiY29tLndlYmNvcmUubW9jayIpKQorUlVOKG1lZGlhS2V5U2Vzc2lv
biA9IG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ2aWRlby9tb2NrIiwgaW5pdERhdGEpKQorRVZF
TlQod2Via2l0a2V5bWVzc2FnZSkKK1JVTihtZWRpYUtleVNlc3Npb24uYWRkS2V5KGludmFsaWRL
ZXkpKQorRVZFTlQod2Via2l0a2V5ZXJyb3IpCitSVU4obWVkaWFLZXlTZXNzaW9uLmFkZEtleSh2
YWxpZEtleSkpCitFVkVOVCh3ZWJraXRrZXlhZGRlZCkKK0VORCBPRiBURVNUCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjIt
ZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVk
LW1lZGlhLXYyLWV2ZW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3NzYwOGY3YjUzNjFkYjkzNmQ2N2Vh
NTQyMjM3Y2VjMWI1NjFlN2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9l
bmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLWV2ZW50cy5odG1sCkBAIC0wLDAgKzEs
NTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRs
ZT5NZWRpYUtleXM8L3RpdGxlPgorICAgICAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0Lmpz
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZnVuY3Rpb24gc3RyaW5n
VG9VaW50OEFycmF5KHN0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgYXJy
PVtdOworICAgICAgICAgICAgICAgIGZvcih2YXIgaT0wLGo9c3RyLmxlbmd0aDtpPGo7KytpKXsK
KyAgICAgICAgICAgICAgICAgIGFycltpXT1zdHIuY2hhckNvZGVBdChpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGFycik7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBtZWRpYUtleXM7CisgICAgICAgICAgICB2YXIg
bWVkaWFLZXlTZXNzaW9uOworICAgICAgICAgICAgdmFyIGluaXREYXRhID0gc3RyaW5nVG9VaW50
OEFycmF5KCdtb2NrJyk7CisgICAgICAgICAgICB2YXIgaW52YWxpZEtleSA9IHN0cmluZ1RvVWlu
dDhBcnJheSgnaW52YWxpZCcpOworICAgICAgICAgICAgdmFyIHZhbGlkS2V5ID0gc3RyaW5nVG9V
aW50OEFycmF5KCdrZXknKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIAorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIE1vY2tDRE0uIEl0
IHN1cHBvcnRzIHRoZSBrZXkgc3lzdGVtICdjb20uYXBwbGUubW9jaycsIHRoZSAKKyAgICAgICAg
ICAgICAgICAvLyBtaW1lIHR5cGUgJ3ZpZGVvL21vY2snLiBJdCByZXF1aXJlcyBpbml0IGRhdGEg
dG8gYmVnaW4gd2l0aCAnbW9jaycsIGFuZAorICAgICAgICAgICAgICAgIC8vIGtleXMgdG8gYmVn
aW4gd2l0aCAna2V5Jy4KKyAgICAgICAgICAgICAgICBpZiAoaW50ZXJuYWxzKQorICAgICAgICAg
ICAgICAgICAgICBpbnRlcm5hbHMuaW5pdGlhbGl6ZU1vY2tDRE0oKTsKKworICAgICAgICAgICAg
ICAgIHJ1bignbWVkaWFLZXlzID0gbmV3IE1lZGlhS2V5cygiY29tLndlYmNvcmUubW9jayIpJyk7
CisgICAgICAgICAgICAgICAgcnVuKCdtZWRpYUtleVNlc3Npb24gPSBtZWRpYUtleXMuY3JlYXRl
U2Vzc2lvbigidmlkZW8vbW9jayIsIGluaXREYXRhKScpOworICAgICAgICAgICAgICAgIHdhaXRG
b3JFdmVudCgnd2Via2l0a2V5bWVzc2FnZScsIGtleU1lc3NhZ2UsIGZhbHNlLCBmYWxzZSwgbWVk
aWFLZXlTZXNzaW9uKTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3dlYmtpdGtleWVy
cm9yJywga2V5RXJyb3IsIGZhbHNlLCBmYWxzZSwgbWVkaWFLZXlTZXNzaW9uKTsKKyAgICAgICAg
ICAgICAgICB3YWl0Rm9yRXZlbnQoJ3dlYmtpdGtleWFkZGVkJywgbnVsbCwgdHJ1ZSwgZmFsc2Us
IG1lZGlhS2V5U2Vzc2lvbik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IGtleU1lc3NhZ2UoZXZlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcnVuKCdt
ZWRpYUtleVNlc3Npb24uYWRkS2V5KGludmFsaWRLZXkpJyk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGtleUVycm9yKGV2ZW50KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJ1bignbWVkaWFLZXlTZXNzaW9uLmFkZEtleSh2YWxpZEtleSknKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKyAgICAgICAgPHA+VGhpcyB0ZXN0cyB0aGUgZXZlbnRzIGNyZWF0ZWQg
YnkgTWVkaWFLZXlzLjwvcD4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1l
ZGlhLXYyLXN5bnRheC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQt
bWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRheC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjMwNTExMTk2ODU3NjEyNmU3YmUwODljYzU2NzRiYTNkZWRhNzI0ZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjIt
c3ludGF4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI2IEBACitUaGlzIHRlc3RzIHRoZSBiYXNp
YyBBUEkgb2YgTWVkaWFLZXlzIGFuZCBNZWRpYUtleVNlc3Npb24uCisKK1Rlc3QgTWVkaWFLZXlz
LgorRVhQRUNURUQgKHR5cGVvZiB3aW5kb3cuTWVkaWFLZXlzID09ICdvYmplY3QnKSBPSworVEVT
VChuZXcgTWVkaWFLZXlzKCIiKSkgVEhST1dTKERPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19F
UlIpIE9LCitURVNUKG5ldyBNZWRpYUtleXMoInVuc3VwcG9ydGVkIikpIFRIUk9XUyhET01FeGNl
cHRpb24uTk9UX1NVUFBPUlRFRF9FUlIpIE9LCitSVU4obWVkaWFLZXlzID0gbmV3IE1lZGlhS2V5
cygiY29tLndlYmNvcmUubW9jayIpKQorRVhQRUNURUQgKG1lZGlhS2V5cy5rZXlTeXN0ZW0gPT0g
J2NvbS53ZWJjb3JlLm1vY2snKSBPSworRVhQRUNURUQgKHR5cGVvZiBtZWRpYUtleXMuY3JlYXRl
U2Vzc2lvbiA9PSAnZnVuY3Rpb24nKSBPSworVEVTVChtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigi
IiwgbmV3IFVpbnQ4QXJyYXkoMSkpKSBUSFJPV1MoRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNT
X0VSUikgT0sKK1RFU1QobWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oInVuc3VwcG9ydGVkL3R5cGUi
KSkgVEhST1dTKERPTUV4Y2VwdGlvbi5OT1RfU1VQUE9SVEVEX0VSUikgT0sKKworVGVzdCBNZWRp
YUtleVNlc3Npb24uCitSVU4obWVkaWFLZXlTZXNzaW9uID0gbWVkaWFLZXlzLmNyZWF0ZVNlc3Np
b24oInZpZGVvL21vY2siLCBpbml0RGF0YSkpCitFWFBFQ1RFRCAodHlwZW9mIG1lZGlhS2V5U2Vz
c2lvbiA9PSAnb2JqZWN0JykgT0sKK0VYUEVDVEVEICh0eXBlb2YgbWVkaWFLZXlTZXNzaW9uLmFk
ZEV2ZW50TGlzdGVuZXIgPT0gJ2Z1bmN0aW9uJykgT0sKK0VYUEVDVEVEICh0eXBlb2YgbWVkaWFL
ZXlTZXNzaW9uLmFkZEtleSA9PSAnZnVuY3Rpb24nKSBPSworRVhQRUNURUQgKG1lZGlhS2V5U2Vz
c2lvbi5lcnJvciA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAobWVkaWFLZXlTZXNzaW9uLmtleVN5
c3RlbSA9PSAnY29tLndlYmNvcmUubW9jaycpIE9LCitFWFBFQ1RFRCAobWVkaWFLZXlTZXNzaW9u
LnNlc3Npb25JZCAhPSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAobWVkaWFLZXlTZXNzaW9uLm9ud2Vi
a2l0a2V5YWRkZWQgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKG1lZGlhS2V5U2Vzc2lvbi5vbndl
YmtpdGtleWVycm9yID09ICdudWxsJykgT0sKK0VYUEVDVEVEIChtZWRpYUtleVNlc3Npb24ub253
ZWJraXRrZXltZXNzYWdlID09ICdudWxsJykgT0sKK1RFU1QobWVkaWFLZXlTZXNzaW9uLmFkZEtl
eShudWxsKSkgVEhST1dTKERPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIpIE9LCitFTkQg
T0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRheC5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlw
dGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXguaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODIw
YWM5Yjc2ZDZkYmUxZmRjYmQxNzk1MmNkMzE0NjM5YmRkN2MxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50
YXguaHRtbApAQCAtMCwwICsxLDU4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8dGl0bGU+TWVkaWFLZXlzPC90aXRsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Li4vdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHN0cmluZ1RvVWludDhBcnJheShzdHIpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgdmFyIGFycj1bXTsKKyAgICAgICAgICAgICAgICBmb3IodmFyIGk9MCxqPXN0
ci5sZW5ndGg7aTxqOysraSl7CisgICAgICAgICAgICAgICAgICBhcnJbaV09c3RyLmNoYXJDb2Rl
QXQoaSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVWlu
dDhBcnJheShhcnIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgbWVkaWFLZXlz
OworICAgICAgICAgICAgdmFyIG1lZGlhS2V5U2Vzc2lvbjsKKyAgICAgICAgICAgIHZhciBpbml0
RGF0YSA9IHN0cmluZ1RvVWludDhBcnJheSgnbW9jaycpOworCisgICAgICAgICAgICBmdW5jdGlv
biBydW5UZXN0KCkgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gSW5pdGlhbGl6
ZSB0aGUgTW9ja0NETS4gSXQgc3VwcG9ydHMgdGhlIGtleSBzeXN0ZW0gJ2NvbS5hcHBsZS5tb2Nr
JywgdGhlIAorICAgICAgICAgICAgICAgIC8vIG1pbWUgdHlwZSAndmlkZW8vbW9jaycuIEl0IHJl
cXVpcmVzIGluaXQgZGF0YSB0byBiZWdpbiB3aXRoICdtb2NrJywgYW5kCisgICAgICAgICAgICAg
ICAgLy8ga2V5cyB0byBiZWdpbiB3aXRoICdrZXknLgorICAgICAgICAgICAgICAgIGlmIChpbnRl
cm5hbHMpCisgICAgICAgICAgICAgICAgICAgIGludGVybmFscy5pbml0aWFsaXplTW9ja0NETSgp
OworCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0IE1lZGlhS2V5cy4iKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3R5cGVvZiB3aW5kb3cuTWVkaWFLZXlzJywgJ29i
amVjdCcpOworICAgICAgICAgICAgICAgIHRlc3RFeGNlcHRpb24oJ25ldyBNZWRpYUtleXMoIiIp
JywgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIiKTsKKyAgICAgICAgICAgICAgICB0
ZXN0RXhjZXB0aW9uKCduZXcgTWVkaWFLZXlzKCJ1bnN1cHBvcnRlZCIpJywgIkRPTUV4Y2VwdGlv
bi5OT1RfU1VQUE9SVEVEX0VSUiIpOworICAgICAgICAgICAgICAgIHJ1bignbWVkaWFLZXlzID0g
bmV3IE1lZGlhS2V5cygiY29tLndlYmNvcmUubW9jayIpJyk7CisgICAgICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCdtZWRpYUtleXMua2V5U3lzdGVtJywgJ2NvbS53ZWJjb3JlLm1vY2snKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3R5cGVvZiBtZWRpYUtleXMuY3JlYXRlU2Vzc2lv
bicsICdmdW5jdGlvbicpOworICAgICAgICAgICAgICAgIHRlc3RFeGNlcHRpb24oJ21lZGlhS2V5
cy5jcmVhdGVTZXNzaW9uKCIiLCBuZXcgVWludDhBcnJheSgxKSknLCAiRE9NRXhjZXB0aW9uLklO
VkFMSURfQUNDRVNTX0VSUiIpOworICAgICAgICAgICAgICAgIHRlc3RFeGNlcHRpb24oJ21lZGlh
S2V5cy5jcmVhdGVTZXNzaW9uKCJ1bnN1cHBvcnRlZC90eXBlIiknLCAiRE9NRXhjZXB0aW9uLk5P
VF9TVVBQT1JURURfRVJSIik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKwor
ICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCBNZWRpYUtleVNlc3Npb24uIik7Cisg
ICAgICAgICAgICAgICAgcnVuKCdtZWRpYUtleVNlc3Npb24gPSBtZWRpYUtleXMuY3JlYXRlU2Vz
c2lvbigidmlkZW8vbW9jayIsIGluaXREYXRhKScpOworICAgICAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgndHlwZW9mIG1lZGlhS2V5U2Vzc2lvbicsICdvYmplY3QnKTsKKyAgICAgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoJ3R5cGVvZiBtZWRpYUtleVNlc3Npb24uYWRkRXZlbnRMaXN0ZW5lcics
ICdmdW5jdGlvbicpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndHlwZW9mIG1lZGlh
S2V5U2Vzc2lvbi5hZGRLZXknLCAnZnVuY3Rpb24nKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ21lZGlhS2V5U2Vzc2lvbi5lcnJvcicsIG51bGwpOworICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgnbWVkaWFLZXlTZXNzaW9uLmtleVN5c3RlbScsICdjb20ud2ViY29yZS5tb2Nr
Jyk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleVNlc3Npb24uc2Vzc2lv
bklkJywgbnVsbCwgJyE9Jyk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtl
eVNlc3Npb24ub253ZWJraXRrZXlhZGRlZCcsIG51bGwpOworICAgICAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgnbWVkaWFLZXlTZXNzaW9uLm9ud2Via2l0a2V5ZXJyb3InLCBudWxsKTsKKyAgICAg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ21lZGlhS2V5U2Vzc2lvbi5vbndlYmtpdGtleW1lc3Nh
Z2UnLCBudWxsKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhjZXB0aW9uKCdtZWRpYUtleVNlc3Np
b24uYWRkS2V5KG51bGwpJywgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIiKTsKKyAg
ICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgICAgIDxw
PlRoaXMgdGVzdHMgdGhlIGJhc2ljIEFQSSBvZiBNZWRpYUtleXMgYW5kIE1lZGlhS2V5U2Vzc2lv
bi48L3A+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKaW5kZXggYjA0Yzk3MjM4MDIzMzU5MGU3ZWQyNTlkNWFj
YTQ0MjI5YWE4ZTk4MC4uMzc1ZDMzNjI0NWE0YzE0MzY3MGFkZTJhZDI5OTYyNGYwYzQxMGZiMiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKQEAgLTQ3NSw5ICs0NzUsMTEgQEAgbWVkaWEvdHJh
Y2svdHJhY2std2VidnR0LXRjMDI4LXVuc3VwcG9ydGVkLW1hcmt1cC5odG1sCiAjIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDczMQogaHR0cC90ZXN0cy9tZWRpYS9t
ZWRpYS1zb3VyY2UvCiAKLSMgRW5jcnlwdGVkIE1lZGlhIEV4dGVuc2lvbnMgYXJlIG5vdCBlbmFi
bGVkLgotbWVkaWEvZW5jcnlwdGVkLW1lZGlhLwotZmFzdC9ldmVudHMvY29uc3RydWN0b3JzL21l
ZGlhLWtleS1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCisjIERlcHJlY2F0ZWQgRW5jcnlwdGVkIE1l
ZGlhIEV4dGVuc2lvbnMgYXJlIG5vdCBlbmFibGVkLgorbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2Vu
Y3J5cHRlZC1tZWRpYS1jYW4tcGxheS10eXBlLXdlYm0uaHRtbAorbWVkaWEvZW5jcnlwdGVkLW1l
ZGlhL2VuY3J5cHRlZC1tZWRpYS1ldmVudHMuaHRtbAorbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2Vu
Y3J5cHRlZC1tZWRpYS1ub3QtbG9hZGVkLmh0bWwKK21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNy
eXB0ZWQtbWVkaWEtc3ludGF4Lmh0bWwKIAogIyBGb250IGZlYXR1cmUgc2V0dGluZ3MgaXMgbm90
IGltcGxlbWVudGVkLgogY3NzMy9mb250LWZlYXR1cmUtc2V0dGluZ3MtcmVuZGVyaW5nLmh0bWwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9tZWRpYS9lbmNyeXB0ZWQtbWVk
aWEvZW5jcnlwdGVkLW1lZGlhLWNhbi1wbGF5LXR5cGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtY2Fu
LXBsYXktdHlwZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmFjYzc3YTQ2NTg5MDZiMjE1ZGNl
ZTYzZDA2M2E4Yjc3OGM0YTMzNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLWNhbi1wbGF5LXR5
cGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNzUgQEAKK1Rlc3QgRW5jcnlwdGVkIE1lZGlhIGV4
dGVuc2lvbiBvZiBIVE1MTWVkaWFFbGVtZW50IGNhblBsYXlUeXBlKCkgbWV0aG9kLgorCitUaGUg
dGVzdCBpcyBkZXNpZ25lZCB0byBwYXNzIHdpdGggYW55IGltcGxlbWVudGF0aW9uIHJlZ2FyZGxl
c3Mgb2Ygc3VwcG9ydGVkIG1lZGlhIHR5cGVzIGFuZCByZWxpZXMgb24gdGhlIGV4cGVjdGVkIGxv
ZyB0byBkZXRlY3QgdGhlIGV4cGVjdGVkIHJlc3VsdHMgZm9yIHNvbWUgdHlwZXMuIFRvIGdldCBz
dWZmaWNpZW50IGNvdmVyYWdlLCBpdCBpcyBpbXBvcnRhbnQgdGhhdCBhbiBpbXBsZW1lbnRhdGlv
biBzdXBwb3J0IGNsZWFya2V5IGVuY3J5cHRpb24gb2YgYXQgbGVhc3Qgb25lIG9mIHRoZSB0eXBl
cyBiZWxvdy4KKworQWx3YXlzIHJldHVybiB0aGUgZW1wdHkgc3RyaW5nIGZvciBubyB0eXBlLgor
RVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCkgPT0gJycpIE9LCisKK0Fsd2F5cyByZXR1cm4g
dGhlIGVtcHR5IHN0cmluZyBmb3IgYW4gZW1wdHkgdHlwZS4KK0VYUEVDVEVEICh2aWRlby5jYW5Q
bGF5VHlwZSgnJykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJycsICcn
KSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnJywgbnVsbCkgPT0gJycp
IE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJycsIHVuZGVmaW5lZCkgPT0gJycpIE9L
CitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJycsICd3ZWJraXQtb3JnLnczLmNsZWFya2V5
JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJycsICdXZUJrSXQtT3JH
LlczLkNsRWFSa0V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJycs
ICdjb20uZXhhbXBsZS5pbnZhbGlkJykgPT0gJycpIE9LCisKK0Fsd2F5cyByZXR1cm4gdGhlIGVt
cHR5IHN0cmluZyBmb3Igd2hlbiBubyBjb250YWluZXIgaXMgc3BlY2lmaWVkLgorRVhQRUNURUQg
KHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby8nKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5j
YW5QbGF5VHlwZSgndmlkZW8vJywgJycpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBs
YXlUeXBlKCd2aWRlby8nLCBudWxsKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5
VHlwZSgndmlkZW8vJywgdW5kZWZpbmVkKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5Q
bGF5VHlwZSgndmlkZW8vJywgJ3dlYmtpdC1vcmcudzMuY2xlYXJrZXknKSA9PSAnJykgT0sKK0VY
UEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vJywgJ1dlQmtJdC1PckcuVzMuQ2xFYVJr
RXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vJywgJ2Nv
bS5leGFtcGxlLmludmFsaWQnKSA9PSAnJykgT0sKKworQWx3YXlzIHJldHVybiB0aGUgZW1wdHkg
c3RyaW5nIGZvciBhbiB1bnN1cHBvcnRlZCBjb250YWluZXIuCitFWFBFQ1RFRCAodmlkZW8uY2Fu
UGxheVR5cGUoJ3ZpZGVvL2JsYWhibGFoJykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2Fu
UGxheVR5cGUoJ3ZpZGVvL2JsYWhibGFoJywgJycpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVv
LmNhblBsYXlUeXBlKCd2aWRlby9ibGFoYmxhaCcsIG51bGwpID09ICcnKSBPSworRVhQRUNURUQg
KHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9ibGFoYmxhaCcsIHVuZGVmaW5lZCkgPT0gJycpIE9L
CitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL2JsYWhibGFoJywgJ3dlYmtpdC1v
cmcudzMuY2xlYXJrZXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgn
dmlkZW8vYmxhaGJsYWgnLCAnV2VCa0l0LU9yRy5XMy5DbEVhUmtFeScpID09ICcnKSBPSworRVhQ
RUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9ibGFoYmxhaCcsICdjb20uZXhhbXBsZS5p
bnZhbGlkJykgPT0gJycpIE9LCisKK0VtcHR5IGtleSBzeXN0ZW0gcGFyYW1ldGVycyBzaG91bGQg
bm90IGFmZmVjdCB0aGUgcmVzdWx0IG9mIHZpZGVvL21wNCB0eXBlcy4KK1Jlc3VsdCBvZiB2aWRl
by5jYW5QbGF5VHlwZSgndmlkZW8vbXA0OyBDb2RlY3M9ImF2YzEuNEQ0MDBDIicpOiAncHJvYmFi
bHknCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL21wNDsgQ29kZWNzPSJhdmMx
LjRENDAwQyInLCAnJykgPT0gJ3Byb2JhYmx5JykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5
VHlwZSgndmlkZW8vbXA0OyBDb2RlY3M9ImF2YzEuNEQ0MDBDIicsIG51bGwpID09ICdwcm9iYWJs
eScpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL21wNDsgQ29kZWNzPSJh
dmMxLjRENDAwQyInLCB1bmRlZmluZWQpID09ICdwcm9iYWJseScpIE9LCitUaGVyZSBhcmUgY3Vy
cmVudGx5IG5vIGltcGxlbWVudGF0aW9ucyBzdXBwb3J0aW5nIGVuY3J5cHRpb24gb2YgdmlkZW8v
bXA0LgorRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9tcDQ7IENvZGVjcz0iYXZj
MS40RDQwMEMiJywgJ3dlYmtpdC1vcmcudzMuY2xlYXJrZXknKSA9PSAnJykgT0sKK0VYUEVDVEVE
ICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vbXA0OyBDb2RlY3M9ImF2YzEuNEQ0MDBDIicsICdX
ZUJrSXQtT3JHLlczLkNsRWFSa0V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxh
eVR5cGUoJ3ZpZGVvL21wNDsgQ29kZWNzPSJhdmMxLjRENDAwQyInLCAnY29tLmV4YW1wbGUuaW52
YWxpZCcpID09ICcnKSBPSworCitFbXB0eSBrZXkgc3lzdGVtIHBhcmFtZXRlcnMgc2hvdWxkIG5v
dCBhZmZlY3QgdGhlIHJlc3VsdCBvZiBhdWRpby9tcGVnIHR5cGVzLgorUmVzdWx0IG9mIHZpZGVv
LmNhblBsYXlUeXBlKCdhdWRpby9tcGVnJyk6ICdtYXliZScKK0VYUEVDVEVEICh2aWRlby5jYW5Q
bGF5VHlwZSgnYXVkaW8vbXBlZycsICcnKSA9PSAnbWF5YmUnKSBPSworRVhQRUNURUQgKHZpZGVv
LmNhblBsYXlUeXBlKCdhdWRpby9tcGVnJywgbnVsbCkgPT0gJ21heWJlJykgT0sKK0VYUEVDVEVE
ICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vbXBlZycsIHVuZGVmaW5lZCkgPT0gJ21heWJlJykg
T0sKK1RoZXJlIGFyZSBjdXJyZW50bHkgbm8gaW1wbGVtZW50YXRpb25zIHN1cHBvcnRpbmcgZW5j
cnlwdGlvbiBvZiBhdWRpby9tcGVnLgorRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRp
by9tcGVnJywgJ3dlYmtpdC1vcmcudzMuY2xlYXJrZXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2
aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vbXBlZycsICdXZUJrSXQtT3JHLlczLkNsRWFSa0V5Jykg
PT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL21wZWcnLCAnY29t
LmV4YW1wbGUuaW52YWxpZCcpID09ICcnKSBPSworCitFbXB0eSBrZXkgc3lzdGVtIHBhcmFtZXRl
cnMgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIHJlc3VsdCBvZiBhdWRpby93YXYgdHlwZXMuCitSZXN1
bHQgb2YgdmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL3dhdicpOiAnbWF5YmUnCitFWFBFQ1RFRCAo
dmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL3dhdicsICcnKSA9PSAnbWF5YmUnKSBPSworRVhQRUNU
RUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby93YXYnLCBudWxsKSA9PSAnbWF5YmUnKSBPSwor
RVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby93YXYnLCB1bmRlZmluZWQpID09ICdt
YXliZScpIE9LCitUaGVyZSBhcmUgY3VycmVudGx5IG5vIGltcGxlbWVudGF0aW9ucyBzdXBwb3J0
aW5nIGVuY3J5cHRpb24gb2YgYXVkaW8vd2F2LgorRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBl
KCdhdWRpby93YXYnLCAnd2Via2l0LW9yZy53My5jbGVhcmtleScpID09ICcnKSBPSworRVhQRUNU
RUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby93YXYnLCAnV2VCa0l0LU9yRy5XMy5DbEVhUmtF
eScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby93YXYnLCAn
Y29tLmV4YW1wbGUuaW52YWxpZCcpID09ICcnKSBPSworCitFbXB0eSBrZXkgc3lzdGVtIHBhcmFt
ZXRlcnMgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIHJlc3VsdCBvZiB2aWRlby93ZWJtIHR5cGVzLgor
UmVzdWx0IG9mIHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby93ZWJtJyk6ICcnCitFWFBFQ1RFRCAo
dmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL3dlYm0nLCAnJykgPT0gJycpIE9LCitFWFBFQ1RFRCAo
dmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL3dlYm0nLCBudWxsKSA9PSAnJykgT0sKK0VYUEVDVEVE
ICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vd2VibScsIHVuZGVmaW5lZCkgPT0gJycpIE9LCitB
bGwgaW1wbGVtZW50YXRpb25zIHRoYXQgc3VwcG9ydCBXZWJNIGFuZCBFbmNyeXB0ZWQgTWVkaWEg
c3VwcG9ydCBlbmNyeXB0ZWQgV2ViTS4KK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlk
ZW8vd2VibScsICd3ZWJraXQtb3JnLnczLmNsZWFya2V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAo
dmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL3dlYm0nLCAnV2VCa0l0LU9yRy5XMy5DbEVhUmtFeScp
ID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby93ZWJtJywgJ2Nv
bS5leGFtcGxlLmludmFsaWQnKSA9PSAnJykgT0sKK0VORCBPRiBURVNUCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164874</attachid>
            <date>2012-09-20 03:07:30 -0700</date>
            <delta_ts>2012-09-20 08:53:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97037-20120920030656.patch</filename>
            <type>text/plain</type>
            <size>140514</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NDNlMmE4ODc0NjQ1NWIzZjBmOThiMTMwYjk2MjIzMmE0Y2M4OGZjLi4zYjRlZTYwMjhkY2U1ODQz
YzE4MzJhZDBlMGI2YjNmNmI4YTU3NmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOS0xOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KworICAgICAgICBCcmluZyBXZWJLaXQgdXAgdG8gc3BlZWQgd2l0aCBsYXRlc3QgRW5jcnlwdGVk
IE1lZGlhIHNwZWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NzAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIERlZmluZSB0aGUgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiBzZXR0aW5nLgorCisgICAg
ICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTItMDkt
MTkgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBPU1IgZXhp
dCBzb21ldGltZXMgbmVnbGVjdHMgdG8gY3JlYXRlIHRoZSBhcmd1bWVudHMgb2JqZWN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDdjMzJlOTIyNDYxOWI4ZDQwZThlYjc2ZTk5YWMxZTdiMzg4MTZlNzguLjhiOWI4NGVkOGE1MTRh
N2RjZDI1ZjNkYmNhZDM3ZTgxZmU1NjAzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDkt
MTkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQnJpbmcgV2Vi
S2l0IHVwIHRvIHNwZWVkIHdpdGggbGF0ZXN0IEVuY3J5cHRlZCBNZWRpYSBzcGVjLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcwMzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZWZpbmUgdGhlIEVOQUJM
RV9FTkNSWVBURURfTUVESUFfVjIgc2V0dGluZy4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5o
OgorCiAyMDEyLTA5LTE5ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgT1NSIGV4aXQgc29tZXRpbWVzIG5lZ2xlY3RzIHRvIGNyZWF0ZSB0aGUgYXJndW1lbnRz
IG9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE3Njk2Njk0MzFkOGFiNTE0OGI1NTJiOTQ0MDZhMjlhZGZk
NzliYmUuLjRmMDBjNDAxOGI3ZmQ5ZWYxM2YyZjUzOGJkMjdiYjRhZTI4Y2MyMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNzcgQEAKKzIwMTItMDktMTkgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CisKKyAgICAgICAgQnJpbmcgV2ViS2l0IHVwIHRvIHNwZWVkIHdpdGggbGF0ZXN0
IEVuY3J5cHRlZCBNZWRpYSBzcGVjLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTcwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgbW9zdCByZWNlbnQgdmVyc2lvbiBvZiB0aGUgRW5jcnlwdGVkIE1l
ZGlhIEV4dGVuc2lvbnMgc3BlYyBicmVha3MgZnVuY3Rpb25hbGl0eSBvdXQgb2YgdGhlCisgICAg
ICAgIEhUTUxNZWRpYUVsZW1lbnQgYW5kIGludG8gbmV3IE1lZGlhS2V5cyBhbmQgTWVkaWFLZXlT
ZXNzaW9uIGNsYXNzZXMuIFNpbmNlIHRoZSBDRE0gZnVuY3Rpb25hbGl0eQorICAgICAgICBoYXMg
YmVlbiBwdWxsZWQgb3V0IG9mIHRoZSBtZWRpYSBlbGVtZW50LCB3ZSBjcmVhdGUgYSBwcm94eSBD
RE0gY2xhc3MgYW5kIGZhY3Rvcnkgc3lzdGVtIGZvcgorICAgICAgICBjcmVhdGluZyBzcGVjaWZp
YyBDRE0ga2V5IHN5c3RlbSBpbXBsZW1lbnRhdGlvbnMuIFRoZSBzcGVjIGFsc28gYnJlYWtzIG91
dCBNZWRpYUtleUV2ZW50CisgICAgICAgIGludG8gZGlzdGluY3QgZXZlbnQgY2xhc3NlcywgTWVk
aWFLZXlOZWVkZWRFdmVudCBhbmQgTWVkaWFLZXlNZXNzYWdlRXZlbnQsIGZvciBuZWVka2V5IGFu
ZAorICAgICAgICBrZXltZXNzYWdlIGV2ZW50cywgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgIFRl
c3RzOiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLWV2ZW50cy5odG1s
CisgICAgICAgICAgICAgICBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYy
LXN5bnRheC5odG1sCisKKyAgICAgICAgQ0RNIGlzIGEgcHJveHkgY2xhc3MgKGEgbGEgTWVkaWFQ
bGF5ZXIpIGZvciBhIHNwZWNpZmljIENETVByaXZhdGVJbnRlcmZhY2UgaW1wbGVtZW50YXRpb24u
IEEgQ0RNCisgICAgICAgIGltcGxlbWVudGF0aW9uIGlzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgQ0RN
RmFjdG9yeSBhbmQgd2lsbCBiZSBjcmVhdGVkIGlmIHRoYXQgaW1wbGVtZW50YXRpb24gc3VwcG9y
dHMKKyAgICAgICAgdGhlIGtleSBzeXN0ZW0gcGFzc2VkIGludG8gdGhlIE1lZGlhS2V5cyBjb25z
dHJ1Y3Rvci4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6aW5zdGFsbGVkQ0RNRmFjdG9yaWVzKTogSW5pdGlhbGl6ZSBh
bGwgdGhlIGtub3duIENETSBzdWJ0eXBlcy4gUG9ydHMgd2lsbCBhZGQgQ0RNIGltcGxlbWVudGF0
aW9ucyBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpyZWdpc3RlckNETUZhY3RvcnkpOiBS
ZWdpc3RlcnMgYSBuZXcgQ0RNRmFjdG9yeSB1c2luZyB0aGUgcGFzc2VkIGluIGZ1bmN0aW9uIHBv
aW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6Q0RNRmFjdG9yeUZvcktleVN5c3RlbSk6IFJldHVy
biB0aGUgZmlyc3QgQ0RNIGZhY3Rvcnkgd2hpY2ggc3VwcG9ydHMgdGhlIHJlcXVlc3RlZCBrZXkg
c3lzdGVtLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0tleVN5c3RlbSk6IFdhbGsg
dGhlIGluc3RhbGxlZCBDRE1zIGFuZCBhc2sgaWYgdGhlIGdpdmVuIGtleSBzeXN0ZW0gaXMgc3Vw
cG9ydGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0tleVN5c3RlbU1JTUVUeXBl
QW5kQ29kZWMpOiBEaXR0bywgd2l0aCBhbiBhZGRpdGlvbmFsIE1JTUUgdHlwZSBhbmQgY29kZWMg
c3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpjcmVhdGUpOiBTaW1wbGUgY29uc3RydWN0
b3Igd3JhcHBlci4KKyAgICAgICAgKFdlYkNvcmU6OkNETTo6Q0RNKTogU2ltcGxlIGNvbnN0cnVj
dG9yOyBjYWxscyBiZXN0Q0RNRm9yS2V5U3lzdGVtKCkgdG8gY3JlYXRlIGl0J3MgcHJpdmF0ZSBp
bXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNETTo6fkNETSk6IFNpbXBsZSBkZXN0
cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpnZW5lcmF0ZVNlc3Npb25JZCk6IFBhc3Mg
dGhyb3VnaCB0byBwcml2YXRlIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q0RN
OjpnZW5lcmF0ZUtleVJlcXVlc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNETTo6YWRk
S2V5Rm9yU2Vzc2lvbklkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDRE06OmNsZWFyS2V5
c0Zyb21TZXNzaW9uSWQpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNETTo6a2V5U3lzdGVtKTogU2ltcGxl
IGFjY2Vzc29yIGZvciBtX2tleVN5c3RlbS4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETVByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlSW50
ZXJmYWNlOjpDRE1Qcml2YXRlSW50ZXJmYWNlKTogU2ltcGxlIGNvbnN0cnVjdG9yLgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUludGVyZmFjZTo6fkNETVByaXZhdGVJbnRlcmZhY2UpOiBT
aW1wbGUgZGVzdHJ1Y3Rvci4KKworICAgICAgICBUaGUgbmV3IGNsYXNzZXMsIE1lZGlhS2V5TWVz
c2FnZUV2ZW50IGFuZCBNZWRpYUtleU5lZWRlZEV2ZW50LCB0YWtlIGRpc3RpbmN0IHN1YnNldHMg
b2YgdGhlIGluaXRpYWxpemVycyBvZgorICAgICAgICB0aGUgb3JpZ2luYWwgTWVkaWFLZXlNZXNz
YWdlRXZlbnQuCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3Nh
Z2VFdmVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVu
dC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQ6Ok1lZGlh
S2V5TWVzc2FnZUV2ZW50SW5pdCk6IEluaXRpYWxpemVyIG5vdyBvbmx5IHRha2VzIG1lc3NhZ2Ug
YW5kIGRlc3RpbmF0aW9uVVJMCisgICAgICAgICAgICBwYXJhbWV0ZXJzLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlNZXNzYWdlRXZlbnQ6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50KTogU2ltcGxl
IGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlRXZlbnQ6On5N
ZWRpYUtleU1lc3NhZ2VFdmVudCk6IFNpbXBsZSBkZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlNZXNzYWdlRXZlbnQ6OmludGVyZmFjZU5hbWUpOiBTdGFuZGFyZCBpbnRlcmZh
Y2VOYW1lLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdl
RXZlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50Lmgu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVudDo6Y3JlYXRlKTogU2ltcGxl
IGNvbnN0cnVjdGlvbiB3cmFwcGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdl
RXZlbnQ6Om1lc3NhZ2UpOiBTaW1wbGUgYWNjZXNzb3IgZm9yIG1fbWVzc2FnZS4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50OjpkZXN0aW5hdGlvblVSTCk6IFNpbXBsZSBh
Y2Nlc3NvciBmb3IgbV9kZXN0aW5hdGlvblVSTC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUtleUV2ZW50LmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhS2V5RXZlbnQuaC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5TmVlZGVkRXZl
bnRJbml0OjpNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCk6IEluaXRpYWxpemVyIG5vdyBvbmx5IHRh
a2VzIGluaXREYXRhIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5TmVlZGVk
RXZlbnQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnQpOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleU5lZWRlZEV2ZW50Ojp+TWVkaWFLZXlOZWVkZWRFdmVudCk6IFNp
bXBsZSBkZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlOZWVkZWRFdmVudDo6
aW50ZXJmYWNlTmFtZSk6IFN0YW5kYXJkIGludGVyZmFjZU5hbWUuCisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50Lmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVudC5oLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFL
ZXlOZWVkZWRFdmVudDo6Y3JlYXRlKTogU2ltcGxlIGNvbnN0cnVjdGlvbiB3cmFwcGVyLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlOZWVkZWRFdmVudDo6aW5pdERhdGEpOiBTaW1wbGUgYWNj
ZXNzb3IgZm9yIG1faW5pdERhdGEuCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleU5lZWRlZEV2ZW50LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUtleUV2ZW50LmlkbC4KKworICAgICAgICBNZWRpYUtleVNlc3Npb24gaXMgYSBuZXcgY2xh
c3MgdGhhdCBtYXBzIGtleXMgYW5kIGtleSByZXF1ZXN0cyB0byBhIGdpdmVuIHNlc3Npb24gSUQ6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKTogU2ltcGxl
IGNvbnN0cnVjdGlvbiB3cmFwcGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9u
OjpNZWRpYUtleVNlc3Npb24pOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVNlc3Npb246On5NZWRpYUtleVNlc3Npb24pOiBTaW1wbGUgZGVzdHJ1Y3Rvcjsg
Y2FsbHMgY2xvc2UoKS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6c2V0RXJy
b3IpOiBTaW1wbGUgc2V0dGVyIGZvciBtX2Vycm9yOworICAgICAgICAoV2ViQ29yZTo6TWVkaWFL
ZXlTZXNzaW9uOjpjbG9zZSk6IFRlbGwgdGhlIENETSB0byBjbGVhciBhbnkgc2F2ZWQgc2Vzc2lv
biBrZXlzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJl
cXVlc3QpOiBTdGFydCBhIG9uZS1zaG90IHRpbWVyLCBoYW5kbGVkIGluIGtleVJlcXVlc3RUaW1l
ckZpcmVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjprZXlSZXF1ZXN0VGlt
ZXJGaXJlZCk6IEZvbGxvdyB0aGUgc3RlcHMgaW4gdGhlIHNwZWM7IGFzayB0aGUgQ0RNIHRvIGdl
bmVyYXRlIGEga2V5IHJlcXVlc3QuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246
OmFkZEtleSk6IFN0YXJ0IGEgb25lLXNob3QgdGltZXIsIGhhbmRsZWQgaW4gYWRkS2V5VGltZXJG
aXJlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGltZXJGaXJl
ZCk6IEZvbGxvdyB0aGUgc3RlcHMgaW4gdGhlIHNwZWM7IHByb3ZpZGUgdGhlIGtleSBkYXRhIHQg
b3RoZSBDRE0uCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmtleVN5c3Rl
bSk6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9rZXlTeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUtleVNlc3Npb246OnNlc3Npb25JZCk6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9zZXNzaW9u
SWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmVycm9yKTogU2ltcGxlIGFj
Y2Vzc29yIGZvciBtX2Vycm9yOworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmlkbDoKKworICAgICAgICBNZWRpYUtleVNlc3Npb24gaW5oZXJpdHMgZnJv
bSBFdmVudFRhcmdldCwgYW5kIG11c3Qgb3ZlcnJpZGUgdGhlIHB1cmUgdmlydHVhbCBmdW5jdGlv
bnMgaW4gdGhhdCBjbGFzczoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9u
OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6
cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpkZXJl
ZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6ZXZlbnRU
YXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6ZW5zdXJlRXZl
bnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk6CisKKyAgICAgICAgTWVkaWFLZXlzIGlzIGEgbmV3IGNsYXNzIHRo
YXQgZW5jYXBzdWxhdGVzIGEgQ0RNIGFuZCBhIG51bWJlciBvZiBrZXkgc2Vzc2lvbnM6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3JlYXRlKTogVGhyb3cgYW4gZXhjZXB0aW9uIGlmIHRo
ZSBrZXkgc3lzdGVtIHBhcmFtZXRlciBpcyB1bnN1cHBvcnRlZDsgY3JlYXRlIGEgQ0RNIG9iamVj
dAorICAgICAgICAgICAgYW5kIGEgbmV3IE1lZGlhS2V5cyBzZXNzaW9uLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlzOjpNZWRpYUtleXMpOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleXM6On5NZWRpYUtleXMpOiBTaW1wbGUgZGVzdHJ1Y3Rvci4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbik6IEZvbGxvdyB0aGUgc3Bl
YyBhbmQgY3JlYXRlIGEgbmV3IGtleSBzZXNzaW9uLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlzLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUVycm9yLmlkbC4KKworICAgICAgICBQcm92aWRlIGEgbmV3IGludGVyZmFjZSB0byBIVE1MTWVk
aWFFbGVtZW50IGZvciBNZWRpYVBsYXllciB3aGljaCBkb2VzIG5vdCByZXF1aXJlIGEgc2Vzc2lv
bklkIG9yIGEga2V5IHN5c3RlbToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVk
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjprZXlOZWVkZWQpOgorCisgICAgICAgIE1lZGlhS2V5
RXJyb3Igbm93IGhhcyBhIHN5c3RlbUNvZGUgcGFyYW1ldGVyIGFuZCBtZW1iZXIgdmFyaWFibGUu
CisgICAgICAgICogaHRtbC9NZWRpYUtleUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUtleUVycm9yOjpjcmVhdGUpOiBUYWtlIGEgc3lzdGVtQ29kZSBwYXJhbWV0ZXIgd2l0aCBhIGRl
ZmF1bHQgKDApIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlFcnJvcjo6TWVkaWFL
ZXlFcnJvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlFcnJvcjo6c3lzdGVt
Q29kZSk6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9zeXN0ZW1Db2RlLgorICAgICAgICAqIGh0bWwv
TWVkaWFLZXlFcnJvci5pZGw6CisKKyAgICAgICAgQWRkIG5ldyBtZXRob2RzIHRvIEhUTUxNZWRp
YUVsZW1lbnQgdG8gc3VwcG9ydCBNZWRpYUtleXMuIFN1cHBvcnQgZGlmZmVyZW50IGluaXRpYWxp
emVyCisgICAgICAgIGZvciB0aGUgTWVkaWFLZXlOZWVkZWRFdmVudC4KKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6c2V0TWVkaWFLZXlzKTogU2ltcGxlIHNldHRlciBmb3IgbV9tZWRpYUtleXMuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6IFRoaXMg
dmVyc2lvbiB0YWtlcyBmZXdlciBwYXJhbWV0ZXJzCisgICAgICAgICAgICB0aGFuIHRoZSBkZXBy
ZWNhdGVkIHZlcnNpb24uCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYUtleXMpOiBTaW1wbGUgYWNjZXNz
b3IgZm9yIG1fbWVkaWFLZXlzLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6
IEFkZCB0aGUgbWVkaWFLZXlzIGF0dHJpYnV0ZS4KKworICAgICAgICBBZGQgYW4gRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQV9WMikgY2hlY2sgdG8gdGhlIGV4aXN0aW5nIEVOQUJMRShFTkNSWVBURURf
TUVESUEpIG9uZToKKyAgICAgICAgKiBodG1sL01lZGlhRXJyb3IuaDoKKyAgICAgICAgKiBodG1s
L01lZGlhRXJyb3IuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RNZWRpYUVuZ2luZUZvclR5cGVBbmRDb2RlY3Mp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjprZXlOZWVkZWQpOiBUaGlzIHZlcnNpb24gdGFrZXMgZmV3ZXIgcGFyYW1ldGVy
cyB0aGFuIHRoZQorICAgICAgICAgICAgZGVwcmVjYXRlZCB2ZXJzaW9uLgorCisgICAgICAgIFN1
cHBvcnQgdGhlIG5ldyB2ZXJzaW9uIG9mIGNhblBsYXlUeXBlIHdoaWNoIHRha2VzIGFuIGV4dHJh
IHBhcmFtZXRlcjoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZXh0ZW5kZWRTdXBwb3J0c1R5cGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpyZWdpc3Rlck1l
ZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojpl
eHRlbmRlZFN1cHBvcnRzVHlwZSk6CisKKyAgICAgICAgQWRkIGEgbW9jayBDRE0gZm9yIHVzZSB3
aXRoaW4gRFJUIGFuZCBXS1RSIHRvIHRlc3QgdGhlIE1lZGlhS2V5cyBhbmQgTWVkaWFLZXlTZXNz
aW9uCisgICAgICAgIEFQSXMgYW5kIGV2ZW50czoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RNKTog
QWRkIHRoZSBNb2NrQ0RNIGNsYXNzIHRvIHRoZSBDRE0gZmFjdG9yaWVzLgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOiBBZGQg
dGhlIGluaXRpYWxpemVNb2NrQ0RNKCkgbWV0aG9kLgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NE
TS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydHNLZXlTeXN0
ZW0pOiBPbmx5IHN1cHBvcnRzIHRoZSAnY29tLndlYmNvcmUubW9jaycga2V5IHN5c3RlbS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnN1cHBvcnRzTUlNRVR5cGUpOiBPbmx5IHN1cHBvcnRz
IHRoZSAndmlkZW8vbW9jaycgbWltZSB0eXBlLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6
Z2VuZXJhdGVTZXNzaW9uSWQpOiBSZXR1cm4gYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgbnVt
YmVyLgorICAgICAgICAoV2ViQ29yZTo6aW5pdERhdGFQcmVmaXgpOiBTdGF0aWMgbWV0aG9kIHdo
aWNoIHJldHVybnMgYSBVaW50OEFycmF5IGNvbnRhaW5pbmcgJ21vY2snLgorICAgICAgICAoV2Vi
Q29yZTo6a2V5UHJlZml4KTogU3RhdGljIG1ldGhvZCB3aGljaCByZXR1cm5zIGEgVWludDhBcnJh
eSBjb250YWluaW5nICdrZXknLgorICAgICAgICAoV2ViQ29yZTo6a2V5UmVxdWVzdCk6IFN0YXRp
YyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIFVpbnQ4QXJyYXkgY29udGFpbmluZyAncmVxdWVzdCcu
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpnZW5lcmF0ZUtleVJlcXVlc3QpOiBJZ25vcmVz
IHRoZSBwYXJhbWV0ZXJzIGFuZCByZXR1cm5zIGEga2V5UmVxdWVzdCgpIGFycmF5LgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja0NETTo6Y2xlYXJLZXlzRnJvbVNlc3Npb25JZCk6IE5vLW9wLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NETTo6YWRkS2V5Rm9yU2Vzc2lvbklkKTogQ2hlY2tzIHRoYXQg
dGhlIGtleSBzdGFydHMgd2l0aCB0aGUga2V5UHJlZml4KCkgYXJyYXkuCisgICAgICAgICogdGVz
dGluZy9Nb2NrQ0RNLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06On5Nb2NrQ0RNKTogU2ltcGxlIGRlc3RydWN0
b3IuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpNb2NrQ0RNKTogU2ltcGxlIGNvbnN0cnVj
dG9yLgorCisgICAgICAgIEFkZCB0aGUgbmV3IGNsYXNzZXMgdG8gdGhlIGJ1aWx0IHN5c3RlbToK
KyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBNaXNj
ZWxhbmVvdXMgY2hhbmdlczoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5pbjogQWRkIHRoZSB0
d28gbmV3IGV2ZW50IHR5cGVzLCBNZWRpYUtleU1lc3NhZ2VFdmVudCBhbmQgTWVkaWFLZXlOZWVk
ZWRFdmVudC4KKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOiBBZGQgdGhlIG5l
dyBFdmVudFRhcmdldCwgTWVkaWFLZXlTZXNzaW9uLgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmlkbDogQWRkIGNvbnN0cnVjdG9ycyBmb3IgdGhlIG5ldyBjbGFzc2VzIHRvIHRoZSB3aW5kb3cg
b2JqZWN0LgorCiAyMDEyLTA5LTE5ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViQ29yZSBwYXJ0IG9mIGFkZGluZyBhIHNldHRpbmcgYW5kIEFQSSBmb3IgZGlz
YWJsaW5nIHNjcmVlbiBmb250IHN1YnN0aXR1dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmlu
ZGV4IGVjMzVjZjY3M2Y0YTBmZDIxMjdjZjU1NWNmNGVjNzAyNzhjM2Q2NjcuLmY4MGMwMmM5ZDQ0
NjBjMzc0OTA4NmNjNDgyN2ZmM2IwMDBkMjM0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcK
QEAgLTU3LDYgKzU3LDExIEBAIEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQgPSBFTkFCTEVfREVUQUlM
U19FTEVNRU5UOwogRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTiA9IDsKIEVOQUJMRV9ESUFMT0df
RUxFTUVOVCA9IDsKIEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEID0gOworRU5BQkxFX0VOQ1JZUFRF
RF9NRURJQV9WMiA9ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl8kKFJFQUxfUExBVEZPUk1f
TkFNRSkpOworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3ggPSAkKEVOQUJMRV9FTkNS
WVBURURfTUVESUFfbWFjb3N4XyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKK0VO
QUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEwNzAgPSA7CitFTkFCTEVfRU5DUllQVEVE
X01FRElBX1YyX21hY29zeF8xMDgwID0gOworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNv
c3hfMTA5MCA9IEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI7CiBFTkFCTEVfRklMRV9TWVNURU0g
PSA7CiBFTkFCTEVfRklMVEVSUyA9ICQoRU5BQkxFX0ZJTFRFUlNfJChSRUFMX1BMQVRGT1JNX05B
TUUpKTsKIEVOQUJMRV9GSUxURVJTX21hY29zeCA9IEVOQUJMRV9GSUxURVJTOwpAQCAtMTQwLDQg
KzE0NSw0IEBAIEVOQUJMRV9XSURHRVRfUkVHSU9OX21hY29zeCA9IEVOQUJMRV9XSURHRVRfUkVH
SU9OOwogRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VSUzsKIEVOQUJMRV9YU0xUID0gRU5B
QkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChF
TkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVO
QUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQp
ICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0VYQ0xVU0lP
TlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSElFUkFSQ0hJRVMpICQoRU5B
QkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04p
ICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0hBREVSUykgJChFTkFCTEVfQ1NT
X0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BPU0lUSU9OKSAkKEVOQUJMRV9DU1Nf
VkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFRfREVDT1JBVElPTikgJChFTkFCTEVfQ1VTVE9N
X1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFU
QUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVU
QUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJQUxP
R19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9GSUxFX1NZU1RF
TSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dB
TUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpICQo
RU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1FX1NFQU1MRVNTKSAkKEVOQUJMRV9J
TkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9E
QVRFVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfV0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTEVHQUNZX0NT
U19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJM
RV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJM
RV9MSU5LX1BSRVJFTkRFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0Up
ICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5B
QkxFX01IVE1MKSAkKEVOQUJMRV9NSUNST0RBVEEpICQoRU5BQkxFX01VVEFUSU9OX09CU0VSVkVS
UykgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05PVElGSUNBVElP
TlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BST0dSRVNTX0VMRU1F
TlQpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChF
TkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFET1dfRE9NKSAkKEVOQUJMRV9TSEFS
RURfV09SS0VSUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9TVFlMRV9TQ09QRUQp
ICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9T
VkdfRk9OVFMpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVEVYVF9OT1RJRklD
QVRJT05TX09OTFkpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVU5ET19N
QU5BR0VSKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1dF
QkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9X
RUJfVElNSU5HKSAkKEVOQUJMRV9XSURHRVRfUkVHSU9OKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVO
QUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChF
TkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVO
QUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQp
ICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0VYQ0xVU0lP
TlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSElFUkFSQ0hJRVMpICQoRU5B
QkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04p
ICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0hBREVSUykgJChFTkFCTEVfQ1NT
X0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BPU0lUSU9OKSAkKEVOQUJMRV9DU1Nf
VkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFRfREVDT1JBVElPTikgJChFTkFCTEVfQ1VTVE9N
X1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFU
QUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVU
QUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJQUxP
R19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9FTkNSWVBURURf
TUVESUFfVjIpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJM
RV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04p
ICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJM
RV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lO
UFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQ
RV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVU
X1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBU
X0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVf
TEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQo
RU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJTktfUFJFUkVOREVSKSAkKEVOQUJMRV9N
QVRITUwpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykg
JChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01JQ1JPREFU
QSkgJChFTkFCTEVfTVVUQVRJT05fT0JTRVJWRVJTKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVO
VF9VVElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZ
X0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxF
X1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5B
QkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUUxfREFU
QUJBU0UpICQoRU5BQkxFX1NUWUxFX1NDT1BFRCkgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdf
RE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVYVF9BVVRP
U0laSU5HKSAkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWSkgJChFTkFCTEVfVE9VQ0hf
SUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VTkRPX01BTkFHRVIpICQoRU5BQkxFX1ZJREVPKSAkKEVO
QUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChF
TkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dJREdFVF9S
RUdJT04pICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hTTFQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXgg
MGJlNGJiMDdkYzI4ZmM5MTE2MmVkMzA2NWFjYjE1MjA5ZjIxZDNlMi4uZGQ1MWVkNzlhY2MzZDZi
MGJjYjk2NjJmNzQzYzllYzhlYTQ2ODVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMTQ4LDYgKzExNDgs
MTAgQEAKICNkZWZpbmUgV1RGX1VTRV9DT1JFTUVESUEgMQogI2VuZGlmCiAKKyNpZiBQTEFURk9S
TShNQUMpICYmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA5MAorI2RlZmluZSBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyIDEKKyNlbmRpZgor
CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkgfHwg
KFBMQVRGT1JNKFdJTikgJiYgIU9TKFdJTkNFKSAmJiAhUExBVEZPUk0oV0lOX0NBSVJPKSkgfHwg
UExBVEZPUk0oQkxBQ0tCRVJSWSkKICNkZWZpbmUgV1RGX1VTRV9SRVFVRVNUX0FOSU1BVElPTl9G
UkFNRV9USU1FUiAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggNDQzOTNiOTBlMWU3NGVkNjU5YTFm
NjY0YzQ3M2NmN2JlN2Y0OTYzMy4uMzE1NGIwZDZmY2JhMTBhZmM4MzdiYzNiMGY3NTVlNGRjYmNh
ZTJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKQEAgLTU4LDYgKzU4LDExIEBAIEVOQUJMRV9ERVRBSUxTX0VMRU1F
TlQgPSBFTkFCTEVfREVUQUlMU19FTEVNRU5UOwogRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTiA9
IDsKIEVOQUJMRV9ESUFMT0dfRUxFTUVOVCA9IDsKIEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEID0g
OworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiA9ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9W
Ml8kKFJFQUxfUExBVEZPUk1fTkFNRSkpOworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNv
c3ggPSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XyQoVEFSR0VUX01BQ19PU19Y
X1ZFUlNJT05fTUFKT1IpKTsKK0VOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEwNzAg
PSA7CitFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeF8xMDgwID0gOworRU5BQkxFX0VO
Q1JZUFRFRF9NRURJQV9WMl9tYWNvc3hfMTA5MCA9IEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI7
CiBFTkFCTEVfRklMRV9TWVNURU0gPSA7CiBFTkFCTEVfRklMVEVSUyA9ICQoRU5BQkxFX0ZJTFRF
UlNfJChSRUFMX1BMQVRGT1JNX05BTUUpKTsKIEVOQUJMRV9GSUxURVJTX21hY29zeCA9IEVOQUJM
RV9GSUxURVJTOwpAQCAtMTQxLDQgKzE0Niw0IEBAIEVOQUJMRV9XSURHRVRfUkVHSU9OX21hY29z
eCA9IEVOQUJMRV9XSURHRVRfUkVHSU9OOwogRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VS
UzsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5B
QkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJM
RV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykg
JChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9D
U1NfSElFUkFSQ0hJRVMpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVf
Q1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1Nf
U0hBREVSUykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BP
U0lUSU9OKSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFRfREVDT1JB
VElPTikgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRf
U1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZF
Ul9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0RJQUxPR19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FE
KSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRlVMTFND
UkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9ISUdIX0RQSV9DQU5WQVMpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1F
X1NFQU1MRVNTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVF
Q0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkg
JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElN
RUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJ
TUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dF
UikgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9O
T1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9M
SU5LX1BSRUZFVENIKSAkKEVOQUJMRV9MSU5LX1BSRVJFTkRFUikgJChFTkFCTEVfTUFUSE1MKSAk
KEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxF
X01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NSUNST0RBVEEpICQoRU5B
QkxFX01VVEFUSU9OX09CU0VSVkVSUykgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMp
ICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQo
RU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNU
X0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFE
T1dfRE9NKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAk
KEVOQUJMRV9TVFlMRV9TQ09QRUQpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0RPTV9PQkpD
X0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykg
JChFTkFCTEVfVEVYVF9OT1RJRklDQVRJT05TX09OTFkpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9B
RElORykgJChFTkFCTEVfVU5ET19NQU5BR0VSKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklE
RU9fVFJBQ0spICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dF
Ql9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XSURHRVRfUkVHSU9OKSAk
KEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5B
QkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJM
RV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykg
JChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9D
U1NfSElFUkFSQ0hJRVMpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVf
Q1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1Nf
U0hBREVSUykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BP
U0lUSU9OKSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFRfREVDT1JB
VElPTikgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRf
U1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZF
Ul9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0RJQUxPR19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FE
KSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVO
QUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkg
JChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVf
SUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xP
UikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1F
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVf
TU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVL
KSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRP
Ul9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FD
WV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJTktf
UFJFUkVOREVSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFC
TEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhU
TUwpICQoRU5BQkxFX01JQ1JPREFUQSkgJChFTkFCTEVfTVVUQVRJT05fT0JTRVJWRVJTKSAkKEVO
QUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChF
TkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChF
TkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9T
Q1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JL
RVJTKSAkKEVOQUJMRV9TUUxfREFUQUJBU0UpICQoRU5BQkxFX1NUWUxFX1NDT1BFRCkgJChFTkFC
TEVfU1ZHKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05U
UykgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNf
T05MWSkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VTkRPX01BTkFHRVIp
ICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfV0VCR0wpICQo
RU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1J
TkcpICQoRU5BQkxFX1dJREdFVF9SRUdJT04pICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hT
TFQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZjc3NTU1MjM5MWZmODQxNGNi
ZTQ1ZmY4MGM4MGE4ZGNhZjlhZDZlYS4uYjFhNWI4ZjVjMWQwNjkxNzM4NDc3OTRiOGZkMmIyYTQ2
NTk4NzBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yOCw2ICsyOCw3IEBA
CiAKIFZQQVRIID0gXAogICAgICQoV2ViQ29yZSkgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0gXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2lu
ZGV4ZWRkYiBcCkBAIC02MSw2ICs2MiwxMCBAQCBWUEFUSCA9IFwKICMKIAogQklORElOR19JRExT
ID0gXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3Nh
Z2VFdmVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleU5lZWRlZEV2ZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3Rl
bS9ET01GaWxlU3lzdGVtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RE9NRmlsZVN5c3RlbVN5bmMuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3Rl
bS9ET01XaW5kb3dGaWxlU3lzdGVtLmlkbCBcCkBAIC0zNTcsNiArMzYyLDcgQEAgQklORElOR19J
RExTID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9JbWFnZURhdGEuaWRsIFwKICAgICAkKFdlYkNv
cmUpL2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL01lZGlh
RXJyb3IuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvTWVkaWFLZXlFcnJvci5pZGwgXAogICAg
ICQoV2ViQ29yZSkvaHRtbC9NaWNyb0RhdGFJdGVtVmFsdWUuaWRsIFwKICAgICAkKFdlYkNvcmUp
L2h0bWwvUmFkaW9Ob2RlTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9UZXh0TWV0cmlj
cy5pZGwgXApAQCAtODQ4LDYgKzg1NCwxMCBAQCBpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX0RF
VEFJTFNfRUxFTUVOVCwkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfREVUQUlMU19FTAogICAg
IEhUTUxfRkxBR1MgOj0gJChIVE1MX0ZMQUdTKSBFTkFCTEVfREVUQUlMU19FTEVNRU5UPTEKIGVu
ZGlmCiAKK2lmZXEgKCQoZmluZHN0cmluZyBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyLCQoRkVB
VFVSRV9ERUZJTkVTKSksIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpCisJSFRNTF9GTEFHUyA6
PSAkKEhUTUxfRkxBR1MpIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI9MQorZW5kaWYKKwogaWZl
cSAoJChmaW5kc3RyaW5nIEVOQUJMRV9NRVRFUl9FTEVNRU5ULCQoRkVBVFVSRV9ERUZJTkVTKSks
IEVOQUJMRV9NRVRFUl9FTEVNRU5UKQogICAgIEhUTUxfRkxBR1MgOj0gJChIVE1MX0ZMQUdTKSBF
TkFCTEVfTUVURVJfRUxFTUVOVD0xCiBlbmRpZgpAQCAtOTY1LDYgKzk3NSw3IEBAIHByZXByb2Nl
c3NfaWRsc19zY3JpcHQgPSBwZXJsICQoYWRkcHJlZml4IC1JICQoV2ViQ29yZSkvLCAkKHNvcnQg
JChkaXIgJCgxKSkpKSAkCiAKIElETF9JTkNMVURFUyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvYmF0dGVyeSBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2dh
bWVwYWQgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQwYzYy
NWNjZDQ0ODFhMTk1OWQyY2UyZWQ5NmU5NzExOTdkZTNkOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtMCwwICsxLDEz
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDRE0uaCIK
KworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlICJDRE1Qcml2YXRl
LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlFcnJvci5oIgorI2luY2x1ZGUgIk1lZGlhS2V5cy5oIgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0cnVjdCBDRE1GYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDRE1GYWN0b3J5
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgQ0RNRmFjdG9yeShDcmVh
dGVDRE0gY29uc3RydWN0b3IsIENETVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVt
KQorICAgICAgICA6IGNvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKQorICAgICAgICAsIHN1cHBvcnRz
S2V5U3lzdGVtKHN1cHBvcnRzS2V5U3lzdGVtKQorICAgIHsKKyAgICB9CisKKyAgICBDcmVhdGVD
RE0gY29uc3RydWN0b3I7CisgICAgQ0RNU3VwcG9ydHNLZXlTeXN0ZW0gc3VwcG9ydHNLZXlTeXN0
ZW07Cit9OworCitzdGF0aWMgVmVjdG9yPENETUZhY3RvcnkqPiYgaW5zdGFsbGVkQ0RNRmFjdG9y
aWVzKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxDRE1GYWN0b3J5Kj4sIGNk
bXMsICgpKTsKKyAgICBzdGF0aWMgYm9vbCBxdWVyaWVkQ0RNcyA9IGZhbHNlOworICAgIGlmICgh
cXVlcmllZENETXMpIHsKKyAgICAgICAgcXVlcmllZENETXMgPSB0cnVlOworCisgICAgICAgIC8v
IFRPRE86IGluaXRpYWxpemUgc3BlY2lmaWMgVUEgQ0RNcy4KKyAgICB9CisKKyAgICByZXR1cm4g
Y2RtczsKK30KKwordm9pZCBDRE06OnJlZ2lzdGVyQ0RNRmFjdG9yeShDcmVhdGVDRE0gY29uc3Ry
dWN0b3IsIENETVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtKQoreworICAgIGlu
c3RhbGxlZENETUZhY3RvcmllcygpLmFwcGVuZChuZXcgQ0RNRmFjdG9yeShjb25zdHJ1Y3Rvciwg
c3VwcG9ydHNLZXlTeXN0ZW0pKTsKK30KKworYm9vbCBDRE06OnN1cHBvcnRzS2V5U3lzdGVtKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAgIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIGNkbUZh
Y3RvcmllcyA9IGluc3RhbGxlZENETUZhY3RvcmllcygpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY2RtRmFjdG9yaWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChjZG1GYWN0b3Jp
ZXNbaV0tPnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgQ0RNRmFjdG9yeSog
Q0RNRmFjdG9yeUZvcktleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKK3sKKyAgICBW
ZWN0b3I8Q0RNRmFjdG9yeSo+JiBjZG1GYWN0b3JpZXMgPSBpbnN0YWxsZWRDRE1GYWN0b3JpZXMo
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNkbUZhY3Rvcmllcy5zaXplKCk7ICsraSkg
eworICAgICAgICBpZiAoY2RtRmFjdG9yaWVzW2ldLT5zdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0
ZW0pKQorICAgICAgICAgICAgcmV0dXJuIGNkbUZhY3Rvcmllc1tpXTsKKyAgICB9CisgICAgcmV0
dXJuIDA7Cit9CisKK1Bhc3NPd25QdHI8Q0RNPiBDRE06OmNyZWF0ZShjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSkKK3sKKyAgICBpZiAoIXN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDRE0oa2V5U3lz
dGVtKSk7Cit9CisKK0NETTo6Q0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQorICAgIDogbV9r
ZXlTeXN0ZW0oa2V5U3lzdGVtKQoreworICAgIG1fcHJpdmF0ZSA9IENETUZhY3RvcnlGb3JLZXlT
eXN0ZW0oa2V5U3lzdGVtKS0+Y29uc3RydWN0b3IodGhpcyk7Cit9CisKK0NETTo6fkNETSgpCit7
Cit9CisKK2Jvb2wgQ0RNOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNNSU1FVHlwZShtaW1lVHlwZSk7Cit9
CisKK1N0cmluZyBDRE06OmdlbmVyYXRlU2Vzc2lvbklkKCkKK3sKKyAgICByZXR1cm4gbV9wcml2
YXRlLT5nZW5lcmF0ZVNlc3Npb25JZCgpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IENE
TTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkq
IGluaXREYXRhLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgU3RyaW5nJiBkZXN0aW5hdGlvblVS
TCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkK
K3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5nZW5lcmF0ZUtleVJlcXVlc3QobWltZVR5cGUsIGlu
aXREYXRhLCBzZXNzaW9uSWQsIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUp
OworfQorCitib29sIENETTo6YWRkS2V5Rm9yU2Vzc2lvbklkKFVpbnQ4QXJyYXkqIGtleSwgY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVu
c2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpCit7Cisg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+YWRkS2V5Rm9yU2Vzc2lvbklkKGtleSwgc2Vzc2lvbklkLCBu
ZXh0TWVzc2FnZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKK30KKwordm9pZCBDRE06OmNsZWFy
S2V5c0Zyb21TZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCit7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+Y2xlYXJLZXlzRnJvbVNlc3Npb25JZChzZXNzaW9uSWQpOworfQorCit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2IzNTk2MjAzNzAxMGU0OWVh
ODU1ODY5MzBlMjZiNTM1Nzk0Y2M1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgQ0RNX2gKKyNkZWZpbmUgQ0RNX2gKKworI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUFfVjIpCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYUtleUVy
cm9yOworY2xhc3MgTWVkaWFLZXlTZXNzaW9uOworY2xhc3MgTWVkaWFLZXlzOworCitjbGFzcyBD
RE07CitjbGFzcyBDRE1Qcml2YXRlSW50ZXJmYWNlOworCit0eXBlZGVmIFBhc3NPd25QdHI8Q0RN
UHJpdmF0ZUludGVyZmFjZT4gKCpDcmVhdGVDRE0pKENETSopOwordHlwZWRlZiBib29sICgqQ0RN
U3VwcG9ydHNLZXlTeXN0ZW0pKGNvbnN0IFN0cmluZyYpOworCitjbGFzcyBDRE0geworcHVibGlj
OgorICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpOworICAg
IHN0YXRpYyBQYXNzT3duUHRyPENETT4gY3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsK
KyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckNETUZhY3RvcnkoQ3JlYXRlQ0RNLCBDRE1TdXBwb3J0
c0tleVN5c3RlbSk7CisgICAgfkNETSgpOworCisgICAgYm9vbCBzdXBwb3J0c01JTUVUeXBlKGNv
bnN0IFN0cmluZyYpOworICAgIFN0cmluZyBnZW5lcmF0ZVNlc3Npb25JZCgpOworICAgIFBhc3NS
ZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgU3RyaW5n
JiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9u
ZyYgc3lzdGVtQ29kZSk7CisgICAgdm9pZCBjbGVhcktleXNGcm9tU2Vzc2lvbklkKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKTsKKyAgICBib29sIGFkZEtleUZvclNlc3Npb25JZChVaW50OEFycmF5
KiwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3Nh
Z2UsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUp
OworCisgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2tleVN5
c3RlbTsgfQorCitwcml2YXRlOgorICAgIENETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CisK
KyAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CisgICAgT3duUHRyPENETVByaXZhdGVJbnRlcmZhY2U+
IG1fcHJpdmF0ZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUFf
VjIpCisKKyNlbmRpZiAvLyBDRE1faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjAwM2NiZGJiZmM4ZmVhZWFj
MmUyOTNmYjkxMmI1YmNlNzRmYWIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKQEAgLTAsMCArMSw1MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQ0RNUHJpdmF0ZV9oCisjZGVmaW5lIENETVByaXZhdGVfaAorCisj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENETVByaXZhdGVJbnRlcmZh
Y2UgeworcHVibGljOgorICAgIENETVByaXZhdGVJbnRlcmZhY2UoKSB7IH0KKyAgICB2aXJ0dWFs
IH5DRE1Qcml2YXRlSW50ZXJmYWNlKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNN
SU1FVHlwZShjb25zdCBTdHJpbmcmKSA9IDA7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBnZW5lcmF0
ZVNlc3Npb25JZCgpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZ2Vu
ZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXRE
YXRhLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5z
aWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkgPSAwOwor
CisgICAgdmlydHVhbCB2b2lkIGNsZWFyS2V5c0Zyb21TZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkS2V5Rm9yU2Vzc2lvbklkKFVpbnQ4
QXJyYXkqLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0
TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVt
Q29kZSkgPSAwOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9W
MikKKworI2VuZGlmIC8vIENETVByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YTljODQzYTY1MjFmOWIxYzdmMmQ5YmJiZjIwMzZjNDNlN2FjYTc5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleU1lc3NhZ2VFdmVudC5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1
ZGUgIk1lZGlhS2V5TWVzc2FnZUV2ZW50LmgiCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisj
aW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRp
YUtleU1lc3NhZ2VFdmVudEluaXQ6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCgpCit7Cit9CisK
K01lZGlhS2V5TWVzc2FnZUV2ZW50OjpNZWRpYUtleU1lc3NhZ2VFdmVudCgpCit7Cit9CisKK01l
ZGlhS2V5TWVzc2FnZUV2ZW50OjpNZWRpYUtleU1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGNvbnN0IE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCisg
ICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKKyAgICAsIG1fbWVzc2FnZShpbml0aWFsaXpl
ci5tZXNzYWdlKQorICAgICwgbV9kZXN0aW5hdGlvblVSTChpbml0aWFsaXplci5kZXN0aW5hdGlv
blVSTCkKK3sKK30KKworTWVkaWFLZXlNZXNzYWdlRXZlbnQ6On5NZWRpYUtleU1lc3NhZ2VFdmVu
dCgpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFLZXlNZXNzYWdlRXZlbnQ6Omlu
dGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNl
Rm9yTWVkaWFLZXlNZXNzYWdlRXZlbnQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5TWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNmZjAyMTkxMmU0MDAz
MGZjNDQ2YjRkMTVmNWY2MmNiOGJlNTMzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaApAQCAtMCww
ICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhS2V5TWVzc2FnZUV2ZW50X2gKKyNk
ZWZpbmUgTWVkaWFLZXlNZXNzYWdlRXZlbnRfaAorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QV9WMikKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlFcnJvci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQg
OiBwdWJsaWMgRXZlbnRJbml0IHsKKyAgICBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQoKTsKKwor
ICAgIFJlZlB0cjxVaW50OEFycmF5PiBtZXNzYWdlOworICAgIFN0cmluZyBkZXN0aW5hdGlvblVS
TDsKK307CisKK2NsYXNzIE1lZGlhS2V5TWVzc2FnZUV2ZW50IDogcHVibGljIEV2ZW50IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5NZWRpYUtleU1lc3NhZ2VFdmVudCgpOworCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFLZXlNZXNzYWdlRXZlbnQ+IGNyZWF0ZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhS2V5TWVzc2FnZUV2ZW50KTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleU1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0JiBpbml0aWFs
aXplcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFLZXlNZXNzYWdl
RXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCisgICAgVWludDhBcnJheSogbWVz
c2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZS5nZXQoKTsgfQorICAgIFN0cmluZyBkZXN0
aW5hdGlvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25VUkw7IH0KKworcHJpdmF0
ZToKKyAgICBNZWRpYUtleU1lc3NhZ2VFdmVudCgpOworICAgIE1lZGlhS2V5TWVzc2FnZUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0
JiBpbml0aWFsaXplcik7CisKKyAgICBSZWZQdHI8VWludDhBcnJheT4gbV9tZXNzYWdlOworICAg
IFN0cmluZyBtX2Rlc3RpbmF0aW9uVVJMOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
MTBmZDA1ZGI5NmMxYjM2ZTkyNjkxMDY3NDQ3ZjZlYWYxNjg3NDk0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VF
dmVudC5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGVuY3J5cHRlZG1l
ZGlhIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUVOQ1JZUFRFRF9N
RURJQV9WMiwKKyAgICAgICAgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhLAorICAg
ICAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50IAorICAgIF0gTWVkaWFLZXlNZXNzYWdlRXZl
bnQgOiBFdmVudCB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVaW50OEFycmF5IG1lc3Nh
Z2U7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3Ry
dWN0b3JdIERPTVN0cmluZyBkZXN0aW5hdGlvblVSTDsKKyAgICB9OworCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5l
ZWRlZEV2ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTA2ZjhkNTA2MzE3ZWEzZmI5YTgzNzg3OWZmODAx
YzhmOTY3YTI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmNwcApAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
X1YyKQorCisjaW5jbHVkZSAiTWVkaWFLZXlOZWVkZWRFdmVudC5oIgorCisjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworTWVkaWFLZXlOZWVkZWRFdmVudEluaXQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnRJbml0
KCkKK3sKK30KKworTWVkaWFLZXlOZWVkZWRFdmVudDo6TWVkaWFLZXlOZWVkZWRFdmVudCgpCit7
Cit9CisKK01lZGlhS2V5TmVlZGVkRXZlbnQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCYgaW5pdGlhbGl6
ZXIpCisgICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKKyAgICAsIG1faW5pdERhdGEoaW5p
dGlhbGl6ZXIuaW5pdERhdGEpCit7Cit9CisKK01lZGlhS2V5TmVlZGVkRXZlbnQ6On5NZWRpYUtl
eU5lZWRlZEV2ZW50KCkKK3sKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUtleU5lZWRl
ZEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygp
LmludGVyZmFjZUZvck1lZGlhS2V5TmVlZGVkRXZlbnQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2YWNlMzIz
M2EzZDFlZjRiZTZjN2QzMjVjZGRlYmI1ZjYyMDA5NzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaApA
QCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhS2V5TmVlZGVkRXZlbnRf
aAorI2RlZmluZSBNZWRpYUtleU5lZWRlZEV2ZW50X2gKKworI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUFfVjIpCisKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIk1lZGlhS2V5RXJyb3Iu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgTWVkaWFLZXlOZWVkZWRFdmVudElu
aXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKKyAgICBNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCgpOwor
CisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGluaXREYXRhOworfTsKKworY2xhc3MgTWVkaWFLZXlO
ZWVkZWRFdmVudCA6IHB1YmxpYyBFdmVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TWVkaWFL
ZXlOZWVkZWRFdmVudCgpOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFLZXlOZWVkZWRF
dmVudD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFL
ZXlOZWVkZWRFdmVudCk7CisgICAgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFLZXlO
ZWVkZWRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFL
ZXlOZWVkZWRFdmVudEluaXQmIGluaXRpYWxpemVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYUtleU5lZWRlZEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKSk7CisgICAg
fQorCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25z
dDsKKworICAgIFVpbnQ4QXJyYXkqIGluaXREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9pbml0RGF0
YS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIE1lZGlhS2V5TmVlZGVkRXZlbnQoKTsKKyAgICBN
ZWRpYUtleU5lZWRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFL
ZXlOZWVkZWRFdmVudEluaXQmIGluaXRpYWxpemVyKTsKKworICAgIFJlZlB0cjxVaW50OEFycmF5
PiBtX2luaXREYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleU5lZWRlZEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdmMTBiODRmNzNhMGVk
YWM4NGVmNmJkZjU5NDk4MTI3ODc3YzQwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwKQEAgLTAs
MCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGVuY3J5cHRlZG1lZGlhIHsKKworICAgIGlu
dGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMiwKKyAgICAg
ICAgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhLAorICAgICAgICBDb25zdHJ1Y3Rv
clRlbXBsYXRlPUV2ZW50IAorICAgIF0gTWVkaWFLZXlOZWVkZWRFdmVudCA6IEV2ZW50IHsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVpbnQ4QXJyYXkgaW5pdERhdGE7CisgICAgfTsKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVNlc3Npb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2MmExY2Q5OTBiZTViNGEyODYzZDRjNTNm
ZmM0ZDZmMjYzYzFiZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTAsMCArMSwyMjggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlTZXNzaW9u
LmgiCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjaW5jbHVkZSAiQ0RNLmgi
CisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgorI2lu
Y2x1ZGUgIk1lZGlhS2V5RXJyb3IuaCIKKyNpbmNsdWRlICJNZWRpYUtleU1lc3NhZ2VFdmVudC5o
IgorI2luY2x1ZGUgIk1lZGlhS2V5cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NS
ZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleVNlc3Npb246OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBNZWRpYUtleXMqIGtleXMsIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1lZGlhS2V5U2Vzc2lvbihjb250ZXh0LCBrZXlzLCBrZXlTeXN0ZW0sIHNlc3Npb25JZCkp
OworfQorCitNZWRpYUtleVNlc3Npb246Ok1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBNZWRpYUtleXMqIGtleXMsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
LCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKKyAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyKGNvbnRleHQpCisgICAgLCBtX2tleXMoa2V5cykKKyAgICAsIG1fa2V5U3lzdGVtKGtleVN5
c3RlbSkKKyAgICAsIG1fc2Vzc2lvbklkKHNlc3Npb25JZCkKKyAgICAsIG1fYXN5bmNFdmVudFF1
ZXVlKEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUodGhpcykpCisgICAgLCBtX2tleVJlcXVlc3RU
aW1lcih0aGlzLCAmTWVkaWFLZXlTZXNzaW9uOjprZXlSZXF1ZXN0VGltZXJGaXJlZCkKKyAgICAs
IG1fYWRkS2V5VGltZXIodGhpcywgJk1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGltZXJGaXJlZCkK
K3sKK30KKworTWVkaWFLZXlTZXNzaW9uOjp+TWVkaWFLZXlTZXNzaW9uKCkKK3sKKyAgICBjbG9z
ZSgpOworfQorCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6c2V0RXJyb3IoTWVkaWFLZXlFcnJvciog
ZXJyb3IpCit7CisgICAgbV9lcnJvciA9IGVycm9yOworfQorCit2b2lkIE1lZGlhS2V5U2Vzc2lv
bjo6Y2xvc2UoKQoreworICAgIGlmIChtX2tleXMpCisgICAgICAgIG1fa2V5cy0+Y2RtKCktPmNs
ZWFyS2V5c0Zyb21TZXNzaW9uSWQobV9zZXNzaW9uSWQpOworICAgIG1fYXN5bmNFdmVudFF1ZXVl
LT5jYW5jZWxBbGxFdmVudHMoKTsKK30KKwordm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRl
S2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSkK
K3sKKyAgICBtX3BlbmRpbmdLZXlSZXF1ZXN0cy5hcHBlbmQoUGVuZGluZ0tleVJlcXVlc3QobWlt
ZVR5cGUsIGluaXREYXRhKSk7CisgICAgbV9rZXlSZXF1ZXN0VGltZXIuc3RhcnRPbmVTaG90KDAp
OworfQorCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6a2V5UmVxdWVzdFRpbWVyRmlyZWQoVGltZXI8
TWVkaWFLZXlTZXNzaW9uPiopCit7CisgICAgQVNTRVJUKG1fcGVuZGluZ0tleVJlcXVlc3RzLnNp
emUoKSk7CisgICAgaWYgKCFtX2tleXMpCisgICAgICAgIHJldHVybjsKKworICAgIHdoaWxlICgh
bV9wZW5kaW5nS2V5UmVxdWVzdHMuaXNFbXB0eSgpKSB7CisgICAgICAgIFBlbmRpbmdLZXlSZXF1
ZXN0IHJlcXVlc3QgPSBtX3BlbmRpbmdLZXlSZXF1ZXN0cy50YWtlRmlyc3QoKTsKKworICAgICAg
ICAvLyBOT1RFOiBDb250aW51ZWQgZnJvbSBzdGVwIDUgaW4gTWVkaWFLZXlzOjpjcmVhdGVTZXNz
aW9uKCkuCisgICAgICAgIC8vIFRoZSB1c2VyIGFnZW50IHdpbGwgYXN5bmNocm9ub3VzbHkgZXhl
Y3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHRoZSB0YXNrOgorCisgICAgICAgIC8vIDEuIExl
dCBjZG0gYmUgdGhlIGNkbSBsb2FkZWQgaW4gdGhlIE1lZGlhS2V5cyBjb25zdHJ1Y3Rvci4KKyAg
ICAgICAgLy8gMi4gTGV0IGRlc3RpbmF0aW9uVVJMIGJlIG51bGwuCisgICAgICAgIFN0cmluZyBk
ZXN0aW5hdGlvblVSTDsKKyAgICAgICAgTWVkaWFLZXlFcnJvcjo6Q29kZSBlcnJvckNvZGUgPSAw
OworICAgICAgICB1bnNpZ25lZCBsb25nIHN5c3RlbUNvZGUgPSAwOworCisgICAgICAgIC8vIDMu
IFVzZSBjZG0gdG8gZ2VuZXJhdGUgYSBrZXkgcmVxdWVzdCBhbmQgZm9sbG93IHRoZSBzdGVwcyBm
b3IgdGhlIGZpcnN0IG1hdGNoaW5nIGNvbmRpdGlvbiBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdDoK
KworICAgICAgICBSZWZQdHI8VWludDhBcnJheT4ga2V5UmVxdWVzdCA9IG1fa2V5cy0+Y2RtKCkt
PmdlbmVyYXRlS2V5UmVxdWVzdChyZXF1ZXN0Lm1pbWVUeXBlLCByZXF1ZXN0LmluaXREYXRhLmdl
dCgpLCBtX3Nlc3Npb25JZCwgZGVzdGluYXRpb25VUkwsIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7
CisKKyAgICAgICAgLy8gT3RoZXJ3aXNlIFtpZiBhIHJlcXVlc3QgaXMgbm90IHN1Y2Nlc3NmdWxs
eSBnZW5lcmF0ZWRdOgorICAgICAgICBpZiAoIWtleVJlcXVlc3QpIHsKKyAgICAgICAgICAgIC8v
IDMuMS4gQ3JlYXRlIGEgbmV3IE1lZGlhS2V5RXJyb3Igb2JqZWN0IHdpdGggdGhlIGZvbGxvd2lu
ZyBhdHRyaWJ1dGVzOgorICAgICAgICAgICAgLy8gICAgICBjb2RlID0gdGhlIGFwcHJvcHJpYXRl
IE1lZGlhS2V5RXJyb3IgY29kZQorICAgICAgICAgICAgLy8gICAgICBzeXN0ZW1Db2RlID0gYSBL
ZXkgU3lzdGVtLXNwZWNpZmljIHZhbHVlLCBpZiBwcm92aWRlZCwgYW5kIDAgb3RoZXJ3aXNlCisg
ICAgICAgICAgICBSZWZQdHI8TWVkaWFLZXlFcnJvcj4gZXJyb3IgPSBNZWRpYUtleUVycm9yOjpj
cmVhdGUoZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKS5nZXQoKTsKKworICAgICAgICAgICAgLy8gMy4y
LiBTZXQgdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QncyBlcnJvciBhdHRyaWJ1dGUgdG8gdGhl
IGVycm9yIG9iamVjdCBjcmVhdGVkIGluIHRoZSBwcmV2aW91cyBzdGVwLgorICAgICAgICAgICAg
c2V0RXJyb3IoZXJyb3IuZ2V0KCkpOworCisgICAgICAgICAgICAvLyAzLjMuIHF1ZXVlIGEgdGFz
ayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGtleWVycm9yIGF0IHRoZSBNZWRpYUtleVNl
c3Npb24gb2JqZWN0LgorICAgICAgICAgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtleWVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSk7Cisg
ICAgICAgICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICAgICAgbV9hc3luY0V2
ZW50UXVldWUtPmVucXVldWVFdmVudChldmVudC5yZWxlYXNlKCkpOworCisgICAgICAgICAgICAv
LyAzLjQuIEFib3J0IHRoZSB0YXNrLgorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KworICAgICAgICAvLyA0LiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1l
ZCBrZXltZXNzYWdlIGF0IHRoZSBuZXcgb2JqZWN0CisgICAgICAgIC8vICAgIFRoZSBldmVudCBp
cyBvZiB0eXBlIE1lZGlhS2V5TWVzc2FnZUV2ZW50IGFuZCBoYXM6CisgICAgICAgIC8vICAgIG1l
c3NhZ2UgPSBrZXkgcmVxdWVzdAorICAgICAgICAvLyAgICBkZXN0aW5hdGlvblVSTCA9IGRlc3Rp
bmF0aW9uVVJMCisgICAgICAgIE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCBpbml0OworICAgICAg
ICBpbml0LmJ1YmJsZXMgPSBmYWxzZTsKKyAgICAgICAgaW5pdC5jYW5jZWxhYmxlID0gZmFsc2U7
CisgICAgICAgIGluaXQubWVzc2FnZSA9IGtleVJlcXVlc3Q7CisgICAgICAgIGluaXQuZGVzdGlu
YXRpb25VUkwgPSBkZXN0aW5hdGlvblVSTDsKKyAgICAgICAgUmVmUHRyPE1lZGlhS2V5TWVzc2Fn
ZUV2ZW50PiBldmVudCA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LndlYmtpdGtleW1lc3NhZ2VFdmVudCwgaW5pdCk7CisgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQo
dGhpcyk7CisgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQpOwor
ICAgIH0KK30KKwordm9pZCBNZWRpYUtleVNlc3Npb246OmFkZEtleShVaW50OEFycmF5KiBrZXks
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIEZyb20gPGh0dHA6Ly9kdmNzLnczLm9yZy9o
Zy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlh
Lmh0bWwjZG9tLWFkZGtleT46CisgICAgLy8gVGhlIGFkZEtleShrZXkpIG1ldGhvZCBtdXN0IHJ1
biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIC8vIDEuIElmIHRoZSBmaXJzdCBvciBzZWNvbmQg
YXJndW1lbnQgW3NpY10gaXMgbnVsbCBvciBhbiBlbXB0eSBhcnJheSwgdGhyb3cgYW4gSU5WQUxJ
RF9BQ0NFU1NfRVJSLgorICAgIC8vIE5PVEU6IHRoZSByZWZlcmVuY2UgdG8gYSAic2Vjb25kIGFy
Z3VtZW50IiBpcyBhIHNwZWMgYnVnLgorICAgIGlmICgha2V5IHx8ICFrZXktPmxlbmd0aCgpKSB7
CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgLy8gMi4gU2NoZWR1bGUgYSB0YXNrIHRvIGhhbmRsZSB0aGUgY2FsbCwgcHJvdmlk
aW5nIGtleS4KKyAgICBtX3BlbmRpbmdLZXlzLmFwcGVuZChrZXkpOworICAgIG1fYWRkS2V5VGlt
ZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGlt
ZXJGaXJlZChUaW1lcjxNZWRpYUtleVNlc3Npb24+KikKK3sKKyAgICBBU1NFUlQobV9wZW5kaW5n
S2V5cy5zaXplKCkpOworICAgIGlmICghbV9rZXlzKQorICAgICAgICByZXR1cm47CisKKyAgICB3
aGlsZSAoIW1fcGVuZGluZ0tleXMuaXNFbXB0eSgpKSB7CisgICAgICAgIFJlZlB0cjxVaW50OEFy
cmF5PiBwZW5kaW5nS2V5ID0gbV9wZW5kaW5nS2V5cy50YWtlRmlyc3QoKTsKKyAgICAgICAgdW5z
aWduZWQgc2hvcnQgZXJyb3JDb2RlID0gMDsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBzeXN0ZW1D
b2RlID0gMDsKKworICAgICAgICAvLyBOT1RFOiBDb250aW51ZWQgZnJvbSBzdGVwIDIuIG9mIE1l
ZGlhS2V5U2Vzc2lvbjo6YWRkS2V5KCkKKyAgICAgICAgLy8gMi4xLiBMZXQgY2RtIGJlIHRoZSBj
ZG0gbG9hZGVkIGluIHRoZSBNZWRpYUtleXMgY29uc3RydWN0b3IuCisgICAgICAgIENETSogY2Rt
ID0gbV9rZXlzLT5jZG0oKTsKKyAgICAgICAgLy8gMi4yLiBMZXQgJ2RpZCBzdG9yZSBrZXknIGJl
IGZhbHNlLgorICAgICAgICBib29sIGRpZFN0b3JlS2V5ID0gZmFsc2U7CisgICAgICAgIC8vIDIu
My4gTGV0ICduZXh0IG1lc3NhZ2UnIGJlIG51bGwuCisgICAgICAgIFJlZlB0cjxVaW50OEFycmF5
PiBuZXh0TWVzc2FnZTsKKyAgICAgICAgLy8gMi40LiBVc2UgY2RtIHRvIGhhbmRsZSBrZXkuCisg
ICAgICAgIGRpZFN0b3JlS2V5ID0gY2RtLT5hZGRLZXlGb3JTZXNzaW9uSWQocGVuZGluZ0tleS5n
ZXQoKSwgbV9zZXNzaW9uSWQsIG5leHRNZXNzYWdlLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOwor
ICAgICAgICAvLyAyLjUuIElmIGRpZCBzdG9yZSBrZXkgaXMgdHJ1ZSBhbmQgdGhlIG1lZGlhIGVs
ZW1lbnQgaXMgd2FpdGluZyBmb3IgYSBrZXksIHF1ZXVlIGEgdGFzayB0byBhdHRlbXB0IHRvIHJl
c3VtZSBwbGF5YmFjay4KKyAgICAgICAgLy8gVE9ETzogRmluZCBhbmQgcmVzdGFydCB0aGUgbWVk
aWEgZWxlbWVudAorCisgICAgICAgIC8vIDIuNi4gSWYgbmV4dCBtZXNzYWdlIGlzIG5vdCBudWxs
LCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBrZXltZXNzYWdlIGF0
IHRoZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0LgorICAgICAgICAvLyAgICAgIFRoZSBldmVudCBp
cyBvZiB0eXBlIE1lZGlhS2V5TWVzc2FnZUV2ZW50IGFuZCBoYXM6CisgICAgICAgIC8vICAgICAg
bWVzc2FnZSA9IG5leHQgbWVzc2FnZQorICAgICAgICAvLyAgICAgIGRlc3RpbmF0aW9uVVJMID0g
bnVsbAorICAgICAgICBpZiAobmV4dE1lc3NhZ2UpIHsKKyAgICAgICAgICAgIE1lZGlhS2V5TWVz
c2FnZUV2ZW50SW5pdCBpbml0OworICAgICAgICAgICAgaW5pdC5idWJibGVzID0gZmFsc2U7Cisg
ICAgICAgICAgICBpbml0LmNhbmNlbGFibGUgPSBmYWxzZTsKKyAgICAgICAgICAgIGluaXQubWVz
c2FnZSA9IG5leHRNZXNzYWdlOworICAgICAgICAgICAgUmVmUHRyPE1lZGlhS2V5TWVzc2FnZUV2
ZW50PiBldmVudCA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndl
YmtpdGtleW1lc3NhZ2VFdmVudCwgaW5pdCk7CisgICAgICAgICAgICBldmVudC0+c2V0VGFyZ2V0
KHRoaXMpOworICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChldmVu
dCk7CisgICAgICAgIH0KKworICAgICAgICAvLyAyLjcuIElmIGRpZCBzdG9yZSBrZXkgaXMgdHJ1
ZSwgcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQga2V5YWRkZWQgYXQg
dGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuCisgICAgICAgIGlmIChkaWRTdG9yZUtleSkgewor
ICAgICAgICAgICAgUmVmUHRyPEV2ZW50PiBrZXlhZGRlZEV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkud2Via2l0a2V5YWRkZWRFdmVudCwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAg
ICAgIGtleWFkZGVkRXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgICAgIG1fYXN5bmNF
dmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoa2V5YWRkZWRFdmVudCk7CisgICAgICAgIH0KKworICAg
ICAgICAvLyAyLjguIElmIGFueSBvZiB0aGUgcHJlY2VkaW5nIHN0ZXBzIGluIHRoZSB0YXNrIGZh
aWxlZAorICAgICAgICBpZiAoIWRpZFN0b3JlS2V5KSB7CisgICAgICAgICAgICAvLyAyLjguMS4g
Q3JlYXRlIGEgbmV3IE1lZGlhS2V5RXJyb3Igb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBhdHRy
aWJ1dGVzOgorICAgICAgICAgICAgLy8gICAgICAgIGNvZGUgPSB0aGUgYXBwcm9wcmlhdGUgTWVk
aWFLZXlFcnJvciBjb2RlCisgICAgICAgICAgICAvLyAgICAgICAgc3lzdGVtQ29kZSA9IGEgS2V5
IFN5c3RlbS1zcGVjaWZpYyB2YWx1ZSwgaWYgcHJvdmlkZWQsIGFuZCAwIG90aGVyd2lzZQorICAg
ICAgICAgICAgUmVmUHRyPE1lZGlhS2V5RXJyb3I+IGVycm9yID0gTWVkaWFLZXlFcnJvcjo6Y3Jl
YXRlKGVycm9yQ29kZSwgc3lzdGVtQ29kZSkuZ2V0KCk7CisKKyAgICAgICAgICAgIC8vIDIuOC4y
LiBTZXQgdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QncyBlcnJvciBhdHRyaWJ1dGUgdG8gdGhl
IGVycm9yIG9iamVjdCBjcmVhdGVkIGluIHRoZSBwcmV2aW91cyBzdGVwLgorICAgICAgICAgICAg
c2V0RXJyb3IoZXJyb3IuZ2V0KCkpOworCisgICAgICAgICAgICAvLyAyLjguMy4gcXVldWUgYSB0
YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQga2V5ZXJyb3IgYXQgdGhlIE1lZGlhS2V5
U2Vzc2lvbiBvYmplY3QuCisgICAgICAgICAgICBSZWZQdHI8RXZlbnQ+IGtleWVycm9yRXZlbnQg
PSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXllcnJvckV2ZW50LCBmYWxzZSwg
ZmFsc2UpOworICAgICAgICAgICAga2V5ZXJyb3JFdmVudC0+c2V0VGFyZ2V0KHRoaXMpOworICAg
ICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChrZXllcnJvckV2ZW50LnJl
bGVhc2UoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIDIuOC40LiBBYm9ydCB0aGUg
dGFzay4KKyAgICAgICAgICAgIC8vIE5PVEU6IG5vLW9wCisgICAgICAgIH0KKyAgICB9Cit9CisK
K2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFLZXlTZXNzaW9uOjppbnRlcmZhY2VOYW1lKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvck1lZGlhS2V5U2Vzc2lv
bjsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVkaWFLZXlTZXNzaW9uOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKK30KKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U2Vzc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlMTU2OTZjNDQ0MDA2NTE4ZTQ2ZjYyNzFjZDNmZWNmMTA0
YzdkZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBNZWRpYUtleVNlc3Npb25faAorI2RlZmluZSBNZWRpYUtleVNlc3Npb25faAorCisj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIkNvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHZW5lcmljRXZlbnRRdWV1ZTsK
K2NsYXNzIE1lZGlhS2V5RXJyb3I7CitjbGFzcyBNZWRpYUtleXM7CisKK2NsYXNzIE1lZGlhS2V5
U2Vzc2lvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5U2Vzc2lvbj4sIHB1YmxpYyBFdmVu
dFRhcmdldCwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleVNlc3Npb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgTWVkaWFLZXlzKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKTsKKyAgICB+TWVkaWFLZXlTZXNzaW9uKCk7CisKKyAgICBjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9CisgICAgY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQorCisg
ICAgdm9pZCBzZXRFcnJvcihNZWRpYUtleUVycm9yKik7CisgICAgTWVkaWFLZXlFcnJvciogZXJy
b3IoKSB7IHJldHVybiBtX2Vycm9yLmdldCgpOyB9CisKKyAgICB2b2lkIHNldEtleXMoTWVkaWFL
ZXlzKiBrZXlzKSB7IG1fa2V5cyA9IGtleXM7IH0KKyAgICBNZWRpYUtleXMqIGtleXMoKSBjb25z
dCB7IHJldHVybiBtX2tleXM7IH0KKworICAgIHZvaWQgZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhKTsKKyAgICB2b2lkIGFkZEtl
eShVaW50OEFycmF5KiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGNsb3NlKCk7CisK
KyAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhS2V5U2Vzc2lvbj46OnJlZjsKKyAgICB1c2luZyBS
ZWZDb3VudGVkPE1lZGlhS2V5U2Vzc2lvbj46OmRlcmVmOworCisgICAgdm9pZCBlbnF1ZXVlRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4pOworCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUih3ZWJraXRrZXlhZGRlZCk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
Uih3ZWJraXRrZXllcnJvcik7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3
ZWJraXRrZXltZXNzYWdlKTsKKworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRl
cmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREU7CisKK3Byb3Rl
Y3RlZDoKKyAgICBNZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlh
S2V5cyosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7
CisgICAgdm9pZCBrZXlSZXF1ZXN0VGltZXJGaXJlZChUaW1lcjxNZWRpYUtleVNlc3Npb24+Kik7
CisgICAgdm9pZCBhZGRLZXlUaW1lckZpcmVkKFRpbWVyPE1lZGlhS2V5U2Vzc2lvbj4qKTsKKwor
ICAgIE1lZGlhS2V5cyogbV9rZXlzOworICAgIFN0cmluZyBtX2tleVN5c3RlbTsKKyAgICBTdHJp
bmcgbV9zZXNzaW9uSWQ7CisgICAgUmVmUHRyPE1lZGlhS2V5RXJyb3I+IG1fZXJyb3I7CisgICAg
T3duUHRyPEdlbmVyaWNFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKKworICAgIHN0cnVj
dCBQZW5kaW5nS2V5UmVxdWVzdCB7CisgICAgICAgIFBlbmRpbmdLZXlSZXF1ZXN0KGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhKSA6IG1pbWVUeXBlKG1pbWVUeXBl
KSwgaW5pdERhdGEoaW5pdERhdGEpIHsgfQorICAgICAgICBTdHJpbmcgbWltZVR5cGU7CisgICAg
ICAgIFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YTsKKyAgICB9OworICAgIERlcXVlPFBlbmRp
bmdLZXlSZXF1ZXN0PiBtX3BlbmRpbmdLZXlSZXF1ZXN0czsKKyAgICBUaW1lcjxNZWRpYUtleVNl
c3Npb24+IG1fa2V5UmVxdWVzdFRpbWVyOworCisgICAgRGVxdWU8UmVmUHRyPFVpbnQ4QXJyYXk+
ID4gbV9wZW5kaW5nS2V5czsKKyAgICBUaW1lcjxNZWRpYUtleVNlc3Npb24+IG1fYWRkS2V5VGlt
ZXI7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJ
REUgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJ
REUgeyBkZXJlZigpOyB9CisKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJn
ZXREYXRhKCkgT1ZFUlJJREUgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisgICAgdmly
dHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFIHsg
cmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorCisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZl
bnRUYXJnZXREYXRhOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QV9WMikKKworI2VuZGlmIC8vIE1lZGlhS2V5U2Vzc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTBjY2I3YTc0MzhmYjcwM2Q5NGJjYTQ4MmFhMzAzZDBlMGI2MTkyZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmlkbApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICAgICAqLworCittb2R1bGUgZW5j
cnlwdGVkbWVkaWEgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9RU5D
UllQVEVEX01FRElBX1YyLAorICAgICAgICBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVk
aWEsCisgICAgICAgIEV2ZW50VGFyZ2V0LAorICAgIF0gTWVkaWFLZXlTZXNzaW9uIHsKKyAgICAg
ICAgLy8gZXJyb3Igc3RhdGUKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhS2V5RXJy
b3IgZXJyb3I7CisKKyAgICAgICAgLy8gc2Vzc2lvbiBwcm9wZXJ0aWVzCisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2V5U3lzdGVtOworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHNlc3Npb25JZDsKKworICAgICAgICAvLyBzZXNzaW9uIG9wZXJhdGlv
bnMKKyAgICAgICAgdm9pZCBhZGRLZXkoaW4gVWludDhBcnJheSBrZXkpCisgICAgICAgICAgICBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBjbG9zZSgpOworICAgICAgICAKKyAg
ICAgICAgLy8gRXZlbnRMaXN0ZW5lcnMKKyAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1
bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXlhZGRlZDsKKyAg
ICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50
TGlzdGVuZXIgb253ZWJraXRrZXllcnJvcjsKKyAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRB
dFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXltZXNzYWdl
OworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgICAgICB2b2lkIGFkZEV2
ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIHZvaWQg
cmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsK
KyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKKyAgICAgICAgICAg
IHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDEz
ODZkMmFhMTUxZmIxNTAwNGNiYjhmYzIzZWUwMGZiZDFmMjgwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC0w
LDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ik1lZGlhS2V5cy5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1
ZGUgIkNETS5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJNZWRpYUtleU1l
c3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIk1lZGlhS2V5U2Vzc2lvbi5oIgorI2luY2x1ZGUgIlVV
SUQuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1Bhc3NSZWZQdHI8TWVkaWFLZXlzPiBNZWRpYUtleXM6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8gRnJvbSA8aHR0cDovL2R2Y3Mu
dzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0
ZWQtbWVkaWEuaHRtbCNkb20tbWVkaWEta2V5cy1jb25zdHJ1Y3Rvcj46CisgICAgLy8gVGhlIE1l
ZGlhS2V5cyhrZXlTeXN0ZW0pIGNvbnN0cnVjdG9yIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3Rl
cHM6CisKKyAgICAvLyAxLiBJZiBrZXlTeXN0ZW0gaXMgbnVsbCBvciBhbiBlbXB0eSBzdHJpbmcs
IHRocm93IGFuIElOVkFMSURfQUNDRVNTX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0
ZXBzLgorICAgIGlmIChrZXlTeXN0ZW0uaXNOdWxsKCkgfHwga2V5U3lzdGVtLmlzRW1wdHkoKSkg
eworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCisgICAgLy8gMi4gSWYga2V5U3lzdGVtIGlzIG5vdCBvbmUgb2YgdGhlIHVzZXIgYWdl
bnQncyBzdXBwb3J0ZWQgS2V5IFN5c3RlbXMsIHRocm93IGEgTk9UX1NVUFBPUlRFRF9FUlIgYW5k
IGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICghQ0RNOjpzdXBwb3J0c0tleVN5c3RlbShrZXlT
eXN0ZW0pKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKworICAgIC8vIDMuIExldCBjZG0gYmUgdGhlIGNvbnRlbnQgZGVjcnlwdGlv
biBtb2R1bGUgY29ycmVzcG9uZGluZyB0byBrZXlTeXN0ZW0uCisgICAgLy8gNC4gTG9hZCBjZG0g
aWYgbmVjZXNzYXJ5LgorICAgIE93blB0cjxDRE0+IGNkbSA9IENETTo6Y3JlYXRlKGtleVN5c3Rl
bSk7CisKKyAgICAvLyA1LiBDcmVhdGUgYSBuZXcgTWVkaWFLZXlzIG9iamVjdC4KKyAgICAvLyA1
LjEgTGV0IHRoZSBrZXlTeXN0ZW0gYXR0cmlidXRlIGJlIGtleVN5c3RlbS4KKyAgICAvLyA2LiBS
ZXR1cm4gdGhlIG5ldyBvYmplY3QgdG8gdGhlIGNhbGxlci4KKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1lZGlhS2V5cyhrZXlTeXN0ZW0sIGNkbS5yZWxlYXNlKCkpKTsKK30KKworTWVkaWFLZXlz
OjpNZWRpYUtleXMoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIFBhc3NPd25QdHI8Q0RNPiBjZG0p
CisgICAgOiBtX2tleVN5c3RlbShrZXlTeXN0ZW0pCisgICAgLCBtX2NkbShjZG0pCit7Cit9CisK
K01lZGlhS2V5czo6fk1lZGlhS2V5cygpCit7CisgICAgLy8gRnJvbSA8aHR0cDovL2R2Y3MudzMu
b3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQt
bWVkaWEuaHRtbCNkb20tbWVkaWEta2V5cy1jb25zdHJ1Y3Rvcj46CisgICAgLy8gV2hlbiBkZXN0
cm95aW5nIGEgTWVkaWFLZXlzIG9iamVjdCwgZm9sbG93IHRoZSBzdGVwcyBpbiBjbG9zZSgpLgor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zZXNzaW9ucy5zaXplKCk7ICsraSkgeworICAg
ICAgICBtX3Nlc3Npb25zW2ldLT5jbG9zZSgpOworICAgICAgICBtX3Nlc3Npb25zW2ldLT5zZXRL
ZXlzKDApOworICAgIH0KK30KKworUGFzc1JlZlB0cjxNZWRpYUtleVNlc3Npb24+IE1lZGlhS2V5
czo6Y3JlYXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICAvLyBGcm9tIDxodHRwOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS90
aXAvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS5odG1sI2RvbS1jcmVhdGVzZXNzaW9u
PjoKKyAgICAvLyBUaGUgY3JlYXRlU2Vzc2lvbih0eXBlLCBpbml0RGF0YSkgbWV0aG9kIG11c3Qg
cnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgLy8gTm90ZTogVGhlIGNvbnRlbnRzIG9mIGlu
aXREYXRhIGFyZSBjb250YWluZXItc3BlY2lmaWMgSW5pdGlhbGl6YXRpb24gRGF0YS4KKworICAg
IC8vIDEuIElmIHR5cGUgaXMgbnVsbCBvciBhbiBlbXB0eSBzdHJpbmcgYW5kIGluaXREYXRhIGlz
IG5vdCBudWxsIG9yIGFuIGVtcHR5IHN0cmluZywgdGhyb3cgYW4KKyAgICAvLyBJTlZBTElEX0FD
Q0VTU19FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoKHR5cGUu
aXNOdWxsKCkgfHwgdHlwZS5pc0VtcHR5KCkpICYmICghaW5pdERhdGEgfHwgaW5pdERhdGEtPmxl
bmd0aCgpKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCisgICAgLy8gMi4gSWYgdHlwZSBjb250YWlucyBhIE1JTUUgdHlwZSB0
aGF0IGlzIG5vdCBzdXBwb3J0ZWQgb3IgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUga2V5U3lzdGVt
LCB0aHJvdworICAgIC8vIGEgTk9UX1NVUFBPUlRFRF9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0
aGVzZSBzdGVwcy4KKyAgICBpZiAoIXR5cGUuaXNOdWxsKCkgJiYgIXR5cGUuaXNFbXB0eSgpICYm
ICFtX2NkbS0+c3VwcG9ydHNNSU1FVHlwZSh0eXBlKSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQ
T1JURURfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyAzLiBDcmVhdGUg
YSBuZXcgTWVkaWFLZXlTZXNzaW9uIG9iamVjdC4KKyAgICAvLyAzLjEgTGV0IHRoZSBrZXlTeXN0
ZW0gYXR0cmlidXRlIGJlIGtleVN5c3RlbS4KKyAgICAvLyAzLjIgTGV0IHRoZSBzZXNzaW9uSWQg
YXR0cmlidXRlIGJlIGEgdW5pcXVlIFNlc3Npb24gSUQgc3RyaW5nLiBJdCBtYXkgYmUgZ2VuZXJh
dGVkIGJ5IGNkbS4KKyAgICBSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBzZXNzaW9uID0gTWVkaWFL
ZXlTZXNzaW9uOjpjcmVhdGUoY29udGV4dCwgdGhpcywga2V5U3lzdGVtKCksIG1fY2RtLT5nZW5l
cmF0ZVNlc3Npb25JZCgpKTsKKworICAgIC8vIDQuIEFkZCB0aGUgbmV3IG9iamVjdCB0byBhbiBp
bnRlcm5hbCBsaXN0IG9mIHNlc3Npb24gb2JqZWN0cy4KKyAgICBtX3Nlc3Npb25zLmFwcGVuZChz
ZXNzaW9uKTsKKworICAgIC8vIDUuIFNjaGVkdWxlIGEgdGFzayB0byBnZW5lcmF0ZSBhIGtleSBy
ZXF1ZXN0LCBwcm92aWRpbmcgdHlwZSwgaW5pdERhdGEsIGFuZCB0aGUgbmV3IG9iamVjdC4KKyAg
ICBzZXNzaW9uLT5nZW5lcmF0ZUtleVJlcXVlc3QodHlwZSwgaW5pdERhdGEpOworCisgICAgLy8g
Ni4gUmV0dXJuIHRoZSBuZXcgb2JqZWN0IHRvIHRoZSBjYWxsZXIuCisgICAgcmV0dXJuIHNlc3Np
b247Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGFkYjc1ZjYxZTNjNmIyYWRhZDc1
MGJjMzRkNjgyZmM5ZWUwN2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaApAQCAtMCwwICsxLDY4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBNZWRpYUtleXNfaAorI2RlZmluZSBNZWRpYUtleXNfaAorCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0RN
OworY2xhc3MgTWVkaWFLZXlTZXNzaW9uOworCitjbGFzcyBNZWRpYUtleXMgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYUtleXM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUtleXM+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIH5NZWRpYUtleXMoKTsKKworICAgIFBhc3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBjcmVh
dGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBVaW50OEFycmF5KiBpbml0RGF0YSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2tleVN5c3RlbTsgfQorICAgIENETSog
Y2RtKCkgeyByZXR1cm4gbV9jZG0uZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIE1lZGlhS2V5
cyhjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgUGFzc093blB0cjxDRE0+KTsKKworICAgIFZlY3Rv
cjxSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiA+IG1fc2Vzc2lvbnM7CisKKyAgICBTdHJpbmcgbV9r
ZXlTeXN0ZW07CisgICAgT3duUHRyPENETT4gbV9jZG07Cit9OworCit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjZW5kaWYgLy8gTWVkaWFLZXlzX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNjQzOTEyZGU5MDJjNzkwMmZjYzRmZjBiMTQyMTc1NTVhYWM1NWRkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuaWRsCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyAKK21vZHVsZSBlbmNyeXB0ZWRt
ZWRpYSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1FTkNSWVBURURf
TUVESUFfVjIsCisgICAgICAgIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYSwKKyAg
ICAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIGtleVN5c3RlbSksCisgICAgICAgIENvbnN0
cnVjdG9yUmFpc2VzRXhjZXB0aW9uLAorICAgIF0gTWVkaWFLZXlzIHsKKyAgICAgICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIE1lZGlhS2V5U2Vzc2lvbiBjcmVhdGVTZXNzaW9u
KGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0eXBlLCBpbiBbT3B0
aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBVaW50OEFycmF5IGluaXREYXRhKQorICAgICAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBrZXlTeXN0ZW07CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggZGZm
ODMwZDUwMzg0OTJmZDJkZTQxMGNmMjVmODMyOTM3MjIwMTAzOC4uZWRiMjJjMTg2ZmY5OWI3MmE0
YTU0Y2Y1OGU4NWFiNDhjOGNhMzFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTI1ODYsMyAr
MjU4Niw3IEBAIF9fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMTZzaG93
QWx0ZXJuYXRpdmVzRVA2TlNWaWV3UktOU185RmxvYXRSCiBfX1pON1dlYkNvcmUyNFRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZUMxRVAxOE5TVGV4dEFsdGVybmF0aXZlczhfTlNSYW5nZQogX19aTjdX
ZWJDb3JlMzJjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlc0VQMThOU0F0dHJpYnV0ZWRT
dHJpbmdSTjNXVEY2VmVjdG9ySU5TXzI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlRUxtMEVFRQog
I2VuZGlmCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorX19aTjdXZWJDb3JlM0NE
TTE4cmVnaXN0ZXJDRE1GYWN0b3J5RVBGTjNXVEYxMFBhc3NPd25QdHJJTlNfMTlDRE1Qcml2YXRl
SW50ZXJmYWNlRUVFUFMwX0VQRmJSS05TMV82U3RyaW5nRUUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdhMjVlYWE4
ODE0YWQ0ODU3MzMxYTZjNTNhNzY2MzY2Y2QzYzIyZGMuLjgxZDM4OGQ5NTM0MTkwOGU3YzVkNDUw
MmI2ODI2NmMxNmJlMDEyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU4NTgsNiArNTg1OCw3IEBACiAJCUNBRTlGOTEwMTQ2
NDQxRjAwMEMyNDVCMSAvKiBDU1NWYXJpYWJsZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQUU5RjkwRTE0NjQ0MUYwMDBDMjQ1QjEgLyogQ1NT
VmFyaWFibGVWYWx1ZS5oICovOyB9OwogCQlDRDEyN0RFRDE0RjMwOTdEMDBFODQ3NzkgLyogV2Vi
Q29yZUZ1bGxTY3JlZW5XaW5kb3cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDEyN0RFQjE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3Jl
ZW5XaW5kb3cubW0gKi87IH07CiAJCUNEMTI3REVFMTRGMzA5ODQwMEU4NDc3OSAvKiBXZWJDb3Jl
RnVsbFNjcmVlbldpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0QxMjdERUExNEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2lu
ZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0QxQjRBNjUxNjA3ODZBRTAwMjgyREY5IC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEQzIxNjAxNEVF
RTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwICovOyB9OwogCQlDRDI3RjZFNTE0
NTc2ODVBMDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdEIC8q
IEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0QyN0Y2RTcxNDU3NzBEMzAwNzgyMDdE
IC8qIE1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDI3RjZFNjE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVy
LmNwcCAqLzsgfTsKIAkJQ0QzN0IzOTgxNUMxQjk3MTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dn
aW5nS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDM3QjM3NDE1QzFBN0UxMDA2REM4OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcCAq
LzsgfTsKQEAgLTU4NjgsNyArNTg2OSwxOCBAQAogCQlDRDgyMDMwRDEzOTVBQjZBMDBGOTU2QzYg
LyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzA5MTM5NUFCNkEwMEY5NTZD
NiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tICovOyB9OwogCQlD
RDgyMDMxMDEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwRTEzOTVBQ0U3MDBG
OTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q4MjAzMTExMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldp
bmRvd0FuaW1hdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEODIwMzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0g
Ki87IH07CisJCUNEQTk4REEzMTYwMTQ2NDEwMEZFQTNCMSAvKiBKU01lZGlhS2V5RXJyb3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEOUIx
NjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5jcHAgKi87IH07CisJCUNEQTk4REQ4
MTYwMjVCRUYwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERENTE2MDI1QkVEMDBGRUEz
QjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwICovOyB9OworCQlDREE5OERERjE2MDI2QTM3
MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OEREQjE2MDI2QTE4MDBGRUEzQjEgLyog
SlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgKi87IH07CisJCUNEQTk4REUwMTYwMjZBMzcwMEZF
QTNCMSAvKiBKU01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEREQxNjAyNkExOTAwRkVBM0IxIC8qIEpTTWVk
aWFLZXlOZWVkZWRFdmVudC5jcHAgKi87IH07CisJCUNEQTk4RTA0MTYwMzlFMUEwMEZFQTNCMSAv
KiBKU01lZGlhS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREE5OERDRTE2MDE1OTc5MDBGRUEzQjEgLyogSlNNZWRpYUtleXMuY3BwICovOyB9
OworCQlDREE5OEUwNjE2MDM5RTFGMDBGRUEzQjEgLyogSlNNZWRpYUtleVNlc3Npb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThERDAxNjAx
NTk3OTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlTZXNzaW9uLmNwcCAqLzsgfTsKKwkJQ0RBOThFMEIx
NjAzQ0Q2MDAwRkVBM0IxIC8qIENETS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREE5OEUwOTE2MDNDRDU5MDBGRUEzQjEgLyogQ0RNLmNwcCAqLzsg
fTsKKwkJQ0RBOThFMEQxNjAzRkU0QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERDQTE2MDE1MDhBMDBG
RUEzQjEgLyogTWVkaWFLZXlzLmNwcCAqLzsgfTsKKwkJQ0RBOThFMEUxNjAzRkU1ODAwRkVBM0Ix
IC8qIE1lZGlhS2V5U2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREE5OERDNzE2MDE0RjJDMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9u
LmNwcCAqLzsgfTsKIAkJQ0RBQThEMEExNEQ3MUIyRTAwNjFFQTYwIC8qIFBsYXRmb3JtQ2xvY2tD
TS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUE4
RDA4MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gKi87IH07CisJCUNEQzI2
QjQwMTYwQThDQzYwMDI2NzU3QiAvKiBNb2NrQ0RNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzI2QjNDMTYwQTYyQjAwMDI2NzU3QiAvKiBNb2Nr
Q0RNLmNwcCAqLzsgfTsKKwkJQ0RDMjZCNDExNjBBOENDRTAwMjY3NTdCIC8qIE1vY2tDRE0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzI2QjNEMTYw
QTYyQjAwMDI2NzU3QiAvKiBNb2NrQ0RNLmggKi87IH07CiAJCUNERDUyNUQ3MTQ1QjZERDAwMDhE
MjA0RCAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQ0MxNDVCNkFGRTAwQzRDN0FBIC8qIEpT
SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCUNERUE3NjMwMTQ2MDhBNTMwMDhC
MzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xv
Y2tDQS5jcHAgKi87IH07CiAJCUNERUE3NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBDbG9ja0dlbmVy
aWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RF
QTc2MzIxNDYwQUUyOTAwOEIzMUYxIC8qIENsb2NrR2VuZXJpYy5jcHAgKi87IH07CkBAIC0xMzIx
MCw5ICsxMzIyMiwzOCBAQAogCQlDRDgyMDMwOTEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9G
dWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAv
KiBXZWJXaW5kb3dBbmltYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViV2luZG93QW5pbWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIw
MzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJXaW5kb3dBbmltYXRpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RDlCMTYwMTI4QTUwMEZFQTNCMSAvKiBKU01l
ZGlhS2V5RXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNN
ZWRpYUtleUVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEOUMx
NjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU01lZGlhS2V5RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBOThEQzIxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTWVkaWFLZXlOZWVkZWRFdmVu
dC5jcHA7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERDMzE2MDE0RUVFMDBGRUEz
QjEgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBNZWRpYUtleU5lZWRlZEV2ZW50Lmg7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5TmVlZGVkRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
OThEQzQxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgbmFtZSA9IE1lZGlhS2V5TmVlZGVkRXZlbnQuaWRsOyBwYXRoID0gTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBOThEQzcxNjAxNEYyQzAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBNZWRpYUtleVNlc3Npb24u
Y3BwOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERDODE2MDE0RjJDMDBGRUEzQjEgLyog
TWVkaWFLZXlTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGlh
S2V5U2Vzc2lvbi5oOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQzkxNjAxNEY0MDAwRkVB
M0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTWVkaWFL
ZXlTZXNzaW9uLmlkbDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNz
aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQ0ExNjAxNTA4QTAw
RkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBNZWRpYUtleXMuY3BwOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERDQjE2MDE1MDhBMDBG
RUEzQjEgLyogTWVkaWFLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1l
ZGlhS2V5cy5oOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQ0MxNjAxNTA4QTAwRkVBM0IxIC8qIE1l
ZGlhS2V5cy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTWVkaWFLZXlzLmlkbDsgcGF0aCA9
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBOThEQ0UxNjAxNTk3OTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFLZXlzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQ0YxNjAxNTk3OTAwRkVBM0IxIC8qIEpT
TWVkaWFLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFLZXlz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REQwMTYwMTU5NzkwMEZFQTNC
MSAvKiBKU01lZGlhS2V5U2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU01lZGlhS2V5U2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQTk4REQxMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5U2Vzc2lvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhS2V5U2Vzc2lvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERENTE2MDI1QkVEMDBGRUEzQjEgLyogTWVkaWFL
ZXlNZXNzYWdlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
TWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleU1lc3NhZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QTk4REQ2MTYwMjVCRUQwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYUtleU1lc3NhZ2VFdmVudC5oOyBwYXRoID0g
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREE5OERENzE2MDI1QkVFMDBGRUEzQjEgLyogTWVkaWFLZXlN
ZXNzYWdlRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE1lZGlhS2V5TWVzc2FnZUV2
ZW50LmlkbDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZl
bnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OEREQjE2MDI2QTE4MDBG
RUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBOThEREMxNjAyNkExOTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREE5OERERDE2MDI2QTE5MDBGRUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFLZXlOZWVkZWRFdmVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RERFMTYwMjZBMTkwMEZFQTNCMSAvKiBK
U01lZGlhS2V5TmVlZGVkRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUtleU5lZWRlZEV2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RTA5MTYwM0NENTkwMEZF
QTNCMSAvKiBDRE0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ0RNLmNwcDsgcGF0aCA9IE1vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBOThFMEExNjAzQ0Q1OTAwRkVBM0IxIC8qIENETS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDRE0uaDsg
cGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQTk4RTBDMTYwM0NGM0MwMEZFQTNCMSAvKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNEQUE4RDA3MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1DbG9ja0NNLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEQUE4RDA4MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNs
b2NrQ00ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9y
bUNsb2NrQ00ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQkQ5M0JBMTMzM0JE
NEIwMDI1NzBFMyAvKiBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3Nz
OyBwYXRoID0gZnVsbHNjcmVlblF1aWNrVGltZS5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQzI2QjNDMTYwQTYyQjAwMDI2NzU3QiAvKiBNb2NrQ0RNLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1vY2tDRE0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREMy
NkIzRDE2MEE2MkIwMDAyNjc1N0IgLyogTW9ja0NETS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ0RN
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQzI2QjQyMTYwQThEQjAwMDI2NzU3
QiAvKiBNZWRpYUtleUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhS2V5RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDMjZCNDMxNjBB
OERCMDAwMjY3NTdCIC8qIE1lZGlhS2V5RXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IE1lZGlhS2V5RXJyb3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRENFNUNE
MDE0NjMzQkM5MDBENDdDQ0EgLyogRXZlbnRUYXJnZXRGYWN0b3J5LmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEV2ZW50VGFyZ2V0RmFjdG9yeS5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0RFQTc2MkMxNDYwODIyNDAwOEIzMUYxIC8qIENsb2NrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNERUE3NjJFMTQ2MDg0REUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1DbG9ja0NBLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MzYwLDYgKzE0NDAxLDcgQEAKIAkJMTRERkIzM0Yw
QTdERjc2MzAwMThGNzY5IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0RBOThEQ0QxNjAxNTE1QzAwRkVBM0IxIC8qIEVu
Y3J5cHRlZE1lZGlhICovLAogCQkJCUE4M0I3OTEwMENDQjAwMUIwMDBCMDgyNSAvKiBDb3JlICov
LAogCQkJCUE4M0I3OTBFMENDQUZGOTcwMDBCMDgyNSAvKiBDU1MgKi8sCiAJCQkJN0I3RjY4NkQx
NTc2QkZBMTAwM0ZBQkYyIC8qIEVkaXRpbmcgKi8sCkBAIC0xNTA0Myw2ICsxNTA4NSw4IEBACiAJ
CQkJQTdCRjdFREUxNEM5MTc1QTAwMTQ0ODlEIC8qIEludGVybmFsU2V0dGluZ3MuaWRsICovLAog
CQkJCUE3QkU3RUREMTRDOTE3NUEwMDE0NDg5RCAvKiBNYWxsb2NTdGF0aXN0aWNzLmggKi8sCiAJ
CQkJQTdCRTdFREUxNEM5MTc1QTAwMTQ0ODlEIC8qIE1hbGxvY1N0YXRpc3RpY3MuaWRsICovLAor
CQkJCUNEQzI2QjNDMTYwQTYyQjAwMDI2NzU3QiAvKiBNb2NrQ0RNLmNwcCAqLywKKwkJCQlDREMy
NkIzRDE2MEE2MkIwMDAyNjc1N0IgLyogTW9ja0NETS5oICovLAogCQkJKTsKIAkJCXBhdGggPSB0
ZXN0aW5nOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE3NjgzLDYgKzE3NzI3LDgg
QEAKIAkJCQlFNDQ2MTM5QzBDRDYzMzEwMDBGQURBNzUgLyogTWVkaWFFcnJvci5pZGwgKi8sCiAJ
CQkJMDdBNkQxRTkxNDkxMTM3NzAwMDUxRDBDIC8qIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3Bw
ICovLAogCQkJCTA3QTZEMUVBMTQ5MTEzNzcwMDA1MUQwQyAvKiBNZWRpYUZyYWdtZW50VVJJUGFy
c2VyLmggKi8sCisJCQkJQ0RDMjZCNDIxNjBBOERCMDAwMjY3NTdCIC8qIE1lZGlhS2V5RXJyb3Iu
aCAqLywKKwkJCQlDREMyNkI0MzE2MEE4REIwMDAyNjc1N0IgLyogTWVkaWFLZXlFcnJvci5pZGwg
Ki8sCiAJCQkJOUIyRjdDRjcxNDU2MjEyMDAwN0Y4QjUwIC8qIE1pY3JvRGF0YUl0ZW1WYWx1ZS5j
cHAgKi8sCiAJCQkJOUIyRjdDRjgxNDU2MjEyMDAwN0Y4QjUwIC8qIE1pY3JvRGF0YUl0ZW1WYWx1
ZS5oICovLAogCQkJCTEwNTk0NTcxMTVCNDI4QzMwMDREMzdGRCAvKiBNaWNyb0RhdGFJdGVtVmFs
dWUuaWRsICovLApAQCAtMTc3NDQsNiArMTc3OTAsNyBAQAogCQk5NzExNDVGRTE0RUYwMDZFMDA2
NzRGRDkgLyogTW9kdWxlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJQ0RBOThEQkQxNjAxNEUwODAwRkVBM0IxIC8qIGVuY3J5cHRlZG1lZGlhICovLAog
CQkJCTk3MTE0NUZGMTRFRjAwNzkwMDY3NEZEOSAvKiBnZW9sb2NhdGlvbiAqLywKIAkJCQk5NzEy
QTU1MzE1MDA0RTNDMDA0OEFGMTAgLyogaW5kZXhlZGRiICovLAogCQkJCUIxQTk0MkREMTVCNUNF
MjIwMEQ1MjVEMSAvKiBtZWRpYXNvdXJjZSAqLywKQEAgLTIwOTQwLDYgKzIwOTg3LDQ1IEBACiAJ
CQluYW1lID0gYXVkaW87CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlDREE5
OERCRDE2MDE0RTA4MDBGRUEzQjEgLyogZW5jcnlwdGVkbWVkaWEgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUNEQTk4REQ1MTYwMjVCRUQwMEZFQTNCMSAv
KiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgKi8sCisJCQkJQ0RBOThERDYxNjAyNUJFRDAwRkVB
M0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmggKi8sCisJCQkJQ0RBOThERDcxNjAyNUJFRTAw
RkVBM0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbCAqLywKKwkJCQlDREE5OERDMjE2MDE0
RUVFMDBGRUEzQjEgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgKi8sCisJCQkJQ0RBOThEQzMx
NjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuaCAqLywKKwkJCQlDREE5OERD
NDE2MDE0RUVFMDBGRUEzQjEgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwgKi8sCisJCQkJQ0RB
OThEQ0ExNjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgKi8sCisJCQkJQ0RBOThEQ0Ix
NjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5oICovLAorCQkJCUNEQTk4RENDMTYwMTUwOEEw
MEZFQTNCMSAvKiBNZWRpYUtleXMuaWRsICovLAorCQkJCUNEQTk4REM3MTYwMTRGMkMwMEZFQTNC
MSAvKiBNZWRpYUtleVNlc3Npb24uY3BwICovLAorCQkJCUNEQTk4REM4MTYwMTRGMkMwMEZFQTNC
MSAvKiBNZWRpYUtleVNlc3Npb24uaCAqLywKKwkJCQlDREE5OERDOTE2MDE0RjQwMDBGRUEzQjEg
LyogTWVkaWFLZXlTZXNzaW9uLmlkbCAqLywKKwkJCQlDREE5OEUwOTE2MDNDRDU5MDBGRUEzQjEg
LyogQ0RNLmNwcCAqLywKKwkJCQlDREE5OEUwQTE2MDNDRDU5MDBGRUEzQjEgLyogQ0RNLmggKi8s
CisJCQkJQ0RBOThFMEMxNjAzQ0YzQzAwRkVBM0IxIC8qIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBlbmNyeXB0ZWRtZWRpYTsKKwkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUNEQTk4RENEMTYwMTUxNUMwMEZFQTNCMSAv
KiBFbmNyeXB0ZWRNZWRpYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJQ0RBOThEOUIxNjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5jcHAg
Ki8sCisJCQkJQ0RBOThEOUMxNjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5oICov
LAorCQkJCUNEQTk4RERCMTYwMjZBMTgwMEZFQTNCMSAvKiBKU01lZGlhS2V5TWVzc2FnZUV2ZW50
LmNwcCAqLywKKwkJCQlDREE5OEREQzE2MDI2QTE5MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3Nh
Z2VFdmVudC5oICovLAorCQkJCUNEQTk4REREMTYwMjZBMTkwMEZFQTNCMSAvKiBKU01lZGlhS2V5
TmVlZGVkRXZlbnQuY3BwICovLAorCQkJCUNEQTk4RERFMTYwMjZBMTkwMEZFQTNCMSAvKiBKU01l
ZGlhS2V5TmVlZGVkRXZlbnQuaCAqLywKKwkJCQlDREE5OERDRTE2MDE1OTc5MDBGRUEzQjEgLyog
SlNNZWRpYUtleXMuY3BwICovLAorCQkJCUNEQTk4RENGMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01l
ZGlhS2V5cy5oICovLAorCQkJCUNEQTk4REQwMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5
U2Vzc2lvbi5jcHAgKi8sCisJCQkJQ0RBOThERDExNjAxNTk3OTAwRkVBM0IxIC8qIEpTTWVkaWFL
ZXlTZXNzaW9uLmggKi8sCisJCQkpOworCQkJbmFtZSA9IEVuY3J5cHRlZE1lZGlhOworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJREY5QUZENkYxM0ZDMzFCMDAwMTVGRUI3IC8q
IG9iamMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjIy
NjgsNiArMjIzNTQsNyBAQAogCQkJCUE3NDBCNUE1MTRDOTM1QUIwMEE3N0ZBNCAvKiBKU0ludGVy
bmFsU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NDBCNTk1MTRDOTM1QUIwMEE3N0ZB
NCAvKiBKU01hbGxvY1N0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxODE1QzFGMTM4
MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBNb2NrQ0RNLmggaW4gSGVhZGVycyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAg
LTI1OTIxLDYgKzI2MDA4LDcgQEAKIAkJCQlBNzQwQjVBNzE0QzkzNUFGMDBBNzdGQTQgLyogSlNJ
bnRlcm5hbFNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NDBCNTk3MTRDOTM1QUYw
MEE3N0ZBNCAvKiBKU01hbGxvY1N0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE4
MTVDMUUxMzgzMTk4MzAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlDREMyNkI0MDE2MEE4Q0M2MDAyNjc1N0IgLyogTW9ja0NETS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTI4NjY5LDYgKzI4NzU3LDE2IEBACiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAw
QzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIxMzdC
NjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRGMUQxMUJG
MTVGRjM3MjAwMDI2RTkwOCAvKiBQbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlDREE5OERBMzE2MDE0NjQxMDBGRUEzQjEgLyogSlNNZWRpYUtleUVy
cm9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4REQ4MTYwMjVCRUYwMEZFQTNCMSAvKiBN
ZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OERERjE2MDI2
QTM3MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDREE5OERFMDE2MDI2QTM3MDBGRUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4RTA0MTYwMzlFMUEwMEZFQTNCMSAvKiBKU01lZGlh
S2V5cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OEUwNjE2MDM5RTFGMDBGRUEzQjEgLyog
SlNNZWRpYUtleVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThFMEIxNjAzQ0Q2
MDAwRkVBM0IxIC8qIENETS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OEUwRDE2MDNGRTRB
MDBGRUEzQjEgLyogTWVkaWFLZXlzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4RTBFMTYw
M0ZFNTgwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
Q0QxQjRBNjUxNjA3ODZBRTAwMjgyREY5IC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbiBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCmluZGV4IDllOWUwYzg2MzA3YWQwMGVj
ODY3YThiYTY3NjQwZTBmYTA1MDBlNWUuLmFmZjU5ZTlhOGU2MzRjNGNhM2RmNWVjZjJlYjVkYjI3
NzJkNmZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCkBAIC00OCw0ICs0OCw2IEBAIERl
dmljZU9yaWVudGF0aW9uRXZlbnQgY29uZGl0aW9uYWw9REVWSUNFX09SSUVOVEFUSU9OCiBEZXZp
Y2VQcm94aW1pdHlFdmVudCBjb25kaXRpb25hbD1QUk9YSU1JVFlfRVZFTlRTCiBPcmllbnRhdGlv
bkV2ZW50IGludGVyZmFjZU5hbWU9RXZlbnQsIGNvbmRpdGlvbmFsPU9SSUVOVEFUSU9OX0VWRU5U
UwogTWVkaWFLZXlFdmVudCBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEKK01lZGlhS2V5TWVz
c2FnZUV2ZW50IGNvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMgorTWVkaWFLZXlOZWVkZWRF
dmVudCBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIKIFRyYWNrRXZlbnQgY29uZGl0aW9u
YWw9VklERU9fVFJBQ0sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmlu
ZGV4IDc5MWJkNGVkYTVjYTM3YWY0NTc4MzYzNDk3Nzk1MTMwNzRjMmQyZjQuLjk5ZDUwOGQyNmU4
MmJmZGQ4ODg0NDBlNzFhYzNmY2EwMTlhNjcwMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbgpAQCAtMTUsNiArMTUsNyBAQCBJREJUcmFuc2FjdGlvbiBjb25kaXRp
b25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCBjb25kaXRpb25h
bD1JTkRFWEVEX0RBVEFCQVNFCiBKYXZhU2NyaXB0QXVkaW9Ob2RlIGNvbmRpdGlvbmFsPVdFQl9B
VURJTwogTG9jYWxNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KK01lZGlhS2V5
U2Vzc2lvbiBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIKIE1lZGlhQ29udHJvbGxlciBj
b25kaXRpb25hbD1WSURFTwogTWVkaWFTb3VyY2UgY29uZGl0aW9uYWw9TUVESUFfU09VUkNFCiBN
ZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDVmNTY3NDUxNzU0MmY2MzhmNTg3MGQzYWE2MzI1Y2Iz
Y2E4MjQyYzQuLjI0OGMyNDVjNjY3NThkODRlOGZiMjE4MDQzNjVkMDZkZWZiNzM1MjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTE2LDYgKzExNiwxMSBA
QAogI2luY2x1ZGUgIk1lZGlhU291cmNlUmVnaXN0cnkuaCIKICNlbmRpZgogCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQV9WMikKKyNpbmNsdWRlICJNZWRpYUtleU5lZWRlZEV2ZW50LmgiCisj
aW5jbHVkZSAiTWVkaWFLZXlzLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTg0OSw2ICsxODU0LDI1IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcm
IGtleVN5c3RlCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCit2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwg
VWludDhBcnJheSogaW5pdERhdGEpCit7CisgICAgTWVkaWFLZXlOZWVkZWRFdmVudEluaXQgaW5p
dGlhbGl6ZXI7CisgICAgaW5pdGlhbGl6ZXIuaW5pdERhdGEgPSBpbml0RGF0YTsKKyAgICBpbml0
aWFsaXplci5idWJibGVzID0gZmFsc2U7CisgICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJsZSA9IGZh
bHNlOworCisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IE1lZGlhS2V5TmVlZGVkRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50LCBpbml0aWFsaXplcik7CisgICAg
ZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2
ZW50KGV2ZW50LnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TWVk
aWFLZXlzKE1lZGlhS2V5cyogbWVkaWFLZXlzKQoreworICAgIG1fbWVkaWFLZXlzID0gbWVkaWFL
ZXlzOworfQorI2VuZGlmCisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJvZ3Jlc3NFdmVudFRp
bWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKQogewogICAgIEFTU0VSVChtX3BsYXll
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDgyMWUyMjg1YjQx
Y2RjZWIwNTYzN2NkY2I1MDE4NTg5OGU1YmQ5ZDAuLjUzZTlkY2ExMjRiOGU1MDJiZDEwYTEyNTNj
YjcyOTlhZDUwN2YzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBA
IC02Niw2ICs2Niw5IEBAIGNsYXNzIFdpZGdldDsKICNpZiBQTEFURk9STShNQUMpCiBjbGFzcyBE
aXNwbGF5U2xlZXBEaXNhYmxlcjsKICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFf
VjIpCitjbGFzcyBNZWRpYUtleXM7CisjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
IHR5cGVkZWYgUE9ESW50ZXJ2YWxUcmVlPGRvdWJsZSwgVGV4dFRyYWNrQ3VlKj4gQ3VlSW50ZXJ2
YWxUcmVlOwpAQCAtMTg4LDkgKzE5MSwxNiBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUih3ZWJraXRrZXlhZGRlZCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUih3ZWJraXRrZXllcnJvcik7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUih3ZWJraXRrZXltZXNzYWdlKTsKKyNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRuZWVka2V5KTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQV9WMikKKyAgICBNZWRpYUtleXMqIG1lZGlhS2V5cygpIGNvbnN0IHsg
cmV0dXJuIG1fbWVkaWFLZXlzLmdldCgpOyB9CisgICAgdm9pZCBzZXRNZWRpYUtleXMoTWVkaWFL
ZXlzKik7CisjZW5kaWYKKwogLy8gY29udHJvbHMKICAgICBib29sIGNvbnRyb2xzKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRDb250cm9scyhib29sKTsKQEAgLTQxOCw2ICs0MjgsMTAgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCkgT1ZFUlJJREU7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisgICAgdmlydHVhbCB2
b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwgVWludDhBcnJheSopOworI2Vu
ZGlmCisKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclJlZmVycmVyKCkgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJVc2VyQWdlbnQoKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIENPUlNNb2RlIG1lZGlhUGxheWVyQ09SU01vZGUoKSBjb25z
dCBPVkVSUklERTsKQEAgLTY3NCw2ICs2ODgsMTAgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShN
QUMpCiAgICAgT3duUHRyPERpc3BsYXlTbGVlcERpc2FibGVyPiBtX3NsZWVwRGlzYWJsZXI7CiAj
ZW5kaWYKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisgICAgUmVmUHRyPE1lZGlh
S2V5cz4gbV9tZWRpYUtleXM7CisjZW5kaWYKIH07CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAppbmRleCBiNmEwYTYzNmYx
NjUyNjVhYzE1NTE5YjQzNzViMjYzY2MyOWI2NjA5Li5jYjgyMzlmMTFmM2FmYjc5NWFlODFhZWJl
NDFhNDdhMjk0NDVlNzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5p
ZGwKQEAgLTQ4LDYgKzQ4LDggQEAgbW9kdWxlIGh0bWwgewogICAgICAgICByYWlzZXMgKERPTUV4
Y2VwdGlvbik7CiAjaWYgZGVmaW5lZChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEVf
RU5DUllQVEVEX01FRElBCiAgICAgRE9NU3RyaW5nIGNhblBsYXlUeXBlKGluIFtPcHRpb25hbD1E
ZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0eXBlLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElz
TnVsbFN0cmluZywgVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxs
U3RyaW5nXSBET01TdHJpbmcga2V5U3lzdGVtKTsKKyNlbGlmIGRlZmluZWQoRU5BQkxFX0VOQ1JZ
UFRFRF9NRURJQV9WMikgJiYgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMgorICAgIERPTVN0cmlu
ZyBjYW5QbGF5VHlwZShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcg
dHlwZSwgaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZCwgVHJlYXROdWxsQXM9TnVsbFN0
cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcga2V5U3lzdGVtKTsK
ICNlbHNlCiAgICAgRE9NU3RyaW5nIGNhblBsYXlUeXBlKGluIFtPcHRpb25hbD1EZWZhdWx0SXNV
bmRlZmluZWRdIERPTVN0cmluZyB0eXBlKTsKICNlbmRpZgpAQCAtMTA2LDcgKzEwOCwxMCBAQCBt
b2R1bGUgaHRtbCB7CiAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVk
TWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXlhZGRlZDsKICAgICBhdHRyaWJ1dGUgW1Y4
RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gRXZlbnRMaXN0ZW5lciBvbndlYmtpdGtl
eWVycm9yOwogICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlh
XSBFdmVudExpc3RlbmVyIG9ud2Via2l0a2V5bWVzc2FnZTsKKyNlbmRpZgorI2lmIChkZWZpbmVk
KEVOQUJMRV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRV9FTkNSWVBURURfTUVESUEpIHx8IChk
ZWZpbmVkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICYmIEVOQUJMRV9FTkNSWVBURURfTUVE
SUFfVjIpCiAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFd
IEV2ZW50TGlzdGVuZXIgb253ZWJraXRuZWVka2V5OworICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVk
QXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBNZWRpYUtleXMgbWVkaWFLZXlzOwogI2VuZGlmCiAK
ICNpZiBkZWZpbmVkKEVOQUJMRV9WSURFT19UUkFDSykgJiYgRU5BQkxFX1ZJREVPX1RSQUNLCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFFcnJvci5oCmluZGV4IDkwZjQ0N2YwNWU1YTRmMGNhZDE0YjVjNDI5YmZi
ZmU4Yzg3MGQzMDQuLmIwYmY1Zjc2NWQ1YTM4NjY2Nzk4YjA0OTM1NzViMmEwNjQwMjE4ZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgTUVESUFfRVJSX05FVFdPUkssCiAgICAgICAgIE1FRElBX0VSUl9ERUNPREUsCiAgICAgICAg
IE1FRElBX0VSUl9TUkNfTk9UX1NVUFBPUlRFRAotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9W
MikKICAgICAgICAgLCBNRURJQV9FUlJfRU5DUllQVEVECiAjZW5kaWYKICAgICB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFFcnJvci5pZGwKaW5kZXggOGViOWQ1NDAyOTQ2NTAzNGRkNDNkZjgxOWZkZGNk
MTE1MTY3Mjc1Mi4uZTNjZDhkMmE3MWQ0ODk4OWNhMjE5N2E3M2Y4NDBmMTE5NTYzYWEyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaWRsCkBAIC0zMSw3ICszMSw3IEBAIG1vZHVsZSBodG1s
IHsKICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfTkVUV09SSyA9IDI7
CiAgICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfRVJSX0RFQ09ERSA9IDM7CiAg
ICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfRVJSX1NSQ19OT1RfU1VQUE9SVEVE
ID0gNDsKLSNpZiBkZWZpbmVkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRV9FTkNS
WVBURURfTUVESUEKKyNpZiAoZGVmaW5lZChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAmJiBFTkFC
TEVfRU5DUllQVEVEX01FRElBKSB8fCAoZGVmaW5lZChFTkFCTEVfRU5DUllQVEVEX01FRElBX1Yy
KSAmJiBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKQogICAgICAgICAgIGNvbnN0IHVuc2lnbmVk
IHNob3J0IE1FRElBX0VSUl9FTkNSWVBURUQgPSA1OwogI2VuZGlmCiAgICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IGNvZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhS2V5RXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlF
cnJvci5oCmluZGV4IDEyYzczNmQ0ODdhM2Y0YzA3MTY1YjRjNjUyOGVmZDk5OWNmNzVkZTIuLjQ5
ZTM4NDNlMzI4YjM5MDg3OGU2NWUxMmMxMWUwNjk1ZDk3MThkODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFLZXlFcnJvci5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIE1lZGlhS2V5RXJyb3Jf
aAogI2RlZmluZSBNZWRpYUtleUVycm9yX2gKIAotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9W
MikKIAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRp
YUtleUVycm9yIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlFcnJvcj4gewogcHVibGljOgot
ICAgIGVudW0gQ29kZSB7CisgICAgZW51bSB7CiAgICAgICAgIE1FRElBX0tFWUVSUl9VTktOT1dO
ID0gMSwKICAgICAgICAgTUVESUFfS0VZRVJSX0NMSUVOVCwKICAgICAgICAgTUVESUFfS0VZRVJS
X1NFUlZJQ0UsCkBAIC00MywxNSArNDMsMTggQEAgcHVibGljOgogICAgICAgICBNRURJQV9LRVlF
UlJfSEFSRFdBUkVDSEFOR0UsCiAgICAgICAgIE1FRElBX0tFWUVSUl9ET01BSU4KICAgICB9Owor
ICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgQ29kZTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE1lZGlhS2V5RXJyb3I+IGNyZWF0ZShDb2RlIGNvZGUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
ZWRpYUtleUVycm9yKGNvZGUpKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5RXJy
b3I+IGNyZWF0ZShDb2RlIGNvZGUsIHVuc2lnbmVkIGxvbmcgc3lzdGVtQ29kZSA9IDApIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUtleUVycm9yKGNvZGUsIHN5c3RlbUNvZGUpKTsgfQogCiAg
ICAgQ29kZSBjb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlOyB9CisgICAgdW5zaWduZWQgbG9u
ZyBzeXN0ZW1Db2RlKCkgeyByZXR1cm4gbV9zeXN0ZW1Db2RlOyB9CiAKIHByaXZhdGU6Ci0gICAg
ZXhwbGljaXQgTWVkaWFLZXlFcnJvcihDb2RlIGNvZGUpIDogbV9jb2RlKGNvZGUpIHsgfQorICAg
IGV4cGxpY2l0IE1lZGlhS2V5RXJyb3IoQ29kZSBjb2RlLCB1bnNpZ25lZCBsb25nIHN5c3RlbUNv
ZGUpIDogbV9jb2RlKGNvZGUpLCBtX3N5c3RlbUNvZGUoc3lzdGVtQ29kZSkgeyB9CiAKICAgICBD
b2RlIG1fY29kZTsKKyAgICB1bnNpZ25lZCBsb25nIG1fc3lzdGVtQ29kZTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFL
ZXlFcnJvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXJyb3IuaWRsCmluZGV4
IDU1YjliMDRkMGY3ZjU3M2UzOTQwNmUyYTExMWI0NzZhYWQ5MmI4OTMuLmRmMWM4MTc4YTk5ZGYz
M2Y1NzFhYjQ4N2YzZDM1OTYyNDA3NGUxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFLZXlFcnJvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUVy
cm9yLmlkbApAQCAtMjQsOCArMjQsOSBAQAogICovCiAKIG1vZHVsZSBodG1sIHsKKwogICAgIGlu
dGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQSwKKyAgICAgICAg
Q29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBfEVOQ1JZUFRFRF9NRURJQV9WMiwKICAgICAgICAg
VjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhLCAKICAgICBdIE1lZGlhS2V5RXJyb3Ig
ewogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9LRVlFUlJfVU5LTk9XTiA9IDE7
CkBAIC0zNSw1ICszNiw2IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgY29uc3QgdW5zaWduZWQg
c2hvcnQgTUVESUFfS0VZRVJSX0hBUkRXQVJFQ0hBTkdFID0gNTsKICAgICAgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgTUVESUFfS0VZRVJSX0RPTUFJTiA9IDY7CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBjb2RlOworICAgICAgICBbQ29uZGl0aW9uYWw9RU5DUllQ
VEVEX01FRElBX1YyXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBzeXN0ZW1Db2Rl
OwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggOTY0OWFhOTMxOGMz
NTBiYjQxMGIyOWUwY2Q4NTI0NzBmMzQxMzlmNy4uYTQ5YzVjYmE1ZDM5NWFmOTljZDk2ODZkMzBj
ZGYzODY0MGE1OTRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtNDc4LDYgKzQ3
OCwxMCBAQCBtb2R1bGUgd2luZG93IHsKIAogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFs
PUVOQ1JZUFRFRF9NRURJQSwgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBNZWRp
YUtleUVycm9yQ29uc3RydWN0b3IgTWVkaWFLZXlFcnJvcjsKICAgICAgICAgYXR0cmlidXRlIFtD
b25kaXRpb25hbD1FTkNSWVBURURfTUVESUEsIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRN
ZWRpYV0gTWVkaWFLZXlFdmVudENvbnN0cnVjdG9yIE1lZGlhS2V5RXZlbnQ7CisgICAgICAgIGF0
dHJpYnV0ZSBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyLCBWOEVuYWJsZWRBdFJ1bnRp
bWU9ZW5jcnlwdGVkTWVkaWFdIE1lZGlhS2V5c0NvbnN0cnVjdG9yIE1lZGlhS2V5czsKKyAgICAg
ICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIsIFY4RW5hYmxlZEF0
UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gTWVkaWFLZXlFcnJvckNvbnN0cnVjdG9yIE1lZGlhS2V5
RXJyb3I7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1Yy
LCBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIE1lZGlhS2V5TWVzc2FnZUV2ZW50
Q29uc3RydWN0b3IgTWVkaWFLZXlNZXNzYWdlRXZlbnQ7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29u
ZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyLCBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVk
TWVkaWFdIE1lZGlhS2V5TmVlZGVkRXZlbnRDb25zdHJ1Y3RvciBNZWRpYUtleU5lZWRlZEV2ZW50
OwogCiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU9fVFJBQ0ssIFY4RW5hYmxl
ZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrXSBIVE1MVHJhY2tFbGVtZW50Q29uc3RydWN0b3Ig
SFRNTFRyYWNrRWxlbWVudDsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1WSURFT19U
UkFDSywgVjhFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2tdIFRleHRUcmFja0NvbnN0
cnVjdG9yIFRleHRUcmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAppbmRleCA0NzgzNGQ1YWIxNWMxNTZlYjY2MmJjMGY4ZTBiYTVhMmRi
YjYwMGMzLi4xMmUzZmM1YmMzODc5Njk3ZmM1NWFiNmQwMzVmNzkxYjBlNWEwZGRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0y
ODEsNyArMjgxLDcgQEAgc3RhdGljIE1lZGlhUGxheWVyRmFjdG9yeSogYmVzdE1lZGlhRW5naW5l
Rm9yVHlwZUFuZENvZGVjcyhjb25zdCBTdHJpbmcmIHR5cGUsIGMKICAgICAgICAgICAgICAgICBj
dXJyZW50ID0gMDsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0jaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUo
RU5DUllQVEVEX01FRElBX1YyKQogICAgICAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIGVu
Z2luZVN1cHBvcnQgPSBlbmdpbmVzW25keF0tPnN1cHBvcnRzVHlwZUFuZENvZGVjcyh0eXBlLCBj
b2RlY3MsIGtleVN5c3RlbSwgdXJsKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShrZXlT
eXN0ZW0pOwpAQCAtNzg5LDcgKzc4OSw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVk
aWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5CiAgICAg
VU5VU0VEX1BBUkFNKGNsaWVudCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QV9WMikKICAgICByZXR1cm4gZW5naW5lLT5zdXBwb3J0c1R5cGVBbmRDb2RlY3ModHlwZSwgdHlw
ZUNvZGVjcywgc3lzdGVtLCB1cmwpOwogI2Vsc2UKICAgICBBU1NFUlQoc3lzdGVtLmlzRW1wdHko
KSk7CkBAIC0xMDg1LDYgKzEwODUsMTQgQEAgdm9pZCBNZWRpYVBsYXllcjo6a2V5TmVlZGVkKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY28KIH0KICNl
bmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKK3ZvaWQgTWVkaWFQbGF5ZXI6
OmtleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKK3sKKyAgICBpZiAobV9tZWRpYVBsYXll
ckNsaWVudCkKKyAgICAgICAgbV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJLZXlOZWVk
ZWQodGhpcywgaW5pdERhdGEpOworfQorI2VuZGlmCisKIFN0cmluZyBNZWRpYVBsYXllcjo6cmVm
ZXJyZXIoKSBjb25zdAogewogICAgIGlmICghbV9tZWRpYVBsYXllckNsaWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDYwODc2ZTYz
ODViYjk1ODA2NjUwMjcwMmY4M2Y2MjRiMzE4ZTE1OWMuLjQwODFhODg2NTg5NzI3NmZmZTcwZWVj
OWFkODY2NTU2MTAzMTNiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaApAQCAtMTkwLDYgKzE5MCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBp
bml0RGF0YSwgdW5zaWduZWQgaW5pdERhdGFMZW5ndGgpIHsgfQogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleU5l
ZWRlZChNZWRpYVBsYXllciosIFVpbnQ4QXJyYXkqKSB7IH0KKyNlbmRpZgorICAgIAogICAgIHZp
cnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdCB7IHJldHVybiBTdHJpbmco
KTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyVXNlckFnZW50KCkgY29uc3QgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIENPUlNNb2RlIG1lZGlhUGxheWVyQ09SU01v
ZGUoKSBjb25zdCB7IHJldHVybiBVbnNwZWNpZmllZDsgfQpAQCAtNDE1LDYgKzQxOSwxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBrZXlOZWVkZWQoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbml0RGF0YSwgdW5zaWdu
ZWQgaW5pdERhdGFMZW5ndGgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
X1YyKQorICAgIHZvaWQga2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKTsKKyNlbmRpZgor
CiAgICAgU3RyaW5nIHJlZmVycmVyKCkgY29uc3Q7CiAgICAgU3RyaW5nIHVzZXJBZ2VudCgpIGNv
bnN0OwogCkBAIC00NTMsNyArNDYxLDcgQEAgcHJpdmF0ZToKIAogdHlwZWRlZiBQYXNzT3duUHRy
PE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gKCpDcmVhdGVNZWRpYUVuZ2luZVBsYXllciko
TWVkaWFQbGF5ZXIqKTsKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMp
KEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpOwotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikK
IHR5cGVkZWYgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSAoKk1lZGlhRW5naW5lU3VwcG9ydHNU
eXBlKShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgS1VSTCYgdXJsKTsKICNlbHNlCiB0eXBlZGVmIE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgS1VSTCYgdXJsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMuaAppbmRleCBkNDRhMzBjNzMyMDM3MmEzZGQyMjU3Mzc0YTUzYWUyM2MyODM4ODY5
Li4xMWI2MTkxMjQ2ZmRmZTM0YThlNjkxZTdlZDYwOTg4MDc5YzgwNGQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oCkBAIC02Myw2ICs2MywxMCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBQYXNzT3du
UHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAg
ICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7
CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwmKTsKKyNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlIGV4dGVuZGVkU3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJik7CisjZW5k
aWYKKwogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
Y2FuY2VsTG9hZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggY2Y3NWQwY2Y2Y2ZkNzYw
OGFkNzFkNjc3ZjQ2ZjFlNzY5ODc4YTM2Ni4uZWViYWYxZWJkMjRkNzVjODczMTdiMTI1OTBkODU3
NTViZGQ3NTE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xMzIsNyArMTMyLDExIEBA
IFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0
cmFyKQogewogICAgIGlmIChpc0F2YWlsYWJsZSgpKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUFfVjIpCisgICAgICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5cGVzLCBleHRl
bmRlZFN1cHBvcnRzVHlwZSwgMCwgMCwgMCk7CisjZWxzZQogICAgICAgICByZWdpc3RyYXIoY3Jl
YXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwKTsKKyNlbmRpZgog
fQogCiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDKE1lZGlhUGxheWVyKiBwbGF5ZXIpCkBAIC03MjUsNiArNzI5LDE3
IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6c3VwcG9ydHNUeXBlKGNvbnN0CiAgICAgcmV0dXJuIFtBVlVSTEFzc2V0IGlzUGxh
eWFibGVFeHRlbmRlZE1JTUVUeXBlOnR5cGVTdHJpbmddID8gTWVkaWFQbGF5ZXI6OklzU3VwcG9y
dGVkIDogTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOzsKIH0KIAorI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUFfVjIpCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmV4dGVuZGVkU3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25z
dCBLVVJMJiB1cmwpCit7CisgICAgLy8gQVZGb3VuZGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgYW55
IGVuY3J5dHBlZCBtZWRpYSwgc28gcmV0dXJuIElzTm90U3VwcG9ydGVkIGlmIHRoZSBrZXlTeXN0
ZW0gaXMgbm9uLU5VTEw6CisgICAgaWYgKCFrZXlTeXN0ZW0uaXNOdWxsKCkgJiYgIWtleVN5c3Rl
bS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7
CisKKyAgICByZXR1cm4gc3VwcG9ydHNUeXBlKHR5cGUsIGNvZGVjcywgdXJsKTs7Cit9CisjZW5k
aWYKKwogYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjppc0F2YWlsYWJs
ZSgpCiB7CiAgICAgcmV0dXJuIEFWRm91bmRhdGlvbkxpYnJhcnkoKSAmJiBDb3JlTWVkaWFMaWJy
YXJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCmluZGV4IDQzNjE2MDcxODIxYjlmYjdh
ODViNTYyNzYyYjUxNTNhZTI4ZTI5M2IuLjZlYjFiN2RiOTM4NDJjMTE3MjZiNTU2NzZlOTU1Njli
NmFhNTllMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCkBAIC03Niw2ICs3NiwxMCBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVk
VHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBjb2RlY3MsIGNvbnN0IEtVUkwmKTsKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQor
ICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIGV4dGVuZGVkU3VwcG9ydHNUeXBl
KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtLCBjb25zdCBLVVJMJik7CisjZW5kaWYKKwogICAgIHN0YXRpYyB2b2lkIGdldFNp
dGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+Jik7CiAgICAgc3RhdGljIHZvaWQgY2xlYXJN
ZWRpYUNhY2hlKCk7CiAgICAgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShjb25z
dCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQppbmRleCAyZTg0OWFmNjFj
OGE0YjM4M2MxNmU3ODc3Y2ZiYTQwYjIzOGI2ZjhkLi40YzY2Nzc0OWY4ZjYxNDY1NTQ0NTVlMjhl
ODAxMzkyYmVhNGJkNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCkBAIC0xOTAs
NyArMTkwLDExIEBAIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBNZWRp
YVBsYXllclByaXZhdGVRVEtpdDo6Y3JlYXRlKE1lZGlhUGxhCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0OjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lz
dHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBX1YyKQorICAgICAgICByZWdpc3RyYXIoY3JlYXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywgZXh0
ZW5kZWRTdXBwb3J0c1R5cGUsIGdldFNpdGVzSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUs
IGNsZWFyTWVkaWFDYWNoZUZvclNpdGUpOworI2Vsc2UKICAgICAgICAgcmVnaXN0cmFyKGNyZWF0
ZSwgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUs
IGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk7CisjZW5kaWYKIH0KIAog
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0KE1lZGlhUGxh
eWVyKiBwbGF5ZXIpCkBAIC0xNTE4LDYgKzE1MjIsMTcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYg
dHkKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwogfQogCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKK01lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQ6OmV4dGVuZGVkU3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBL
VVJMJiB1cmwpCit7CisgICAgLy8gUVRLaXQgZG9lcyBub3Qgc3VwcG9ydCBhbnkgZW5jcnl0cGVk
IG1lZGlhLCBzbyByZXR1cm4gSXNOb3RTdXBwb3J0ZWQgaWYgdGhlIGtleVN5c3RlbSBpcyBub24t
TlVMTDoKKyAgICBpZiAoIWtleVN5c3RlbS5pc051bGwoKSAmJiAha2V5U3lzdGVtLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKworICAgIHJl
dHVybiBzdXBwb3J0c1R5cGUodHlwZSwgY29kZWNzLCB1cmwpOzsKK30KKyNlbmRpZgorCiBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojppc0F2YWlsYWJsZSgpCiB7CiAgICAgLy8gT24gMTAu
NSBhbmQgaGlnaGVyLCBRdWlja1RpbWUgd2lsbCBhbHdheXMgYmUgbmV3IGVub3VnaCBmb3IgPHZp
ZGVvPiBhbmQgPGF1ZGlvPiBzdXBwb3J0LCBzbyB3ZSBqdXN0IGNoZWNrIHRoYXQgdGhlIGZyYW1l
d29yayBjYW4gYmUgbG9hZGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4
IDNhZmIzMzQ3YWVkMWI1NTQ2YmExZTA0ZWRiYzIxYWM1ZTI0MWEwNGUuLmRiMGVlYmEwMDE2NWE1
N2NhZDYzNzcyYzBiMzcxMGM5NjE0YTkyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKQEAgLTEwMSw2ICsxMDEsMTEgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcu
aCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKyNpbmNsdWRlICJD
RE0uaCIKKyNpbmNsdWRlICJNb2NrQ0RNLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMTI1Myw0ICsxMjU4LDExIEBAIFBh
c3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSW50ZXJuYWxzOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhz
KCkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nTGlzdC5yZWxlYXNlKCk7CiB9CiAKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBX1YyKQordm9pZCBJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RN
KCkKK3sKKyAgICBDRE06OnJlZ2lzdGVyQ0RNRmFjdG9yeShNb2NrQ0RNOjpjcmVhdGUsIE1vY2tD
RE06OnN1cHBvcnRzS2V5U3l0ZW0pOworfQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCmluZGV4IGQyZDQ1MmVhOTVhMGVlN2Q2Mzk4OTUwMDJmNzZjNDAwMDAzMTQ4Mjku
LmE3ZTdlOTcwYjEwMTFhNzA5ODg5YWMyMGIyMmFjZjI5YmY3N2ZhYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaApAQCAtMjE3LDYgKzIxNywxMCBAQCBwdWJsaWM6CiAKICAgICBQYXNz
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IGdldFJlZmVyZW5jZWRGaWxlUGF0aHMoKSBjb25zdDsKIAor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisgICAgdm9pZCBpbml0aWFsaXplTW9ja0NE
TSgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERvY3VtZW50
Kik7CiAgICAgRG9jdW1lbnQqIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDNiZDkxMjk5ZjBhNTU3NDY2MjVjZmM5MWQ1MjlhMWY4
ZmEzYjFlY2IuLjhkZGM5MWVlNTRlMmFhYjgwN2VlZjEzNTA4MjM4NTBjMDQ1ZDAzNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTE5Myw2ICsxOTMsOCBAQCBtb2R1bGUg
d2luZG93IHsKICAgICAgICAgTWFsbG9jU3RhdGlzdGljcyBtYWxsb2NTdGF0aXN0aWNzKCk7CiAK
ICAgICAgICAgRE9NU3RyaW5nW10gZ2V0UmVmZXJlbmNlZEZpbGVQYXRocygpOworCisgICAgICAg
IFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjJdIHZvaWQgaW5pdGlhbGl6ZU1vY2tDRE0o
KTsKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE0uY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
YTEzNjVmMzk5MjllZTE5N2IwNDY0MzE4ODVmMDBjMGY4MDA1MTVlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNLmNwcApAQCAtMCwwICsxLDExOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2NrQ0RNLmgiCisK
KyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjaW5jbHVkZSAiTWVkaWFLZXlFcnJv
ci5oIgorI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0tleVN5dGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
KQoreworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShrZXlTeXN0ZW0sICJjb20ud2ViY29y
ZS5tb2NrIik7Cit9CisKK2Jvb2wgTW9ja0NETTo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQoreworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShtaW1lVHlwZSwg
InZpZGVvL21vY2siKTsKK30KKworU3RyaW5nIE1vY2tDRE06OmdlbmVyYXRlU2Vzc2lvbklkKCkK
K3sKKyAgICBzdGF0aWMgaW50IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nU2Vzc2lvbklkID0gMDsK
KyAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobW9ub3RvbmljYWxseUluY3JlYXNpbmdTZXNzaW9u
SWQrKyk7Cit9CisKK3N0YXRpYyBVaW50OEFycmF5KiBpbml0RGF0YVByZWZpeCgpCit7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcHJlZml4RGF0YVtdID0geydtJywgJ28nLCAnYycs
ICdrJ307CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWZQdHI8VWludDhBcnJheT4sIHByZWZp
eCwgKCkpOworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKCFp
bml0aWFsaXplZCkgeworICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CisgICAgICAgIHByZWZp
eCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShwcmVmaXhEYXRhLCBzaXplb2YocHJlZml4RGF0YSkgLyBz
aXplb2YocHJlZml4RGF0YVswXSkpOworICAgIH0KKyAgICByZXR1cm4gcHJlZml4LmdldCgpOwor
fQorCisKK3N0YXRpYyBVaW50OEFycmF5KiBrZXlQcmVmaXgoKQoreworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBjaGFyIHByZWZpeERhdGFbXSA9IHsnaycsICdlJywgJ3knfTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxXVEY6OlVpbnQ4QXJyYXk+LCBwcmVmaXgsICgpKTsKKyAg
ICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmICghaW5pdGlhbGl6ZWQp
IHsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgICBwcmVmaXggPSBVaW50OEFy
cmF5OjpjcmVhdGUocHJlZml4RGF0YSwgc2l6ZW9mKHByZWZpeERhdGEpIC8gc2l6ZW9mKHByZWZp
eERhdGFbMF0pKTsKKyAgICB9CisgICAgcmV0dXJuIHByZWZpeC5nZXQoKTsKK30KKworc3RhdGlj
IFVpbnQ4QXJyYXkqIGtleVJlcXVlc3QoKQoreworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj
aGFyIHJlcXVlc3REYXRhW10gPSB7J3InLCAnZScsICdxJywgJ3UnLCAnZScsICdzJywgJ3QnfTsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxXVEY6OlVpbnQ4QXJyYXk+LCByZXF1ZXN0
LCAoKSk7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoIWlu
aXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAgcmVxdWVz
dCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShyZXF1ZXN0RGF0YSwgc2l6ZW9mKHJlcXVlc3REYXRhKSAv
IHNpemVvZihyZXF1ZXN0RGF0YVswXSkpOworICAgIH0KKyAgICByZXR1cm4gcmVxdWVzdC5nZXQo
KTsKK30KKworUGFzc1JlZlB0cjxVaW50OEFycmF5PiBNb2NrQ0RNOjpnZW5lcmF0ZUtleVJlcXVl
c3QoY29uc3QgU3RyaW5nJiwgVWludDhBcnJheSogaW5pdERhdGEsIGNvbnN0IFN0cmluZyYsIFN0
cmluZyYsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmKQoreworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbml0RGF0YVByZWZpeCgpLT5sZW5ndGgoKTsgKytp
KSB7CisgICAgICAgIGlmICghaW5pdERhdGEgfHwgaSA+PSBpbml0RGF0YS0+bGVuZ3RoKCkgfHwg
aW5pdERhdGEtPml0ZW0oaSkgIT0gaW5pdERhdGFQcmVmaXgoKS0+aXRlbShpKSkgeworICAgICAg
ICAgICAgZXJyb3JDb2RlID0gTWVkaWFLZXlFcnJvcjo6TUVESUFfS0VZRVJSX1VOS05PV047Cisg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4ga2V5UmVx
dWVzdCgpOworfQorCit2b2lkIE1vY2tDRE06OmNsZWFyS2V5c0Zyb21TZXNzaW9uSWQoY29uc3Qg
U3RyaW5nJikKK3sKKyAgICAvLyBuby1vcAorfQorCitib29sIE1vY2tDRE06OmFkZEtleUZvclNl
c3Npb25JZChVaW50OEFycmF5KiBrZXksIGNvbnN0IFN0cmluZyYsIFJlZlB0cjxVaW50OEFycmF5
PiYsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmKQoreworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBrZXlQcmVmaXgoKS0+bGVuZ3RoKCk7ICsraSkgeworICAg
ICAgICBpZiAoaSA+PSBrZXktPmxlbmd0aCgpIHx8IGtleS0+aXRlbShpKSAhPSBrZXlQcmVmaXgo
KS0+aXRlbShpKSkgeworICAgICAgICAgICAgZXJyb3JDb2RlID0gTWVkaWFLZXlFcnJvcjo6TUVE
SUFfS0VZRVJSX0NMSUVOVDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQV9WMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NE
TS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Y3MGIz
MzU5NDJhYTY4YjM2ZWZlZjkzZDkxNzI4MTMyMDFiM2MxZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIE1vY2tDRE1faAorI2RlZmluZSBNb2NrQ0RNX2gKKworI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlICJDRE1Qcml2YXRlLmgiCisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDRE07CisK
K2NsYXNzIE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZUludGVyZmFjZSB7CitwdWJsaWM6Cisg
ICAgLy8gQ0RNRmFjdG9yeSBzdXBwb3J0OgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENETVByaXZh
dGVJbnRlcmZhY2U+IGNyZWF0ZShDRE0qIGNkbSkgeyByZXR1cm4gYWRvcHRQdHIobmV3IE1vY2tD
RE0oY2RtKSk7IH0KKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5dGVtKGNvbnN0IFN0cmlu
ZyYpOworCisgICAgdmlydHVhbCB+TW9ja0NETSgpIHsgfQorCisgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisKKyAgICB2aXJ0dWFsIFN0
cmluZyBnZW5lcmF0ZVNlc3Npb25JZCgpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxVaW50OEFy
cmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJh
eSogaW5pdERhdGEsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBTdHJpbmcmIGRlc3RpbmF0aW9u
VVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNpZ25lZCBsb25nJiBzeXN0ZW1Db2Rl
KTsKKworICAgIHZpcnR1YWwgdm9pZCBjbGVhcktleXNGcm9tU2Vzc2lvbklkKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkS2V5Rm9yU2Vzc2lvbklkKFVpbnQ4
QXJyYXkqLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0
TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVt
Q29kZSk7CisKK3Byb3RlY3RlZDoKKyAgICBNb2NrQ0RNKENETSogY2RtKSA6IG1fY2RtKGNkbSkg
eyB9CisgICAgQ0RNKiBtX2NkbTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisKKyNlbmRpZiAvLyBNb2NrQ0RNX2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3NWU2ZWUwZDM5MTVhNjVl
NTZjZDNhM2I1NjI5OWM3MjkwZjVhNmJkLi5iYjgyZTM3OTg5ZDNhODAyNmQ3YTIwMjA3MGJkNWVl
ZjFlNzk0NWQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDktMTkgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQnJpbmcgV2ViS2l0IHVwIHRvIHNwZWVk
IHdpdGggbGF0ZXN0IEVuY3J5cHRlZCBNZWRpYSBzcGVjLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBuZXcgdGVzdHMgZm9yIHRoZSB1cGRhdGVk
IEVuY3J5cHRlZCBNZWRpYSBFeHRlbnNpb25zIHNwZWMuCisKKyAgICAgICAgKiBtZWRpYS9lbmNy
eXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLWV2ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItZXZl
bnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0
ZWQtbWVkaWEtdjItc3ludGF4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXguaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6IFVuc2tpcCAobW9zdCBvZikgdGhlIG1lZGlh
L2VuY3J5cHRlZC1tZWRpYS8gdGVzdHMKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvbWVkaWEvZW5j
cnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS1jYW4tcGxheS10eXBlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisKIDIwMTItMDktMjAgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNl
bkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XVtXSzJdIGZhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9u
L3NuYXYtbWVkaWEtZWxlbWVudHMuaHRtbCB0aW1lb3V0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1ldmVudHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRp
YS12Mi1ldmVudHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiMjk2M2EwNjQzMDRkNjg4NjIw
MmU5YjgyNjk5MjVmZGRiZDU1MzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRp
YS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLWV2ZW50cy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMSBAQAorVGhpcyB0ZXN0cyB0aGUgZXZlbnRzIGNyZWF0ZWQgYnkgTWVkaWFL
ZXlzLgorCitSVU4obWVkaWFLZXlzID0gbmV3IE1lZGlhS2V5cygiY29tLndlYmNvcmUubW9jayIp
KQorUlVOKG1lZGlhS2V5U2Vzc2lvbiA9IG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ2aWRlby9t
b2NrIiwgaW5pdERhdGEpKQorRVZFTlQod2Via2l0a2V5bWVzc2FnZSkKK1JVTihtZWRpYUtleVNl
c3Npb24uYWRkS2V5KGludmFsaWRLZXkpKQorRVZFTlQod2Via2l0a2V5ZXJyb3IpCitSVU4obWVk
aWFLZXlTZXNzaW9uLmFkZEtleSh2YWxpZEtleSkpCitFVkVOVCh3ZWJraXRrZXlhZGRlZCkKK0VO
RCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRp
YS9lbmNyeXB0ZWQtbWVkaWEtdjItZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNy
eXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLWV2ZW50cy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3
NzYwOGY3YjUzNjFkYjkzNmQ2N2VhNTQyMjM3Y2VjMWI1NjFlN2MKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLWV2
ZW50cy5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDx0aXRsZT5NZWRpYUtleXM8L3RpdGxlPgorICAgICAgICA8c2NyaXB0
IHNyYz0uLi92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICAgICAgZnVuY3Rpb24gc3RyaW5nVG9VaW50OEFycmF5KHN0cikKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICB2YXIgYXJyPVtdOworICAgICAgICAgICAgICAgIGZvcih2YXIgaT0wLGo9
c3RyLmxlbmd0aDtpPGo7KytpKXsKKyAgICAgICAgICAgICAgICAgIGFycltpXT1zdHIuY2hhckNv
ZGVBdChpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBV
aW50OEFycmF5KGFycik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBtZWRpYUtl
eXM7CisgICAgICAgICAgICB2YXIgbWVkaWFLZXlTZXNzaW9uOworICAgICAgICAgICAgdmFyIGlu
aXREYXRhID0gc3RyaW5nVG9VaW50OEFycmF5KCdtb2NrJyk7CisgICAgICAgICAgICB2YXIgaW52
YWxpZEtleSA9IHN0cmluZ1RvVWludDhBcnJheSgnaW52YWxpZCcpOworICAgICAgICAgICAgdmFy
IHZhbGlkS2V5ID0gc3RyaW5nVG9VaW50OEFycmF5KCdrZXknKTsKKworICAgICAgICAgICAgZnVu
Y3Rpb24gcnVuVGVzdCgpIAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEluaXRp
YWxpemUgdGhlIE1vY2tDRE0uIEl0IHN1cHBvcnRzIHRoZSBrZXkgc3lzdGVtICdjb20uYXBwbGUu
bW9jaycsIHRoZSAKKyAgICAgICAgICAgICAgICAvLyBtaW1lIHR5cGUgJ3ZpZGVvL21vY2snLiBJ
dCByZXF1aXJlcyBpbml0IGRhdGEgdG8gYmVnaW4gd2l0aCAnbW9jaycsIGFuZAorICAgICAgICAg
ICAgICAgIC8vIGtleXMgdG8gYmVnaW4gd2l0aCAna2V5Jy4KKyAgICAgICAgICAgICAgICBpZiAo
aW50ZXJuYWxzKQorICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbHMuaW5pdGlhbGl6ZU1vY2tD
RE0oKTsKKworICAgICAgICAgICAgICAgIHJ1bignbWVkaWFLZXlzID0gbmV3IE1lZGlhS2V5cygi
Y29tLndlYmNvcmUubW9jayIpJyk7CisgICAgICAgICAgICAgICAgcnVuKCdtZWRpYUtleVNlc3Np
b24gPSBtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidmlkZW8vbW9jayIsIGluaXREYXRhKScpOwor
ICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnd2Via2l0a2V5bWVzc2FnZScsIGtleU1lc3Nh
Z2UsIGZhbHNlLCBmYWxzZSwgbWVkaWFLZXlTZXNzaW9uKTsKKyAgICAgICAgICAgICAgICB3YWl0
Rm9yRXZlbnQoJ3dlYmtpdGtleWVycm9yJywga2V5RXJyb3IsIGZhbHNlLCBmYWxzZSwgbWVkaWFL
ZXlTZXNzaW9uKTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3dlYmtpdGtleWFkZGVk
JywgbnVsbCwgdHJ1ZSwgZmFsc2UsIG1lZGlhS2V5U2Vzc2lvbik7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIGtleU1lc3NhZ2UoZXZlbnQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcnVuKCdtZWRpYUtleVNlc3Npb24uYWRkS2V5KGludmFsaWRLZXkpJyk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGtleUVycm9yKGV2ZW50KQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJ1bignbWVkaWFLZXlTZXNzaW9uLmFkZEtl
eSh2YWxpZEtleSknKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICAgICAgPHA+VGhpcyB0ZXN0
cyB0aGUgZXZlbnRzIGNyZWF0ZWQgYnkgTWVkaWFLZXlzLjwvcD4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0
ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRheC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRheC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjMwNTExMTk2ODU3NjEyNmU3YmUwODljYzU2NzRiYTNkZWRh
NzI0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRp
YS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI2IEBA
CitUaGlzIHRlc3RzIHRoZSBiYXNpYyBBUEkgb2YgTWVkaWFLZXlzIGFuZCBNZWRpYUtleVNlc3Np
b24uCisKK1Rlc3QgTWVkaWFLZXlzLgorRVhQRUNURUQgKHR5cGVvZiB3aW5kb3cuTWVkaWFLZXlz
ID09ICdvYmplY3QnKSBPSworVEVTVChuZXcgTWVkaWFLZXlzKCIiKSkgVEhST1dTKERPTUV4Y2Vw
dGlvbi5JTlZBTElEX0FDQ0VTU19FUlIpIE9LCitURVNUKG5ldyBNZWRpYUtleXMoInVuc3VwcG9y
dGVkIikpIFRIUk9XUyhET01FeGNlcHRpb24uTk9UX1NVUFBPUlRFRF9FUlIpIE9LCitSVU4obWVk
aWFLZXlzID0gbmV3IE1lZGlhS2V5cygiY29tLndlYmNvcmUubW9jayIpKQorRVhQRUNURUQgKG1l
ZGlhS2V5cy5rZXlTeXN0ZW0gPT0gJ2NvbS53ZWJjb3JlLm1vY2snKSBPSworRVhQRUNURUQgKHR5
cGVvZiBtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbiA9PSAnZnVuY3Rpb24nKSBPSworVEVTVChtZWRp
YUtleXMuY3JlYXRlU2Vzc2lvbigiIiwgbmV3IFVpbnQ4QXJyYXkoMSkpKSBUSFJPV1MoRE9NRXhj
ZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUikgT0sKK1RFU1QobWVkaWFLZXlzLmNyZWF0ZVNlc3Np
b24oInVuc3VwcG9ydGVkL3R5cGUiKSkgVEhST1dTKERPTUV4Y2VwdGlvbi5OT1RfU1VQUE9SVEVE
X0VSUikgT0sKKworVGVzdCBNZWRpYUtleVNlc3Npb24uCitSVU4obWVkaWFLZXlTZXNzaW9uID0g
bWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oInZpZGVvL21vY2siLCBpbml0RGF0YSkpCitFWFBFQ1RF
RCAodHlwZW9mIG1lZGlhS2V5U2Vzc2lvbiA9PSAnb2JqZWN0JykgT0sKK0VYUEVDVEVEICh0eXBl
b2YgbWVkaWFLZXlTZXNzaW9uLmFkZEV2ZW50TGlzdGVuZXIgPT0gJ2Z1bmN0aW9uJykgT0sKK0VY
UEVDVEVEICh0eXBlb2YgbWVkaWFLZXlTZXNzaW9uLmFkZEtleSA9PSAnZnVuY3Rpb24nKSBPSwor
RVhQRUNURUQgKG1lZGlhS2V5U2Vzc2lvbi5lcnJvciA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAo
bWVkaWFLZXlTZXNzaW9uLmtleVN5c3RlbSA9PSAnY29tLndlYmNvcmUubW9jaycpIE9LCitFWFBF
Q1RFRCAobWVkaWFLZXlTZXNzaW9uLnNlc3Npb25JZCAhPSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAo
bWVkaWFLZXlTZXNzaW9uLm9ud2Via2l0a2V5YWRkZWQgPT0gJ251bGwnKSBPSworRVhQRUNURUQg
KG1lZGlhS2V5U2Vzc2lvbi5vbndlYmtpdGtleWVycm9yID09ICdudWxsJykgT0sKK0VYUEVDVEVE
IChtZWRpYUtleVNlc3Npb24ub253ZWJraXRrZXltZXNzYWdlID09ICdudWxsJykgT0sKK1RFU1Qo
bWVkaWFLZXlTZXNzaW9uLmFkZEtleShudWxsKSkgVEhST1dTKERPTUV4Y2VwdGlvbi5JTlZBTElE
X0FDQ0VTU19FUlIpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9t
ZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRheC5odG1sIGIvTGF5
b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXgu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODIwYWM5Yjc2ZDZkYmUxZmRjYmQxNzk1MmNkMzE0NjM5YmRkN2Mx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2Vu
Y3J5cHRlZC1tZWRpYS12Mi1zeW50YXguaHRtbApAQCAtMCwwICsxLDU4IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+TWVkaWFLZXlzPC90aXRs
ZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0cmluZ1RvVWludDhBcnJheShzdHIp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGFycj1bXTsKKyAgICAgICAgICAg
ICAgICBmb3IodmFyIGk9MCxqPXN0ci5sZW5ndGg7aTxqOysraSl7CisgICAgICAgICAgICAgICAg
ICBhcnJbaV09c3RyLmNoYXJDb2RlQXQoaSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShhcnIpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgbWVkaWFLZXlzOworICAgICAgICAgICAgdmFyIG1lZGlhS2V5U2Vzc2lvbjsK
KyAgICAgICAgICAgIHZhciBpbml0RGF0YSA9IHN0cmluZ1RvVWludDhBcnJheSgnbW9jaycpOwor
CisgICAgICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgTW9ja0NETS4gSXQgc3VwcG9ydHMgdGhlIGtleSBz
eXN0ZW0gJ2NvbS5hcHBsZS5tb2NrJywgdGhlIAorICAgICAgICAgICAgICAgIC8vIG1pbWUgdHlw
ZSAndmlkZW8vbW9jaycuIEl0IHJlcXVpcmVzIGluaXQgZGF0YSB0byBiZWdpbiB3aXRoICdtb2Nr
JywgYW5kCisgICAgICAgICAgICAgICAgLy8ga2V5cyB0byBiZWdpbiB3aXRoICdrZXknLgorICAg
ICAgICAgICAgICAgIGlmIChpbnRlcm5hbHMpCisgICAgICAgICAgICAgICAgICAgIGludGVybmFs
cy5pbml0aWFsaXplTW9ja0NETSgpOworCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJU
ZXN0IE1lZGlhS2V5cy4iKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3R5cGVvZiB3
aW5kb3cuTWVkaWFLZXlzJywgJ29iamVjdCcpOworICAgICAgICAgICAgICAgIHRlc3RFeGNlcHRp
b24oJ25ldyBNZWRpYUtleXMoIiIpJywgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIi
KTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhjZXB0aW9uKCduZXcgTWVkaWFLZXlzKCJ1bnN1cHBv
cnRlZCIpJywgIkRPTUV4Y2VwdGlvbi5OT1RfU1VQUE9SVEVEX0VSUiIpOworICAgICAgICAgICAg
ICAgIHJ1bignbWVkaWFLZXlzID0gbmV3IE1lZGlhS2V5cygiY29tLndlYmNvcmUubW9jayIpJyk7
CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleXMua2V5U3lzdGVtJywgJ2Nv
bS53ZWJjb3JlLm1vY2snKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3R5cGVvZiBt
ZWRpYUtleXMuY3JlYXRlU2Vzc2lvbicsICdmdW5jdGlvbicpOworICAgICAgICAgICAgICAgIHRl
c3RFeGNlcHRpb24oJ21lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCIiLCBuZXcgVWludDhBcnJheSgx
KSknLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUiIpOworICAgICAgICAgICAgICAg
IHRlc3RFeGNlcHRpb24oJ21lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ1bnN1cHBvcnRlZC90eXBl
IiknLCAiRE9NRXhjZXB0aW9uLk5PVF9TVVBQT1JURURfRVJSIik7CisgICAgICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCIiKTsKKworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCBN
ZWRpYUtleVNlc3Npb24uIik7CisgICAgICAgICAgICAgICAgcnVuKCdtZWRpYUtleVNlc3Npb24g
PSBtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidmlkZW8vbW9jayIsIGluaXREYXRhKScpOworICAg
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndHlwZW9mIG1lZGlhS2V5U2Vzc2lvbicsICdvYmpl
Y3QnKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3R5cGVvZiBtZWRpYUtleVNlc3Np
b24uYWRkRXZlbnRMaXN0ZW5lcicsICdmdW5jdGlvbicpOworICAgICAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgndHlwZW9mIG1lZGlhS2V5U2Vzc2lvbi5hZGRLZXknLCAnZnVuY3Rpb24nKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ21lZGlhS2V5U2Vzc2lvbi5lcnJvcicsIG51bGwp
OworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnbWVkaWFLZXlTZXNzaW9uLmtleVN5c3Rl
bScsICdjb20ud2ViY29yZS5tb2NrJyk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdt
ZWRpYUtleVNlc3Npb24uc2Vzc2lvbklkJywgbnVsbCwgJyE9Jyk7CisgICAgICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCdtZWRpYUtleVNlc3Npb24ub253ZWJraXRrZXlhZGRlZCcsIG51bGwpOwor
ICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnbWVkaWFLZXlTZXNzaW9uLm9ud2Via2l0a2V5
ZXJyb3InLCBudWxsKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ21lZGlhS2V5U2Vz
c2lvbi5vbndlYmtpdGtleW1lc3NhZ2UnLCBudWxsKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhj
ZXB0aW9uKCdtZWRpYUtleVNlc3Npb24uYWRkS2V5KG51bGwpJywgIkRPTUV4Y2VwdGlvbi5JTlZB
TElEX0FDQ0VTU19FUlIiKTsKKyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+CisgICAgICAgIDxwPlRoaXMgdGVzdHMgdGhlIGJhc2ljIEFQSSBvZiBNZWRpYUtl
eXMgYW5kIE1lZGlhS2V5U2Vzc2lvbi48L3A+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKaW5kZXggYjA0Yzk3
MjM4MDIzMzU5MGU3ZWQyNTlkNWFjYTQ0MjI5YWE4ZTk4MC4uMzc1ZDMzNjI0NWE0YzE0MzY3MGFk
ZTJhZDI5OTYyNGYwYzQxMGZiMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKQEAgLTQ3NSw5
ICs0NzUsMTEgQEAgbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXRjMDI4LXVuc3VwcG9ydGVkLW1h
cmt1cC5odG1sCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDcz
MQogaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvCiAKLSMgRW5jcnlwdGVkIE1lZGlhIEV4
dGVuc2lvbnMgYXJlIG5vdCBlbmFibGVkLgotbWVkaWEvZW5jcnlwdGVkLW1lZGlhLwotZmFzdC9l
dmVudHMvY29uc3RydWN0b3JzL21lZGlhLWtleS1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCisjIERl
cHJlY2F0ZWQgRW5jcnlwdGVkIE1lZGlhIEV4dGVuc2lvbnMgYXJlIG5vdCBlbmFibGVkLgorbWVk
aWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS1jYW4tcGxheS10eXBlLXdlYm0uaHRt
bAorbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS1ldmVudHMuaHRtbAorbWVk
aWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS1ub3QtbG9hZGVkLmh0bWwKK21lZGlh
L2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtc3ludGF4Lmh0bWwKIAogIyBGb250IGZl
YXR1cmUgc2V0dGluZ3MgaXMgbm90IGltcGxlbWVudGVkLgogY3NzMy9mb250LWZlYXR1cmUtc2V0
dGluZ3MtcmVuZGVyaW5nLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLWNhbi1wbGF5LXR5cGUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRp
YS9lbmNyeXB0ZWQtbWVkaWEtY2FuLXBsYXktdHlwZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmFjYzc3YTQ2NTg5MDZiMjE1ZGNlZTYzZDA2M2E4Yjc3OGM0YTMzNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlw
dGVkLW1lZGlhLWNhbi1wbGF5LXR5cGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNzUgQEAKK1Rl
c3QgRW5jcnlwdGVkIE1lZGlhIGV4dGVuc2lvbiBvZiBIVE1MTWVkaWFFbGVtZW50IGNhblBsYXlU
eXBlKCkgbWV0aG9kLgorCitUaGUgdGVzdCBpcyBkZXNpZ25lZCB0byBwYXNzIHdpdGggYW55IGlt
cGxlbWVudGF0aW9uIHJlZ2FyZGxlc3Mgb2Ygc3VwcG9ydGVkIG1lZGlhIHR5cGVzIGFuZCByZWxp
ZXMgb24gdGhlIGV4cGVjdGVkIGxvZyB0byBkZXRlY3QgdGhlIGV4cGVjdGVkIHJlc3VsdHMgZm9y
IHNvbWUgdHlwZXMuIFRvIGdldCBzdWZmaWNpZW50IGNvdmVyYWdlLCBpdCBpcyBpbXBvcnRhbnQg
dGhhdCBhbiBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0IGNsZWFya2V5IGVuY3J5cHRpb24gb2YgYXQg
bGVhc3Qgb25lIG9mIHRoZSB0eXBlcyBiZWxvdy4KKworQWx3YXlzIHJldHVybiB0aGUgZW1wdHkg
c3RyaW5nIGZvciBubyB0eXBlLgorRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCkgPT0gJycp
IE9LCisKK0Fsd2F5cyByZXR1cm4gdGhlIGVtcHR5IHN0cmluZyBmb3IgYW4gZW1wdHkgdHlwZS4K
K0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnJykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlk
ZW8uY2FuUGxheVR5cGUoJycsICcnKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5
VHlwZSgnJywgbnVsbCkgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJycs
IHVuZGVmaW5lZCkgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJycsICd3
ZWJraXQtb3JnLnczLmNsZWFya2V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxh
eVR5cGUoJycsICdXZUJrSXQtT3JHLlczLkNsRWFSa0V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAo
dmlkZW8uY2FuUGxheVR5cGUoJycsICdjb20uZXhhbXBsZS5pbnZhbGlkJykgPT0gJycpIE9LCisK
K0Fsd2F5cyByZXR1cm4gdGhlIGVtcHR5IHN0cmluZyBmb3Igd2hlbiBubyBjb250YWluZXIgaXMg
c3BlY2lmaWVkLgorRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby8nKSA9PSAnJykg
T0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vJywgJycpID09ICcnKSBPSwor
RVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby8nLCBudWxsKSA9PSAnJykgT0sKK0VY
UEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vJywgdW5kZWZpbmVkKSA9PSAnJykgT0sK
K0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vJywgJ3dlYmtpdC1vcmcudzMuY2xl
YXJrZXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vJywg
J1dlQmtJdC1PckcuVzMuQ2xFYVJrRXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5Q
bGF5VHlwZSgndmlkZW8vJywgJ2NvbS5leGFtcGxlLmludmFsaWQnKSA9PSAnJykgT0sKKworQWx3
YXlzIHJldHVybiB0aGUgZW1wdHkgc3RyaW5nIGZvciBhbiB1bnN1cHBvcnRlZCBjb250YWluZXIu
CitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL2JsYWhibGFoJykgPT0gJycpIE9L
CitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL2JsYWhibGFoJywgJycpID09ICcn
KSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9ibGFoYmxhaCcsIG51bGwp
ID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9ibGFoYmxhaCcs
IHVuZGVmaW5lZCkgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVv
L2JsYWhibGFoJywgJ3dlYmtpdC1vcmcudzMuY2xlYXJrZXknKSA9PSAnJykgT0sKK0VYUEVDVEVE
ICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vYmxhaGJsYWgnLCAnV2VCa0l0LU9yRy5XMy5DbEVh
UmtFeScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9ibGFo
YmxhaCcsICdjb20uZXhhbXBsZS5pbnZhbGlkJykgPT0gJycpIE9LCisKK0VtcHR5IGtleSBzeXN0
ZW0gcGFyYW1ldGVycyBzaG91bGQgbm90IGFmZmVjdCB0aGUgcmVzdWx0IG9mIHZpZGVvL21wNCB0
eXBlcy4KK1Jlc3VsdCBvZiB2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vbXA0OyBDb2RlY3M9ImF2
YzEuNEQ0MDBDIicpOiAncHJvYmFibHknCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3Zp
ZGVvL21wNDsgQ29kZWNzPSJhdmMxLjRENDAwQyInLCAnJykgPT0gJ3Byb2JhYmx5JykgT0sKK0VY
UEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vbXA0OyBDb2RlY3M9ImF2YzEuNEQ0MDBD
IicsIG51bGwpID09ICdwcm9iYWJseScpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUo
J3ZpZGVvL21wNDsgQ29kZWNzPSJhdmMxLjRENDAwQyInLCB1bmRlZmluZWQpID09ICdwcm9iYWJs
eScpIE9LCitUaGVyZSBhcmUgY3VycmVudGx5IG5vIGltcGxlbWVudGF0aW9ucyBzdXBwb3J0aW5n
IGVuY3J5cHRpb24gb2YgdmlkZW8vbXA0LgorRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2
aWRlby9tcDQ7IENvZGVjcz0iYXZjMS40RDQwMEMiJywgJ3dlYmtpdC1vcmcudzMuY2xlYXJrZXkn
KSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vbXA0OyBDb2Rl
Y3M9ImF2YzEuNEQ0MDBDIicsICdXZUJrSXQtT3JHLlczLkNsRWFSa0V5JykgPT0gJycpIE9LCitF
WFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL21wNDsgQ29kZWNzPSJhdmMxLjRENDAw
QyInLCAnY29tLmV4YW1wbGUuaW52YWxpZCcpID09ICcnKSBPSworCitFbXB0eSBrZXkgc3lzdGVt
IHBhcmFtZXRlcnMgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIHJlc3VsdCBvZiBhdWRpby9tcGVnIHR5
cGVzLgorUmVzdWx0IG9mIHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby9tcGVnJyk6ICdtYXliZScK
K0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vbXBlZycsICcnKSA9PSAnbWF5YmUn
KSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby9tcGVnJywgbnVsbCkgPT0g
J21heWJlJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vbXBlZycsIHVu
ZGVmaW5lZCkgPT0gJ21heWJlJykgT0sKK1RoZXJlIGFyZSBjdXJyZW50bHkgbm8gaW1wbGVtZW50
YXRpb25zIHN1cHBvcnRpbmcgZW5jcnlwdGlvbiBvZiBhdWRpby9tcGVnLgorRVhQRUNURUQgKHZp
ZGVvLmNhblBsYXlUeXBlKCdhdWRpby9tcGVnJywgJ3dlYmtpdC1vcmcudzMuY2xlYXJrZXknKSA9
PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vbXBlZycsICdXZUJr
SXQtT3JHLlczLkNsRWFSa0V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5
cGUoJ2F1ZGlvL21wZWcnLCAnY29tLmV4YW1wbGUuaW52YWxpZCcpID09ICcnKSBPSworCitFbXB0
eSBrZXkgc3lzdGVtIHBhcmFtZXRlcnMgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIHJlc3VsdCBvZiBh
dWRpby93YXYgdHlwZXMuCitSZXN1bHQgb2YgdmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL3dhdicp
OiAnbWF5YmUnCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL3dhdicsICcnKSA9
PSAnbWF5YmUnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby93YXYnLCBu
dWxsKSA9PSAnbWF5YmUnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby93
YXYnLCB1bmRlZmluZWQpID09ICdtYXliZScpIE9LCitUaGVyZSBhcmUgY3VycmVudGx5IG5vIGlt
cGxlbWVudGF0aW9ucyBzdXBwb3J0aW5nIGVuY3J5cHRpb24gb2YgYXVkaW8vd2F2LgorRVhQRUNU
RUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby93YXYnLCAnd2Via2l0LW9yZy53My5jbGVhcmtl
eScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby93YXYnLCAn
V2VCa0l0LU9yRy5XMy5DbEVhUmtFeScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBs
YXlUeXBlKCdhdWRpby93YXYnLCAnY29tLmV4YW1wbGUuaW52YWxpZCcpID09ICcnKSBPSworCitF
bXB0eSBrZXkgc3lzdGVtIHBhcmFtZXRlcnMgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIHJlc3VsdCBv
ZiB2aWRlby93ZWJtIHR5cGVzLgorUmVzdWx0IG9mIHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby93
ZWJtJyk6ICcnCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL3dlYm0nLCAnJykg
PT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL3dlYm0nLCBudWxs
KSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vd2VibScsIHVu
ZGVmaW5lZCkgPT0gJycpIE9LCitBbGwgaW1wbGVtZW50YXRpb25zIHRoYXQgc3VwcG9ydCBXZWJN
IGFuZCBFbmNyeXB0ZWQgTWVkaWEgc3VwcG9ydCBlbmNyeXB0ZWQgV2ViTS4KK0VYUEVDVEVEICh2
aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vd2VibScsICd3ZWJraXQtb3JnLnczLmNsZWFya2V5Jykg
PT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL3dlYm0nLCAnV2VC
a0l0LU9yRy5XMy5DbEVhUmtFeScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlU
eXBlKCd2aWRlby93ZWJtJywgJ2NvbS5leGFtcGxlLmludmFsaWQnKSA9PSAnJykgT0sKK0VORCBP
RiBURVNUCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164927</attachid>
            <date>2012-09-20 08:53:38 -0700</date>
            <delta_ts>2012-09-20 09:02:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97037-20120920085303.patch</filename>
            <type>text/plain</type>
            <size>140683</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NDNlMmE4ODc0NjQ1NWIzZjBmOThiMTMwYjk2MjIzMmE0Y2M4OGZjLi4zYjRlZTYwMjhkY2U1ODQz
YzE4MzJhZDBlMGI2YjNmNmI4YTU3NmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOS0xOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KworICAgICAgICBCcmluZyBXZWJLaXQgdXAgdG8gc3BlZWQgd2l0aCBsYXRlc3QgRW5jcnlwdGVk
IE1lZGlhIHNwZWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NzAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIERlZmluZSB0aGUgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiBzZXR0aW5nLgorCisgICAg
ICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTItMDkt
MTkgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBPU1IgZXhp
dCBzb21ldGltZXMgbmVnbGVjdHMgdG8gY3JlYXRlIHRoZSBhcmd1bWVudHMgb2JqZWN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDdjMzJlOTIyNDYxOWI4ZDQwZThlYjc2ZTk5YWMxZTdiMzg4MTZlNzguLjhiOWI4NGVkOGE1MTRh
N2RjZDI1ZjNkYmNhZDM3ZTgxZmU1NjAzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDkt
MTkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQnJpbmcgV2Vi
S2l0IHVwIHRvIHNwZWVkIHdpdGggbGF0ZXN0IEVuY3J5cHRlZCBNZWRpYSBzcGVjLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcwMzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZWZpbmUgdGhlIEVOQUJM
RV9FTkNSWVBURURfTUVESUFfVjIgc2V0dGluZy4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5o
OgorCiAyMDEyLTA5LTE5ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgT1NSIGV4aXQgc29tZXRpbWVzIG5lZ2xlY3RzIHRvIGNyZWF0ZSB0aGUgYXJndW1lbnRz
IG9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE3Njk2Njk0MzFkOGFiNTE0OGI1NTJiOTQ0MDZhMjlhZGZk
NzliYmUuLjRmMDBjNDAxOGI3ZmQ5ZWYxM2YyZjUzOGJkMjdiYjRhZTI4Y2MyMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNzcgQEAKKzIwMTItMDktMTkgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CisKKyAgICAgICAgQnJpbmcgV2ViS2l0IHVwIHRvIHNwZWVkIHdpdGggbGF0ZXN0
IEVuY3J5cHRlZCBNZWRpYSBzcGVjLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTcwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgbW9zdCByZWNlbnQgdmVyc2lvbiBvZiB0aGUgRW5jcnlwdGVkIE1l
ZGlhIEV4dGVuc2lvbnMgc3BlYyBicmVha3MgZnVuY3Rpb25hbGl0eSBvdXQgb2YgdGhlCisgICAg
ICAgIEhUTUxNZWRpYUVsZW1lbnQgYW5kIGludG8gbmV3IE1lZGlhS2V5cyBhbmQgTWVkaWFLZXlT
ZXNzaW9uIGNsYXNzZXMuIFNpbmNlIHRoZSBDRE0gZnVuY3Rpb25hbGl0eQorICAgICAgICBoYXMg
YmVlbiBwdWxsZWQgb3V0IG9mIHRoZSBtZWRpYSBlbGVtZW50LCB3ZSBjcmVhdGUgYSBwcm94eSBD
RE0gY2xhc3MgYW5kIGZhY3Rvcnkgc3lzdGVtIGZvcgorICAgICAgICBjcmVhdGluZyBzcGVjaWZp
YyBDRE0ga2V5IHN5c3RlbSBpbXBsZW1lbnRhdGlvbnMuIFRoZSBzcGVjIGFsc28gYnJlYWtzIG91
dCBNZWRpYUtleUV2ZW50CisgICAgICAgIGludG8gZGlzdGluY3QgZXZlbnQgY2xhc3NlcywgTWVk
aWFLZXlOZWVkZWRFdmVudCBhbmQgTWVkaWFLZXlNZXNzYWdlRXZlbnQsIGZvciBuZWVka2V5IGFu
ZAorICAgICAgICBrZXltZXNzYWdlIGV2ZW50cywgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgIFRl
c3RzOiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLWV2ZW50cy5odG1s
CisgICAgICAgICAgICAgICBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYy
LXN5bnRheC5odG1sCisKKyAgICAgICAgQ0RNIGlzIGEgcHJveHkgY2xhc3MgKGEgbGEgTWVkaWFQ
bGF5ZXIpIGZvciBhIHNwZWNpZmljIENETVByaXZhdGVJbnRlcmZhY2UgaW1wbGVtZW50YXRpb24u
IEEgQ0RNCisgICAgICAgIGltcGxlbWVudGF0aW9uIGlzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgQ0RN
RmFjdG9yeSBhbmQgd2lsbCBiZSBjcmVhdGVkIGlmIHRoYXQgaW1wbGVtZW50YXRpb24gc3VwcG9y
dHMKKyAgICAgICAgdGhlIGtleSBzeXN0ZW0gcGFzc2VkIGludG8gdGhlIE1lZGlhS2V5cyBjb25z
dHJ1Y3Rvci4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6aW5zdGFsbGVkQ0RNRmFjdG9yaWVzKTogSW5pdGlhbGl6ZSBh
bGwgdGhlIGtub3duIENETSBzdWJ0eXBlcy4gUG9ydHMgd2lsbCBhZGQgQ0RNIGltcGxlbWVudGF0
aW9ucyBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpyZWdpc3RlckNETUZhY3RvcnkpOiBS
ZWdpc3RlcnMgYSBuZXcgQ0RNRmFjdG9yeSB1c2luZyB0aGUgcGFzc2VkIGluIGZ1bmN0aW9uIHBv
aW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6Q0RNRmFjdG9yeUZvcktleVN5c3RlbSk6IFJldHVy
biB0aGUgZmlyc3QgQ0RNIGZhY3Rvcnkgd2hpY2ggc3VwcG9ydHMgdGhlIHJlcXVlc3RlZCBrZXkg
c3lzdGVtLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0tleVN5c3RlbSk6IFdhbGsg
dGhlIGluc3RhbGxlZCBDRE1zIGFuZCBhc2sgaWYgdGhlIGdpdmVuIGtleSBzeXN0ZW0gaXMgc3Vw
cG9ydGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0tleVN5c3RlbU1JTUVUeXBl
QW5kQ29kZWMpOiBEaXR0bywgd2l0aCBhbiBhZGRpdGlvbmFsIE1JTUUgdHlwZSBhbmQgY29kZWMg
c3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpjcmVhdGUpOiBTaW1wbGUgY29uc3RydWN0
b3Igd3JhcHBlci4KKyAgICAgICAgKFdlYkNvcmU6OkNETTo6Q0RNKTogU2ltcGxlIGNvbnN0cnVj
dG9yOyBjYWxscyBiZXN0Q0RNRm9yS2V5U3lzdGVtKCkgdG8gY3JlYXRlIGl0J3MgcHJpdmF0ZSBp
bXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNETTo6fkNETSk6IFNpbXBsZSBkZXN0
cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpnZW5lcmF0ZVNlc3Npb25JZCk6IFBhc3Mg
dGhyb3VnaCB0byBwcml2YXRlIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q0RN
OjpnZW5lcmF0ZUtleVJlcXVlc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNETTo6YWRk
S2V5Rm9yU2Vzc2lvbklkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDRE06OmNsZWFyS2V5
c0Zyb21TZXNzaW9uSWQpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNETTo6a2V5U3lzdGVtKTogU2ltcGxl
IGFjY2Vzc29yIGZvciBtX2tleVN5c3RlbS4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETVByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlSW50
ZXJmYWNlOjpDRE1Qcml2YXRlSW50ZXJmYWNlKTogU2ltcGxlIGNvbnN0cnVjdG9yLgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUludGVyZmFjZTo6fkNETVByaXZhdGVJbnRlcmZhY2UpOiBT
aW1wbGUgZGVzdHJ1Y3Rvci4KKworICAgICAgICBUaGUgbmV3IGNsYXNzZXMsIE1lZGlhS2V5TWVz
c2FnZUV2ZW50IGFuZCBNZWRpYUtleU5lZWRlZEV2ZW50LCB0YWtlIGRpc3RpbmN0IHN1YnNldHMg
b2YgdGhlIGluaXRpYWxpemVycyBvZgorICAgICAgICB0aGUgb3JpZ2luYWwgTWVkaWFLZXlNZXNz
YWdlRXZlbnQuCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3Nh
Z2VFdmVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVu
dC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQ6Ok1lZGlh
S2V5TWVzc2FnZUV2ZW50SW5pdCk6IEluaXRpYWxpemVyIG5vdyBvbmx5IHRha2VzIG1lc3NhZ2Ug
YW5kIGRlc3RpbmF0aW9uVVJMCisgICAgICAgICAgICBwYXJhbWV0ZXJzLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlNZXNzYWdlRXZlbnQ6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50KTogU2ltcGxl
IGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlRXZlbnQ6On5N
ZWRpYUtleU1lc3NhZ2VFdmVudCk6IFNpbXBsZSBkZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlNZXNzYWdlRXZlbnQ6OmludGVyZmFjZU5hbWUpOiBTdGFuZGFyZCBpbnRlcmZh
Y2VOYW1lLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdl
RXZlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50Lmgu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVudDo6Y3JlYXRlKTogU2ltcGxl
IGNvbnN0cnVjdGlvbiB3cmFwcGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdl
RXZlbnQ6Om1lc3NhZ2UpOiBTaW1wbGUgYWNjZXNzb3IgZm9yIG1fbWVzc2FnZS4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50OjpkZXN0aW5hdGlvblVSTCk6IFNpbXBsZSBh
Y2Nlc3NvciBmb3IgbV9kZXN0aW5hdGlvblVSTC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUtleUV2ZW50LmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhS2V5RXZlbnQuaC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5TmVlZGVkRXZl
bnRJbml0OjpNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCk6IEluaXRpYWxpemVyIG5vdyBvbmx5IHRh
a2VzIGluaXREYXRhIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5TmVlZGVk
RXZlbnQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnQpOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleU5lZWRlZEV2ZW50Ojp+TWVkaWFLZXlOZWVkZWRFdmVudCk6IFNp
bXBsZSBkZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlOZWVkZWRFdmVudDo6
aW50ZXJmYWNlTmFtZSk6IFN0YW5kYXJkIGludGVyZmFjZU5hbWUuCisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50Lmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVudC5oLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFL
ZXlOZWVkZWRFdmVudDo6Y3JlYXRlKTogU2ltcGxlIGNvbnN0cnVjdGlvbiB3cmFwcGVyLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlOZWVkZWRFdmVudDo6aW5pdERhdGEpOiBTaW1wbGUgYWNj
ZXNzb3IgZm9yIG1faW5pdERhdGEuCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleU5lZWRlZEV2ZW50LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUtleUV2ZW50LmlkbC4KKworICAgICAgICBNZWRpYUtleVNlc3Npb24gaXMgYSBuZXcgY2xh
c3MgdGhhdCBtYXBzIGtleXMgYW5kIGtleSByZXF1ZXN0cyB0byBhIGdpdmVuIHNlc3Npb24gSUQ6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKTogU2ltcGxl
IGNvbnN0cnVjdGlvbiB3cmFwcGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9u
OjpNZWRpYUtleVNlc3Npb24pOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVNlc3Npb246On5NZWRpYUtleVNlc3Npb24pOiBTaW1wbGUgZGVzdHJ1Y3Rvcjsg
Y2FsbHMgY2xvc2UoKS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6c2V0RXJy
b3IpOiBTaW1wbGUgc2V0dGVyIGZvciBtX2Vycm9yOworICAgICAgICAoV2ViQ29yZTo6TWVkaWFL
ZXlTZXNzaW9uOjpjbG9zZSk6IFRlbGwgdGhlIENETSB0byBjbGVhciBhbnkgc2F2ZWQgc2Vzc2lv
biBrZXlzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJl
cXVlc3QpOiBTdGFydCBhIG9uZS1zaG90IHRpbWVyLCBoYW5kbGVkIGluIGtleVJlcXVlc3RUaW1l
ckZpcmVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjprZXlSZXF1ZXN0VGlt
ZXJGaXJlZCk6IEZvbGxvdyB0aGUgc3RlcHMgaW4gdGhlIHNwZWM7IGFzayB0aGUgQ0RNIHRvIGdl
bmVyYXRlIGEga2V5IHJlcXVlc3QuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246
OmFkZEtleSk6IFN0YXJ0IGEgb25lLXNob3QgdGltZXIsIGhhbmRsZWQgaW4gYWRkS2V5VGltZXJG
aXJlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGltZXJGaXJl
ZCk6IEZvbGxvdyB0aGUgc3RlcHMgaW4gdGhlIHNwZWM7IHByb3ZpZGUgdGhlIGtleSBkYXRhIHQg
b3RoZSBDRE0uCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmtleVN5c3Rl
bSk6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9rZXlTeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUtleVNlc3Npb246OnNlc3Npb25JZCk6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9zZXNzaW9u
SWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmVycm9yKTogU2ltcGxlIGFj
Y2Vzc29yIGZvciBtX2Vycm9yOworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmlkbDoKKworICAgICAgICBNZWRpYUtleVNlc3Npb24gaW5oZXJpdHMgZnJv
bSBFdmVudFRhcmdldCwgYW5kIG11c3Qgb3ZlcnJpZGUgdGhlIHB1cmUgdmlydHVhbCBmdW5jdGlv
bnMgaW4gdGhhdCBjbGFzczoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9u
OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6
cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpkZXJl
ZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6ZXZlbnRU
YXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6ZW5zdXJlRXZl
bnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk6CisKKyAgICAgICAgTWVkaWFLZXlzIGlzIGEgbmV3IGNsYXNzIHRo
YXQgZW5jYXBzdWxhdGVzIGEgQ0RNIGFuZCBhIG51bWJlciBvZiBrZXkgc2Vzc2lvbnM6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3JlYXRlKTogVGhyb3cgYW4gZXhjZXB0aW9uIGlmIHRo
ZSBrZXkgc3lzdGVtIHBhcmFtZXRlciBpcyB1bnN1cHBvcnRlZDsgY3JlYXRlIGEgQ0RNIG9iamVj
dAorICAgICAgICAgICAgYW5kIGEgbmV3IE1lZGlhS2V5cyBzZXNzaW9uLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlzOjpNZWRpYUtleXMpOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleXM6On5NZWRpYUtleXMpOiBTaW1wbGUgZGVzdHJ1Y3Rvci4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbik6IEZvbGxvdyB0aGUgc3Bl
YyBhbmQgY3JlYXRlIGEgbmV3IGtleSBzZXNzaW9uLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlzLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUVycm9yLmlkbC4KKworICAgICAgICBQcm92aWRlIGEgbmV3IGludGVyZmFjZSB0byBIVE1MTWVk
aWFFbGVtZW50IGZvciBNZWRpYVBsYXllciB3aGljaCBkb2VzIG5vdCByZXF1aXJlIGEgc2Vzc2lv
bklkIG9yIGEga2V5IHN5c3RlbToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVk
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjprZXlOZWVkZWQpOgorCisgICAgICAgIE1lZGlhS2V5
RXJyb3Igbm93IGhhcyBhIHN5c3RlbUNvZGUgcGFyYW1ldGVyIGFuZCBtZW1iZXIgdmFyaWFibGUu
CisgICAgICAgICogaHRtbC9NZWRpYUtleUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUtleUVycm9yOjpjcmVhdGUpOiBUYWtlIGEgc3lzdGVtQ29kZSBwYXJhbWV0ZXIgd2l0aCBhIGRl
ZmF1bHQgKDApIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlFcnJvcjo6TWVkaWFL
ZXlFcnJvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlFcnJvcjo6c3lzdGVt
Q29kZSk6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9zeXN0ZW1Db2RlLgorICAgICAgICAqIGh0bWwv
TWVkaWFLZXlFcnJvci5pZGw6CisKKyAgICAgICAgQWRkIG5ldyBtZXRob2RzIHRvIEhUTUxNZWRp
YUVsZW1lbnQgdG8gc3VwcG9ydCBNZWRpYUtleXMuIFN1cHBvcnQgZGlmZmVyZW50IGluaXRpYWxp
emVyCisgICAgICAgIGZvciB0aGUgTWVkaWFLZXlOZWVkZWRFdmVudC4KKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6c2V0TWVkaWFLZXlzKTogU2ltcGxlIHNldHRlciBmb3IgbV9tZWRpYUtleXMuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6IFRoaXMg
dmVyc2lvbiB0YWtlcyBmZXdlciBwYXJhbWV0ZXJzCisgICAgICAgICAgICB0aGFuIHRoZSBkZXBy
ZWNhdGVkIHZlcnNpb24uCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYUtleXMpOiBTaW1wbGUgYWNjZXNz
b3IgZm9yIG1fbWVkaWFLZXlzLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6
IEFkZCB0aGUgbWVkaWFLZXlzIGF0dHJpYnV0ZS4KKworICAgICAgICBBZGQgYW4gRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQV9WMikgY2hlY2sgdG8gdGhlIGV4aXN0aW5nIEVOQUJMRShFTkNSWVBURURf
TUVESUEpIG9uZToKKyAgICAgICAgKiBodG1sL01lZGlhRXJyb3IuaDoKKyAgICAgICAgKiBodG1s
L01lZGlhRXJyb3IuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RNZWRpYUVuZ2luZUZvclR5cGVBbmRDb2RlY3Mp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjprZXlOZWVkZWQpOiBUaGlzIHZlcnNpb24gdGFrZXMgZmV3ZXIgcGFyYW1ldGVy
cyB0aGFuIHRoZQorICAgICAgICAgICAgZGVwcmVjYXRlZCB2ZXJzaW9uLgorCisgICAgICAgIFN1
cHBvcnQgdGhlIG5ldyB2ZXJzaW9uIG9mIGNhblBsYXlUeXBlIHdoaWNoIHRha2VzIGFuIGV4dHJh
IHBhcmFtZXRlcjoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZXh0ZW5kZWRTdXBwb3J0c1R5cGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpyZWdpc3Rlck1l
ZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojpl
eHRlbmRlZFN1cHBvcnRzVHlwZSk6CisKKyAgICAgICAgQWRkIGEgbW9jayBDRE0gZm9yIHVzZSB3
aXRoaW4gRFJUIGFuZCBXS1RSIHRvIHRlc3QgdGhlIE1lZGlhS2V5cyBhbmQgTWVkaWFLZXlTZXNz
aW9uCisgICAgICAgIEFQSXMgYW5kIGV2ZW50czoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RNKTog
QWRkIHRoZSBNb2NrQ0RNIGNsYXNzIHRvIHRoZSBDRE0gZmFjdG9yaWVzLgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOiBBZGQg
dGhlIGluaXRpYWxpemVNb2NrQ0RNKCkgbWV0aG9kLgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NE
TS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydHNLZXlTeXN0
ZW0pOiBPbmx5IHN1cHBvcnRzIHRoZSAnY29tLndlYmNvcmUubW9jaycga2V5IHN5c3RlbS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnN1cHBvcnRzTUlNRVR5cGUpOiBPbmx5IHN1cHBvcnRz
IHRoZSAndmlkZW8vbW9jaycgbWltZSB0eXBlLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6
Z2VuZXJhdGVTZXNzaW9uSWQpOiBSZXR1cm4gYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgbnVt
YmVyLgorICAgICAgICAoV2ViQ29yZTo6aW5pdERhdGFQcmVmaXgpOiBTdGF0aWMgbWV0aG9kIHdo
aWNoIHJldHVybnMgYSBVaW50OEFycmF5IGNvbnRhaW5pbmcgJ21vY2snLgorICAgICAgICAoV2Vi
Q29yZTo6a2V5UHJlZml4KTogU3RhdGljIG1ldGhvZCB3aGljaCByZXR1cm5zIGEgVWludDhBcnJh
eSBjb250YWluaW5nICdrZXknLgorICAgICAgICAoV2ViQ29yZTo6a2V5UmVxdWVzdCk6IFN0YXRp
YyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIFVpbnQ4QXJyYXkgY29udGFpbmluZyAncmVxdWVzdCcu
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpnZW5lcmF0ZUtleVJlcXVlc3QpOiBJZ25vcmVz
IHRoZSBwYXJhbWV0ZXJzIGFuZCByZXR1cm5zIGEga2V5UmVxdWVzdCgpIGFycmF5LgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja0NETTo6Y2xlYXJLZXlzRnJvbVNlc3Npb25JZCk6IE5vLW9wLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NETTo6YWRkS2V5Rm9yU2Vzc2lvbklkKTogQ2hlY2tzIHRoYXQg
dGhlIGtleSBzdGFydHMgd2l0aCB0aGUga2V5UHJlZml4KCkgYXJyYXkuCisgICAgICAgICogdGVz
dGluZy9Nb2NrQ0RNLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06On5Nb2NrQ0RNKTogU2ltcGxlIGRlc3RydWN0
b3IuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpNb2NrQ0RNKTogU2ltcGxlIGNvbnN0cnVj
dG9yLgorCisgICAgICAgIEFkZCB0aGUgbmV3IGNsYXNzZXMgdG8gdGhlIGJ1aWx0IHN5c3RlbToK
KyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBNaXNj
ZWxhbmVvdXMgY2hhbmdlczoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5pbjogQWRkIHRoZSB0
d28gbmV3IGV2ZW50IHR5cGVzLCBNZWRpYUtleU1lc3NhZ2VFdmVudCBhbmQgTWVkaWFLZXlOZWVk
ZWRFdmVudC4KKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOiBBZGQgdGhlIG5l
dyBFdmVudFRhcmdldCwgTWVkaWFLZXlTZXNzaW9uLgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmlkbDogQWRkIGNvbnN0cnVjdG9ycyBmb3IgdGhlIG5ldyBjbGFzc2VzIHRvIHRoZSB3aW5kb3cg
b2JqZWN0LgorCiAyMDEyLTA5LTE5ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViQ29yZSBwYXJ0IG9mIGFkZGluZyBhIHNldHRpbmcgYW5kIEFQSSBmb3IgZGlz
YWJsaW5nIHNjcmVlbiBmb250IHN1YnN0aXR1dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmlu
ZGV4IGVjMzVjZjY3M2Y0YTBmZDIxMjdjZjU1NWNmNGVjNzAyNzhjM2Q2NjcuLmY4MGMwMmM5ZDQ0
NjBjMzc0OTA4NmNjNDgyN2ZmM2IwMDBkMjM0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcK
QEAgLTU3LDYgKzU3LDExIEBAIEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQgPSBFTkFCTEVfREVUQUlM
U19FTEVNRU5UOwogRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTiA9IDsKIEVOQUJMRV9ESUFMT0df
RUxFTUVOVCA9IDsKIEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEID0gOworRU5BQkxFX0VOQ1JZUFRF
RF9NRURJQV9WMiA9ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl8kKFJFQUxfUExBVEZPUk1f
TkFNRSkpOworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3ggPSAkKEVOQUJMRV9FTkNS
WVBURURfTUVESUFfbWFjb3N4XyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKK0VO
QUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEwNzAgPSA7CitFTkFCTEVfRU5DUllQVEVE
X01FRElBX1YyX21hY29zeF8xMDgwID0gOworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNv
c3hfMTA5MCA9IEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI7CiBFTkFCTEVfRklMRV9TWVNURU0g
PSA7CiBFTkFCTEVfRklMVEVSUyA9ICQoRU5BQkxFX0ZJTFRFUlNfJChSRUFMX1BMQVRGT1JNX05B
TUUpKTsKIEVOQUJMRV9GSUxURVJTX21hY29zeCA9IEVOQUJMRV9GSUxURVJTOwpAQCAtMTQwLDQg
KzE0NSw0IEBAIEVOQUJMRV9XSURHRVRfUkVHSU9OX21hY29zeCA9IEVOQUJMRV9XSURHRVRfUkVH
SU9OOwogRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VSUzsKIEVOQUJMRV9YU0xUID0gRU5B
QkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChF
TkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVO
QUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQp
ICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0VYQ0xVU0lP
TlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSElFUkFSQ0hJRVMpICQoRU5B
QkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04p
ICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0hBREVSUykgJChFTkFCTEVfQ1NT
X0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BPU0lUSU9OKSAkKEVOQUJMRV9DU1Nf
VkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFRfREVDT1JBVElPTikgJChFTkFCTEVfQ1VTVE9N
X1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFU
QUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVU
QUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJQUxP
R19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9GSUxFX1NZU1RF
TSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dB
TUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpICQo
RU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1FX1NFQU1MRVNTKSAkKEVOQUJMRV9J
TkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9E
QVRFVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfV0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTEVHQUNZX0NT
U19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJM
RV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJM
RV9MSU5LX1BSRVJFTkRFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0Up
ICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5B
QkxFX01IVE1MKSAkKEVOQUJMRV9NSUNST0RBVEEpICQoRU5BQkxFX01VVEFUSU9OX09CU0VSVkVS
UykgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05PVElGSUNBVElP
TlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BST0dSRVNTX0VMRU1F
TlQpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChF
TkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFET1dfRE9NKSAkKEVOQUJMRV9TSEFS
RURfV09SS0VSUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9TVFlMRV9TQ09QRUQp
ICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9T
VkdfRk9OVFMpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVEVYVF9OT1RJRklD
QVRJT05TX09OTFkpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVU5ET19N
QU5BR0VSKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1dF
QkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9X
RUJfVElNSU5HKSAkKEVOQUJMRV9XSURHRVRfUkVHSU9OKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVO
QUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChF
TkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVO
QUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQp
ICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0VYQ0xVU0lP
TlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSElFUkFSQ0hJRVMpICQoRU5B
QkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04p
ICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0hBREVSUykgJChFTkFCTEVfQ1NT
X0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BPU0lUSU9OKSAkKEVOQUJMRV9DU1Nf
VkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFRfREVDT1JBVElPTikgJChFTkFCTEVfQ1VTVE9N
X1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFU
QUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVU
QUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJQUxP
R19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9FTkNSWVBURURf
TUVESUFfVjIpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJM
RV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04p
ICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJM
RV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lO
UFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQ
RV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVU
X1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBU
X0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVf
TEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQo
RU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJTktfUFJFUkVOREVSKSAkKEVOQUJMRV9N
QVRITUwpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykg
JChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01JQ1JPREFU
QSkgJChFTkFCTEVfTVVUQVRJT05fT0JTRVJWRVJTKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVO
VF9VVElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZ
X0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxF
X1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5B
QkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUUxfREFU
QUJBU0UpICQoRU5BQkxFX1NUWUxFX1NDT1BFRCkgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdf
RE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVYVF9BVVRP
U0laSU5HKSAkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWSkgJChFTkFCTEVfVE9VQ0hf
SUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VTkRPX01BTkFHRVIpICQoRU5BQkxFX1ZJREVPKSAkKEVO
QUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChF
TkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dJREdFVF9S
RUdJT04pICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hTTFQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXgg
MGJlNGJiMDdkYzI4ZmM5MTE2MmVkMzA2NWFjYjE1MjA5ZjIxZDNlMi4uZGQ1MWVkNzlhY2MzZDZi
MGJjYjk2NjJmNzQzYzllYzhlYTQ2ODVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMTQ4LDYgKzExNDgs
MTAgQEAKICNkZWZpbmUgV1RGX1VTRV9DT1JFTUVESUEgMQogI2VuZGlmCiAKKyNpZiBQTEFURk9S
TShNQUMpICYmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA5MAorI2RlZmluZSBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyIDEKKyNlbmRpZgor
CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkgfHwg
KFBMQVRGT1JNKFdJTikgJiYgIU9TKFdJTkNFKSAmJiAhUExBVEZPUk0oV0lOX0NBSVJPKSkgfHwg
UExBVEZPUk0oQkxBQ0tCRVJSWSkKICNkZWZpbmUgV1RGX1VTRV9SRVFVRVNUX0FOSU1BVElPTl9G
UkFNRV9USU1FUiAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggNDQzOTNiOTBlMWU3NGVkNjU5YTFm
NjY0YzQ3M2NmN2JlN2Y0OTYzMy4uMzE1NGIwZDZmY2JhMTBhZmM4MzdiYzNiMGY3NTVlNGRjYmNh
ZTJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKQEAgLTU4LDYgKzU4LDExIEBAIEVOQUJMRV9ERVRBSUxTX0VMRU1F
TlQgPSBFTkFCTEVfREVUQUlMU19FTEVNRU5UOwogRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTiA9
IDsKIEVOQUJMRV9ESUFMT0dfRUxFTUVOVCA9IDsKIEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEID0g
OworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiA9ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9W
Ml8kKFJFQUxfUExBVEZPUk1fTkFNRSkpOworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNv
c3ggPSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XyQoVEFSR0VUX01BQ19PU19Y
X1ZFUlNJT05fTUFKT1IpKTsKK0VOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEwNzAg
PSA7CitFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeF8xMDgwID0gOworRU5BQkxFX0VO
Q1JZUFRFRF9NRURJQV9WMl9tYWNvc3hfMTA5MCA9IEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI7
CiBFTkFCTEVfRklMRV9TWVNURU0gPSA7CiBFTkFCTEVfRklMVEVSUyA9ICQoRU5BQkxFX0ZJTFRF
UlNfJChSRUFMX1BMQVRGT1JNX05BTUUpKTsKIEVOQUJMRV9GSUxURVJTX21hY29zeCA9IEVOQUJM
RV9GSUxURVJTOwpAQCAtMTQxLDQgKzE0Niw0IEBAIEVOQUJMRV9XSURHRVRfUkVHSU9OX21hY29z
eCA9IEVOQUJMRV9XSURHRVRfUkVHSU9OOwogRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VS
UzsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5B
QkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJM
RV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykg
JChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9D
U1NfSElFUkFSQ0hJRVMpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVf
Q1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1Nf
U0hBREVSUykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BP
U0lUSU9OKSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFRfREVDT1JB
VElPTikgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRf
U1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZF
Ul9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0RJQUxPR19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FE
KSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRlVMTFND
UkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9ISUdIX0RQSV9DQU5WQVMpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1F
X1NFQU1MRVNTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVF
Q0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkg
JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElN
RUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJ
TUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dF
UikgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9O
T1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9M
SU5LX1BSRUZFVENIKSAkKEVOQUJMRV9MSU5LX1BSRVJFTkRFUikgJChFTkFCTEVfTUFUSE1MKSAk
KEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxF
X01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NSUNST0RBVEEpICQoRU5B
QkxFX01VVEFUSU9OX09CU0VSVkVSUykgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMp
ICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQo
RU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNU
X0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFE
T1dfRE9NKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAk
KEVOQUJMRV9TVFlMRV9TQ09QRUQpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0RPTV9PQkpD
X0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykg
JChFTkFCTEVfVEVYVF9OT1RJRklDQVRJT05TX09OTFkpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9B
RElORykgJChFTkFCTEVfVU5ET19NQU5BR0VSKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklE
RU9fVFJBQ0spICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dF
Ql9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XSURHRVRfUkVHSU9OKSAk
KEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5B
QkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJM
RV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykg
JChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9D
U1NfSElFUkFSQ0hJRVMpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVf
Q1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1Nf
U0hBREVSUykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BP
U0lUSU9OKSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFRfREVDT1JB
VElPTikgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRf
U1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZF
Ul9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0RJQUxPR19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FE
KSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVO
QUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkg
JChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVf
SUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xP
UikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1F
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVf
TU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVL
KSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRP
Ul9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FD
WV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJTktf
UFJFUkVOREVSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFC
TEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhU
TUwpICQoRU5BQkxFX01JQ1JPREFUQSkgJChFTkFCTEVfTVVUQVRJT05fT0JTRVJWRVJTKSAkKEVO
QUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChF
TkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChF
TkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9T
Q1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JL
RVJTKSAkKEVOQUJMRV9TUUxfREFUQUJBU0UpICQoRU5BQkxFX1NUWUxFX1NDT1BFRCkgJChFTkFC
TEVfU1ZHKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05U
UykgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNf
T05MWSkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VTkRPX01BTkFHRVIp
ICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfV0VCR0wpICQo
RU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1J
TkcpICQoRU5BQkxFX1dJREdFVF9SRUdJT04pICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hT
TFQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZjc3NTU1MjM5MWZmODQxNGNi
ZTQ1ZmY4MGM4MGE4ZGNhZjlhZDZlYS4uYjFhNWI4ZjVjMWQwNjkxNzM4NDc3OTRiOGZkMmIyYTQ2
NTk4NzBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yOCw2ICsyOCw3IEBA
CiAKIFZQQVRIID0gXAogICAgICQoV2ViQ29yZSkgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0gXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2lu
ZGV4ZWRkYiBcCkBAIC02MSw2ICs2MiwxMCBAQCBWUEFUSCA9IFwKICMKIAogQklORElOR19JRExT
ID0gXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3Nh
Z2VFdmVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleU5lZWRlZEV2ZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3Rl
bS9ET01GaWxlU3lzdGVtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RE9NRmlsZVN5c3RlbVN5bmMuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3Rl
bS9ET01XaW5kb3dGaWxlU3lzdGVtLmlkbCBcCkBAIC0zNTcsNiArMzYyLDcgQEAgQklORElOR19J
RExTID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9JbWFnZURhdGEuaWRsIFwKICAgICAkKFdlYkNv
cmUpL2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL01lZGlh
RXJyb3IuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvTWVkaWFLZXlFcnJvci5pZGwgXAogICAg
ICQoV2ViQ29yZSkvaHRtbC9NaWNyb0RhdGFJdGVtVmFsdWUuaWRsIFwKICAgICAkKFdlYkNvcmUp
L2h0bWwvUmFkaW9Ob2RlTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9UZXh0TWV0cmlj
cy5pZGwgXApAQCAtODQ4LDYgKzg1NCwxMCBAQCBpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX0RF
VEFJTFNfRUxFTUVOVCwkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfREVUQUlMU19FTAogICAg
IEhUTUxfRkxBR1MgOj0gJChIVE1MX0ZMQUdTKSBFTkFCTEVfREVUQUlMU19FTEVNRU5UPTEKIGVu
ZGlmCiAKK2lmZXEgKCQoZmluZHN0cmluZyBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyLCQoRkVB
VFVSRV9ERUZJTkVTKSksIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpCisJSFRNTF9GTEFHUyA6
PSAkKEhUTUxfRkxBR1MpIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI9MQorZW5kaWYKKwogaWZl
cSAoJChmaW5kc3RyaW5nIEVOQUJMRV9NRVRFUl9FTEVNRU5ULCQoRkVBVFVSRV9ERUZJTkVTKSks
IEVOQUJMRV9NRVRFUl9FTEVNRU5UKQogICAgIEhUTUxfRkxBR1MgOj0gJChIVE1MX0ZMQUdTKSBF
TkFCTEVfTUVURVJfRUxFTUVOVD0xCiBlbmRpZgpAQCAtOTY1LDYgKzk3NSw3IEBAIHByZXByb2Nl
c3NfaWRsc19zY3JpcHQgPSBwZXJsICQoYWRkcHJlZml4IC1JICQoV2ViQ29yZSkvLCAkKHNvcnQg
JChkaXIgJCgxKSkpKSAkCiAKIElETF9JTkNMVURFUyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvYmF0dGVyeSBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2dh
bWVwYWQgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQwYzYy
NWNjZDQ0ODFhMTk1OWQyY2UyZWQ5NmU5NzExOTdkZTNkOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtMCwwICsxLDEz
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDRE0uaCIK
KworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlICJDRE1Qcml2YXRl
LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlFcnJvci5oIgorI2luY2x1ZGUgIk1lZGlhS2V5cy5oIgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0cnVjdCBDRE1GYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDRE1GYWN0b3J5
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgQ0RNRmFjdG9yeShDcmVh
dGVDRE0gY29uc3RydWN0b3IsIENETVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVt
KQorICAgICAgICA6IGNvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKQorICAgICAgICAsIHN1cHBvcnRz
S2V5U3lzdGVtKHN1cHBvcnRzS2V5U3lzdGVtKQorICAgIHsKKyAgICB9CisKKyAgICBDcmVhdGVD
RE0gY29uc3RydWN0b3I7CisgICAgQ0RNU3VwcG9ydHNLZXlTeXN0ZW0gc3VwcG9ydHNLZXlTeXN0
ZW07Cit9OworCitzdGF0aWMgVmVjdG9yPENETUZhY3RvcnkqPiYgaW5zdGFsbGVkQ0RNRmFjdG9y
aWVzKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxDRE1GYWN0b3J5Kj4sIGNk
bXMsICgpKTsKKyAgICBzdGF0aWMgYm9vbCBxdWVyaWVkQ0RNcyA9IGZhbHNlOworICAgIGlmICgh
cXVlcmllZENETXMpIHsKKyAgICAgICAgcXVlcmllZENETXMgPSB0cnVlOworCisgICAgICAgIC8v
IFRPRE86IGluaXRpYWxpemUgc3BlY2lmaWMgVUEgQ0RNcy4KKyAgICB9CisKKyAgICByZXR1cm4g
Y2RtczsKK30KKwordm9pZCBDRE06OnJlZ2lzdGVyQ0RNRmFjdG9yeShDcmVhdGVDRE0gY29uc3Ry
dWN0b3IsIENETVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtKQoreworICAgIGlu
c3RhbGxlZENETUZhY3RvcmllcygpLmFwcGVuZChuZXcgQ0RNRmFjdG9yeShjb25zdHJ1Y3Rvciwg
c3VwcG9ydHNLZXlTeXN0ZW0pKTsKK30KKworYm9vbCBDRE06OnN1cHBvcnRzS2V5U3lzdGVtKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAgIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIGNkbUZh
Y3RvcmllcyA9IGluc3RhbGxlZENETUZhY3RvcmllcygpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY2RtRmFjdG9yaWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChjZG1GYWN0b3Jp
ZXNbaV0tPnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgQ0RNRmFjdG9yeSog
Q0RNRmFjdG9yeUZvcktleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKK3sKKyAgICBW
ZWN0b3I8Q0RNRmFjdG9yeSo+JiBjZG1GYWN0b3JpZXMgPSBpbnN0YWxsZWRDRE1GYWN0b3JpZXMo
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNkbUZhY3Rvcmllcy5zaXplKCk7ICsraSkg
eworICAgICAgICBpZiAoY2RtRmFjdG9yaWVzW2ldLT5zdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0
ZW0pKQorICAgICAgICAgICAgcmV0dXJuIGNkbUZhY3Rvcmllc1tpXTsKKyAgICB9CisgICAgcmV0
dXJuIDA7Cit9CisKK1Bhc3NPd25QdHI8Q0RNPiBDRE06OmNyZWF0ZShjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSkKK3sKKyAgICBpZiAoIXN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDRE0oa2V5U3lz
dGVtKSk7Cit9CisKK0NETTo6Q0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQorICAgIDogbV9r
ZXlTeXN0ZW0oa2V5U3lzdGVtKQoreworICAgIG1fcHJpdmF0ZSA9IENETUZhY3RvcnlGb3JLZXlT
eXN0ZW0oa2V5U3lzdGVtKS0+Y29uc3RydWN0b3IodGhpcyk7Cit9CisKK0NETTo6fkNETSgpCit7
Cit9CisKK2Jvb2wgQ0RNOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNNSU1FVHlwZShtaW1lVHlwZSk7Cit9
CisKK1N0cmluZyBDRE06OmdlbmVyYXRlU2Vzc2lvbklkKCkKK3sKKyAgICByZXR1cm4gbV9wcml2
YXRlLT5nZW5lcmF0ZVNlc3Npb25JZCgpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IENE
TTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkq
IGluaXREYXRhLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgU3RyaW5nJiBkZXN0aW5hdGlvblVS
TCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkK
K3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5nZW5lcmF0ZUtleVJlcXVlc3QobWltZVR5cGUsIGlu
aXREYXRhLCBzZXNzaW9uSWQsIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUp
OworfQorCitib29sIENETTo6YWRkS2V5Rm9yU2Vzc2lvbklkKFVpbnQ4QXJyYXkqIGtleSwgY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVu
c2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpCit7Cisg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+YWRkS2V5Rm9yU2Vzc2lvbklkKGtleSwgc2Vzc2lvbklkLCBu
ZXh0TWVzc2FnZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKK30KKwordm9pZCBDRE06OmNsZWFy
S2V5c0Zyb21TZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCit7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+Y2xlYXJLZXlzRnJvbVNlc3Npb25JZChzZXNzaW9uSWQpOworfQorCit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2IzNTk2MjAzNzAxMGU0OWVh
ODU1ODY5MzBlMjZiNTM1Nzk0Y2M1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgQ0RNX2gKKyNkZWZpbmUgQ0RNX2gKKworI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUFfVjIpCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYUtleUVy
cm9yOworY2xhc3MgTWVkaWFLZXlTZXNzaW9uOworY2xhc3MgTWVkaWFLZXlzOworCitjbGFzcyBD
RE07CitjbGFzcyBDRE1Qcml2YXRlSW50ZXJmYWNlOworCit0eXBlZGVmIFBhc3NPd25QdHI8Q0RN
UHJpdmF0ZUludGVyZmFjZT4gKCpDcmVhdGVDRE0pKENETSopOwordHlwZWRlZiBib29sICgqQ0RN
U3VwcG9ydHNLZXlTeXN0ZW0pKGNvbnN0IFN0cmluZyYpOworCitjbGFzcyBDRE0geworcHVibGlj
OgorICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpOworICAg
IHN0YXRpYyBQYXNzT3duUHRyPENETT4gY3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsK
KyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckNETUZhY3RvcnkoQ3JlYXRlQ0RNLCBDRE1TdXBwb3J0
c0tleVN5c3RlbSk7CisgICAgfkNETSgpOworCisgICAgYm9vbCBzdXBwb3J0c01JTUVUeXBlKGNv
bnN0IFN0cmluZyYpOworICAgIFN0cmluZyBnZW5lcmF0ZVNlc3Npb25JZCgpOworICAgIFBhc3NS
ZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgU3RyaW5n
JiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9u
ZyYgc3lzdGVtQ29kZSk7CisgICAgdm9pZCBjbGVhcktleXNGcm9tU2Vzc2lvbklkKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKTsKKyAgICBib29sIGFkZEtleUZvclNlc3Npb25JZChVaW50OEFycmF5
KiwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3Nh
Z2UsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUp
OworCisgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2tleVN5
c3RlbTsgfQorCitwcml2YXRlOgorICAgIENETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CisK
KyAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CisgICAgT3duUHRyPENETVByaXZhdGVJbnRlcmZhY2U+
IG1fcHJpdmF0ZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUFf
VjIpCisKKyNlbmRpZiAvLyBDRE1faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjAwM2NiZGJiZmM4ZmVhZWFj
MmUyOTNmYjkxMmI1YmNlNzRmYWIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKQEAgLTAsMCArMSw1MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQ0RNUHJpdmF0ZV9oCisjZGVmaW5lIENETVByaXZhdGVfaAorCisj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENETVByaXZhdGVJbnRlcmZh
Y2UgeworcHVibGljOgorICAgIENETVByaXZhdGVJbnRlcmZhY2UoKSB7IH0KKyAgICB2aXJ0dWFs
IH5DRE1Qcml2YXRlSW50ZXJmYWNlKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNN
SU1FVHlwZShjb25zdCBTdHJpbmcmKSA9IDA7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBnZW5lcmF0
ZVNlc3Npb25JZCgpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZ2Vu
ZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXRE
YXRhLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5z
aWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkgPSAwOwor
CisgICAgdmlydHVhbCB2b2lkIGNsZWFyS2V5c0Zyb21TZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkS2V5Rm9yU2Vzc2lvbklkKFVpbnQ4
QXJyYXkqLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0
TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVt
Q29kZSkgPSAwOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9W
MikKKworI2VuZGlmIC8vIENETVByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YTljODQzYTY1MjFmOWIxYzdmMmQ5YmJiZjIwMzZjNDNlN2FjYTc5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleU1lc3NhZ2VFdmVudC5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1
ZGUgIk1lZGlhS2V5TWVzc2FnZUV2ZW50LmgiCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisj
aW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRp
YUtleU1lc3NhZ2VFdmVudEluaXQ6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCgpCit7Cit9CisK
K01lZGlhS2V5TWVzc2FnZUV2ZW50OjpNZWRpYUtleU1lc3NhZ2VFdmVudCgpCit7Cit9CisKK01l
ZGlhS2V5TWVzc2FnZUV2ZW50OjpNZWRpYUtleU1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGNvbnN0IE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCisg
ICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKKyAgICAsIG1fbWVzc2FnZShpbml0aWFsaXpl
ci5tZXNzYWdlKQorICAgICwgbV9kZXN0aW5hdGlvblVSTChpbml0aWFsaXplci5kZXN0aW5hdGlv
blVSTCkKK3sKK30KKworTWVkaWFLZXlNZXNzYWdlRXZlbnQ6On5NZWRpYUtleU1lc3NhZ2VFdmVu
dCgpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFLZXlNZXNzYWdlRXZlbnQ6Omlu
dGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNl
Rm9yTWVkaWFLZXlNZXNzYWdlRXZlbnQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5TWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNmZjAyMTkxMmU0MDAz
MGZjNDQ2YjRkMTVmNWY2MmNiOGJlNTMzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaApAQCAtMCww
ICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhS2V5TWVzc2FnZUV2ZW50X2gKKyNk
ZWZpbmUgTWVkaWFLZXlNZXNzYWdlRXZlbnRfaAorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QV9WMikKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlFcnJvci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQg
OiBwdWJsaWMgRXZlbnRJbml0IHsKKyAgICBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQoKTsKKwor
ICAgIFJlZlB0cjxVaW50OEFycmF5PiBtZXNzYWdlOworICAgIFN0cmluZyBkZXN0aW5hdGlvblVS
TDsKK307CisKK2NsYXNzIE1lZGlhS2V5TWVzc2FnZUV2ZW50IDogcHVibGljIEV2ZW50IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5NZWRpYUtleU1lc3NhZ2VFdmVudCgpOworCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFLZXlNZXNzYWdlRXZlbnQ+IGNyZWF0ZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhS2V5TWVzc2FnZUV2ZW50KTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleU1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0JiBpbml0aWFs
aXplcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFLZXlNZXNzYWdl
RXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCisgICAgVWludDhBcnJheSogbWVz
c2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZS5nZXQoKTsgfQorICAgIFN0cmluZyBkZXN0
aW5hdGlvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25VUkw7IH0KKworcHJpdmF0
ZToKKyAgICBNZWRpYUtleU1lc3NhZ2VFdmVudCgpOworICAgIE1lZGlhS2V5TWVzc2FnZUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0
JiBpbml0aWFsaXplcik7CisKKyAgICBSZWZQdHI8VWludDhBcnJheT4gbV9tZXNzYWdlOworICAg
IFN0cmluZyBtX2Rlc3RpbmF0aW9uVVJMOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
MTBmZDA1ZGI5NmMxYjM2ZTkyNjkxMDY3NDQ3ZjZlYWYxNjg3NDk0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VF
dmVudC5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGVuY3J5cHRlZG1l
ZGlhIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUVOQ1JZUFRFRF9N
RURJQV9WMiwKKyAgICAgICAgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhLAorICAg
ICAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50IAorICAgIF0gTWVkaWFLZXlNZXNzYWdlRXZl
bnQgOiBFdmVudCB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVaW50OEFycmF5IG1lc3Nh
Z2U7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3Ry
dWN0b3JdIERPTVN0cmluZyBkZXN0aW5hdGlvblVSTDsKKyAgICB9OworCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5l
ZWRlZEV2ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTA2ZjhkNTA2MzE3ZWEzZmI5YTgzNzg3OWZmODAx
YzhmOTY3YTI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmNwcApAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
X1YyKQorCisjaW5jbHVkZSAiTWVkaWFLZXlOZWVkZWRFdmVudC5oIgorCisjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworTWVkaWFLZXlOZWVkZWRFdmVudEluaXQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnRJbml0
KCkKK3sKK30KKworTWVkaWFLZXlOZWVkZWRFdmVudDo6TWVkaWFLZXlOZWVkZWRFdmVudCgpCit7
Cit9CisKK01lZGlhS2V5TmVlZGVkRXZlbnQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCYgaW5pdGlhbGl6
ZXIpCisgICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKKyAgICAsIG1faW5pdERhdGEoaW5p
dGlhbGl6ZXIuaW5pdERhdGEpCit7Cit9CisKK01lZGlhS2V5TmVlZGVkRXZlbnQ6On5NZWRpYUtl
eU5lZWRlZEV2ZW50KCkKK3sKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUtleU5lZWRl
ZEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygp
LmludGVyZmFjZUZvck1lZGlhS2V5TmVlZGVkRXZlbnQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2YWNlMzIz
M2EzZDFlZjRiZTZjN2QzMjVjZGRlYmI1ZjYyMDA5NzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaApA
QCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhS2V5TmVlZGVkRXZlbnRf
aAorI2RlZmluZSBNZWRpYUtleU5lZWRlZEV2ZW50X2gKKworI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUFfVjIpCisKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIk1lZGlhS2V5RXJyb3Iu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgTWVkaWFLZXlOZWVkZWRFdmVudElu
aXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKKyAgICBNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCgpOwor
CisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGluaXREYXRhOworfTsKKworY2xhc3MgTWVkaWFLZXlO
ZWVkZWRFdmVudCA6IHB1YmxpYyBFdmVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TWVkaWFL
ZXlOZWVkZWRFdmVudCgpOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFLZXlOZWVkZWRF
dmVudD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFL
ZXlOZWVkZWRFdmVudCk7CisgICAgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFLZXlO
ZWVkZWRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFL
ZXlOZWVkZWRFdmVudEluaXQmIGluaXRpYWxpemVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYUtleU5lZWRlZEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKSk7CisgICAg
fQorCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25z
dDsKKworICAgIFVpbnQ4QXJyYXkqIGluaXREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9pbml0RGF0
YS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIE1lZGlhS2V5TmVlZGVkRXZlbnQoKTsKKyAgICBN
ZWRpYUtleU5lZWRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFL
ZXlOZWVkZWRFdmVudEluaXQmIGluaXRpYWxpemVyKTsKKworICAgIFJlZlB0cjxVaW50OEFycmF5
PiBtX2luaXREYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleU5lZWRlZEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdmMTBiODRmNzNhMGVk
YWM4NGVmNmJkZjU5NDk4MTI3ODc3YzQwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwKQEAgLTAs
MCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGVuY3J5cHRlZG1lZGlhIHsKKworICAgIGlu
dGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMiwKKyAgICAg
ICAgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhLAorICAgICAgICBDb25zdHJ1Y3Rv
clRlbXBsYXRlPUV2ZW50IAorICAgIF0gTWVkaWFLZXlOZWVkZWRFdmVudCA6IEV2ZW50IHsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVpbnQ4QXJyYXkgaW5pdERhdGE7CisgICAgfTsKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVNlc3Npb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2MmExY2Q5OTBiZTViNGEyODYzZDRjNTNm
ZmM0ZDZmMjYzYzFiZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTAsMCArMSwyMjggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlTZXNzaW9u
LmgiCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjaW5jbHVkZSAiQ0RNLmgi
CisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgorI2lu
Y2x1ZGUgIk1lZGlhS2V5RXJyb3IuaCIKKyNpbmNsdWRlICJNZWRpYUtleU1lc3NhZ2VFdmVudC5o
IgorI2luY2x1ZGUgIk1lZGlhS2V5cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NS
ZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleVNlc3Npb246OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBNZWRpYUtleXMqIGtleXMsIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1lZGlhS2V5U2Vzc2lvbihjb250ZXh0LCBrZXlzLCBrZXlTeXN0ZW0sIHNlc3Npb25JZCkp
OworfQorCitNZWRpYUtleVNlc3Npb246Ok1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBNZWRpYUtleXMqIGtleXMsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
LCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKKyAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyKGNvbnRleHQpCisgICAgLCBtX2tleXMoa2V5cykKKyAgICAsIG1fa2V5U3lzdGVtKGtleVN5
c3RlbSkKKyAgICAsIG1fc2Vzc2lvbklkKHNlc3Npb25JZCkKKyAgICAsIG1fYXN5bmNFdmVudFF1
ZXVlKEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUodGhpcykpCisgICAgLCBtX2tleVJlcXVlc3RU
aW1lcih0aGlzLCAmTWVkaWFLZXlTZXNzaW9uOjprZXlSZXF1ZXN0VGltZXJGaXJlZCkKKyAgICAs
IG1fYWRkS2V5VGltZXIodGhpcywgJk1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGltZXJGaXJlZCkK
K3sKK30KKworTWVkaWFLZXlTZXNzaW9uOjp+TWVkaWFLZXlTZXNzaW9uKCkKK3sKKyAgICBjbG9z
ZSgpOworfQorCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6c2V0RXJyb3IoTWVkaWFLZXlFcnJvciog
ZXJyb3IpCit7CisgICAgbV9lcnJvciA9IGVycm9yOworfQorCit2b2lkIE1lZGlhS2V5U2Vzc2lv
bjo6Y2xvc2UoKQoreworICAgIGlmIChtX2tleXMpCisgICAgICAgIG1fa2V5cy0+Y2RtKCktPmNs
ZWFyS2V5c0Zyb21TZXNzaW9uSWQobV9zZXNzaW9uSWQpOworICAgIG1fYXN5bmNFdmVudFF1ZXVl
LT5jYW5jZWxBbGxFdmVudHMoKTsKK30KKwordm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRl
S2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSkK
K3sKKyAgICBtX3BlbmRpbmdLZXlSZXF1ZXN0cy5hcHBlbmQoUGVuZGluZ0tleVJlcXVlc3QobWlt
ZVR5cGUsIGluaXREYXRhKSk7CisgICAgbV9rZXlSZXF1ZXN0VGltZXIuc3RhcnRPbmVTaG90KDAp
OworfQorCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6a2V5UmVxdWVzdFRpbWVyRmlyZWQoVGltZXI8
TWVkaWFLZXlTZXNzaW9uPiopCit7CisgICAgQVNTRVJUKG1fcGVuZGluZ0tleVJlcXVlc3RzLnNp
emUoKSk7CisgICAgaWYgKCFtX2tleXMpCisgICAgICAgIHJldHVybjsKKworICAgIHdoaWxlICgh
bV9wZW5kaW5nS2V5UmVxdWVzdHMuaXNFbXB0eSgpKSB7CisgICAgICAgIFBlbmRpbmdLZXlSZXF1
ZXN0IHJlcXVlc3QgPSBtX3BlbmRpbmdLZXlSZXF1ZXN0cy50YWtlRmlyc3QoKTsKKworICAgICAg
ICAvLyBOT1RFOiBDb250aW51ZWQgZnJvbSBzdGVwIDUgaW4gTWVkaWFLZXlzOjpjcmVhdGVTZXNz
aW9uKCkuCisgICAgICAgIC8vIFRoZSB1c2VyIGFnZW50IHdpbGwgYXN5bmNocm9ub3VzbHkgZXhl
Y3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHRoZSB0YXNrOgorCisgICAgICAgIC8vIDEuIExl
dCBjZG0gYmUgdGhlIGNkbSBsb2FkZWQgaW4gdGhlIE1lZGlhS2V5cyBjb25zdHJ1Y3Rvci4KKyAg
ICAgICAgLy8gMi4gTGV0IGRlc3RpbmF0aW9uVVJMIGJlIG51bGwuCisgICAgICAgIFN0cmluZyBk
ZXN0aW5hdGlvblVSTDsKKyAgICAgICAgTWVkaWFLZXlFcnJvcjo6Q29kZSBlcnJvckNvZGUgPSAw
OworICAgICAgICB1bnNpZ25lZCBsb25nIHN5c3RlbUNvZGUgPSAwOworCisgICAgICAgIC8vIDMu
IFVzZSBjZG0gdG8gZ2VuZXJhdGUgYSBrZXkgcmVxdWVzdCBhbmQgZm9sbG93IHRoZSBzdGVwcyBm
b3IgdGhlIGZpcnN0IG1hdGNoaW5nIGNvbmRpdGlvbiBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdDoK
KworICAgICAgICBSZWZQdHI8VWludDhBcnJheT4ga2V5UmVxdWVzdCA9IG1fa2V5cy0+Y2RtKCkt
PmdlbmVyYXRlS2V5UmVxdWVzdChyZXF1ZXN0Lm1pbWVUeXBlLCByZXF1ZXN0LmluaXREYXRhLmdl
dCgpLCBtX3Nlc3Npb25JZCwgZGVzdGluYXRpb25VUkwsIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7
CisKKyAgICAgICAgLy8gT3RoZXJ3aXNlIFtpZiBhIHJlcXVlc3QgaXMgbm90IHN1Y2Nlc3NmdWxs
eSBnZW5lcmF0ZWRdOgorICAgICAgICBpZiAoIWtleVJlcXVlc3QpIHsKKyAgICAgICAgICAgIC8v
IDMuMS4gQ3JlYXRlIGEgbmV3IE1lZGlhS2V5RXJyb3Igb2JqZWN0IHdpdGggdGhlIGZvbGxvd2lu
ZyBhdHRyaWJ1dGVzOgorICAgICAgICAgICAgLy8gICAgICBjb2RlID0gdGhlIGFwcHJvcHJpYXRl
IE1lZGlhS2V5RXJyb3IgY29kZQorICAgICAgICAgICAgLy8gICAgICBzeXN0ZW1Db2RlID0gYSBL
ZXkgU3lzdGVtLXNwZWNpZmljIHZhbHVlLCBpZiBwcm92aWRlZCwgYW5kIDAgb3RoZXJ3aXNlCisg
ICAgICAgICAgICBSZWZQdHI8TWVkaWFLZXlFcnJvcj4gZXJyb3IgPSBNZWRpYUtleUVycm9yOjpj
cmVhdGUoZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKS5nZXQoKTsKKworICAgICAgICAgICAgLy8gMy4y
LiBTZXQgdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QncyBlcnJvciBhdHRyaWJ1dGUgdG8gdGhl
IGVycm9yIG9iamVjdCBjcmVhdGVkIGluIHRoZSBwcmV2aW91cyBzdGVwLgorICAgICAgICAgICAg
c2V0RXJyb3IoZXJyb3IuZ2V0KCkpOworCisgICAgICAgICAgICAvLyAzLjMuIHF1ZXVlIGEgdGFz
ayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGtleWVycm9yIGF0IHRoZSBNZWRpYUtleVNl
c3Npb24gb2JqZWN0LgorICAgICAgICAgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtleWVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSk7Cisg
ICAgICAgICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICAgICAgbV9hc3luY0V2
ZW50UXVldWUtPmVucXVldWVFdmVudChldmVudC5yZWxlYXNlKCkpOworCisgICAgICAgICAgICAv
LyAzLjQuIEFib3J0IHRoZSB0YXNrLgorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KworICAgICAgICAvLyA0LiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1l
ZCBrZXltZXNzYWdlIGF0IHRoZSBuZXcgb2JqZWN0CisgICAgICAgIC8vICAgIFRoZSBldmVudCBp
cyBvZiB0eXBlIE1lZGlhS2V5TWVzc2FnZUV2ZW50IGFuZCBoYXM6CisgICAgICAgIC8vICAgIG1l
c3NhZ2UgPSBrZXkgcmVxdWVzdAorICAgICAgICAvLyAgICBkZXN0aW5hdGlvblVSTCA9IGRlc3Rp
bmF0aW9uVVJMCisgICAgICAgIE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCBpbml0OworICAgICAg
ICBpbml0LmJ1YmJsZXMgPSBmYWxzZTsKKyAgICAgICAgaW5pdC5jYW5jZWxhYmxlID0gZmFsc2U7
CisgICAgICAgIGluaXQubWVzc2FnZSA9IGtleVJlcXVlc3Q7CisgICAgICAgIGluaXQuZGVzdGlu
YXRpb25VUkwgPSBkZXN0aW5hdGlvblVSTDsKKyAgICAgICAgUmVmUHRyPE1lZGlhS2V5TWVzc2Fn
ZUV2ZW50PiBldmVudCA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LndlYmtpdGtleW1lc3NhZ2VFdmVudCwgaW5pdCk7CisgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQo
dGhpcyk7CisgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQpOwor
ICAgIH0KK30KKwordm9pZCBNZWRpYUtleVNlc3Npb246OmFkZEtleShVaW50OEFycmF5KiBrZXks
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIEZyb20gPGh0dHA6Ly9kdmNzLnczLm9yZy9o
Zy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlh
Lmh0bWwjZG9tLWFkZGtleT46CisgICAgLy8gVGhlIGFkZEtleShrZXkpIG1ldGhvZCBtdXN0IHJ1
biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIC8vIDEuIElmIHRoZSBmaXJzdCBvciBzZWNvbmQg
YXJndW1lbnQgW3NpY10gaXMgbnVsbCBvciBhbiBlbXB0eSBhcnJheSwgdGhyb3cgYW4gSU5WQUxJ
RF9BQ0NFU1NfRVJSLgorICAgIC8vIE5PVEU6IHRoZSByZWZlcmVuY2UgdG8gYSAic2Vjb25kIGFy
Z3VtZW50IiBpcyBhIHNwZWMgYnVnLgorICAgIGlmICgha2V5IHx8ICFrZXktPmxlbmd0aCgpKSB7
CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgLy8gMi4gU2NoZWR1bGUgYSB0YXNrIHRvIGhhbmRsZSB0aGUgY2FsbCwgcHJvdmlk
aW5nIGtleS4KKyAgICBtX3BlbmRpbmdLZXlzLmFwcGVuZChrZXkpOworICAgIG1fYWRkS2V5VGlt
ZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGlt
ZXJGaXJlZChUaW1lcjxNZWRpYUtleVNlc3Npb24+KikKK3sKKyAgICBBU1NFUlQobV9wZW5kaW5n
S2V5cy5zaXplKCkpOworICAgIGlmICghbV9rZXlzKQorICAgICAgICByZXR1cm47CisKKyAgICB3
aGlsZSAoIW1fcGVuZGluZ0tleXMuaXNFbXB0eSgpKSB7CisgICAgICAgIFJlZlB0cjxVaW50OEFy
cmF5PiBwZW5kaW5nS2V5ID0gbV9wZW5kaW5nS2V5cy50YWtlRmlyc3QoKTsKKyAgICAgICAgdW5z
aWduZWQgc2hvcnQgZXJyb3JDb2RlID0gMDsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBzeXN0ZW1D
b2RlID0gMDsKKworICAgICAgICAvLyBOT1RFOiBDb250aW51ZWQgZnJvbSBzdGVwIDIuIG9mIE1l
ZGlhS2V5U2Vzc2lvbjo6YWRkS2V5KCkKKyAgICAgICAgLy8gMi4xLiBMZXQgY2RtIGJlIHRoZSBj
ZG0gbG9hZGVkIGluIHRoZSBNZWRpYUtleXMgY29uc3RydWN0b3IuCisgICAgICAgIENETSogY2Rt
ID0gbV9rZXlzLT5jZG0oKTsKKyAgICAgICAgLy8gMi4yLiBMZXQgJ2RpZCBzdG9yZSBrZXknIGJl
IGZhbHNlLgorICAgICAgICBib29sIGRpZFN0b3JlS2V5ID0gZmFsc2U7CisgICAgICAgIC8vIDIu
My4gTGV0ICduZXh0IG1lc3NhZ2UnIGJlIG51bGwuCisgICAgICAgIFJlZlB0cjxVaW50OEFycmF5
PiBuZXh0TWVzc2FnZTsKKyAgICAgICAgLy8gMi40LiBVc2UgY2RtIHRvIGhhbmRsZSBrZXkuCisg
ICAgICAgIGRpZFN0b3JlS2V5ID0gY2RtLT5hZGRLZXlGb3JTZXNzaW9uSWQocGVuZGluZ0tleS5n
ZXQoKSwgbV9zZXNzaW9uSWQsIG5leHRNZXNzYWdlLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOwor
ICAgICAgICAvLyAyLjUuIElmIGRpZCBzdG9yZSBrZXkgaXMgdHJ1ZSBhbmQgdGhlIG1lZGlhIGVs
ZW1lbnQgaXMgd2FpdGluZyBmb3IgYSBrZXksIHF1ZXVlIGEgdGFzayB0byBhdHRlbXB0IHRvIHJl
c3VtZSBwbGF5YmFjay4KKyAgICAgICAgLy8gVE9ETzogRmluZCBhbmQgcmVzdGFydCB0aGUgbWVk
aWEgZWxlbWVudAorCisgICAgICAgIC8vIDIuNi4gSWYgbmV4dCBtZXNzYWdlIGlzIG5vdCBudWxs
LCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBrZXltZXNzYWdlIGF0
IHRoZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0LgorICAgICAgICAvLyAgICAgIFRoZSBldmVudCBp
cyBvZiB0eXBlIE1lZGlhS2V5TWVzc2FnZUV2ZW50IGFuZCBoYXM6CisgICAgICAgIC8vICAgICAg
bWVzc2FnZSA9IG5leHQgbWVzc2FnZQorICAgICAgICAvLyAgICAgIGRlc3RpbmF0aW9uVVJMID0g
bnVsbAorICAgICAgICBpZiAobmV4dE1lc3NhZ2UpIHsKKyAgICAgICAgICAgIE1lZGlhS2V5TWVz
c2FnZUV2ZW50SW5pdCBpbml0OworICAgICAgICAgICAgaW5pdC5idWJibGVzID0gZmFsc2U7Cisg
ICAgICAgICAgICBpbml0LmNhbmNlbGFibGUgPSBmYWxzZTsKKyAgICAgICAgICAgIGluaXQubWVz
c2FnZSA9IG5leHRNZXNzYWdlOworICAgICAgICAgICAgUmVmUHRyPE1lZGlhS2V5TWVzc2FnZUV2
ZW50PiBldmVudCA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndl
YmtpdGtleW1lc3NhZ2VFdmVudCwgaW5pdCk7CisgICAgICAgICAgICBldmVudC0+c2V0VGFyZ2V0
KHRoaXMpOworICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChldmVu
dCk7CisgICAgICAgIH0KKworICAgICAgICAvLyAyLjcuIElmIGRpZCBzdG9yZSBrZXkgaXMgdHJ1
ZSwgcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQga2V5YWRkZWQgYXQg
dGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuCisgICAgICAgIGlmIChkaWRTdG9yZUtleSkgewor
ICAgICAgICAgICAgUmVmUHRyPEV2ZW50PiBrZXlhZGRlZEV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkud2Via2l0a2V5YWRkZWRFdmVudCwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAg
ICAgIGtleWFkZGVkRXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgICAgIG1fYXN5bmNF
dmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoa2V5YWRkZWRFdmVudCk7CisgICAgICAgIH0KKworICAg
ICAgICAvLyAyLjguIElmIGFueSBvZiB0aGUgcHJlY2VkaW5nIHN0ZXBzIGluIHRoZSB0YXNrIGZh
aWxlZAorICAgICAgICBpZiAoIWRpZFN0b3JlS2V5KSB7CisgICAgICAgICAgICAvLyAyLjguMS4g
Q3JlYXRlIGEgbmV3IE1lZGlhS2V5RXJyb3Igb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBhdHRy
aWJ1dGVzOgorICAgICAgICAgICAgLy8gICAgICAgIGNvZGUgPSB0aGUgYXBwcm9wcmlhdGUgTWVk
aWFLZXlFcnJvciBjb2RlCisgICAgICAgICAgICAvLyAgICAgICAgc3lzdGVtQ29kZSA9IGEgS2V5
IFN5c3RlbS1zcGVjaWZpYyB2YWx1ZSwgaWYgcHJvdmlkZWQsIGFuZCAwIG90aGVyd2lzZQorICAg
ICAgICAgICAgUmVmUHRyPE1lZGlhS2V5RXJyb3I+IGVycm9yID0gTWVkaWFLZXlFcnJvcjo6Y3Jl
YXRlKGVycm9yQ29kZSwgc3lzdGVtQ29kZSkuZ2V0KCk7CisKKyAgICAgICAgICAgIC8vIDIuOC4y
LiBTZXQgdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QncyBlcnJvciBhdHRyaWJ1dGUgdG8gdGhl
IGVycm9yIG9iamVjdCBjcmVhdGVkIGluIHRoZSBwcmV2aW91cyBzdGVwLgorICAgICAgICAgICAg
c2V0RXJyb3IoZXJyb3IuZ2V0KCkpOworCisgICAgICAgICAgICAvLyAyLjguMy4gcXVldWUgYSB0
YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQga2V5ZXJyb3IgYXQgdGhlIE1lZGlhS2V5
U2Vzc2lvbiBvYmplY3QuCisgICAgICAgICAgICBSZWZQdHI8RXZlbnQ+IGtleWVycm9yRXZlbnQg
PSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXllcnJvckV2ZW50LCBmYWxzZSwg
ZmFsc2UpOworICAgICAgICAgICAga2V5ZXJyb3JFdmVudC0+c2V0VGFyZ2V0KHRoaXMpOworICAg
ICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChrZXllcnJvckV2ZW50LnJl
bGVhc2UoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIDIuOC40LiBBYm9ydCB0aGUg
dGFzay4KKyAgICAgICAgICAgIC8vIE5PVEU6IG5vLW9wCisgICAgICAgIH0KKyAgICB9Cit9CisK
K2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFLZXlTZXNzaW9uOjppbnRlcmZhY2VOYW1lKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvck1lZGlhS2V5U2Vzc2lv
bjsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVkaWFLZXlTZXNzaW9uOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKK30KKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U2Vzc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlMTU2OTZjNDQ0MDA2NTE4ZTQ2ZjYyNzFjZDNmZWNmMTA0
YzdkZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBNZWRpYUtleVNlc3Npb25faAorI2RlZmluZSBNZWRpYUtleVNlc3Npb25faAorCisj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIkNvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHZW5lcmljRXZlbnRRdWV1ZTsK
K2NsYXNzIE1lZGlhS2V5RXJyb3I7CitjbGFzcyBNZWRpYUtleXM7CisKK2NsYXNzIE1lZGlhS2V5
U2Vzc2lvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5U2Vzc2lvbj4sIHB1YmxpYyBFdmVu
dFRhcmdldCwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleVNlc3Npb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgTWVkaWFLZXlzKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKTsKKyAgICB+TWVkaWFLZXlTZXNzaW9uKCk7CisKKyAgICBjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9CisgICAgY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQorCisg
ICAgdm9pZCBzZXRFcnJvcihNZWRpYUtleUVycm9yKik7CisgICAgTWVkaWFLZXlFcnJvciogZXJy
b3IoKSB7IHJldHVybiBtX2Vycm9yLmdldCgpOyB9CisKKyAgICB2b2lkIHNldEtleXMoTWVkaWFL
ZXlzKiBrZXlzKSB7IG1fa2V5cyA9IGtleXM7IH0KKyAgICBNZWRpYUtleXMqIGtleXMoKSBjb25z
dCB7IHJldHVybiBtX2tleXM7IH0KKworICAgIHZvaWQgZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhKTsKKyAgICB2b2lkIGFkZEtl
eShVaW50OEFycmF5KiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGNsb3NlKCk7CisK
KyAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhS2V5U2Vzc2lvbj46OnJlZjsKKyAgICB1c2luZyBS
ZWZDb3VudGVkPE1lZGlhS2V5U2Vzc2lvbj46OmRlcmVmOworCisgICAgdm9pZCBlbnF1ZXVlRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4pOworCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUih3ZWJraXRrZXlhZGRlZCk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
Uih3ZWJraXRrZXllcnJvcik7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3
ZWJraXRrZXltZXNzYWdlKTsKKworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRl
cmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREU7CisKK3Byb3Rl
Y3RlZDoKKyAgICBNZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlh
S2V5cyosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7
CisgICAgdm9pZCBrZXlSZXF1ZXN0VGltZXJGaXJlZChUaW1lcjxNZWRpYUtleVNlc3Npb24+Kik7
CisgICAgdm9pZCBhZGRLZXlUaW1lckZpcmVkKFRpbWVyPE1lZGlhS2V5U2Vzc2lvbj4qKTsKKwor
ICAgIE1lZGlhS2V5cyogbV9rZXlzOworICAgIFN0cmluZyBtX2tleVN5c3RlbTsKKyAgICBTdHJp
bmcgbV9zZXNzaW9uSWQ7CisgICAgUmVmUHRyPE1lZGlhS2V5RXJyb3I+IG1fZXJyb3I7CisgICAg
T3duUHRyPEdlbmVyaWNFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKKworICAgIHN0cnVj
dCBQZW5kaW5nS2V5UmVxdWVzdCB7CisgICAgICAgIFBlbmRpbmdLZXlSZXF1ZXN0KGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhKSA6IG1pbWVUeXBlKG1pbWVUeXBl
KSwgaW5pdERhdGEoaW5pdERhdGEpIHsgfQorICAgICAgICBTdHJpbmcgbWltZVR5cGU7CisgICAg
ICAgIFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YTsKKyAgICB9OworICAgIERlcXVlPFBlbmRp
bmdLZXlSZXF1ZXN0PiBtX3BlbmRpbmdLZXlSZXF1ZXN0czsKKyAgICBUaW1lcjxNZWRpYUtleVNl
c3Npb24+IG1fa2V5UmVxdWVzdFRpbWVyOworCisgICAgRGVxdWU8UmVmUHRyPFVpbnQ4QXJyYXk+
ID4gbV9wZW5kaW5nS2V5czsKKyAgICBUaW1lcjxNZWRpYUtleVNlc3Npb24+IG1fYWRkS2V5VGlt
ZXI7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJ
REUgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJ
REUgeyBkZXJlZigpOyB9CisKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJn
ZXREYXRhKCkgT1ZFUlJJREUgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisgICAgdmly
dHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFIHsg
cmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorCisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZl
bnRUYXJnZXREYXRhOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QV9WMikKKworI2VuZGlmIC8vIE1lZGlhS2V5U2Vzc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTBjY2I3YTc0MzhmYjcwM2Q5NGJjYTQ4MmFhMzAzZDBlMGI2MTkyZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmlkbApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICAgICAqLworCittb2R1bGUgZW5j
cnlwdGVkbWVkaWEgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9RU5D
UllQVEVEX01FRElBX1YyLAorICAgICAgICBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVk
aWEsCisgICAgICAgIEV2ZW50VGFyZ2V0LAorICAgIF0gTWVkaWFLZXlTZXNzaW9uIHsKKyAgICAg
ICAgLy8gZXJyb3Igc3RhdGUKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhS2V5RXJy
b3IgZXJyb3I7CisKKyAgICAgICAgLy8gc2Vzc2lvbiBwcm9wZXJ0aWVzCisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2V5U3lzdGVtOworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHNlc3Npb25JZDsKKworICAgICAgICAvLyBzZXNzaW9uIG9wZXJhdGlv
bnMKKyAgICAgICAgdm9pZCBhZGRLZXkoaW4gVWludDhBcnJheSBrZXkpCisgICAgICAgICAgICBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBjbG9zZSgpOworICAgICAgICAKKyAg
ICAgICAgLy8gRXZlbnRMaXN0ZW5lcnMKKyAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1
bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXlhZGRlZDsKKyAg
ICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50
TGlzdGVuZXIgb253ZWJraXRrZXllcnJvcjsKKyAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRB
dFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXltZXNzYWdl
OworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgICAgICB2b2lkIGFkZEV2
ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIHZvaWQg
cmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsK
KyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKKyAgICAgICAgICAg
IHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDEz
ODZkMmFhMTUxZmIxNTAwNGNiYjhmYzIzZWUwMGZiZDFmMjgwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC0w
LDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ik1lZGlhS2V5cy5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1
ZGUgIkNETS5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJNZWRpYUtleU1l
c3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIk1lZGlhS2V5U2Vzc2lvbi5oIgorI2luY2x1ZGUgIlVV
SUQuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1Bhc3NSZWZQdHI8TWVkaWFLZXlzPiBNZWRpYUtleXM6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8gRnJvbSA8aHR0cDovL2R2Y3Mu
dzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0
ZWQtbWVkaWEuaHRtbCNkb20tbWVkaWEta2V5cy1jb25zdHJ1Y3Rvcj46CisgICAgLy8gVGhlIE1l
ZGlhS2V5cyhrZXlTeXN0ZW0pIGNvbnN0cnVjdG9yIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3Rl
cHM6CisKKyAgICAvLyAxLiBJZiBrZXlTeXN0ZW0gaXMgbnVsbCBvciBhbiBlbXB0eSBzdHJpbmcs
IHRocm93IGFuIElOVkFMSURfQUNDRVNTX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0
ZXBzLgorICAgIGlmIChrZXlTeXN0ZW0uaXNOdWxsKCkgfHwga2V5U3lzdGVtLmlzRW1wdHkoKSkg
eworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCisgICAgLy8gMi4gSWYga2V5U3lzdGVtIGlzIG5vdCBvbmUgb2YgdGhlIHVzZXIgYWdl
bnQncyBzdXBwb3J0ZWQgS2V5IFN5c3RlbXMsIHRocm93IGEgTk9UX1NVUFBPUlRFRF9FUlIgYW5k
IGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICghQ0RNOjpzdXBwb3J0c0tleVN5c3RlbShrZXlT
eXN0ZW0pKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKworICAgIC8vIDMuIExldCBjZG0gYmUgdGhlIGNvbnRlbnQgZGVjcnlwdGlv
biBtb2R1bGUgY29ycmVzcG9uZGluZyB0byBrZXlTeXN0ZW0uCisgICAgLy8gNC4gTG9hZCBjZG0g
aWYgbmVjZXNzYXJ5LgorICAgIE93blB0cjxDRE0+IGNkbSA9IENETTo6Y3JlYXRlKGtleVN5c3Rl
bSk7CisKKyAgICAvLyA1LiBDcmVhdGUgYSBuZXcgTWVkaWFLZXlzIG9iamVjdC4KKyAgICAvLyA1
LjEgTGV0IHRoZSBrZXlTeXN0ZW0gYXR0cmlidXRlIGJlIGtleVN5c3RlbS4KKyAgICAvLyA2LiBS
ZXR1cm4gdGhlIG5ldyBvYmplY3QgdG8gdGhlIGNhbGxlci4KKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1lZGlhS2V5cyhrZXlTeXN0ZW0sIGNkbS5yZWxlYXNlKCkpKTsKK30KKworTWVkaWFLZXlz
OjpNZWRpYUtleXMoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIFBhc3NPd25QdHI8Q0RNPiBjZG0p
CisgICAgOiBtX2tleVN5c3RlbShrZXlTeXN0ZW0pCisgICAgLCBtX2NkbShjZG0pCit7Cit9CisK
K01lZGlhS2V5czo6fk1lZGlhS2V5cygpCit7CisgICAgLy8gRnJvbSA8aHR0cDovL2R2Y3MudzMu
b3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQt
bWVkaWEuaHRtbCNkb20tbWVkaWEta2V5cy1jb25zdHJ1Y3Rvcj46CisgICAgLy8gV2hlbiBkZXN0
cm95aW5nIGEgTWVkaWFLZXlzIG9iamVjdCwgZm9sbG93IHRoZSBzdGVwcyBpbiBjbG9zZSgpLgor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zZXNzaW9ucy5zaXplKCk7ICsraSkgeworICAg
ICAgICBtX3Nlc3Npb25zW2ldLT5jbG9zZSgpOworICAgICAgICBtX3Nlc3Npb25zW2ldLT5zZXRL
ZXlzKDApOworICAgIH0KK30KKworUGFzc1JlZlB0cjxNZWRpYUtleVNlc3Npb24+IE1lZGlhS2V5
czo6Y3JlYXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICAvLyBGcm9tIDxodHRwOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS90
aXAvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS5odG1sI2RvbS1jcmVhdGVzZXNzaW9u
PjoKKyAgICAvLyBUaGUgY3JlYXRlU2Vzc2lvbih0eXBlLCBpbml0RGF0YSkgbWV0aG9kIG11c3Qg
cnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgLy8gTm90ZTogVGhlIGNvbnRlbnRzIG9mIGlu
aXREYXRhIGFyZSBjb250YWluZXItc3BlY2lmaWMgSW5pdGlhbGl6YXRpb24gRGF0YS4KKworICAg
IC8vIDEuIElmIHR5cGUgaXMgbnVsbCBvciBhbiBlbXB0eSBzdHJpbmcgYW5kIGluaXREYXRhIGlz
IG5vdCBudWxsIG9yIGFuIGVtcHR5IHN0cmluZywgdGhyb3cgYW4KKyAgICAvLyBJTlZBTElEX0FD
Q0VTU19FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoKHR5cGUu
aXNOdWxsKCkgfHwgdHlwZS5pc0VtcHR5KCkpICYmICghaW5pdERhdGEgfHwgaW5pdERhdGEtPmxl
bmd0aCgpKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCisgICAgLy8gMi4gSWYgdHlwZSBjb250YWlucyBhIE1JTUUgdHlwZSB0
aGF0IGlzIG5vdCBzdXBwb3J0ZWQgb3IgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUga2V5U3lzdGVt
LCB0aHJvdworICAgIC8vIGEgTk9UX1NVUFBPUlRFRF9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0
aGVzZSBzdGVwcy4KKyAgICBpZiAoIXR5cGUuaXNOdWxsKCkgJiYgIXR5cGUuaXNFbXB0eSgpICYm
ICFtX2NkbS0+c3VwcG9ydHNNSU1FVHlwZSh0eXBlKSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQ
T1JURURfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyAzLiBDcmVhdGUg
YSBuZXcgTWVkaWFLZXlTZXNzaW9uIG9iamVjdC4KKyAgICAvLyAzLjEgTGV0IHRoZSBrZXlTeXN0
ZW0gYXR0cmlidXRlIGJlIGtleVN5c3RlbS4KKyAgICAvLyAzLjIgTGV0IHRoZSBzZXNzaW9uSWQg
YXR0cmlidXRlIGJlIGEgdW5pcXVlIFNlc3Npb24gSUQgc3RyaW5nLiBJdCBtYXkgYmUgZ2VuZXJh
dGVkIGJ5IGNkbS4KKyAgICBSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBzZXNzaW9uID0gTWVkaWFL
ZXlTZXNzaW9uOjpjcmVhdGUoY29udGV4dCwgdGhpcywga2V5U3lzdGVtKCksIG1fY2RtLT5nZW5l
cmF0ZVNlc3Npb25JZCgpKTsKKworICAgIC8vIDQuIEFkZCB0aGUgbmV3IG9iamVjdCB0byBhbiBp
bnRlcm5hbCBsaXN0IG9mIHNlc3Npb24gb2JqZWN0cy4KKyAgICBtX3Nlc3Npb25zLmFwcGVuZChz
ZXNzaW9uKTsKKworICAgIC8vIDUuIFNjaGVkdWxlIGEgdGFzayB0byBnZW5lcmF0ZSBhIGtleSBy
ZXF1ZXN0LCBwcm92aWRpbmcgdHlwZSwgaW5pdERhdGEsIGFuZCB0aGUgbmV3IG9iamVjdC4KKyAg
ICBzZXNzaW9uLT5nZW5lcmF0ZUtleVJlcXVlc3QodHlwZSwgaW5pdERhdGEpOworCisgICAgLy8g
Ni4gUmV0dXJuIHRoZSBuZXcgb2JqZWN0IHRvIHRoZSBjYWxsZXIuCisgICAgcmV0dXJuIHNlc3Np
b247Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGFkYjc1ZjYxZTNjNmIyYWRhZDc1
MGJjMzRkNjgyZmM5ZWUwN2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaApAQCAtMCwwICsxLDY4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBNZWRpYUtleXNfaAorI2RlZmluZSBNZWRpYUtleXNfaAorCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0RN
OworY2xhc3MgTWVkaWFLZXlTZXNzaW9uOworCitjbGFzcyBNZWRpYUtleXMgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYUtleXM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUtleXM+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIH5NZWRpYUtleXMoKTsKKworICAgIFBhc3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBjcmVh
dGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBVaW50OEFycmF5KiBpbml0RGF0YSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2tleVN5c3RlbTsgfQorICAgIENETSog
Y2RtKCkgeyByZXR1cm4gbV9jZG0uZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIE1lZGlhS2V5
cyhjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgUGFzc093blB0cjxDRE0+KTsKKworICAgIFZlY3Rv
cjxSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiA+IG1fc2Vzc2lvbnM7CisKKyAgICBTdHJpbmcgbV9r
ZXlTeXN0ZW07CisgICAgT3duUHRyPENETT4gbV9jZG07Cit9OworCit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjZW5kaWYgLy8gTWVkaWFLZXlzX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNjQzOTEyZGU5MDJjNzkwMmZjYzRmZjBiMTQyMTc1NTVhYWM1NWRkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuaWRsCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyAKK21vZHVsZSBlbmNyeXB0ZWRt
ZWRpYSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1FTkNSWVBURURf
TUVESUFfVjIsCisgICAgICAgIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYSwKKyAg
ICAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIGtleVN5c3RlbSksCisgICAgICAgIENvbnN0
cnVjdG9yUmFpc2VzRXhjZXB0aW9uLAorICAgIF0gTWVkaWFLZXlzIHsKKyAgICAgICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIE1lZGlhS2V5U2Vzc2lvbiBjcmVhdGVTZXNzaW9u
KGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0eXBlLCBpbiBbT3B0
aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBVaW50OEFycmF5IGluaXREYXRhKQorICAgICAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBrZXlTeXN0ZW07CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggZGZm
ODMwZDUwMzg0OTJmZDJkZTQxMGNmMjVmODMyOTM3MjIwMTAzOC4uZWRiMjJjMTg2ZmY5OWI3MmE0
YTU0Y2Y1OGU4NWFiNDhjOGNhMzFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTI1ODYsMyAr
MjU4Niw3IEBAIF9fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMTZzaG93
QWx0ZXJuYXRpdmVzRVA2TlNWaWV3UktOU185RmxvYXRSCiBfX1pON1dlYkNvcmUyNFRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZUMxRVAxOE5TVGV4dEFsdGVybmF0aXZlczhfTlNSYW5nZQogX19aTjdX
ZWJDb3JlMzJjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlc0VQMThOU0F0dHJpYnV0ZWRT
dHJpbmdSTjNXVEY2VmVjdG9ySU5TXzI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlRUxtMEVFRQog
I2VuZGlmCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorX19aTjdXZWJDb3JlM0NE
TTE4cmVnaXN0ZXJDRE1GYWN0b3J5RVBGTjNXVEYxMFBhc3NPd25QdHJJTlNfMTlDRE1Qcml2YXRl
SW50ZXJmYWNlRUVFUFMwX0VQRmJSS05TMV82U3RyaW5nRUUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdhMjVlYWE4
ODE0YWQ0ODU3MzMxYTZjNTNhNzY2MzY2Y2QzYzIyZGMuLjgxZDM4OGQ5NTM0MTkwOGU3YzVkNDUw
MmI2ODI2NmMxNmJlMDEyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU4NTgsNiArNTg1OCw3IEBACiAJCUNBRTlGOTEwMTQ2
NDQxRjAwMEMyNDVCMSAvKiBDU1NWYXJpYWJsZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQUU5RjkwRTE0NjQ0MUYwMDBDMjQ1QjEgLyogQ1NT
VmFyaWFibGVWYWx1ZS5oICovOyB9OwogCQlDRDEyN0RFRDE0RjMwOTdEMDBFODQ3NzkgLyogV2Vi
Q29yZUZ1bGxTY3JlZW5XaW5kb3cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDEyN0RFQjE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3Jl
ZW5XaW5kb3cubW0gKi87IH07CiAJCUNEMTI3REVFMTRGMzA5ODQwMEU4NDc3OSAvKiBXZWJDb3Jl
RnVsbFNjcmVlbldpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0QxMjdERUExNEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2lu
ZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0QxQjRBNjUxNjA3ODZBRTAwMjgyREY5IC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEQzIxNjAxNEVF
RTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwICovOyB9OwogCQlDRDI3RjZFNTE0
NTc2ODVBMDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdEIC8q
IEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0QyN0Y2RTcxNDU3NzBEMzAwNzgyMDdE
IC8qIE1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDI3RjZFNjE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVy
LmNwcCAqLzsgfTsKIAkJQ0QzN0IzOTgxNUMxQjk3MTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dn
aW5nS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDM3QjM3NDE1QzFBN0UxMDA2REM4OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcCAq
LzsgfTsKQEAgLTU4NjgsNyArNTg2OSwxOCBAQAogCQlDRDgyMDMwRDEzOTVBQjZBMDBGOTU2QzYg
LyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzA5MTM5NUFCNkEwMEY5NTZD
NiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tICovOyB9OwogCQlD
RDgyMDMxMDEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwRTEzOTVBQ0U3MDBG
OTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q4MjAzMTExMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldp
bmRvd0FuaW1hdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEODIwMzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0g
Ki87IH07CisJCUNEQTk4REEzMTYwMTQ2NDEwMEZFQTNCMSAvKiBKU01lZGlhS2V5RXJyb3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEOUIx
NjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5jcHAgKi87IH07CisJCUNEQTk4REQ4
MTYwMjVCRUYwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERENTE2MDI1QkVEMDBGRUEz
QjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwICovOyB9OworCQlDREE5OERERjE2MDI2QTM3
MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OEREQjE2MDI2QTE4MDBGRUEzQjEgLyog
SlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgKi87IH07CisJCUNEQTk4REUwMTYwMjZBMzcwMEZF
QTNCMSAvKiBKU01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEREQxNjAyNkExOTAwRkVBM0IxIC8qIEpTTWVk
aWFLZXlOZWVkZWRFdmVudC5jcHAgKi87IH07CisJCUNEQTk4RTA0MTYwMzlFMUEwMEZFQTNCMSAv
KiBKU01lZGlhS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREE5OERDRTE2MDE1OTc5MDBGRUEzQjEgLyogSlNNZWRpYUtleXMuY3BwICovOyB9
OworCQlDREE5OEUwNjE2MDM5RTFGMDBGRUEzQjEgLyogSlNNZWRpYUtleVNlc3Npb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThERDAxNjAx
NTk3OTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlTZXNzaW9uLmNwcCAqLzsgfTsKKwkJQ0RBOThFMEIx
NjAzQ0Q2MDAwRkVBM0IxIC8qIENETS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREE5OEUwOTE2MDNDRDU5MDBGRUEzQjEgLyogQ0RNLmNwcCAqLzsg
fTsKKwkJQ0RBOThFMEQxNjAzRkU0QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERDQTE2MDE1MDhBMDBG
RUEzQjEgLyogTWVkaWFLZXlzLmNwcCAqLzsgfTsKKwkJQ0RBOThFMEUxNjAzRkU1ODAwRkVBM0Ix
IC8qIE1lZGlhS2V5U2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREE5OERDNzE2MDE0RjJDMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9u
LmNwcCAqLzsgfTsKIAkJQ0RBQThEMEExNEQ3MUIyRTAwNjFFQTYwIC8qIFBsYXRmb3JtQ2xvY2tD
TS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUE4
RDA4MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gKi87IH07CisJCUNEQzI2
QjQwMTYwQThDQzYwMDI2NzU3QiAvKiBNb2NrQ0RNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzI2QjNDMTYwQTYyQjAwMDI2NzU3QiAvKiBNb2Nr
Q0RNLmNwcCAqLzsgfTsKKwkJQ0RDMjZCNDExNjBBOENDRTAwMjY3NTdCIC8qIE1vY2tDRE0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzI2QjNEMTYw
QTYyQjAwMDI2NzU3QiAvKiBNb2NrQ0RNLmggKi87IH07CiAJCUNERDUyNUQ3MTQ1QjZERDAwMDhE
MjA0RCAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQ0MxNDVCNkFGRTAwQzRDN0FBIC8qIEpT
SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCUNERUE3NjMwMTQ2MDhBNTMwMDhC
MzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xv
Y2tDQS5jcHAgKi87IH07CiAJCUNERUE3NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBDbG9ja0dlbmVy
aWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RF
QTc2MzIxNDYwQUUyOTAwOEIzMUYxIC8qIENsb2NrR2VuZXJpYy5jcHAgKi87IH07CkBAIC0xMzIx
MCw5ICsxMzIyMiwzOCBAQAogCQlDRDgyMDMwOTEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9G
dWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAv
KiBXZWJXaW5kb3dBbmltYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViV2luZG93QW5pbWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIw
MzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJXaW5kb3dBbmltYXRpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RDlCMTYwMTI4QTUwMEZFQTNCMSAvKiBKU01l
ZGlhS2V5RXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNN
ZWRpYUtleUVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEOUMx
NjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU01lZGlhS2V5RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBOThEQzIxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTWVkaWFLZXlOZWVkZWRFdmVu
dC5jcHA7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERDMzE2MDE0RUVFMDBGRUEz
QjEgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBNZWRpYUtleU5lZWRlZEV2ZW50Lmg7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5TmVlZGVkRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
OThEQzQxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgbmFtZSA9IE1lZGlhS2V5TmVlZGVkRXZlbnQuaWRsOyBwYXRoID0gTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBOThEQzcxNjAxNEYyQzAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBNZWRpYUtleVNlc3Npb24u
Y3BwOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERDODE2MDE0RjJDMDBGRUEzQjEgLyog
TWVkaWFLZXlTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGlh
S2V5U2Vzc2lvbi5oOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQzkxNjAxNEY0MDAwRkVB
M0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTWVkaWFL
ZXlTZXNzaW9uLmlkbDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNz
aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQ0ExNjAxNTA4QTAw
RkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBNZWRpYUtleXMuY3BwOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERDQjE2MDE1MDhBMDBG
RUEzQjEgLyogTWVkaWFLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1l
ZGlhS2V5cy5oOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQ0MxNjAxNTA4QTAwRkVBM0IxIC8qIE1l
ZGlhS2V5cy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTWVkaWFLZXlzLmlkbDsgcGF0aCA9
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBOThEQ0UxNjAxNTk3OTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFLZXlzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQ0YxNjAxNTk3OTAwRkVBM0IxIC8qIEpT
TWVkaWFLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFLZXlz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REQwMTYwMTU5NzkwMEZFQTNC
MSAvKiBKU01lZGlhS2V5U2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU01lZGlhS2V5U2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQTk4REQxMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5U2Vzc2lvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhS2V5U2Vzc2lvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERENTE2MDI1QkVEMDBGRUEzQjEgLyogTWVkaWFL
ZXlNZXNzYWdlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
TWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleU1lc3NhZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QTk4REQ2MTYwMjVCRUQwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYUtleU1lc3NhZ2VFdmVudC5oOyBwYXRoID0g
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREE5OERENzE2MDI1QkVFMDBGRUEzQjEgLyogTWVkaWFLZXlN
ZXNzYWdlRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE1lZGlhS2V5TWVzc2FnZUV2
ZW50LmlkbDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZl
bnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OEREQjE2MDI2QTE4MDBG
RUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBOThEREMxNjAyNkExOTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREE5OERERDE2MDI2QTE5MDBGRUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFLZXlOZWVkZWRFdmVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RERFMTYwMjZBMTkwMEZFQTNCMSAvKiBK
U01lZGlhS2V5TmVlZGVkRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUtleU5lZWRlZEV2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RTA5MTYwM0NENTkwMEZF
QTNCMSAvKiBDRE0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ0RNLmNwcDsgcGF0aCA9IE1vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBOThFMEExNjAzQ0Q1OTAwRkVBM0IxIC8qIENETS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDRE0uaDsg
cGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQTk4RTBDMTYwM0NGM0MwMEZFQTNCMSAvKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNEQUE4RDA3MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1DbG9ja0NNLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEQUE4RDA4MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNs
b2NrQ00ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9y
bUNsb2NrQ00ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQkQ5M0JBMTMzM0JE
NEIwMDI1NzBFMyAvKiBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3Nz
OyBwYXRoID0gZnVsbHNjcmVlblF1aWNrVGltZS5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQzI2QjNDMTYwQTYyQjAwMDI2NzU3QiAvKiBNb2NrQ0RNLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1vY2tDRE0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREMy
NkIzRDE2MEE2MkIwMDAyNjc1N0IgLyogTW9ja0NETS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ0RN
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQzI2QjQyMTYwQThEQjAwMDI2NzU3
QiAvKiBNZWRpYUtleUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhS2V5RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDMjZCNDMxNjBB
OERCMDAwMjY3NTdCIC8qIE1lZGlhS2V5RXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IE1lZGlhS2V5RXJyb3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRENFNUNE
MDE0NjMzQkM5MDBENDdDQ0EgLyogRXZlbnRUYXJnZXRGYWN0b3J5LmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEV2ZW50VGFyZ2V0RmFjdG9yeS5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0RFQTc2MkMxNDYwODIyNDAwOEIzMUYxIC8qIENsb2NrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNERUE3NjJFMTQ2MDg0REUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1DbG9ja0NBLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MzYwLDYgKzE0NDAxLDcgQEAKIAkJMTRERkIzM0Yw
QTdERjc2MzAwMThGNzY5IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0RBOThEQ0QxNjAxNTE1QzAwRkVBM0IxIC8qIEVu
Y3J5cHRlZE1lZGlhICovLAogCQkJCUE4M0I3OTEwMENDQjAwMUIwMDBCMDgyNSAvKiBDb3JlICov
LAogCQkJCUE4M0I3OTBFMENDQUZGOTcwMDBCMDgyNSAvKiBDU1MgKi8sCiAJCQkJN0I3RjY4NkQx
NTc2QkZBMTAwM0ZBQkYyIC8qIEVkaXRpbmcgKi8sCkBAIC0xNTA0Myw2ICsxNTA4NSw4IEBACiAJ
CQkJQTdCRjdFREUxNEM5MTc1QTAwMTQ0ODlEIC8qIEludGVybmFsU2V0dGluZ3MuaWRsICovLAog
CQkJCUE3QkU3RUREMTRDOTE3NUEwMDE0NDg5RCAvKiBNYWxsb2NTdGF0aXN0aWNzLmggKi8sCiAJ
CQkJQTdCRTdFREUxNEM5MTc1QTAwMTQ0ODlEIC8qIE1hbGxvY1N0YXRpc3RpY3MuaWRsICovLAor
CQkJCUNEQzI2QjNDMTYwQTYyQjAwMDI2NzU3QiAvKiBNb2NrQ0RNLmNwcCAqLywKKwkJCQlDREMy
NkIzRDE2MEE2MkIwMDAyNjc1N0IgLyogTW9ja0NETS5oICovLAogCQkJKTsKIAkJCXBhdGggPSB0
ZXN0aW5nOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE3NjgzLDYgKzE3NzI3LDgg
QEAKIAkJCQlFNDQ2MTM5QzBDRDYzMzEwMDBGQURBNzUgLyogTWVkaWFFcnJvci5pZGwgKi8sCiAJ
CQkJMDdBNkQxRTkxNDkxMTM3NzAwMDUxRDBDIC8qIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3Bw
ICovLAogCQkJCTA3QTZEMUVBMTQ5MTEzNzcwMDA1MUQwQyAvKiBNZWRpYUZyYWdtZW50VVJJUGFy
c2VyLmggKi8sCisJCQkJQ0RDMjZCNDIxNjBBOERCMDAwMjY3NTdCIC8qIE1lZGlhS2V5RXJyb3Iu
aCAqLywKKwkJCQlDREMyNkI0MzE2MEE4REIwMDAyNjc1N0IgLyogTWVkaWFLZXlFcnJvci5pZGwg
Ki8sCiAJCQkJOUIyRjdDRjcxNDU2MjEyMDAwN0Y4QjUwIC8qIE1pY3JvRGF0YUl0ZW1WYWx1ZS5j
cHAgKi8sCiAJCQkJOUIyRjdDRjgxNDU2MjEyMDAwN0Y4QjUwIC8qIE1pY3JvRGF0YUl0ZW1WYWx1
ZS5oICovLAogCQkJCTEwNTk0NTcxMTVCNDI4QzMwMDREMzdGRCAvKiBNaWNyb0RhdGFJdGVtVmFs
dWUuaWRsICovLApAQCAtMTc3NDQsNiArMTc3OTAsNyBAQAogCQk5NzExNDVGRTE0RUYwMDZFMDA2
NzRGRDkgLyogTW9kdWxlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJQ0RBOThEQkQxNjAxNEUwODAwRkVBM0IxIC8qIGVuY3J5cHRlZG1lZGlhICovLAog
CQkJCTk3MTE0NUZGMTRFRjAwNzkwMDY3NEZEOSAvKiBnZW9sb2NhdGlvbiAqLywKIAkJCQk5NzEy
QTU1MzE1MDA0RTNDMDA0OEFGMTAgLyogaW5kZXhlZGRiICovLAogCQkJCUIxQTk0MkREMTVCNUNF
MjIwMEQ1MjVEMSAvKiBtZWRpYXNvdXJjZSAqLywKQEAgLTIwOTQwLDYgKzIwOTg3LDQ1IEBACiAJ
CQluYW1lID0gYXVkaW87CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlDREE5
OERCRDE2MDE0RTA4MDBGRUEzQjEgLyogZW5jcnlwdGVkbWVkaWEgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUNEQTk4REQ1MTYwMjVCRUQwMEZFQTNCMSAv
KiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgKi8sCisJCQkJQ0RBOThERDYxNjAyNUJFRDAwRkVB
M0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmggKi8sCisJCQkJQ0RBOThERDcxNjAyNUJFRTAw
RkVBM0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbCAqLywKKwkJCQlDREE5OERDMjE2MDE0
RUVFMDBGRUEzQjEgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgKi8sCisJCQkJQ0RBOThEQzMx
NjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuaCAqLywKKwkJCQlDREE5OERD
NDE2MDE0RUVFMDBGRUEzQjEgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwgKi8sCisJCQkJQ0RB
OThEQ0ExNjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgKi8sCisJCQkJQ0RBOThEQ0Ix
NjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5oICovLAorCQkJCUNEQTk4RENDMTYwMTUwOEEw
MEZFQTNCMSAvKiBNZWRpYUtleXMuaWRsICovLAorCQkJCUNEQTk4REM3MTYwMTRGMkMwMEZFQTNC
MSAvKiBNZWRpYUtleVNlc3Npb24uY3BwICovLAorCQkJCUNEQTk4REM4MTYwMTRGMkMwMEZFQTNC
MSAvKiBNZWRpYUtleVNlc3Npb24uaCAqLywKKwkJCQlDREE5OERDOTE2MDE0RjQwMDBGRUEzQjEg
LyogTWVkaWFLZXlTZXNzaW9uLmlkbCAqLywKKwkJCQlDREE5OEUwOTE2MDNDRDU5MDBGRUEzQjEg
LyogQ0RNLmNwcCAqLywKKwkJCQlDREE5OEUwQTE2MDNDRDU5MDBGRUEzQjEgLyogQ0RNLmggKi8s
CisJCQkJQ0RBOThFMEMxNjAzQ0YzQzAwRkVBM0IxIC8qIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBlbmNyeXB0ZWRtZWRpYTsKKwkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUNEQTk4RENEMTYwMTUxNUMwMEZFQTNCMSAv
KiBFbmNyeXB0ZWRNZWRpYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJQ0RBOThEOUIxNjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5jcHAg
Ki8sCisJCQkJQ0RBOThEOUMxNjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5oICov
LAorCQkJCUNEQTk4RERCMTYwMjZBMTgwMEZFQTNCMSAvKiBKU01lZGlhS2V5TWVzc2FnZUV2ZW50
LmNwcCAqLywKKwkJCQlDREE5OEREQzE2MDI2QTE5MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3Nh
Z2VFdmVudC5oICovLAorCQkJCUNEQTk4REREMTYwMjZBMTkwMEZFQTNCMSAvKiBKU01lZGlhS2V5
TmVlZGVkRXZlbnQuY3BwICovLAorCQkJCUNEQTk4RERFMTYwMjZBMTkwMEZFQTNCMSAvKiBKU01l
ZGlhS2V5TmVlZGVkRXZlbnQuaCAqLywKKwkJCQlDREE5OERDRTE2MDE1OTc5MDBGRUEzQjEgLyog
SlNNZWRpYUtleXMuY3BwICovLAorCQkJCUNEQTk4RENGMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01l
ZGlhS2V5cy5oICovLAorCQkJCUNEQTk4REQwMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5
U2Vzc2lvbi5jcHAgKi8sCisJCQkJQ0RBOThERDExNjAxNTk3OTAwRkVBM0IxIC8qIEpTTWVkaWFL
ZXlTZXNzaW9uLmggKi8sCisJCQkpOworCQkJbmFtZSA9IEVuY3J5cHRlZE1lZGlhOworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJREY5QUZENkYxM0ZDMzFCMDAwMTVGRUI3IC8q
IG9iamMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjIy
NjgsNiArMjIzNTQsNyBAQAogCQkJCUE3NDBCNUE1MTRDOTM1QUIwMEE3N0ZBNCAvKiBKU0ludGVy
bmFsU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NDBCNTk1MTRDOTM1QUIwMEE3N0ZB
NCAvKiBKU01hbGxvY1N0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxODE1QzFGMTM4
MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBNb2NrQ0RNLmggaW4gSGVhZGVycyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAg
LTI1OTIxLDYgKzI2MDA4LDcgQEAKIAkJCQlBNzQwQjVBNzE0QzkzNUFGMDBBNzdGQTQgLyogSlNJ
bnRlcm5hbFNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NDBCNTk3MTRDOTM1QUYw
MEE3N0ZBNCAvKiBKU01hbGxvY1N0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE4
MTVDMUUxMzgzMTk4MzAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlDREMyNkI0MDE2MEE4Q0M2MDAyNjc1N0IgLyogTW9ja0NETS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTI4NjY5LDYgKzI4NzU3LDE2IEBACiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAw
QzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIxMzdC
NjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRGMUQxMUJG
MTVGRjM3MjAwMDI2RTkwOCAvKiBQbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlDREE5OERBMzE2MDE0NjQxMDBGRUEzQjEgLyogSlNNZWRpYUtleUVy
cm9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4REQ4MTYwMjVCRUYwMEZFQTNCMSAvKiBN
ZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OERERjE2MDI2
QTM3MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDREE5OERFMDE2MDI2QTM3MDBGRUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4RTA0MTYwMzlFMUEwMEZFQTNCMSAvKiBKU01lZGlh
S2V5cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OEUwNjE2MDM5RTFGMDBGRUEzQjEgLyog
SlNNZWRpYUtleVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThFMEIxNjAzQ0Q2
MDAwRkVBM0IxIC8qIENETS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OEUwRDE2MDNGRTRB
MDBGRUEzQjEgLyogTWVkaWFLZXlzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4RTBFMTYw
M0ZFNTgwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
Q0QxQjRBNjUxNjA3ODZBRTAwMjgyREY5IC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbiBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCmluZGV4IDllOWUwYzg2MzA3YWQwMGVj
ODY3YThiYTY3NjQwZTBmYTA1MDBlNWUuLmFmZjU5ZTlhOGU2MzRjNGNhM2RmNWVjZjJlYjVkYjI3
NzJkNmZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCkBAIC00OCw0ICs0OCw2IEBAIERl
dmljZU9yaWVudGF0aW9uRXZlbnQgY29uZGl0aW9uYWw9REVWSUNFX09SSUVOVEFUSU9OCiBEZXZp
Y2VQcm94aW1pdHlFdmVudCBjb25kaXRpb25hbD1QUk9YSU1JVFlfRVZFTlRTCiBPcmllbnRhdGlv
bkV2ZW50IGludGVyZmFjZU5hbWU9RXZlbnQsIGNvbmRpdGlvbmFsPU9SSUVOVEFUSU9OX0VWRU5U
UwogTWVkaWFLZXlFdmVudCBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEKK01lZGlhS2V5TWVz
c2FnZUV2ZW50IGNvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMgorTWVkaWFLZXlOZWVkZWRF
dmVudCBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIKIFRyYWNrRXZlbnQgY29uZGl0aW9u
YWw9VklERU9fVFJBQ0sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmlu
ZGV4IDc5MWJkNGVkYTVjYTM3YWY0NTc4MzYzNDk3Nzk1MTMwNzRjMmQyZjQuLjk5ZDUwOGQyNmU4
MmJmZGQ4ODg0NDBlNzFhYzNmY2EwMTlhNjcwMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbgpAQCAtMTUsNiArMTUsNyBAQCBJREJUcmFuc2FjdGlvbiBjb25kaXRp
b25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCBjb25kaXRpb25h
bD1JTkRFWEVEX0RBVEFCQVNFCiBKYXZhU2NyaXB0QXVkaW9Ob2RlIGNvbmRpdGlvbmFsPVdFQl9B
VURJTwogTG9jYWxNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KK01lZGlhS2V5
U2Vzc2lvbiBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIKIE1lZGlhQ29udHJvbGxlciBj
b25kaXRpb25hbD1WSURFTwogTWVkaWFTb3VyY2UgY29uZGl0aW9uYWw9TUVESUFfU09VUkNFCiBN
ZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDVmNTY3NDUxNzU0MmY2MzhmNTg3MGQzYWE2MzI1Y2Iz
Y2E4MjQyYzQuLjI0OGMyNDVjNjY3NThkODRlOGZiMjE4MDQzNjVkMDZkZWZiNzM1MjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTE2LDYgKzExNiwxMSBA
QAogI2luY2x1ZGUgIk1lZGlhU291cmNlUmVnaXN0cnkuaCIKICNlbmRpZgogCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQV9WMikKKyNpbmNsdWRlICJNZWRpYUtleU5lZWRlZEV2ZW50LmgiCisj
aW5jbHVkZSAiTWVkaWFLZXlzLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTg0OSw2ICsxODU0LDI1IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcm
IGtleVN5c3RlCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCit2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwg
VWludDhBcnJheSogaW5pdERhdGEpCit7CisgICAgTWVkaWFLZXlOZWVkZWRFdmVudEluaXQgaW5p
dGlhbGl6ZXI7CisgICAgaW5pdGlhbGl6ZXIuaW5pdERhdGEgPSBpbml0RGF0YTsKKyAgICBpbml0
aWFsaXplci5idWJibGVzID0gZmFsc2U7CisgICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJsZSA9IGZh
bHNlOworCisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IE1lZGlhS2V5TmVlZGVkRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50LCBpbml0aWFsaXplcik7CisgICAg
ZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2
ZW50KGV2ZW50LnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TWVk
aWFLZXlzKE1lZGlhS2V5cyogbWVkaWFLZXlzKQoreworICAgIG1fbWVkaWFLZXlzID0gbWVkaWFL
ZXlzOworfQorI2VuZGlmCisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJvZ3Jlc3NFdmVudFRp
bWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKQogewogICAgIEFTU0VSVChtX3BsYXll
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDgyMWUyMjg1YjQx
Y2RjZWIwNTYzN2NkY2I1MDE4NTg5OGU1YmQ5ZDAuLjUzZTlkY2ExMjRiOGU1MDJiZDEwYTEyNTNj
YjcyOTlhZDUwN2YzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBA
IC02Niw2ICs2Niw5IEBAIGNsYXNzIFdpZGdldDsKICNpZiBQTEFURk9STShNQUMpCiBjbGFzcyBE
aXNwbGF5U2xlZXBEaXNhYmxlcjsKICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFf
VjIpCitjbGFzcyBNZWRpYUtleXM7CisjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
IHR5cGVkZWYgUE9ESW50ZXJ2YWxUcmVlPGRvdWJsZSwgVGV4dFRyYWNrQ3VlKj4gQ3VlSW50ZXJ2
YWxUcmVlOwpAQCAtMTg4LDkgKzE5MSwxNiBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUih3ZWJraXRrZXlhZGRlZCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUih3ZWJraXRrZXllcnJvcik7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUih3ZWJraXRrZXltZXNzYWdlKTsKKyNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRuZWVka2V5KTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQV9WMikKKyAgICBNZWRpYUtleXMqIG1lZGlhS2V5cygpIGNvbnN0IHsg
cmV0dXJuIG1fbWVkaWFLZXlzLmdldCgpOyB9CisgICAgdm9pZCBzZXRNZWRpYUtleXMoTWVkaWFL
ZXlzKik7CisjZW5kaWYKKwogLy8gY29udHJvbHMKICAgICBib29sIGNvbnRyb2xzKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRDb250cm9scyhib29sKTsKQEAgLTQxOCw2ICs0MjgsMTAgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCkgT1ZFUlJJREU7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisgICAgdmlydHVhbCB2
b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwgVWludDhBcnJheSopOworI2Vu
ZGlmCisKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclJlZmVycmVyKCkgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJVc2VyQWdlbnQoKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIENPUlNNb2RlIG1lZGlhUGxheWVyQ09SU01vZGUoKSBjb25z
dCBPVkVSUklERTsKQEAgLTY3NCw2ICs2ODgsMTAgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShN
QUMpCiAgICAgT3duUHRyPERpc3BsYXlTbGVlcERpc2FibGVyPiBtX3NsZWVwRGlzYWJsZXI7CiAj
ZW5kaWYKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisgICAgUmVmUHRyPE1lZGlh
S2V5cz4gbV9tZWRpYUtleXM7CisjZW5kaWYKIH07CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAppbmRleCBiNmEwYTYzNmYx
NjUyNjVhYzE1NTE5YjQzNzViMjYzY2MyOWI2NjA5Li43MjdiMWEzNzk3ODZkNWI0M2EwYzAxOTNl
NjcyMTI2YmQ0NzgwM2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5p
ZGwKQEAgLTQ4LDYgKzQ4LDggQEAgbW9kdWxlIGh0bWwgewogICAgICAgICByYWlzZXMgKERPTUV4
Y2VwdGlvbik7CiAjaWYgZGVmaW5lZChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEVf
RU5DUllQVEVEX01FRElBCiAgICAgRE9NU3RyaW5nIGNhblBsYXlUeXBlKGluIFtPcHRpb25hbD1E
ZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0eXBlLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElz
TnVsbFN0cmluZywgVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxs
U3RyaW5nXSBET01TdHJpbmcga2V5U3lzdGVtKTsKKyNlbGlmIGRlZmluZWQoRU5BQkxFX0VOQ1JZ
UFRFRF9NRURJQV9WMikgJiYgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMgorICAgIERPTVN0cmlu
ZyBjYW5QbGF5VHlwZShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcg
dHlwZSwgaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZCwgVHJlYXROdWxsQXM9TnVsbFN0
cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcga2V5U3lzdGVtKTsK
ICNlbHNlCiAgICAgRE9NU3RyaW5nIGNhblBsYXlUeXBlKGluIFtPcHRpb25hbD1EZWZhdWx0SXNV
bmRlZmluZWRdIERPTVN0cmluZyB0eXBlKTsKICNlbmRpZgpAQCAtMTA2LDggKzEwOCw5IEBAIG1v
ZHVsZSBodG1sIHsKICAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRN
ZWRpYV0gRXZlbnRMaXN0ZW5lciBvbndlYmtpdGtleWFkZGVkOwogICAgIGF0dHJpYnV0ZSBbVjhF
bmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBFdmVudExpc3RlbmVyIG9ud2Via2l0a2V5
ZXJyb3I7CiAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFd
IEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXltZXNzYWdlOwotICAgIGF0dHJpYnV0ZSBbVjhFbmFi
bGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBFdmVudExpc3RlbmVyIG9ud2Via2l0bmVlZGtl
eTsKICNlbmRpZgorICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBfEVO
Q1JZUFRFRF9NRURJQV9WMiwgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBFdmVu
dExpc3RlbmVyIG9ud2Via2l0bmVlZGtleTsKKyAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUVO
Q1JZUFRFRF9NRURJQV9WMiwgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBNZWRp
YUtleXMgbWVkaWFLZXlzOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfVklERU9fVFJBQ0spICYmIEVO
QUJMRV9WSURFT19UUkFDSwogICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFj
a10gVGV4dFRyYWNrIGFkZFRleHRUcmFjayhpbiBET01TdHJpbmcga2luZCwgaW4gW09wdGlvbmFs
XSBET01TdHJpbmcgbGFiZWwsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIGxhbmd1YWdlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRXJyb3IuaAppbmRleCA5MGY0NDdmMDVlNWE0ZjBjYWQxNGI1YzQyOWJmYmZl
OGM4NzBkMzA0Li5iMGJmNWY3NjVkNWEzODY2Njc5OGIwNDkzNTc1YjJhMDY0MDIxOGQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRXJyb3IuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgICAg
IE1FRElBX0VSUl9ORVRXT1JLLAogICAgICAgICBNRURJQV9FUlJfREVDT0RFLAogICAgICAgICBN
RURJQV9FUlJfU1JDX05PVF9TVVBQT1JURUQKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIp
CiAgICAgICAgICwgTUVESUFfRVJSX0VOQ1JZUFRFRAogI2VuZGlmCiAgICAgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRXJyb3IuaWRsCmluZGV4IDhlYjlkNTQwMjk0NjUwMzRkZDQzZGY4MTlmZGRjZDEx
NTE2NzI3NTIuLmUzY2Q4ZDJhNzFkNDg5ODljYTIxOTdhNzNmODQwZjExOTU2M2FhMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUVycm9yLmlkbApAQCAtMzEsNyArMzEsNyBAQCBtb2R1bGUgaHRtbCB7
CiAgICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfRVJSX05FVFdPUksgPSAyOwog
ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0VSUl9ERUNPREUgPSAzOwogICAg
ICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0VSUl9TUkNfTk9UX1NVUFBPUlRFRCA9
IDQ7Ci0jaWYgZGVmaW5lZChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEVfRU5DUllQ
VEVEX01FRElBCisjaWYgKGRlZmluZWQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxF
X0VOQ1JZUFRFRF9NRURJQSkgfHwgKGRlZmluZWQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikg
JiYgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikKICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBz
aG9ydCBNRURJQV9FUlJfRU5DUllQVEVEID0gNTsKICNlbmRpZgogICAgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBjb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUtleUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXJy
b3IuaAppbmRleCAxMmM3MzZkNDg3YTNmNGMwNzE2NWI0YzY1MjhlZmQ5OTljZjc1ZGUyLi40OWUz
ODQzZTMyOGIzOTA4NzhlNjVlMTJjMTFlMDY5NWQ5NzE4ZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhS2V5RXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhS2V5RXJyb3IuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBNZWRpYUtleUVycm9yX2gK
ICNkZWZpbmUgTWVkaWFLZXlFcnJvcl9oCiAKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIp
CiAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFL
ZXlFcnJvciA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5RXJyb3I+IHsKIHB1YmxpYzoKLSAg
ICBlbnVtIENvZGUgeworICAgIGVudW0gewogICAgICAgICBNRURJQV9LRVlFUlJfVU5LTk9XTiA9
IDEsCiAgICAgICAgIE1FRElBX0tFWUVSUl9DTElFTlQsCiAgICAgICAgIE1FRElBX0tFWUVSUl9T
RVJWSUNFLApAQCAtNDMsMTUgKzQzLDE4IEBAIHB1YmxpYzoKICAgICAgICAgTUVESUFfS0VZRVJS
X0hBUkRXQVJFQ0hBTkdFLAogICAgICAgICBNRURJQV9LRVlFUlJfRE9NQUlOCiAgICAgfTsKKyAg
ICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IENvZGU7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYUtleUVycm9yPiBjcmVhdGUoQ29kZSBjb2RlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgTWVk
aWFLZXlFcnJvcihjb2RlKSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleUVycm9y
PiBjcmVhdGUoQ29kZSBjb2RlLCB1bnNpZ25lZCBsb25nIHN5c3RlbUNvZGUgPSAwKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgTWVkaWFLZXlFcnJvcihjb2RlLCBzeXN0ZW1Db2RlKSk7IH0KIAogICAg
IENvZGUgY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQorICAgIHVuc2lnbmVkIGxvbmcg
c3lzdGVtQ29kZSgpIHsgcmV0dXJuIG1fc3lzdGVtQ29kZTsgfQogCiBwcml2YXRlOgotICAgIGV4
cGxpY2l0IE1lZGlhS2V5RXJyb3IoQ29kZSBjb2RlKSA6IG1fY29kZShjb2RlKSB7IH0KKyAgICBl
eHBsaWNpdCBNZWRpYUtleUVycm9yKENvZGUgY29kZSwgdW5zaWduZWQgbG9uZyBzeXN0ZW1Db2Rl
KSA6IG1fY29kZShjb2RlKSwgbV9zeXN0ZW1Db2RlKHN5c3RlbUNvZGUpIHsgfQogCiAgICAgQ29k
ZSBtX2NvZGU7CisgICAgdW5zaWduZWQgbG9uZyBtX3N5c3RlbUNvZGU7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5
RXJyb3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUVycm9yLmlkbAppbmRleCA1
NWI5YjA0ZDBmN2Y1NzNlMzk0MDZlMmExMTFiNDc2YWFkOTJiODkzLi5kZjFjODE3OGE5OWRmMzNm
NTcxYWI0ODdmM2QzNTk2MjQwNzRlMWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhS2V5RXJyb3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFcnJv
ci5pZGwKQEAgLTI0LDggKzI0LDkgQEAKICAqLwogCiBtb2R1bGUgaHRtbCB7CisKICAgICBpbnRl
cmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEsCisgICAgICAgIENv
bmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQXxFTkNSWVBURURfTUVESUFfVjIsCiAgICAgICAgIFY4
RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYSwgCiAgICAgXSBNZWRpYUtleUVycm9yIHsK
ICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfS0VZRVJSX1VOS05PV04gPSAxOwpA
QCAtMzUsNSArMzYsNiBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IE1FRElBX0tFWUVSUl9IQVJEV0FSRUNIQU5HRSA9IDU7CiAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IE1FRElBX0tFWUVSUl9ET01BSU4gPSA2OwogICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgdW5zaWduZWQgc2hvcnQgY29kZTsKKyAgICAgICAgW0NvbmRpdGlvbmFsPUVOQ1JZUFRF
RF9NRURJQV9WMl0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgc3lzdGVtQ29kZTsK
ICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDk2NDlhYTkzMThjMzUw
YmI0MTBiMjllMGNkODUyNDcwZjM0MTM5ZjcuLmE0OWM1Y2JhNWQzOTVhZjk5Y2Q5Njg2ZDMwY2Rm
Mzg2NDBhNTk0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTQ3OCw2ICs0Nzgs
MTAgQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1F
TkNSWVBURURfTUVESUEsIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gTWVkaWFL
ZXlFcnJvckNvbnN0cnVjdG9yIE1lZGlhS2V5RXJyb3I7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29u
ZGl0aW9uYWw9RU5DUllQVEVEX01FRElBLCBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVk
aWFdIE1lZGlhS2V5RXZlbnRDb25zdHJ1Y3RvciBNZWRpYUtleUV2ZW50OworICAgICAgICBhdHRy
aWJ1dGUgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMiwgVjhFbmFibGVkQXRSdW50aW1l
PWVuY3J5cHRlZE1lZGlhXSBNZWRpYUtleXNDb25zdHJ1Y3RvciBNZWRpYUtleXM7CisgICAgICAg
IGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyLCBWOEVuYWJsZWRBdFJ1
bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIE1lZGlhS2V5RXJyb3JDb25zdHJ1Y3RvciBNZWRpYUtleUVy
cm9yOworICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMiwg
VjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBNZWRpYUtleU1lc3NhZ2VFdmVudENv
bnN0cnVjdG9yIE1lZGlhS2V5TWVzc2FnZUV2ZW50OworICAgICAgICBhdHRyaWJ1dGUgW0NvbmRp
dGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMiwgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1l
ZGlhXSBNZWRpYUtleU5lZWRlZEV2ZW50Q29uc3RydWN0b3IgTWVkaWFLZXlOZWVkZWRFdmVudDsK
IAogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVZJREVPX1RSQUNLLCBWOEVuYWJsZWRB
dFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10gSFRNTFRyYWNrRWxlbWVudENvbnN0cnVjdG9yIEhU
TUxUcmFja0VsZW1lbnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9VklERU9fVFJB
Q0ssIFY4RW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrXSBUZXh0VHJhY2tDb25zdHJ1
Y3RvciBUZXh0VHJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKaW5kZXggNDc4MzRkNWFiMTVjMTU2ZWI2NjJiYzBmOGUwYmE1YTJkYmI2
MDBjMy4uMTJlM2ZjNWJjMzg3OTY5N2ZjNTVhYjZkMDM1Zjc5MWIwZTVhMGRkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMjgx
LDcgKzI4MSw3IEBAIHN0YXRpYyBNZWRpYVBsYXllckZhY3RvcnkqIGJlc3RNZWRpYUVuZ2luZUZv
clR5cGVBbmRDb2RlY3MoY29uc3QgU3RyaW5nJiB0eXBlLCBjCiAgICAgICAgICAgICAgICAgY3Vy
cmVudCA9IDA7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQV9WMikKICAgICAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdp
bmVTdXBwb3J0ID0gZW5naW5lc1tuZHhdLT5zdXBwb3J0c1R5cGVBbmRDb2RlY3ModHlwZSwgY29k
ZWNzLCBrZXlTeXN0ZW0sIHVybCk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oa2V5U3lz
dGVtKTsKQEAgLTc4OSw3ICs3ODksNyBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlh
UGxheWVyOjpzdXBwb3J0c1R5cGUoY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeQogICAgIFVO
VVNFRF9QQVJBTShjbGllbnQpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFf
VjIpCiAgICAgcmV0dXJuIGVuZ2luZS0+c3VwcG9ydHNUeXBlQW5kQ29kZWNzKHR5cGUsIHR5cGVD
b2RlY3MsIHN5c3RlbSwgdXJsKTsKICNlbHNlCiAgICAgQVNTRVJUKHN5c3RlbS5pc0VtcHR5KCkp
OwpAQCAtMTA4NSw2ICsxMDg1LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCit2b2lkIE1lZGlhUGxheWVyOjpr
ZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpCit7CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJD
bGllbnQpCisgICAgICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyS2V5TmVlZGVk
KHRoaXMsIGluaXREYXRhKTsKK30KKyNlbmRpZgorCiBTdHJpbmcgTWVkaWFQbGF5ZXI6OnJlZmVy
cmVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA2MDg3NmU2Mzg1
YmI5NTgwNjY1MDI3MDJmODNmNjI0YjMxOGUxNTljLi40MDgxYTg4NjU4OTcyNzZmZmU3MGVlYzlh
ZDg2NjU1NjEwMzEzYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgKQEAgLTE5MCw2ICsxOTAsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogaW5p
dERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoKSB7IH0KICNlbmRpZgogCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQV9WMikKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVk
ZWQoTWVkaWFQbGF5ZXIqLCBVaW50OEFycmF5KikgeyB9CisjZW5kaWYKKyAgICAKICAgICB2aXJ0
dWFsIFN0cmluZyBtZWRpYVBsYXllclJlZmVycmVyKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7
IH0KICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclVzZXJBZ2VudCgpIGNvbnN0IHsgcmV0
dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBDT1JTTW9kZSBtZWRpYVBsYXllckNPUlNNb2Rl
KCkgY29uc3QgeyByZXR1cm4gVW5zcGVjaWZpZWQ7IH0KQEAgLTQxNSw2ICs0MTksMTAgQEAgcHVi
bGljOgogICAgIHZvaWQga2V5TmVlZGVkKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogaW5pdERhdGEsIHVuc2lnbmVk
IGluaXREYXRhTGVuZ3RoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9W
MikKKyAgICB2b2lkIGtleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSk7CisjZW5kaWYKKwog
ICAgIFN0cmluZyByZWZlcnJlcigpIGNvbnN0OwogICAgIFN0cmluZyB1c2VyQWdlbnQoKSBjb25z
dDsKIApAQCAtNDUzLDcgKzQ2MSw3IEBAIHByaXZhdGU6CiAKIHR5cGVkZWYgUGFzc093blB0cjxN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+ICgqQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIpKE1l
ZGlhUGxheWVyKik7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzKShI
YXNoU2V0PFN0cmluZz4mIHR5cGVzKTsKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiB0
eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlw
ZSkoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmIHVybCk7CiAjZWxzZQogdHlwZWRlZiBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlICgqTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUpKGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwmIHVybCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmgKaW5kZXggZDQ0YTMwYzczMjAzNzJhM2RkMjI1NzM3NGE1M2FlMjNjMjgzODg2OS4u
MTFiNjE5MTI0NmZkZmUzNGE4ZTY5MWU3ZWQ2MDk4ODA3OWM4MDRkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaApAQCAtNjMsNiArNjMsMTAgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgUGFzc093blB0
cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShNZWRpYVBsYXllciopOwogICAg
IHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpOwog
ICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBLVVJMJik7CisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBleHRlbmRlZFN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgY29kZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgS1VSTCYpOworI2VuZGlm
CisKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGNh
bmNlbExvYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGNmNzVkMGNmNmNmZDc2MDhh
ZDcxZDY3N2Y0NmYxZTc2OTg3OGEzNjYuLmVlYmFmMWViZDI0ZDc1Yzg3MzE3YjEyNTkwZDg1NzU1
YmRkNzUxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTMyLDcgKzEzMiwxMSBAQCBQ
YXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y3JlYQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJh
cikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
X1YyKQorICAgICAgICByZWdpc3RyYXIoY3JlYXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywgZXh0ZW5k
ZWRTdXBwb3J0c1R5cGUsIDAsIDAsIDApOworI2Vsc2UKICAgICAgICAgcmVnaXN0cmFyKGNyZWF0
ZSwgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCk7CisjZW5kaWYKIH0K
IAogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQyhNZWRpYVBsYXllciogcGxheWVyKQpAQCAtNzI1LDYgKzcyOSwxNyBA
QCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnN1cHBvcnRzVHlwZShjb25zdAogICAgIHJldHVybiBbQVZVUkxBc3NldCBpc1BsYXlh
YmxlRXh0ZW5kZWRNSU1FVHlwZTp0eXBlU3RyaW5nXSA/IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRl
ZCA6IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDs7CiB9CiAKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBX1YyKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpleHRlbmRlZFN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3Qg
S1VSTCYgdXJsKQoreworICAgIC8vIEFWRm91bmRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGFueSBl
bmNyeXRwZWQgbWVkaWEsIHNvIHJldHVybiBJc05vdFN1cHBvcnRlZCBpZiB0aGUga2V5U3lzdGVt
IGlzIG5vbi1OVUxMOgorICAgIGlmICgha2V5U3lzdGVtLmlzTnVsbCgpICYmICFrZXlTeXN0ZW0u
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwor
CisgICAgcmV0dXJuIHN1cHBvcnRzVHlwZSh0eXBlLCBjb2RlY3MsIHVybCk7OworfQorI2VuZGlm
CisKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aXNBdmFpbGFibGUo
KQogewogICAgIHJldHVybiBBVkZvdW5kYXRpb25MaWJyYXJ5KCkgJiYgQ29yZU1lZGlhTGlicmFy
eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAppbmRleCA0MzYxNjA3MTgyMWI5ZmI3YTg1
YjU2Mjc2MmI1MTUzYWUyOGUyOTNiLi42ZWIxYjdkYjkzODQyYzExNzI2YjU1Njc2ZTk1NTY5YjZh
YTU5ZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaApAQCAtNzYsNiArNzYsMTAgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2U+IGNyZWF0ZShNZWRpYVBsYXllciopOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5
cGVzKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYg
Y29kZWNzLCBjb25zdCBLVVJMJik7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKyAg
ICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBleHRlbmRlZFN1cHBvcnRzVHlwZShj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgY29uc3QgS1VSTCYpOworI2VuZGlmCisKICAgICBzdGF0aWMgdm9pZCBnZXRTaXRl
c0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYpOwogICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVk
aWFDYWNoZSgpOwogICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUoY29uc3Qg
U3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggMmU4NDlhZjYxYzhh
NGIzODNjMTZlNzg3N2NmYmE0MGIyMzhiNmY4ZC4uNGM2Njc3NDlmOGY2MTQ2NTU0NDU1ZTI4ZTgw
MTM5MmJlYTRiZDcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtMTkwLDcg
KzE5MCwxMSBAQCBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQ6OmNyZWF0ZShNZWRpYVBsYQogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3Ry
YXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QV9WMikKKyAgICAgICAgcmVnaXN0cmFyKGNyZWF0ZSwgZ2V0U3VwcG9ydGVkVHlwZXMsIGV4dGVu
ZGVkU3VwcG9ydHNUeXBlLCBnZXRTaXRlc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlLCBj
bGVhck1lZGlhQ2FjaGVGb3JTaXRlKTsKKyNlbHNlCiAgICAgICAgIHJlZ2lzdHJhcihjcmVhdGUs
IGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIGdldFNpdGVzSW5NZWRpYUNhY2hlLCBj
bGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUpOworI2VuZGlmCiB9CiAKIE1l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpNZWRpYVBsYXllclByaXZhdGVRVEtpdChNZWRpYVBsYXll
ciogcGxheWVyKQpAQCAtMTUxOCw2ICsxNTIyLDE3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5
CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIH0KIAorI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUFfVjIpCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0OjpleHRlbmRlZFN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgS1VS
TCYgdXJsKQoreworICAgIC8vIFFUS2l0IGRvZXMgbm90IHN1cHBvcnQgYW55IGVuY3J5dHBlZCBt
ZWRpYSwgc28gcmV0dXJuIElzTm90U3VwcG9ydGVkIGlmIHRoZSBrZXlTeXN0ZW0gaXMgbm9uLU5V
TEw6CisgICAgaWYgKCFrZXlTeXN0ZW0uaXNOdWxsKCkgJiYgIWtleVN5c3RlbS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisKKyAgICByZXR1
cm4gc3VwcG9ydHNUeXBlKHR5cGUsIGNvZGVjcywgdXJsKTs7Cit9CisjZW5kaWYKKwogYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aXNBdmFpbGFibGUoKQogewogICAgIC8vIE9uIDEwLjUg
YW5kIGhpZ2hlciwgUXVpY2tUaW1lIHdpbGwgYWx3YXlzIGJlIG5ldyBlbm91Z2ggZm9yIDx2aWRl
bz4gYW5kIDxhdWRpbz4gc3VwcG9ydCwgc28gd2UganVzdCBjaGVjayB0aGF0IHRoZSBmcmFtZXdv
cmsgY2FuIGJlIGxvYWRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAz
YWZiMzM0N2FlZDFiNTU0NmJhMWUwNGVkYmMyMWFjNWUyNDFhMDRlLi5kYjBlZWJhMDAxNjVhNTdj
YWQ2Mzc3MmMwYjM3MTBjOTYxNGE5Mjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC0xMDEsNiArMTAxLDExIEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgi
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisjaW5jbHVkZSAiQ0RN
LmgiCisjaW5jbHVkZSAiTW9ja0NETS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTEyNTMsNCArMTI1OCwxMSBAQCBQYXNz
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IEludGVybmFsczo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocygp
IGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ0xpc3QucmVsZWFzZSgpOwogfQogCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQV9WMikKK3ZvaWQgSW50ZXJuYWxzOjppbml0aWFsaXplTW9ja0NETSgp
Cit7CisgICAgQ0RNOjpyZWdpc3RlckNETUZhY3RvcnkoTW9ja0NETTo6Y3JlYXRlLCBNb2NrQ0RN
OjpzdXBwb3J0c0tleVN5dGVtKTsKK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaAppbmRleCBkMmQ0NTJlYTk1YTBlZTdkNjM5ODk1MDAyZjc2YzQwMDAwMzE0ODI5Li5h
N2U3ZTk3MGIxMDExYTcwOTg4OWFjMjBiMjJhY2YyOWJmNzdmYWFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKQEAgLTIxNyw2ICsyMTcsMTAgQEAgcHVibGljOgogCiAgICAgUGFzc1Jl
ZlB0cjxET01TdHJpbmdMaXN0PiBnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCkgY29uc3Q7CiAKKyNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIHZvaWQgaW5pdGlhbGl6ZU1vY2tDRE0o
KTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFscyhEb2N1bWVudCop
OwogICAgIERvY3VtZW50KiBjb250ZXh0RG9jdW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAppbmRleCAzYmQ5MTI5OWYwYTU1NzQ2NjI1Y2ZjOTFkNTI5YTFmOGZh
M2IxZWNiLi44ZGRjOTFlZTU0ZTJhYWI4MDdlZWYxMzUwODIzODUwYzA0NWQwMzViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0xOTMsNiArMTkzLDggQEAgbW9kdWxlIHdp
bmRvdyB7CiAgICAgICAgIE1hbGxvY1N0YXRpc3RpY3MgbWFsbG9jU3RhdGlzdGljcygpOwogCiAg
ICAgICAgIERPTVN0cmluZ1tdIGdldFJlZmVyZW5jZWRGaWxlUGF0aHMoKTsKKworICAgICAgICBb
Q29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyXSB2b2lkIGluaXRpYWxpemVNb2NrQ0RNKCk7
CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWEx
MzY1ZjM5OTI5ZWUxOTdiMDQ2NDMxODg1ZjAwYzBmODAwNTE1ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5jcHAKQEAgLTAsMCArMSwxMTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9ja0NETS5oIgorCisj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIk1lZGlhS2V5RXJyb3Iu
aCIKKyNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2Jvb2wgTW9ja0NETTo6c3VwcG9ydHNLZXlTeXRlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkK
K3sKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2Uoa2V5U3lzdGVtLCAiY29tLndlYmNvcmUu
bW9jayIpOworfQorCitib29sIE1vY2tDRE06OnN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKK3sKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UobWltZVR5cGUsICJ2
aWRlby9tb2NrIik7Cit9CisKK1N0cmluZyBNb2NrQ0RNOjpnZW5lcmF0ZVNlc3Npb25JZCgpCit7
CisgICAgc3RhdGljIGludCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Nlc3Npb25JZCA9IDA7Cisg
ICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nU2Vzc2lvbklk
KyspOworfQorCitzdGF0aWMgVWludDhBcnJheSogaW5pdERhdGFQcmVmaXgoKQoreworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHByZWZpeERhdGFbXSA9IHsnbScsICdvJywgJ2MnLCAn
ayd9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPFVpbnQ4QXJyYXk+LCBwcmVmaXgs
ICgpKTsKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmICghaW5p
dGlhbGl6ZWQpIHsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgICBwcmVmaXgg
PSBVaW50OEFycmF5OjpjcmVhdGUocHJlZml4RGF0YSwgc2l6ZW9mKHByZWZpeERhdGEpIC8gc2l6
ZW9mKHByZWZpeERhdGFbMF0pKTsKKyAgICB9CisgICAgcmV0dXJuIHByZWZpeC5nZXQoKTsKK30K
KworCitzdGF0aWMgVWludDhBcnJheSoga2V5UHJlZml4KCkKK3sKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgY2hhciBwcmVmaXhEYXRhW10gPSB7J2snLCAnZScsICd5J307CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChSZWZQdHI8V1RGOjpVaW50OEFycmF5PiwgcHJlZml4LCAoKSk7CisgICAg
c3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoIWluaXRpYWxpemVkKSB7
CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAgcHJlZml4ID0gVWludDhBcnJh
eTo6Y3JlYXRlKHByZWZpeERhdGEsIHNpemVvZihwcmVmaXhEYXRhKSAvIHNpemVvZihwcmVmaXhE
YXRhWzBdKSk7CisgICAgfQorICAgIHJldHVybiBwcmVmaXguZ2V0KCk7Cit9CisKK3N0YXRpYyBV
aW50OEFycmF5KiBrZXlSZXF1ZXN0KCkKK3sKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh
ciByZXF1ZXN0RGF0YVtdID0geydyJywgJ2UnLCAncScsICd1JywgJ2UnLCAncycsICd0J307Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWZQdHI8V1RGOjpVaW50OEFycmF5PiwgcmVxdWVzdCwg
KCkpOworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKCFpbml0
aWFsaXplZCkgeworICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CisgICAgICAgIHJlcXVlc3Qg
PSBVaW50OEFycmF5OjpjcmVhdGUocmVxdWVzdERhdGEsIHNpemVvZihyZXF1ZXN0RGF0YSkgLyBz
aXplb2YocmVxdWVzdERhdGFbMF0pKTsKKyAgICB9CisgICAgcmV0dXJuIHJlcXVlc3QuZ2V0KCk7
Cit9CisKK1Bhc3NSZWZQdHI8VWludDhBcnJheT4gTW9ja0NETTo6Z2VuZXJhdGVLZXlSZXF1ZXN0
KGNvbnN0IFN0cmluZyYsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBjb25zdCBTdHJpbmcmLCBTdHJp
bmcmLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNpZ25lZCBsb25nJikKK3sKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5pdERhdGFQcmVmaXgoKS0+bGVuZ3RoKCk7ICsraSkg
eworICAgICAgICBpZiAoIWluaXREYXRhIHx8IGkgPj0gaW5pdERhdGEtPmxlbmd0aCgpIHx8IGlu
aXREYXRhLT5pdGVtKGkpICE9IGluaXREYXRhUHJlZml4KCktPml0ZW0oaSkpIHsKKyAgICAgICAg
ICAgIGVycm9yQ29kZSA9IE1lZGlhS2V5RXJyb3I6Ok1FRElBX0tFWUVSUl9VTktOT1dOOworICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGtleVJlcXVl
c3QoKTsKK30KKwordm9pZCBNb2NrQ0RNOjpjbGVhcktleXNGcm9tU2Vzc2lvbklkKGNvbnN0IFN0
cmluZyYpCit7CisgICAgLy8gbm8tb3AKK30KKworYm9vbCBNb2NrQ0RNOjphZGRLZXlGb3JTZXNz
aW9uSWQoVWludDhBcnJheSoga2V5LCBjb25zdCBTdHJpbmcmLCBSZWZQdHI8VWludDhBcnJheT4m
LCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNpZ25lZCBsb25nJikKK3sKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwga2V5UHJlZml4KCktPmxlbmd0aCgpOyArK2kpIHsKKyAgICAg
ICAgaWYgKGkgPj0ga2V5LT5sZW5ndGgoKSB8fCBrZXktPml0ZW0oaSkgIT0ga2V5UHJlZml4KCkt
Pml0ZW0oaSkpIHsKKyAgICAgICAgICAgIGVycm9yQ29kZSA9IE1lZGlhS2V5RXJyb3I6Ok1FRElB
X0tFWUVSUl9DTElFTlQ7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBU
RURfTUVESUFfVjIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE0u
aCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmNzBiMzM1
OTQyYWE2OGIzNmVmZWY5M2Q5MTcyODEzMjAxYjNjMWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBNb2NrQ0RNX2gKKyNkZWZpbmUgTW9ja0NETV9oCisKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBX1YyKQorCisjaW5jbHVkZSAiQ0RNUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0RNOworCitj
bGFzcyBNb2NrQ0RNIDogcHVibGljIENETVByaXZhdGVJbnRlcmZhY2UgeworcHVibGljOgorICAg
IC8vIENETUZhY3Rvcnkgc3VwcG9ydDoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDRE1Qcml2YXRl
SW50ZXJmYWNlPiBjcmVhdGUoQ0RNKiBjZG0pIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBNb2NrQ0RN
KGNkbSkpOyB9CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNLZXlTeXRlbShjb25zdCBTdHJpbmcm
KTsKKworICAgIHZpcnR1YWwgfk1vY2tDRE0oKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworCisgICAgdmlydHVhbCBTdHJp
bmcgZ2VuZXJhdGVTZXNzaW9uSWQoKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VWludDhBcnJh
eT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkq
IGluaXREYXRhLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgU3RyaW5nJiBkZXN0aW5hdGlvblVS
TCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJLZXlzRnJvbVNlc3Npb25JZChjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCk7CisgICAgdmlydHVhbCBib29sIGFkZEtleUZvclNlc3Npb25JZChVaW50OEFy
cmF5KiwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1l
c3NhZ2UsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNv
ZGUpOworCitwcm90ZWN0ZWQ6CisgICAgTW9ja0NETShDRE0qIGNkbSkgOiBtX2NkbShjZG0pIHsg
fQorICAgIENETSogbV9jZG07Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorCisjZW5kaWYgLy8gTW9ja0NETV9oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzVlNmVlMGQzOTE1YTY1ZTU2
Y2QzYTNiNTYyOTljNzI5MGY1YTZiZC4uYmI4MmUzNzk4OWQzYTgwMjZkN2EyMDIwNzBiZDVlZWYx
ZTc5NDVkOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA5LTE5ICBKZXIgTm9ibGUgIDxq
ZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEJyaW5nIFdlYktpdCB1cCB0byBzcGVlZCB3
aXRoIGxhdGVzdCBFbmNyeXB0ZWQgTWVkaWEgc3BlYy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbmV3IHRlc3RzIGZvciB0aGUgdXBkYXRlZCBF
bmNyeXB0ZWQgTWVkaWEgRXh0ZW5zaW9ucyBzcGVjLgorCisgICAgICAgICogbWVkaWEvZW5jcnlw
dGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1ldmVudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLWV2ZW50
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVk
LW1lZGlhLXYyLXN5bnRheC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL2Vu
Y3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOiBVbnNraXAgKG1vc3Qgb2YpIHRoZSBtZWRpYS9l
bmNyeXB0ZWQtbWVkaWEvIHRlc3RzCisgICAgICAgICogcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5
cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtY2FuLXBsYXktdHlwZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorCiAyMDEyLTA5LTIwICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5A
bm9raWEuY29tPgogCiAgICAgICAgIFtRdF1bV0syXSBmYXN0L3NwYXRpYWwtbmF2aWdhdGlvbi9z
bmF2LW1lZGlhLWVsZW1lbnRzLmh0bWwgdGltZW91dHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItZXZlbnRzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEt
djItZXZlbnRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjI5NjNhMDY0MzA0ZDY4ODYyMDJl
OWI4MjY5OTI1ZmRkYmQ1NTMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1ldmVudHMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdHMgdGhlIGV2ZW50cyBjcmVhdGVkIGJ5IE1lZGlhS2V5
cy4KKworUlVOKG1lZGlhS2V5cyA9IG5ldyBNZWRpYUtleXMoImNvbS53ZWJjb3JlLm1vY2siKSkK
K1JVTihtZWRpYUtleVNlc3Npb24gPSBtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidmlkZW8vbW9j
ayIsIGluaXREYXRhKSkKK0VWRU5UKHdlYmtpdGtleW1lc3NhZ2UpCitSVU4obWVkaWFLZXlTZXNz
aW9uLmFkZEtleShpbnZhbGlkS2V5KSkKK0VWRU5UKHdlYmtpdGtleWVycm9yKQorUlVOKG1lZGlh
S2V5U2Vzc2lvbi5hZGRLZXkodmFsaWRLZXkpKQorRVZFTlQod2Via2l0a2V5YWRkZWQpCitFTkQg
T0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhLXYyLWV2ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlw
dGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1ldmVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzc2
MDhmN2I1MzYxZGI5MzZkNjdlYTU0MjIzN2NlYzFiNTYxZTdjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1ldmVu
dHMuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8dGl0bGU+TWVkaWFLZXlzPC90aXRsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Li4vdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHN0cmluZ1RvVWludDhBcnJheShzdHIpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgdmFyIGFycj1bXTsKKyAgICAgICAgICAgICAgICBmb3IodmFyIGk9MCxqPXN0
ci5sZW5ndGg7aTxqOysraSl7CisgICAgICAgICAgICAgICAgICBhcnJbaV09c3RyLmNoYXJDb2Rl
QXQoaSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVWlu
dDhBcnJheShhcnIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgbWVkaWFLZXlz
OworICAgICAgICAgICAgdmFyIG1lZGlhS2V5U2Vzc2lvbjsKKyAgICAgICAgICAgIHZhciBpbml0
RGF0YSA9IHN0cmluZ1RvVWludDhBcnJheSgnbW9jaycpOworICAgICAgICAgICAgdmFyIGludmFs
aWRLZXkgPSBzdHJpbmdUb1VpbnQ4QXJyYXkoJ2ludmFsaWQnKTsKKyAgICAgICAgICAgIHZhciB2
YWxpZEtleSA9IHN0cmluZ1RvVWludDhBcnJheSgna2V5Jyk7CisKKyAgICAgICAgICAgIGZ1bmN0
aW9uIHJ1blRlc3QoKSAKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBJbml0aWFs
aXplIHRoZSBNb2NrQ0RNLiBJdCBzdXBwb3J0cyB0aGUga2V5IHN5c3RlbSAnY29tLmFwcGxlLm1v
Y2snLCB0aGUgCisgICAgICAgICAgICAgICAgLy8gbWltZSB0eXBlICd2aWRlby9tb2NrJy4gSXQg
cmVxdWlyZXMgaW5pdCBkYXRhIHRvIGJlZ2luIHdpdGggJ21vY2snLCBhbmQKKyAgICAgICAgICAg
ICAgICAvLyBrZXlzIHRvIGJlZ2luIHdpdGggJ2tleScuCisgICAgICAgICAgICAgICAgaWYgKGlu
dGVybmFscykKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLmluaXRpYWxpemVNb2NrQ0RN
KCk7CisKKyAgICAgICAgICAgICAgICBydW4oJ21lZGlhS2V5cyA9IG5ldyBNZWRpYUtleXMoImNv
bS53ZWJjb3JlLm1vY2siKScpOworICAgICAgICAgICAgICAgIHJ1bignbWVkaWFLZXlTZXNzaW9u
ID0gbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oInZpZGVvL21vY2siLCBpbml0RGF0YSknKTsKKyAg
ICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3dlYmtpdGtleW1lc3NhZ2UnLCBrZXlNZXNzYWdl
LCBmYWxzZSwgZmFsc2UsIG1lZGlhS2V5U2Vzc2lvbik7CisgICAgICAgICAgICAgICAgd2FpdEZv
ckV2ZW50KCd3ZWJraXRrZXllcnJvcicsIGtleUVycm9yLCBmYWxzZSwgZmFsc2UsIG1lZGlhS2V5
U2Vzc2lvbik7CisgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50KCd3ZWJraXRrZXlhZGRlZCcs
IG51bGwsIHRydWUsIGZhbHNlLCBtZWRpYUtleVNlc3Npb24pOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBmdW5jdGlvbiBrZXlNZXNzYWdlKGV2ZW50KQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJ1bignbWVkaWFLZXlTZXNzaW9uLmFkZEtleShpbnZhbGlkS2V5KScpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBrZXlFcnJvcihldmVudCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBydW4oJ21lZGlhS2V5U2Vzc2lvbi5hZGRLZXko
dmFsaWRLZXkpJyk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgICAgIDxwPlRoaXMgdGVzdHMg
dGhlIGV2ZW50cyBjcmVhdGVkIGJ5IE1lZGlhS2V5cy48L3A+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVk
LW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXgtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIzMDUxMTE5Njg1NzYxMjZlN2JlMDg5Y2M1Njc0YmEzZGVkYTcy
NGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRheC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNiBAQAor
VGhpcyB0ZXN0cyB0aGUgYmFzaWMgQVBJIG9mIE1lZGlhS2V5cyBhbmQgTWVkaWFLZXlTZXNzaW9u
LgorCitUZXN0IE1lZGlhS2V5cy4KK0VYUEVDVEVEICh0eXBlb2Ygd2luZG93Lk1lZGlhS2V5cyA9
PSAnb2JqZWN0JykgT0sKK1RFU1QobmV3IE1lZGlhS2V5cygiIikpIFRIUk9XUyhET01FeGNlcHRp
b24uSU5WQUxJRF9BQ0NFU1NfRVJSKSBPSworVEVTVChuZXcgTWVkaWFLZXlzKCJ1bnN1cHBvcnRl
ZCIpKSBUSFJPV1MoRE9NRXhjZXB0aW9uLk5PVF9TVVBQT1JURURfRVJSKSBPSworUlVOKG1lZGlh
S2V5cyA9IG5ldyBNZWRpYUtleXMoImNvbS53ZWJjb3JlLm1vY2siKSkKK0VYUEVDVEVEIChtZWRp
YUtleXMua2V5U3lzdGVtID09ICdjb20ud2ViY29yZS5tb2NrJykgT0sKK0VYUEVDVEVEICh0eXBl
b2YgbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24gPT0gJ2Z1bmN0aW9uJykgT0sKK1RFU1QobWVkaWFL
ZXlzLmNyZWF0ZVNlc3Npb24oIiIsIG5ldyBVaW50OEFycmF5KDEpKSkgVEhST1dTKERPTUV4Y2Vw
dGlvbi5JTlZBTElEX0FDQ0VTU19FUlIpIE9LCitURVNUKG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9u
KCJ1bnN1cHBvcnRlZC90eXBlIikpIFRIUk9XUyhET01FeGNlcHRpb24uTk9UX1NVUFBPUlRFRF9F
UlIpIE9LCisKK1Rlc3QgTWVkaWFLZXlTZXNzaW9uLgorUlVOKG1lZGlhS2V5U2Vzc2lvbiA9IG1l
ZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ2aWRlby9tb2NrIiwgaW5pdERhdGEpKQorRVhQRUNURUQg
KHR5cGVvZiBtZWRpYUtleVNlc3Npb24gPT0gJ29iamVjdCcpIE9LCitFWFBFQ1RFRCAodHlwZW9m
IG1lZGlhS2V5U2Vzc2lvbi5hZGRFdmVudExpc3RlbmVyID09ICdmdW5jdGlvbicpIE9LCitFWFBF
Q1RFRCAodHlwZW9mIG1lZGlhS2V5U2Vzc2lvbi5hZGRLZXkgPT0gJ2Z1bmN0aW9uJykgT0sKK0VY
UEVDVEVEIChtZWRpYUtleVNlc3Npb24uZXJyb3IgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKG1l
ZGlhS2V5U2Vzc2lvbi5rZXlTeXN0ZW0gPT0gJ2NvbS53ZWJjb3JlLm1vY2snKSBPSworRVhQRUNU
RUQgKG1lZGlhS2V5U2Vzc2lvbi5zZXNzaW9uSWQgIT0gJ251bGwnKSBPSworRVhQRUNURUQgKG1l
ZGlhS2V5U2Vzc2lvbi5vbndlYmtpdGtleWFkZGVkID09ICdudWxsJykgT0sKK0VYUEVDVEVEICht
ZWRpYUtleVNlc3Npb24ub253ZWJraXRrZXllcnJvciA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAo
bWVkaWFLZXlTZXNzaW9uLm9ud2Via2l0a2V5bWVzc2FnZSA9PSAnbnVsbCcpIE9LCitURVNUKG1l
ZGlhS2V5U2Vzc2lvbi5hZGRLZXkobnVsbCkpIFRIUk9XUyhET01FeGNlcHRpb24uSU5WQUxJRF9B
Q0NFU1NfRVJSKSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVk
aWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXguaHRtbCBiL0xheW91
dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyMGFjOWI3NmQ2ZGJlMWZkY2JkMTc5NTJjZDMxNDYzOWJkZDdjMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNy
eXB0ZWQtbWVkaWEtdjItc3ludGF4Lmh0bWwKQEAgLTAsMCArMSw1OCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPk1lZGlhS2V5czwvdGl0bGU+
CisgICAgICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBzdHJpbmdUb1VpbnQ4QXJyYXkoc3RyKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBhcnI9W107CisgICAgICAgICAgICAg
ICAgZm9yKHZhciBpPTAsaj1zdHIubGVuZ3RoO2k8ajsrK2kpeworICAgICAgICAgICAgICAgICAg
YXJyW2ldPXN0ci5jaGFyQ29kZUF0KGkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYXJyKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIG1lZGlhS2V5czsKKyAgICAgICAgICAgIHZhciBtZWRpYUtleVNlc3Npb247Cisg
ICAgICAgICAgICB2YXIgaW5pdERhdGEgPSBzdHJpbmdUb1VpbnQ4QXJyYXkoJ21vY2snKTsKKwor
ICAgICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIAorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIC8vIEluaXRpYWxpemUgdGhlIE1vY2tDRE0uIEl0IHN1cHBvcnRzIHRoZSBrZXkgc3lz
dGVtICdjb20uYXBwbGUubW9jaycsIHRoZSAKKyAgICAgICAgICAgICAgICAvLyBtaW1lIHR5cGUg
J3ZpZGVvL21vY2snLiBJdCByZXF1aXJlcyBpbml0IGRhdGEgdG8gYmVnaW4gd2l0aCAnbW9jaycs
IGFuZAorICAgICAgICAgICAgICAgIC8vIGtleXMgdG8gYmVnaW4gd2l0aCAna2V5Jy4KKyAgICAg
ICAgICAgICAgICBpZiAoaW50ZXJuYWxzKQorICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbHMu
aW5pdGlhbGl6ZU1vY2tDRE0oKTsKKworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVz
dCBNZWRpYUtleXMuIik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd0eXBlb2Ygd2lu
ZG93Lk1lZGlhS2V5cycsICdvYmplY3QnKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhjZXB0aW9u
KCduZXcgTWVkaWFLZXlzKCIiKScsICJET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1NfRVJSIik7
CisgICAgICAgICAgICAgICAgdGVzdEV4Y2VwdGlvbignbmV3IE1lZGlhS2V5cygidW5zdXBwb3J0
ZWQiKScsICJET01FeGNlcHRpb24uTk9UX1NVUFBPUlRFRF9FUlIiKTsKKyAgICAgICAgICAgICAg
ICBydW4oJ21lZGlhS2V5cyA9IG5ldyBNZWRpYUtleXMoImNvbS53ZWJjb3JlLm1vY2siKScpOwor
ICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnbWVkaWFLZXlzLmtleVN5c3RlbScsICdjb20u
d2ViY29yZS5tb2NrJyk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd0eXBlb2YgbWVk
aWFLZXlzLmNyZWF0ZVNlc3Npb24nLCAnZnVuY3Rpb24nKTsKKyAgICAgICAgICAgICAgICB0ZXN0
RXhjZXB0aW9uKCdtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigiIiwgbmV3IFVpbnQ4QXJyYXkoMSkp
JywgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIiKTsKKyAgICAgICAgICAgICAgICB0
ZXN0RXhjZXB0aW9uKCdtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidW5zdXBwb3J0ZWQvdHlwZSIp
JywgIkRPTUV4Y2VwdGlvbi5OT1RfU1VQUE9SVEVEX0VSUiIpOworICAgICAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiIik7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgTWVk
aWFLZXlTZXNzaW9uLiIpOworICAgICAgICAgICAgICAgIHJ1bignbWVkaWFLZXlTZXNzaW9uID0g
bWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oInZpZGVvL21vY2siLCBpbml0RGF0YSknKTsKKyAgICAg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3R5cGVvZiBtZWRpYUtleVNlc3Npb24nLCAnb2JqZWN0
Jyk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd0eXBlb2YgbWVkaWFLZXlTZXNzaW9u
LmFkZEV2ZW50TGlzdGVuZXInLCAnZnVuY3Rpb24nKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ3R5cGVvZiBtZWRpYUtleVNlc3Npb24uYWRkS2V5JywgJ2Z1bmN0aW9uJyk7CisgICAg
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleVNlc3Npb24uZXJyb3InLCBudWxsKTsK
KyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ21lZGlhS2V5U2Vzc2lvbi5rZXlTeXN0ZW0n
LCAnY29tLndlYmNvcmUubW9jaycpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnbWVk
aWFLZXlTZXNzaW9uLnNlc3Npb25JZCcsIG51bGwsICchPScpOworICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgnbWVkaWFLZXlTZXNzaW9uLm9ud2Via2l0a2V5YWRkZWQnLCBudWxsKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ21lZGlhS2V5U2Vzc2lvbi5vbndlYmtpdGtleWVy
cm9yJywgbnVsbCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleVNlc3Np
b24ub253ZWJraXRrZXltZXNzYWdlJywgbnVsbCk7CisgICAgICAgICAgICAgICAgdGVzdEV4Y2Vw
dGlvbignbWVkaWFLZXlTZXNzaW9uLmFkZEtleShudWxsKScsICJET01FeGNlcHRpb24uSU5WQUxJ
RF9BQ0NFU1NfRVJSIik7CisgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAg
fQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgorICAgICAgICA8cD5UaGlzIHRlc3RzIHRoZSBiYXNpYyBBUEkgb2YgTWVkaWFLZXlz
IGFuZCBNZWRpYUtleVNlc3Npb24uPC9wPgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
U2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCmluZGV4IGIwNGM5NzIz
ODAyMzM1OTBlN2VkMjU5ZDVhY2E0NDIyOWFhOGU5ODAuLjM3NWQzMzYyNDVhNGMxNDM2NzBhZGUy
YWQyOTk2MjRmMGM0MTBmYjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9T
a2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCkBAIC00NzUsOSAr
NDc1LDExIEBAIG1lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC10YzAyOC11bnN1cHBvcnRlZC1tYXJr
dXAuaHRtbAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ3MzEK
IGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlLwogCi0jIEVuY3J5cHRlZCBNZWRpYSBFeHRl
bnNpb25zIGFyZSBub3QgZW5hYmxlZC4KLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS8KLWZhc3QvZXZl
bnRzL2NvbnN0cnVjdG9ycy9tZWRpYS1rZXktZXZlbnQtY29uc3RydWN0b3IuaHRtbAorIyBEZXBy
ZWNhdGVkIEVuY3J5cHRlZCBNZWRpYSBFeHRlbnNpb25zIGFyZSBub3QgZW5hYmxlZC4KK21lZGlh
L2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtY2FuLXBsYXktdHlwZS13ZWJtLmh0bWwK
K21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtZXZlbnRzLmh0bWwKK21lZGlh
L2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtbm90LWxvYWRlZC5odG1sCittZWRpYS9l
bmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXN5bnRheC5odG1sCiAKICMgRm9udCBmZWF0
dXJlIHNldHRpbmdzIGlzIG5vdCBpbXBsZW1lbnRlZC4KIGNzczMvZm9udC1mZWF0dXJlLXNldHRp
bmdzLXJlbmRlcmluZy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
bWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS1jYW4tcGxheS10eXBlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhLWNhbi1wbGF5LXR5cGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJh
Y2M3N2E0NjU4OTA2YjIxNWRjZWU2M2QwNjNhOGI3NzhjNGEzMzcKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRl
ZC1tZWRpYS1jYW4tcGxheS10eXBlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDc1IEBACitUZXN0
IEVuY3J5cHRlZCBNZWRpYSBleHRlbnNpb24gb2YgSFRNTE1lZGlhRWxlbWVudCBjYW5QbGF5VHlw
ZSgpIG1ldGhvZC4KKworVGhlIHRlc3QgaXMgZGVzaWduZWQgdG8gcGFzcyB3aXRoIGFueSBpbXBs
ZW1lbnRhdGlvbiByZWdhcmRsZXNzIG9mIHN1cHBvcnRlZCBtZWRpYSB0eXBlcyBhbmQgcmVsaWVz
IG9uIHRoZSBleHBlY3RlZCBsb2cgdG8gZGV0ZWN0IHRoZSBleHBlY3RlZCByZXN1bHRzIGZvciBz
b21lIHR5cGVzLiBUbyBnZXQgc3VmZmljaWVudCBjb3ZlcmFnZSwgaXQgaXMgaW1wb3J0YW50IHRo
YXQgYW4gaW1wbGVtZW50YXRpb24gc3VwcG9ydCBjbGVhcmtleSBlbmNyeXB0aW9uIG9mIGF0IGxl
YXN0IG9uZSBvZiB0aGUgdHlwZXMgYmVsb3cuCisKK0Fsd2F5cyByZXR1cm4gdGhlIGVtcHR5IHN0
cmluZyBmb3Igbm8gdHlwZS4KK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgpID09ICcnKSBP
SworCitBbHdheXMgcmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgZm9yIGFuIGVtcHR5IHR5cGUuCitF
WFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJycpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVv
LmNhblBsYXlUeXBlKCcnLCAnJykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5
cGUoJycsIG51bGwpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCcnLCB1
bmRlZmluZWQpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCcnLCAnd2Vi
a2l0LW9yZy53My5jbGVhcmtleScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlU
eXBlKCcnLCAnV2VCa0l0LU9yRy5XMy5DbEVhUmtFeScpID09ICcnKSBPSworRVhQRUNURUQgKHZp
ZGVvLmNhblBsYXlUeXBlKCcnLCAnY29tLmV4YW1wbGUuaW52YWxpZCcpID09ICcnKSBPSworCitB
bHdheXMgcmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgZm9yIHdoZW4gbm8gY29udGFpbmVyIGlzIHNw
ZWNpZmllZC4KK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vJykgPT0gJycpIE9L
CitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvLycsICcnKSA9PSAnJykgT0sKK0VY
UEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vJywgbnVsbCkgPT0gJycpIE9LCitFWFBF
Q1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvLycsIHVuZGVmaW5lZCkgPT0gJycpIE9LCitF
WFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvLycsICd3ZWJraXQtb3JnLnczLmNsZWFy
a2V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvLycsICdX
ZUJrSXQtT3JHLlczLkNsRWFSa0V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxh
eVR5cGUoJ3ZpZGVvLycsICdjb20uZXhhbXBsZS5pbnZhbGlkJykgPT0gJycpIE9LCisKK0Fsd2F5
cyByZXR1cm4gdGhlIGVtcHR5IHN0cmluZyBmb3IgYW4gdW5zdXBwb3J0ZWQgY29udGFpbmVyLgor
RVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9ibGFoYmxhaCcpID09ICcnKSBPSwor
RVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9ibGFoYmxhaCcsICcnKSA9PSAnJykg
T0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vYmxhaGJsYWgnLCBudWxsKSA9
PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vYmxhaGJsYWgnLCB1
bmRlZmluZWQpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9i
bGFoYmxhaCcsICd3ZWJraXQtb3JnLnczLmNsZWFya2V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAo
dmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL2JsYWhibGFoJywgJ1dlQmtJdC1PckcuVzMuQ2xFYVJr
RXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vYmxhaGJs
YWgnLCAnY29tLmV4YW1wbGUuaW52YWxpZCcpID09ICcnKSBPSworCitFbXB0eSBrZXkgc3lzdGVt
IHBhcmFtZXRlcnMgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIHJlc3VsdCBvZiB2aWRlby9tcDQgdHlw
ZXMuCitSZXN1bHQgb2YgdmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL21wNDsgQ29kZWNzPSJhdmMx
LjRENDAwQyInKTogJ3Byb2JhYmx5JworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRl
by9tcDQ7IENvZGVjcz0iYXZjMS40RDQwMEMiJywgJycpID09ICdwcm9iYWJseScpIE9LCitFWFBF
Q1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL21wNDsgQ29kZWNzPSJhdmMxLjRENDAwQyIn
LCBudWxsKSA9PSAncHJvYmFibHknKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2
aWRlby9tcDQ7IENvZGVjcz0iYXZjMS40RDQwMEMiJywgdW5kZWZpbmVkKSA9PSAncHJvYmFibHkn
KSBPSworVGhlcmUgYXJlIGN1cnJlbnRseSBubyBpbXBsZW1lbnRhdGlvbnMgc3VwcG9ydGluZyBl
bmNyeXB0aW9uIG9mIHZpZGVvL21wNC4KK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlk
ZW8vbXA0OyBDb2RlY3M9ImF2YzEuNEQ0MDBDIicsICd3ZWJraXQtb3JnLnczLmNsZWFya2V5Jykg
PT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL21wNDsgQ29kZWNz
PSJhdmMxLjRENDAwQyInLCAnV2VCa0l0LU9yRy5XMy5DbEVhUmtFeScpID09ICcnKSBPSworRVhQ
RUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9tcDQ7IENvZGVjcz0iYXZjMS40RDQwMEMi
JywgJ2NvbS5leGFtcGxlLmludmFsaWQnKSA9PSAnJykgT0sKKworRW1wdHkga2V5IHN5c3RlbSBw
YXJhbWV0ZXJzIHNob3VsZCBub3QgYWZmZWN0IHRoZSByZXN1bHQgb2YgYXVkaW8vbXBlZyB0eXBl
cy4KK1Jlc3VsdCBvZiB2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vbXBlZycpOiAnbWF5YmUnCitF
WFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL21wZWcnLCAnJykgPT0gJ21heWJlJykg
T0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vbXBlZycsIG51bGwpID09ICdt
YXliZScpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL21wZWcnLCB1bmRl
ZmluZWQpID09ICdtYXliZScpIE9LCitUaGVyZSBhcmUgY3VycmVudGx5IG5vIGltcGxlbWVudGF0
aW9ucyBzdXBwb3J0aW5nIGVuY3J5cHRpb24gb2YgYXVkaW8vbXBlZy4KK0VYUEVDVEVEICh2aWRl
by5jYW5QbGF5VHlwZSgnYXVkaW8vbXBlZycsICd3ZWJraXQtb3JnLnczLmNsZWFya2V5JykgPT0g
JycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL21wZWcnLCAnV2VCa0l0
LU9yRy5XMy5DbEVhUmtFeScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBl
KCdhdWRpby9tcGVnJywgJ2NvbS5leGFtcGxlLmludmFsaWQnKSA9PSAnJykgT0sKKworRW1wdHkg
a2V5IHN5c3RlbSBwYXJhbWV0ZXJzIHNob3VsZCBub3QgYWZmZWN0IHRoZSByZXN1bHQgb2YgYXVk
aW8vd2F2IHR5cGVzLgorUmVzdWx0IG9mIHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby93YXYnKTog
J21heWJlJworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby93YXYnLCAnJykgPT0g
J21heWJlJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vd2F2JywgbnVs
bCkgPT0gJ21heWJlJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vd2F2
JywgdW5kZWZpbmVkKSA9PSAnbWF5YmUnKSBPSworVGhlcmUgYXJlIGN1cnJlbnRseSBubyBpbXBs
ZW1lbnRhdGlvbnMgc3VwcG9ydGluZyBlbmNyeXB0aW9uIG9mIGF1ZGlvL3dhdi4KK0VYUEVDVEVE
ICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vd2F2JywgJ3dlYmtpdC1vcmcudzMuY2xlYXJrZXkn
KSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vd2F2JywgJ1dl
QmtJdC1PckcuVzMuQ2xFYVJrRXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5
VHlwZSgnYXVkaW8vd2F2JywgJ2NvbS5leGFtcGxlLmludmFsaWQnKSA9PSAnJykgT0sKKworRW1w
dHkga2V5IHN5c3RlbSBwYXJhbWV0ZXJzIHNob3VsZCBub3QgYWZmZWN0IHRoZSByZXN1bHQgb2Yg
dmlkZW8vd2VibSB0eXBlcy4KK1Jlc3VsdCBvZiB2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vd2Vi
bScpOiAnJworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby93ZWJtJywgJycpID09
ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby93ZWJtJywgbnVsbCkg
PT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL3dlYm0nLCB1bmRl
ZmluZWQpID09ICcnKSBPSworQWxsIGltcGxlbWVudGF0aW9ucyB0aGF0IHN1cHBvcnQgV2ViTSBh
bmQgRW5jcnlwdGVkIE1lZGlhIHN1cHBvcnQgZW5jcnlwdGVkIFdlYk0uCitFWFBFQ1RFRCAodmlk
ZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL3dlYm0nLCAnd2Via2l0LW9yZy53My5jbGVhcmtleScpID09
ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby93ZWJtJywgJ1dlQmtJ
dC1PckcuVzMuQ2xFYVJrRXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlw
ZSgndmlkZW8vd2VibScsICdjb20uZXhhbXBsZS5pbnZhbGlkJykgPT0gJycpIE9LCitFTkQgT0Yg
VEVTVAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164929</attachid>
            <date>2012-09-20 09:02:58 -0700</date>
            <delta_ts>2013-02-04 13:21:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97037-20120920090224.patch</filename>
            <type>text/plain</type>
            <size>140579</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NDNlMmE4ODc0NjQ1NWIzZjBmOThiMTMwYjk2MjIzMmE0Y2M4OGZjLi4zYjRlZTYwMjhkY2U1ODQz
YzE4MzJhZDBlMGI2YjNmNmI4YTU3NmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOS0xOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KworICAgICAgICBCcmluZyBXZWJLaXQgdXAgdG8gc3BlZWQgd2l0aCBsYXRlc3QgRW5jcnlwdGVk
IE1lZGlhIHNwZWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NzAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIERlZmluZSB0aGUgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiBzZXR0aW5nLgorCisgICAg
ICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTItMDkt
MTkgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBPU1IgZXhp
dCBzb21ldGltZXMgbmVnbGVjdHMgdG8gY3JlYXRlIHRoZSBhcmd1bWVudHMgb2JqZWN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDdjMzJlOTIyNDYxOWI4ZDQwZThlYjc2ZTk5YWMxZTdiMzg4MTZlNzguLjhiOWI4NGVkOGE1MTRh
N2RjZDI1ZjNkYmNhZDM3ZTgxZmU1NjAzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDkt
MTkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQnJpbmcgV2Vi
S2l0IHVwIHRvIHNwZWVkIHdpdGggbGF0ZXN0IEVuY3J5cHRlZCBNZWRpYSBzcGVjLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcwMzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZWZpbmUgdGhlIEVOQUJM
RV9FTkNSWVBURURfTUVESUFfVjIgc2V0dGluZy4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5o
OgorCiAyMDEyLTA5LTE5ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgT1NSIGV4aXQgc29tZXRpbWVzIG5lZ2xlY3RzIHRvIGNyZWF0ZSB0aGUgYXJndW1lbnRz
IG9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE3Njk2Njk0MzFkOGFiNTE0OGI1NTJiOTQ0MDZhMjlhZGZk
NzliYmUuLjRmMDBjNDAxOGI3ZmQ5ZWYxM2YyZjUzOGJkMjdiYjRhZTI4Y2MyMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNzcgQEAKKzIwMTItMDktMTkgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CisKKyAgICAgICAgQnJpbmcgV2ViS2l0IHVwIHRvIHNwZWVkIHdpdGggbGF0ZXN0
IEVuY3J5cHRlZCBNZWRpYSBzcGVjLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTcwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgbW9zdCByZWNlbnQgdmVyc2lvbiBvZiB0aGUgRW5jcnlwdGVkIE1l
ZGlhIEV4dGVuc2lvbnMgc3BlYyBicmVha3MgZnVuY3Rpb25hbGl0eSBvdXQgb2YgdGhlCisgICAg
ICAgIEhUTUxNZWRpYUVsZW1lbnQgYW5kIGludG8gbmV3IE1lZGlhS2V5cyBhbmQgTWVkaWFLZXlT
ZXNzaW9uIGNsYXNzZXMuIFNpbmNlIHRoZSBDRE0gZnVuY3Rpb25hbGl0eQorICAgICAgICBoYXMg
YmVlbiBwdWxsZWQgb3V0IG9mIHRoZSBtZWRpYSBlbGVtZW50LCB3ZSBjcmVhdGUgYSBwcm94eSBD
RE0gY2xhc3MgYW5kIGZhY3Rvcnkgc3lzdGVtIGZvcgorICAgICAgICBjcmVhdGluZyBzcGVjaWZp
YyBDRE0ga2V5IHN5c3RlbSBpbXBsZW1lbnRhdGlvbnMuIFRoZSBzcGVjIGFsc28gYnJlYWtzIG91
dCBNZWRpYUtleUV2ZW50CisgICAgICAgIGludG8gZGlzdGluY3QgZXZlbnQgY2xhc3NlcywgTWVk
aWFLZXlOZWVkZWRFdmVudCBhbmQgTWVkaWFLZXlNZXNzYWdlRXZlbnQsIGZvciBuZWVka2V5IGFu
ZAorICAgICAgICBrZXltZXNzYWdlIGV2ZW50cywgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgIFRl
c3RzOiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLWV2ZW50cy5odG1s
CisgICAgICAgICAgICAgICBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYy
LXN5bnRheC5odG1sCisKKyAgICAgICAgQ0RNIGlzIGEgcHJveHkgY2xhc3MgKGEgbGEgTWVkaWFQ
bGF5ZXIpIGZvciBhIHNwZWNpZmljIENETVByaXZhdGVJbnRlcmZhY2UgaW1wbGVtZW50YXRpb24u
IEEgQ0RNCisgICAgICAgIGltcGxlbWVudGF0aW9uIGlzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgQ0RN
RmFjdG9yeSBhbmQgd2lsbCBiZSBjcmVhdGVkIGlmIHRoYXQgaW1wbGVtZW50YXRpb24gc3VwcG9y
dHMKKyAgICAgICAgdGhlIGtleSBzeXN0ZW0gcGFzc2VkIGludG8gdGhlIE1lZGlhS2V5cyBjb25z
dHJ1Y3Rvci4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6aW5zdGFsbGVkQ0RNRmFjdG9yaWVzKTogSW5pdGlhbGl6ZSBh
bGwgdGhlIGtub3duIENETSBzdWJ0eXBlcy4gUG9ydHMgd2lsbCBhZGQgQ0RNIGltcGxlbWVudGF0
aW9ucyBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpyZWdpc3RlckNETUZhY3RvcnkpOiBS
ZWdpc3RlcnMgYSBuZXcgQ0RNRmFjdG9yeSB1c2luZyB0aGUgcGFzc2VkIGluIGZ1bmN0aW9uIHBv
aW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6Q0RNRmFjdG9yeUZvcktleVN5c3RlbSk6IFJldHVy
biB0aGUgZmlyc3QgQ0RNIGZhY3Rvcnkgd2hpY2ggc3VwcG9ydHMgdGhlIHJlcXVlc3RlZCBrZXkg
c3lzdGVtLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0tleVN5c3RlbSk6IFdhbGsg
dGhlIGluc3RhbGxlZCBDRE1zIGFuZCBhc2sgaWYgdGhlIGdpdmVuIGtleSBzeXN0ZW0gaXMgc3Vw
cG9ydGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0tleVN5c3RlbU1JTUVUeXBl
QW5kQ29kZWMpOiBEaXR0bywgd2l0aCBhbiBhZGRpdGlvbmFsIE1JTUUgdHlwZSBhbmQgY29kZWMg
c3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpjcmVhdGUpOiBTaW1wbGUgY29uc3RydWN0
b3Igd3JhcHBlci4KKyAgICAgICAgKFdlYkNvcmU6OkNETTo6Q0RNKTogU2ltcGxlIGNvbnN0cnVj
dG9yOyBjYWxscyBiZXN0Q0RNRm9yS2V5U3lzdGVtKCkgdG8gY3JlYXRlIGl0J3MgcHJpdmF0ZSBp
bXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNETTo6fkNETSk6IFNpbXBsZSBkZXN0
cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpnZW5lcmF0ZVNlc3Npb25JZCk6IFBhc3Mg
dGhyb3VnaCB0byBwcml2YXRlIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q0RN
OjpnZW5lcmF0ZUtleVJlcXVlc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNETTo6YWRk
S2V5Rm9yU2Vzc2lvbklkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDRE06OmNsZWFyS2V5
c0Zyb21TZXNzaW9uSWQpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNETTo6a2V5U3lzdGVtKTogU2ltcGxl
IGFjY2Vzc29yIGZvciBtX2tleVN5c3RlbS4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETVByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlSW50
ZXJmYWNlOjpDRE1Qcml2YXRlSW50ZXJmYWNlKTogU2ltcGxlIGNvbnN0cnVjdG9yLgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUludGVyZmFjZTo6fkNETVByaXZhdGVJbnRlcmZhY2UpOiBT
aW1wbGUgZGVzdHJ1Y3Rvci4KKworICAgICAgICBUaGUgbmV3IGNsYXNzZXMsIE1lZGlhS2V5TWVz
c2FnZUV2ZW50IGFuZCBNZWRpYUtleU5lZWRlZEV2ZW50LCB0YWtlIGRpc3RpbmN0IHN1YnNldHMg
b2YgdGhlIGluaXRpYWxpemVycyBvZgorICAgICAgICB0aGUgb3JpZ2luYWwgTWVkaWFLZXlNZXNz
YWdlRXZlbnQuCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3Nh
Z2VFdmVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVu
dC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQ6Ok1lZGlh
S2V5TWVzc2FnZUV2ZW50SW5pdCk6IEluaXRpYWxpemVyIG5vdyBvbmx5IHRha2VzIG1lc3NhZ2Ug
YW5kIGRlc3RpbmF0aW9uVVJMCisgICAgICAgICAgICBwYXJhbWV0ZXJzLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlNZXNzYWdlRXZlbnQ6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50KTogU2ltcGxl
IGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlRXZlbnQ6On5N
ZWRpYUtleU1lc3NhZ2VFdmVudCk6IFNpbXBsZSBkZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlNZXNzYWdlRXZlbnQ6OmludGVyZmFjZU5hbWUpOiBTdGFuZGFyZCBpbnRlcmZh
Y2VOYW1lLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdl
RXZlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50Lmgu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVudDo6Y3JlYXRlKTogU2ltcGxl
IGNvbnN0cnVjdGlvbiB3cmFwcGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdl
RXZlbnQ6Om1lc3NhZ2UpOiBTaW1wbGUgYWNjZXNzb3IgZm9yIG1fbWVzc2FnZS4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50OjpkZXN0aW5hdGlvblVSTCk6IFNpbXBsZSBh
Y2Nlc3NvciBmb3IgbV9kZXN0aW5hdGlvblVSTC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUtleUV2ZW50LmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhS2V5RXZlbnQuaC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5TmVlZGVkRXZl
bnRJbml0OjpNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCk6IEluaXRpYWxpemVyIG5vdyBvbmx5IHRh
a2VzIGluaXREYXRhIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5TmVlZGVk
RXZlbnQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnQpOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleU5lZWRlZEV2ZW50Ojp+TWVkaWFLZXlOZWVkZWRFdmVudCk6IFNp
bXBsZSBkZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlOZWVkZWRFdmVudDo6
aW50ZXJmYWNlTmFtZSk6IFN0YW5kYXJkIGludGVyZmFjZU5hbWUuCisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50Lmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVudC5oLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFL
ZXlOZWVkZWRFdmVudDo6Y3JlYXRlKTogU2ltcGxlIGNvbnN0cnVjdGlvbiB3cmFwcGVyLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlOZWVkZWRFdmVudDo6aW5pdERhdGEpOiBTaW1wbGUgYWNj
ZXNzb3IgZm9yIG1faW5pdERhdGEuCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleU5lZWRlZEV2ZW50LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUtleUV2ZW50LmlkbC4KKworICAgICAgICBNZWRpYUtleVNlc3Npb24gaXMgYSBuZXcgY2xh
c3MgdGhhdCBtYXBzIGtleXMgYW5kIGtleSByZXF1ZXN0cyB0byBhIGdpdmVuIHNlc3Npb24gSUQ6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKTogU2ltcGxl
IGNvbnN0cnVjdGlvbiB3cmFwcGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9u
OjpNZWRpYUtleVNlc3Npb24pOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVNlc3Npb246On5NZWRpYUtleVNlc3Npb24pOiBTaW1wbGUgZGVzdHJ1Y3Rvcjsg
Y2FsbHMgY2xvc2UoKS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6c2V0RXJy
b3IpOiBTaW1wbGUgc2V0dGVyIGZvciBtX2Vycm9yOworICAgICAgICAoV2ViQ29yZTo6TWVkaWFL
ZXlTZXNzaW9uOjpjbG9zZSk6IFRlbGwgdGhlIENETSB0byBjbGVhciBhbnkgc2F2ZWQgc2Vzc2lv
biBrZXlzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJl
cXVlc3QpOiBTdGFydCBhIG9uZS1zaG90IHRpbWVyLCBoYW5kbGVkIGluIGtleVJlcXVlc3RUaW1l
ckZpcmVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjprZXlSZXF1ZXN0VGlt
ZXJGaXJlZCk6IEZvbGxvdyB0aGUgc3RlcHMgaW4gdGhlIHNwZWM7IGFzayB0aGUgQ0RNIHRvIGdl
bmVyYXRlIGEga2V5IHJlcXVlc3QuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246
OmFkZEtleSk6IFN0YXJ0IGEgb25lLXNob3QgdGltZXIsIGhhbmRsZWQgaW4gYWRkS2V5VGltZXJG
aXJlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGltZXJGaXJl
ZCk6IEZvbGxvdyB0aGUgc3RlcHMgaW4gdGhlIHNwZWM7IHByb3ZpZGUgdGhlIGtleSBkYXRhIHQg
b3RoZSBDRE0uCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmtleVN5c3Rl
bSk6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9rZXlTeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUtleVNlc3Npb246OnNlc3Npb25JZCk6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9zZXNzaW9u
SWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmVycm9yKTogU2ltcGxlIGFj
Y2Vzc29yIGZvciBtX2Vycm9yOworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmlkbDoKKworICAgICAgICBNZWRpYUtleVNlc3Npb24gaW5oZXJpdHMgZnJv
bSBFdmVudFRhcmdldCwgYW5kIG11c3Qgb3ZlcnJpZGUgdGhlIHB1cmUgdmlydHVhbCBmdW5jdGlv
bnMgaW4gdGhhdCBjbGFzczoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9u
OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6
cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpkZXJl
ZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6ZXZlbnRU
YXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6ZW5zdXJlRXZl
bnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk6CisKKyAgICAgICAgTWVkaWFLZXlzIGlzIGEgbmV3IGNsYXNzIHRo
YXQgZW5jYXBzdWxhdGVzIGEgQ0RNIGFuZCBhIG51bWJlciBvZiBrZXkgc2Vzc2lvbnM6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3JlYXRlKTogVGhyb3cgYW4gZXhjZXB0aW9uIGlmIHRo
ZSBrZXkgc3lzdGVtIHBhcmFtZXRlciBpcyB1bnN1cHBvcnRlZDsgY3JlYXRlIGEgQ0RNIG9iamVj
dAorICAgICAgICAgICAgYW5kIGEgbmV3IE1lZGlhS2V5cyBzZXNzaW9uLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlzOjpNZWRpYUtleXMpOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleXM6On5NZWRpYUtleXMpOiBTaW1wbGUgZGVzdHJ1Y3Rvci4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbik6IEZvbGxvdyB0aGUgc3Bl
YyBhbmQgY3JlYXRlIGEgbmV3IGtleSBzZXNzaW9uLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlzLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUVycm9yLmlkbC4KKworICAgICAgICBQcm92aWRlIGEgbmV3IGludGVyZmFjZSB0byBIVE1MTWVk
aWFFbGVtZW50IGZvciBNZWRpYVBsYXllciB3aGljaCBkb2VzIG5vdCByZXF1aXJlIGEgc2Vzc2lv
bklkIG9yIGEga2V5IHN5c3RlbToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVk
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjprZXlOZWVkZWQpOgorCisgICAgICAgIE1lZGlhS2V5
RXJyb3Igbm93IGhhcyBhIHN5c3RlbUNvZGUgcGFyYW1ldGVyIGFuZCBtZW1iZXIgdmFyaWFibGUu
CisgICAgICAgICogaHRtbC9NZWRpYUtleUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUtleUVycm9yOjpjcmVhdGUpOiBUYWtlIGEgc3lzdGVtQ29kZSBwYXJhbWV0ZXIgd2l0aCBhIGRl
ZmF1bHQgKDApIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlFcnJvcjo6TWVkaWFL
ZXlFcnJvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlFcnJvcjo6c3lzdGVt
Q29kZSk6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9zeXN0ZW1Db2RlLgorICAgICAgICAqIGh0bWwv
TWVkaWFLZXlFcnJvci5pZGw6CisKKyAgICAgICAgQWRkIG5ldyBtZXRob2RzIHRvIEhUTUxNZWRp
YUVsZW1lbnQgdG8gc3VwcG9ydCBNZWRpYUtleXMuIFN1cHBvcnQgZGlmZmVyZW50IGluaXRpYWxp
emVyCisgICAgICAgIGZvciB0aGUgTWVkaWFLZXlOZWVkZWRFdmVudC4KKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6c2V0TWVkaWFLZXlzKTogU2ltcGxlIHNldHRlciBmb3IgbV9tZWRpYUtleXMuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6IFRoaXMg
dmVyc2lvbiB0YWtlcyBmZXdlciBwYXJhbWV0ZXJzCisgICAgICAgICAgICB0aGFuIHRoZSBkZXBy
ZWNhdGVkIHZlcnNpb24uCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYUtleXMpOiBTaW1wbGUgYWNjZXNz
b3IgZm9yIG1fbWVkaWFLZXlzLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6
IEFkZCB0aGUgbWVkaWFLZXlzIGF0dHJpYnV0ZS4KKworICAgICAgICBBZGQgYW4gRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQV9WMikgY2hlY2sgdG8gdGhlIGV4aXN0aW5nIEVOQUJMRShFTkNSWVBURURf
TUVESUEpIG9uZToKKyAgICAgICAgKiBodG1sL01lZGlhRXJyb3IuaDoKKyAgICAgICAgKiBodG1s
L01lZGlhRXJyb3IuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RNZWRpYUVuZ2luZUZvclR5cGVBbmRDb2RlY3Mp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjprZXlOZWVkZWQpOiBUaGlzIHZlcnNpb24gdGFrZXMgZmV3ZXIgcGFyYW1ldGVy
cyB0aGFuIHRoZQorICAgICAgICAgICAgZGVwcmVjYXRlZCB2ZXJzaW9uLgorCisgICAgICAgIFN1
cHBvcnQgdGhlIG5ldyB2ZXJzaW9uIG9mIGNhblBsYXlUeXBlIHdoaWNoIHRha2VzIGFuIGV4dHJh
IHBhcmFtZXRlcjoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZXh0ZW5kZWRTdXBwb3J0c1R5cGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpyZWdpc3Rlck1l
ZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojpl
eHRlbmRlZFN1cHBvcnRzVHlwZSk6CisKKyAgICAgICAgQWRkIGEgbW9jayBDRE0gZm9yIHVzZSB3
aXRoaW4gRFJUIGFuZCBXS1RSIHRvIHRlc3QgdGhlIE1lZGlhS2V5cyBhbmQgTWVkaWFLZXlTZXNz
aW9uCisgICAgICAgIEFQSXMgYW5kIGV2ZW50czoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RNKTog
QWRkIHRoZSBNb2NrQ0RNIGNsYXNzIHRvIHRoZSBDRE0gZmFjdG9yaWVzLgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOiBBZGQg
dGhlIGluaXRpYWxpemVNb2NrQ0RNKCkgbWV0aG9kLgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NE
TS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydHNLZXlTeXN0
ZW0pOiBPbmx5IHN1cHBvcnRzIHRoZSAnY29tLndlYmNvcmUubW9jaycga2V5IHN5c3RlbS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnN1cHBvcnRzTUlNRVR5cGUpOiBPbmx5IHN1cHBvcnRz
IHRoZSAndmlkZW8vbW9jaycgbWltZSB0eXBlLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6
Z2VuZXJhdGVTZXNzaW9uSWQpOiBSZXR1cm4gYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgbnVt
YmVyLgorICAgICAgICAoV2ViQ29yZTo6aW5pdERhdGFQcmVmaXgpOiBTdGF0aWMgbWV0aG9kIHdo
aWNoIHJldHVybnMgYSBVaW50OEFycmF5IGNvbnRhaW5pbmcgJ21vY2snLgorICAgICAgICAoV2Vi
Q29yZTo6a2V5UHJlZml4KTogU3RhdGljIG1ldGhvZCB3aGljaCByZXR1cm5zIGEgVWludDhBcnJh
eSBjb250YWluaW5nICdrZXknLgorICAgICAgICAoV2ViQ29yZTo6a2V5UmVxdWVzdCk6IFN0YXRp
YyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIFVpbnQ4QXJyYXkgY29udGFpbmluZyAncmVxdWVzdCcu
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpnZW5lcmF0ZUtleVJlcXVlc3QpOiBJZ25vcmVz
IHRoZSBwYXJhbWV0ZXJzIGFuZCByZXR1cm5zIGEga2V5UmVxdWVzdCgpIGFycmF5LgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja0NETTo6Y2xlYXJLZXlzRnJvbVNlc3Npb25JZCk6IE5vLW9wLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NETTo6YWRkS2V5Rm9yU2Vzc2lvbklkKTogQ2hlY2tzIHRoYXQg
dGhlIGtleSBzdGFydHMgd2l0aCB0aGUga2V5UHJlZml4KCkgYXJyYXkuCisgICAgICAgICogdGVz
dGluZy9Nb2NrQ0RNLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06On5Nb2NrQ0RNKTogU2ltcGxlIGRlc3RydWN0
b3IuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpNb2NrQ0RNKTogU2ltcGxlIGNvbnN0cnVj
dG9yLgorCisgICAgICAgIEFkZCB0aGUgbmV3IGNsYXNzZXMgdG8gdGhlIGJ1aWx0IHN5c3RlbToK
KyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBNaXNj
ZWxhbmVvdXMgY2hhbmdlczoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5pbjogQWRkIHRoZSB0
d28gbmV3IGV2ZW50IHR5cGVzLCBNZWRpYUtleU1lc3NhZ2VFdmVudCBhbmQgTWVkaWFLZXlOZWVk
ZWRFdmVudC4KKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOiBBZGQgdGhlIG5l
dyBFdmVudFRhcmdldCwgTWVkaWFLZXlTZXNzaW9uLgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmlkbDogQWRkIGNvbnN0cnVjdG9ycyBmb3IgdGhlIG5ldyBjbGFzc2VzIHRvIHRoZSB3aW5kb3cg
b2JqZWN0LgorCiAyMDEyLTA5LTE5ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViQ29yZSBwYXJ0IG9mIGFkZGluZyBhIHNldHRpbmcgYW5kIEFQSSBmb3IgZGlz
YWJsaW5nIHNjcmVlbiBmb250IHN1YnN0aXR1dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmlu
ZGV4IGVjMzVjZjY3M2Y0YTBmZDIxMjdjZjU1NWNmNGVjNzAyNzhjM2Q2NjcuLmY4MGMwMmM5ZDQ0
NjBjMzc0OTA4NmNjNDgyN2ZmM2IwMDBkMjM0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcK
QEAgLTU3LDYgKzU3LDExIEBAIEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQgPSBFTkFCTEVfREVUQUlM
U19FTEVNRU5UOwogRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTiA9IDsKIEVOQUJMRV9ESUFMT0df
RUxFTUVOVCA9IDsKIEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEID0gOworRU5BQkxFX0VOQ1JZUFRF
RF9NRURJQV9WMiA9ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl8kKFJFQUxfUExBVEZPUk1f
TkFNRSkpOworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3ggPSAkKEVOQUJMRV9FTkNS
WVBURURfTUVESUFfbWFjb3N4XyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKK0VO
QUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEwNzAgPSA7CitFTkFCTEVfRU5DUllQVEVE
X01FRElBX1YyX21hY29zeF8xMDgwID0gOworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNv
c3hfMTA5MCA9IEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI7CiBFTkFCTEVfRklMRV9TWVNURU0g
PSA7CiBFTkFCTEVfRklMVEVSUyA9ICQoRU5BQkxFX0ZJTFRFUlNfJChSRUFMX1BMQVRGT1JNX05B
TUUpKTsKIEVOQUJMRV9GSUxURVJTX21hY29zeCA9IEVOQUJMRV9GSUxURVJTOwpAQCAtMTQwLDQg
KzE0NSw0IEBAIEVOQUJMRV9XSURHRVRfUkVHSU9OX21hY29zeCA9IEVOQUJMRV9XSURHRVRfUkVH
SU9OOwogRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VSUzsKIEVOQUJMRV9YU0xUID0gRU5B
QkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChF
TkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVO
QUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQp
ICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0VYQ0xVU0lP
TlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSElFUkFSQ0hJRVMpICQoRU5B
QkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04p
ICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0hBREVSUykgJChFTkFCTEVfQ1NT
X0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BPU0lUSU9OKSAkKEVOQUJMRV9DU1Nf
VkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFRfREVDT1JBVElPTikgJChFTkFCTEVfQ1VTVE9N
X1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFU
QUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVU
QUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJQUxP
R19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9GSUxFX1NZU1RF
TSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dB
TUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpICQo
RU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1FX1NFQU1MRVNTKSAkKEVOQUJMRV9J
TkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9E
QVRFVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfV0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTEVHQUNZX0NT
U19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJM
RV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJM
RV9MSU5LX1BSRVJFTkRFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0Up
ICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5B
QkxFX01IVE1MKSAkKEVOQUJMRV9NSUNST0RBVEEpICQoRU5BQkxFX01VVEFUSU9OX09CU0VSVkVS
UykgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05PVElGSUNBVElP
TlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BST0dSRVNTX0VMRU1F
TlQpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChF
TkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFET1dfRE9NKSAkKEVOQUJMRV9TSEFS
RURfV09SS0VSUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9TVFlMRV9TQ09QRUQp
ICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9T
VkdfRk9OVFMpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVEVYVF9OT1RJRklD
QVRJT05TX09OTFkpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVU5ET19N
QU5BR0VSKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1dF
QkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9X
RUJfVElNSU5HKSAkKEVOQUJMRV9XSURHRVRfUkVHSU9OKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVO
QUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChF
TkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVO
QUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQp
ICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0VYQ0xVU0lP
TlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSElFUkFSQ0hJRVMpICQoRU5B
QkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04p
ICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0hBREVSUykgJChFTkFCTEVfQ1NT
X0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BPU0lUSU9OKSAkKEVOQUJMRV9DU1Nf
VkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFRfREVDT1JBVElPTikgJChFTkFCTEVfQ1VTVE9N
X1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFU
QUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVU
QUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJQUxP
R19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9FTkNSWVBURURf
TUVESUFfVjIpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJM
RV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04p
ICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJM
RV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lO
UFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQ
RV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVU
X1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBU
X0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVf
TEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQo
RU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJTktfUFJFUkVOREVSKSAkKEVOQUJMRV9N
QVRITUwpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykg
JChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01JQ1JPREFU
QSkgJChFTkFCTEVfTVVUQVRJT05fT0JTRVJWRVJTKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVO
VF9VVElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZ
X0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxF
X1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5B
QkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUUxfREFU
QUJBU0UpICQoRU5BQkxFX1NUWUxFX1NDT1BFRCkgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdf
RE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVYVF9BVVRP
U0laSU5HKSAkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWSkgJChFTkFCTEVfVE9VQ0hf
SUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VTkRPX01BTkFHRVIpICQoRU5BQkxFX1ZJREVPKSAkKEVO
QUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChF
TkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dJREdFVF9S
RUdJT04pICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hTTFQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXgg
MGJlNGJiMDdkYzI4ZmM5MTE2MmVkMzA2NWFjYjE1MjA5ZjIxZDNlMi4uZGQ1MWVkNzlhY2MzZDZi
MGJjYjk2NjJmNzQzYzllYzhlYTQ2ODVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMTQ4LDYgKzExNDgs
MTAgQEAKICNkZWZpbmUgV1RGX1VTRV9DT1JFTUVESUEgMQogI2VuZGlmCiAKKyNpZiBQTEFURk9S
TShNQUMpICYmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA5MAorI2RlZmluZSBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyIDEKKyNlbmRpZgor
CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkgfHwg
KFBMQVRGT1JNKFdJTikgJiYgIU9TKFdJTkNFKSAmJiAhUExBVEZPUk0oV0lOX0NBSVJPKSkgfHwg
UExBVEZPUk0oQkxBQ0tCRVJSWSkKICNkZWZpbmUgV1RGX1VTRV9SRVFVRVNUX0FOSU1BVElPTl9G
UkFNRV9USU1FUiAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggNDQzOTNiOTBlMWU3NGVkNjU5YTFm
NjY0YzQ3M2NmN2JlN2Y0OTYzMy4uMzE1NGIwZDZmY2JhMTBhZmM4MzdiYzNiMGY3NTVlNGRjYmNh
ZTJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKQEAgLTU4LDYgKzU4LDExIEBAIEVOQUJMRV9ERVRBSUxTX0VMRU1F
TlQgPSBFTkFCTEVfREVUQUlMU19FTEVNRU5UOwogRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTiA9
IDsKIEVOQUJMRV9ESUFMT0dfRUxFTUVOVCA9IDsKIEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEID0g
OworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiA9ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9W
Ml8kKFJFQUxfUExBVEZPUk1fTkFNRSkpOworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNv
c3ggPSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XyQoVEFSR0VUX01BQ19PU19Y
X1ZFUlNJT05fTUFKT1IpKTsKK0VOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEwNzAg
PSA7CitFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeF8xMDgwID0gOworRU5BQkxFX0VO
Q1JZUFRFRF9NRURJQV9WMl9tYWNvc3hfMTA5MCA9IEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI7
CiBFTkFCTEVfRklMRV9TWVNURU0gPSA7CiBFTkFCTEVfRklMVEVSUyA9ICQoRU5BQkxFX0ZJTFRF
UlNfJChSRUFMX1BMQVRGT1JNX05BTUUpKTsKIEVOQUJMRV9GSUxURVJTX21hY29zeCA9IEVOQUJM
RV9GSUxURVJTOwpAQCAtMTQxLDQgKzE0Niw0IEBAIEVOQUJMRV9XSURHRVRfUkVHSU9OX21hY29z
eCA9IEVOQUJMRV9XSURHRVRfUkVHSU9OOwogRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VS
UzsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5B
QkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJM
RV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykg
JChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9D
U1NfSElFUkFSQ0hJRVMpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVf
Q1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1Nf
U0hBREVSUykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BP
U0lUSU9OKSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFRfREVDT1JB
VElPTikgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRf
U1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZF
Ul9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0RJQUxPR19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FE
KSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRlVMTFND
UkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9ISUdIX0RQSV9DQU5WQVMpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1F
X1NFQU1MRVNTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVF
Q0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkg
JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElN
RUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJ
TUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dF
UikgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9O
T1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9M
SU5LX1BSRUZFVENIKSAkKEVOQUJMRV9MSU5LX1BSRVJFTkRFUikgJChFTkFCTEVfTUFUSE1MKSAk
KEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxF
X01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NSUNST0RBVEEpICQoRU5B
QkxFX01VVEFUSU9OX09CU0VSVkVSUykgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMp
ICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQo
RU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNU
X0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFE
T1dfRE9NKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAk
KEVOQUJMRV9TVFlMRV9TQ09QRUQpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0RPTV9PQkpD
X0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykg
JChFTkFCTEVfVEVYVF9OT1RJRklDQVRJT05TX09OTFkpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9B
RElORykgJChFTkFCTEVfVU5ET19NQU5BR0VSKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklE
RU9fVFJBQ0spICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dF
Ql9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XSURHRVRfUkVHSU9OKSAk
KEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5B
QkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJM
RV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykg
JChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9D
U1NfSElFUkFSQ0hJRVMpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVf
Q1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1Nf
U0hBREVSUykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BP
U0lUSU9OKSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFRfREVDT1JB
VElPTikgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRf
U1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZF
Ul9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0RJQUxPR19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FE
KSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVO
QUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkg
JChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVf
SUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xP
UikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1F
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVf
TU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVL
KSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRP
Ul9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FD
WV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJTktf
UFJFUkVOREVSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFC
TEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhU
TUwpICQoRU5BQkxFX01JQ1JPREFUQSkgJChFTkFCTEVfTVVUQVRJT05fT0JTRVJWRVJTKSAkKEVO
QUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChF
TkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChF
TkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9T
Q1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JL
RVJTKSAkKEVOQUJMRV9TUUxfREFUQUJBU0UpICQoRU5BQkxFX1NUWUxFX1NDT1BFRCkgJChFTkFC
TEVfU1ZHKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05U
UykgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNf
T05MWSkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VTkRPX01BTkFHRVIp
ICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfV0VCR0wpICQo
RU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1J
TkcpICQoRU5BQkxFX1dJREdFVF9SRUdJT04pICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hT
TFQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZjc3NTU1MjM5MWZmODQxNGNi
ZTQ1ZmY4MGM4MGE4ZGNhZjlhZDZlYS4uYjFhNWI4ZjVjMWQwNjkxNzM4NDc3OTRiOGZkMmIyYTQ2
NTk4NzBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yOCw2ICsyOCw3IEBA
CiAKIFZQQVRIID0gXAogICAgICQoV2ViQ29yZSkgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0gXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2lu
ZGV4ZWRkYiBcCkBAIC02MSw2ICs2MiwxMCBAQCBWUEFUSCA9IFwKICMKIAogQklORElOR19JRExT
ID0gXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3Nh
Z2VFdmVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleU5lZWRlZEV2ZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3Rl
bS9ET01GaWxlU3lzdGVtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RE9NRmlsZVN5c3RlbVN5bmMuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3Rl
bS9ET01XaW5kb3dGaWxlU3lzdGVtLmlkbCBcCkBAIC0zNTcsNiArMzYyLDcgQEAgQklORElOR19J
RExTID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9JbWFnZURhdGEuaWRsIFwKICAgICAkKFdlYkNv
cmUpL2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL01lZGlh
RXJyb3IuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvTWVkaWFLZXlFcnJvci5pZGwgXAogICAg
ICQoV2ViQ29yZSkvaHRtbC9NaWNyb0RhdGFJdGVtVmFsdWUuaWRsIFwKICAgICAkKFdlYkNvcmUp
L2h0bWwvUmFkaW9Ob2RlTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9UZXh0TWV0cmlj
cy5pZGwgXApAQCAtODQ4LDYgKzg1NCwxMCBAQCBpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX0RF
VEFJTFNfRUxFTUVOVCwkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfREVUQUlMU19FTAogICAg
IEhUTUxfRkxBR1MgOj0gJChIVE1MX0ZMQUdTKSBFTkFCTEVfREVUQUlMU19FTEVNRU5UPTEKIGVu
ZGlmCiAKK2lmZXEgKCQoZmluZHN0cmluZyBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyLCQoRkVB
VFVSRV9ERUZJTkVTKSksIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpCisJSFRNTF9GTEFHUyA6
PSAkKEhUTUxfRkxBR1MpIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI9MQorZW5kaWYKKwogaWZl
cSAoJChmaW5kc3RyaW5nIEVOQUJMRV9NRVRFUl9FTEVNRU5ULCQoRkVBVFVSRV9ERUZJTkVTKSks
IEVOQUJMRV9NRVRFUl9FTEVNRU5UKQogICAgIEhUTUxfRkxBR1MgOj0gJChIVE1MX0ZMQUdTKSBF
TkFCTEVfTUVURVJfRUxFTUVOVD0xCiBlbmRpZgpAQCAtOTY1LDYgKzk3NSw3IEBAIHByZXByb2Nl
c3NfaWRsc19zY3JpcHQgPSBwZXJsICQoYWRkcHJlZml4IC1JICQoV2ViQ29yZSkvLCAkKHNvcnQg
JChkaXIgJCgxKSkpKSAkCiAKIElETF9JTkNMVURFUyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvYmF0dGVyeSBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2dh
bWVwYWQgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQwYzYy
NWNjZDQ0ODFhMTk1OWQyY2UyZWQ5NmU5NzExOTdkZTNkOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtMCwwICsxLDEz
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDRE0uaCIK
KworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlICJDRE1Qcml2YXRl
LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlFcnJvci5oIgorI2luY2x1ZGUgIk1lZGlhS2V5cy5oIgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0cnVjdCBDRE1GYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDRE1GYWN0b3J5
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgQ0RNRmFjdG9yeShDcmVh
dGVDRE0gY29uc3RydWN0b3IsIENETVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVt
KQorICAgICAgICA6IGNvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKQorICAgICAgICAsIHN1cHBvcnRz
S2V5U3lzdGVtKHN1cHBvcnRzS2V5U3lzdGVtKQorICAgIHsKKyAgICB9CisKKyAgICBDcmVhdGVD
RE0gY29uc3RydWN0b3I7CisgICAgQ0RNU3VwcG9ydHNLZXlTeXN0ZW0gc3VwcG9ydHNLZXlTeXN0
ZW07Cit9OworCitzdGF0aWMgVmVjdG9yPENETUZhY3RvcnkqPiYgaW5zdGFsbGVkQ0RNRmFjdG9y
aWVzKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxDRE1GYWN0b3J5Kj4sIGNk
bXMsICgpKTsKKyAgICBzdGF0aWMgYm9vbCBxdWVyaWVkQ0RNcyA9IGZhbHNlOworICAgIGlmICgh
cXVlcmllZENETXMpIHsKKyAgICAgICAgcXVlcmllZENETXMgPSB0cnVlOworCisgICAgICAgIC8v
IFRPRE86IGluaXRpYWxpemUgc3BlY2lmaWMgVUEgQ0RNcy4KKyAgICB9CisKKyAgICByZXR1cm4g
Y2RtczsKK30KKwordm9pZCBDRE06OnJlZ2lzdGVyQ0RNRmFjdG9yeShDcmVhdGVDRE0gY29uc3Ry
dWN0b3IsIENETVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtKQoreworICAgIGlu
c3RhbGxlZENETUZhY3RvcmllcygpLmFwcGVuZChuZXcgQ0RNRmFjdG9yeShjb25zdHJ1Y3Rvciwg
c3VwcG9ydHNLZXlTeXN0ZW0pKTsKK30KKworYm9vbCBDRE06OnN1cHBvcnRzS2V5U3lzdGVtKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAgIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIGNkbUZh
Y3RvcmllcyA9IGluc3RhbGxlZENETUZhY3RvcmllcygpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY2RtRmFjdG9yaWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChjZG1GYWN0b3Jp
ZXNbaV0tPnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgQ0RNRmFjdG9yeSog
Q0RNRmFjdG9yeUZvcktleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKK3sKKyAgICBW
ZWN0b3I8Q0RNRmFjdG9yeSo+JiBjZG1GYWN0b3JpZXMgPSBpbnN0YWxsZWRDRE1GYWN0b3JpZXMo
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNkbUZhY3Rvcmllcy5zaXplKCk7ICsraSkg
eworICAgICAgICBpZiAoY2RtRmFjdG9yaWVzW2ldLT5zdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0
ZW0pKQorICAgICAgICAgICAgcmV0dXJuIGNkbUZhY3Rvcmllc1tpXTsKKyAgICB9CisgICAgcmV0
dXJuIDA7Cit9CisKK1Bhc3NPd25QdHI8Q0RNPiBDRE06OmNyZWF0ZShjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSkKK3sKKyAgICBpZiAoIXN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDRE0oa2V5U3lz
dGVtKSk7Cit9CisKK0NETTo6Q0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQorICAgIDogbV9r
ZXlTeXN0ZW0oa2V5U3lzdGVtKQoreworICAgIG1fcHJpdmF0ZSA9IENETUZhY3RvcnlGb3JLZXlT
eXN0ZW0oa2V5U3lzdGVtKS0+Y29uc3RydWN0b3IodGhpcyk7Cit9CisKK0NETTo6fkNETSgpCit7
Cit9CisKK2Jvb2wgQ0RNOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNNSU1FVHlwZShtaW1lVHlwZSk7Cit9
CisKK1N0cmluZyBDRE06OmdlbmVyYXRlU2Vzc2lvbklkKCkKK3sKKyAgICByZXR1cm4gbV9wcml2
YXRlLT5nZW5lcmF0ZVNlc3Npb25JZCgpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IENE
TTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkq
IGluaXREYXRhLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgU3RyaW5nJiBkZXN0aW5hdGlvblVS
TCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkK
K3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5nZW5lcmF0ZUtleVJlcXVlc3QobWltZVR5cGUsIGlu
aXREYXRhLCBzZXNzaW9uSWQsIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUp
OworfQorCitib29sIENETTo6YWRkS2V5Rm9yU2Vzc2lvbklkKFVpbnQ4QXJyYXkqIGtleSwgY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVu
c2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpCit7Cisg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+YWRkS2V5Rm9yU2Vzc2lvbklkKGtleSwgc2Vzc2lvbklkLCBu
ZXh0TWVzc2FnZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKK30KKwordm9pZCBDRE06OmNsZWFy
S2V5c0Zyb21TZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCit7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+Y2xlYXJLZXlzRnJvbVNlc3Npb25JZChzZXNzaW9uSWQpOworfQorCit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2IzNTk2MjAzNzAxMGU0OWVh
ODU1ODY5MzBlMjZiNTM1Nzk0Y2M1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgQ0RNX2gKKyNkZWZpbmUgQ0RNX2gKKworI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUFfVjIpCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYUtleUVy
cm9yOworY2xhc3MgTWVkaWFLZXlTZXNzaW9uOworY2xhc3MgTWVkaWFLZXlzOworCitjbGFzcyBD
RE07CitjbGFzcyBDRE1Qcml2YXRlSW50ZXJmYWNlOworCit0eXBlZGVmIFBhc3NPd25QdHI8Q0RN
UHJpdmF0ZUludGVyZmFjZT4gKCpDcmVhdGVDRE0pKENETSopOwordHlwZWRlZiBib29sICgqQ0RN
U3VwcG9ydHNLZXlTeXN0ZW0pKGNvbnN0IFN0cmluZyYpOworCitjbGFzcyBDRE0geworcHVibGlj
OgorICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpOworICAg
IHN0YXRpYyBQYXNzT3duUHRyPENETT4gY3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsK
KyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckNETUZhY3RvcnkoQ3JlYXRlQ0RNLCBDRE1TdXBwb3J0
c0tleVN5c3RlbSk7CisgICAgfkNETSgpOworCisgICAgYm9vbCBzdXBwb3J0c01JTUVUeXBlKGNv
bnN0IFN0cmluZyYpOworICAgIFN0cmluZyBnZW5lcmF0ZVNlc3Npb25JZCgpOworICAgIFBhc3NS
ZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgU3RyaW5n
JiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9u
ZyYgc3lzdGVtQ29kZSk7CisgICAgdm9pZCBjbGVhcktleXNGcm9tU2Vzc2lvbklkKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKTsKKyAgICBib29sIGFkZEtleUZvclNlc3Npb25JZChVaW50OEFycmF5
KiwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3Nh
Z2UsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUp
OworCisgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2tleVN5
c3RlbTsgfQorCitwcml2YXRlOgorICAgIENETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CisK
KyAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CisgICAgT3duUHRyPENETVByaXZhdGVJbnRlcmZhY2U+
IG1fcHJpdmF0ZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUFf
VjIpCisKKyNlbmRpZiAvLyBDRE1faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjAwM2NiZGJiZmM4ZmVhZWFj
MmUyOTNmYjkxMmI1YmNlNzRmYWIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKQEAgLTAsMCArMSw1MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQ0RNUHJpdmF0ZV9oCisjZGVmaW5lIENETVByaXZhdGVfaAorCisj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENETVByaXZhdGVJbnRlcmZh
Y2UgeworcHVibGljOgorICAgIENETVByaXZhdGVJbnRlcmZhY2UoKSB7IH0KKyAgICB2aXJ0dWFs
IH5DRE1Qcml2YXRlSW50ZXJmYWNlKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNN
SU1FVHlwZShjb25zdCBTdHJpbmcmKSA9IDA7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBnZW5lcmF0
ZVNlc3Npb25JZCgpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZ2Vu
ZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXRE
YXRhLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5z
aWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkgPSAwOwor
CisgICAgdmlydHVhbCB2b2lkIGNsZWFyS2V5c0Zyb21TZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkS2V5Rm9yU2Vzc2lvbklkKFVpbnQ4
QXJyYXkqLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0
TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVt
Q29kZSkgPSAwOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9W
MikKKworI2VuZGlmIC8vIENETVByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YTljODQzYTY1MjFmOWIxYzdmMmQ5YmJiZjIwMzZjNDNlN2FjYTc5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleU1lc3NhZ2VFdmVudC5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1
ZGUgIk1lZGlhS2V5TWVzc2FnZUV2ZW50LmgiCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisj
aW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRp
YUtleU1lc3NhZ2VFdmVudEluaXQ6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCgpCit7Cit9CisK
K01lZGlhS2V5TWVzc2FnZUV2ZW50OjpNZWRpYUtleU1lc3NhZ2VFdmVudCgpCit7Cit9CisKK01l
ZGlhS2V5TWVzc2FnZUV2ZW50OjpNZWRpYUtleU1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGNvbnN0IE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCisg
ICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKKyAgICAsIG1fbWVzc2FnZShpbml0aWFsaXpl
ci5tZXNzYWdlKQorICAgICwgbV9kZXN0aW5hdGlvblVSTChpbml0aWFsaXplci5kZXN0aW5hdGlv
blVSTCkKK3sKK30KKworTWVkaWFLZXlNZXNzYWdlRXZlbnQ6On5NZWRpYUtleU1lc3NhZ2VFdmVu
dCgpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFLZXlNZXNzYWdlRXZlbnQ6Omlu
dGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNl
Rm9yTWVkaWFLZXlNZXNzYWdlRXZlbnQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5TWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNmZjAyMTkxMmU0MDAz
MGZjNDQ2YjRkMTVmNWY2MmNiOGJlNTMzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaApAQCAtMCww
ICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhS2V5TWVzc2FnZUV2ZW50X2gKKyNk
ZWZpbmUgTWVkaWFLZXlNZXNzYWdlRXZlbnRfaAorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QV9WMikKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlFcnJvci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQg
OiBwdWJsaWMgRXZlbnRJbml0IHsKKyAgICBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQoKTsKKwor
ICAgIFJlZlB0cjxVaW50OEFycmF5PiBtZXNzYWdlOworICAgIFN0cmluZyBkZXN0aW5hdGlvblVS
TDsKK307CisKK2NsYXNzIE1lZGlhS2V5TWVzc2FnZUV2ZW50IDogcHVibGljIEV2ZW50IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5NZWRpYUtleU1lc3NhZ2VFdmVudCgpOworCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFLZXlNZXNzYWdlRXZlbnQ+IGNyZWF0ZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhS2V5TWVzc2FnZUV2ZW50KTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleU1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0JiBpbml0aWFs
aXplcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFLZXlNZXNzYWdl
RXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCisgICAgVWludDhBcnJheSogbWVz
c2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZS5nZXQoKTsgfQorICAgIFN0cmluZyBkZXN0
aW5hdGlvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25VUkw7IH0KKworcHJpdmF0
ZToKKyAgICBNZWRpYUtleU1lc3NhZ2VFdmVudCgpOworICAgIE1lZGlhS2V5TWVzc2FnZUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0
JiBpbml0aWFsaXplcik7CisKKyAgICBSZWZQdHI8VWludDhBcnJheT4gbV9tZXNzYWdlOworICAg
IFN0cmluZyBtX2Rlc3RpbmF0aW9uVVJMOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
MTBmZDA1ZGI5NmMxYjM2ZTkyNjkxMDY3NDQ3ZjZlYWYxNjg3NDk0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VF
dmVudC5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGVuY3J5cHRlZG1l
ZGlhIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUVOQ1JZUFRFRF9N
RURJQV9WMiwKKyAgICAgICAgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhLAorICAg
ICAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50IAorICAgIF0gTWVkaWFLZXlNZXNzYWdlRXZl
bnQgOiBFdmVudCB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVaW50OEFycmF5IG1lc3Nh
Z2U7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3Ry
dWN0b3JdIERPTVN0cmluZyBkZXN0aW5hdGlvblVSTDsKKyAgICB9OworCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5l
ZWRlZEV2ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTA2ZjhkNTA2MzE3ZWEzZmI5YTgzNzg3OWZmODAx
YzhmOTY3YTI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmNwcApAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
X1YyKQorCisjaW5jbHVkZSAiTWVkaWFLZXlOZWVkZWRFdmVudC5oIgorCisjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworTWVkaWFLZXlOZWVkZWRFdmVudEluaXQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnRJbml0
KCkKK3sKK30KKworTWVkaWFLZXlOZWVkZWRFdmVudDo6TWVkaWFLZXlOZWVkZWRFdmVudCgpCit7
Cit9CisKK01lZGlhS2V5TmVlZGVkRXZlbnQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCYgaW5pdGlhbGl6
ZXIpCisgICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKKyAgICAsIG1faW5pdERhdGEoaW5p
dGlhbGl6ZXIuaW5pdERhdGEpCit7Cit9CisKK01lZGlhS2V5TmVlZGVkRXZlbnQ6On5NZWRpYUtl
eU5lZWRlZEV2ZW50KCkKK3sKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUtleU5lZWRl
ZEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygp
LmludGVyZmFjZUZvck1lZGlhS2V5TmVlZGVkRXZlbnQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2YWNlMzIz
M2EzZDFlZjRiZTZjN2QzMjVjZGRlYmI1ZjYyMDA5NzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaApA
QCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhS2V5TmVlZGVkRXZlbnRf
aAorI2RlZmluZSBNZWRpYUtleU5lZWRlZEV2ZW50X2gKKworI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUFfVjIpCisKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIk1lZGlhS2V5RXJyb3Iu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgTWVkaWFLZXlOZWVkZWRFdmVudElu
aXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKKyAgICBNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCgpOwor
CisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGluaXREYXRhOworfTsKKworY2xhc3MgTWVkaWFLZXlO
ZWVkZWRFdmVudCA6IHB1YmxpYyBFdmVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TWVkaWFL
ZXlOZWVkZWRFdmVudCgpOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFLZXlOZWVkZWRF
dmVudD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFL
ZXlOZWVkZWRFdmVudCk7CisgICAgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFLZXlO
ZWVkZWRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFL
ZXlOZWVkZWRFdmVudEluaXQmIGluaXRpYWxpemVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYUtleU5lZWRlZEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKSk7CisgICAg
fQorCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25z
dDsKKworICAgIFVpbnQ4QXJyYXkqIGluaXREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9pbml0RGF0
YS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIE1lZGlhS2V5TmVlZGVkRXZlbnQoKTsKKyAgICBN
ZWRpYUtleU5lZWRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFL
ZXlOZWVkZWRFdmVudEluaXQmIGluaXRpYWxpemVyKTsKKworICAgIFJlZlB0cjxVaW50OEFycmF5
PiBtX2luaXREYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleU5lZWRlZEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdmMTBiODRmNzNhMGVk
YWM4NGVmNmJkZjU5NDk4MTI3ODc3YzQwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwKQEAgLTAs
MCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGVuY3J5cHRlZG1lZGlhIHsKKworICAgIGlu
dGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMiwKKyAgICAg
ICAgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhLAorICAgICAgICBDb25zdHJ1Y3Rv
clRlbXBsYXRlPUV2ZW50IAorICAgIF0gTWVkaWFLZXlOZWVkZWRFdmVudCA6IEV2ZW50IHsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVpbnQ4QXJyYXkgaW5pdERhdGE7CisgICAgfTsKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVNlc3Npb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2MmExY2Q5OTBiZTViNGEyODYzZDRjNTNm
ZmM0ZDZmMjYzYzFiZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTAsMCArMSwyMjggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlTZXNzaW9u
LmgiCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjaW5jbHVkZSAiQ0RNLmgi
CisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgorI2lu
Y2x1ZGUgIk1lZGlhS2V5RXJyb3IuaCIKKyNpbmNsdWRlICJNZWRpYUtleU1lc3NhZ2VFdmVudC5o
IgorI2luY2x1ZGUgIk1lZGlhS2V5cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NS
ZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleVNlc3Npb246OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBNZWRpYUtleXMqIGtleXMsIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1lZGlhS2V5U2Vzc2lvbihjb250ZXh0LCBrZXlzLCBrZXlTeXN0ZW0sIHNlc3Npb25JZCkp
OworfQorCitNZWRpYUtleVNlc3Npb246Ok1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBNZWRpYUtleXMqIGtleXMsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
LCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKKyAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyKGNvbnRleHQpCisgICAgLCBtX2tleXMoa2V5cykKKyAgICAsIG1fa2V5U3lzdGVtKGtleVN5
c3RlbSkKKyAgICAsIG1fc2Vzc2lvbklkKHNlc3Npb25JZCkKKyAgICAsIG1fYXN5bmNFdmVudFF1
ZXVlKEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUodGhpcykpCisgICAgLCBtX2tleVJlcXVlc3RU
aW1lcih0aGlzLCAmTWVkaWFLZXlTZXNzaW9uOjprZXlSZXF1ZXN0VGltZXJGaXJlZCkKKyAgICAs
IG1fYWRkS2V5VGltZXIodGhpcywgJk1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGltZXJGaXJlZCkK
K3sKK30KKworTWVkaWFLZXlTZXNzaW9uOjp+TWVkaWFLZXlTZXNzaW9uKCkKK3sKKyAgICBjbG9z
ZSgpOworfQorCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6c2V0RXJyb3IoTWVkaWFLZXlFcnJvciog
ZXJyb3IpCit7CisgICAgbV9lcnJvciA9IGVycm9yOworfQorCit2b2lkIE1lZGlhS2V5U2Vzc2lv
bjo6Y2xvc2UoKQoreworICAgIGlmIChtX2tleXMpCisgICAgICAgIG1fa2V5cy0+Y2RtKCktPmNs
ZWFyS2V5c0Zyb21TZXNzaW9uSWQobV9zZXNzaW9uSWQpOworICAgIG1fYXN5bmNFdmVudFF1ZXVl
LT5jYW5jZWxBbGxFdmVudHMoKTsKK30KKwordm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRl
S2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSkK
K3sKKyAgICBtX3BlbmRpbmdLZXlSZXF1ZXN0cy5hcHBlbmQoUGVuZGluZ0tleVJlcXVlc3QobWlt
ZVR5cGUsIGluaXREYXRhKSk7CisgICAgbV9rZXlSZXF1ZXN0VGltZXIuc3RhcnRPbmVTaG90KDAp
OworfQorCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6a2V5UmVxdWVzdFRpbWVyRmlyZWQoVGltZXI8
TWVkaWFLZXlTZXNzaW9uPiopCit7CisgICAgQVNTRVJUKG1fcGVuZGluZ0tleVJlcXVlc3RzLnNp
emUoKSk7CisgICAgaWYgKCFtX2tleXMpCisgICAgICAgIHJldHVybjsKKworICAgIHdoaWxlICgh
bV9wZW5kaW5nS2V5UmVxdWVzdHMuaXNFbXB0eSgpKSB7CisgICAgICAgIFBlbmRpbmdLZXlSZXF1
ZXN0IHJlcXVlc3QgPSBtX3BlbmRpbmdLZXlSZXF1ZXN0cy50YWtlRmlyc3QoKTsKKworICAgICAg
ICAvLyBOT1RFOiBDb250aW51ZWQgZnJvbSBzdGVwIDUgaW4gTWVkaWFLZXlzOjpjcmVhdGVTZXNz
aW9uKCkuCisgICAgICAgIC8vIFRoZSB1c2VyIGFnZW50IHdpbGwgYXN5bmNocm9ub3VzbHkgZXhl
Y3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHRoZSB0YXNrOgorCisgICAgICAgIC8vIDEuIExl
dCBjZG0gYmUgdGhlIGNkbSBsb2FkZWQgaW4gdGhlIE1lZGlhS2V5cyBjb25zdHJ1Y3Rvci4KKyAg
ICAgICAgLy8gMi4gTGV0IGRlc3RpbmF0aW9uVVJMIGJlIG51bGwuCisgICAgICAgIFN0cmluZyBk
ZXN0aW5hdGlvblVSTDsKKyAgICAgICAgTWVkaWFLZXlFcnJvcjo6Q29kZSBlcnJvckNvZGUgPSAw
OworICAgICAgICB1bnNpZ25lZCBsb25nIHN5c3RlbUNvZGUgPSAwOworCisgICAgICAgIC8vIDMu
IFVzZSBjZG0gdG8gZ2VuZXJhdGUgYSBrZXkgcmVxdWVzdCBhbmQgZm9sbG93IHRoZSBzdGVwcyBm
b3IgdGhlIGZpcnN0IG1hdGNoaW5nIGNvbmRpdGlvbiBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdDoK
KworICAgICAgICBSZWZQdHI8VWludDhBcnJheT4ga2V5UmVxdWVzdCA9IG1fa2V5cy0+Y2RtKCkt
PmdlbmVyYXRlS2V5UmVxdWVzdChyZXF1ZXN0Lm1pbWVUeXBlLCByZXF1ZXN0LmluaXREYXRhLmdl
dCgpLCBtX3Nlc3Npb25JZCwgZGVzdGluYXRpb25VUkwsIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7
CisKKyAgICAgICAgLy8gT3RoZXJ3aXNlIFtpZiBhIHJlcXVlc3QgaXMgbm90IHN1Y2Nlc3NmdWxs
eSBnZW5lcmF0ZWRdOgorICAgICAgICBpZiAoIWtleVJlcXVlc3QpIHsKKyAgICAgICAgICAgIC8v
IDMuMS4gQ3JlYXRlIGEgbmV3IE1lZGlhS2V5RXJyb3Igb2JqZWN0IHdpdGggdGhlIGZvbGxvd2lu
ZyBhdHRyaWJ1dGVzOgorICAgICAgICAgICAgLy8gICAgICBjb2RlID0gdGhlIGFwcHJvcHJpYXRl
IE1lZGlhS2V5RXJyb3IgY29kZQorICAgICAgICAgICAgLy8gICAgICBzeXN0ZW1Db2RlID0gYSBL
ZXkgU3lzdGVtLXNwZWNpZmljIHZhbHVlLCBpZiBwcm92aWRlZCwgYW5kIDAgb3RoZXJ3aXNlCisg
ICAgICAgICAgICBSZWZQdHI8TWVkaWFLZXlFcnJvcj4gZXJyb3IgPSBNZWRpYUtleUVycm9yOjpj
cmVhdGUoZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKS5nZXQoKTsKKworICAgICAgICAgICAgLy8gMy4y
LiBTZXQgdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QncyBlcnJvciBhdHRyaWJ1dGUgdG8gdGhl
IGVycm9yIG9iamVjdCBjcmVhdGVkIGluIHRoZSBwcmV2aW91cyBzdGVwLgorICAgICAgICAgICAg
c2V0RXJyb3IoZXJyb3IuZ2V0KCkpOworCisgICAgICAgICAgICAvLyAzLjMuIHF1ZXVlIGEgdGFz
ayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGtleWVycm9yIGF0IHRoZSBNZWRpYUtleVNl
c3Npb24gb2JqZWN0LgorICAgICAgICAgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtleWVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSk7Cisg
ICAgICAgICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICAgICAgbV9hc3luY0V2
ZW50UXVldWUtPmVucXVldWVFdmVudChldmVudC5yZWxlYXNlKCkpOworCisgICAgICAgICAgICAv
LyAzLjQuIEFib3J0IHRoZSB0YXNrLgorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KworICAgICAgICAvLyA0LiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1l
ZCBrZXltZXNzYWdlIGF0IHRoZSBuZXcgb2JqZWN0CisgICAgICAgIC8vICAgIFRoZSBldmVudCBp
cyBvZiB0eXBlIE1lZGlhS2V5TWVzc2FnZUV2ZW50IGFuZCBoYXM6CisgICAgICAgIC8vICAgIG1l
c3NhZ2UgPSBrZXkgcmVxdWVzdAorICAgICAgICAvLyAgICBkZXN0aW5hdGlvblVSTCA9IGRlc3Rp
bmF0aW9uVVJMCisgICAgICAgIE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCBpbml0OworICAgICAg
ICBpbml0LmJ1YmJsZXMgPSBmYWxzZTsKKyAgICAgICAgaW5pdC5jYW5jZWxhYmxlID0gZmFsc2U7
CisgICAgICAgIGluaXQubWVzc2FnZSA9IGtleVJlcXVlc3Q7CisgICAgICAgIGluaXQuZGVzdGlu
YXRpb25VUkwgPSBkZXN0aW5hdGlvblVSTDsKKyAgICAgICAgUmVmUHRyPE1lZGlhS2V5TWVzc2Fn
ZUV2ZW50PiBldmVudCA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LndlYmtpdGtleW1lc3NhZ2VFdmVudCwgaW5pdCk7CisgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQo
dGhpcyk7CisgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQpOwor
ICAgIH0KK30KKwordm9pZCBNZWRpYUtleVNlc3Npb246OmFkZEtleShVaW50OEFycmF5KiBrZXks
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIEZyb20gPGh0dHA6Ly9kdmNzLnczLm9yZy9o
Zy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlh
Lmh0bWwjZG9tLWFkZGtleT46CisgICAgLy8gVGhlIGFkZEtleShrZXkpIG1ldGhvZCBtdXN0IHJ1
biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIC8vIDEuIElmIHRoZSBmaXJzdCBvciBzZWNvbmQg
YXJndW1lbnQgW3NpY10gaXMgbnVsbCBvciBhbiBlbXB0eSBhcnJheSwgdGhyb3cgYW4gSU5WQUxJ
RF9BQ0NFU1NfRVJSLgorICAgIC8vIE5PVEU6IHRoZSByZWZlcmVuY2UgdG8gYSAic2Vjb25kIGFy
Z3VtZW50IiBpcyBhIHNwZWMgYnVnLgorICAgIGlmICgha2V5IHx8ICFrZXktPmxlbmd0aCgpKSB7
CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgLy8gMi4gU2NoZWR1bGUgYSB0YXNrIHRvIGhhbmRsZSB0aGUgY2FsbCwgcHJvdmlk
aW5nIGtleS4KKyAgICBtX3BlbmRpbmdLZXlzLmFwcGVuZChrZXkpOworICAgIG1fYWRkS2V5VGlt
ZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGlt
ZXJGaXJlZChUaW1lcjxNZWRpYUtleVNlc3Npb24+KikKK3sKKyAgICBBU1NFUlQobV9wZW5kaW5n
S2V5cy5zaXplKCkpOworICAgIGlmICghbV9rZXlzKQorICAgICAgICByZXR1cm47CisKKyAgICB3
aGlsZSAoIW1fcGVuZGluZ0tleXMuaXNFbXB0eSgpKSB7CisgICAgICAgIFJlZlB0cjxVaW50OEFy
cmF5PiBwZW5kaW5nS2V5ID0gbV9wZW5kaW5nS2V5cy50YWtlRmlyc3QoKTsKKyAgICAgICAgdW5z
aWduZWQgc2hvcnQgZXJyb3JDb2RlID0gMDsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBzeXN0ZW1D
b2RlID0gMDsKKworICAgICAgICAvLyBOT1RFOiBDb250aW51ZWQgZnJvbSBzdGVwIDIuIG9mIE1l
ZGlhS2V5U2Vzc2lvbjo6YWRkS2V5KCkKKyAgICAgICAgLy8gMi4xLiBMZXQgY2RtIGJlIHRoZSBj
ZG0gbG9hZGVkIGluIHRoZSBNZWRpYUtleXMgY29uc3RydWN0b3IuCisgICAgICAgIENETSogY2Rt
ID0gbV9rZXlzLT5jZG0oKTsKKyAgICAgICAgLy8gMi4yLiBMZXQgJ2RpZCBzdG9yZSBrZXknIGJl
IGZhbHNlLgorICAgICAgICBib29sIGRpZFN0b3JlS2V5ID0gZmFsc2U7CisgICAgICAgIC8vIDIu
My4gTGV0ICduZXh0IG1lc3NhZ2UnIGJlIG51bGwuCisgICAgICAgIFJlZlB0cjxVaW50OEFycmF5
PiBuZXh0TWVzc2FnZTsKKyAgICAgICAgLy8gMi40LiBVc2UgY2RtIHRvIGhhbmRsZSBrZXkuCisg
ICAgICAgIGRpZFN0b3JlS2V5ID0gY2RtLT5hZGRLZXlGb3JTZXNzaW9uSWQocGVuZGluZ0tleS5n
ZXQoKSwgbV9zZXNzaW9uSWQsIG5leHRNZXNzYWdlLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOwor
ICAgICAgICAvLyAyLjUuIElmIGRpZCBzdG9yZSBrZXkgaXMgdHJ1ZSBhbmQgdGhlIG1lZGlhIGVs
ZW1lbnQgaXMgd2FpdGluZyBmb3IgYSBrZXksIHF1ZXVlIGEgdGFzayB0byBhdHRlbXB0IHRvIHJl
c3VtZSBwbGF5YmFjay4KKyAgICAgICAgLy8gVE9ETzogRmluZCBhbmQgcmVzdGFydCB0aGUgbWVk
aWEgZWxlbWVudAorCisgICAgICAgIC8vIDIuNi4gSWYgbmV4dCBtZXNzYWdlIGlzIG5vdCBudWxs
LCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBrZXltZXNzYWdlIGF0
IHRoZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0LgorICAgICAgICAvLyAgICAgIFRoZSBldmVudCBp
cyBvZiB0eXBlIE1lZGlhS2V5TWVzc2FnZUV2ZW50IGFuZCBoYXM6CisgICAgICAgIC8vICAgICAg
bWVzc2FnZSA9IG5leHQgbWVzc2FnZQorICAgICAgICAvLyAgICAgIGRlc3RpbmF0aW9uVVJMID0g
bnVsbAorICAgICAgICBpZiAobmV4dE1lc3NhZ2UpIHsKKyAgICAgICAgICAgIE1lZGlhS2V5TWVz
c2FnZUV2ZW50SW5pdCBpbml0OworICAgICAgICAgICAgaW5pdC5idWJibGVzID0gZmFsc2U7Cisg
ICAgICAgICAgICBpbml0LmNhbmNlbGFibGUgPSBmYWxzZTsKKyAgICAgICAgICAgIGluaXQubWVz
c2FnZSA9IG5leHRNZXNzYWdlOworICAgICAgICAgICAgUmVmUHRyPE1lZGlhS2V5TWVzc2FnZUV2
ZW50PiBldmVudCA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndl
YmtpdGtleW1lc3NhZ2VFdmVudCwgaW5pdCk7CisgICAgICAgICAgICBldmVudC0+c2V0VGFyZ2V0
KHRoaXMpOworICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChldmVu
dCk7CisgICAgICAgIH0KKworICAgICAgICAvLyAyLjcuIElmIGRpZCBzdG9yZSBrZXkgaXMgdHJ1
ZSwgcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQga2V5YWRkZWQgYXQg
dGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuCisgICAgICAgIGlmIChkaWRTdG9yZUtleSkgewor
ICAgICAgICAgICAgUmVmUHRyPEV2ZW50PiBrZXlhZGRlZEV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkud2Via2l0a2V5YWRkZWRFdmVudCwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAg
ICAgIGtleWFkZGVkRXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgICAgIG1fYXN5bmNF
dmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoa2V5YWRkZWRFdmVudCk7CisgICAgICAgIH0KKworICAg
ICAgICAvLyAyLjguIElmIGFueSBvZiB0aGUgcHJlY2VkaW5nIHN0ZXBzIGluIHRoZSB0YXNrIGZh
aWxlZAorICAgICAgICBpZiAoIWRpZFN0b3JlS2V5KSB7CisgICAgICAgICAgICAvLyAyLjguMS4g
Q3JlYXRlIGEgbmV3IE1lZGlhS2V5RXJyb3Igb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBhdHRy
aWJ1dGVzOgorICAgICAgICAgICAgLy8gICAgICAgIGNvZGUgPSB0aGUgYXBwcm9wcmlhdGUgTWVk
aWFLZXlFcnJvciBjb2RlCisgICAgICAgICAgICAvLyAgICAgICAgc3lzdGVtQ29kZSA9IGEgS2V5
IFN5c3RlbS1zcGVjaWZpYyB2YWx1ZSwgaWYgcHJvdmlkZWQsIGFuZCAwIG90aGVyd2lzZQorICAg
ICAgICAgICAgUmVmUHRyPE1lZGlhS2V5RXJyb3I+IGVycm9yID0gTWVkaWFLZXlFcnJvcjo6Y3Jl
YXRlKGVycm9yQ29kZSwgc3lzdGVtQ29kZSkuZ2V0KCk7CisKKyAgICAgICAgICAgIC8vIDIuOC4y
LiBTZXQgdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QncyBlcnJvciBhdHRyaWJ1dGUgdG8gdGhl
IGVycm9yIG9iamVjdCBjcmVhdGVkIGluIHRoZSBwcmV2aW91cyBzdGVwLgorICAgICAgICAgICAg
c2V0RXJyb3IoZXJyb3IuZ2V0KCkpOworCisgICAgICAgICAgICAvLyAyLjguMy4gcXVldWUgYSB0
YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQga2V5ZXJyb3IgYXQgdGhlIE1lZGlhS2V5
U2Vzc2lvbiBvYmplY3QuCisgICAgICAgICAgICBSZWZQdHI8RXZlbnQ+IGtleWVycm9yRXZlbnQg
PSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXllcnJvckV2ZW50LCBmYWxzZSwg
ZmFsc2UpOworICAgICAgICAgICAga2V5ZXJyb3JFdmVudC0+c2V0VGFyZ2V0KHRoaXMpOworICAg
ICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChrZXllcnJvckV2ZW50LnJl
bGVhc2UoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIDIuOC40LiBBYm9ydCB0aGUg
dGFzay4KKyAgICAgICAgICAgIC8vIE5PVEU6IG5vLW9wCisgICAgICAgIH0KKyAgICB9Cit9CisK
K2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFLZXlTZXNzaW9uOjppbnRlcmZhY2VOYW1lKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvck1lZGlhS2V5U2Vzc2lv
bjsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVkaWFLZXlTZXNzaW9uOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKK30KKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U2Vzc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlMTU2OTZjNDQ0MDA2NTE4ZTQ2ZjYyNzFjZDNmZWNmMTA0
YzdkZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBNZWRpYUtleVNlc3Npb25faAorI2RlZmluZSBNZWRpYUtleVNlc3Npb25faAorCisj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIkNvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHZW5lcmljRXZlbnRRdWV1ZTsK
K2NsYXNzIE1lZGlhS2V5RXJyb3I7CitjbGFzcyBNZWRpYUtleXM7CisKK2NsYXNzIE1lZGlhS2V5
U2Vzc2lvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5U2Vzc2lvbj4sIHB1YmxpYyBFdmVu
dFRhcmdldCwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleVNlc3Npb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgTWVkaWFLZXlzKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKTsKKyAgICB+TWVkaWFLZXlTZXNzaW9uKCk7CisKKyAgICBjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9CisgICAgY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQorCisg
ICAgdm9pZCBzZXRFcnJvcihNZWRpYUtleUVycm9yKik7CisgICAgTWVkaWFLZXlFcnJvciogZXJy
b3IoKSB7IHJldHVybiBtX2Vycm9yLmdldCgpOyB9CisKKyAgICB2b2lkIHNldEtleXMoTWVkaWFL
ZXlzKiBrZXlzKSB7IG1fa2V5cyA9IGtleXM7IH0KKyAgICBNZWRpYUtleXMqIGtleXMoKSBjb25z
dCB7IHJldHVybiBtX2tleXM7IH0KKworICAgIHZvaWQgZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhKTsKKyAgICB2b2lkIGFkZEtl
eShVaW50OEFycmF5KiBrZXksIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGNsb3NlKCk7CisK
KyAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhS2V5U2Vzc2lvbj46OnJlZjsKKyAgICB1c2luZyBS
ZWZDb3VudGVkPE1lZGlhS2V5U2Vzc2lvbj46OmRlcmVmOworCisgICAgdm9pZCBlbnF1ZXVlRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4pOworCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUih3ZWJraXRrZXlhZGRlZCk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
Uih3ZWJraXRrZXllcnJvcik7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3
ZWJraXRrZXltZXNzYWdlKTsKKworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRl
cmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREU7CisKK3Byb3Rl
Y3RlZDoKKyAgICBNZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlh
S2V5cyosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7
CisgICAgdm9pZCBrZXlSZXF1ZXN0VGltZXJGaXJlZChUaW1lcjxNZWRpYUtleVNlc3Npb24+Kik7
CisgICAgdm9pZCBhZGRLZXlUaW1lckZpcmVkKFRpbWVyPE1lZGlhS2V5U2Vzc2lvbj4qKTsKKwor
ICAgIE1lZGlhS2V5cyogbV9rZXlzOworICAgIFN0cmluZyBtX2tleVN5c3RlbTsKKyAgICBTdHJp
bmcgbV9zZXNzaW9uSWQ7CisgICAgUmVmUHRyPE1lZGlhS2V5RXJyb3I+IG1fZXJyb3I7CisgICAg
T3duUHRyPEdlbmVyaWNFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKKworICAgIHN0cnVj
dCBQZW5kaW5nS2V5UmVxdWVzdCB7CisgICAgICAgIFBlbmRpbmdLZXlSZXF1ZXN0KGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhKSA6IG1pbWVUeXBlKG1pbWVUeXBl
KSwgaW5pdERhdGEoaW5pdERhdGEpIHsgfQorICAgICAgICBTdHJpbmcgbWltZVR5cGU7CisgICAg
ICAgIFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YTsKKyAgICB9OworICAgIERlcXVlPFBlbmRp
bmdLZXlSZXF1ZXN0PiBtX3BlbmRpbmdLZXlSZXF1ZXN0czsKKyAgICBUaW1lcjxNZWRpYUtleVNl
c3Npb24+IG1fa2V5UmVxdWVzdFRpbWVyOworCisgICAgRGVxdWU8UmVmUHRyPFVpbnQ4QXJyYXk+
ID4gbV9wZW5kaW5nS2V5czsKKyAgICBUaW1lcjxNZWRpYUtleVNlc3Npb24+IG1fYWRkS2V5VGlt
ZXI7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJ
REUgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJ
REUgeyBkZXJlZigpOyB9CisKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJn
ZXREYXRhKCkgT1ZFUlJJREUgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisgICAgdmly
dHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFIHsg
cmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorCisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZl
bnRUYXJnZXREYXRhOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QV9WMikKKworI2VuZGlmIC8vIE1lZGlhS2V5U2Vzc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTBjY2I3YTc0MzhmYjcwM2Q5NGJjYTQ4MmFhMzAzZDBlMGI2MTkyZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmlkbApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICAgICAqLworCittb2R1bGUgZW5j
cnlwdGVkbWVkaWEgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9RU5D
UllQVEVEX01FRElBX1YyLAorICAgICAgICBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVk
aWEsCisgICAgICAgIEV2ZW50VGFyZ2V0LAorICAgIF0gTWVkaWFLZXlTZXNzaW9uIHsKKyAgICAg
ICAgLy8gZXJyb3Igc3RhdGUKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhS2V5RXJy
b3IgZXJyb3I7CisKKyAgICAgICAgLy8gc2Vzc2lvbiBwcm9wZXJ0aWVzCisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2V5U3lzdGVtOworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHNlc3Npb25JZDsKKworICAgICAgICAvLyBzZXNzaW9uIG9wZXJhdGlv
bnMKKyAgICAgICAgdm9pZCBhZGRLZXkoaW4gVWludDhBcnJheSBrZXkpCisgICAgICAgICAgICBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBjbG9zZSgpOworICAgICAgICAKKyAg
ICAgICAgLy8gRXZlbnRMaXN0ZW5lcnMKKyAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1
bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXlhZGRlZDsKKyAg
ICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50
TGlzdGVuZXIgb253ZWJraXRrZXllcnJvcjsKKyAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRB
dFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXltZXNzYWdl
OworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgICAgICB2b2lkIGFkZEV2
ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIHZvaWQg
cmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsK
KyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKKyAgICAgICAgICAg
IHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDEz
ODZkMmFhMTUxZmIxNTAwNGNiYjhmYzIzZWUwMGZiZDFmMjgwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC0w
LDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ik1lZGlhS2V5cy5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1
ZGUgIkNETS5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJNZWRpYUtleU1l
c3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIk1lZGlhS2V5U2Vzc2lvbi5oIgorI2luY2x1ZGUgIlVV
SUQuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1Bhc3NSZWZQdHI8TWVkaWFLZXlzPiBNZWRpYUtleXM6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8gRnJvbSA8aHR0cDovL2R2Y3Mu
dzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0
ZWQtbWVkaWEuaHRtbCNkb20tbWVkaWEta2V5cy1jb25zdHJ1Y3Rvcj46CisgICAgLy8gVGhlIE1l
ZGlhS2V5cyhrZXlTeXN0ZW0pIGNvbnN0cnVjdG9yIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3Rl
cHM6CisKKyAgICAvLyAxLiBJZiBrZXlTeXN0ZW0gaXMgbnVsbCBvciBhbiBlbXB0eSBzdHJpbmcs
IHRocm93IGFuIElOVkFMSURfQUNDRVNTX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0
ZXBzLgorICAgIGlmIChrZXlTeXN0ZW0uaXNOdWxsKCkgfHwga2V5U3lzdGVtLmlzRW1wdHkoKSkg
eworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCisgICAgLy8gMi4gSWYga2V5U3lzdGVtIGlzIG5vdCBvbmUgb2YgdGhlIHVzZXIgYWdl
bnQncyBzdXBwb3J0ZWQgS2V5IFN5c3RlbXMsIHRocm93IGEgTk9UX1NVUFBPUlRFRF9FUlIgYW5k
IGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICghQ0RNOjpzdXBwb3J0c0tleVN5c3RlbShrZXlT
eXN0ZW0pKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKworICAgIC8vIDMuIExldCBjZG0gYmUgdGhlIGNvbnRlbnQgZGVjcnlwdGlv
biBtb2R1bGUgY29ycmVzcG9uZGluZyB0byBrZXlTeXN0ZW0uCisgICAgLy8gNC4gTG9hZCBjZG0g
aWYgbmVjZXNzYXJ5LgorICAgIE93blB0cjxDRE0+IGNkbSA9IENETTo6Y3JlYXRlKGtleVN5c3Rl
bSk7CisKKyAgICAvLyA1LiBDcmVhdGUgYSBuZXcgTWVkaWFLZXlzIG9iamVjdC4KKyAgICAvLyA1
LjEgTGV0IHRoZSBrZXlTeXN0ZW0gYXR0cmlidXRlIGJlIGtleVN5c3RlbS4KKyAgICAvLyA2LiBS
ZXR1cm4gdGhlIG5ldyBvYmplY3QgdG8gdGhlIGNhbGxlci4KKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1lZGlhS2V5cyhrZXlTeXN0ZW0sIGNkbS5yZWxlYXNlKCkpKTsKK30KKworTWVkaWFLZXlz
OjpNZWRpYUtleXMoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIFBhc3NPd25QdHI8Q0RNPiBjZG0p
CisgICAgOiBtX2tleVN5c3RlbShrZXlTeXN0ZW0pCisgICAgLCBtX2NkbShjZG0pCit7Cit9CisK
K01lZGlhS2V5czo6fk1lZGlhS2V5cygpCit7CisgICAgLy8gRnJvbSA8aHR0cDovL2R2Y3MudzMu
b3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQt
bWVkaWEuaHRtbCNkb20tbWVkaWEta2V5cy1jb25zdHJ1Y3Rvcj46CisgICAgLy8gV2hlbiBkZXN0
cm95aW5nIGEgTWVkaWFLZXlzIG9iamVjdCwgZm9sbG93IHRoZSBzdGVwcyBpbiBjbG9zZSgpLgor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zZXNzaW9ucy5zaXplKCk7ICsraSkgeworICAg
ICAgICBtX3Nlc3Npb25zW2ldLT5jbG9zZSgpOworICAgICAgICBtX3Nlc3Npb25zW2ldLT5zZXRL
ZXlzKDApOworICAgIH0KK30KKworUGFzc1JlZlB0cjxNZWRpYUtleVNlc3Npb24+IE1lZGlhS2V5
czo6Y3JlYXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICAvLyBGcm9tIDxodHRwOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS90
aXAvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS5odG1sI2RvbS1jcmVhdGVzZXNzaW9u
PjoKKyAgICAvLyBUaGUgY3JlYXRlU2Vzc2lvbih0eXBlLCBpbml0RGF0YSkgbWV0aG9kIG11c3Qg
cnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgLy8gTm90ZTogVGhlIGNvbnRlbnRzIG9mIGlu
aXREYXRhIGFyZSBjb250YWluZXItc3BlY2lmaWMgSW5pdGlhbGl6YXRpb24gRGF0YS4KKworICAg
IC8vIDEuIElmIHR5cGUgaXMgbnVsbCBvciBhbiBlbXB0eSBzdHJpbmcgYW5kIGluaXREYXRhIGlz
IG5vdCBudWxsIG9yIGFuIGVtcHR5IHN0cmluZywgdGhyb3cgYW4KKyAgICAvLyBJTlZBTElEX0FD
Q0VTU19FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoKHR5cGUu
aXNOdWxsKCkgfHwgdHlwZS5pc0VtcHR5KCkpICYmICghaW5pdERhdGEgfHwgaW5pdERhdGEtPmxl
bmd0aCgpKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCisgICAgLy8gMi4gSWYgdHlwZSBjb250YWlucyBhIE1JTUUgdHlwZSB0
aGF0IGlzIG5vdCBzdXBwb3J0ZWQgb3IgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUga2V5U3lzdGVt
LCB0aHJvdworICAgIC8vIGEgTk9UX1NVUFBPUlRFRF9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0
aGVzZSBzdGVwcy4KKyAgICBpZiAoIXR5cGUuaXNOdWxsKCkgJiYgIXR5cGUuaXNFbXB0eSgpICYm
ICFtX2NkbS0+c3VwcG9ydHNNSU1FVHlwZSh0eXBlKSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQ
T1JURURfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyAzLiBDcmVhdGUg
YSBuZXcgTWVkaWFLZXlTZXNzaW9uIG9iamVjdC4KKyAgICAvLyAzLjEgTGV0IHRoZSBrZXlTeXN0
ZW0gYXR0cmlidXRlIGJlIGtleVN5c3RlbS4KKyAgICAvLyAzLjIgTGV0IHRoZSBzZXNzaW9uSWQg
YXR0cmlidXRlIGJlIGEgdW5pcXVlIFNlc3Npb24gSUQgc3RyaW5nLiBJdCBtYXkgYmUgZ2VuZXJh
dGVkIGJ5IGNkbS4KKyAgICBSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBzZXNzaW9uID0gTWVkaWFL
ZXlTZXNzaW9uOjpjcmVhdGUoY29udGV4dCwgdGhpcywga2V5U3lzdGVtKCksIG1fY2RtLT5nZW5l
cmF0ZVNlc3Npb25JZCgpKTsKKworICAgIC8vIDQuIEFkZCB0aGUgbmV3IG9iamVjdCB0byBhbiBp
bnRlcm5hbCBsaXN0IG9mIHNlc3Npb24gb2JqZWN0cy4KKyAgICBtX3Nlc3Npb25zLmFwcGVuZChz
ZXNzaW9uKTsKKworICAgIC8vIDUuIFNjaGVkdWxlIGEgdGFzayB0byBnZW5lcmF0ZSBhIGtleSBy
ZXF1ZXN0LCBwcm92aWRpbmcgdHlwZSwgaW5pdERhdGEsIGFuZCB0aGUgbmV3IG9iamVjdC4KKyAg
ICBzZXNzaW9uLT5nZW5lcmF0ZUtleVJlcXVlc3QodHlwZSwgaW5pdERhdGEpOworCisgICAgLy8g
Ni4gUmV0dXJuIHRoZSBuZXcgb2JqZWN0IHRvIHRoZSBjYWxsZXIuCisgICAgcmV0dXJuIHNlc3Np
b247Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGFkYjc1ZjYxZTNjNmIyYWRhZDc1
MGJjMzRkNjgyZmM5ZWUwN2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaApAQCAtMCwwICsxLDY4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBNZWRpYUtleXNfaAorI2RlZmluZSBNZWRpYUtleXNfaAorCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0RN
OworY2xhc3MgTWVkaWFLZXlTZXNzaW9uOworCitjbGFzcyBNZWRpYUtleXMgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYUtleXM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUtleXM+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIH5NZWRpYUtleXMoKTsKKworICAgIFBhc3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBjcmVh
dGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBVaW50OEFycmF5KiBpbml0RGF0YSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2tleVN5c3RlbTsgfQorICAgIENETSog
Y2RtKCkgeyByZXR1cm4gbV9jZG0uZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIE1lZGlhS2V5
cyhjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgUGFzc093blB0cjxDRE0+KTsKKworICAgIFZlY3Rv
cjxSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiA+IG1fc2Vzc2lvbnM7CisKKyAgICBTdHJpbmcgbV9r
ZXlTeXN0ZW07CisgICAgT3duUHRyPENETT4gbV9jZG07Cit9OworCit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjZW5kaWYgLy8gTWVkaWFLZXlzX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNjQzOTEyZGU5MDJjNzkwMmZjYzRmZjBiMTQyMTc1NTVhYWM1NWRkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuaWRsCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyAKK21vZHVsZSBlbmNyeXB0ZWRt
ZWRpYSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1FTkNSWVBURURf
TUVESUFfVjIsCisgICAgICAgIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYSwKKyAg
ICAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIGtleVN5c3RlbSksCisgICAgICAgIENvbnN0
cnVjdG9yUmFpc2VzRXhjZXB0aW9uLAorICAgIF0gTWVkaWFLZXlzIHsKKyAgICAgICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIE1lZGlhS2V5U2Vzc2lvbiBjcmVhdGVTZXNzaW9u
KGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0eXBlLCBpbiBbT3B0
aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBVaW50OEFycmF5IGluaXREYXRhKQorICAgICAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBrZXlTeXN0ZW07CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggZGZm
ODMwZDUwMzg0OTJmZDJkZTQxMGNmMjVmODMyOTM3MjIwMTAzOC4uZWRiMjJjMTg2ZmY5OWI3MmE0
YTU0Y2Y1OGU4NWFiNDhjOGNhMzFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTI1ODYsMyAr
MjU4Niw3IEBAIF9fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMTZzaG93
QWx0ZXJuYXRpdmVzRVA2TlNWaWV3UktOU185RmxvYXRSCiBfX1pON1dlYkNvcmUyNFRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZUMxRVAxOE5TVGV4dEFsdGVybmF0aXZlczhfTlNSYW5nZQogX19aTjdX
ZWJDb3JlMzJjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlc0VQMThOU0F0dHJpYnV0ZWRT
dHJpbmdSTjNXVEY2VmVjdG9ySU5TXzI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlRUxtMEVFRQog
I2VuZGlmCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorX19aTjdXZWJDb3JlM0NE
TTE4cmVnaXN0ZXJDRE1GYWN0b3J5RVBGTjNXVEYxMFBhc3NPd25QdHJJTlNfMTlDRE1Qcml2YXRl
SW50ZXJmYWNlRUVFUFMwX0VQRmJSS05TMV82U3RyaW5nRUUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdhMjVlYWE4
ODE0YWQ0ODU3MzMxYTZjNTNhNzY2MzY2Y2QzYzIyZGMuLjgxZDM4OGQ5NTM0MTkwOGU3YzVkNDUw
MmI2ODI2NmMxNmJlMDEyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU4NTgsNiArNTg1OCw3IEBACiAJCUNBRTlGOTEwMTQ2
NDQxRjAwMEMyNDVCMSAvKiBDU1NWYXJpYWJsZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQUU5RjkwRTE0NjQ0MUYwMDBDMjQ1QjEgLyogQ1NT
VmFyaWFibGVWYWx1ZS5oICovOyB9OwogCQlDRDEyN0RFRDE0RjMwOTdEMDBFODQ3NzkgLyogV2Vi
Q29yZUZ1bGxTY3JlZW5XaW5kb3cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDEyN0RFQjE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3Jl
ZW5XaW5kb3cubW0gKi87IH07CiAJCUNEMTI3REVFMTRGMzA5ODQwMEU4NDc3OSAvKiBXZWJDb3Jl
RnVsbFNjcmVlbldpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0QxMjdERUExNEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2lu
ZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0QxQjRBNjUxNjA3ODZBRTAwMjgyREY5IC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEQzIxNjAxNEVF
RTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwICovOyB9OwogCQlDRDI3RjZFNTE0
NTc2ODVBMDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTIxNDU3Njc1ODAwNzgyMDdEIC8q
IEpTTWVkaWFDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0QyN0Y2RTcxNDU3NzBEMzAwNzgyMDdE
IC8qIE1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDI3RjZFNjE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVy
LmNwcCAqLzsgfTsKIAkJQ0QzN0IzOTgxNUMxQjk3MTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dn
aW5nS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDM3QjM3NDE1QzFBN0UxMDA2REM4OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcCAq
LzsgfTsKQEAgLTU4NjgsNyArNTg2OSwxOCBAQAogCQlDRDgyMDMwRDEzOTVBQjZBMDBGOTU2QzYg
LyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzA5MTM5NUFCNkEwMEY5NTZD
NiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tICovOyB9OwogCQlD
RDgyMDMxMDEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwRTEzOTVBQ0U3MDBG
OTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q4MjAzMTExMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldp
bmRvd0FuaW1hdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEODIwMzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0g
Ki87IH07CisJCUNEQTk4REEzMTYwMTQ2NDEwMEZFQTNCMSAvKiBKU01lZGlhS2V5RXJyb3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEOUIx
NjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5jcHAgKi87IH07CisJCUNEQTk4REQ4
MTYwMjVCRUYwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERENTE2MDI1QkVEMDBGRUEz
QjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwICovOyB9OworCQlDREE5OERERjE2MDI2QTM3
MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OEREQjE2MDI2QTE4MDBGRUEzQjEgLyog
SlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgKi87IH07CisJCUNEQTk4REUwMTYwMjZBMzcwMEZF
QTNCMSAvKiBKU01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEREQxNjAyNkExOTAwRkVBM0IxIC8qIEpTTWVk
aWFLZXlOZWVkZWRFdmVudC5jcHAgKi87IH07CisJCUNEQTk4RTA0MTYwMzlFMUEwMEZFQTNCMSAv
KiBKU01lZGlhS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREE5OERDRTE2MDE1OTc5MDBGRUEzQjEgLyogSlNNZWRpYUtleXMuY3BwICovOyB9
OworCQlDREE5OEUwNjE2MDM5RTFGMDBGRUEzQjEgLyogSlNNZWRpYUtleVNlc3Npb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThERDAxNjAx
NTk3OTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlTZXNzaW9uLmNwcCAqLzsgfTsKKwkJQ0RBOThFMEIx
NjAzQ0Q2MDAwRkVBM0IxIC8qIENETS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREE5OEUwOTE2MDNDRDU5MDBGRUEzQjEgLyogQ0RNLmNwcCAqLzsg
fTsKKwkJQ0RBOThFMEQxNjAzRkU0QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERDQTE2MDE1MDhBMDBG
RUEzQjEgLyogTWVkaWFLZXlzLmNwcCAqLzsgfTsKKwkJQ0RBOThFMEUxNjAzRkU1ODAwRkVBM0Ix
IC8qIE1lZGlhS2V5U2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREE5OERDNzE2MDE0RjJDMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9u
LmNwcCAqLzsgfTsKIAkJQ0RBQThEMEExNEQ3MUIyRTAwNjFFQTYwIC8qIFBsYXRmb3JtQ2xvY2tD
TS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUE4
RDA4MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gKi87IH07CisJCUNEQzI2
QjQwMTYwQThDQzYwMDI2NzU3QiAvKiBNb2NrQ0RNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzI2QjNDMTYwQTYyQjAwMDI2NzU3QiAvKiBNb2Nr
Q0RNLmNwcCAqLzsgfTsKKwkJQ0RDMjZCNDExNjBBOENDRTAwMjY3NTdCIC8qIE1vY2tDRE0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzI2QjNEMTYw
QTYyQjAwMDI2NzU3QiAvKiBNb2NrQ0RNLmggKi87IH07CiAJCUNERDUyNUQ3MTQ1QjZERDAwMDhE
MjA0RCAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQ0MxNDVCNkFGRTAwQzRDN0FBIC8qIEpT
SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCUNERUE3NjMwMTQ2MDhBNTMwMDhC
MzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xv
Y2tDQS5jcHAgKi87IH07CiAJCUNERUE3NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBDbG9ja0dlbmVy
aWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RF
QTc2MzIxNDYwQUUyOTAwOEIzMUYxIC8qIENsb2NrR2VuZXJpYy5jcHAgKi87IH07CkBAIC0xMzIx
MCw5ICsxMzIyMiwzOCBAQAogCQlDRDgyMDMwOTEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9G
dWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAv
KiBXZWJXaW5kb3dBbmltYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViV2luZG93QW5pbWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIw
MzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJXaW5kb3dBbmltYXRpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RDlCMTYwMTI4QTUwMEZFQTNCMSAvKiBKU01l
ZGlhS2V5RXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNN
ZWRpYUtleUVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEOUMx
NjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU01lZGlhS2V5RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBOThEQzIxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTWVkaWFLZXlOZWVkZWRFdmVu
dC5jcHA7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERDMzE2MDE0RUVFMDBGRUEz
QjEgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBNZWRpYUtleU5lZWRlZEV2ZW50Lmg7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5TmVlZGVkRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
OThEQzQxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgbmFtZSA9IE1lZGlhS2V5TmVlZGVkRXZlbnQuaWRsOyBwYXRoID0gTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBOThEQzcxNjAxNEYyQzAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBNZWRpYUtleVNlc3Npb24u
Y3BwOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERDODE2MDE0RjJDMDBGRUEzQjEgLyog
TWVkaWFLZXlTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGlh
S2V5U2Vzc2lvbi5oOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQzkxNjAxNEY0MDAwRkVB
M0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTWVkaWFL
ZXlTZXNzaW9uLmlkbDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNz
aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQ0ExNjAxNTA4QTAw
RkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBNZWRpYUtleXMuY3BwOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERDQjE2MDE1MDhBMDBG
RUEzQjEgLyogTWVkaWFLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1l
ZGlhS2V5cy5oOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQ0MxNjAxNTA4QTAwRkVBM0IxIC8qIE1l
ZGlhS2V5cy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTWVkaWFLZXlzLmlkbDsgcGF0aCA9
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBOThEQ0UxNjAxNTk3OTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFLZXlzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQ0YxNjAxNTk3OTAwRkVBM0IxIC8qIEpT
TWVkaWFLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFLZXlz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REQwMTYwMTU5NzkwMEZFQTNC
MSAvKiBKU01lZGlhS2V5U2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU01lZGlhS2V5U2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQTk4REQxMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5U2Vzc2lvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhS2V5U2Vzc2lvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERENTE2MDI1QkVEMDBGRUEzQjEgLyogTWVkaWFL
ZXlNZXNzYWdlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
TWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleU1lc3NhZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QTk4REQ2MTYwMjVCRUQwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYUtleU1lc3NhZ2VFdmVudC5oOyBwYXRoID0g
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREE5OERENzE2MDI1QkVFMDBGRUEzQjEgLyogTWVkaWFLZXlN
ZXNzYWdlRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE1lZGlhS2V5TWVzc2FnZUV2
ZW50LmlkbDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZl
bnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OEREQjE2MDI2QTE4MDBG
RUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBOThEREMxNjAyNkExOTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREE5OERERDE2MDI2QTE5MDBGRUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFLZXlOZWVkZWRFdmVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RERFMTYwMjZBMTkwMEZFQTNCMSAvKiBK
U01lZGlhS2V5TmVlZGVkRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUtleU5lZWRlZEV2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RTA5MTYwM0NENTkwMEZF
QTNCMSAvKiBDRE0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ0RNLmNwcDsgcGF0aCA9IE1vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBOThFMEExNjAzQ0Q1OTAwRkVBM0IxIC8qIENETS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDRE0uaDsg
cGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQTk4RTBDMTYwM0NGM0MwMEZFQTNCMSAvKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNEQUE4RDA3MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1DbG9ja0NNLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEQUE4RDA4MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNs
b2NrQ00ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9y
bUNsb2NrQ00ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQkQ5M0JBMTMzM0JE
NEIwMDI1NzBFMyAvKiBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3Nz
OyBwYXRoID0gZnVsbHNjcmVlblF1aWNrVGltZS5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQzI2QjNDMTYwQTYyQjAwMDI2NzU3QiAvKiBNb2NrQ0RNLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1vY2tDRE0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREMy
NkIzRDE2MEE2MkIwMDAyNjc1N0IgLyogTW9ja0NETS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ0RN
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQzI2QjQyMTYwQThEQjAwMDI2NzU3
QiAvKiBNZWRpYUtleUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhS2V5RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDMjZCNDMxNjBB
OERCMDAwMjY3NTdCIC8qIE1lZGlhS2V5RXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IE1lZGlhS2V5RXJyb3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRENFNUNE
MDE0NjMzQkM5MDBENDdDQ0EgLyogRXZlbnRUYXJnZXRGYWN0b3J5LmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEV2ZW50VGFyZ2V0RmFjdG9yeS5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0RFQTc2MkMxNDYwODIyNDAwOEIzMUYxIC8qIENsb2NrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNERUE3NjJFMTQ2MDg0REUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1DbG9ja0NBLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MzYwLDYgKzE0NDAxLDcgQEAKIAkJMTRERkIzM0Yw
QTdERjc2MzAwMThGNzY5IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0RBOThEQ0QxNjAxNTE1QzAwRkVBM0IxIC8qIEVu
Y3J5cHRlZE1lZGlhICovLAogCQkJCUE4M0I3OTEwMENDQjAwMUIwMDBCMDgyNSAvKiBDb3JlICov
LAogCQkJCUE4M0I3OTBFMENDQUZGOTcwMDBCMDgyNSAvKiBDU1MgKi8sCiAJCQkJN0I3RjY4NkQx
NTc2QkZBMTAwM0ZBQkYyIC8qIEVkaXRpbmcgKi8sCkBAIC0xNTA0Myw2ICsxNTA4NSw4IEBACiAJ
CQkJQTdCRjdFREUxNEM5MTc1QTAwMTQ0ODlEIC8qIEludGVybmFsU2V0dGluZ3MuaWRsICovLAog
CQkJCUE3QkU3RUREMTRDOTE3NUEwMDE0NDg5RCAvKiBNYWxsb2NTdGF0aXN0aWNzLmggKi8sCiAJ
CQkJQTdCRTdFREUxNEM5MTc1QTAwMTQ0ODlEIC8qIE1hbGxvY1N0YXRpc3RpY3MuaWRsICovLAor
CQkJCUNEQzI2QjNDMTYwQTYyQjAwMDI2NzU3QiAvKiBNb2NrQ0RNLmNwcCAqLywKKwkJCQlDREMy
NkIzRDE2MEE2MkIwMDAyNjc1N0IgLyogTW9ja0NETS5oICovLAogCQkJKTsKIAkJCXBhdGggPSB0
ZXN0aW5nOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE3NjgzLDYgKzE3NzI3LDgg
QEAKIAkJCQlFNDQ2MTM5QzBDRDYzMzEwMDBGQURBNzUgLyogTWVkaWFFcnJvci5pZGwgKi8sCiAJ
CQkJMDdBNkQxRTkxNDkxMTM3NzAwMDUxRDBDIC8qIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3Bw
ICovLAogCQkJCTA3QTZEMUVBMTQ5MTEzNzcwMDA1MUQwQyAvKiBNZWRpYUZyYWdtZW50VVJJUGFy
c2VyLmggKi8sCisJCQkJQ0RDMjZCNDIxNjBBOERCMDAwMjY3NTdCIC8qIE1lZGlhS2V5RXJyb3Iu
aCAqLywKKwkJCQlDREMyNkI0MzE2MEE4REIwMDAyNjc1N0IgLyogTWVkaWFLZXlFcnJvci5pZGwg
Ki8sCiAJCQkJOUIyRjdDRjcxNDU2MjEyMDAwN0Y4QjUwIC8qIE1pY3JvRGF0YUl0ZW1WYWx1ZS5j
cHAgKi8sCiAJCQkJOUIyRjdDRjgxNDU2MjEyMDAwN0Y4QjUwIC8qIE1pY3JvRGF0YUl0ZW1WYWx1
ZS5oICovLAogCQkJCTEwNTk0NTcxMTVCNDI4QzMwMDREMzdGRCAvKiBNaWNyb0RhdGFJdGVtVmFs
dWUuaWRsICovLApAQCAtMTc3NDQsNiArMTc3OTAsNyBAQAogCQk5NzExNDVGRTE0RUYwMDZFMDA2
NzRGRDkgLyogTW9kdWxlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJQ0RBOThEQkQxNjAxNEUwODAwRkVBM0IxIC8qIGVuY3J5cHRlZG1lZGlhICovLAog
CQkJCTk3MTE0NUZGMTRFRjAwNzkwMDY3NEZEOSAvKiBnZW9sb2NhdGlvbiAqLywKIAkJCQk5NzEy
QTU1MzE1MDA0RTNDMDA0OEFGMTAgLyogaW5kZXhlZGRiICovLAogCQkJCUIxQTk0MkREMTVCNUNF
MjIwMEQ1MjVEMSAvKiBtZWRpYXNvdXJjZSAqLywKQEAgLTIwOTQwLDYgKzIwOTg3LDQ1IEBACiAJ
CQluYW1lID0gYXVkaW87CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlDREE5
OERCRDE2MDE0RTA4MDBGRUEzQjEgLyogZW5jcnlwdGVkbWVkaWEgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUNEQTk4REQ1MTYwMjVCRUQwMEZFQTNCMSAv
KiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgKi8sCisJCQkJQ0RBOThERDYxNjAyNUJFRDAwRkVB
M0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmggKi8sCisJCQkJQ0RBOThERDcxNjAyNUJFRTAw
RkVBM0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbCAqLywKKwkJCQlDREE5OERDMjE2MDE0
RUVFMDBGRUEzQjEgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgKi8sCisJCQkJQ0RBOThEQzMx
NjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuaCAqLywKKwkJCQlDREE5OERD
NDE2MDE0RUVFMDBGRUEzQjEgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwgKi8sCisJCQkJQ0RB
OThEQ0ExNjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgKi8sCisJCQkJQ0RBOThEQ0Ix
NjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5oICovLAorCQkJCUNEQTk4RENDMTYwMTUwOEEw
MEZFQTNCMSAvKiBNZWRpYUtleXMuaWRsICovLAorCQkJCUNEQTk4REM3MTYwMTRGMkMwMEZFQTNC
MSAvKiBNZWRpYUtleVNlc3Npb24uY3BwICovLAorCQkJCUNEQTk4REM4MTYwMTRGMkMwMEZFQTNC
MSAvKiBNZWRpYUtleVNlc3Npb24uaCAqLywKKwkJCQlDREE5OERDOTE2MDE0RjQwMDBGRUEzQjEg
LyogTWVkaWFLZXlTZXNzaW9uLmlkbCAqLywKKwkJCQlDREE5OEUwOTE2MDNDRDU5MDBGRUEzQjEg
LyogQ0RNLmNwcCAqLywKKwkJCQlDREE5OEUwQTE2MDNDRDU5MDBGRUEzQjEgLyogQ0RNLmggKi8s
CisJCQkJQ0RBOThFMEMxNjAzQ0YzQzAwRkVBM0IxIC8qIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBlbmNyeXB0ZWRtZWRpYTsKKwkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUNEQTk4RENEMTYwMTUxNUMwMEZFQTNCMSAv
KiBFbmNyeXB0ZWRNZWRpYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJQ0RBOThEOUIxNjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5jcHAg
Ki8sCisJCQkJQ0RBOThEOUMxNjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5oICov
LAorCQkJCUNEQTk4RERCMTYwMjZBMTgwMEZFQTNCMSAvKiBKU01lZGlhS2V5TWVzc2FnZUV2ZW50
LmNwcCAqLywKKwkJCQlDREE5OEREQzE2MDI2QTE5MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3Nh
Z2VFdmVudC5oICovLAorCQkJCUNEQTk4REREMTYwMjZBMTkwMEZFQTNCMSAvKiBKU01lZGlhS2V5
TmVlZGVkRXZlbnQuY3BwICovLAorCQkJCUNEQTk4RERFMTYwMjZBMTkwMEZFQTNCMSAvKiBKU01l
ZGlhS2V5TmVlZGVkRXZlbnQuaCAqLywKKwkJCQlDREE5OERDRTE2MDE1OTc5MDBGRUEzQjEgLyog
SlNNZWRpYUtleXMuY3BwICovLAorCQkJCUNEQTk4RENGMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01l
ZGlhS2V5cy5oICovLAorCQkJCUNEQTk4REQwMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5
U2Vzc2lvbi5jcHAgKi8sCisJCQkJQ0RBOThERDExNjAxNTk3OTAwRkVBM0IxIC8qIEpTTWVkaWFL
ZXlTZXNzaW9uLmggKi8sCisJCQkpOworCQkJbmFtZSA9IEVuY3J5cHRlZE1lZGlhOworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJREY5QUZENkYxM0ZDMzFCMDAwMTVGRUI3IC8q
IG9iamMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjIy
NjgsNiArMjIzNTQsNyBAQAogCQkJCUE3NDBCNUE1MTRDOTM1QUIwMEE3N0ZBNCAvKiBKU0ludGVy
bmFsU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NDBCNTk1MTRDOTM1QUIwMEE3N0ZB
NCAvKiBKU01hbGxvY1N0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxODE1QzFGMTM4
MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBNb2NrQ0RNLmggaW4gSGVhZGVycyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAg
LTI1OTIxLDYgKzI2MDA4LDcgQEAKIAkJCQlBNzQwQjVBNzE0QzkzNUFGMDBBNzdGQTQgLyogSlNJ
bnRlcm5hbFNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NDBCNTk3MTRDOTM1QUYw
MEE3N0ZBNCAvKiBKU01hbGxvY1N0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE4
MTVDMUUxMzgzMTk4MzAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlDREMyNkI0MDE2MEE4Q0M2MDAyNjc1N0IgLyogTW9ja0NETS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTI4NjY5LDYgKzI4NzU3LDE2IEBACiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAw
QzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIxMzdC
NjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRGMUQxMUJG
MTVGRjM3MjAwMDI2RTkwOCAvKiBQbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlDREE5OERBMzE2MDE0NjQxMDBGRUEzQjEgLyogSlNNZWRpYUtleUVy
cm9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4REQ4MTYwMjVCRUYwMEZFQTNCMSAvKiBN
ZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OERERjE2MDI2
QTM3MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDREE5OERFMDE2MDI2QTM3MDBGRUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4RTA0MTYwMzlFMUEwMEZFQTNCMSAvKiBKU01lZGlh
S2V5cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OEUwNjE2MDM5RTFGMDBGRUEzQjEgLyog
SlNNZWRpYUtleVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThFMEIxNjAzQ0Q2
MDAwRkVBM0IxIC8qIENETS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OEUwRDE2MDNGRTRB
MDBGRUEzQjEgLyogTWVkaWFLZXlzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4RTBFMTYw
M0ZFNTgwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
Q0QxQjRBNjUxNjA3ODZBRTAwMjgyREY5IC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbiBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCmluZGV4IDllOWUwYzg2MzA3YWQwMGVj
ODY3YThiYTY3NjQwZTBmYTA1MDBlNWUuLmFmZjU5ZTlhOGU2MzRjNGNhM2RmNWVjZjJlYjVkYjI3
NzJkNmZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCkBAIC00OCw0ICs0OCw2IEBAIERl
dmljZU9yaWVudGF0aW9uRXZlbnQgY29uZGl0aW9uYWw9REVWSUNFX09SSUVOVEFUSU9OCiBEZXZp
Y2VQcm94aW1pdHlFdmVudCBjb25kaXRpb25hbD1QUk9YSU1JVFlfRVZFTlRTCiBPcmllbnRhdGlv
bkV2ZW50IGludGVyZmFjZU5hbWU9RXZlbnQsIGNvbmRpdGlvbmFsPU9SSUVOVEFUSU9OX0VWRU5U
UwogTWVkaWFLZXlFdmVudCBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEKK01lZGlhS2V5TWVz
c2FnZUV2ZW50IGNvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMgorTWVkaWFLZXlOZWVkZWRF
dmVudCBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIKIFRyYWNrRXZlbnQgY29uZGl0aW9u
YWw9VklERU9fVFJBQ0sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmlu
ZGV4IDc5MWJkNGVkYTVjYTM3YWY0NTc4MzYzNDk3Nzk1MTMwNzRjMmQyZjQuLjk5ZDUwOGQyNmU4
MmJmZGQ4ODg0NDBlNzFhYzNmY2EwMTlhNjcwMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbgpAQCAtMTUsNiArMTUsNyBAQCBJREJUcmFuc2FjdGlvbiBjb25kaXRp
b25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCBjb25kaXRpb25h
bD1JTkRFWEVEX0RBVEFCQVNFCiBKYXZhU2NyaXB0QXVkaW9Ob2RlIGNvbmRpdGlvbmFsPVdFQl9B
VURJTwogTG9jYWxNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KK01lZGlhS2V5
U2Vzc2lvbiBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIKIE1lZGlhQ29udHJvbGxlciBj
b25kaXRpb25hbD1WSURFTwogTWVkaWFTb3VyY2UgY29uZGl0aW9uYWw9TUVESUFfU09VUkNFCiBN
ZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDVmNTY3NDUxNzU0MmY2MzhmNTg3MGQzYWE2MzI1Y2Iz
Y2E4MjQyYzQuLjI0OGMyNDVjNjY3NThkODRlOGZiMjE4MDQzNjVkMDZkZWZiNzM1MjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTE2LDYgKzExNiwxMSBA
QAogI2luY2x1ZGUgIk1lZGlhU291cmNlUmVnaXN0cnkuaCIKICNlbmRpZgogCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQV9WMikKKyNpbmNsdWRlICJNZWRpYUtleU5lZWRlZEV2ZW50LmgiCisj
aW5jbHVkZSAiTWVkaWFLZXlzLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTg0OSw2ICsxODU0LDI1IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcm
IGtleVN5c3RlCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCit2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwg
VWludDhBcnJheSogaW5pdERhdGEpCit7CisgICAgTWVkaWFLZXlOZWVkZWRFdmVudEluaXQgaW5p
dGlhbGl6ZXI7CisgICAgaW5pdGlhbGl6ZXIuaW5pdERhdGEgPSBpbml0RGF0YTsKKyAgICBpbml0
aWFsaXplci5idWJibGVzID0gZmFsc2U7CisgICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJsZSA9IGZh
bHNlOworCisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IE1lZGlhS2V5TmVlZGVkRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50LCBpbml0aWFsaXplcik7CisgICAg
ZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2
ZW50KGV2ZW50LnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TWVk
aWFLZXlzKE1lZGlhS2V5cyogbWVkaWFLZXlzKQoreworICAgIG1fbWVkaWFLZXlzID0gbWVkaWFL
ZXlzOworfQorI2VuZGlmCisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJvZ3Jlc3NFdmVudFRp
bWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKQogewogICAgIEFTU0VSVChtX3BsYXll
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDgyMWUyMjg1YjQx
Y2RjZWIwNTYzN2NkY2I1MDE4NTg5OGU1YmQ5ZDAuLjUzZTlkY2ExMjRiOGU1MDJiZDEwYTEyNTNj
YjcyOTlhZDUwN2YzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBA
IC02Niw2ICs2Niw5IEBAIGNsYXNzIFdpZGdldDsKICNpZiBQTEFURk9STShNQUMpCiBjbGFzcyBE
aXNwbGF5U2xlZXBEaXNhYmxlcjsKICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFf
VjIpCitjbGFzcyBNZWRpYUtleXM7CisjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
IHR5cGVkZWYgUE9ESW50ZXJ2YWxUcmVlPGRvdWJsZSwgVGV4dFRyYWNrQ3VlKj4gQ3VlSW50ZXJ2
YWxUcmVlOwpAQCAtMTg4LDkgKzE5MSwxNiBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUih3ZWJraXRrZXlhZGRlZCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUih3ZWJraXRrZXllcnJvcik7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUih3ZWJraXRrZXltZXNzYWdlKTsKKyNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRuZWVka2V5KTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQV9WMikKKyAgICBNZWRpYUtleXMqIG1lZGlhS2V5cygpIGNvbnN0IHsg
cmV0dXJuIG1fbWVkaWFLZXlzLmdldCgpOyB9CisgICAgdm9pZCBzZXRNZWRpYUtleXMoTWVkaWFL
ZXlzKik7CisjZW5kaWYKKwogLy8gY29udHJvbHMKICAgICBib29sIGNvbnRyb2xzKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRDb250cm9scyhib29sKTsKQEAgLTQxOCw2ICs0MjgsMTAgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCkgT1ZFUlJJREU7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisgICAgdmlydHVhbCB2
b2lkIG1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwgVWludDhBcnJheSopOworI2Vu
ZGlmCisKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclJlZmVycmVyKCkgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJVc2VyQWdlbnQoKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIENPUlNNb2RlIG1lZGlhUGxheWVyQ09SU01vZGUoKSBjb25z
dCBPVkVSUklERTsKQEAgLTY3NCw2ICs2ODgsMTAgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShN
QUMpCiAgICAgT3duUHRyPERpc3BsYXlTbGVlcERpc2FibGVyPiBtX3NsZWVwRGlzYWJsZXI7CiAj
ZW5kaWYKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisgICAgUmVmUHRyPE1lZGlh
S2V5cz4gbV9tZWRpYUtleXM7CisjZW5kaWYKIH07CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAppbmRleCBiNmEwYTYzNmYx
NjUyNjVhYzE1NTE5YjQzNzViMjYzY2MyOWI2NjA5Li5iZjFlNGRlNjM0ZGQxM2UwZjZmZThiZTdm
MWQ4Nzc5ZjVlNjM5ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5p
ZGwKQEAgLTQ4LDYgKzQ4LDggQEAgbW9kdWxlIGh0bWwgewogICAgICAgICByYWlzZXMgKERPTUV4
Y2VwdGlvbik7CiAjaWYgZGVmaW5lZChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEVf
RU5DUllQVEVEX01FRElBCiAgICAgRE9NU3RyaW5nIGNhblBsYXlUeXBlKGluIFtPcHRpb25hbD1E
ZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0eXBlLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElz
TnVsbFN0cmluZywgVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxs
U3RyaW5nXSBET01TdHJpbmcga2V5U3lzdGVtKTsKKyNlbGlmIGRlZmluZWQoRU5BQkxFX0VOQ1JZ
UFRFRF9NRURJQV9WMikgJiYgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMgorICAgIERPTVN0cmlu
ZyBjYW5QbGF5VHlwZShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcg
dHlwZSwgaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZCwgVHJlYXROdWxsQXM9TnVsbFN0
cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcga2V5U3lzdGVtKTsK
ICNlbHNlCiAgICAgRE9NU3RyaW5nIGNhblBsYXlUeXBlKGluIFtPcHRpb25hbD1EZWZhdWx0SXNV
bmRlZmluZWRdIERPTVN0cmluZyB0eXBlKTsKICNlbmRpZgpAQCAtMTA2LDcgKzEwOCwxMCBAQCBt
b2R1bGUgaHRtbCB7CiAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVk
TWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXlhZGRlZDsKICAgICBhdHRyaWJ1dGUgW1Y4
RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gRXZlbnRMaXN0ZW5lciBvbndlYmtpdGtl
eWVycm9yOwogICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlh
XSBFdmVudExpc3RlbmVyIG9ud2Via2l0a2V5bWVzc2FnZTsKLSAgICBhdHRyaWJ1dGUgW1Y4RW5h
YmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gRXZlbnRMaXN0ZW5lciBvbndlYmtpdG5lZWRr
ZXk7CisjZW5kaWYKKyAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQXxF
TkNSWVBURURfTUVESUFfVjIsIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gRXZl
bnRMaXN0ZW5lciBvbndlYmtpdG5lZWRrZXk7CisjaWYgZGVmaW5lZChFTkFCTEVfRU5DUllQVEVE
X01FRElBX1YyKSAmJiBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyCisgICAgYXR0cmlidXRlIFtW
OEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIE1lZGlhS2V5cyBtZWRpYUtleXM7CiAj
ZW5kaWYKIAogI2lmIGRlZmluZWQoRU5BQkxFX1ZJREVPX1RSQUNLKSAmJiBFTkFCTEVfVklERU9f
VFJBQ0sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmgKaW5kZXggOTBmNDQ3ZjA1ZTVhNGYwY2FkMTRi
NWM0MjliZmJmZThjODcwZDMwNC4uYjBiZjVmNzY1ZDVhMzg2NjY3OThiMDQ5MzU3NWIyYTA2NDAy
MThkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGlj
OgogICAgICAgICBNRURJQV9FUlJfTkVUV09SSywKICAgICAgICAgTUVESUFfRVJSX0RFQ09ERSwK
ICAgICAgICAgTUVESUFfRVJSX1NSQ19OT1RfU1VQUE9SVEVECi0jaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVE
X01FRElBX1YyKQogICAgICAgICAsIE1FRElBX0VSUl9FTkNSWVBURUQKICNlbmRpZgogICAgIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaWRsIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmlkbAppbmRleCA4ZWI5ZDU0MDI5NDY1MDM0ZGQ0M2Rm
ODE5ZmRkY2QxMTUxNjcyNzUyLi5lM2NkOGQyYTcxZDQ4OTg5Y2EyMTk3YTczZjg0MGYxMTk1NjNh
YTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5pZGwKQEAgLTMxLDcgKzMxLDcgQEAgbW9k
dWxlIGh0bWwgewogICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0VSUl9ORVRX
T1JLID0gMjsKICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfREVDT0RF
ID0gMzsKICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfU1JDX05PVF9T
VVBQT1JURUQgPSA0OwotI2lmIGRlZmluZWQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5B
QkxFX0VOQ1JZUFRFRF9NRURJQQorI2lmIChkZWZpbmVkKEVOQUJMRV9FTkNSWVBURURfTUVESUEp
ICYmIEVOQUJMRV9FTkNSWVBURURfTUVESUEpIHx8IChkZWZpbmVkKEVOQUJMRV9FTkNSWVBURURf
TUVESUFfVjIpICYmIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpCiAgICAgICAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgTUVESUFfRVJSX0VOQ1JZUFRFRCA9IDU7CiAjZW5kaWYKICAgICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgY29kZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUtleUVycm9yLmgKaW5kZXggMTJjNzM2ZDQ4N2EzZjRjMDcxNjViNGM2NTI4ZWZkOTk5Y2Y3
NWRlMi4uNDllMzg0M2UzMjhiMzkwODc4ZTY1ZTEyYzExZTA2OTVkOTcxOGQ4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUVycm9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUtleUVycm9yLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgTWVkaWFL
ZXlFcnJvcl9oCiAjZGVmaW5lIE1lZGlhS2V5RXJyb3JfaAogCi0jaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVE
X01FRElBX1YyKQogCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIE1lZGlhS2V5RXJyb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUtleUVycm9yPiB7CiBw
dWJsaWM6Ci0gICAgZW51bSBDb2RlIHsKKyAgICBlbnVtIHsKICAgICAgICAgTUVESUFfS0VZRVJS
X1VOS05PV04gPSAxLAogICAgICAgICBNRURJQV9LRVlFUlJfQ0xJRU5ULAogICAgICAgICBNRURJ
QV9LRVlFUlJfU0VSVklDRSwKQEAgLTQzLDE1ICs0MywxOCBAQCBwdWJsaWM6CiAgICAgICAgIE1F
RElBX0tFWUVSUl9IQVJEV0FSRUNIQU5HRSwKICAgICAgICAgTUVESUFfS0VZRVJSX0RPTUFJTgog
ICAgIH07CisgICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBDb2RlOwogCi0gICAgc3RhdGljIFBh
c3NSZWZQdHI8TWVkaWFLZXlFcnJvcj4gY3JlYXRlKENvZGUgY29kZSkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IE1lZGlhS2V5RXJyb3IoY29kZSkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFLZXlFcnJvcj4gY3JlYXRlKENvZGUgY29kZSwgdW5zaWduZWQgbG9uZyBzeXN0ZW1Db2RlID0g
MCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhS2V5RXJyb3IoY29kZSwgc3lzdGVtQ29kZSkp
OyB9CiAKICAgICBDb2RlIGNvZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGU7IH0KKyAgICB1bnNp
Z25lZCBsb25nIHN5c3RlbUNvZGUoKSB7IHJldHVybiBtX3N5c3RlbUNvZGU7IH0KIAogcHJpdmF0
ZToKLSAgICBleHBsaWNpdCBNZWRpYUtleUVycm9yKENvZGUgY29kZSkgOiBtX2NvZGUoY29kZSkg
eyB9CisgICAgZXhwbGljaXQgTWVkaWFLZXlFcnJvcihDb2RlIGNvZGUsIHVuc2lnbmVkIGxvbmcg
c3lzdGVtQ29kZSkgOiBtX2NvZGUoY29kZSksIG1fc3lzdGVtQ29kZShzeXN0ZW1Db2RlKSB7IH0K
IAogICAgIENvZGUgbV9jb2RlOworICAgIHVuc2lnbmVkIGxvbmcgbV9zeXN0ZW1Db2RlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUtleUVycm9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFcnJvci5p
ZGwKaW5kZXggNTViOWIwNGQwZjdmNTczZTM5NDA2ZTJhMTExYjQ3NmFhZDkyYjg5My4uZGYxYzgx
NzhhOTlkZjMzZjU3MWFiNDg3ZjNkMzU5NjI0MDc0ZTFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUtleUVycm9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhS2V5RXJyb3IuaWRsCkBAIC0yNCw4ICsyNCw5IEBACiAgKi8KIAogbW9kdWxlIGh0bWwgewor
CiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBLAor
ICAgICAgICBDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUF8RU5DUllQVEVEX01FRElBX1YyLAog
ICAgICAgICBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWEsIAogICAgIF0gTWVkaWFL
ZXlFcnJvciB7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0tFWUVSUl9VTktO
T1dOID0gMTsKQEAgLTM1LDUgKzM2LDYgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCBNRURJQV9LRVlFUlJfSEFSRFdBUkVDSEFOR0UgPSA1OwogICAgICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9LRVlFUlJfRE9NQUlOID0gNjsKICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IGNvZGU7CisgICAgICAgIFtDb25kaXRpb25h
bD1FTkNSWVBURURfTUVESUFfVjJdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHN5
c3RlbUNvZGU7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCA5NjQ5
YWE5MzE4YzM1MGJiNDEwYjI5ZTBjZDg1MjQ3MGYzNDEzOWY3Li5hNDljNWNiYTVkMzk1YWY5OWNk
OTY4NmQzMGNkZjM4NjQwYTU5NGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC00
NzgsNiArNDc4LDEwIEBAIG1vZHVsZSB3aW5kb3cgewogCiAgICAgICAgIGF0dHJpYnV0ZSBbQ29u
ZGl0aW9uYWw9RU5DUllQVEVEX01FRElBLCBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVk
aWFdIE1lZGlhS2V5RXJyb3JDb25zdHJ1Y3RvciBNZWRpYUtleUVycm9yOwogICAgICAgICBhdHRy
aWJ1dGUgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQSwgVjhFbmFibGVkQXRSdW50aW1lPWVu
Y3J5cHRlZE1lZGlhXSBNZWRpYUtleUV2ZW50Q29uc3RydWN0b3IgTWVkaWFLZXlFdmVudDsKKyAg
ICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIsIFY4RW5hYmxl
ZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gTWVkaWFLZXlzQ29uc3RydWN0b3IgTWVkaWFLZXlz
OworICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMiwgVjhF
bmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBNZWRpYUtleUVycm9yQ29uc3RydWN0b3Ig
TWVkaWFLZXlFcnJvcjsKKyAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1FTkNSWVBURURf
TUVESUFfVjIsIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gTWVkaWFLZXlNZXNz
YWdlRXZlbnRDb25zdHJ1Y3RvciBNZWRpYUtleU1lc3NhZ2VFdmVudDsKKyAgICAgICAgYXR0cmli
dXRlIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIsIFY4RW5hYmxlZEF0UnVudGltZT1l
bmNyeXB0ZWRNZWRpYV0gTWVkaWFLZXlOZWVkZWRFdmVudENvbnN0cnVjdG9yIE1lZGlhS2V5TmVl
ZGVkRXZlbnQ7CiAKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1WSURFT19UUkFDSywg
VjhFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2tdIEhUTUxUcmFja0VsZW1lbnRDb25z
dHJ1Y3RvciBIVE1MVHJhY2tFbGVtZW50OwogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFs
PVZJREVPX1RSQUNLLCBWOEVuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10gVGV4dFRy
YWNrQ29uc3RydWN0b3IgVGV4dFRyYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDQ3ODM0ZDVhYjE1YzE1NmViNjYyYmMwZjhl
MGJhNWEyZGJiNjAwYzMuLjEyZTNmYzViYzM4Nzk2OTdmYzU1YWI2ZDAzNWY3OTFiMGU1YTBkZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAKQEAgLTI4MSw3ICsyODEsNyBAQCBzdGF0aWMgTWVkaWFQbGF5ZXJGYWN0b3J5KiBiZXN0TWVk
aWFFbmdpbmVGb3JUeXBlQW5kQ29kZWNzKGNvbnN0IFN0cmluZyYgdHlwZSwgYwogICAgICAgICAg
ICAgICAgIGN1cnJlbnQgPSAwOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8
IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAgICAgICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGUgZW5naW5lU3VwcG9ydCA9IGVuZ2luZXNbbmR4XS0+c3VwcG9ydHNUeXBlQW5kQ29kZWNz
KHR5cGUsIGNvZGVjcywga2V5U3lzdGVtLCB1cmwpOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BB
UkFNKGtleVN5c3RlbSk7CkBAIC03ODksNyArNzg5LDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50
VHkKICAgICBVTlVTRURfUEFSQU0oY2xpZW50KTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQ
VEVEX01FRElBX1YyKQogICAgIHJldHVybiBlbmdpbmUtPnN1cHBvcnRzVHlwZUFuZENvZGVjcyh0
eXBlLCB0eXBlQ29kZWNzLCBzeXN0ZW0sIHVybCk7CiAjZWxzZQogICAgIEFTU0VSVChzeXN0ZW0u
aXNFbXB0eSgpKTsKQEAgLTEwODUsNiArMTA4NSwxNCBAQCB2b2lkIE1lZGlhUGxheWVyOjprZXlO
ZWVkZWQoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBj
bwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQordm9pZCBNZWRp
YVBsYXllcjo6a2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQoreworICAgIGlmIChtX21l
ZGlhUGxheWVyQ2xpZW50KQorICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXll
cktleU5lZWRlZCh0aGlzLCBpbml0RGF0YSk7Cit9CisjZW5kaWYKKwogU3RyaW5nIE1lZGlhUGxh
eWVyOjpyZWZlcnJlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX21lZGlhUGxheWVyQ2xpZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXgg
NjA4NzZlNjM4NWJiOTU4MDY2NTAyNzAyZjgzZjYyNGIzMThlMTU5Yy4uNDA4MWE4ODY1ODk3Mjc2
ZmZlNzBlZWM5YWQ4NjY1NTYxMDMxM2IwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0xOTAsNiArMTkwLDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IHVuc2lnbmVk
IGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCkgeyB9CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxh
eWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwgVWludDhBcnJheSopIHsgfQorI2VuZGlmCisgICAg
CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJSZWZlcnJlcigpIGNvbnN0IHsgcmV0dXJu
IFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJVc2VyQWdlbnQoKSBj
b25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgQ09SU01vZGUgbWVkaWFQbGF5
ZXJDT1JTTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFVuc3BlY2lmaWVkOyB9CkBAIC00MTUsNiArNDE5
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGtleU5lZWRlZChjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRh
LCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUFfVjIpCisgICAgdm9pZCBrZXlOZWVkZWQoVWludDhBcnJheSogaW5pdERhdGEpOwor
I2VuZGlmCisKICAgICBTdHJpbmcgcmVmZXJyZXIoKSBjb25zdDsKICAgICBTdHJpbmcgdXNlckFn
ZW50KCkgY29uc3Q7CiAKQEAgLTQ1Myw3ICs0NjEsNyBAQCBwcml2YXRlOgogCiB0eXBlZGVmIFBh
c3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiAoKkNyZWF0ZU1lZGlhRW5naW5l
UGxheWVyKShNZWRpYVBsYXllciopOwogdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVTdXBwb3J0
ZWRUeXBlcykoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7Ci0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01F
RElBX1YyKQogdHlwZWRlZiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlICgqTWVkaWFFbmdpbmVT
dXBwb3J0c1R5cGUpKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJiB1cmwpOwogI2Vsc2UKIHR5cGVkZWYg
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSAoKk1lZGlhRW5naW5lU3VwcG9ydHNUeXBlKShjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBLVVJMJiB1cmwpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IGQ0NGEzMGM3MzIwMzcyYTNkZDIyNTczNzRhNTNhZTIz
YzI4Mzg4NjkuLjExYjYxOTEyNDZmZGZlMzRhOGU2OTFlN2VkNjA5ODgwNzljODA0ZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLmgKQEAgLTYzLDYgKzYzLDEwIEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGUoTWVkaWFQbGF5
ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4m
IHR5cGVzKTsKICAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5
cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgS1VSTCYp
OworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisgICAgc3RhdGljIE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGUgZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwm
KTsKKyNlbmRpZgorCiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBjYW5jZWxMb2FkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBjZjc1ZDBj
ZjZjZmQ3NjA4YWQ3MWQ2NzdmNDZmMWU3Njk4NzhhMzY2Li5lZWJhZjFlYmQyNGQ3NWM4NzMxN2Ix
MjU5MGQ4NTc1NWJkZDc1MTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTEzMiw3ICsx
MzIsMTEgQEAgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWEKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJh
ciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQV9WMikKKyAgICAgICAgcmVnaXN0cmFyKGNyZWF0ZSwgZ2V0U3VwcG9ydGVkVHlw
ZXMsIGV4dGVuZGVkU3VwcG9ydHNUeXBlLCAwLCAwLCAwKTsKKyNlbHNlCiAgICAgICAgIHJlZ2lz
dHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDApOwor
I2VuZGlmCiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXIqIHBsYXllcikKQEAgLTcyNSw2
ICs3MjksMTcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c1R5cGUoY29uc3QKICAgICByZXR1cm4gW0FWVVJMQXNz
ZXQgaXNQbGF5YWJsZUV4dGVuZGVkTUlNRVR5cGU6dHlwZVN0cmluZ10gPyBNZWRpYVBsYXllcjo6
SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ7OwogfQogCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKK01lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0sIGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICAvLyBBVkZvdW5kYXRpb24gZG9lcyBub3Qgc3Vw
cG9ydCBhbnkgZW5jcnl0cGVkIG1lZGlhLCBzbyByZXR1cm4gSXNOb3RTdXBwb3J0ZWQgaWYgdGhl
IGtleVN5c3RlbSBpcyBub24tTlVMTDoKKyAgICBpZiAoIWtleVN5c3RlbS5pc051bGwoKSAmJiAh
a2V5U3lzdGVtLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1
cHBvcnRlZDsKKworICAgIHJldHVybiBzdXBwb3J0c1R5cGUodHlwZSwgY29kZWNzLCB1cmwpOzsK
K30KKyNlbmRpZgorCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omlz
QXZhaWxhYmxlKCkKIHsKICAgICByZXR1cm4gQVZGb3VuZGF0aW9uTGlicmFyeSgpICYmIENvcmVN
ZWRpYUxpYnJhcnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKaW5kZXggNDM2MTYwNzE4
MjFiOWZiN2E4NWI1NjI3NjJiNTE1M2FlMjhlMjkzYi4uNmViMWI3ZGI5Mzg0MmMxMTcyNmI1NTY3
NmU5NTU2OWI2YWE1OWUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKQEAgLTc2LDYg
Kzc2LDEwIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2
YXRlSW50ZXJmYWNlPiBjcmVhdGUoTWVkaWFQbGF5ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRT
dXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mIHR5cGVzKTsKICAgICBzdGF0aWMgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIGNvZGVjcywgY29uc3QgS1VSTCYpOworI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUFfVjIpCisgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgZXh0ZW5kZWRTdXBw
b3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmKTsKKyNlbmRpZgorCiAgICAgc3RhdGljIHZv
aWQgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mKTsKICAgICBzdGF0aWMgdm9p
ZCBjbGVhck1lZGlhQ2FjaGUoKTsKICAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JT
aXRlKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCmluZGV4IDJl
ODQ5YWY2MWM4YTRiMzgzYzE2ZTc4NzdjZmJhNDBiMjM4YjZmOGQuLjRjNjY3NzQ5ZjhmNjE0NjU1
NDQ1NWUyOGU4MDEzOTJiZWE0YmQ3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0K
QEAgLTE5MCw3ICsxOTAsMTEgQEAgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2U+IE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjcmVhdGUoTWVkaWFQbGEKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQ6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3Ry
YXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpc0F2YWlsYWJsZSgpKQorI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUFfVjIpCisgICAgICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5
cGVzLCBleHRlbmRlZFN1cHBvcnRzVHlwZSwgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVk
aWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk7CisjZWxzZQogICAgICAgICByZWdpc3Ry
YXIoY3JlYXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBnZXRTaXRlc0luTWVk
aWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKTsKKyNlbmRp
ZgogfQogCiBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQo
TWVkaWFQbGF5ZXIqIHBsYXllcikKQEAgLTE1MTgsNiArMTUyMiwxNyBAQCBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzdXBwb3J0c1R5cGUoY29uc3Qg
U3RyaW5nJiB0eQogICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAK
KyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6ZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICAvLyBRVEtpdCBkb2VzIG5vdCBzdXBwb3J0IGFueSBl
bmNyeXRwZWQgbWVkaWEsIHNvIHJldHVybiBJc05vdFN1cHBvcnRlZCBpZiB0aGUga2V5U3lzdGVt
IGlzIG5vbi1OVUxMOgorICAgIGlmICgha2V5U3lzdGVtLmlzTnVsbCgpICYmICFrZXlTeXN0ZW0u
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwor
CisgICAgcmV0dXJuIHN1cHBvcnRzVHlwZSh0eXBlLCBjb2RlY3MsIHVybCk7OworfQorI2VuZGlm
CisKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmlzQXZhaWxhYmxlKCkKIHsKICAgICAv
LyBPbiAxMC41IGFuZCBoaWdoZXIsIFF1aWNrVGltZSB3aWxsIGFsd2F5cyBiZSBuZXcgZW5vdWdo
IGZvciA8dmlkZW8+IGFuZCA8YXVkaW8+IHN1cHBvcnQsIHNvIHdlIGp1c3QgY2hlY2sgdGhhdCB0
aGUgZnJhbWV3b3JrIGNhbiBiZSBsb2FkZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKaW5kZXggM2FmYjMzNDdhZWQxYjU1NDZiYTFlMDRlZGJjMjFhYzVlMjQxYTA0ZS4uZGIwZWVi
YTAwMTY1YTU3Y2FkNjM3NzJjMGIzNzEwYzk2MTRhOTI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcApAQCAtMTAxLDYgKzEwMSwxMSBAQAogI2luY2x1ZGUgIlJlbmRlckxheWVy
QmFja2luZy5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorI2lu
Y2x1ZGUgIkNETS5oIgorI2luY2x1ZGUgIk1vY2tDRE0uaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0xMjUzLDQgKzEyNTgs
MTEgQEAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJbnRlcm5hbHM6OmdldFJlZmVyZW5jZWRG
aWxlUGF0aHMoKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdMaXN0LnJlbGVhc2UoKTsKIH0KIAor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCit2b2lkIEludGVybmFsczo6aW5pdGlhbGl6
ZU1vY2tDRE0oKQoreworICAgIENETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KE1vY2tDRE06OmNyZWF0
ZSwgTW9ja0NETTo6c3VwcG9ydHNLZXlTeXRlbSk7Cit9CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggZDJkNDUyZWE5NWEwZWU3ZDYzOTg5NTAwMmY3NmM0MDAw
MDMxNDgyOS4uYTdlN2U5NzBiMTAxMWE3MDk4ODlhYzIwYjIyYWNmMjliZjc3ZmFhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0yMTcsNiArMjE3LDEwIEBAIHB1YmxpYzoKIAog
ICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gZ2V0UmVmZXJlbmNlZEZpbGVQYXRocygpIGNv
bnN0OwogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKyAgICB2b2lkIGluaXRpYWxp
emVNb2NrQ0RNKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbHMo
RG9jdW1lbnQqKTsKICAgICBEb2N1bWVudCogY29udGV4dERvY3VtZW50KCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggM2JkOTEyOTlmMGE1NTc0NjYyNWNmYzkx
ZDUyOWExZjhmYTNiMWVjYi4uOGRkYzkxZWU1NGUyYWFiODA3ZWVmMTM1MDgyMzg1MGMwNDVkMDM1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMTkzLDYgKzE5Myw4IEBA
IG1vZHVsZSB3aW5kb3cgewogICAgICAgICBNYWxsb2NTdGF0aXN0aWNzIG1hbGxvY1N0YXRpc3Rp
Y3MoKTsKIAogICAgICAgICBET01TdHJpbmdbXSBnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCk7CisK
KyAgICAgICAgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMl0gdm9pZCBpbml0aWFsaXpl
TW9ja0NETSgpOwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVhMTM2NWYzOTkyOWVlMTk3YjA0NjQzMTg4NWYwMGMwZjgwMDUxNWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uY3BwCkBAIC0wLDAgKzEs
MTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tD
RE0uaCIKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlICJNZWRp
YUtleUVycm9yLmgiCisjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitib29sIE1vY2tDRE06OnN1cHBvcnRzS2V5U3l0ZW0oY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0pCit7CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGtleVN5c3RlbSwgImNv
bS53ZWJjb3JlLm1vY2siKTsKK30KKworYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c01JTUVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKG1p
bWVUeXBlLCAidmlkZW8vbW9jayIpOworfQorCitTdHJpbmcgTW9ja0NETTo6Z2VuZXJhdGVTZXNz
aW9uSWQoKQoreworICAgIHN0YXRpYyBpbnQgbW9ub3RvbmljYWxseUluY3JlYXNpbmdTZXNzaW9u
SWQgPSAwOworICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihtb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1Nlc3Npb25JZCsrKTsKK30KKworc3RhdGljIFVpbnQ4QXJyYXkqIGluaXREYXRhUHJlZml4KCkK
K3sKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwcmVmaXhEYXRhW10gPSB7J20nLCAn
bycsICdjJywgJ2snfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxVaW50OEFycmF5
PiwgcHJlZml4LCAoKSk7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAg
ICBpZiAoIWluaXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAg
ICAgcHJlZml4ID0gVWludDhBcnJheTo6Y3JlYXRlKHByZWZpeERhdGEsIHNpemVvZihwcmVmaXhE
YXRhKSAvIHNpemVvZihwcmVmaXhEYXRhWzBdKSk7CisgICAgfQorICAgIHJldHVybiBwcmVmaXgu
Z2V0KCk7Cit9CisKKworc3RhdGljIFVpbnQ4QXJyYXkqIGtleVByZWZpeCgpCit7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcHJlZml4RGF0YVtdID0geydrJywgJ2UnLCAneSd9Owor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPFdURjo6VWludDhBcnJheT4sIHByZWZpeCwg
KCkpOworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKCFpbml0
aWFsaXplZCkgeworICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CisgICAgICAgIHByZWZpeCA9
IFVpbnQ4QXJyYXk6OmNyZWF0ZShwcmVmaXhEYXRhLCBzaXplb2YocHJlZml4RGF0YSkgLyBzaXpl
b2YocHJlZml4RGF0YVswXSkpOworICAgIH0KKyAgICByZXR1cm4gcHJlZml4LmdldCgpOworfQor
CitzdGF0aWMgVWludDhBcnJheSoga2V5UmVxdWVzdCgpCit7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGNoYXIgcmVxdWVzdERhdGFbXSA9IHsncicsICdlJywgJ3EnLCAndScsICdlJywgJ3Mn
LCAndCd9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPFdURjo6VWludDhBcnJheT4s
IHJlcXVlc3QsICgpKTsKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAg
IGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAg
ICByZXF1ZXN0ID0gVWludDhBcnJheTo6Y3JlYXRlKHJlcXVlc3REYXRhLCBzaXplb2YocmVxdWVz
dERhdGEpIC8gc2l6ZW9mKHJlcXVlc3REYXRhWzBdKSk7CisgICAgfQorICAgIHJldHVybiByZXF1
ZXN0LmdldCgpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IE1vY2tDRE06OmdlbmVyYXRl
S2V5UmVxdWVzdChjb25zdCBTdHJpbmcmLCBVaW50OEFycmF5KiBpbml0RGF0YSwgY29uc3QgU3Ry
aW5nJiwgU3RyaW5nJiwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYp
Cit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGluaXREYXRhUHJlZml4KCktPmxlbmd0
aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFpbml0RGF0YSB8fCBpID49IGluaXREYXRhLT5sZW5n
dGgoKSB8fCBpbml0RGF0YS0+aXRlbShpKSAhPSBpbml0RGF0YVByZWZpeCgpLT5pdGVtKGkpKSB7
CisgICAgICAgICAgICBlcnJvckNvZGUgPSBNZWRpYUtleUVycm9yOjpNRURJQV9LRVlFUlJfVU5L
Tk9XTjsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biBrZXlSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgTW9ja0NETTo6Y2xlYXJLZXlzRnJvbVNlc3Npb25J
ZChjb25zdCBTdHJpbmcmKQoreworICAgIC8vIG5vLW9wCit9CisKK2Jvb2wgTW9ja0NETTo6YWRk
S2V5Rm9yU2Vzc2lvbklkKFVpbnQ4QXJyYXkqIGtleSwgY29uc3QgU3RyaW5nJiwgUmVmUHRyPFVp
bnQ4QXJyYXk+JiwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYpCit7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGtleVByZWZpeCgpLT5sZW5ndGgoKTsgKytp
KSB7CisgICAgICAgIGlmIChpID49IGtleS0+bGVuZ3RoKCkgfHwga2V5LT5pdGVtKGkpICE9IGtl
eVByZWZpeCgpLT5pdGVtKGkpKSB7CisgICAgICAgICAgICBlcnJvckNvZGUgPSBNZWRpYUtleUVy
cm9yOjpNRURJQV9LRVlFUlJfQ0xJRU5UOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoRU5DUllQVEVEX01FRElBX1YyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jZjcwYjMzNTk0MmFhNjhiMzZlZmVmOTNkOTE3MjgxMzIwMWIzYzFlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNLmgKQEAgLTAsMCArMSw2MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgTW9ja0NETV9oCisjZGVmaW5lIE1vY2tDRE1faAorCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIkNETVByaXZhdGUuaCIKKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IENETTsKKworY2xhc3MgTW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2YXRlSW50ZXJmYWNlIHsKK3B1
YmxpYzoKKyAgICAvLyBDRE1GYWN0b3J5IHN1cHBvcnQ6CisgICAgc3RhdGljIFBhc3NPd25QdHI8
Q0RNUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKENETSogY2RtKSB7IHJldHVybiBhZG9wdFB0cihu
ZXcgTW9ja0NETShjZG0pKTsgfQorICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3l0ZW0oY29u
c3QgU3RyaW5nJik7CisKKyAgICB2aXJ0dWFsIH5Nb2NrQ0RNKCkgeyB9CisKKyAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKworICAgIHZp
cnR1YWwgU3RyaW5nIGdlbmVyYXRlU2Vzc2lvbklkKCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBV
aW50OEFycmF5KiBpbml0RGF0YSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFN0cmluZyYgZGVz
dGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5
c3RlbUNvZGUpOworCisgICAgdmlydHVhbCB2b2lkIGNsZWFyS2V5c0Zyb21TZXNzaW9uSWQoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQpOworICAgIHZpcnR1YWwgYm9vbCBhZGRLZXlGb3JTZXNzaW9u
SWQoVWludDhBcnJheSosIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBSZWZQdHI8VWludDhBcnJh
eT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNpZ25lZCBsb25n
JiBzeXN0ZW1Db2RlKTsKKworcHJvdGVjdGVkOgorICAgIE1vY2tDRE0oQ0RNKiBjZG0pIDogbV9j
ZG0oY2RtKSB7IH0KKyAgICBDRE0qIG1fY2RtOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKKworI2VuZGlmIC8vIE1vY2tDRE1faApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc1ZTZlZTBk
MzkxNWE2NWU1NmNkM2EzYjU2Mjk5YzcyOTBmNWE2YmQuLmJiODJlMzc5ODlkM2E4MDI2ZDdhMjAy
MDcwYmQ1ZWVmMWU3OTQ1ZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOS0xOSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBCcmluZyBXZWJLaXQgdXAg
dG8gc3BlZWQgd2l0aCBsYXRlc3QgRW5jcnlwdGVkIE1lZGlhIHNwZWMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzAzNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5ldyB0ZXN0cyBmb3IgdGhl
IHVwZGF0ZWQgRW5jcnlwdGVkIE1lZGlhIEV4dGVuc2lvbnMgc3BlYy4KKworICAgICAgICAqIG1l
ZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItZXZlbnRzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRp
YS12Mi1ldmVudHMuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvZW5jcnlwdGVkLW1lZGlh
L2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRheC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2tpcHBlZDogVW5za2lwIChtb3N0IG9mKSB0
aGUgbWVkaWEvZW5jcnlwdGVkLW1lZGlhLyB0ZXN0cworICAgICAgICAqIHBsYXRmb3JtL21hYy9t
ZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLWNhbi1wbGF5LXR5cGUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKwogMjAxMi0wOS0yMCAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxs
YW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdW1dLMl0gZmFzdC9zcGF0aWFsLW5h
dmlnYXRpb24vc25hdi1tZWRpYS1lbGVtZW50cy5odG1sIHRpbWVvdXRzCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLWV2ZW50
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlw
dGVkLW1lZGlhLXYyLWV2ZW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2IyOTYzYTA2NDMw
NGQ2ODg2MjAyZTliODI2OTkyNWZkZGJkNTUzMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItZXZlbnRzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUaGlzIHRlc3RzIHRoZSBldmVudHMgY3JlYXRlZCBi
eSBNZWRpYUtleXMuCisKK1JVTihtZWRpYUtleXMgPSBuZXcgTWVkaWFLZXlzKCJjb20ud2ViY29y
ZS5tb2NrIikpCitSVU4obWVkaWFLZXlTZXNzaW9uID0gbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24o
InZpZGVvL21vY2siLCBpbml0RGF0YSkpCitFVkVOVCh3ZWJraXRrZXltZXNzYWdlKQorUlVOKG1l
ZGlhS2V5U2Vzc2lvbi5hZGRLZXkoaW52YWxpZEtleSkpCitFVkVOVCh3ZWJraXRrZXllcnJvcikK
K1JVTihtZWRpYUtleVNlc3Npb24uYWRkS2V5KHZhbGlkS2V5KSkKK0VWRU5UKHdlYmtpdGtleWFk
ZGVkKQorRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlw
dGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1ldmVudHMuaHRtbCBiL0xheW91dFRlc3RzL21l
ZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItZXZlbnRzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjc3NjA4ZjdiNTM2MWRiOTM2ZDY3ZWE1NDIyMzdjZWMxYjU2MWU3YwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVk
aWEtdjItZXZlbnRzLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPk1lZGlhS2V5czwvdGl0bGU+CisgICAgICAg
IDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgICAgICBmdW5jdGlvbiBzdHJpbmdUb1VpbnQ4QXJyYXkoc3RyKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHZhciBhcnI9W107CisgICAgICAgICAgICAgICAgZm9yKHZh
ciBpPTAsaj1zdHIubGVuZ3RoO2k8ajsrK2kpeworICAgICAgICAgICAgICAgICAgYXJyW2ldPXN0
ci5jaGFyQ29kZUF0KGkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IFVpbnQ4QXJyYXkoYXJyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IG1lZGlhS2V5czsKKyAgICAgICAgICAgIHZhciBtZWRpYUtleVNlc3Npb247CisgICAgICAgICAg
ICB2YXIgaW5pdERhdGEgPSBzdHJpbmdUb1VpbnQ4QXJyYXkoJ21vY2snKTsKKyAgICAgICAgICAg
IHZhciBpbnZhbGlkS2V5ID0gc3RyaW5nVG9VaW50OEFycmF5KCdpbnZhbGlkJyk7CisgICAgICAg
ICAgICB2YXIgdmFsaWRLZXkgPSBzdHJpbmdUb1VpbnQ4QXJyYXkoJ2tleScpOworCisgICAgICAg
ICAgICBmdW5jdGlvbiBydW5UZXN0KCkgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Ly8gSW5pdGlhbGl6ZSB0aGUgTW9ja0NETS4gSXQgc3VwcG9ydHMgdGhlIGtleSBzeXN0ZW0gJ2Nv
bS5hcHBsZS5tb2NrJywgdGhlIAorICAgICAgICAgICAgICAgIC8vIG1pbWUgdHlwZSAndmlkZW8v
bW9jaycuIEl0IHJlcXVpcmVzIGluaXQgZGF0YSB0byBiZWdpbiB3aXRoICdtb2NrJywgYW5kCisg
ICAgICAgICAgICAgICAgLy8ga2V5cyB0byBiZWdpbiB3aXRoICdrZXknLgorICAgICAgICAgICAg
ICAgIGlmIChpbnRlcm5hbHMpCisgICAgICAgICAgICAgICAgICAgIGludGVybmFscy5pbml0aWFs
aXplTW9ja0NETSgpOworCisgICAgICAgICAgICAgICAgcnVuKCdtZWRpYUtleXMgPSBuZXcgTWVk
aWFLZXlzKCJjb20ud2ViY29yZS5tb2NrIiknKTsKKyAgICAgICAgICAgICAgICBydW4oJ21lZGlh
S2V5U2Vzc2lvbiA9IG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ2aWRlby9tb2NrIiwgaW5pdERh
dGEpJyk7CisgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50KCd3ZWJraXRrZXltZXNzYWdlJywg
a2V5TWVzc2FnZSwgZmFsc2UsIGZhbHNlLCBtZWRpYUtleVNlc3Npb24pOworICAgICAgICAgICAg
ICAgIHdhaXRGb3JFdmVudCgnd2Via2l0a2V5ZXJyb3InLCBrZXlFcnJvciwgZmFsc2UsIGZhbHNl
LCBtZWRpYUtleVNlc3Npb24pOworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnd2Via2l0
a2V5YWRkZWQnLCBudWxsLCB0cnVlLCBmYWxzZSwgbWVkaWFLZXlTZXNzaW9uKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24ga2V5TWVzc2FnZShldmVudCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBydW4oJ21lZGlhS2V5U2Vzc2lvbi5hZGRLZXkoaW52YWxp
ZEtleSknKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24ga2V5RXJyb3Io
ZXZlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcnVuKCdtZWRpYUtleVNlc3Np
b24uYWRkS2V5KHZhbGlkS2V5KScpOworICAgICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgICAgICA8cD5U
aGlzIHRlc3RzIHRoZSBldmVudHMgY3JlYXRlZCBieSBNZWRpYUtleXMuPC9wPgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlh
L2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3lu
dGF4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzA1MTExOTY4NTc2MTI2ZTdiZTA4OWNjNTY3
NGJhM2RlZGE3MjRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlw
dGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXgtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMjYgQEAKK1RoaXMgdGVzdHMgdGhlIGJhc2ljIEFQSSBvZiBNZWRpYUtleXMgYW5kIE1lZGlh
S2V5U2Vzc2lvbi4KKworVGVzdCBNZWRpYUtleXMuCitFWFBFQ1RFRCAodHlwZW9mIHdpbmRvdy5N
ZWRpYUtleXMgPT0gJ29iamVjdCcpIE9LCitURVNUKG5ldyBNZWRpYUtleXMoIiIpKSBUSFJPV1Mo
RE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUikgT0sKK1RFU1QobmV3IE1lZGlhS2V5cygi
dW5zdXBwb3J0ZWQiKSkgVEhST1dTKERPTUV4Y2VwdGlvbi5OT1RfU1VQUE9SVEVEX0VSUikgT0sK
K1JVTihtZWRpYUtleXMgPSBuZXcgTWVkaWFLZXlzKCJjb20ud2ViY29yZS5tb2NrIikpCitFWFBF
Q1RFRCAobWVkaWFLZXlzLmtleVN5c3RlbSA9PSAnY29tLndlYmNvcmUubW9jaycpIE9LCitFWFBF
Q1RFRCAodHlwZW9mIG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uID09ICdmdW5jdGlvbicpIE9LCitU
RVNUKG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCIiLCBuZXcgVWludDhBcnJheSgxKSkpIFRIUk9X
UyhET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1NfRVJSKSBPSworVEVTVChtZWRpYUtleXMuY3Jl
YXRlU2Vzc2lvbigidW5zdXBwb3J0ZWQvdHlwZSIpKSBUSFJPV1MoRE9NRXhjZXB0aW9uLk5PVF9T
VVBQT1JURURfRVJSKSBPSworCitUZXN0IE1lZGlhS2V5U2Vzc2lvbi4KK1JVTihtZWRpYUtleVNl
c3Npb24gPSBtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidmlkZW8vbW9jayIsIGluaXREYXRhKSkK
K0VYUEVDVEVEICh0eXBlb2YgbWVkaWFLZXlTZXNzaW9uID09ICdvYmplY3QnKSBPSworRVhQRUNU
RUQgKHR5cGVvZiBtZWRpYUtleVNlc3Npb24uYWRkRXZlbnRMaXN0ZW5lciA9PSAnZnVuY3Rpb24n
KSBPSworRVhQRUNURUQgKHR5cGVvZiBtZWRpYUtleVNlc3Npb24uYWRkS2V5ID09ICdmdW5jdGlv
bicpIE9LCitFWFBFQ1RFRCAobWVkaWFLZXlTZXNzaW9uLmVycm9yID09ICdudWxsJykgT0sKK0VY
UEVDVEVEIChtZWRpYUtleVNlc3Npb24ua2V5U3lzdGVtID09ICdjb20ud2ViY29yZS5tb2NrJykg
T0sKK0VYUEVDVEVEIChtZWRpYUtleVNlc3Npb24uc2Vzc2lvbklkICE9ICdudWxsJykgT0sKK0VY
UEVDVEVEIChtZWRpYUtleVNlc3Npb24ub253ZWJraXRrZXlhZGRlZCA9PSAnbnVsbCcpIE9LCitF
WFBFQ1RFRCAobWVkaWFLZXlTZXNzaW9uLm9ud2Via2l0a2V5ZXJyb3IgPT0gJ251bGwnKSBPSwor
RVhQRUNURUQgKG1lZGlhS2V5U2Vzc2lvbi5vbndlYmtpdGtleW1lc3NhZ2UgPT0gJ251bGwnKSBP
SworVEVTVChtZWRpYUtleVNlc3Npb24uYWRkS2V5KG51bGwpKSBUSFJPV1MoRE9NRXhjZXB0aW9u
LklOVkFMSURfQUNDRVNTX0VSUikgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4Lmh0
bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYy
LXN5bnRheC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MjBhYzliNzZkNmRiZTFmZGNiZDE3OTUyY2QzMTQ2
MzliZGQ3YzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQt
bWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRheC5odG1sCkBAIC0wLDAgKzEsNTggQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT5NZWRpYUtl
eXM8L3RpdGxlPgorICAgICAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0LmpzPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZnVuY3Rpb24gc3RyaW5nVG9VaW50OEFy
cmF5KHN0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgYXJyPVtdOworICAg
ICAgICAgICAgICAgIGZvcih2YXIgaT0wLGo9c3RyLmxlbmd0aDtpPGo7KytpKXsKKyAgICAgICAg
ICAgICAgICAgIGFycltpXT1zdHIuY2hhckNvZGVBdChpKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGFycik7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciBtZWRpYUtleXM7CisgICAgICAgICAgICB2YXIgbWVkaWFLZXlT
ZXNzaW9uOworICAgICAgICAgICAgdmFyIGluaXREYXRhID0gc3RyaW5nVG9VaW50OEFycmF5KCdt
b2NrJyk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBNb2NrQ0RNLiBJdCBzdXBwb3J0cyB0
aGUga2V5IHN5c3RlbSAnY29tLmFwcGxlLm1vY2snLCB0aGUgCisgICAgICAgICAgICAgICAgLy8g
bWltZSB0eXBlICd2aWRlby9tb2NrJy4gSXQgcmVxdWlyZXMgaW5pdCBkYXRhIHRvIGJlZ2luIHdp
dGggJ21vY2snLCBhbmQKKyAgICAgICAgICAgICAgICAvLyBrZXlzIHRvIGJlZ2luIHdpdGggJ2tl
eScuCisgICAgICAgICAgICAgICAgaWYgKGludGVybmFscykKKyAgICAgICAgICAgICAgICAgICAg
aW50ZXJuYWxzLmluaXRpYWxpemVNb2NrQ0RNKCk7CisKKyAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIlRlc3QgTWVkaWFLZXlzLiIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgn
dHlwZW9mIHdpbmRvdy5NZWRpYUtleXMnLCAnb2JqZWN0Jyk7CisgICAgICAgICAgICAgICAgdGVz
dEV4Y2VwdGlvbignbmV3IE1lZGlhS2V5cygiIiknLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfQUND
RVNTX0VSUiIpOworICAgICAgICAgICAgICAgIHRlc3RFeGNlcHRpb24oJ25ldyBNZWRpYUtleXMo
InVuc3VwcG9ydGVkIiknLCAiRE9NRXhjZXB0aW9uLk5PVF9TVVBQT1JURURfRVJSIik7CisgICAg
ICAgICAgICAgICAgcnVuKCdtZWRpYUtleXMgPSBuZXcgTWVkaWFLZXlzKCJjb20ud2ViY29yZS5t
b2NrIiknKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ21lZGlhS2V5cy5rZXlTeXN0
ZW0nLCAnY29tLndlYmNvcmUubW9jaycpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgn
dHlwZW9mIG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uJywgJ2Z1bmN0aW9uJyk7CisgICAgICAgICAg
ICAgICAgdGVzdEV4Y2VwdGlvbignbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oIiIsIG5ldyBVaW50
OEFycmF5KDEpKScsICJET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1NfRVJSIik7CisgICAgICAg
ICAgICAgICAgdGVzdEV4Y2VwdGlvbignbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oInVuc3VwcG9y
dGVkL3R5cGUiKScsICJET01FeGNlcHRpb24uTk9UX1NVUFBPUlRFRF9FUlIiKTsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRl
KCJUZXN0IE1lZGlhS2V5U2Vzc2lvbi4iKTsKKyAgICAgICAgICAgICAgICBydW4oJ21lZGlhS2V5
U2Vzc2lvbiA9IG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ2aWRlby9tb2NrIiwgaW5pdERhdGEp
Jyk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd0eXBlb2YgbWVkaWFLZXlTZXNzaW9u
JywgJ29iamVjdCcpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndHlwZW9mIG1lZGlh
S2V5U2Vzc2lvbi5hZGRFdmVudExpc3RlbmVyJywgJ2Z1bmN0aW9uJyk7CisgICAgICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCd0eXBlb2YgbWVkaWFLZXlTZXNzaW9uLmFkZEtleScsICdmdW5jdGlv
bicpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnbWVkaWFLZXlTZXNzaW9uLmVycm9y
JywgbnVsbCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleVNlc3Npb24u
a2V5U3lzdGVtJywgJ2NvbS53ZWJjb3JlLm1vY2snKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ21lZGlhS2V5U2Vzc2lvbi5zZXNzaW9uSWQnLCBudWxsLCAnIT0nKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoJ21lZGlhS2V5U2Vzc2lvbi5vbndlYmtpdGtleWFkZGVkJywg
bnVsbCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleVNlc3Npb24ub253
ZWJraXRrZXllcnJvcicsIG51bGwpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnbWVk
aWFLZXlTZXNzaW9uLm9ud2Via2l0a2V5bWVzc2FnZScsIG51bGwpOworICAgICAgICAgICAgICAg
IHRlc3RFeGNlcHRpb24oJ21lZGlhS2V5U2Vzc2lvbi5hZGRLZXkobnVsbCknLCAiRE9NRXhjZXB0
aW9uLklOVkFMSURfQUNDRVNTX0VSUiIpOworICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0icnVuVGVzdCgpIj4KKyAgICAgICAgPHA+VGhpcyB0ZXN0cyB0aGUgYmFzaWMgQVBJIG9m
IE1lZGlhS2V5cyBhbmQgTWVkaWFLZXlTZXNzaW9uLjwvcD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAppbmRl
eCBiMDRjOTcyMzgwMjMzNTkwZTdlZDI1OWQ1YWNhNDQyMjlhYThlOTgwLi4zNzVkMzM2MjQ1YTRj
MTQzNjcwYWRlMmFkMjk5NjI0ZjBjNDEwZmIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZApA
QCAtNDc1LDkgKzQ3NSwxMSBAQCBtZWRpYS90cmFjay90cmFjay13ZWJ2dHQtdGMwMjgtdW5zdXBw
b3J0ZWQtbWFya3VwLmh0bWwKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY0NzMxCiBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS8KIAotIyBFbmNyeXB0ZWQg
TWVkaWEgRXh0ZW5zaW9ucyBhcmUgbm90IGVuYWJsZWQuCi1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEv
Ci1mYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvbWVkaWEta2V5LWV2ZW50LWNvbnN0cnVjdG9yLmh0
bWwKKyMgRGVwcmVjYXRlZCBFbmNyeXB0ZWQgTWVkaWEgRXh0ZW5zaW9ucyBhcmUgbm90IGVuYWJs
ZWQuCittZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLWNhbi1wbGF5LXR5cGUt
d2VibS5odG1sCittZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLWV2ZW50cy5o
dG1sCittZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLW5vdC1sb2FkZWQuaHRt
bAorbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS1zeW50YXguaHRtbAogCiAj
IEZvbnQgZmVhdHVyZSBzZXR0aW5ncyBpcyBub3QgaW1wbGVtZW50ZWQuCiBjc3MzL2ZvbnQtZmVh
dHVyZS1zZXR0aW5ncy1yZW5kZXJpbmcuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtY2FuLXBsYXkt
dHlwZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEvZW5jcnlw
dGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS1jYW4tcGxheS10eXBlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yYWNjNzdhNDY1ODkwNmIyMTVkY2VlNjNkMDYzYThiNzc4YzRhMzM3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRp
YS9lbmNyeXB0ZWQtbWVkaWEtY2FuLXBsYXktdHlwZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3
NSBAQAorVGVzdCBFbmNyeXB0ZWQgTWVkaWEgZXh0ZW5zaW9uIG9mIEhUTUxNZWRpYUVsZW1lbnQg
Y2FuUGxheVR5cGUoKSBtZXRob2QuCisKK1RoZSB0ZXN0IGlzIGRlc2lnbmVkIHRvIHBhc3Mgd2l0
aCBhbnkgaW1wbGVtZW50YXRpb24gcmVnYXJkbGVzcyBvZiBzdXBwb3J0ZWQgbWVkaWEgdHlwZXMg
YW5kIHJlbGllcyBvbiB0aGUgZXhwZWN0ZWQgbG9nIHRvIGRldGVjdCB0aGUgZXhwZWN0ZWQgcmVz
dWx0cyBmb3Igc29tZSB0eXBlcy4gVG8gZ2V0IHN1ZmZpY2llbnQgY292ZXJhZ2UsIGl0IGlzIGlt
cG9ydGFudCB0aGF0IGFuIGltcGxlbWVudGF0aW9uIHN1cHBvcnQgY2xlYXJrZXkgZW5jcnlwdGlv
biBvZiBhdCBsZWFzdCBvbmUgb2YgdGhlIHR5cGVzIGJlbG93LgorCitBbHdheXMgcmV0dXJuIHRo
ZSBlbXB0eSBzdHJpbmcgZm9yIG5vIHR5cGUuCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUo
KSA9PSAnJykgT0sKKworQWx3YXlzIHJldHVybiB0aGUgZW1wdHkgc3RyaW5nIGZvciBhbiBlbXB0
eSB0eXBlLgorRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCcnKSA9PSAnJykgT0sKK0VYUEVD
VEVEICh2aWRlby5jYW5QbGF5VHlwZSgnJywgJycpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVv
LmNhblBsYXlUeXBlKCcnLCBudWxsKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5
VHlwZSgnJywgdW5kZWZpbmVkKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlw
ZSgnJywgJ3dlYmtpdC1vcmcudzMuY2xlYXJrZXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRl
by5jYW5QbGF5VHlwZSgnJywgJ1dlQmtJdC1PckcuVzMuQ2xFYVJrRXknKSA9PSAnJykgT0sKK0VY
UEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnJywgJ2NvbS5leGFtcGxlLmludmFsaWQnKSA9PSAn
JykgT0sKKworQWx3YXlzIHJldHVybiB0aGUgZW1wdHkgc3RyaW5nIGZvciB3aGVuIG5vIGNvbnRh
aW5lciBpcyBzcGVjaWZpZWQuCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvLycp
ID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby8nLCAnJykgPT0g
JycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvLycsIG51bGwpID09ICcn
KSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby8nLCB1bmRlZmluZWQpID09
ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby8nLCAnd2Via2l0LW9y
Zy53My5jbGVhcmtleScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2
aWRlby8nLCAnV2VCa0l0LU9yRy5XMy5DbEVhUmtFeScpID09ICcnKSBPSworRVhQRUNURUQgKHZp
ZGVvLmNhblBsYXlUeXBlKCd2aWRlby8nLCAnY29tLmV4YW1wbGUuaW52YWxpZCcpID09ICcnKSBP
SworCitBbHdheXMgcmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgZm9yIGFuIHVuc3VwcG9ydGVkIGNv
bnRhaW5lci4KK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vYmxhaGJsYWgnKSA9
PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vYmxhaGJsYWgnLCAn
JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL2JsYWhibGFo
JywgbnVsbCkgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL2Js
YWhibGFoJywgdW5kZWZpbmVkKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlw
ZSgndmlkZW8vYmxhaGJsYWgnLCAnd2Via2l0LW9yZy53My5jbGVhcmtleScpID09ICcnKSBPSwor
RVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9ibGFoYmxhaCcsICdXZUJrSXQtT3JH
LlczLkNsRWFSa0V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3Zp
ZGVvL2JsYWhibGFoJywgJ2NvbS5leGFtcGxlLmludmFsaWQnKSA9PSAnJykgT0sKKworRW1wdHkg
a2V5IHN5c3RlbSBwYXJhbWV0ZXJzIHNob3VsZCBub3QgYWZmZWN0IHRoZSByZXN1bHQgb2Ygdmlk
ZW8vbXA0IHR5cGVzLgorUmVzdWx0IG9mIHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9tcDQ7IENv
ZGVjcz0iYXZjMS40RDQwMEMiJyk6ICdwcm9iYWJseScKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5
VHlwZSgndmlkZW8vbXA0OyBDb2RlY3M9ImF2YzEuNEQ0MDBDIicsICcnKSA9PSAncHJvYmFibHkn
KSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9tcDQ7IENvZGVjcz0iYXZj
MS40RDQwMEMiJywgbnVsbCkgPT0gJ3Byb2JhYmx5JykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5Q
bGF5VHlwZSgndmlkZW8vbXA0OyBDb2RlY3M9ImF2YzEuNEQ0MDBDIicsIHVuZGVmaW5lZCkgPT0g
J3Byb2JhYmx5JykgT0sKK1RoZXJlIGFyZSBjdXJyZW50bHkgbm8gaW1wbGVtZW50YXRpb25zIHN1
cHBvcnRpbmcgZW5jcnlwdGlvbiBvZiB2aWRlby9tcDQuCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxh
eVR5cGUoJ3ZpZGVvL21wNDsgQ29kZWNzPSJhdmMxLjRENDAwQyInLCAnd2Via2l0LW9yZy53My5j
bGVhcmtleScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9t
cDQ7IENvZGVjcz0iYXZjMS40RDQwMEMiJywgJ1dlQmtJdC1PckcuVzMuQ2xFYVJrRXknKSA9PSAn
JykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vbXA0OyBDb2RlY3M9ImF2
YzEuNEQ0MDBDIicsICdjb20uZXhhbXBsZS5pbnZhbGlkJykgPT0gJycpIE9LCisKK0VtcHR5IGtl
eSBzeXN0ZW0gcGFyYW1ldGVycyBzaG91bGQgbm90IGFmZmVjdCB0aGUgcmVzdWx0IG9mIGF1ZGlv
L21wZWcgdHlwZXMuCitSZXN1bHQgb2YgdmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL21wZWcnKTog
J21heWJlJworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby9tcGVnJywgJycpID09
ICdtYXliZScpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL21wZWcnLCBu
dWxsKSA9PSAnbWF5YmUnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby9t
cGVnJywgdW5kZWZpbmVkKSA9PSAnbWF5YmUnKSBPSworVGhlcmUgYXJlIGN1cnJlbnRseSBubyBp
bXBsZW1lbnRhdGlvbnMgc3VwcG9ydGluZyBlbmNyeXB0aW9uIG9mIGF1ZGlvL21wZWcuCitFWFBF
Q1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL21wZWcnLCAnd2Via2l0LW9yZy53My5jbGVh
cmtleScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby9tcGVn
JywgJ1dlQmtJdC1PckcuVzMuQ2xFYVJrRXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5j
YW5QbGF5VHlwZSgnYXVkaW8vbXBlZycsICdjb20uZXhhbXBsZS5pbnZhbGlkJykgPT0gJycpIE9L
CisKK0VtcHR5IGtleSBzeXN0ZW0gcGFyYW1ldGVycyBzaG91bGQgbm90IGFmZmVjdCB0aGUgcmVz
dWx0IG9mIGF1ZGlvL3dhdiB0eXBlcy4KK1Jlc3VsdCBvZiB2aWRlby5jYW5QbGF5VHlwZSgnYXVk
aW8vd2F2Jyk6ICdtYXliZScKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vd2F2
JywgJycpID09ICdtYXliZScpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlv
L3dhdicsIG51bGwpID09ICdtYXliZScpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUo
J2F1ZGlvL3dhdicsIHVuZGVmaW5lZCkgPT0gJ21heWJlJykgT0sKK1RoZXJlIGFyZSBjdXJyZW50
bHkgbm8gaW1wbGVtZW50YXRpb25zIHN1cHBvcnRpbmcgZW5jcnlwdGlvbiBvZiBhdWRpby93YXYu
CitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL3dhdicsICd3ZWJraXQtb3JnLncz
LmNsZWFya2V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlv
L3dhdicsICdXZUJrSXQtT3JHLlczLkNsRWFSa0V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlk
ZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL3dhdicsICdjb20uZXhhbXBsZS5pbnZhbGlkJykgPT0gJycp
IE9LCisKK0VtcHR5IGtleSBzeXN0ZW0gcGFyYW1ldGVycyBzaG91bGQgbm90IGFmZmVjdCB0aGUg
cmVzdWx0IG9mIHZpZGVvL3dlYm0gdHlwZXMuCitSZXN1bHQgb2YgdmlkZW8uY2FuUGxheVR5cGUo
J3ZpZGVvL3dlYm0nKTogJycKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vd2Vi
bScsICcnKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vd2Vi
bScsIG51bGwpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby93
ZWJtJywgdW5kZWZpbmVkKSA9PSAnJykgT0sKK0FsbCBpbXBsZW1lbnRhdGlvbnMgdGhhdCBzdXBw
b3J0IFdlYk0gYW5kIEVuY3J5cHRlZCBNZWRpYSBzdXBwb3J0IGVuY3J5cHRlZCBXZWJNLgorRVhQ
RUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby93ZWJtJywgJ3dlYmtpdC1vcmcudzMuY2xl
YXJrZXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vd2Vi
bScsICdXZUJrSXQtT3JHLlczLkNsRWFSa0V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8u
Y2FuUGxheVR5cGUoJ3ZpZGVvL3dlYm0nLCAnY29tLmV4YW1wbGUuaW52YWxpZCcpID09ICcnKSBP
SworRU5EIE9GIFRFU1QKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186446</attachid>
            <date>2013-02-04 13:21:49 -0800</date>
            <delta_ts>2013-02-04 15:54:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97037-20130204131828.patch</filename>
            <type>text/plain</type>
            <size>149797</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MzI4YzcxNjMwOGViNjYyYzRlMGQ2NjJhYzg0NTExOGJhMmQ0MDE5Li5lNzM5NzIyZjIwMTYzNzMw
MDkwZTc3YjdhMmIxY2FlMTEyNjUxODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOS0xOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KworICAgICAgICBCcmluZyBXZWJLaXQgdXAgdG8gc3BlZWQgd2l0aCBsYXRlc3QgRW5jcnlwdGVk
IE1lZGlhIHNwZWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NzAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIERlZmluZSB0aGUgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiBzZXR0aW5nLgorCisgICAg
ICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTMtMDIt
MDQgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
ZHVwbGljYXRlIGVudHJpZXMgZnJvbSBKYXZhU2NyaXB0Q29yZSBYY29kZSBwcm9qZWN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IGNjNTNiN2I2NjE5YTY3NGQxOWYyNmUzNWRkNTdmOGJjZjc3MDUyMjcuLjdkNzQxZmI4OTgyYjY2
Yjg5ZDhlZGNlYjY1NWEwMDFhYTQ0ZDQ4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDkt
MTkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQnJpbmcgV2Vi
S2l0IHVwIHRvIHNwZWVkIHdpdGggbGF0ZXN0IEVuY3J5cHRlZCBNZWRpYSBzcGVjLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcwMzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZWZpbmUgdGhlIEVOQUJM
RV9FTkNSWVBURURfTUVESUFfVjIgc2V0dGluZy4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5o
OgorCiAyMDEzLTAyLTA0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAg
ICAgICAgU29ydCBXVEYgWGNvZGUgcHJvamVjdCBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGRiMDBkMjRj
MDZhYjU4MTdkYzg4MjRjNjIzMjIyN2I2YTMxMmY3Ni4uNTIzYjgyM2NkZjk3ZjgwNDMzMzcxYTNl
ZjhiZmE2YWY1OWMzYTA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3OCBAQAorMjAxMi0wOS0x
OSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBCcmluZyBXZWJL
aXQgdXAgdG8gc3BlZWQgd2l0aCBsYXRlc3QgRW5jcnlwdGVkIE1lZGlhIHNwZWMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzAzNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBtb3N0IHJlY2VudCB2
ZXJzaW9uIG9mIHRoZSBFbmNyeXB0ZWQgTWVkaWEgRXh0ZW5zaW9ucyBzcGVjIGJyZWFrcyBmdW5j
dGlvbmFsaXR5IG91dCBvZiB0aGUKKyAgICAgICAgSFRNTE1lZGlhRWxlbWVudCBhbmQgaW50byBu
ZXcgTWVkaWFLZXlzIGFuZCBNZWRpYUtleVNlc3Npb24gY2xhc3Nlcy4gU2luY2UgdGhlIENETSBm
dW5jdGlvbmFsaXR5CisgICAgICAgIGhhcyBiZWVuIHB1bGxlZCBvdXQgb2YgdGhlIG1lZGlhIGVs
ZW1lbnQsIHdlIGNyZWF0ZSBhIHByb3h5IENETSBjbGFzcyBhbmQgZmFjdG9yeSBzeXN0ZW0gZm9y
CisgICAgICAgIGNyZWF0aW5nIHNwZWNpZmljIENETSBrZXkgc3lzdGVtIGltcGxlbWVudGF0aW9u
cy4gVGhlIHNwZWMgYWxzbyBicmVha3Mgb3V0IE1lZGlhS2V5RXZlbnQKKyAgICAgICAgaW50byBk
aXN0aW5jdCBldmVudCBjbGFzc2VzLCBNZWRpYUtleU5lZWRlZEV2ZW50IGFuZCBNZWRpYUtleU1l
c3NhZ2VFdmVudCwgZm9yIG5lZWRrZXkgYW5kCisgICAgICAgIGtleW1lc3NhZ2UgZXZlbnRzLCBy
ZXNwZWN0aXZlbHkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNy
eXB0ZWQtbWVkaWEtdjItZXZlbnRzLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL2VuY3J5cHRl
ZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4Lmh0bWwKKworICAgICAgICBDRE0gaXMg
YSBwcm94eSBjbGFzcyAoYSBsYSBNZWRpYVBsYXllcikgZm9yIGEgc3BlY2lmaWMgQ0RNUHJpdmF0
ZUludGVyZmFjZSBpbXBsZW1lbnRhdGlvbi4gQSBDRE0KKyAgICAgICAgaW1wbGVtZW50YXRpb24g
aXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBDRE1GYWN0b3J5IGFuZCB3aWxsIGJlIGNyZWF0ZWQgaWYg
dGhhdCBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cworICAgICAgICB0aGUga2V5IHN5c3RlbSBwYXNz
ZWQgaW50byB0aGUgTWVkaWFLZXlzIGNvbnN0cnVjdG9yLiBDRE1TZXNzaW9uIGlzIGEgcHVyZS12
aXJ0dWFsIGludGVyZmFjZSBleHBvc2VkCisgICAgICAgIGJ5IGNvbmNyZXRlIENETVByaXZhdGUg
c3ViY2xhc3Nlcy4gIEl0cyBsaWZldGltZSBpcyBvd25lZCBieSBNZWRpYUtleVNlc3Npb24uCisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Omluc3RhbGxlZENETUZhY3Rvcmllcyk6IEluaXRpYWxpemUgYWxsIHRoZSBrbm93
biBDRE0gc3VidHlwZXMuIFBvcnRzIHdpbGwgYWRkIENETSBpbXBsZW1lbnRhdGlvbnMgaGVyZS4K
KyAgICAgICAgKFdlYkNvcmU6OkNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KTogUmVnaXN0ZXJzIGEg
bmV3IENETUZhY3RvcnkgdXNpbmcgdGhlIHBhc3NlZCBpbiBmdW5jdGlvbiBwb2ludGVycy4KKyAg
ICAgICAgKFdlYkNvcmU6OkNETUZhY3RvcnlGb3JLZXlTeXN0ZW0pOiBSZXR1cm4gdGhlIGZpcnN0
IENETSBmYWN0b3J5IHdoaWNoIHN1cHBvcnRzIHRoZSByZXF1ZXN0ZWQga2V5IHN5c3RlbS4KKyAg
ICAgICAgKFdlYkNvcmU6OkNETTo6c3VwcG9ydHNLZXlTeXN0ZW0pOiBXYWxrIHRoZSBpbnN0YWxs
ZWQgQ0RNcyBhbmQgYXNrIGlmIHRoZSBnaXZlbiBrZXkgc3lzdGVtIGlzIHN1cHBvcnRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNETTo6c3VwcG9ydHNLZXlTeXN0ZW1NSU1FVHlwZUFuZENvZGVjKTog
RGl0dG8sIHdpdGggYW4gYWRkaXRpb25hbCBNSU1FIHR5cGUgYW5kIGNvZGVjIHN0cmluZy4KKyAg
ICAgICAgKFdlYkNvcmU6OkNETTo6Y3JlYXRlKTogU2ltcGxlIGNvbnN0cnVjdG9yIHdyYXBwZXIu
CisgICAgICAgIChXZWJDb3JlOjpDRE06OkNETSk6IFNpbXBsZSBjb25zdHJ1Y3RvcjsgY2FsbHMg
YmVzdENETUZvcktleVN5c3RlbSgpIHRvIGNyZWF0ZSBpdCdzIHByaXZhdGUgaW1wbGVtZW50YXRp
b24uCisgICAgICAgIChXZWJDb3JlOjpDRE06On5DRE0pOiBTaW1wbGUgZGVzdHJ1Y3Rvci4KKyAg
ICAgICAgKFdlYkNvcmU6OkNETTo6Y3JlYXRlU2Vzc2lvbik6IENyZWF0ZXMgYSBuZXcgQ0RNU2Vz
c2lvbi4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNETTo6a2V5U3lzdGVtKTogU2ltcGxlIGFjY2Vzc29yIGZvciBtX2tl
eVN5c3RlbS4KKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb246OkNETVNlc3Npb24pOiBTaW1w
bGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uOjp+Q0RNU2Vzc2lv
bik6IFNpbXBsZSBkZXN0cnVjdG9yLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVJbnRlcmZh
Y2U6OkNETVByaXZhdGVJbnRlcmZhY2UpOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAgIChX
ZWJDb3JlOjpDRE1Qcml2YXRlSW50ZXJmYWNlOjp+Q0RNUHJpdmF0ZUludGVyZmFjZSk6IFNpbXBs
ZSBkZXN0cnVjdG9yLgorCisgICAgICAgIFRoZSBuZXcgY2xhc3NlcywgTWVkaWFLZXlNZXNzYWdl
RXZlbnQgYW5kIE1lZGlhS2V5TmVlZGVkRXZlbnQsIHRha2UgZGlzdGluY3Qgc3Vic2V0cyBvZiB0
aGUgaW5pdGlhbGl6ZXJzIG9mCisgICAgICAgIHRoZSBvcmlnaW5hbCBNZWRpYUtleU1lc3NhZ2VF
dmVudC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2
ZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50LmNw
cC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdDo6TWVkaWFLZXlN
ZXNzYWdlRXZlbnRJbml0KTogSW5pdGlhbGl6ZXIgbm93IG9ubHkgdGFrZXMgbWVzc2FnZSBhbmQg
ZGVzdGluYXRpb25VUkwKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleU1lc3NhZ2VFdmVudDo6TWVkaWFLZXlNZXNzYWdlRXZlbnQpOiBTaW1wbGUgY29u
c3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVudDo6fk1lZGlh
S2V5TWVzc2FnZUV2ZW50KTogU2ltcGxlIGRlc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUtleU1lc3NhZ2VFdmVudDo6aW50ZXJmYWNlTmFtZSk6IFN0YW5kYXJkIGludGVyZmFjZU5h
bWUuCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVu
dC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXZlbnQuaC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUpOiBTaW1wbGUgY29u
c3RydWN0aW9uIHdyYXBwZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVu
dDo6bWVzc2FnZSk6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9tZXNzYWdlLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlNZXNzYWdlRXZlbnQ6OmRlc3RpbmF0aW9uVVJMKTogU2ltcGxlIGFjY2Vz
c29yIGZvciBtX2Rlc3RpbmF0aW9uVVJMLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhS2V5RXZlbnQuaWRsLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlOZWVkZWRFdmVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFLZXlFdmVudC5oLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlOZWVkZWRFdmVudElu
aXQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnRJbml0KTogSW5pdGlhbGl6ZXIgbm93IG9ubHkgdGFrZXMg
aW5pdERhdGEgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlOZWVkZWRFdmVu
dDo6TWVkaWFLZXlOZWVkZWRFdmVudCk6IFNpbXBsZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhS2V5TmVlZGVkRXZlbnQ6On5NZWRpYUtleU5lZWRlZEV2ZW50KTogU2ltcGxl
IGRlc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU5lZWRlZEV2ZW50OjppbnRl
cmZhY2VOYW1lKTogU3RhbmRhcmQgaW50ZXJmYWNlTmFtZS4KKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50LmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU5l
ZWRlZEV2ZW50OjpjcmVhdGUpOiBTaW1wbGUgY29uc3RydWN0aW9uIHdyYXBwZXIuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleU5lZWRlZEV2ZW50Ojppbml0RGF0YSk6IFNpbXBsZSBhY2Nlc3Nv
ciBmb3IgbV9pbml0RGF0YS4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5TmVlZGVkRXZlbnQuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
S2V5RXZlbnQuaWRsLgorCisgICAgICAgIE1lZGlhS2V5U2Vzc2lvbiBpcyBhIG5ldyBjbGFzcyB0
aGF0IG1hcHMga2V5cyBhbmQga2V5IHJlcXVlc3RzIHRvIGEgZ2l2ZW4gc2Vzc2lvbiBJRDoKKyAg
ICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUpOiBTaW1wbGUgY29u
c3RydWN0aW9uIHdyYXBwZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246Ok1l
ZGlhS2V5U2Vzc2lvbik6IFNpbXBsZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhS2V5U2Vzc2lvbjo6fk1lZGlhS2V5U2Vzc2lvbik6IFNpbXBsZSBkZXN0cnVjdG9yOyBjYWxs
cyBjbG9zZSgpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpzZXRFcnJvcik6
IFNpbXBsZSBzZXR0ZXIgZm9yIG1fZXJyb3I7CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNl
c3Npb246OmNsb3NlKTogVGVsbCB0aGUgQ0RNIHRvIGNsZWFyIGFueSBzYXZlZCBzZXNzaW9uIGtl
eXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVz
dCk6IFN0YXJ0IGEgb25lLXNob3QgdGltZXIsIGhhbmRsZWQgaW4ga2V5UmVxdWVzdFRpbWVyRmly
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmtleVJlcXVlc3RUaW1lckZp
cmVkKTogRm9sbG93IHRoZSBzdGVwcyBpbiB0aGUgc3BlYzsgYXNrIHRoZSBDRE0gdG8gZ2VuZXJh
dGUgYSBrZXkgcmVxdWVzdC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6YWRk
S2V5KTogU3RhcnQgYSBvbmUtc2hvdCB0aW1lciwgaGFuZGxlZCBpbiBhZGRLZXlUaW1lckZpcmVk
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjphZGRLZXlUaW1lckZpcmVkKTog
Rm9sbG93IHRoZSBzdGVwcyBpbiB0aGUgc3BlYzsgcHJvdmlkZSB0aGUga2V5IGRhdGEgdCBvdGhl
IENETS4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6a2V5U3lzdGVtKTog
U2ltcGxlIGFjY2Vzc29yIGZvciBtX2tleVN5c3RlbS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
S2V5U2Vzc2lvbjo6c2Vzc2lvbklkKTogU2ltcGxlIGFjY2Vzc29yIGZvciBtX3Nlc3Npb25JZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6ZXJyb3IpOiBTaW1wbGUgYWNjZXNz
b3IgZm9yIG1fZXJyb3I7CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVNlc3Npb24uaWRsOgorCisgICAgICAgIE1lZGlhS2V5U2Vzc2lvbiBpbmhlcml0cyBmcm9tIEV2
ZW50VGFyZ2V0LCBhbmQgbXVzdCBvdmVycmlkZSB0aGUgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9ucyBp
biB0aGF0IGNsYXNzOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246Omlu
dGVyZmFjZU5hbWUpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpyZWZF
dmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmRlcmVmRXZl
bnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpldmVudFRhcmdl
dERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjplbnN1cmVFdmVudFRh
cmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KToKKworICAgICAgICBNZWRpYUtleXMgaXMgYSBuZXcgY2xhc3MgdGhhdCBl
bmNhcHN1bGF0ZXMgYSBDRE0gYW5kIGEgbnVtYmVyIG9mIGtleSBzZXNzaW9uczoKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlzOjpjcmVhdGUpOiBUaHJvdyBhbiBleGNlcHRpb24gaWYgdGhlIGtl
eSBzeXN0ZW0gcGFyYW1ldGVyIGlzIHVuc3VwcG9ydGVkOyBjcmVhdGUgYSBDRE0gb2JqZWN0Cisg
ICAgICAgICAgICBhbmQgYSBuZXcgTWVkaWFLZXlzIHNlc3Npb24uCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleXM6Ok1lZGlhS2V5cyk6IFNpbXBsZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhS2V5czo6fk1lZGlhS2V5cyk6IFNpbXBsZSBkZXN0cnVjdG9yLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9uKTogRm9sbG93IHRoZSBzcGVjIGFu
ZCBjcmVhdGUgYSBuZXcga2V5IHNlc3Npb24uCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleXMuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRXJy
b3IuaWRsLgorCisgICAgICAgIFByb3ZpZGUgYSBuZXcgaW50ZXJmYWNlIHRvIEhUTUxNZWRpYUVs
ZW1lbnQgZm9yIE1lZGlhUGxheWVyIHdoaWNoIGRvZXMgbm90IHJlcXVpcmUgYSBzZXNzaW9uSWQg
b3IgYSBrZXkgc3lzdGVtOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmtleU5lZWRlZCk6CisKKyAgICAgICAgTWVkaWFLZXlFcnJv
ciBub3cgaGFzIGEgc3lzdGVtQ29kZSBwYXJhbWV0ZXIgYW5kIG1lbWJlciB2YXJpYWJsZS4KKyAg
ICAgICAgKiBodG1sL01lZGlhS2V5RXJyb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5
RXJyb3I6OmNyZWF0ZSk6IFRha2UgYSBzeXN0ZW1Db2RlIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVs
dCAoMCkgdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleUVycm9yOjpNZWRpYUtleUVy
cm9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleUVycm9yOjpzeXN0ZW1Db2Rl
KTogU2ltcGxlIGFjY2Vzc29yIGZvciBtX3N5c3RlbUNvZGUuCisgICAgICAgICogaHRtbC9NZWRp
YUtleUVycm9yLmlkbDoKKworICAgICAgICBBZGQgbmV3IG1ldGhvZHMgdG8gSFRNTE1lZGlhRWxl
bWVudCB0byBzdXBwb3J0IE1lZGlhS2V5cy4gU3VwcG9ydCBkaWZmZXJlbnQgaW5pdGlhbGl6ZXIK
KyAgICAgICAgZm9yIHRoZSBNZWRpYUtleU5lZWRlZEV2ZW50LgorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRNZWRpYUtleXMpOiBTaW1wbGUgc2V0dGVyIGZvciBtX21lZGlhS2V5cy4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKTogVGhpcyB2ZXJz
aW9uIHRha2VzIGZld2VyIHBhcmFtZXRlcnMKKyAgICAgICAgICAgIHRoYW4gdGhlIGRlcHJlY2F0
ZWQgdmVyc2lvbi4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhS2V5cyk6IFNpbXBsZSBhY2Nlc3NvciBm
b3IgbV9tZWRpYUtleXMuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbDogQWRk
IHRoZSBtZWRpYUtleXMgYXR0cmlidXRlLgorCisgICAgICAgIEFkZCBhbiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBX1YyKSBjaGVjayB0byB0aGUgZXhpc3RpbmcgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkgb25lOgorICAgICAgICAqIGh0bWwvTWVkaWFFcnJvci5oOgorICAgICAgICAqIGh0bWwvTWVk
aWFFcnJvci5pZGw6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YmVzdE1lZGlhRW5naW5lRm9yVHlwZUFuZENvZGVjcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXI6OmtleU5lZWRlZCk6IFRoaXMgdmVyc2lvbiB0YWtlcyBmZXdlciBwYXJhbWV0ZXJzIHRo
YW4gdGhlCisgICAgICAgICAgICBkZXByZWNhdGVkIHZlcnNpb24uCisKKyAgICAgICAgU3VwcG9y
dCB0aGUgbmV3IHZlcnNpb24gb2YgY2FuUGxheVR5cGUgd2hpY2ggdGFrZXMgYW4gZXh0cmEgcGFy
YW1ldGVyOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpleHRlbmRlZFN1cHBvcnRzVHlwZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmV4dGVu
ZGVkU3VwcG9ydHNUeXBlKToKKworICAgICAgICBBZGQgYSBtb2NrIENETSBmb3IgdXNlIHdpdGhp
biBEUlQgYW5kIFdLVFIgdG8gdGVzdCB0aGUgTWVkaWFLZXlzIGFuZCBNZWRpYUtleVNlc3Npb24K
KyAgICAgICAgQVBJcyBhbmQgZXZlbnRzOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aW5pdGlhbGl6ZU1vY2tDRE0pOiBBZGQg
dGhlIE1vY2tDRE0gY2xhc3MgdG8gdGhlIENETSBmYWN0b3JpZXMuCisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6IEFkZCB0aGUg
aW5pdGlhbGl6ZU1vY2tDRE0oKSBtZXRob2QuCisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0c0tleVN5c3RlbSk6
IE9ubHkgc3VwcG9ydHMgdGhlICdjb20ud2ViY29yZS5tb2NrJyBrZXkgc3lzdGVtLgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydHNNSU1FVHlwZSk6IE9ubHkgc3VwcG9ydHMgdGhl
ICd2aWRlby9tb2NrJyBtaW1lIHR5cGUuCisgICAgICAgIChXZWJDb3JlOjppbml0RGF0YVByZWZp
eCk6IFN0YXRpYyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIFVpbnQ4QXJyYXkgY29udGFpbmluZyAn
bW9jaycuCisgICAgICAgIChXZWJDb3JlOjprZXlQcmVmaXgpOiBTdGF0aWMgbWV0aG9kIHdoaWNo
IHJldHVybnMgYSBVaW50OEFycmF5IGNvbnRhaW5pbmcgJ2tleScuCisgICAgICAgIChXZWJDb3Jl
OjprZXlSZXF1ZXN0KTogU3RhdGljIG1ldGhvZCB3aGljaCByZXR1cm5zIGEgVWludDhBcnJheSBj
b250YWluaW5nICdyZXF1ZXN0Jy4KKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlU2Vzc2lvbklk
KTogUmV0dXJuIGEgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIG51bWJlci4KKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDRE1TZXNzaW9uOjpNb2NrQ0RNU2Vzc2lvbik6IFNpbXBsZSBjb25zdHJ1Y3Rv
ci4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3Qp
OiBJZ25vcmVzIHRoZSBwYXJhbWV0ZXJzIGFuZCByZXR1cm5zIGEga2V5UmVxdWVzdCgpIGFycmF5
LgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETVNlc3Npb246OnJlbGVhc2VLZXlzKTogTm8tb3Au
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNU2Vzc2lvbjo6YWRkS2V5KTogQ2hlY2tzIHRoYXQg
dGhlIGtleSBzdGFydHMgd2l0aCB0aGUga2V5UHJlZml4KCkgYXJyYXkuCisgICAgICAgICogdGVz
dGluZy9Nb2NrQ0RNLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06On5Nb2NrQ0RNKTogU2ltcGxlIGRlc3RydWN0
b3IuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpNb2NrQ0RNKTogU2ltcGxlIGNvbnN0cnVj
dG9yLgorCisgICAgICAgIEFkZCB0aGUgbmV3IGNsYXNzZXMgdG8gdGhlIGJ1aWx0IHN5c3RlbToK
KyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBNaXNj
ZWxhbmVvdXMgY2hhbmdlczoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5pbjogQWRkIHRoZSB0
d28gbmV3IGV2ZW50IHR5cGVzLCBNZWRpYUtleU1lc3NhZ2VFdmVudCBhbmQgTWVkaWFLZXlOZWVk
ZWRFdmVudC4KKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOiBBZGQgdGhlIG5l
dyBFdmVudFRhcmdldCwgTWVkaWFLZXlTZXNzaW9uLgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmlkbDogQWRkIGNvbnN0cnVjdG9ycyBmb3IgdGhlIG5ldyBjbGFzc2VzIHRvIHRoZSB3aW5kb3cg
b2JqZWN0LgorCiAyMDEzLTAyLTAxICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZW1vdmUgZHVwbGljYXRlIGNvZGUgaW4gUmVuZGVyQm94TW9kZWxPYmplY3Q6
OmNvbXB1dGVkQ1NTUGFkZGluZyoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCA4YjMzZDJl
NDA5NmZlNjQ5YWVjMGE5YmIwMTY1OGNkOTgxZjE0M2ViLi5hODE2MWZhZTU1ZDgzMWNiYjBiYjhj
NjBlNTBjOTljMmQyMzdlMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC02NSwxMSAr
NjUsMTEgQEAgRU5BQkxFX0RJQUxPR19FTEVNRU5UID0gOwogRU5BQkxFX0RJUkVDVE9SWV9VUExP
QUQgPSA7CiBFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IgPSBFTkFCTEVfRE9NNF9FVkVO
VFNfQ09OU1RSVUNUT1I7CiBFTkFCTEVfRFJBR0dBQkxFX1JFR0lPTiA9IDsKLUVOQUJMRV9FTkNS
WVBURURfTUVESUEgPSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfJChQTEFURk9STV9OQU1FKSk7
Ci1FTkFCTEVfRU5DUllQVEVEX01FRElBX21hY29zeCA9ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJ
QV9tYWNvc3hfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwotRU5BQkxFX0VOQ1JZ
UFRFRF9NRURJQV9tYWNvc3hfMTA3MCA9IDsKLUVOQUJMRV9FTkNSWVBURURfTUVESUFfbWFjb3N4
XzEwODAgPSA7Ci1FTkFCTEVfRU5DUllQVEVEX01FRElBX21hY29zeF8xMDkwID0gRU5BQkxFX0VO
Q1JZUFRFRF9NRURJQTsKK0VOQUJMRV9FTkNSWVBURURfTUVESUFfVjIgPSAkKEVOQUJMRV9FTkNS
WVBURURfTUVESUFfVjJfJChSRUFMX1BMQVRGT1JNX05BTUUpKTsKK0VOQUJMRV9FTkNSWVBURURf
TUVESUFfVjJfbWFjb3N4ID0gJChFTkFCTEVfRU5DUllQVEVEX01FRElBX21hY29zeF8kKFRBUkdF
VF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSk7CitFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21h
Y29zeF8xMDcwID0gOworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3hfMTA4MCA9IDsK
K0VOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEwOTAgPSBFTkFCTEVfRU5DUllQVEVE
X01FRElBX1YyOwogRU5BQkxFX0ZJTEVfU1lTVEVNID0gOwogRU5BQkxFX0ZJTFRFUlMgPSBFTkFC
TEVfRklMVEVSUzsKIEVOQUJMRV9GVUxMU0NSRUVOX0FQSSA9ICQoRU5BQkxFX0ZVTExTQ1JFRU5f
QVBJXyQoUExBVEZPUk1fTkFNRSkpOwpAQCAtMTY2LDQgKzE2Niw0IEBAIEVOQUJMRV9XT1JLRVJT
ID0gRU5BQkxFX1dPUktFUlM7CiBFTkFCTEVfWEhSX1RJTUVPVVQgPSBFTkFCTEVfWEhSX1RJTUVP
VVQ7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVO
QUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFC
TEVfQkxPQikgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChF
TkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1Nf
Qk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChF
TkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1Nf
SU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJM
RV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5BQkxFX0NTU19DT01QT1NJ
VElORykgJChFTkFCTEVfQ1NTX1NUSUNLWV9QT1NJVElPTikgJChFTkFCTEVfQ1NTX1RSQU5TRk9S
TVNfQU5JTUFUSU9OU19VTlBSRUZJWEVEKSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJM
RV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NV
U1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxF
X0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxF
X0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9E
SUFMT0dfRUxFTUVOVCkgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NNF9F
VkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0RSQUdHQUJMRV9SRUdJT04pICQoRU5BQkxFX0VO
Q1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZJTFRFUlMpICQo
RU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NB
VElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxF
X0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVf
U0VBTUxFU1MpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVD
SCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1F
TE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElN
RSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VS
KSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05P
VElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xF
R0FDWV9XRUJfQVVESU8pICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJTktfUFJF
UkVOREVSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVf
TUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwp
ICQoRU5BQkxFX01JQ1JPREFUQSkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJM
RV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFC
TEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVf
UExVR0lOX1BST1hZX0ZPUl9WSURFTykgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFC
TEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5J
TUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9T
Q1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JL
RVJTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TUUxfREFUQUJBU0UpICQo
RU5BQkxFX1NUWUxFX1NDT1BFRCkgJChFTkFCTEVfU1VCUElYRUxfTEFZT1VUKSAkKEVOQUJMRV9T
VkcpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAk
KEVOQUJMRV9URU1QTEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5B
QkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcp
ICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9f
VFJBQ0spICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9T
T0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9Y
SFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChGRUFUVVJFX0RFRklORVNfJChQTEFURk9STV9O
QU1FKSk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxF
X0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0FOVkFTX1BB
VEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQo
RU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5B
QkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5B
QkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxF
X0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NT
X1NIQURFUlMpICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX1NUSUNLWV9Q
T1NJVElPTikgJChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19VTlBSRUZJWEVEKSAk
KEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKSAk
KEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFC
TEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxF
X0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVf
REVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESUFMT0dfRUxFTUVOVCkgJChFTkFCTEVfRElS
RUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxF
X0RSQUdHQUJMRV9SRUdJT04pICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFCTEVf
RklMRV9TWVNURU0pICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAk
KEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVOX1BB
R0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFC
TEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVY
RURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9D
T0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVU
SU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9X
RUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZF
TkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xF
R0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5BQkxF
X0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJTktfUFJFUkVOREVSKSAkKEVOQUJMRV9NQVRITUwp
ICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFC
TEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01JQ1JPREFUQSkgJChF
TkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElM
UykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkg
JChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUExVR0lOX1BST1hZX0ZPUl9WSURFTykg
JChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChF
TkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9S
RVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxF
X1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUEVFQ0hfU1lO
VEhFU0lTKSAkKEVOQUJMRV9TUUxfREFUQUJBU0UpICQoRU5BQkxFX1NUWUxFX1NDT1BFRCkgJChF
TkFCTEVfU1VCUElYRUxfTEFZT1VUKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19ET01fT0JK
Q19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5U
KSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19P
TkxZKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxM
KSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1dFQkdMKSAk
KEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElN
SU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNM
VCkgJChGRUFUVVJFX0RFRklORVNfJChQTEFURk9STV9OQU1FKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCBi
OGZiYzkwMjljZGM3MDk3Y2VlMjFhNmI0NWZlYWUzZmM0YjZiNzA2Li4wYTU2OWU2Y2U3Yjg1OTFk
NzcyZTA4ZTY0NzZjMjY3NmYzNGJmZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTExNjcsNiArMTE2Nyw3
IEBACiAKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogI2RlZmluZSBIQVZFX0FWRk9VTkRBVElPTl9U
RVhUX1RSQUNLX1NVUFBPUlQgMQorI2RlZmluZSBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyIDEK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KEVGTCkgfHwgKFBMQVRGT1JNKFdJTikgJiYgIU9TKFdJTkNFKSAmJiAhUExBVEZPUk0oV0lOX0NB
SVJPKSkgfHwgUExBVEZPUk0oQkxBQ0tCRVJSWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggOGIzM2QyZTQwOTZm
ZTY0OWFlYzBhOWJiMDE2NThjZDk4MWYxNDNlYi4uODNhNjdjNmRhNjg0ODI2NTUyYTU3NzljZTYy
NDhlNDI5NGFiZDY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTY1LDExICs2NSwxMSBAQCBFTkFCTEVfRElB
TE9HX0VMRU1FTlQgPSA7CiBFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCA9IDsKIEVOQUJMRV9ET000
X0VWRU5UU19DT05TVFJVQ1RPUiA9IEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUjsKIEVO
QUJMRV9EUkFHR0FCTEVfUkVHSU9OID0gOwotRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSA9ICQoRU5B
QkxFX0VOQ1JZUFRFRF9NRURJQV8kKFBMQVRGT1JNX05BTUUpKTsKLUVOQUJMRV9FTkNSWVBURURf
TUVESUFfbWFjb3N4ID0gJChFTkFCTEVfRU5DUllQVEVEX01FRElBX21hY29zeF8kKFRBUkdFVF9N
QUNfT1NfWF9WRVJTSU9OX01BSk9SKSk7Ci1FTkFCTEVfRU5DUllQVEVEX01FRElBX21hY29zeF8x
MDcwID0gOwotRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9tYWNvc3hfMTA4MCA9IDsKLUVOQUJMRV9F
TkNSWVBURURfTUVESUFfbWFjb3N4XzEwOTAgPSBFTkFCTEVfRU5DUllQVEVEX01FRElBOworRU5B
QkxFX0VOQ1JZUFRFRF9NRURJQV9WMiA9ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl8kKFJF
QUxfUExBVEZPUk1fTkFNRSkpOworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3ggPSAk
KEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJ
T05fTUFKT1IpKTsKK0VOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEwNzAgPSA7CitF
TkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeF8xMDgwID0gOworRU5BQkxFX0VOQ1JZUFRF
RF9NRURJQV9WMl9tYWNvc3hfMTA5MCA9IEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI7CiBFTkFC
TEVfRklMRV9TWVNURU0gPSA7CiBFTkFCTEVfRklMVEVSUyA9IEVOQUJMRV9GSUxURVJTOwogRU5B
QkxFX0ZVTExTQ1JFRU5fQVBJID0gJChFTkFCTEVfRlVMTFNDUkVFTl9BUElfJChQTEFURk9STV9O
QU1FKSk7CkBAIC0xNjYsNCArMTY2LDQgQEAgRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VS
UzsKIEVOQUJMRV9YSFJfVElNRU9VVCA9IEVOQUJMRV9YSFJfVElNRU9VVDsKIEVOQUJMRV9YU0xU
ID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklO
RykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJM
RV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01F
U1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9C
UkVBSykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfRVhDTFVT
SU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElP
TikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAk
KEVOQUJMRV9DU1NfU0hBREVSUykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9D
U1NfU1RJQ0tZX1BPU0lUSU9OKSAkKEVOQUJMRV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1VO
UFJFRklYRUQpICQoRU5BQkxFX0NTU19WQVJJQUJMRVMpICQoRU5BQkxFX0NTUzNfQ09ORElUSU9O
QUxfUlVMRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5E
TEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVO
VCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5U
KSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJQUxPR19FTEVNRU5UKSAk
KEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RP
UikgJChFTkFCTEVfRFJBR0dBQkxFX1JFR0lPTikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAk
KEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRlVMTFNDUkVF
Tl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9I
SURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFT
KSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lGUkFNRV9TRUFNTEVTUykgJChFTkFC
TEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfREFURVRJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVf
SU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX1dFRUspICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX0xFR0FD
WV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChF
TkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX1dFQl9BVURJTykg
JChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTElOS19QUkVSRU5ERVIpICQoRU5BQkxF
X01BVEhNTCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNT
KSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTUlDUk9E
QVRBKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05U
RU5UX1VUSUxTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJ
VFlfQVBJKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QTFVHSU5fUFJPWFlfRk9S
X1ZJREVPKSAkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZF
TlRTKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQo
RU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCkg
JChFTkFCTEVfU0hBRE9XX0RPTSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NQ
RUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NRTF9EQVRBQkFTRSkgJChFTkFCTEVfU1RZTEVfU0NP
UEVEKSAkKEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZH
X0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTVBMQVRF
X0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVEVYVF9OT1RJRklD
QVRJT05TX09OTFkpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNF
TEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVf
V0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxF
X1dFQl9USU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVO
QUJMRV9YU0xUKSAkKEZFQVRVUkVfREVGSU5FU18kKFBMQVRGT1JNX05BTUUpKTsKK0ZFQVRVUkVf
REVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRf
Q0FOVkFTKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FO
VkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQp
ICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0RFVklDRV9B
REFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfRVhDTFVTSU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMp
ICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09M
VVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0hBREVSUykgJChFTkFC
TEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BPU0lUSU9OKSAkKEVOQUJM
RV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1VOUFJFRklYRUQpICQoRU5BQkxFX0NTU19WQVJJ
QUJMRVMpICQoRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVMpICQoRU5BQkxFX0NTUzNfVEVY
VCkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQ
UE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9J
VEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJ
T04pICQoRU5BQkxFX0RJQUxPR19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAk
KEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRFJBR0dBQkxFX1JFR0lP
TikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChF
TkFCTEVfRklMVEVSUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQp
ICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhS
T1RUTElORykgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKSAkKEVOQUJMRV9JQ09OREFUQUJBU0Up
ICQoRU5BQkxFX0lGUkFNRV9TRUFNTEVTUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChF
TkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUUpICQoRU5BQkxFX0lO
UFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFC
TEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0pB
VkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAk
KEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVG
SVhFUykgJChFTkFCTEVfTEVHQUNZX1dFQl9BVURJTykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkg
JChFTkFCTEVfTElOS19QUkVSRU5ERVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFf
U09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5U
KSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTUlDUk9EQVRBKSAkKEVOQUJMRV9NT1VTRV9DVVJT
T1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OT1RJ
RklDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QREZLSVRf
UExVR0lOKSAkKEVOQUJMRV9QTFVHSU5fUFJPWFlfRk9SX1ZJREVPKSAkKEVOQUJMRV9QUk9HUkVT
U19FTEVNRU5UKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9RVU9UQSkgJChF
TkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFf
UVVFUlkpICQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCkgJChFTkFCTEVfU0hBRE9XX0RPTSkgJChF
TkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxF
X1NRTF9EQVRBQkFTRSkgJChFTkFCTEVfU1RZTEVfU0NPUEVEKSAkKEVOQUJMRV9TVUJQSVhFTF9M
QVlPVVQpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVO
QUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRf
QVVUT1NJWklORykgJChFTkFCTEVfVEVYVF9OT1RJRklDQVRJT05TX09OTFkpICQoRU5BQkxFX1RP
VUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVP
KSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJ
TykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dP
UktFUlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJMRV9YU0xUKSAkKEZFQVRVUkVfREVG
SU5FU18kKFBMQVRGT1JNX05BTUUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4
IDYwNWEyMWVmM2RkZmRmMmE4N2ZlOWNhMjhhMTVlMWFmZjk2NTAxNDMuLjA3YjA2MTkxZmEzZGMx
ZTRmOGMzZDE1NTc5MjkyZjBhOTNhMTk3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtMjgsNiArMjgsNyBAQAogCiBWUEFUSCA9IFwKICAgICAkKFdlYkNvcmUpIFwKKwkkKFdl
YkNvcmUpL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9m
aWxlc3lzdGVtIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZ2VvbG9jYXRpb24gXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9pbmRleGVkZGIgXApAQCAtNjIsNiArNjMsMTAgQEAgVlBBVEggPSBc
CiAjCiAKIEJJTkRJTkdfSURMUyA9IFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwgXAorICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaWRsIFwKKyAgICAkKFdlYkNv
cmUpL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5pZGwgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NV2luZG93RmlsZVN5c3RlbS5pZGwgXApAQCAtMzY1LDgg
KzM3MCw4IEBAIEJJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSW1hZ2VEYXRh
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL01lZGlhQ29udHJvbGxlci5pZGwgXAogICAgICQo
V2ViQ29yZSkvaHRtbC9NZWRpYUVycm9yLmlkbCBcCi0JJChXZWJDb3JlKS9odG1sL01lZGlhS2V5
RXJyb3IuaWRsIFwKLQkkKFdlYkNvcmUpL2h0bWwvTWVkaWFLZXlFdmVudC5pZGwgXAorICAgICQo
V2ViQ29yZSkvaHRtbC9NZWRpYUtleUVycm9yLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL01l
ZGlhS2V5RXZlbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvTWljcm9EYXRhSXRlbVZhbHVl
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL1JhZGlvTm9kZUxpc3QuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2h0bWwvVGV4dE1ldHJpY3MuaWRsIFwKQEAgLTgzOCw2ICs4NDMsMTAgQEAgaWZlcSAo
JChmaW5kc3RyaW5nIEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQsJChGRUFUVVJFX0RFRklORVMpKSwg
RU5BQkxFX0RFVEFJTFNfRUwKICAgICBIVE1MX0ZMQUdTIDo9ICQoSFRNTF9GTEFHUykgRU5BQkxF
X0RFVEFJTFNfRUxFTUVOVD0xCiBlbmRpZgogCitpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX0VO
Q1JZUFRFRF9NRURJQV9WMiwkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfRU5DUllQVEVEX01F
RElBX1YyKQorCUhUTUxfRkxBR1MgOj0gJChIVE1MX0ZMQUdTKSBFTkFCTEVfRU5DUllQVEVEX01F
RElBX1YyPTEKK2VuZGlmCisKIGlmZXEgKCQoZmluZHN0cmluZyBFTkFCTEVfTUVURVJfRUxFTUVO
VCwkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfTUVURVJfRUxFTUVOVCkKICAgICBIVE1MX0ZM
QUdTIDo9ICQoSFRNTF9GTEFHUykgRU5BQkxFX01FVEVSX0VMRU1FTlQ9MQogZW5kaWYKQEAgLTk2
Miw2ICs5NzEsNyBAQCBwcmVwcm9jZXNzX2lkbHNfc2NyaXB0ID0gcGVybCAkKGFkZHByZWZpeCAt
SSAkKFdlYkNvcmUpLywgJChzb3J0ICQoZGlyICQoMSkpKSkgJAogCiBJRExfSU5DTFVERVMgPSBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2JhdHRlcnkgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0gXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9nYW1lcGFkIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZ2Vv
bG9jYXRpb24gXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM2YTg0OGZjOTQzMDg3ODEyOTkwNTI5YWZhNjdlOTYwZjMxODRjNjgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5jcHAKQEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ0RNLmgiCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQor
CisjaW5jbHVkZSAiQ0RNUHJpdmF0ZS5oIgorI2luY2x1ZGUgIk1lZGlhS2V5RXJyb3IuaCIKKyNp
bmNsdWRlICJNZWRpYUtleXMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQ0RNRmFjdG9yeSB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQ0RNRmFjdG9yeSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIENETUZhY3RvcnkoQ3JlYXRlQ0RNIGNvbnN0cnVjdG9yLCBDRE1TdXBwb3J0c0tleVN5
c3RlbSBzdXBwb3J0c0tleVN5c3RlbSkKKyAgICAgICAgOiBjb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rv
cikKKyAgICAgICAgLCBzdXBwb3J0c0tleVN5c3RlbShzdXBwb3J0c0tleVN5c3RlbSkKKyAgICB7
CisgICAgfQorCisgICAgQ3JlYXRlQ0RNIGNvbnN0cnVjdG9yOworICAgIENETVN1cHBvcnRzS2V5
U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtOworfTsKKworc3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5
Kj4mIGluc3RhbGxlZENETUZhY3RvcmllcygpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChW
ZWN0b3I8Q0RNRmFjdG9yeSo+LCBjZG1zLCAoKSk7CisgICAgc3RhdGljIGJvb2wgcXVlcmllZENE
TXMgPSBmYWxzZTsKKyAgICBpZiAoIXF1ZXJpZWRDRE1zKSB7CisgICAgICAgIHF1ZXJpZWRDRE1z
ID0gdHJ1ZTsKKworICAgICAgICAvLyBUT0RPOiBpbml0aWFsaXplIHNwZWNpZmljIFVBIENETXMu
CisgICAgfQorCisgICAgcmV0dXJuIGNkbXM7Cit9CisKK3ZvaWQgQ0RNOjpyZWdpc3RlckNETUZh
Y3RvcnkoQ3JlYXRlQ0RNIGNvbnN0cnVjdG9yLCBDRE1TdXBwb3J0c0tleVN5c3RlbSBzdXBwb3J0
c0tleVN5c3RlbSkKK3sKKyAgICBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKS5hcHBlbmQobmV3IENE
TUZhY3RvcnkoY29uc3RydWN0b3IsIHN1cHBvcnRzS2V5U3lzdGVtKSk7Cit9CisKK2Jvb2wgQ0RN
OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKK3sKKyAgICBWZWN0
b3I8Q0RNRmFjdG9yeSo+JiBjZG1GYWN0b3JpZXMgPSBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNkbUZhY3Rvcmllcy5zaXplKCk7ICsraSkgewor
ICAgICAgICBpZiAoY2RtRmFjdG9yaWVzW2ldLT5zdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0p
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30K
Kworc3RhdGljIENETUZhY3RvcnkqIENETUZhY3RvcnlGb3JLZXlTeXN0ZW0oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0pCit7CisgICAgVmVjdG9yPENETUZhY3RvcnkqPiYgY2RtRmFjdG9yaWVzID0g
aW5zdGFsbGVkQ0RNRmFjdG9yaWVzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjZG1G
YWN0b3JpZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGNkbUZhY3Rvcmllc1tpXS0+c3Vw
cG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKKyAgICAgICAgICAgIHJldHVybiBjZG1GYWN0b3Jp
ZXNbaV07CisgICAgfQorICAgIHJldHVybiAwOworfQorCitQYXNzT3duUHRyPENETT4gQ0RNOjpj
cmVhdGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7CisgICAgaWYgKCFzdXBwb3J0c0tleVN5
c3RlbShrZXlTeXN0ZW0pKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgQ0RNKGtleVN5c3RlbSkpOworfQorCitDRE06OkNETShjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSkKKyAgICA6IG1fa2V5U3lzdGVtKGtleVN5c3RlbSkKK3sKKyAgICBtX3ByaXZh
dGUgPSBDRE1GYWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSktPmNvbnN0cnVjdG9yKHRoaXMp
OworfQorCitDRE06On5DRE0oKQoreworfQorCitib29sIENETTo6c3VwcG9ydHNNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnN1cHBvcnRz
TUlNRVR5cGUobWltZVR5cGUpOworfQorCitQYXNzT3duUHRyPENETVNlc3Npb24+IENETTo6Y3Jl
YXRlU2Vzc2lvbigpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y3JlYXRlU2Vzc2lvbigpOwor
fQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjA4OTA3NmRl
NDNkMjY1YWU2ZjM1NTQyZGU5OTY4NTQxNzIyNTNiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTAsMCArMSw4MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgQ0RNX2gKKyNkZWZpbmUgQ0RNX2gKKworI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBN
ZWRpYUtleUVycm9yOworY2xhc3MgTWVkaWFLZXlTZXNzaW9uOworY2xhc3MgTWVkaWFLZXlzOwor
CitjbGFzcyBDRE07CitjbGFzcyBDRE1Qcml2YXRlSW50ZXJmYWNlOworY2xhc3MgQ0RNU2Vzc2lv
bjsKKwordHlwZWRlZiBQYXNzT3duUHRyPENETVByaXZhdGVJbnRlcmZhY2U+ICgqQ3JlYXRlQ0RN
KShDRE0qKTsKK3R5cGVkZWYgYm9vbCAoKkNETVN1cHBvcnRzS2V5U3lzdGVtKShjb25zdCBTdHJp
bmcmKTsKKworY2xhc3MgQ0RNU2Vzc2lvbiB7CitwdWJsaWM6CisgICAgQ0RNU2Vzc2lvbigpIHsg
fQorICAgIHZpcnR1YWwgfkNETVNlc3Npb24oKSB7IH0KKworICAgIHZpcnR1YWwgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQoKSA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+
IGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBp
bml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29k
ZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWxl
YXNlS2V5cygpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkS2V5KFVpbnQ4QXJyYXkqLCBSZWZQ
dHI8VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1
bnNpZ25lZCBsb25nJiBzeXN0ZW1Db2RlKSA9IDA7Cit9OworCitjbGFzcyBDRE0geworcHVibGlj
OgorICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpOworICAg
IHN0YXRpYyBQYXNzT3duUHRyPENETT4gY3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsK
KyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckNETUZhY3RvcnkoQ3JlYXRlQ0RNLCBDRE1TdXBwb3J0
c0tleVN5c3RlbSk7CisgICAgfkNETSgpOworCisgICAgYm9vbCBzdXBwb3J0c01JTUVUeXBlKGNv
bnN0IFN0cmluZyYpOworICAgIFBhc3NPd25QdHI8Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigp
OworCisgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2tleVN5
c3RlbTsgfQorCitwcml2YXRlOgorICAgIENETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CisK
KyAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CisgICAgT3duUHRyPENETVByaXZhdGVJbnRlcmZhY2U+
IG1fcHJpdmF0ZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUFf
VjIpCisKKyNlbmRpZiAvLyBDRE1faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzM3NTg4NGZhNGY4MmEwZWY5
MWNlMmIyYTkxZGI3ZTM5MTYwOWYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQ0RNUHJpdmF0ZV9oCisjZGVmaW5lIENETVByaXZhdGVfaAorCisj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBDRE1TZXNzaW9uOworCitjbGFzcyBDRE1Qcml2YXRlSW50ZXJmYWNlIHsKK3B1Ymxp
YzoKKyAgICBDRE1Qcml2YXRlSW50ZXJmYWNlKCkgeyB9CisgICAgdmlydHVhbCB+Q0RNUHJpdmF0
ZUludGVyZmFjZSgpIHsgfQorCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29u
c3QgU3RyaW5nJikgPSAwOworCisgICAgdmlydHVhbCBQYXNzT3duUHRyPENETVNlc3Npb24+IGNy
ZWF0ZVNlc3Npb24oKSA9IDA7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVE
X01FRElBX1YyKQorCisjZW5kaWYgLy8gQ0RNUHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZl
bnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRhOWM4NDNhNjUyMWY5YjFjN2YyZDliYmJmMjAzNmM0M2U3YWNh
NzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQor
CisjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCIKKworI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKKyNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK01lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdDo6TWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0KCkK
K3sKK30KKworTWVkaWFLZXlNZXNzYWdlRXZlbnQ6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50KCkKK3sK
K30KKworTWVkaWFLZXlNZXNzYWdlRXZlbnQ6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0JiBpbml0aWFs
aXplcikKKyAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKQorICAgICwgbV9tZXNzYWdlKGlu
aXRpYWxpemVyLm1lc3NhZ2UpCisgICAgLCBtX2Rlc3RpbmF0aW9uVVJMKGluaXRpYWxpemVyLmRl
c3RpbmF0aW9uVVJMKQoreworfQorCitNZWRpYUtleU1lc3NhZ2VFdmVudDo6fk1lZGlhS2V5TWVz
c2FnZUV2ZW50KCkKK3sKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUtleU1lc3NhZ2VF
dmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5p
bnRlcmZhY2VGb3JNZWRpYUtleU1lc3NhZ2VFdmVudDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Y2ZmMDIx
OTEyZTQwMDMwZmM0NDZiNGQxNWY1ZjYyY2I4YmU1MzNiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5o
CkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTWVkaWFLZXlNZXNzYWdlRXZl
bnRfaAorI2RlZmluZSBNZWRpYUtleU1lc3NhZ2VFdmVudF9oCisKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBX1YyKQorCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJNZWRpYUtleUVy
cm9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IE1lZGlhS2V5TWVzc2FnZUV2
ZW50SW5pdCA6IHB1YmxpYyBFdmVudEluaXQgeworICAgIE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5p
dCgpOworCisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IG1lc3NhZ2U7CisgICAgU3RyaW5nIGRlc3Rp
bmF0aW9uVVJMOworfTsKKworY2xhc3MgTWVkaWFLZXlNZXNzYWdlRXZlbnQgOiBwdWJsaWMgRXZl
bnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfk1lZGlhS2V5TWVzc2FnZUV2ZW50KCk7CisKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleU1lc3NhZ2VFdmVudD4gY3JlYXRlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFLZXlNZXNzYWdlRXZlbnQpOworICAg
IH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5TWVzc2FnZUV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQm
IGluaXRpYWxpemVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUtl
eU1lc3NhZ2VFdmVudCh0eXBlLCBpbml0aWFsaXplcikpOworICAgIH0KKworICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKKyAgICBVaW50OEFy
cmF5KiBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlLmdldCgpOyB9CisgICAgU3Ry
aW5nIGRlc3RpbmF0aW9uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblVSTDsgfQor
Citwcml2YXRlOgorICAgIE1lZGlhS2V5TWVzc2FnZUV2ZW50KCk7CisgICAgTWVkaWFLZXlNZXNz
YWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZWRpYUtleU1lc3NhZ2VF
dmVudEluaXQmIGluaXRpYWxpemVyKTsKKworICAgIFJlZlB0cjxVaW50OEFycmF5PiBtX21lc3Nh
Z2U7CisgICAgU3RyaW5nIG1fZGVzdGluYXRpb25VUkw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaWRsCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ3NmIwOTFiZGJlNWRjOWRlNzUyOWNhMGQ3NTFmNTY1NWIzNzNlODEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
TWVzc2FnZUV2ZW50LmlkbApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitpbnRlcmZhY2Ug
WworICAgIENvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMiwKKyAgICBWOEVuYWJsZWRBdFJ1
bnRpbWU9ZW5jcnlwdGVkTWVkaWEsCisgICAgQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudCAKK10g
TWVkaWFLZXlNZXNzYWdlRXZlbnQgOiBFdmVudCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVp
bnQ4QXJyYXkgbWVzc2FnZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgW0luaXRpYWxpemVkQnlF
dmVudENvbnN0cnVjdG9yXSBET01TdHJpbmcgZGVzdGluYXRpb25VUkw7Cit9OworCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVk
RXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eU5lZWRlZEV2ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTA2ZjhkNTA2MzE3ZWEzZmI5YTgzNzg3OWZm
ODAxYzhmOTY3YTI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmNwcApAQCAtMCwwICsxLDYyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBX1YyKQorCisjaW5jbHVkZSAiTWVkaWFLZXlOZWVkZWRFdmVudC5oIgorCisjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworTWVkaWFLZXlOZWVkZWRFdmVudEluaXQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnRJ
bml0KCkKK3sKK30KKworTWVkaWFLZXlOZWVkZWRFdmVudDo6TWVkaWFLZXlOZWVkZWRFdmVudCgp
Cit7Cit9CisKK01lZGlhS2V5TmVlZGVkRXZlbnQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCYgaW5pdGlh
bGl6ZXIpCisgICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKKyAgICAsIG1faW5pdERhdGEo
aW5pdGlhbGl6ZXIuaW5pdERhdGEpCit7Cit9CisKK01lZGlhS2V5TmVlZGVkRXZlbnQ6On5NZWRp
YUtleU5lZWRlZEV2ZW50KCkKK3sKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUtleU5l
ZWRlZEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1l
cygpLmludGVyZmFjZUZvck1lZGlhS2V5TmVlZGVkRXZlbnQ7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2YWNl
MzIzM2EzZDFlZjRiZTZjN2QzMjVjZGRlYmI1ZjYyMDA5NzcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQu
aApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhS2V5TmVlZGVkRXZl
bnRfaAorI2RlZmluZSBNZWRpYUtleU5lZWRlZEV2ZW50X2gKKworI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUFfVjIpCisKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIk1lZGlhS2V5RXJy
b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgTWVkaWFLZXlOZWVkZWRFdmVu
dEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKKyAgICBNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCgp
OworCisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGluaXREYXRhOworfTsKKworY2xhc3MgTWVkaWFL
ZXlOZWVkZWRFdmVudCA6IHB1YmxpYyBFdmVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TWVk
aWFLZXlOZWVkZWRFdmVudCgpOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFLZXlOZWVk
ZWRFdmVudD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVk
aWFLZXlOZWVkZWRFdmVudCk7CisgICAgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFL
ZXlOZWVkZWRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVk
aWFLZXlOZWVkZWRFdmVudEluaXQmIGluaXRpYWxpemVyKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBNZWRpYUtleU5lZWRlZEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKSk7Cisg
ICAgfQorCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBj
b25zdDsKKworICAgIFVpbnQ4QXJyYXkqIGluaXREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9pbml0
RGF0YS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIE1lZGlhS2V5TmVlZGVkRXZlbnQoKTsKKyAg
ICBNZWRpYUtleU5lZWRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVk
aWFLZXlOZWVkZWRFdmVudEluaXQmIGluaXRpYWxpemVyKTsKKworICAgIFJlZlB0cjxVaW50OEFy
cmF5PiBtX2luaXREYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleU5lZWRlZEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjNkNDA3YjUwNjdj
NmU5YzBkNGE0YjJkNTc0ODM5NWY0Y2E2MDM5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwKQEAg
LTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworaW50ZXJmYWNlIFsKKyAgICBDb25kaXRpb25hbD1F
TkNSWVBURURfTUVESUFfVjIsCisgICAgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlh
LAorICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQgCitdIE1lZGlhS2V5TmVlZGVkRXZlbnQg
OiBFdmVudCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVpbnQ4QXJyYXkgaW5pdERhdGE7Cit9
OworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJiYTNkYjg2MDk4MGVhNmQ5NmI5ZGQ4
NjdhMjY5M2E4OTZiNjNiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtMCwwICsxLDIzNCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYUtleVNlc3Np
b24uaCIKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlICJDRE0u
aCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCisj
aW5jbHVkZSAiTWVkaWFLZXlFcnJvci5oIgorI2luY2x1ZGUgIk1lZGlhS2V5TWVzc2FnZUV2ZW50
LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFz
c1JlZlB0cjxNZWRpYUtleVNlc3Npb24+IE1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE1lZGlhS2V5cyoga2V5cywgY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUtleVNlc3Npb24oY29u
dGV4dCwga2V5cywga2V5U3lzdGVtKSk7Cit9CisKK01lZGlhS2V5U2Vzc2lvbjo6TWVkaWFLZXlT
ZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE1lZGlhS2V5cyoga2V5cywg
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCisgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
cihjb250ZXh0KQorICAgICwgbV9rZXlzKGtleXMpCisgICAgLCBtX2tleVN5c3RlbShrZXlTeXN0
ZW0pCisgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKHRo
aXMpKQorICAgICwgbV9zZXNzaW9uKGtleXMtPmNkbSgpLT5jcmVhdGVTZXNzaW9uKCkpCisgICAg
LCBtX2tleVJlcXVlc3RUaW1lcih0aGlzLCAmTWVkaWFLZXlTZXNzaW9uOjprZXlSZXF1ZXN0VGlt
ZXJGaXJlZCkKKyAgICAsIG1fYWRkS2V5VGltZXIodGhpcywgJk1lZGlhS2V5U2Vzc2lvbjo6YWRk
S2V5VGltZXJGaXJlZCkKK3sKK30KKworTWVkaWFLZXlTZXNzaW9uOjp+TWVkaWFLZXlTZXNzaW9u
KCkKK3sKKyAgICBjbG9zZSgpOworfQorCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6c2V0RXJyb3Io
TWVkaWFLZXlFcnJvciogZXJyb3IpCit7CisgICAgbV9lcnJvciA9IGVycm9yOworfQorCit2b2lk
IE1lZGlhS2V5U2Vzc2lvbjo6Y2xvc2UoKQoreworICAgIGlmIChtX3Nlc3Npb24pCisgICAgICAg
IG1fc2Vzc2lvbi0+cmVsZWFzZUtleXMoKTsKKyAgICBtX3Nlc3Npb24gPSAwOworICAgIG1fYXN5
bmNFdmVudFF1ZXVlLT5jYW5jZWxBbGxFdmVudHMoKTsKK30KKworY29uc3QgU3RyaW5nJiBNZWRp
YUtleVNlc3Npb246OnNlc3Npb25JZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Vzc2lvbi0+
c2Vzc2lvbklkKCk7Cit9CisKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVl
c3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEpCit7CisgICAg
bV9wZW5kaW5nS2V5UmVxdWVzdHMuYXBwZW5kKFBlbmRpbmdLZXlSZXF1ZXN0KG1pbWVUeXBlLCBp
bml0RGF0YSkpOworICAgIG1fa2V5UmVxdWVzdFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwor
dm9pZCBNZWRpYUtleVNlc3Npb246OmtleVJlcXVlc3RUaW1lckZpcmVkKFRpbWVyPE1lZGlhS2V5
U2Vzc2lvbj4qKQoreworICAgIEFTU0VSVChtX3BlbmRpbmdLZXlSZXF1ZXN0cy5zaXplKCkpOwor
ICAgIGlmICghbV9zZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICB3aGlsZSAoIW1fcGVu
ZGluZ0tleVJlcXVlc3RzLmlzRW1wdHkoKSkgeworICAgICAgICBQZW5kaW5nS2V5UmVxdWVzdCBy
ZXF1ZXN0ID0gbV9wZW5kaW5nS2V5UmVxdWVzdHMudGFrZUZpcnN0KCk7CisKKyAgICAgICAgLy8g
Tk9URTogQ29udGludWVkIGZyb20gc3RlcCA1IGluIE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbigp
LgorICAgICAgICAvLyBUaGUgdXNlciBhZ2VudCB3aWxsIGFzeW5jaHJvbm91c2x5IGV4ZWN1dGUg
dGhlIGZvbGxvd2luZyBzdGVwcyBpbiB0aGUgdGFzazoKKworICAgICAgICAvLyAxLiBMZXQgY2Rt
IGJlIHRoZSBjZG0gbG9hZGVkIGluIHRoZSBNZWRpYUtleXMgY29uc3RydWN0b3IuCisgICAgICAg
IC8vIDIuIExldCBkZXN0aW5hdGlvblVSTCBiZSBudWxsLgorICAgICAgICBTdHJpbmcgZGVzdGlu
YXRpb25VUkw7CisgICAgICAgIE1lZGlhS2V5RXJyb3I6OkNvZGUgZXJyb3JDb2RlID0gMDsKKyAg
ICAgICAgdW5zaWduZWQgbG9uZyBzeXN0ZW1Db2RlID0gMDsKKworICAgICAgICAvLyAzLiBVc2Ug
Y2RtIHRvIGdlbmVyYXRlIGEga2V5IHJlcXVlc3QgYW5kIGZvbGxvdyB0aGUgc3RlcHMgZm9yIHRo
ZSBmaXJzdCBtYXRjaGluZyBjb25kaXRpb24gZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6CisKKyAg
ICAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGtleVJlcXVlc3QgPSBtX3Nlc3Npb24tPmdlbmVyYXRl
S2V5UmVxdWVzdChyZXF1ZXN0Lm1pbWVUeXBlLCByZXF1ZXN0LmluaXREYXRhLmdldCgpLCBkZXN0
aW5hdGlvblVSTCwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKKworICAgICAgICAvLyBPdGhlcndp
c2UgW2lmIGEgcmVxdWVzdCBpcyBub3Qgc3VjY2Vzc2Z1bGx5IGdlbmVyYXRlZF06CisgICAgICAg
IGlmICgha2V5UmVxdWVzdCkgeworICAgICAgICAgICAgLy8gMy4xLiBDcmVhdGUgYSBuZXcgTWVk
aWFLZXlFcnJvciBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CisgICAgICAg
ICAgICAvLyAgICAgIGNvZGUgPSB0aGUgYXBwcm9wcmlhdGUgTWVkaWFLZXlFcnJvciBjb2RlCisg
ICAgICAgICAgICAvLyAgICAgIHN5c3RlbUNvZGUgPSBhIEtleSBTeXN0ZW0tc3BlY2lmaWMgdmFs
dWUsIGlmIHByb3ZpZGVkLCBhbmQgMCBvdGhlcndpc2UKKyAgICAgICAgICAgIFJlZlB0cjxNZWRp
YUtleUVycm9yPiBlcnJvciA9IE1lZGlhS2V5RXJyb3I6OmNyZWF0ZShlcnJvckNvZGUsIHN5c3Rl
bUNvZGUpLmdldCgpOworCisgICAgICAgICAgICAvLyAzLjIuIFNldCB0aGUgTWVkaWFLZXlTZXNz
aW9uIG9iamVjdCdzIGVycm9yIGF0dHJpYnV0ZSB0byB0aGUgZXJyb3Igb2JqZWN0IGNyZWF0ZWQg
aW4gdGhlIHByZXZpb3VzIHN0ZXAuCisgICAgICAgICAgICBzZXRFcnJvcihlcnJvci5nZXQoKSk7
CisKKyAgICAgICAgICAgIC8vIDMuMy4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZl
bnQgbmFtZWQga2V5ZXJyb3IgYXQgdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuCisgICAgICAg
ICAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Vi
a2l0a2V5ZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50LT5zZXRU
YXJnZXQodGhpcyk7CisgICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50
KGV2ZW50LnJlbGVhc2UoKSk7CisKKyAgICAgICAgICAgIC8vIDMuNC4gQWJvcnQgdGhlIHRhc2su
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIDQuIHF1ZXVl
IGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGtleW1lc3NhZ2UgYXQgdGhlIG5l
dyBvYmplY3QKKyAgICAgICAgLy8gICAgVGhlIGV2ZW50IGlzIG9mIHR5cGUgTWVkaWFLZXlNZXNz
YWdlRXZlbnQgYW5kIGhhczoKKyAgICAgICAgLy8gICAgbWVzc2FnZSA9IGtleSByZXF1ZXN0Cisg
ICAgICAgIC8vICAgIGRlc3RpbmF0aW9uVVJMID0gZGVzdGluYXRpb25VUkwKKyAgICAgICAgTWVk
aWFLZXlNZXNzYWdlRXZlbnRJbml0IGluaXQ7CisgICAgICAgIGluaXQuYnViYmxlcyA9IGZhbHNl
OworICAgICAgICBpbml0LmNhbmNlbGFibGUgPSBmYWxzZTsKKyAgICAgICAgaW5pdC5tZXNzYWdl
ID0ga2V5UmVxdWVzdDsKKyAgICAgICAgaW5pdC5kZXN0aW5hdGlvblVSTCA9IGRlc3RpbmF0aW9u
VVJMOworICAgICAgICBSZWZQdHI8TWVkaWFLZXlNZXNzYWdlRXZlbnQ+IGV2ZW50ID0gTWVkaWFL
ZXlNZXNzYWdlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0a2V5bWVzc2FnZUV2ZW50
LCBpbml0KTsKKyAgICAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9hc3lu
Y0V2ZW50UXVldWUtPmVucXVldWVFdmVudChldmVudCk7CisgICAgfQorfQorCit2b2lkIE1lZGlh
S2V5U2Vzc2lvbjo6YWRkS2V5KFVpbnQ4QXJyYXkqIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgLy8gRnJvbSA8aHR0cDovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUv
dGlwL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEuaHRtbCNkb20tYWRka2V5PjoKKyAg
ICAvLyBUaGUgYWRkS2V5KGtleSkgbWV0aG9kIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6
CisgICAgLy8gMS4gSWYgdGhlIGZpcnN0IG9yIHNlY29uZCBhcmd1bWVudCBbc2ljXSBpcyBudWxs
IG9yIGFuIGVtcHR5IGFycmF5LCB0aHJvdyBhbiBJTlZBTElEX0FDQ0VTU19FUlIuCisgICAgLy8g
Tk9URTogdGhlIHJlZmVyZW5jZSB0byBhICJzZWNvbmQgYXJndW1lbnQiIGlzIGEgc3BlYyBidWcu
CisgICAgaWYgKCFrZXkgfHwgIWtleS0+bGVuZ3RoKCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyAyLiBTY2hlZHVs
ZSBhIHRhc2sgdG8gaGFuZGxlIHRoZSBjYWxsLCBwcm92aWRpbmcga2V5LgorICAgIG1fcGVuZGlu
Z0tleXMuYXBwZW5kKGtleSk7CisgICAgbV9hZGRLZXlUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9
CisKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjphZGRLZXlUaW1lckZpcmVkKFRpbWVyPE1lZGlhS2V5
U2Vzc2lvbj4qKQoreworICAgIEFTU0VSVChtX3BlbmRpbmdLZXlzLnNpemUoKSk7CisgICAgaWYg
KCFtX3Nlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIHdoaWxlICghbV9wZW5kaW5nS2V5
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IHBlbmRpbmdLZXkgPSBt
X3BlbmRpbmdLZXlzLnRha2VGaXJzdCgpOworICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcnJvckNv
ZGUgPSAwOworICAgICAgICB1bnNpZ25lZCBsb25nIHN5c3RlbUNvZGUgPSAwOworCisgICAgICAg
IC8vIE5PVEU6IENvbnRpbnVlZCBmcm9tIHN0ZXAgMi4gb2YgTWVkaWFLZXlTZXNzaW9uOjphZGRL
ZXkoKQorICAgICAgICAvLyAyLjEuIExldCBjZG0gYmUgdGhlIGNkbSBsb2FkZWQgaW4gdGhlIE1l
ZGlhS2V5cyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgLy8gTk9URTogVGhpcyBpcyBtX3Nlc3Npb24u
CisgICAgICAgIC8vIDIuMi4gTGV0ICdkaWQgc3RvcmUga2V5JyBiZSBmYWxzZS4KKyAgICAgICAg
Ym9vbCBkaWRTdG9yZUtleSA9IGZhbHNlOworICAgICAgICAvLyAyLjMuIExldCAnbmV4dCBtZXNz
YWdlJyBiZSBudWxsLgorICAgICAgICBSZWZQdHI8VWludDhBcnJheT4gbmV4dE1lc3NhZ2U7Cisg
ICAgICAgIC8vIDIuNC4gVXNlIGNkbSB0byBoYW5kbGUga2V5LgorICAgICAgICBkaWRTdG9yZUtl
eSA9IG1fc2Vzc2lvbi0+YWRkS2V5KHBlbmRpbmdLZXkuZ2V0KCksIG5leHRNZXNzYWdlLCBlcnJv
ckNvZGUsIHN5c3RlbUNvZGUpOworICAgICAgICAvLyAyLjUuIElmIGRpZCBzdG9yZSBrZXkgaXMg
dHJ1ZSBhbmQgdGhlIG1lZGlhIGVsZW1lbnQgaXMgd2FpdGluZyBmb3IgYSBrZXksIHF1ZXVlIGEg
dGFzayB0byBhdHRlbXB0IHRvIHJlc3VtZSBwbGF5YmFjay4KKyAgICAgICAgLy8gVE9ETzogRmlu
ZCBhbmQgcmVzdGFydCB0aGUgbWVkaWEgZWxlbWVudAorCisgICAgICAgIC8vIDIuNi4gSWYgbmV4
dCBtZXNzYWdlIGlzIG5vdCBudWxsLCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVu
dCBuYW1lZCBrZXltZXNzYWdlIGF0IHRoZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0LgorICAgICAg
ICAvLyAgICAgIFRoZSBldmVudCBpcyBvZiB0eXBlIE1lZGlhS2V5TWVzc2FnZUV2ZW50IGFuZCBo
YXM6CisgICAgICAgIC8vICAgICAgbWVzc2FnZSA9IG5leHQgbWVzc2FnZQorICAgICAgICAvLyAg
ICAgIGRlc3RpbmF0aW9uVVJMID0gbnVsbAorICAgICAgICBpZiAobmV4dE1lc3NhZ2UpIHsKKyAg
ICAgICAgICAgIE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCBpbml0OworICAgICAgICAgICAgaW5p
dC5idWJibGVzID0gZmFsc2U7CisgICAgICAgICAgICBpbml0LmNhbmNlbGFibGUgPSBmYWxzZTsK
KyAgICAgICAgICAgIGluaXQubWVzc2FnZSA9IG5leHRNZXNzYWdlOworICAgICAgICAgICAgUmVm
UHRyPE1lZGlhS2V5TWVzc2FnZUV2ZW50PiBldmVudCA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtleW1lc3NhZ2VFdmVudCwgaW5pdCk7CisgICAgICAg
ICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVl
dWUtPmVucXVldWVFdmVudChldmVudCk7CisgICAgICAgIH0KKworICAgICAgICAvLyAyLjcuIElm
IGRpZCBzdG9yZSBrZXkgaXMgdHJ1ZSwgcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZl
bnQgbmFtZWQga2V5YWRkZWQgYXQgdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuCisgICAgICAg
IGlmIChkaWRTdG9yZUtleSkgeworICAgICAgICAgICAgUmVmUHRyPEV2ZW50PiBrZXlhZGRlZEV2
ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0a2V5YWRkZWRFdmVudCwgZmFs
c2UsIGZhbHNlKTsKKyAgICAgICAgICAgIGtleWFkZGVkRXZlbnQtPnNldFRhcmdldCh0aGlzKTsK
KyAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoa2V5YWRkZWRFdmVu
dCk7CisgICAgICAgIH0KKworICAgICAgICAvLyAyLjguIElmIGFueSBvZiB0aGUgcHJlY2VkaW5n
IHN0ZXBzIGluIHRoZSB0YXNrIGZhaWxlZAorICAgICAgICBpZiAoIWRpZFN0b3JlS2V5KSB7Cisg
ICAgICAgICAgICAvLyAyLjguMS4gQ3JlYXRlIGEgbmV3IE1lZGlhS2V5RXJyb3Igb2JqZWN0IHdp
dGggdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgorICAgICAgICAgICAgLy8gICAgICAgIGNvZGUg
PSB0aGUgYXBwcm9wcmlhdGUgTWVkaWFLZXlFcnJvciBjb2RlCisgICAgICAgICAgICAvLyAgICAg
ICAgc3lzdGVtQ29kZSA9IGEgS2V5IFN5c3RlbS1zcGVjaWZpYyB2YWx1ZSwgaWYgcHJvdmlkZWQs
IGFuZCAwIG90aGVyd2lzZQorICAgICAgICAgICAgUmVmUHRyPE1lZGlhS2V5RXJyb3I+IGVycm9y
ID0gTWVkaWFLZXlFcnJvcjo6Y3JlYXRlKGVycm9yQ29kZSwgc3lzdGVtQ29kZSkuZ2V0KCk7CisK
KyAgICAgICAgICAgIC8vIDIuOC4yLiBTZXQgdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QncyBl
cnJvciBhdHRyaWJ1dGUgdG8gdGhlIGVycm9yIG9iamVjdCBjcmVhdGVkIGluIHRoZSBwcmV2aW91
cyBzdGVwLgorICAgICAgICAgICAgc2V0RXJyb3IoZXJyb3IuZ2V0KCkpOworCisgICAgICAgICAg
ICAvLyAyLjguMy4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQga2V5
ZXJyb3IgYXQgdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuCisgICAgICAgICAgICBSZWZQdHI8
RXZlbnQ+IGtleWVycm9yRXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRr
ZXllcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAga2V5ZXJyb3JFdmVudC0+
c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVF
dmVudChrZXllcnJvckV2ZW50LnJlbGVhc2UoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IC8vIDIuOC40LiBBYm9ydCB0aGUgdGFzay4KKyAgICAgICAgICAgIC8vIE5PVEU6IG5vLW9wCisg
ICAgICAgIH0KKyAgICB9Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFLZXlTZXNzaW9u
OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVy
ZmFjZUZvck1lZGlhS2V5U2Vzc2lvbjsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVk
aWFLZXlTZXNzaW9uOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwMGYzOTAyZTMyYjAz
ZTNiMmY3YWY1ODA4NjgzZjJiZjA3MGQyNmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC0wLDAgKzEs
MTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYUtleVNlc3Npb25faAorI2RlZmluZSBN
ZWRpYUtleVNlc3Npb25faAorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2lu
Y2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJn
ZXQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBHZW5lcmljRXZlbnRRdWV1ZTsKK2NsYXNzIE1lZGlhS2V5RXJyb3I7CitjbGFzcyBNZWRpYUtl
eXM7CitjbGFzcyBDRE1TZXNzaW9uOworCitjbGFzcyBNZWRpYUtleVNlc3Npb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxNZWRpYUtleVNlc3Npb24+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFLZXlTZXNzaW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlh
S2V5cyosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKKyAgICB+TWVkaWFLZXlTZXNzaW9uKCk7
CisKKyAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5U3lz
dGVtOyB9CisgICAgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBjb25zdDsKKworICAgIHZvaWQg
c2V0RXJyb3IoTWVkaWFLZXlFcnJvciopOworICAgIE1lZGlhS2V5RXJyb3IqIGVycm9yKCkgeyBy
ZXR1cm4gbV9lcnJvci5nZXQoKTsgfQorCisgICAgdm9pZCBzZXRLZXlzKE1lZGlhS2V5cyoga2V5
cykgeyBtX2tleXMgPSBrZXlzOyB9CisgICAgTWVkaWFLZXlzKiBrZXlzKCkgY29uc3QgeyByZXR1
cm4gbV9rZXlzOyB9CisKKyAgICB2b2lkIGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSk7CisgICAgdm9pZCBhZGRLZXkoVWludDhB
cnJheSoga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBjbG9zZSgpOworCisgICAgdXNp
bmcgUmVmQ291bnRlZDxNZWRpYUtleVNlc3Npb24+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRl
ZDxNZWRpYUtleVNlc3Npb24+OjpkZXJlZjsKKworICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NS
ZWZQdHI8RXZlbnQ+KTsKKworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Vi
a2l0a2V5YWRkZWQpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0
a2V5ZXJyb3IpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0a2V5
bWVzc2FnZSk7CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFt
ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFOworCitwcm90ZWN0ZWQ6Cisg
ICAgTWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNZWRpYUtleXMqLCBj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CisgICAgdm9pZCBrZXlSZXF1ZXN0VGltZXJGaXJlZChU
aW1lcjxNZWRpYUtleVNlc3Npb24+Kik7CisgICAgdm9pZCBhZGRLZXlUaW1lckZpcmVkKFRpbWVy
PE1lZGlhS2V5U2Vzc2lvbj4qKTsKKworICAgIE1lZGlhS2V5cyogbV9rZXlzOworICAgIFN0cmlu
ZyBtX2tleVN5c3RlbTsKKyAgICBTdHJpbmcgbV9zZXNzaW9uSWQ7CisgICAgUmVmUHRyPE1lZGlh
S2V5RXJyb3I+IG1fZXJyb3I7CisgICAgT3duUHRyPEdlbmVyaWNFdmVudFF1ZXVlPiBtX2FzeW5j
RXZlbnRRdWV1ZTsKKyAgICBPd25QdHI8Q0RNU2Vzc2lvbj4gbV9zZXNzaW9uOworCisgICAgc3Ry
dWN0IFBlbmRpbmdLZXlSZXF1ZXN0IHsKKyAgICAgICAgUGVuZGluZ0tleVJlcXVlc3QoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEpIDogbWltZVR5cGUobWltZVR5
cGUpLCBpbml0RGF0YShpbml0RGF0YSkgeyB9CisgICAgICAgIFN0cmluZyBtaW1lVHlwZTsKKyAg
ICAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGluaXREYXRhOworICAgIH07CisgICAgRGVxdWU8UGVu
ZGluZ0tleVJlcXVlc3Q+IG1fcGVuZGluZ0tleVJlcXVlc3RzOworICAgIFRpbWVyPE1lZGlhS2V5
U2Vzc2lvbj4gbV9rZXlSZXF1ZXN0VGltZXI7CisKKyAgICBEZXF1ZTxSZWZQdHI8VWludDhBcnJh
eT4gPiBtX3BlbmRpbmdLZXlzOworICAgIFRpbWVyPE1lZGlhS2V5U2Vzc2lvbj4gbV9hZGRLZXlU
aW1lcjsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVS
UklERSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVS
UklERSB7IGRlcmVmKCk7IH0KKworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRh
cmdldERhdGEoKSBPVkVSUklERSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KKyAgICB2
aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREUg
eyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisKKyAgICBFdmVudFRhcmdldERhdGEgbV9l
dmVudFRhcmdldERhdGE7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01F
RElBX1YyKQorCisjZW5kaWYgLy8gTWVkaWFLZXlTZXNzaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45MTI1YmIzZDFlMDMzYzJiMDU1YjgxYzhiNjA2YjllMzAyYmM2ZDZmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uaWRsCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgICAgICovCisKK2ludGVyZmFj
ZSBbCisgICAgQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyLAorICAgIFY4RW5hYmxlZEF0
UnVudGltZT1lbmNyeXB0ZWRNZWRpYSwKKyAgICBFdmVudFRhcmdldCwKK10gTWVkaWFLZXlTZXNz
aW9uIHsKKyAgICAvLyBlcnJvciBzdGF0ZQorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYUtl
eUVycm9yIGVycm9yOworCisgICAgLy8gc2Vzc2lvbiBwcm9wZXJ0aWVzCisgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBrZXlTeXN0ZW07CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBzZXNzaW9uSWQ7CisKKyAgICAvLyBzZXNzaW9uIG9wZXJhdGlvbnMKKyAgICB2b2lk
IGFkZEtleShpbiBVaW50OEFycmF5IGtleSkKKyAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CisgICAgdm9pZCBjbG9zZSgpOworICAgIAorICAgIC8vIEV2ZW50TGlzdGVuZXJzCisgICAgYXR0
cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIg
b253ZWJraXRrZXlhZGRlZDsKKyAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1lbmNy
eXB0ZWRNZWRpYV0gRXZlbnRMaXN0ZW5lciBvbndlYmtpdGtleWVycm9yOworICAgIGF0dHJpYnV0
ZSBbVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBFdmVudExpc3RlbmVyIG9ud2Vi
a2l0a2V5bWVzc2FnZTsKKworICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgIHZvaWQg
YWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgdm9pZCByZW1vdmVF
dmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICBib29sZWFuIGRp
c3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQorICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24p
OworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZGMzM2NjMzhmNDBlMmY4YWFjMDk0NTU4NTVmYjc0MjQ5
YmI4ZmE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhS2V5cy5oIgorCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIkNETS5oIgorI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKKyNpbmNsdWRlICJNZWRpYUtleU1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIk1lZGlh
S2V5U2Vzc2lvbi5oIgorI2luY2x1ZGUgIlVVSUQuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWVkaWFLZXlzPiBNZWRpYUtl
eXM6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgLy8gRnJvbSA8aHR0cDovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUv
dGlwL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEuaHRtbCNkb20tbWVkaWEta2V5cy1j
b25zdHJ1Y3Rvcj46CisgICAgLy8gVGhlIE1lZGlhS2V5cyhrZXlTeXN0ZW0pIGNvbnN0cnVjdG9y
IG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisKKyAgICAvLyAxLiBJZiBrZXlTeXN0ZW0g
aXMgbnVsbCBvciBhbiBlbXB0eSBzdHJpbmcsIHRocm93IGFuIElOVkFMSURfQUNDRVNTX0VSUiBl
eGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmIChrZXlTeXN0ZW0uaXNOdWxs
KCkgfHwga2V5U3lzdGVtLmlzRW1wdHkoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNT
X0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gMi4gSWYga2V5U3lzdGVt
IGlzIG5vdCBvbmUgb2YgdGhlIHVzZXIgYWdlbnQncyBzdXBwb3J0ZWQgS2V5IFN5c3RlbXMsIHRo
cm93IGEgTk9UX1NVUFBPUlRFRF9FUlIgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICgh
Q0RNOjpzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKSB7CisgICAgICAgIGVjID0gTk9UX1NV
UFBPUlRFRF9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8vIDMuIExldCBj
ZG0gYmUgdGhlIGNvbnRlbnQgZGVjcnlwdGlvbiBtb2R1bGUgY29ycmVzcG9uZGluZyB0byBrZXlT
eXN0ZW0uCisgICAgLy8gNC4gTG9hZCBjZG0gaWYgbmVjZXNzYXJ5LgorICAgIE93blB0cjxDRE0+
IGNkbSA9IENETTo6Y3JlYXRlKGtleVN5c3RlbSk7CisKKyAgICAvLyA1LiBDcmVhdGUgYSBuZXcg
TWVkaWFLZXlzIG9iamVjdC4KKyAgICAvLyA1LjEgTGV0IHRoZSBrZXlTeXN0ZW0gYXR0cmlidXRl
IGJlIGtleVN5c3RlbS4KKyAgICAvLyA2LiBSZXR1cm4gdGhlIG5ldyBvYmplY3QgdG8gdGhlIGNh
bGxlci4KKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhS2V5cyhrZXlTeXN0ZW0sIGNkbS5y
ZWxlYXNlKCkpKTsKK30KKworTWVkaWFLZXlzOjpNZWRpYUtleXMoY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0sIFBhc3NPd25QdHI8Q0RNPiBjZG0pCisgICAgOiBtX2tleVN5c3RlbShrZXlTeXN0ZW0p
CisgICAgLCBtX2NkbShjZG0pCit7Cit9CisKK01lZGlhS2V5czo6fk1lZGlhS2V5cygpCit7Cisg
ICAgLy8gRnJvbSA8aHR0cDovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlw
L2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEuaHRtbCNkb20tbWVkaWEta2V5cy1jb25z
dHJ1Y3Rvcj46CisgICAgLy8gV2hlbiBkZXN0cm95aW5nIGEgTWVkaWFLZXlzIG9iamVjdCwgZm9s
bG93IHRoZSBzdGVwcyBpbiBjbG9zZSgpLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9z
ZXNzaW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBtX3Nlc3Npb25zW2ldLT5jbG9zZSgpOwor
ICAgICAgICBtX3Nlc3Npb25zW2ldLT5zZXRLZXlzKDApOworICAgIH0KK30KKworUGFzc1JlZlB0
cjxNZWRpYUtleVNlc3Npb24+IE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHR5cGUsIFVpbnQ4QXJyYXkqIGluaXRE
YXRhLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICAvLyBGcm9tIDxodHRwOi8vZHZjcy53My5v
cmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS90aXAvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1t
ZWRpYS5odG1sI2RvbS1jcmVhdGVzZXNzaW9uPjoKKyAgICAvLyBUaGUgY3JlYXRlU2Vzc2lvbih0
eXBlLCBpbml0RGF0YSkgbWV0aG9kIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAg
Ly8gTm90ZTogVGhlIGNvbnRlbnRzIG9mIGluaXREYXRhIGFyZSBjb250YWluZXItc3BlY2lmaWMg
SW5pdGlhbGl6YXRpb24gRGF0YS4KKworICAgIC8vIDEuIElmIHR5cGUgaXMgbnVsbCBvciBhbiBl
bXB0eSBzdHJpbmcgYW5kIGluaXREYXRhIGlzIG5vdCBudWxsIG9yIGFuIGVtcHR5IHN0cmluZywg
dGhyb3cgYW4KKyAgICAvLyBJTlZBTElEX0FDQ0VTU19FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0
aGVzZSBzdGVwcy4KKyAgICBpZiAoKHR5cGUuaXNOdWxsKCkgfHwgdHlwZS5pc0VtcHR5KCkpICYm
ICghaW5pdERhdGEgfHwgaW5pdERhdGEtPmxlbmd0aCgpKSkgeworICAgICAgICBlYyA9IElOVkFM
SURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gMi4gSWYg
dHlwZSBjb250YWlucyBhIE1JTUUgdHlwZSB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQgb3IgaXMgbm90
IHN1cHBvcnRlZCBieSB0aGUga2V5U3lzdGVtLCB0aHJvdworICAgIC8vIGEgTk9UX1NVUFBPUlRF
RF9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoIXR5cGUuaXNO
dWxsKCkgJiYgIXR5cGUuaXNFbXB0eSgpICYmICFtX2NkbS0+c3VwcG9ydHNNSU1FVHlwZSh0eXBl
KSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisKKyAgICAvLyAzLiBDcmVhdGUgYSBuZXcgTWVkaWFLZXlTZXNzaW9uIG9iamVjdC4K
KyAgICAvLyAzLjEgTGV0IHRoZSBrZXlTeXN0ZW0gYXR0cmlidXRlIGJlIGtleVN5c3RlbS4KKyAg
ICAvLyAzLjIgTGV0IHRoZSBzZXNzaW9uSWQgYXR0cmlidXRlIGJlIGEgdW5pcXVlIFNlc3Npb24g
SUQgc3RyaW5nLiBJdCBtYXkgYmUgZ2VuZXJhdGVkIGJ5IGNkbS4KKyAgICBSZWZQdHI8TWVkaWFL
ZXlTZXNzaW9uPiBzZXNzaW9uID0gTWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUoY29udGV4dCwgdGhp
cywga2V5U3lzdGVtKCkpOworCisgICAgLy8gNC4gQWRkIHRoZSBuZXcgb2JqZWN0IHRvIGFuIGlu
dGVybmFsIGxpc3Qgb2Ygc2Vzc2lvbiBvYmplY3RzLgorICAgIG1fc2Vzc2lvbnMuYXBwZW5kKHNl
c3Npb24pOworCisgICAgLy8gNS4gU2NoZWR1bGUgYSB0YXNrIHRvIGdlbmVyYXRlIGEga2V5IHJl
cXVlc3QsIHByb3ZpZGluZyB0eXBlLCBpbml0RGF0YSwgYW5kIHRoZSBuZXcgb2JqZWN0LgorICAg
IHNlc3Npb24tPmdlbmVyYXRlS2V5UmVxdWVzdCh0eXBlLCBpbml0RGF0YSk7CisKKyAgICAvLyA2
LiBSZXR1cm4gdGhlIG5ldyBvYmplY3QgdG8gdGhlIGNhbGxlci4KKyAgICByZXR1cm4gc2Vzc2lv
bjsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4YWRiNzVmNjFlM2M2YjJhZGFkNzUw
YmMzNGQ2ODJmYzllZTA3ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIE1lZGlhS2V5c19oCisjZGVmaW5lIE1lZGlhS2V5c19oCisKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDRE07
CitjbGFzcyBNZWRpYUtleVNlc3Npb247CisKK2NsYXNzIE1lZGlhS2V5cyA6IHB1YmxpYyBSZWZD
b3VudGVkPE1lZGlhS2V5cz4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
S2V5cz4gY3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgfk1lZGlhS2V5cygpOworCisgICAgUGFzc1JlZlB0cjxNZWRpYUtleVNlc3Npb24+IGNyZWF0
ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IFVpbnQ4QXJyYXkqIGluaXREYXRhLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICBjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9CisgICAgQ0RNKiBj
ZG0oKSB7IHJldHVybiBtX2NkbS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgTWVkaWFLZXlz
KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBQYXNzT3duUHRyPENETT4pOworCisgICAgVmVjdG9y
PFJlZlB0cjxNZWRpYUtleVNlc3Npb24+ID4gbV9zZXNzaW9uczsKKworICAgIFN0cmluZyBtX2tl
eVN5c3RlbTsKKyAgICBPd25QdHI8Q0RNPiBtX2NkbTsKK307CisKK30KKworI2VuZGlmIC8vIEVO
QUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNlbmRpZiAvLyBNZWRpYUtleXNfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA2NGI3NWNjNGI5YzM2YjRiNjc2MWQ0OTdiZTUwNDg0M2JhNmU5ZmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5pZGwKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworIAoraW50ZXJmYWNlIFsKKyAgICBD
b25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIsCisgICAgVjhFbmFibGVkQXRSdW50aW1lPWVu
Y3J5cHRlZE1lZGlhLAorICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyBrZXlTeXN0ZW0pLAor
ICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uLAorXSBNZWRpYUtleXMgeworICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBNZWRpYUtleVNlc3Npb24gY3JlYXRlU2Vzc2lv
bihpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgdHlwZSwgaW4gW09w
dGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gVWludDhBcnJheSBpbml0RGF0YSkKKyAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGtleVN5c3RlbTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
biBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDdiOGI5N2Q5NmMzYmZmZjg0
MTNiYzRmNTlhNmNmOWJhMjFhN2UwM2EuLjhhMmE0YzZmOTgzMWY1NGI5NzBhNzY1ZDQ2MGZlYmY1
OTViOTdhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yNzUxLDMgKzI3NTEsNyBAQCBfX1pO
N1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMxOWlzQ1NTUmVnaW9uc0VuYWJsZWRFCiAj
aWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKIF9fWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRG
ZWF0dXJlczI1YXJlU2VhbWxlc3NJRnJhbWVzRW5hYmxlZEUKICNlbmRpZgorCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQV9WMikKK19fWk43V2ViQ29yZTNDRE0xOHJlZ2lzdGVyQ0RNRmFjdG9y
eUVQRk4zV1RGMTBQYXNzT3duUHRySU5TXzE5Q0RNUHJpdmF0ZUludGVyZmFjZUVFRVBTMF9FUEZi
UktOUzFfNlN0cmluZ0VFCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5YjIwOGQyODE5YThiNmY5YmE1ZGU5OTcwOGIz
NTllMDM3YjJjYWRiLi5hZjZkMmE2ZTAxNGU3ZWQwNWQxNzhhNjRlZmYwNzhlNWU5YjYyMjQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xNDc1LDcgKzE0NzUsNiBAQAogCQk0QjZGQTZGNDBDMzlFNDhDMDAwODcwMTEgLyogU21h
cnRSZXBsYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0QjZGQTZGMjBDMzlFNDhDMDAwODcwMTEgLyogU21hcnRSZXBsYWNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEI2RkE2RjUwQzM5RTQ4QzAw
MDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QjZGQTZGMzBDMzlFNDhDMDAwODcwMTEgLyogU21hcnRSZXBsYWNl
LmNwcCAqLzsgfTsKIAkJNEI2RkE2RjcwQzM5RTRBMTAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZUNG
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkZB
NkY2MEMzOUU0QTEwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2VDRi5jcHAgKi87IH07Ci0JCTRCNjE3
MzczNzk2MzZGNjE2RTI3NzM2OCAvKiBJREJIaXN0b2dyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjYxNzM3Mzc5NjM2RjYxNkUyNzczNjggLyog
SURCSGlzdG9ncmFtcy5oICovOyB9OwogCQk0QjhBRjRBQTBCMUNFMDJCMDA2ODc2OTAgLyogQ2xp
cGJvYXJkQWNjZXNzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QjhBRjRBOTBCMUNFMDJCMDA2ODc2OTAgLyogQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NEJBRTk1QjEwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJBRTk1QjAwQjJGQTlDRTAw
QUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTREMjczQ0Y5MTY2OTQyMDgwMDI1OUNBMSAvKiBJbnNw
ZWN0b3JJbnB1dEFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDREMjczQ0Y3MTY2OTQyMDgwMDI1OUNBMSAvKiBJbnNwZWN0b3JJbnB1dEFnZW50
LmNwcCAqLzsgfTsKQEAgLTM2NDYsOCArMzY0NSw4IEBACiAJCTk3N0UyRENEMTJGMEUyODMwMEMx
MzM3OSAvKiBIVE1MU291cmNlVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NzdFMkRDQjEyRjBFMjgzMDBDMTMzNzkgLyogSFRNTFNvdXJj
ZVRyYWNrZXIuY3BwICovOyB9OwogCQk5NzdFMkRDRTEyRjBFMjgzMDBDMTMzNzkgLyogSFRNTFNv
dXJjZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3N0UyRENDMTJGMEUyODMwMEMxMzM3OSAvKiBIVE1MU291cmNlVHJhY2tlci5oICovOyB9
OwogCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzdFMkUwQjEyRjBGQzlDMDBD
MTMzNzkgLyogWFNTQXVkaXRvci5jcHAgKi87IH07Ci0JCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3
OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NzdFMkUwQzEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5oICovOyB9Owog
CQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzODAgLyogWFNTQXVkaXRvckRlbGVnYXRlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3N0UyRTBCMTJGMEZD
OUMwMEMxMzM4MCAvKiBYU1NBdWRpdG9yRGVsZWdhdGUuY3BwICovOyB9OworCQk5NzdFMkUwRjEy
RjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTc3RTJFMEMxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0
b3IuaCAqLzsgfTsKIAkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzgwIC8qIFhTU0F1ZGl0b3JEZWxl
Z2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc3
RTJFMEMxMkYwRkM5QzAwQzEzMzgwIC8qIFhTU0F1ZGl0b3JEZWxlZ2F0ZS5oICovOyB9OwogCQk5
NzhBRDY3NDE0MTMwQThEMDBDN0NBRTMgLyogSFRNTFNwYW5FbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OEFENjcxMTQxMzBBOEQwMEM3
Q0FFMyAvKiBIVE1MU3BhbkVsZW1lbnQuY3BwICovOyB9OwogCQk5NzhBRDY3NTE0MTMwQThEMDBD
N0NBRTMgLyogSFRNTFNwYW5FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NzhBRDY3MjE0MTMwQThEMDBDN0NBRTMgLyogSFRNTFNwYW5FbGVt
ZW50LmggKi87IH07CkBAIC01OTcxLDYgKzU5NzAsNyBAQAogCQlDQ0MyQjUxNjE1RjYxMzA2MDA0
OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0NDMkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRy
b2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDRDEyN0RFRDE0RjMwOTdEMDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RFQjE0
RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0gKi87IH07CiAJCUNE
MTI3REVFMTRGMzA5ODQwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxMjdERUExNEYzMDk3
OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QxQjRBNjUxNjA3ODZBRTAwMjgyREY5
IC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEQzIxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVl
ZGVkRXZlbnQuY3BwICovOyB9OwogCQlDRDFFNzM0NzE2N0JDNzhFMDA5QTg4NUQgLyogVGV4dFRy
YWNrUmVwcmVzZW50YXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0QxRTczNDYxNjdCQzc4RTAwOUE4ODVEIC8qIFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uLmNwcCAqLzsgfTsKIAkJQ0QyN0Y2RTUxNDU3Njg1QTAwNzgyMDdEIC8qIEpTTWVkaWFD
b250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEMjdGNkUyMTQ1NzY3NTgwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAgKi87
IH07CiAJCUNEMjdGNkU3MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTYxNDU3
NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgKi87IH07CkBAIC01OTgzLDEwICs1
OTgzLDIwIEBACiAJCUNEODIwMzBEMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0Q4MjAzMDkxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gKi87IH07CiAJCUNEODIwMzEwMTM5NUFDRTcwMEY5
NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dB
bmltYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDRDgyMDMxMTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4MjAzMEYxMzk1
QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSAqLzsgfTsKKwkJQ0RBOThEQTMx
NjAxNDY0MTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OEQ5QjE2MDEyOEE1MDBGRUEzQjEgLyog
SlNNZWRpYUtleUVycm9yLmNwcCAqLzsgfTsKKwkJQ0RBOThERDgxNjAyNUJFRjAwRkVBM0IxIC8q
IE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEQTk4REQ1MTYwMjVCRUQwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3Nh
Z2VFdmVudC5jcHAgKi87IH07CisJCUNEQTk4RERGMTYwMjZBMzcwMEZFQTNCMSAvKiBKU01lZGlh
S2V5TWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEQTk4RERCMTYwMjZBMTgwMEZFQTNCMSAvKiBKU01lZGlhS2V5TWVzc2FnZUV2
ZW50LmNwcCAqLzsgfTsKKwkJQ0RBOThERTAxNjAyNkEzNzAwRkVBM0IxIC8qIEpTTWVkaWFLZXlO
ZWVkZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREE5OERERDE2MDI2QTE5MDBGRUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmNw
cCAqLzsgfTsKKwkJQ0RBOThFMDQxNjAzOUUxQTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTk4RENFMTYw
MTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5cy5jcHAgKi87IH07CisJCUNEQTk4RTA2MTYwMzlF
MUYwMEZFQTNCMSAvKiBKU01lZGlhS2V5U2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OEREMDE2MDE1OTc5MDBGRUEzQjEgLyogSlNN
ZWRpYUtleVNlc3Npb24uY3BwICovOyB9OworCQlDREE5OEUwQjE2MDNDRDYwMDBGRUEzQjEgLyog
Q0RNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
QTk4RTA5MTYwM0NENTkwMEZFQTNCMSAvKiBDRE0uY3BwICovOyB9OworCQlDREE5OEUwRDE2MDNG
RTRBMDBGRUEzQjEgLyogTWVkaWFLZXlzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQTk4RENBMTYwMTUwOEEwMEZFQTNCMSAvKiBNZWRpYUtleXMu
Y3BwICovOyB9OworCQlDREE5OEUwRTE2MDNGRTU4MDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTk4
REM3MTYwMTRGMkMwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uY3BwICovOyB9OwogCQlDREFB
OEQwQTE0RDcxQjJFMDA2MUVBNjAgLyogUGxhdGZvcm1DbG9ja0NNLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQThEMDgxNEQzODU2MDAwNjFFQTYw
IC8qIFBsYXRmb3JtQ2xvY2tDTS5tbSAqLzsgfTsKIAkJQ0RCODU5RjcxNjBENDhBNDAwRTVCMDdG
IC8qIE1lZGlhS2V5RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RCODU5RjQxNjBENDg5OTAwRTVCMDdGIC8qIE1lZGlhS2V5RXZlbnQuY3Bw
ICovOyB9OwogCQlDREI4NTlGQTE2MEQ0OTQ5MDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQjg1OUY4
MTYwRDQ5M0UwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXZlbnQuY3BwICovOyB9OwotCQlDREI4NTlG
QjE2MEQ0OTRGMDBFNUIwN0YgLyogSlNNZWRpYUtleUVycm9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQjg1OUYwMTYwRDQyREQwMEU1QjA3RiAv
KiBKU01lZGlhS2V5RXJyb3IuY3BwICovOyB9OworCQlDREMyNkI0MDE2MEE4Q0M2MDAyNjc1N0Ig
LyogTW9ja0NETS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREMyNkIzQzE2MEE2MkIwMDAyNjc1N0IgLyogTW9ja0NETS5jcHAgKi87IH07CisJCUNE
QzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBNb2NrQ0RNLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREMyNkIzRDE2MEE2MkIwMDAyNjc1N0IgLyogTW9j
a0NETS5oICovOyB9OwogCQlDREM2OURENjE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxT
Y3JlZW5XYXJuaW5nVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RDNjlERDQxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2Fy
bmluZ1ZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDREM2OURENzE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5n
Vmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
QzY5REQ1MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lm1t
ICovOyB9OwogCQlDREM2OUREQTE2MzcxRkQ0MDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5Q
bGFjZWhvbGRlclZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQzY5REQ4MTYzNzFGRDMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlblBsYWNl
aG9sZGVyVmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xMTA1MSw4ICsxMTA2MSw4IEBACiAJCTk3N0UyRENCMTJGMEUyODMwMEMxMzM3OSAv
KiBIVE1MU291cmNlVHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBIVE1MU291cmNlVHJhY2tlci5jcHA7IHBhdGggPSBwYXJzZXIvSFRNTFNvdXJjZVRyYWNr
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzdFMkRDQzEyRjBFMjgzMDBD
MTMzNzkgLyogSFRNTFNvdXJjZVRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gSFRNTFNvdXJjZVRyYWNrZXIuaDsgcGF0aCA9IHBhcnNlci9IVE1MU291cmNlVHJhY2tl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzdFMkUwQjEyRjBGQzlDMDBDMTMz
NzkgLyogWFNTQXVkaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBYU1NBdWRpdG9yLmNwcDsgcGF0aCA9IHBhcnNlci9YU1NBdWRpdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTc3RTJFMEMxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWFNTQXVkaXRvci5oOyBwYXRo
ID0gcGFyc2VyL1hTU0F1ZGl0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc3
RTJFMEIxMkYwRkM5QzAwQzEzMzgwIC8qIFhTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBYU1NBdWRpdG9yRGVsZWdhdGUuY3BwOyBwYXRo
ID0gcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk3N0UyRTBDMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFhTU0F1ZGl0b3IuaDsgcGF0aCA9IHBhcnNlci9YU1NB
dWRpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3N0UyRTBDMTJGMEZDOUMw
MEMxMzM4MCAvKiBYU1NBdWRpdG9yRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gWFNTQXVkaXRvckRlbGVnYXRlLmg7IHBhdGggPSBwYXJzZXIvWFNTQXVkaXRvckRl
bGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OEFENjcxMTQxMzBBOEQw
MEM3Q0FFMyAvKiBIVE1MU3BhbkVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSFRNTFNwYW5FbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTc4QUQ2NzIxNDEzMEE4RDAwQzdDQUUzIC8qIEhUTUxTcGFuRWxlbWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MU3BhbkVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNTMzLDEwICsxMzU0MywzMyBAQAogCQlDRDgyMDMwOTEz
OTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViV2luZG93QW5pbWF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5k
b3dBbmltYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJXaW5kb3dBbmltYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4
RDlCMTYwMTI4QTUwMEZFQTNCMSAvKiBKU01lZGlhS2V5RXJyb3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYUtleUVycm9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEOUMxNjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlF
cnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhS2V5RXJyb3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQzIxNjAxNEVFRTAwRkVBM0Ix
IC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTWVkaWFLZXlOZWVkZWRFdmVudC5jcHA7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREE5OERDMzE2MDE0RUVFMDBGRUEzQjEgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYUtleU5lZWRlZEV2ZW50Lmg7IHBh
dGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQzQxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlh
S2V5TmVlZGVkRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE1lZGlhS2V5TmVlZGVk
RXZlbnQuaWRsOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2
ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQzcxNjAxNEYyQzAw
RkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBNZWRpYUtleVNlc3Npb24uY3BwOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REE5OERDODE2MDE0RjJDMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGlhS2V5U2Vzc2lvbi5oOyBwYXRoID0gTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBOThEQzkxNjAxNEY0MDAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBuYW1lID0gTWVkaWFLZXlTZXNzaW9uLmlkbDsgcGF0aCA9IE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBOThEQ0ExNjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBNZWRpYUtleXMuY3BwOyBwYXRoID0gTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREE5OERDQjE2MDE1MDhBMDBGRUEzQjEgLyogTWVkaWFLZXlzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGlhS2V5cy5oOyBwYXRoID0gTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
OThEQ0MxNjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBu
YW1lID0gTWVkaWFLZXlzLmlkbDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQ0UxNjAxNTk3OTAw
RkVBM0IxIC8qIEpTTWVkaWFLZXlzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTTWVkaWFLZXlzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
OThEQ0YxNjAxNTk3OTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFLZXlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQTk4REQwMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5U2Vzc2lvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5U2Vzc2lvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REQxMTYwMTU5NzkwMEZFQTNCMSAv
KiBKU01lZGlhS2V5U2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U01lZGlhS2V5U2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERE
NTE2MDI1QkVEMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwOyBwYXRo
ID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REQ2MTYwMjVCRUQwMEZFQTNCMSAvKiBNZWRp
YUtleU1lc3NhZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRp
YUtleU1lc3NhZ2VFdmVudC5oOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eU1lc3NhZ2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERENzE2
MDI1QkVFMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgbmFtZSA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREE5OEREQjE2MDI2QTE4MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEREMxNjAyNkExOTAwRkVBM0IxIC8qIEpT
TWVkaWFLZXlNZXNzYWdlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUtleU1lc3NhZ2VF
dmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERERDE2MDI2QTE5MDBG
RUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
TWVkaWFLZXlOZWVkZWRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QTk4RERFMTYwMjZBMTkwMEZFQTNCMSAvKiBKU01lZGlhS2V5TmVlZGVkRXZlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNNZWRpYUtleU5lZWRlZEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQTk4RTA5MTYwM0NENTkwMEZFQTNCMSAvKiBDRE0uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQ0RNLmNwcDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThFMEExNjAzQ0Q1OTAwRkVBM0IxIC8qIENE
TS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBDRE0uaDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RTBDMTYwM0NGM0MwMEZF
QTNCMSAvKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQUE4RDA3MTREMzg1NjAwMDYxRUE2MCAv
KiBQbGF0Zm9ybUNsb2NrQ00uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxh
dGZvcm1DbG9ja0NNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQUE4RDA4MTRE
Mzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybUNsb2NrQ00ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUNEQjg1OUYwMTYwRDQyREQwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXJyb3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYUtleUVycm9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0RCODU5RjExNjBENDJERDAwRTVC
MDdGIC8qIEpTTWVkaWFLZXlFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU01lZGlhS2V5RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCODU5
RjIxNjBENDg5OTAwRTVCMDdGIC8qIE1lZGlhS2V5RXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVkaWFLZXlFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDREI4NTlGMzE2MEQ0ODk5MDBFNUIwN0YgLyogTWVkaWFLZXlFcnJvci5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFLZXlFcnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNEQjg1OUY0MTYwRDQ4OTkwMEU1QjA3RiAvKiBNZWRpYUtleUV2ZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhS2V5RXZlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM1NDUsNiArMTM1NzgsOCBAQAogCQlDREI4
NTlGODE2MEQ0OTNFMDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFLZXlFdmVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEQjg1OUY5MTYwRDQ5M0UwMEU1QjA3RiAvKiBKU01lZGlhS2V5
RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUtleUV2ZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQkQ5M0JBMTMzM0JENEIwMDI1NzBF
MyAvKiBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0g
ZnVsbHNjcmVlblF1aWNrVGltZS5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QzI2QjNDMTYwQTYyQjAwMDI2NzU3QiAvKiBNb2NrQ0RNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1vY2tDRE0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREMyNkIzRDE2MEE2
MkIwMDAyNjc1N0IgLyogTW9ja0NETS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ0RNLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzY5REQ0MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJD
b3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RDNjlERDUxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2Fy
bmluZ1ZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJD
b3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDREM2OUREODE2MzcxRkQzMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRl
clZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZUZ1bGxTY3Jl
ZW5QbGFjZWhvbGRlclZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0Nzc2
LDYgKzE0ODExLDcgQEAKIAkJMTRERkIzM0YwQTdERjc2MzAwMThGNzY5IC8qIERlcml2ZWQgU291
cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0RB
OThEQ0QxNjAxNTE1QzAwRkVBM0IxIC8qIEVuY3J5cHRlZE1lZGlhICovLAogCQkJCUE4M0I3OTEw
MENDQjAwMUIwMDBCMDgyNSAvKiBDb3JlICovLAogCQkJCUE4M0I3OTBFMENDQUZGOTcwMDBCMDgy
NSAvKiBDU1MgKi8sCiAJCQkJQTgzQjc5MTIwQ0NCMDAzRjAwMEIwODI1IC8qIEV2ZW50cyAqLywK
QEAgLTE1NDgwLDYgKzE1NTE2LDggQEAKIAkJCQlBN0JFN0VERTE0QzkxNzVBMDAxNDQ4OUQgLyog
TWFsbG9jU3RhdGlzdGljcy5pZGwgKi8sCiAJCQkJRUIwODFDRDgxNjk2MDg0NDAwNTUzNzMwIC8q
IFR5cGVDb252ZXJzaW9ucy5oICovLAogCQkJCUVCMDgxQ0Q5MTY5NjA4NDQwMDU1MzczMCAvKiBU
eXBlQ29udmVyc2lvbnMuaWRsICovLAorCQkJCUNEQzI2QjNDMTYwQTYyQjAwMDI2NzU3QiAvKiBN
b2NrQ0RNLmNwcCAqLywKKwkJCQlDREMyNkIzRDE2MEE2MkIwMDAyNjc1N0IgLyogTW9ja0NETS5o
ICovLAogCQkJKTsKIAkJCXBhdGggPSB0ZXN0aW5nOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTE4MjE5LDYgKzE4MjU3LDcgQEAKIAkJOTcxMTQ1RkUxNEVGMDA2RTAwNjc0RkQ5IC8q
IE1vZHVsZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CUNEQTk4REJEMTYwMTRFMDgwMEZFQTNCMSAvKiBlbmNyeXB0ZWRtZWRpYSAqLywKIAkJCQk5NzEx
NDVGRjE0RUYwMDc5MDA2NzRGRDkgLyogZ2VvbG9jYXRpb24gKi8sCiAJCQkJOTcxMkE1NTMxNTAw
NEUzQzAwNDhBRjEwIC8qIGluZGV4ZWRkYiAqLywKIAkJCQlCMUE5NDJERDE1QjVDRTIyMDBENTI1
RDEgLyogbWVkaWFzb3VyY2UgKi8sCkBAIC0xODk2Nyw4ICsxOTAwNiw2IEBACiAJCQkJQ0QyN0Y2
RTMxNDU3Njc1ODAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmggKi8sCiAJCQkJRTQ0NjE0
MTAwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVkaWFFcnJvci5jcHAgKi8sCiAJCQkJRTQ0NjE0MTEw
Q0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVkaWFFcnJvci5oICovLAotCQkJCUNEQjg1OUYwMTYwRDQy
REQwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXJyb3IuY3BwICovLAotCQkJCUNEQjg1OUYxMTYwRDQy
REQwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXJyb3IuaCAqLywKIAkJCQlDREI4NTlGODE2MEQ0OTNF
MDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmNwcCAqLywKIAkJCQlDREI4NTlGOTE2MEQ0OTNF
MDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmggKi8sCiAJCQkJMTA1OTQ1NzUxNUI0MkEwRDAw
NEQzN0ZEIC8qIEpTTWljcm9EYXRhSXRlbVZhbHVlLmNwcCAqLywKQEAgLTIxNTI1LDYgKzIxNTYy
LDQ1IEBACiAJCQluYW1lID0gYXVkaW87CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9
OworCQlDREE5OERCRDE2MDE0RTA4MDBGRUEzQjEgLyogZW5jcnlwdGVkbWVkaWEgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUNEQTk4REQ1MTYwMjVCRUQw
MEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgKi8sCisJCQkJQ0RBOThERDYxNjAy
NUJFRDAwRkVBM0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmggKi8sCisJCQkJQ0RBOThERDcx
NjAyNUJFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbCAqLywKKwkJCQlDREE5
OERDMjE2MDE0RUVFMDBGRUEzQjEgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgKi8sCisJCQkJ
Q0RBOThEQzMxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuaCAqLywKKwkJ
CQlDREE5OERDNDE2MDE0RUVFMDBGRUEzQjEgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwgKi8s
CisJCQkJQ0RBOThEQ0ExNjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgKi8sCisJCQkJ
Q0RBOThEQ0IxNjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5oICovLAorCQkJCUNEQTk4REND
MTYwMTUwOEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuaWRsICovLAorCQkJCUNEQTk4REM3MTYwMTRG
MkMwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uY3BwICovLAorCQkJCUNEQTk4REM4MTYwMTRG
MkMwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uaCAqLywKKwkJCQlDREE5OERDOTE2MDE0RjQw
MDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmlkbCAqLywKKwkJCQlDREE5OEUwOTE2MDNDRDU5
MDBGRUEzQjEgLyogQ0RNLmNwcCAqLywKKwkJCQlDREE5OEUwQTE2MDNDRDU5MDBGRUEzQjEgLyog
Q0RNLmggKi8sCisJCQkJQ0RBOThFMEMxNjAzQ0YzQzAwRkVBM0IxIC8qIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNUHJpdmF0ZS5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBlbmNyeXB0ZWRtZWRp
YTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUNEQTk4RENEMTYwMTUxNUMw
MEZFQTNCMSAvKiBFbmNyeXB0ZWRNZWRpYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQ0RBOThEOUIxNjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlF
cnJvci5jcHAgKi8sCisJCQkJQ0RBOThEOUMxNjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlF
cnJvci5oICovLAorCQkJCUNEQTk4RERCMTYwMjZBMTgwMEZFQTNCMSAvKiBKU01lZGlhS2V5TWVz
c2FnZUV2ZW50LmNwcCAqLywKKwkJCQlDREE5OEREQzE2MDI2QTE5MDBGRUEzQjEgLyogSlNNZWRp
YUtleU1lc3NhZ2VFdmVudC5oICovLAorCQkJCUNEQTk4REREMTYwMjZBMTkwMEZFQTNCMSAvKiBK
U01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwICovLAorCQkJCUNEQTk4RERFMTYwMjZBMTkwMEZFQTNC
MSAvKiBKU01lZGlhS2V5TmVlZGVkRXZlbnQuaCAqLywKKwkJCQlDREE5OERDRTE2MDE1OTc5MDBG
RUEzQjEgLyogSlNNZWRpYUtleXMuY3BwICovLAorCQkJCUNEQTk4RENGMTYwMTU5NzkwMEZFQTNC
MSAvKiBKU01lZGlhS2V5cy5oICovLAorCQkJCUNEQTk4REQwMTYwMTU5NzkwMEZFQTNCMSAvKiBK
U01lZGlhS2V5U2Vzc2lvbi5jcHAgKi8sCisJCQkJQ0RBOThERDExNjAxNTk3OTAwRkVBM0IxIC8q
IEpTTWVkaWFLZXlTZXNzaW9uLmggKi8sCisJCQkpOworCQkJbmFtZSA9IEVuY3J5cHRlZE1lZGlh
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJREY5QUZENkYxM0ZDMzFCMDAw
MTVGRUI3IC8qIG9iamMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KApAQCAtMjI5NDEsNiArMjMwMTcsNyBAQAogCQkJCUE3NDBCNTk1MTRDOTM1QUIwMEE3N0ZBNCAv
KiBKU01hbGxvY1N0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUVCRjUxMjFEMTY5NjQ5
NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4
MTVDMUYxMzgzMTk4MzAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQ0RDMjZCNDExNjBBOENDRTAwMjY3NTdCIC8qIE1vY2tDRE0uaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMjY2NjIsNiArMjY3MzksNyBAQAogCQkJCUE3NDBCNTk3MTRDOTM1QUYwMEE3N0ZB
NCAvKiBKU01hbGxvY1N0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRUJGNTEyMUMx
Njk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxODE1QzFFMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQ0RDMjZCNDAxNjBBOENDNjAwMjY3NTdCIC8qIE1vY2tDRE0uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yODEyMSw3ICsyODE5OSw2IEBACiAJCQkJQ0QyN0Y2RTUxNDU3
Njg1QTAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUZEMjNBMTI1MTNGNUZBNTkwMEY2NzAwMSAvKiBKU01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTQxODBDRDY4MjY5MDBGQURBNzUgLyogSlNN
ZWRpYUVycm9yLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUNEQjg1OUZCMTYwRDQ5NEYwMEU1QjA3
RiAvKiBKU01lZGlhS2V5RXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCODU5RkExNjBE
NDk0OTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzNDMzlCNjBDMEQzRDhEMDA1RjREN0EgLyogSlNNZWRpYUxpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQ2NEUwNkMxMzVFQzEwNjAwRkRCMDBBIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjk0OTcsNiArMjk1NzQsMTYgQEAKIAkJCQk5NzdFMkUwRTEyRjBG
QzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUw
RTEyRjBGQzlDMDBDMTMzODAgLyogWFNTQXVkaXRvckRlbGVnYXRlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlDREE5OERBMzE2MDE0NjQxMDBGRUEzQjEgLyogSlNNZWRpYUtleUVycm9yLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4REQ4MTYwMjVCRUYwMEZFQTNCMSAvKiBNZWRpYUtl
eU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OERERjE2MDI2QTM3MDBG
RUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlD
REE5OERFMDE2MDI2QTM3MDBGRUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUNEQTk4RTA0MTYwMzlFMUEwMEZFQTNCMSAvKiBKU01lZGlhS2V5cy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OEUwNjE2MDM5RTFGMDBGRUEzQjEgLyogSlNNZWRp
YUtleVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVB
M0IxIC8qIENETS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OEUwRDE2MDNGRTRBMDBGRUEz
QjEgLyogTWVkaWFLZXlzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4RTBFMTYwM0ZFNTgw
MEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QxQjRB
NjUxNjA3ODZBRTAwMjgyREY5IC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbiBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCmluZGV4IGMyNjkzZGE5NmZhZWQ5ODdlNDM3NzMx
YjVmYzc2MTEyZmY3NDNlNGQuLjZiMzQ3YmU4OWQ1ZGY3MDNjOWQ3YTY0MDY3NjJhY2M3ZTI1ZjY2
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCkBAIC01MCw1ICs1MCw3IEBAIERldmljZU9y
aWVudGF0aW9uRXZlbnQgY29uZGl0aW9uYWw9REVWSUNFX09SSUVOVEFUSU9OCiBEZXZpY2VQcm94
aW1pdHlFdmVudCBjb25kaXRpb25hbD1QUk9YSU1JVFlfRVZFTlRTCiBPcmllbnRhdGlvbkV2ZW50
IGludGVyZmFjZU5hbWU9RXZlbnQsIGNvbmRpdGlvbmFsPU9SSUVOVEFUSU9OX0VWRU5UUwogTWVk
aWFLZXlFdmVudCBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEKK01lZGlhS2V5TWVzc2FnZUV2
ZW50IGNvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMgorTWVkaWFLZXlOZWVkZWRFdmVudCBj
b25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIKIFRyYWNrRXZlbnQgY29uZGl0aW9uYWw9VklE
RU9fVFJBQ0sKIEF1dG9jb21wbGV0ZUVycm9yRXZlbnQgY29uZGl0aW9uYWw9UkVRVUVTVF9BVVRP
Q09NUExFVEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IDI0
MzY4NWE3ODkxMmRiNDc4Njk0MTU0ODFjNzg4NWE4YjI2MDdiZjYuLjNkYmQ3YjkxZTNmNmJhY2Fi
MGMwYjQwNmI1ZWEyZDhiZjQyMjFlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
RmFjdG9yeS5pbgpAQCAtMTQsNiArMTQsNyBAQCBJREJSZXF1ZXN0IGNvbmRpdGlvbmFsPUlOREVY
RURfREFUQUJBU0UKIElEQlRyYW5zYWN0aW9uIGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UK
IFNjcmlwdFByb2Nlc3Nvck5vZGUgY29uZGl0aW9uYWw9V0VCX0FVRElPCiBMb2NhbE1lZGlhU3Ry
ZWFtIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQorTWVkaWFLZXlTZXNzaW9uIGNvbmRpdGlvbmFs
PUVOQ1JZUFRFRF9NRURJQV9WMgogTWVkaWFDb250cm9sbGVyIGNvbmRpdGlvbmFsPVZJREVPCiBN
ZWRpYVNvdXJjZSBjb25kaXRpb25hbD1NRURJQV9TT1VSQ0UKIE1lZGlhU3RyZWFtIGNvbmRpdGlv
bmFsPU1FRElBX1NUUkVBTQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
aW5kZXggNWZiNDg0YzY0YTQwNGNlYmE0MDk4NzU3ZWY5ZjcyNGM0YWUyZTIyZC4uMjI0YWRhZDU3
OTFiYWM1YjBlYTI1ZWUwN2YyYWM0NjMzOWM4NTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xMjUsNiArMTI1LDExIEBACiAjaW5jbHVkZSAiTWVkaWFT
dHJlYW1SZWdpc3RyeS5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1Yy
KQorI2luY2x1ZGUgIk1lZGlhS2V5TmVlZGVkRXZlbnQuaCIKKyNpbmNsdWRlICJNZWRpYUtleXMu
aCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0xOTY2LDYgKzE5NzEsMjUgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
cktleU5lZWRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGUKIH0KICNlbmRp
ZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBVaW50OEFycmF5KiBpbml0RGF0
YSkKK3sKKyAgICBNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCBpbml0aWFsaXplcjsKKyAgICBpbml0
aWFsaXplci5pbml0RGF0YSA9IGluaXREYXRhOworICAgIGluaXRpYWxpemVyLmJ1YmJsZXMgPSBm
YWxzZTsKKyAgICBpbml0aWFsaXplci5jYW5jZWxhYmxlID0gZmFsc2U7CisKKyAgICBSZWZQdHI8
RXZlbnQ+IGV2ZW50ID0gTWVkaWFLZXlOZWVkZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53
ZWJraXRuZWVka2V5RXZlbnQsIGluaXRpYWxpemVyKTsKKyAgICBldmVudC0+c2V0VGFyZ2V0KHRo
aXMpOworICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQucmVsZWFzZSgp
KTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUtleXMoTWVkaWFLZXlzKiBt
ZWRpYUtleXMpCit7CisgICAgbV9tZWRpYUtleXMgPSBtZWRpYUtleXM7Cit9CisjZW5kaWYKKwog
dm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpwcm9ncmVzc0V2ZW50VGltZXJGaXJlZChUaW1lcjxIVE1M
TWVkaWFFbGVtZW50PiopCiB7CiAgICAgQVNTRVJUKG1fcGxheWVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZTUyY2U0MWI0MmEzNDZkMDkwZjE2OWNhN2Y3ZDM1
ZmMxNTUwOWUyOC4uYjE4NDA4NTcyNmQ5ZmE4ZmE2NWUwOGViOGNjZGEwMjYxYmQyNTJkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTY3LDYgKzY3LDkgQEAgY2xh
c3MgV2lkZ2V0OwogI2lmIFBMQVRGT1JNKE1BQykKIGNsYXNzIERpc3BsYXlTbGVlcERpc2FibGVy
OwogI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKK2NsYXNzIE1lZGlhS2V5
czsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogY2xhc3MgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZTsKQEAgLTE4OCw5ICsxOTEsMTYgQEAgcHVibGljOgogICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0a2V5YWRkZWQpOwogICAgIERFRklORV9BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIod2Via2l0a2V5ZXJyb3IpOwogICAgIERFRklORV9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIod2Via2l0a2V5bWVzc2FnZSk7CisjZW5kaWYKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQogICAgIERFRklORV9B
VFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0bmVlZGtleSk7CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUFfVjIpCisgICAgTWVkaWFLZXlzKiBtZWRpYUtleXMoKSBjb25z
dCB7IHJldHVybiBtX21lZGlhS2V5cy5nZXQoKTsgfQorICAgIHZvaWQgc2V0TWVkaWFLZXlzKE1l
ZGlhS2V5cyopOworI2VuZGlmCisKIC8vIGNvbnRyb2xzCiAgICAgYm9vbCBjb250cm9scygpIGNv
bnN0OwogICAgIHZvaWQgc2V0Q29udHJvbHMoYm9vbCk7CkBAIC00NDUsNiArNDU1LDEwIEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVy
KiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25z
dCB1bnNpZ25lZCBjaGFyKiBpbml0RGF0YSwgdW5zaWduZWQgaW5pdERhdGFMZW5ndGgpIE9WRVJS
SURFOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChNZWRpYVBsYXllciosIFVpbnQ4QXJyYXkqKTsK
KyNlbmRpZgorCiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJSZWZlcnJlcigpIGNvbnN0
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyVXNlckFnZW50KCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBDT1JTTW9kZSBtZWRpYVBsYXllckNPUlNNb2RlKCkg
Y29uc3QgT1ZFUlJJREU7CkBAIC03MDYsNiArNzIwLDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
ICAgIGZyaWVuZCBjbGFzcyBUcmFja0Rpc3BsYXlVcGRhdGVTY29wZTsKKworI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUFfVjIpCisgICAgUmVmUHRyPE1lZGlhS2V5cz4gbV9tZWRpYUtleXM7Cisj
ZW5kaWYKIH07CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmlkbAppbmRleCAyZWNlNWFjYWE1YWRhMzI4NWVjMzg3OTM0MmZhODFi
Mjc5MDU4M2JlLi41ZWJmNDQ3MGJiYzBkNmNlNTg2MmJhZDE5Y2RiNjRhNGNhZjU1ODlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKQEAgLTQ1LDcgKzQ1LDkgQEAg
YXR0cmlidXRlIERPTVN0cmluZyBwcmVsb2FkOwogcmVhZG9ubHkgYXR0cmlidXRlIFRpbWVSYW5n
ZXMgYnVmZmVyZWQ7CiB2b2lkIGxvYWQoKTsKICNpZiBkZWZpbmVkKEVOQUJMRV9FTkNSWVBURURf
TUVESUEpICYmIEVOQUJMRV9FTkNSWVBURURfTUVESUEKLURPTVN0cmluZyBjYW5QbGF5VHlwZShp
biBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgdHlwZSwgaW4gW09wdGlv
bmFsPURlZmF1bHRJc1VuZGVmaW5lZCwgVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRl
ZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcga2V5U3lzdGVtKTsKKyAgICBET01TdHJpbmcg
Y2FuUGxheVR5cGUoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHR5
cGUsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWQsIFRyZWF0TnVsbEFzPU51bGxTdHJp
bmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIGtleVN5c3RlbSk7Cisj
ZWxpZiBkZWZpbmVkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICYmIEVOQUJMRV9FTkNSWVBU
RURfTUVESUFfVjIKKyAgICBET01TdHJpbmcgY2FuUGxheVR5cGUoaW4gW09wdGlvbmFsPURlZmF1
bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHR5cGUsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRl
ZmluZWQsIFRyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmlu
Z10gRE9NU3RyaW5nIGtleVN5c3RlbSk7CiAjZWxzZQogRE9NU3RyaW5nIGNhblBsYXlUeXBlKGlu
IFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0eXBlKTsKICNlbmRpZgpA
QCAtMTAxLDEwICsxMDMsMTMgQEAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb25kaXRpb25hbD1NRURJ
QV9TVEFUSVNUSUNTXSB1bnNpZ25lZCBsb25nIHdlYmtpdFZpZGVvRGVjb2QKIFtWOEVuYWJsZWRB
dFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIHZvaWQgd2Via2l0Q2FuY2VsS2V5UmVxdWVzdChpbiBb
VHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01T
dHJpbmcga2V5U3lzdGVtLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzTnVsbFN0cmluZ10gRE9NU3Ry
aW5nIHNlc3Npb25JZCkKICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKLVtWOEVuYWJsZWRB
dFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ud2Via2l0
a2V5YWRkZWQ7Ci1hdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0g
RXZlbnRMaXN0ZW5lciBvbndlYmtpdGtleWVycm9yOwotYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1
bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXltZXNzYWdlOwot
YXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVu
ZXIgb253ZWJraXRuZWVka2V5OworICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPWVu
Y3J5cHRlZE1lZGlhXSBFdmVudExpc3RlbmVyIG9ud2Via2l0a2V5YWRkZWQ7CisgICAgYXR0cmli
dXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253
ZWJraXRrZXllcnJvcjsKKyAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0
ZWRNZWRpYV0gRXZlbnRMaXN0ZW5lciBvbndlYmtpdGtleW1lc3NhZ2U7CisjZW5kaWYKKyAgICBh
dHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQXxFTkNSWVBURURfTUVESUFfVjIs
IFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gRXZlbnRMaXN0ZW5lciBvbndlYmtp
dG5lZWRrZXk7CisjaWYgZGVmaW5lZChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAmJiBFTkFC
TEVfRU5DUllQVEVEX01FRElBX1YyCisgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9
ZW5jcnlwdGVkTWVkaWFdIE1lZGlhS2V5cyBtZWRpYUtleXM7CiAjZW5kaWYKIAogI2lmIGRlZmlu
ZWQoRU5BQkxFX1ZJREVPX1RSQUNLKSAmJiBFTkFCTEVfVklERU9fVFJBQ0sKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUVycm9yLmgKaW5kZXggOTBmNDQ3ZjA1ZTVhNGYwY2FkMTRiNWM0MjliZmJmZThjODcwZDMw
NC4uYjBiZjVmNzY1ZDVhMzg2NjY3OThiMDQ5MzU3NWIyYTA2NDAyMThkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUVycm9yLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgICAgICBNRURJQV9F
UlJfTkVUV09SSywKICAgICAgICAgTUVESUFfRVJSX0RFQ09ERSwKICAgICAgICAgTUVESUFfRVJS
X1NSQ19OT1RfU1VQUE9SVEVECi0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQogICAgICAg
ICAsIE1FRElBX0VSUl9FTkNSWVBURUQKICNlbmRpZgogICAgIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUVycm9yLmlkbAppbmRleCBlMmNkMjcxNDNjY2E1YTdiYzc1NDg4Yzg1NjFkOTY1M2YwOTQ3MWJk
Li43MzM3NDQ0NDZiMDFjMjEyYzU0NWYyZTA2N2JhODE2MWY4NjdjMDI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFFcnJvci5pZGwKQEAgLTIzLDE1ICsyMywxNSBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAg
Ki8KIAotWworaW50ZXJmYWNlIFsKICAgICBDb25kaXRpb25hbD1WSURFTywKICAgICBJbXBsZW1l
bnRhdGlvbkxhY2tzVlRhYmxlCi1dIGludGVyZmFjZSBNZWRpYUVycm9yIHsKK10gTWVkaWFFcnJv
ciB7CiAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfQUJPUlRFRCA9IDE7CiAg
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfTkVUV09SSyA9IDI7CiAgICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfREVDT0RFID0gMzsKICAgICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0IE1FRElBX0VSUl9TUkNfTk9UX1NVUFBPUlRFRCA9IDQ7Ci0jaWYgZGVmaW5l
ZChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEVfRU5DUllQVEVEX01FRElBCisjaWYg
KGRlZmluZWQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFX0VOQ1JZUFRFRF9NRURJ
QSkgfHwgKGRlZmluZWQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJiYgRU5BQkxFX0VOQ1JZ
UFRFRF9NRURJQV9WMikKICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0VSUl9FTkNS
WVBURUQgPSA1OwogI2VuZGlmCiAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hv
cnQgY29kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFcnJvci5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUVycm9yLmgKaW5kZXggMTJjNzM2ZDQ4N2Ez
ZjRjMDcxNjViNGM2NTI4ZWZkOTk5Y2Y3NWRlMi4uNDllMzg0M2UzMjhiMzkwODc4ZTY1ZTEyYzEx
ZTA2OTVkOTcxOGQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUVy
cm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUVycm9yLmgKQEAgLTI2LDcg
KzI2LDcgQEAKICNpZm5kZWYgTWVkaWFLZXlFcnJvcl9oCiAjZGVmaW5lIE1lZGlhS2V5RXJyb3Jf
aAogCi0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQogCiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMzUsNyArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhS2V5RXJyb3IgOiBwdWJsaWMgUmVmQ291
bnRlZDxNZWRpYUtleUVycm9yPiB7CiBwdWJsaWM6Ci0gICAgZW51bSBDb2RlIHsKKyAgICBlbnVt
IHsKICAgICAgICAgTUVESUFfS0VZRVJSX1VOS05PV04gPSAxLAogICAgICAgICBNRURJQV9LRVlF
UlJfQ0xJRU5ULAogICAgICAgICBNRURJQV9LRVlFUlJfU0VSVklDRSwKQEAgLTQzLDE1ICs0Mywx
OCBAQCBwdWJsaWM6CiAgICAgICAgIE1FRElBX0tFWUVSUl9IQVJEV0FSRUNIQU5HRSwKICAgICAg
ICAgTUVESUFfS0VZRVJSX0RPTUFJTgogICAgIH07CisgICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBDb2RlOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFLZXlFcnJvcj4gY3JlYXRlKENv
ZGUgY29kZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhS2V5RXJyb3IoY29kZSkpOyB9Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFLZXlFcnJvcj4gY3JlYXRlKENvZGUgY29kZSwgdW5z
aWduZWQgbG9uZyBzeXN0ZW1Db2RlID0gMCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhS2V5
RXJyb3IoY29kZSwgc3lzdGVtQ29kZSkpOyB9CiAKICAgICBDb2RlIGNvZGUoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGU7IH0KKyAgICB1bnNpZ25lZCBsb25nIHN5c3RlbUNvZGUoKSB7IHJldHVybiBt
X3N5c3RlbUNvZGU7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNZWRpYUtleUVycm9yKENv
ZGUgY29kZSkgOiBtX2NvZGUoY29kZSkgeyB9CisgICAgZXhwbGljaXQgTWVkaWFLZXlFcnJvcihD
b2RlIGNvZGUsIHVuc2lnbmVkIGxvbmcgc3lzdGVtQ29kZSkgOiBtX2NvZGUoY29kZSksIG1fc3lz
dGVtQ29kZShzeXN0ZW1Db2RlKSB7IH0KIAogICAgIENvZGUgbV9jb2RlOworICAgIHVuc2lnbmVk
IGxvbmcgbV9zeXN0ZW1Db2RlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUVycm9yLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFLZXlFcnJvci5pZGwKaW5kZXggZjcyNzlkMzljODgxYjFhZTk3MTQ4MGEz
MjAxNGM5YTY2ZTcxNDQxOS4uOTYzMTU1MTM5MmQ2ZTkyMzJmNGZlNjZiZjY4MDRlYjAyODA5YmM1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUVycm9yLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXJyb3IuaWRsCkBAIC0yMywxMSArMjMsMTEg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLVsKLSAgICBDb25kaXRpb25hbD1FTkNSWVBURURf
TUVESUEsCitpbnRlcmZhY2UgWworICAgIENvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQXxFTkNS
WVBURURfTUVESUFfVjIsCiAgICAgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhLCAK
ICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCi1dIGludGVyZmFjZSBNZWRpYUtleUVycm9y
IHsKK10gTWVkaWFLZXlFcnJvciB7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfS0VZ
RVJSX1VOS05PV04gPSAxOwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0tFWUVSUl9D
TElFTlQgPSAyOwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0tFWUVSUl9TRVJWSUNF
ID0gMzsKQEAgLTM1LDQgKzM1LDUgQEAKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9L
RVlFUlJfSEFSRFdBUkVDSEFOR0UgPSA1OwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElB
X0tFWUVSUl9ET01BSU4gPSA2OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9y
dCBjb2RlOworICAgIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjJdIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHN5c3RlbUNvZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaWRsCmluZGV4IDc3NGQwMjQ1YmIwZTk2NzQzM2NlMjFiMzQ2MmQxMjY0YmU1Y2U2NmEuLjc0
M2VmZmEyZDliNTU1YTVmYzJlNzgxMjE4MTRkOWVlYzUzYjA4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwKQEAgLTQ4Niw2ICs0ODYsMTAgQEAKIAogICAgIFtDb25kaXRpb25hbD1FTkNS
WVBURURfTUVESUEsIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gYXR0cmlidXRl
IE1lZGlhS2V5RXJyb3JDb25zdHJ1Y3RvciBNZWRpYUtleUVycm9yOwogICAgIFtDb25kaXRpb25h
bD1FTkNSWVBURURfTUVESUEsIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gYXR0
cmlidXRlIE1lZGlhS2V5RXZlbnRDb25zdHJ1Y3RvciBNZWRpYUtleUV2ZW50OworICAgIGF0dHJp
YnV0ZSBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyLCBWOEVuYWJsZWRBdFJ1bnRpbWU9
ZW5jcnlwdGVkTWVkaWFdIE1lZGlhS2V5c0NvbnN0cnVjdG9yIE1lZGlhS2V5czsKKyAgICBhdHRy
aWJ1dGUgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMiwgVjhFbmFibGVkQXRSdW50aW1l
PWVuY3J5cHRlZE1lZGlhXSBNZWRpYUtleUVycm9yQ29uc3RydWN0b3IgTWVkaWFLZXlFcnJvcjsK
KyAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMiwgVjhFbmFibGVk
QXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBNZWRpYUtleU1lc3NhZ2VFdmVudENvbnN0cnVjdG9y
IE1lZGlhS2V5TWVzc2FnZUV2ZW50OworICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9RU5DUllQ
VEVEX01FRElBX1YyLCBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIE1lZGlhS2V5
TmVlZGVkRXZlbnRDb25zdHJ1Y3RvciBNZWRpYUtleU5lZWRlZEV2ZW50OwogCiAgICAgW0NvbmRp
dGlvbmFsPVZJREVPX1RSQUNLLCBWOEVuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10g
YXR0cmlidXRlIEhUTUxUcmFja0VsZW1lbnRDb25zdHJ1Y3RvciBIVE1MVHJhY2tFbGVtZW50Owog
ICAgIFtDb25kaXRpb25hbD1WSURFT19UUkFDSywgVjhFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZp
ZGVvVHJhY2tdIGF0dHJpYnV0ZSBUZXh0VHJhY2tDb25zdHJ1Y3RvciBUZXh0VHJhY2s7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXgg
NGI3MDRhYjA1OTM5ZTc4NWYxMjczZDU1ZjdlMGE1ZjIxMzM1YTA1YS4uMDNkMzkxYzYxMzZkNzYy
ZTlmN2UxNjVhOGNlMDQ4NmIyY2MxNjQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIHN0YXRpYyBN
ZWRpYVBsYXllckZhY3RvcnkqIGJlc3RNZWRpYUVuZ2luZUZvclR5cGVBbmRDb2RlY3MoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjCiAgICAgICAgICAgICAgICAgY3VycmVudCA9IDA7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKICAg
ICAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdpbmVTdXBwb3J0ID0gZW5naW5lc1tu
ZHhdLT5zdXBwb3J0c1R5cGVBbmRDb2RlY3ModHlwZSwgY29kZWNzLCBrZXlTeXN0ZW0sIHVybCk7
CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oa2V5U3lzdGVtKTsKQEAgLTc4NCw3ICs3ODQs
NyBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUo
Y29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeQogICAgIFVOVVNFRF9QQVJBTShjbGllbnQpOwog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAgICAgcmV0dXJuIGVuZ2lu
ZS0+c3VwcG9ydHNUeXBlQW5kQ29kZWNzKHR5cGUsIHR5cGVDb2RlY3MsIHN5c3RlbSwgdXJsKTsK
ICNlbHNlCiAgICAgQVNTRVJUKHN5c3RlbS5pc0VtcHR5KCkpOwpAQCAtMTA4MSw2ICsxMDgxLDE0
IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwg
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUFfVjIpCit2b2lkIE1lZGlhUGxheWVyOjprZXlOZWVkZWQoVWludDhBcnJheSog
aW5pdERhdGEpCit7CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIG1fbWVk
aWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyS2V5TmVlZGVkKHRoaXMsIGluaXREYXRhKTsKK30K
KyNlbmRpZgorCiBTdHJpbmcgTWVkaWFQbGF5ZXI6OnJlZmVycmVyKCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCAyYjA1MTc2YWY2OWJhMTYyNmY2MjQxZmE4ODNmZmE0
MjUzOTlmODYyLi5jYjU1NzhiODE1MDk4YTY0MzcxMjMzMTNjNmQzMDNjMjFmOGNiMDhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTE5
Myw2ICsxOTMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcktleU5l
ZWRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYgLyoga2V5U3lzdGVtICovLCBjb25zdCBT
dHJpbmcmIC8qIHNlc3Npb25JZCAqLywgY29uc3QgdW5zaWduZWQgY2hhciogLyogaW5pdERhdGEg
Ki8sIHVuc2lnbmVkIC8qIGluaXREYXRhTGVuZ3RoICovKSB7IHJldHVybiBmYWxzZTsgfQogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIHZpcnR1YWwgdm9pZCBt
ZWRpYVBsYXllcktleU5lZWRlZChNZWRpYVBsYXllciosIFVpbnQ4QXJyYXkqKSB7IH0KKyNlbmRp
ZgorICAgIAogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdCB7
IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyVXNlckFn
ZW50KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIENPUlNNb2RlIG1l
ZGlhUGxheWVyQ09SU01vZGUoKSBjb25zdCB7IHJldHVybiBVbnNwZWNpZmllZDsgfQpAQCAtNDMw
LDYgKzQzNCwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBrZXlOZWVkZWQoY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBp
bml0RGF0YSwgdW5zaWduZWQgaW5pdERhdGFMZW5ndGgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBX1YyKQorICAgIHZvaWQga2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXRE
YXRhKTsKKyNlbmRpZgorCiAgICAgU3RyaW5nIHJlZmVycmVyKCkgY29uc3Q7CiAgICAgU3RyaW5n
IHVzZXJBZ2VudCgpIGNvbnN0OwogCkBAIC00ODAsNyArNDg4LDcgQEAgcHJpdmF0ZToKIAogdHlw
ZWRlZiBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gKCpDcmVhdGVNZWRp
YUVuZ2luZVBsYXllcikoTWVkaWFQbGF5ZXIqKTsKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5l
U3VwcG9ydGVkVHlwZXMpKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpOwotI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQV9WMikKIHR5cGVkZWYgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSAoKk1lZGlh
RW5naW5lU3VwcG9ydHNUeXBlKShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29k
ZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgS1VSTCYgdXJsKTsKICNlbHNlCiB0
eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlw
ZSkoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgS1VSTCYg
dXJsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCA2MmEwMmViZjFlNTk1YjQzZjZmMjk5MWI4
MjU0YzA3MDdmZTNjMzRhLi4wNTkyODY0ZTZlNjI2YjY0Nzc0ZDk3NmZkMzRjYTQyN2Y2NDYxNTNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGUoTWVk
aWFQbGF5ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0
cmluZz4mIHR5cGVzKTsKICAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBw
b3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3Qg
S1VSTCYpOwotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKICAgICBzdGF0aWMgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBleHRlbmRlZFN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3Qg
S1VSTCYpOwogI2VuZGlmCiAKQEAgLTE3OSw4ICsxNzksOCBAQCBwcml2YXRlOgogICAgIFJldGFp
blB0cjxWVFBpeGVsVHJhbnNmZXJTZXNzaW9uUmVmPiBtX3BpeGVsVHJhbnNmZXJTZXNzaW9uOwog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwOTAKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRkxvYWRlckRl
bGVnYXRlPiBtX2xvYWRlckRlbGVnYXRlOworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogICAgIEhhc2hNYXA8U3Ry
aW5nLCBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+ID4gbV9rZXlVUklU
b1JlcXVlc3RNYXA7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxBVkFzc2V0UmVzb3Vy
Y2VMb2FkaW5nUmVxdWVzdD4gPiBtX3Nlc3Npb25JRFRvUmVxdWVzdE1hcDsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KaW5kZXggNWZhOGNhMjQxYTFmYjFmMjAyOGYxY2JjNGVhODg3Nzcy
Y2YyMWUzYy4uMGFjYzc5M2E2MmJjZmY5NWExYWZjZGRiNzE4N2RkODU4YzYxM2YwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xOTQsNyArMTk0LDcgQEAgUGFzc093blB0cjxNZWRpYVBs
YXllclByaXZhdGVJbnRlcmZhY2U+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OmNyZWEKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJN
ZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlz
QXZhaWxhYmxlKCkpCi0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQogICAgICAgICByZWdp
c3RyYXIoY3JlYXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywgZXh0ZW5kZWRTdXBwb3J0c1R5cGUsIDAs
IDAsIDApOwogI2Vsc2UKICAgICAgICAgcmVnaXN0cmFyKGNyZWF0ZSwgZ2V0U3VwcG9ydGVkVHlw
ZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCk7CkBAIC04MTUsNyArODE1LDcgQEAgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBw
b3J0c1R5cGUoY29uc3QKICAgICByZXR1cm4gW0FWVVJMQXNzZXQgaXNQbGF5YWJsZUV4dGVuZGVk
TUlNRVR5cGU6dHlwZVN0cmluZ10gPyBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBs
YXllcjo6TWF5QmVTdXBwb3J0ZWQ7OwogfQogCi0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBX1Yy
KQogc3RhdGljIGJvb2wga2V5U3lzdGVtSXNTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0pCiB7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGtleVN5c3RlbSwgImNvbS5hcHBsZS5s
c2tkIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2Uoa2V5U3lzdGVtLCAiY29tLmFwcGxlLmxza2QuMV8w
IikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCmluZGV4IDNlZTFhNGMyOTg2ZGM4OTI0YjM3
ZDZmMTNlMWFlOGM0MTJiMDQ4YjkuLjhiMTFmODMyODAwNDIyMmUwNGRlZWE1M2Y5ZmZjOTM2ZDll
NWFhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCkBAIC03Niw3ICs3Niw3IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
PiBjcmVhdGUoTWVkaWFQbGF5ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBl
cyhIYXNoU2V0PFN0cmluZz4mIHR5cGVzKTsKICAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNv
ZGVjcywgY29uc3QgS1VSTCYpOwotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKICAgICBz
dGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBleHRlbmRlZFN1cHBvcnRzVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSwgY29uc3QgS1VSTCYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5t
bQppbmRleCBlZjdlMzgwNzllMDY1MDQ2OTdjMjM2OGUzNDg5ZmI4N2IxMGM5YzRlLi41NmUzMzRh
NmE4ZGM3N2YxODc1NGY2MWE1OGI1NzA4YWRiYjVjYjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0Lm1tCkBAIC0xOTAsNyArMTkwLDcgQEAgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZh
dGVJbnRlcmZhY2U+IE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjcmVhdGUoTWVkaWFQbGEKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdp
bmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpc0F2YWlsYWJsZSgpKQotI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKICAgICAgICAgcmVnaXN0cmFyKGNyZWF0ZSwgZ2V0U3Vw
cG9ydGVkVHlwZXMsIGV4dGVuZGVkU3VwcG9ydHNUeXBlLCBnZXRTaXRlc0luTWVkaWFDYWNoZSwg
Y2xlYXJNZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKTsKICNlbHNlCiAgICAgICAg
IHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIGdldFNp
dGVzSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUp
OwpAQCAtMTU1Miw3ICsxNTUyLDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHkKICAgICByZXR1
cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwogfQogCi0jaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVE
X01FRElBX1YyKQogTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVR
VEtpdDo6ZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmIHVybCkKIHsK
ICAgICAvLyBRVEtpdCBkb2VzIG5vdCBzdXBwb3J0IGFueSBlbmNyeXRwZWQgbWVkaWEsIHNvIHJl
dHVybiBJc05vdFN1cHBvcnRlZCBpZiB0aGUga2V5U3lzdGVtIGlzIG5vbi1OVUxMOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGVhMjY0ZTI0YzY3YThjMWQzMTkzOWFjMjZj
YjM2NzU3N2ZmMDA3MTAuLjg5NjA4NzllYjU1ZmY0ZmNjYjRiNzNmMmY1NmQyM2NmYzJhZGUzM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEyNiw2ICsxMjYsMTEgQEAK
ICNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQV9WMikKKyNpbmNsdWRlICJDRE0uaCIKKyNpbmNsdWRlICJNb2NrQ0RNLmgi
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKFBBR0VfUE9QVVAp
CkBAIC0xOTA0LDQgKzE5MDksMTEgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFVzZXNPdmVybGF5U2Ny
b2xsYmFycyhib29sIGVuYWJsZWQpCiAgICAgV2ViQ29yZTo6U2V0dGluZ3M6OnNldFVzZXNPdmVy
bGF5U2Nyb2xsYmFycyhlbmFibGVkKTsKIH0KIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFf
VjIpCit2b2lkIEludGVybmFsczo6aW5pdGlhbGl6ZU1vY2tDRE0oKQoreworICAgIENETTo6cmVn
aXN0ZXJDRE1GYWN0b3J5KE1vY2tDRE06OmNyZWF0ZSwgTW9ja0NETTo6c3VwcG9ydHNLZXlTeXRl
bSk7Cit9CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggM2Rl
YjdjZmZkNDcxOTNhMDg2YzFkMjJiODllYmM1YjU2ZjE0NGRkNy4uYjBiNWU5Yzc4NzU2MjEzOGI1
NGE4ODRjYmNhOTg3ZTA3ZDA1YmU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBA
IC0yNzQsNiArMjc0LDEwIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBnZXRDdXJyZW50Q3Vyc29y
SW5mbyhEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUFfVjIpCisgICAgdm9pZCBpbml0aWFsaXplTW9ja0NETSgpOworI2VuZGlmCisKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERvY3VtZW50Kik7CiAgICAgRG9jdW1lbnQqIGNv
bnRleHREb2N1bWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmlu
ZGV4IDc2MWQwMzBkMjI4NTQyNDkyMWI3Y2U5MGY1ZmEzOTliMDMzMWVjNjYuLmY0YTM0NzUxNTAz
ZWRmOGFiNDM1ODE4YjUyZjRhN2NkZTBmNjI3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKQEAgLTI0Miw0ICsyNDIsNiBAQAogICAgIEFycmF5QnVmZmVyIHNlcmlhbGl6ZU9i
amVjdChpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUgb2JqKTsKIAogICAgIHZvaWQgc2V0VXNlc092
ZXJsYXlTY3JvbGxiYXJzKGluIGJvb2xlYW4gZW5hYmxlZCk7CisKKyAgICBbQ29uZGl0aW9uYWw9
RU5DUllQVEVEX01FRElBX1YyXSB2b2lkIGluaXRpYWxpemVNb2NrQ0RNKCk7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NETS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAxODIzZjg3MTk2NjlhYTZlOTYzY2Y4
Y2IwZmNhNDYxOWZiZjUyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETS5jcHAKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTW9ja0NETS5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQV9WMikKKworI2luY2x1ZGUgIkNETS5oIgorI2luY2x1ZGUgIk1lZGlhS2V5RXJyb3IuaCIK
KyNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIE1vY2tDRE1TZXNzaW9uIDogcHVibGljIENETVNlc3Npb24geworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzT3duUHRyPE1vY2tDRE1TZXNzaW9uPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFB0
cihuZXcgTW9ja0NETVNlc3Npb24oKSk7IH0KKyAgICB2aXJ0dWFsIH5Nb2NrQ0RNU2Vzc2lvbigp
IHsgfQorCisgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCgpIE9WRVJSSURFIHsg
cmV0dXJuIG1fc2Vzc2lvbklkOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+
IGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBp
bml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29k
ZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHJlbGVhc2VLZXlzKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGFkZEtleShVaW50OEFy
cmF5KiwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVy
cm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkgT1ZFUlJJREU7CisKK3Byb3RlY3Rl
ZDoKKyAgICBNb2NrQ0RNU2Vzc2lvbigpOworCisgICAgU3RyaW5nIG1fc2Vzc2lvbklkOworfTsK
KworYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0tleVN5dGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
KQoreworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShrZXlTeXN0ZW0sICJjb20ud2ViY29y
ZS5tb2NrIik7Cit9CisKK2Jvb2wgTW9ja0NETTo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQoreworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShtaW1lVHlwZSwg
InZpZGVvL21vY2siKTsKK30KKworUGFzc093blB0cjxDRE1TZXNzaW9uPiBNb2NrQ0RNOjpjcmVh
dGVTZXNzaW9uKCkKK3sKKyAgICByZXR1cm4gTW9ja0NETVNlc3Npb246OmNyZWF0ZSgpOworfQor
CitzdGF0aWMgVWludDhBcnJheSogaW5pdERhdGFQcmVmaXgoKQoreworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBjaGFyIHByZWZpeERhdGFbXSA9IHsnbScsICdvJywgJ2MnLCAnayd9OworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPFVpbnQ4QXJyYXk+LCBwcmVmaXgsICgpKTsKKyAg
ICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmICghaW5pdGlhbGl6ZWQp
IHsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgICBwcmVmaXggPSBVaW50OEFy
cmF5OjpjcmVhdGUocHJlZml4RGF0YSwgc2l6ZW9mKHByZWZpeERhdGEpIC8gc2l6ZW9mKHByZWZp
eERhdGFbMF0pKTsKKyAgICB9CisgICAgcmV0dXJuIHByZWZpeC5nZXQoKTsKK30KKworc3RhdGlj
IFVpbnQ4QXJyYXkqIGtleVByZWZpeCgpCit7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo
YXIgcHJlZml4RGF0YVtdID0geydrJywgJ2UnLCAneSd9OworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoUmVmUHRyPFdURjo6VWludDhBcnJheT4sIHByZWZpeCwgKCkpOworICAgIHN0YXRpYyBib29s
IGluaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKCFpbml0aWFsaXplZCkgeworICAgICAgICBp
bml0aWFsaXplZCA9IHRydWU7CisgICAgICAgIHByZWZpeCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShw
cmVmaXhEYXRhLCBzaXplb2YocHJlZml4RGF0YSkgLyBzaXplb2YocHJlZml4RGF0YVswXSkpOwor
ICAgIH0KKyAgICByZXR1cm4gcHJlZml4LmdldCgpOworfQorCitzdGF0aWMgVWludDhBcnJheSog
a2V5UmVxdWVzdCgpCit7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcmVxdWVzdERh
dGFbXSA9IHsncicsICdlJywgJ3EnLCAndScsICdlJywgJ3MnLCAndCd9OworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoUmVmUHRyPFdURjo6VWludDhBcnJheT4sIHJlcXVlc3QsICgpKTsKKyAgICBz
dGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsK
KyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgICByZXF1ZXN0ID0gVWludDhBcnJh
eTo6Y3JlYXRlKHJlcXVlc3REYXRhLCBzaXplb2YocmVxdWVzdERhdGEpIC8gc2l6ZW9mKHJlcXVl
c3REYXRhWzBdKSk7CisgICAgfQorICAgIHJldHVybiByZXF1ZXN0LmdldCgpOworfQorCitzdGF0
aWMgU3RyaW5nIGdlbmVyYXRlU2Vzc2lvbklkKCkKK3sKKyAgICBzdGF0aWMgaW50IG1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nU2Vzc2lvbklkID0gMDsKKyAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIo
bW9ub3RvbmljYWxseUluY3JlYXNpbmdTZXNzaW9uSWQrKyk7Cit9CisKK01vY2tDRE1TZXNzaW9u
OjpNb2NrQ0RNU2Vzc2lvbigpCisgICAgOiBtX3Nlc3Npb25JZChnZW5lcmF0ZVNlc3Npb25JZCgp
KQoreworfQorCitQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IE1vY2tDRE1TZXNzaW9uOjpnZW5lcmF0
ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYs
IHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmKQoreworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBpbml0RGF0YVByZWZpeCgpLT5sZW5ndGgoKTsgKytpKSB7Cisg
ICAgICAgIGlmICghaW5pdERhdGEgfHwgaSA+PSBpbml0RGF0YS0+bGVuZ3RoKCkgfHwgaW5pdERh
dGEtPml0ZW0oaSkgIT0gaW5pdERhdGFQcmVmaXgoKS0+aXRlbShpKSkgeworICAgICAgICAgICAg
ZXJyb3JDb2RlID0gTWVkaWFLZXlFcnJvcjo6TUVESUFfS0VZRVJSX1VOS05PV047CisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4ga2V5UmVxdWVzdCgp
OworfQorCit2b2lkIE1vY2tDRE1TZXNzaW9uOjpyZWxlYXNlS2V5cygpCit7CisgICAgLy8gbm8t
b3AKK30KKworYm9vbCBNb2NrQ0RNU2Vzc2lvbjo6YWRkS2V5KFVpbnQ4QXJyYXkqIGtleSwgUmVm
UHRyPFVpbnQ4QXJyYXk+JiwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9u
ZyYpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGtleVByZWZpeCgpLT5sZW5ndGgo
KTsgKytpKSB7CisgICAgICAgIGlmIChpID49IGtleS0+bGVuZ3RoKCkgfHwga2V5LT5pdGVtKGkp
ICE9IGtleVByZWZpeCgpLT5pdGVtKGkpKSB7CisgICAgICAgICAgICBlcnJvckNvZGUgPSBNZWRp
YUtleUVycm9yOjpNRURJQV9LRVlFUlJfQ0xJRU5UOworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ0RNLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40YzViNTBhOWQ2YWYyYWJmYzZiODViMTEzZjQ4MzkwOTBiNjFkOThiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNLmgKQEAgLTAsMCArMSw1
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTW9ja0NETV9oCisjZGVmaW5lIE1vY2tDRE1faAor
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIkNETVByaXZhdGUu
aCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIENETTsKKworY2xhc3MgTW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2YXRlSW50ZXJmYWNl
IHsKK3B1YmxpYzoKKyAgICAvLyBDRE1GYWN0b3J5IHN1cHBvcnQ6CisgICAgc3RhdGljIFBhc3NP
d25QdHI8Q0RNUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKENETSogY2RtKSB7IHJldHVybiBhZG9w
dFB0cihuZXcgTW9ja0NETShjZG0pKTsgfQorICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3l0
ZW0oY29uc3QgU3RyaW5nJik7CisKKyAgICB2aXJ0dWFsIH5Nb2NrQ0RNKCkgeyB9CisKKyAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigp
IE9WRVJSSURFOworCitwcm90ZWN0ZWQ6CisgICAgTW9ja0NETShDRE0qIGNkbSkgOiBtX2NkbShj
ZG0pIHsgfQorICAgIENETSogbV9jZG07Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQorCisjZW5kaWYgLy8gTW9ja0NETV9oCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYmYyMGMxNGMyMzYy
NWUyYTZlNDg3MmNiNzA5MTk2MzRjMWQ3ZWM4MC4uNDE3N2M0ZThkNzFlNmJiYTljN2Q2MTQwNTBj
Mzc0NDVhZDY3NjlhYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA5LTE5ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEJyaW5nIFdlYktpdCB1cCB0byBz
cGVlZCB3aXRoIGxhdGVzdCBFbmNyeXB0ZWQgTWVkaWEgc3BlYy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MDM3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbmV3IHRlc3RzIGZvciB0aGUgdXBk
YXRlZCBFbmNyeXB0ZWQgTWVkaWEgRXh0ZW5zaW9ucyBzcGVjLgorCisgICAgICAgICogbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1ldmVudHMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYy
LWV2ZW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5j
cnlwdGVkLW1lZGlhLXYyLXN5bnRheC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1l
ZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOiBVbnNraXAgKG1vc3Qgb2YpIHRoZSBt
ZWRpYS9lbmNyeXB0ZWQtbWVkaWEvIHRlc3RzCisgICAgICAgICogcGxhdGZvcm0vbWFjL21lZGlh
L2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtY2FuLXBsYXktdHlwZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorCiAyMDEzLTAyLTA0ICBBbmRyZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgcm91bmQgYnJhY2VzIHRv
IGphdmFzY3JpcHQgdG9rZW5pemVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9lbmNy
eXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLWV2ZW50cy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLWV2ZW50cy1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2IyOTYzYTA2NDMwNGQ2ODg2MjAyZTliODI2OTkyNWZk
ZGJkNTUzMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1t
ZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItZXZlbnRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEx
IEBACitUaGlzIHRlc3RzIHRoZSBldmVudHMgY3JlYXRlZCBieSBNZWRpYUtleXMuCisKK1JVTiht
ZWRpYUtleXMgPSBuZXcgTWVkaWFLZXlzKCJjb20ud2ViY29yZS5tb2NrIikpCitSVU4obWVkaWFL
ZXlTZXNzaW9uID0gbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oInZpZGVvL21vY2siLCBpbml0RGF0
YSkpCitFVkVOVCh3ZWJraXRrZXltZXNzYWdlKQorUlVOKG1lZGlhS2V5U2Vzc2lvbi5hZGRLZXko
aW52YWxpZEtleSkpCitFVkVOVCh3ZWJraXRrZXllcnJvcikKK1JVTihtZWRpYUtleVNlc3Npb24u
YWRkS2V5KHZhbGlkS2V5KSkKK0VWRU5UKHdlYmtpdGtleWFkZGVkKQorRU5EIE9GIFRFU1QKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1t
ZWRpYS12Mi1ldmVudHMuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9l
bmNyeXB0ZWQtbWVkaWEtdjItZXZlbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc3NjA4ZjdiNTM2MWRi
OTM2ZDY3ZWE1NDIyMzdjZWMxYjU2MWU3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItZXZlbnRzLmh0bWwKQEAg
LTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHRpdGxlPk1lZGlhS2V5czwvdGl0bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVv
LXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlv
biBzdHJpbmdUb1VpbnQ4QXJyYXkoc3RyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHZhciBhcnI9W107CisgICAgICAgICAgICAgICAgZm9yKHZhciBpPTAsaj1zdHIubGVuZ3RoO2k8
ajsrK2kpeworICAgICAgICAgICAgICAgICAgYXJyW2ldPXN0ci5jaGFyQ29kZUF0KGkpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYXJy
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIG1lZGlhS2V5czsKKyAgICAgICAg
ICAgIHZhciBtZWRpYUtleVNlc3Npb247CisgICAgICAgICAgICB2YXIgaW5pdERhdGEgPSBzdHJp
bmdUb1VpbnQ4QXJyYXkoJ21vY2snKTsKKyAgICAgICAgICAgIHZhciBpbnZhbGlkS2V5ID0gc3Ry
aW5nVG9VaW50OEFycmF5KCdpbnZhbGlkJyk7CisgICAgICAgICAgICB2YXIgdmFsaWRLZXkgPSBz
dHJpbmdUb1VpbnQ4QXJyYXkoJ2tleScpOworCisgICAgICAgICAgICBmdW5jdGlvbiBydW5UZXN0
KCkgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgTW9j
a0NETS4gSXQgc3VwcG9ydHMgdGhlIGtleSBzeXN0ZW0gJ2NvbS5hcHBsZS5tb2NrJywgdGhlIAor
ICAgICAgICAgICAgICAgIC8vIG1pbWUgdHlwZSAndmlkZW8vbW9jaycuIEl0IHJlcXVpcmVzIGlu
aXQgZGF0YSB0byBiZWdpbiB3aXRoICdtb2NrJywgYW5kCisgICAgICAgICAgICAgICAgLy8ga2V5
cyB0byBiZWdpbiB3aXRoICdrZXknLgorICAgICAgICAgICAgICAgIGlmIChpbnRlcm5hbHMpCisg
ICAgICAgICAgICAgICAgICAgIGludGVybmFscy5pbml0aWFsaXplTW9ja0NETSgpOworCisgICAg
ICAgICAgICAgICAgcnVuKCdtZWRpYUtleXMgPSBuZXcgTWVkaWFLZXlzKCJjb20ud2ViY29yZS5t
b2NrIiknKTsKKyAgICAgICAgICAgICAgICBydW4oJ21lZGlhS2V5U2Vzc2lvbiA9IG1lZGlhS2V5
cy5jcmVhdGVTZXNzaW9uKCJ2aWRlby9tb2NrIiwgaW5pdERhdGEpJyk7CisgICAgICAgICAgICAg
ICAgd2FpdEZvckV2ZW50KCd3ZWJraXRrZXltZXNzYWdlJywga2V5TWVzc2FnZSwgZmFsc2UsIGZh
bHNlLCBtZWRpYUtleVNlc3Npb24pOworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnd2Vi
a2l0a2V5ZXJyb3InLCBrZXlFcnJvciwgZmFsc2UsIGZhbHNlLCBtZWRpYUtleVNlc3Npb24pOwor
ICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnd2Via2l0a2V5YWRkZWQnLCBudWxsLCB0cnVl
LCBmYWxzZSwgbWVkaWFLZXlTZXNzaW9uKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZnVuY3Rpb24ga2V5TWVzc2FnZShldmVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBydW4oJ21lZGlhS2V5U2Vzc2lvbi5hZGRLZXkoaW52YWxpZEtleSknKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZnVuY3Rpb24ga2V5RXJyb3IoZXZlbnQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcnVuKCdtZWRpYUtleVNlc3Npb24uYWRkS2V5KHZhbGlkS2V5KScp
OworICAgICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgICAgICA8cD5UaGlzIHRlc3RzIHRoZSBldmVudHMg
Y3JlYXRlZCBieSBNZWRpYUtleXMuPC9wPgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNy
eXB0ZWQtbWVkaWEtdjItc3ludGF4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL2Vu
Y3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yMzA1MTExOTY4NTc2MTI2ZTdiZTA4OWNjNTY3NGJhM2RlZGE3MjRmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1t
ZWRpYS12Mi1zeW50YXgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjYgQEAKK1RoaXMgdGVzdHMg
dGhlIGJhc2ljIEFQSSBvZiBNZWRpYUtleXMgYW5kIE1lZGlhS2V5U2Vzc2lvbi4KKworVGVzdCBN
ZWRpYUtleXMuCitFWFBFQ1RFRCAodHlwZW9mIHdpbmRvdy5NZWRpYUtleXMgPT0gJ29iamVjdCcp
IE9LCitURVNUKG5ldyBNZWRpYUtleXMoIiIpKSBUSFJPV1MoRE9NRXhjZXB0aW9uLklOVkFMSURf
QUNDRVNTX0VSUikgT0sKK1RFU1QobmV3IE1lZGlhS2V5cygidW5zdXBwb3J0ZWQiKSkgVEhST1dT
KERPTUV4Y2VwdGlvbi5OT1RfU1VQUE9SVEVEX0VSUikgT0sKK1JVTihtZWRpYUtleXMgPSBuZXcg
TWVkaWFLZXlzKCJjb20ud2ViY29yZS5tb2NrIikpCitFWFBFQ1RFRCAobWVkaWFLZXlzLmtleVN5
c3RlbSA9PSAnY29tLndlYmNvcmUubW9jaycpIE9LCitFWFBFQ1RFRCAodHlwZW9mIG1lZGlhS2V5
cy5jcmVhdGVTZXNzaW9uID09ICdmdW5jdGlvbicpIE9LCitURVNUKG1lZGlhS2V5cy5jcmVhdGVT
ZXNzaW9uKCIiLCBuZXcgVWludDhBcnJheSgxKSkpIFRIUk9XUyhET01FeGNlcHRpb24uSU5WQUxJ
RF9BQ0NFU1NfRVJSKSBPSworVEVTVChtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidW5zdXBwb3J0
ZWQvdHlwZSIpKSBUSFJPV1MoRE9NRXhjZXB0aW9uLk5PVF9TVVBQT1JURURfRVJSKSBPSworCitU
ZXN0IE1lZGlhS2V5U2Vzc2lvbi4KK1JVTihtZWRpYUtleVNlc3Npb24gPSBtZWRpYUtleXMuY3Jl
YXRlU2Vzc2lvbigidmlkZW8vbW9jayIsIGluaXREYXRhKSkKK0VYUEVDVEVEICh0eXBlb2YgbWVk
aWFLZXlTZXNzaW9uID09ICdvYmplY3QnKSBPSworRVhQRUNURUQgKHR5cGVvZiBtZWRpYUtleVNl
c3Npb24uYWRkRXZlbnRMaXN0ZW5lciA9PSAnZnVuY3Rpb24nKSBPSworRVhQRUNURUQgKHR5cGVv
ZiBtZWRpYUtleVNlc3Npb24uYWRkS2V5ID09ICdmdW5jdGlvbicpIE9LCitFWFBFQ1RFRCAobWVk
aWFLZXlTZXNzaW9uLmVycm9yID09ICdudWxsJykgT0sKK0VYUEVDVEVEIChtZWRpYUtleVNlc3Np
b24ua2V5U3lzdGVtID09ICdjb20ud2ViY29yZS5tb2NrJykgT0sKK0VYUEVDVEVEIChtZWRpYUtl
eVNlc3Npb24uc2Vzc2lvbklkICE9ICdudWxsJykgT0sKK0VYUEVDVEVEIChtZWRpYUtleVNlc3Np
b24ub253ZWJraXRrZXlhZGRlZCA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAobWVkaWFLZXlTZXNz
aW9uLm9ud2Via2l0a2V5ZXJyb3IgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKG1lZGlhS2V5U2Vz
c2lvbi5vbndlYmtpdGtleW1lc3NhZ2UgPT0gJ251bGwnKSBPSworVEVTVChtZWRpYUtleVNlc3Np
b24uYWRkS2V5KG51bGwpKSBUSFJPV1MoRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUikg
T0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRl
ZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRp
YS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRheC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MjBhYzliNzZkNmRiZTFmZGNiZDE3OTUyY2QzMTQ2MzliZGQ3YzEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlh
LXYyLXN5bnRheC5odG1sCkBAIC0wLDAgKzEsNTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT5NZWRpYUtleXM8L3RpdGxlPgorICAgICAgICA8
c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICAgICAgZnVuY3Rpb24gc3RyaW5nVG9VaW50OEFycmF5KHN0cikKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICB2YXIgYXJyPVtdOworICAgICAgICAgICAgICAgIGZvcih2YXIg
aT0wLGo9c3RyLmxlbmd0aDtpPGo7KytpKXsKKyAgICAgICAgICAgICAgICAgIGFycltpXT1zdHIu
Y2hhckNvZGVBdChpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBVaW50OEFycmF5KGFycik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBt
ZWRpYUtleXM7CisgICAgICAgICAgICB2YXIgbWVkaWFLZXlTZXNzaW9uOworICAgICAgICAgICAg
dmFyIGluaXREYXRhID0gc3RyaW5nVG9VaW50OEFycmF5KCdtb2NrJyk7CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIHJ1blRlc3QoKSAKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBJ
bml0aWFsaXplIHRoZSBNb2NrQ0RNLiBJdCBzdXBwb3J0cyB0aGUga2V5IHN5c3RlbSAnY29tLmFw
cGxlLm1vY2snLCB0aGUgCisgICAgICAgICAgICAgICAgLy8gbWltZSB0eXBlICd2aWRlby9tb2Nr
Jy4gSXQgcmVxdWlyZXMgaW5pdCBkYXRhIHRvIGJlZ2luIHdpdGggJ21vY2snLCBhbmQKKyAgICAg
ICAgICAgICAgICAvLyBrZXlzIHRvIGJlZ2luIHdpdGggJ2tleScuCisgICAgICAgICAgICAgICAg
aWYgKGludGVybmFscykKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLmluaXRpYWxpemVN
b2NrQ0RNKCk7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgTWVkaWFLZXlz
LiIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndHlwZW9mIHdpbmRvdy5NZWRpYUtl
eXMnLCAnb2JqZWN0Jyk7CisgICAgICAgICAgICAgICAgdGVzdEV4Y2VwdGlvbignbmV3IE1lZGlh
S2V5cygiIiknLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUiIpOworICAgICAgICAg
ICAgICAgIHRlc3RFeGNlcHRpb24oJ25ldyBNZWRpYUtleXMoInVuc3VwcG9ydGVkIiknLCAiRE9N
RXhjZXB0aW9uLk5PVF9TVVBQT1JURURfRVJSIik7CisgICAgICAgICAgICAgICAgcnVuKCdtZWRp
YUtleXMgPSBuZXcgTWVkaWFLZXlzKCJjb20ud2ViY29yZS5tb2NrIiknKTsKKyAgICAgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoJ21lZGlhS2V5cy5rZXlTeXN0ZW0nLCAnY29tLndlYmNvcmUubW9j
aycpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndHlwZW9mIG1lZGlhS2V5cy5jcmVh
dGVTZXNzaW9uJywgJ2Z1bmN0aW9uJyk7CisgICAgICAgICAgICAgICAgdGVzdEV4Y2VwdGlvbign
bWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oIiIsIG5ldyBVaW50OEFycmF5KDEpKScsICJET01FeGNl
cHRpb24uSU5WQUxJRF9BQ0NFU1NfRVJSIik7CisgICAgICAgICAgICAgICAgdGVzdEV4Y2VwdGlv
bignbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oInVuc3VwcG9ydGVkL3R5cGUiKScsICJET01FeGNl
cHRpb24uTk9UX1NVUFBPUlRFRF9FUlIiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUo
IiIpOworCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0IE1lZGlhS2V5U2Vzc2lv
bi4iKTsKKyAgICAgICAgICAgICAgICBydW4oJ21lZGlhS2V5U2Vzc2lvbiA9IG1lZGlhS2V5cy5j
cmVhdGVTZXNzaW9uKCJ2aWRlby9tb2NrIiwgaW5pdERhdGEpJyk7CisgICAgICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCd0eXBlb2YgbWVkaWFLZXlTZXNzaW9uJywgJ29iamVjdCcpOworICAgICAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgndHlwZW9mIG1lZGlhS2V5U2Vzc2lvbi5hZGRFdmVudExp
c3RlbmVyJywgJ2Z1bmN0aW9uJyk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd0eXBl
b2YgbWVkaWFLZXlTZXNzaW9uLmFkZEtleScsICdmdW5jdGlvbicpOworICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgnbWVkaWFLZXlTZXNzaW9uLmVycm9yJywgbnVsbCk7CisgICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleVNlc3Npb24ua2V5U3lzdGVtJywgJ2NvbS53ZWJj
b3JlLm1vY2snKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ21lZGlhS2V5U2Vzc2lv
bi5zZXNzaW9uSWQnLCBudWxsLCAnIT0nKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
J21lZGlhS2V5U2Vzc2lvbi5vbndlYmtpdGtleWFkZGVkJywgbnVsbCk7CisgICAgICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleVNlc3Npb24ub253ZWJraXRrZXllcnJvcicsIG51bGwp
OworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnbWVkaWFLZXlTZXNzaW9uLm9ud2Via2l0
a2V5bWVzc2FnZScsIG51bGwpOworICAgICAgICAgICAgICAgIHRlc3RFeGNlcHRpb24oJ21lZGlh
S2V5U2Vzc2lvbi5hZGRLZXkobnVsbCknLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VS
UiIpOworICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAg
ICAgICAgPHA+VGhpcyB0ZXN0cyB0aGUgYmFzaWMgQVBJIG9mIE1lZGlhS2V5cyBhbmQgTWVkaWFL
ZXlTZXNzaW9uLjwvcD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAy
MTQwMDYwNGFhN2I4ZDU5Y2Y1NTYwN2IyY2VmMWUwMmEwNWMyOTQzLi5mNDdmYmMzNmU4MzQ4Y2U5
YjBjN2UyYmI0ZjhhZjQzNjI3MzZiODE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtNTIwLDkgKzUyMCwxMSBAQCB3ZWJraXQub3JnL2IvMTAzOTI2IG1l
ZGlhL3RyYWNrL29wZXJhL3RyYWNrL3dlYnZ0dC9yZW5kZXJpbmcvYWRob2Mvdm9pY2Vfd2l0aF9l
dgogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ3MzEKIGh0dHAv
dGVzdHMvbWVkaWEvbWVkaWEtc291cmNlLwogCi0jIEVuY3J5cHRlZCBNZWRpYSBFeHRlbnNpb25z
IGFyZSBub3QgZW5hYmxlZC4KLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS8KLWZhc3QvZXZlbnRzL2Nv
bnN0cnVjdG9ycy9tZWRpYS1rZXktZXZlbnQtY29uc3RydWN0b3IuaHRtbAorIyBEZXByZWNhdGVk
IEVuY3J5cHRlZCBNZWRpYSBFeHRlbnNpb25zIGFyZSBub3QgZW5hYmxlZC4KK21lZGlhL2VuY3J5
cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtY2FuLXBsYXktdHlwZS13ZWJtLmh0bWwKK21lZGlh
L2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtZXZlbnRzLmh0bWwKK21lZGlhL2VuY3J5
cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtbm90LWxvYWRlZC5odG1sCittZWRpYS9lbmNyeXB0
ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXN5bnRheC5odG1sCiAKICMgRm9udCBmZWF0dXJlIHNl
dHRpbmdzIGlzIG5vdCBpbXBsZW1lbnRlZC4KIGNzczMvZm9udC1mZWF0dXJlLXNldHRpbmdzLXJl
bmRlcmluZy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS1jYW4tcGxheS10eXBlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlw
dGVkLW1lZGlhLWNhbi1wbGF5LXR5cGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhY2M3N2E0
NjU4OTA2YjIxNWRjZWU2M2QwNjNhOGI3NzhjNGEzMzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRp
YS1jYW4tcGxheS10eXBlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDc1IEBACitUZXN0IEVuY3J5
cHRlZCBNZWRpYSBleHRlbnNpb24gb2YgSFRNTE1lZGlhRWxlbWVudCBjYW5QbGF5VHlwZSgpIG1l
dGhvZC4KKworVGhlIHRlc3QgaXMgZGVzaWduZWQgdG8gcGFzcyB3aXRoIGFueSBpbXBsZW1lbnRh
dGlvbiByZWdhcmRsZXNzIG9mIHN1cHBvcnRlZCBtZWRpYSB0eXBlcyBhbmQgcmVsaWVzIG9uIHRo
ZSBleHBlY3RlZCBsb2cgdG8gZGV0ZWN0IHRoZSBleHBlY3RlZCByZXN1bHRzIGZvciBzb21lIHR5
cGVzLiBUbyBnZXQgc3VmZmljaWVudCBjb3ZlcmFnZSwgaXQgaXMgaW1wb3J0YW50IHRoYXQgYW4g
aW1wbGVtZW50YXRpb24gc3VwcG9ydCBjbGVhcmtleSBlbmNyeXB0aW9uIG9mIGF0IGxlYXN0IG9u
ZSBvZiB0aGUgdHlwZXMgYmVsb3cuCisKK0Fsd2F5cyByZXR1cm4gdGhlIGVtcHR5IHN0cmluZyBm
b3Igbm8gdHlwZS4KK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgpID09ICcnKSBPSworCitB
bHdheXMgcmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgZm9yIGFuIGVtcHR5IHR5cGUuCitFWFBFQ1RF
RCAodmlkZW8uY2FuUGxheVR5cGUoJycpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBs
YXlUeXBlKCcnLCAnJykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJycs
IG51bGwpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCcnLCB1bmRlZmlu
ZWQpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCcnLCAnd2Via2l0LW9y
Zy53My5jbGVhcmtleScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCcn
LCAnV2VCa0l0LU9yRy5XMy5DbEVhUmtFeScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNh
blBsYXlUeXBlKCcnLCAnY29tLmV4YW1wbGUuaW52YWxpZCcpID09ICcnKSBPSworCitBbHdheXMg
cmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgZm9yIHdoZW4gbm8gY29udGFpbmVyIGlzIHNwZWNpZmll
ZC4KK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vJykgPT0gJycpIE9LCitFWFBF
Q1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvLycsICcnKSA9PSAnJykgT0sKK0VYUEVDVEVE
ICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vJywgbnVsbCkgPT0gJycpIE9LCitFWFBFQ1RFRCAo
dmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvLycsIHVuZGVmaW5lZCkgPT0gJycpIE9LCitFWFBFQ1RF
RCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvLycsICd3ZWJraXQtb3JnLnczLmNsZWFya2V5Jykg
PT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvLycsICdXZUJrSXQt
T3JHLlczLkNsRWFSa0V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUo
J3ZpZGVvLycsICdjb20uZXhhbXBsZS5pbnZhbGlkJykgPT0gJycpIE9LCisKK0Fsd2F5cyByZXR1
cm4gdGhlIGVtcHR5IHN0cmluZyBmb3IgYW4gdW5zdXBwb3J0ZWQgY29udGFpbmVyLgorRVhQRUNU
RUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9ibGFoYmxhaCcpID09ICcnKSBPSworRVhQRUNU
RUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9ibGFoYmxhaCcsICcnKSA9PSAnJykgT0sKK0VY
UEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vYmxhaGJsYWgnLCBudWxsKSA9PSAnJykg
T0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vYmxhaGJsYWgnLCB1bmRlZmlu
ZWQpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9ibGFoYmxh
aCcsICd3ZWJraXQtb3JnLnczLmNsZWFya2V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8u
Y2FuUGxheVR5cGUoJ3ZpZGVvL2JsYWhibGFoJywgJ1dlQmtJdC1PckcuVzMuQ2xFYVJrRXknKSA9
PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vYmxhaGJsYWgnLCAn
Y29tLmV4YW1wbGUuaW52YWxpZCcpID09ICcnKSBPSworCitFbXB0eSBrZXkgc3lzdGVtIHBhcmFt
ZXRlcnMgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIHJlc3VsdCBvZiB2aWRlby9tcDQgdHlwZXMuCitS
ZXN1bHQgb2YgdmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL21wNDsgQ29kZWNzPSJhdmMxLjRENDAw
QyInKTogJ3Byb2JhYmx5JworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9tcDQ7
IENvZGVjcz0iYXZjMS40RDQwMEMiJywgJycpID09ICdwcm9iYWJseScpIE9LCitFWFBFQ1RFRCAo
dmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL21wNDsgQ29kZWNzPSJhdmMxLjRENDAwQyInLCBudWxs
KSA9PSAncHJvYmFibHknKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9t
cDQ7IENvZGVjcz0iYXZjMS40RDQwMEMiJywgdW5kZWZpbmVkKSA9PSAncHJvYmFibHknKSBPSwor
VGhlcmUgYXJlIGN1cnJlbnRseSBubyBpbXBsZW1lbnRhdGlvbnMgc3VwcG9ydGluZyBlbmNyeXB0
aW9uIG9mIHZpZGVvL21wNC4KK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vbXA0
OyBDb2RlY3M9ImF2YzEuNEQ0MDBDIicsICd3ZWJraXQtb3JnLnczLmNsZWFya2V5JykgPT0gJycp
IE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL21wNDsgQ29kZWNzPSJhdmMx
LjRENDAwQyInLCAnV2VCa0l0LU9yRy5XMy5DbEVhUmtFeScpID09ICcnKSBPSworRVhQRUNURUQg
KHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9tcDQ7IENvZGVjcz0iYXZjMS40RDQwMEMiJywgJ2Nv
bS5leGFtcGxlLmludmFsaWQnKSA9PSAnJykgT0sKKworRW1wdHkga2V5IHN5c3RlbSBwYXJhbWV0
ZXJzIHNob3VsZCBub3QgYWZmZWN0IHRoZSByZXN1bHQgb2YgYXVkaW8vbXBlZyB0eXBlcy4KK1Jl
c3VsdCBvZiB2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vbXBlZycpOiAnbWF5YmUnCitFWFBFQ1RF
RCAodmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL21wZWcnLCAnJykgPT0gJ21heWJlJykgT0sKK0VY
UEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vbXBlZycsIG51bGwpID09ICdtYXliZScp
IE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL21wZWcnLCB1bmRlZmluZWQp
ID09ICdtYXliZScpIE9LCitUaGVyZSBhcmUgY3VycmVudGx5IG5vIGltcGxlbWVudGF0aW9ucyBz
dXBwb3J0aW5nIGVuY3J5cHRpb24gb2YgYXVkaW8vbXBlZy4KK0VYUEVDVEVEICh2aWRlby5jYW5Q
bGF5VHlwZSgnYXVkaW8vbXBlZycsICd3ZWJraXQtb3JnLnczLmNsZWFya2V5JykgPT0gJycpIE9L
CitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL21wZWcnLCAnV2VCa0l0LU9yRy5X
My5DbEVhUmtFeScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRp
by9tcGVnJywgJ2NvbS5leGFtcGxlLmludmFsaWQnKSA9PSAnJykgT0sKKworRW1wdHkga2V5IHN5
c3RlbSBwYXJhbWV0ZXJzIHNob3VsZCBub3QgYWZmZWN0IHRoZSByZXN1bHQgb2YgYXVkaW8vd2F2
IHR5cGVzLgorUmVzdWx0IG9mIHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby93YXYnKTogJ21heWJl
JworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby93YXYnLCAnJykgPT0gJ21heWJl
JykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vd2F2JywgbnVsbCkgPT0g
J21heWJlJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vd2F2JywgdW5k
ZWZpbmVkKSA9PSAnbWF5YmUnKSBPSworVGhlcmUgYXJlIGN1cnJlbnRseSBubyBpbXBsZW1lbnRh
dGlvbnMgc3VwcG9ydGluZyBlbmNyeXB0aW9uIG9mIGF1ZGlvL3dhdi4KK0VYUEVDVEVEICh2aWRl
by5jYW5QbGF5VHlwZSgnYXVkaW8vd2F2JywgJ3dlYmtpdC1vcmcudzMuY2xlYXJrZXknKSA9PSAn
JykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vd2F2JywgJ1dlQmtJdC1P
ckcuVzMuQ2xFYVJrRXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgn
YXVkaW8vd2F2JywgJ2NvbS5leGFtcGxlLmludmFsaWQnKSA9PSAnJykgT0sKKworRW1wdHkga2V5
IHN5c3RlbSBwYXJhbWV0ZXJzIHNob3VsZCBub3QgYWZmZWN0IHRoZSByZXN1bHQgb2YgdmlkZW8v
d2VibSB0eXBlcy4KK1Jlc3VsdCBvZiB2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vd2VibScpOiAn
JworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby93ZWJtJywgJycpID09ICcnKSBP
SworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby93ZWJtJywgbnVsbCkgPT0gJycp
IE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL3dlYm0nLCB1bmRlZmluZWQp
ID09ICcnKSBPSworQWxsIGltcGxlbWVudGF0aW9ucyB0aGF0IHN1cHBvcnQgV2ViTSBhbmQgRW5j
cnlwdGVkIE1lZGlhIHN1cHBvcnQgZW5jcnlwdGVkIFdlYk0uCitFWFBFQ1RFRCAodmlkZW8uY2Fu
UGxheVR5cGUoJ3ZpZGVvL3dlYm0nLCAnd2Via2l0LW9yZy53My5jbGVhcmtleScpID09ICcnKSBP
SworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby93ZWJtJywgJ1dlQmtJdC1Pckcu
VzMuQ2xFYVJrRXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlk
ZW8vd2VibScsICdjb20uZXhhbXBsZS5pbnZhbGlkJykgPT0gJycpIE9LCitFTkQgT0YgVEVTVAor
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186485</attachid>
            <date>2013-02-04 15:55:02 -0800</date>
            <delta_ts>2013-02-06 17:45:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97037-20130204155141.patch</filename>
            <type>text/plain</type>
            <size>150106</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MzI4YzcxNjMwOGViNjYyYzRlMGQ2NjJhYzg0NTExOGJhMmQ0MDE5Li5lNzM5NzIyZjIwMTYzNzMw
MDkwZTc3YjdhMmIxY2FlMTEyNjUxODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOS0xOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KworICAgICAgICBCcmluZyBXZWJLaXQgdXAgdG8gc3BlZWQgd2l0aCBsYXRlc3QgRW5jcnlwdGVk
IE1lZGlhIHNwZWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NzAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIERlZmluZSB0aGUgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiBzZXR0aW5nLgorCisgICAg
ICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTMtMDIt
MDQgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
ZHVwbGljYXRlIGVudHJpZXMgZnJvbSBKYXZhU2NyaXB0Q29yZSBYY29kZSBwcm9qZWN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IGNjNTNiN2I2NjE5YTY3NGQxOWYyNmUzNWRkNTdmOGJjZjc3MDUyMjcuLjdkNzQxZmI4OTgyYjY2
Yjg5ZDhlZGNlYjY1NWEwMDFhYTQ0ZDQ4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDkt
MTkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQnJpbmcgV2Vi
S2l0IHVwIHRvIHNwZWVkIHdpdGggbGF0ZXN0IEVuY3J5cHRlZCBNZWRpYSBzcGVjLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcwMzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZWZpbmUgdGhlIEVOQUJM
RV9FTkNSWVBURURfTUVESUFfVjIgc2V0dGluZy4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5o
OgorCiAyMDEzLTAyLTA0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAg
ICAgICAgU29ydCBXVEYgWGNvZGUgcHJvamVjdCBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGRiMDBkMjRj
MDZhYjU4MTdkYzg4MjRjNjIzMjIyN2I2YTMxMmY3Ni4uNTIzYjgyM2NkZjk3ZjgwNDMzMzcxYTNl
ZjhiZmE2YWY1OWMzYTA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3OCBAQAorMjAxMi0wOS0x
OSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBCcmluZyBXZWJL
aXQgdXAgdG8gc3BlZWQgd2l0aCBsYXRlc3QgRW5jcnlwdGVkIE1lZGlhIHNwZWMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzAzNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBtb3N0IHJlY2VudCB2
ZXJzaW9uIG9mIHRoZSBFbmNyeXB0ZWQgTWVkaWEgRXh0ZW5zaW9ucyBzcGVjIGJyZWFrcyBmdW5j
dGlvbmFsaXR5IG91dCBvZiB0aGUKKyAgICAgICAgSFRNTE1lZGlhRWxlbWVudCBhbmQgaW50byBu
ZXcgTWVkaWFLZXlzIGFuZCBNZWRpYUtleVNlc3Npb24gY2xhc3Nlcy4gU2luY2UgdGhlIENETSBm
dW5jdGlvbmFsaXR5CisgICAgICAgIGhhcyBiZWVuIHB1bGxlZCBvdXQgb2YgdGhlIG1lZGlhIGVs
ZW1lbnQsIHdlIGNyZWF0ZSBhIHByb3h5IENETSBjbGFzcyBhbmQgZmFjdG9yeSBzeXN0ZW0gZm9y
CisgICAgICAgIGNyZWF0aW5nIHNwZWNpZmljIENETSBrZXkgc3lzdGVtIGltcGxlbWVudGF0aW9u
cy4gVGhlIHNwZWMgYWxzbyBicmVha3Mgb3V0IE1lZGlhS2V5RXZlbnQKKyAgICAgICAgaW50byBk
aXN0aW5jdCBldmVudCBjbGFzc2VzLCBNZWRpYUtleU5lZWRlZEV2ZW50IGFuZCBNZWRpYUtleU1l
c3NhZ2VFdmVudCwgZm9yIG5lZWRrZXkgYW5kCisgICAgICAgIGtleW1lc3NhZ2UgZXZlbnRzLCBy
ZXNwZWN0aXZlbHkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNy
eXB0ZWQtbWVkaWEtdjItZXZlbnRzLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL2VuY3J5cHRl
ZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4Lmh0bWwKKworICAgICAgICBDRE0gaXMg
YSBwcm94eSBjbGFzcyAoYSBsYSBNZWRpYVBsYXllcikgZm9yIGEgc3BlY2lmaWMgQ0RNUHJpdmF0
ZUludGVyZmFjZSBpbXBsZW1lbnRhdGlvbi4gQSBDRE0KKyAgICAgICAgaW1wbGVtZW50YXRpb24g
aXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBDRE1GYWN0b3J5IGFuZCB3aWxsIGJlIGNyZWF0ZWQgaWYg
dGhhdCBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cworICAgICAgICB0aGUga2V5IHN5c3RlbSBwYXNz
ZWQgaW50byB0aGUgTWVkaWFLZXlzIGNvbnN0cnVjdG9yLiBDRE1TZXNzaW9uIGlzIGEgcHVyZS12
aXJ0dWFsIGludGVyZmFjZSBleHBvc2VkCisgICAgICAgIGJ5IGNvbmNyZXRlIENETVByaXZhdGUg
c3ViY2xhc3Nlcy4gIEl0cyBsaWZldGltZSBpcyBvd25lZCBieSBNZWRpYUtleVNlc3Npb24uCisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Omluc3RhbGxlZENETUZhY3Rvcmllcyk6IEluaXRpYWxpemUgYWxsIHRoZSBrbm93
biBDRE0gc3VidHlwZXMuIFBvcnRzIHdpbGwgYWRkIENETSBpbXBsZW1lbnRhdGlvbnMgaGVyZS4K
KyAgICAgICAgKFdlYkNvcmU6OkNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KTogUmVnaXN0ZXJzIGEg
bmV3IENETUZhY3RvcnkgdXNpbmcgdGhlIHBhc3NlZCBpbiBmdW5jdGlvbiBwb2ludGVycy4KKyAg
ICAgICAgKFdlYkNvcmU6OkNETUZhY3RvcnlGb3JLZXlTeXN0ZW0pOiBSZXR1cm4gdGhlIGZpcnN0
IENETSBmYWN0b3J5IHdoaWNoIHN1cHBvcnRzIHRoZSByZXF1ZXN0ZWQga2V5IHN5c3RlbS4KKyAg
ICAgICAgKFdlYkNvcmU6OkNETTo6c3VwcG9ydHNLZXlTeXN0ZW0pOiBXYWxrIHRoZSBpbnN0YWxs
ZWQgQ0RNcyBhbmQgYXNrIGlmIHRoZSBnaXZlbiBrZXkgc3lzdGVtIGlzIHN1cHBvcnRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNETTo6c3VwcG9ydHNLZXlTeXN0ZW1NSU1FVHlwZUFuZENvZGVjKTog
RGl0dG8sIHdpdGggYW4gYWRkaXRpb25hbCBNSU1FIHR5cGUgYW5kIGNvZGVjIHN0cmluZy4KKyAg
ICAgICAgKFdlYkNvcmU6OkNETTo6Y3JlYXRlKTogU2ltcGxlIGNvbnN0cnVjdG9yIHdyYXBwZXIu
CisgICAgICAgIChXZWJDb3JlOjpDRE06OkNETSk6IFNpbXBsZSBjb25zdHJ1Y3RvcjsgY2FsbHMg
YmVzdENETUZvcktleVN5c3RlbSgpIHRvIGNyZWF0ZSBpdCdzIHByaXZhdGUgaW1wbGVtZW50YXRp
b24uCisgICAgICAgIChXZWJDb3JlOjpDRE06On5DRE0pOiBTaW1wbGUgZGVzdHJ1Y3Rvci4KKyAg
ICAgICAgKFdlYkNvcmU6OkNETTo6Y3JlYXRlU2Vzc2lvbik6IENyZWF0ZXMgYSBuZXcgQ0RNU2Vz
c2lvbi4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNETTo6a2V5U3lzdGVtKTogU2ltcGxlIGFjY2Vzc29yIGZvciBtX2tl
eVN5c3RlbS4KKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb246OkNETVNlc3Npb24pOiBTaW1w
bGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uOjp+Q0RNU2Vzc2lv
bik6IFNpbXBsZSBkZXN0cnVjdG9yLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVJbnRlcmZh
Y2U6OkNETVByaXZhdGVJbnRlcmZhY2UpOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAgIChX
ZWJDb3JlOjpDRE1Qcml2YXRlSW50ZXJmYWNlOjp+Q0RNUHJpdmF0ZUludGVyZmFjZSk6IFNpbXBs
ZSBkZXN0cnVjdG9yLgorCisgICAgICAgIFRoZSBuZXcgY2xhc3NlcywgTWVkaWFLZXlNZXNzYWdl
RXZlbnQgYW5kIE1lZGlhS2V5TmVlZGVkRXZlbnQsIHRha2UgZGlzdGluY3Qgc3Vic2V0cyBvZiB0
aGUgaW5pdGlhbGl6ZXJzIG9mCisgICAgICAgIHRoZSBvcmlnaW5hbCBNZWRpYUtleU1lc3NhZ2VF
dmVudC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2
ZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50LmNw
cC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdDo6TWVkaWFLZXlN
ZXNzYWdlRXZlbnRJbml0KTogSW5pdGlhbGl6ZXIgbm93IG9ubHkgdGFrZXMgbWVzc2FnZSBhbmQg
ZGVzdGluYXRpb25VUkwKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleU1lc3NhZ2VFdmVudDo6TWVkaWFLZXlNZXNzYWdlRXZlbnQpOiBTaW1wbGUgY29u
c3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVudDo6fk1lZGlh
S2V5TWVzc2FnZUV2ZW50KTogU2ltcGxlIGRlc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUtleU1lc3NhZ2VFdmVudDo6aW50ZXJmYWNlTmFtZSk6IFN0YW5kYXJkIGludGVyZmFjZU5h
bWUuCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVu
dC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXZlbnQuaC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUpOiBTaW1wbGUgY29u
c3RydWN0aW9uIHdyYXBwZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVu
dDo6bWVzc2FnZSk6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9tZXNzYWdlLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlNZXNzYWdlRXZlbnQ6OmRlc3RpbmF0aW9uVVJMKTogU2ltcGxlIGFjY2Vz
c29yIGZvciBtX2Rlc3RpbmF0aW9uVVJMLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhS2V5RXZlbnQuaWRsLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlOZWVkZWRFdmVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFLZXlFdmVudC5oLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlOZWVkZWRFdmVudElu
aXQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnRJbml0KTogSW5pdGlhbGl6ZXIgbm93IG9ubHkgdGFrZXMg
aW5pdERhdGEgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlOZWVkZWRFdmVu
dDo6TWVkaWFLZXlOZWVkZWRFdmVudCk6IFNpbXBsZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhS2V5TmVlZGVkRXZlbnQ6On5NZWRpYUtleU5lZWRlZEV2ZW50KTogU2ltcGxl
IGRlc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU5lZWRlZEV2ZW50OjppbnRl
cmZhY2VOYW1lKTogU3RhbmRhcmQgaW50ZXJmYWNlTmFtZS4KKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50LmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU5l
ZWRlZEV2ZW50OjpjcmVhdGUpOiBTaW1wbGUgY29uc3RydWN0aW9uIHdyYXBwZXIuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleU5lZWRlZEV2ZW50Ojppbml0RGF0YSk6IFNpbXBsZSBhY2Nlc3Nv
ciBmb3IgbV9pbml0RGF0YS4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5TmVlZGVkRXZlbnQuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
S2V5RXZlbnQuaWRsLgorCisgICAgICAgIE1lZGlhS2V5U2Vzc2lvbiBpcyBhIG5ldyBjbGFzcyB0
aGF0IG1hcHMga2V5cyBhbmQga2V5IHJlcXVlc3RzIHRvIGEgZ2l2ZW4gc2Vzc2lvbiBJRDoKKyAg
ICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUpOiBTaW1wbGUgY29u
c3RydWN0aW9uIHdyYXBwZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246Ok1l
ZGlhS2V5U2Vzc2lvbik6IFNpbXBsZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhS2V5U2Vzc2lvbjo6fk1lZGlhS2V5U2Vzc2lvbik6IFNpbXBsZSBkZXN0cnVjdG9yOyBjYWxs
cyBjbG9zZSgpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpzZXRFcnJvcik6
IFNpbXBsZSBzZXR0ZXIgZm9yIG1fZXJyb3I7CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNl
c3Npb246OmNsb3NlKTogVGVsbCB0aGUgQ0RNIHRvIGNsZWFyIGFueSBzYXZlZCBzZXNzaW9uIGtl
eXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVz
dCk6IFN0YXJ0IGEgb25lLXNob3QgdGltZXIsIGhhbmRsZWQgaW4ga2V5UmVxdWVzdFRpbWVyRmly
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmtleVJlcXVlc3RUaW1lckZp
cmVkKTogRm9sbG93IHRoZSBzdGVwcyBpbiB0aGUgc3BlYzsgYXNrIHRoZSBDRE0gdG8gZ2VuZXJh
dGUgYSBrZXkgcmVxdWVzdC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6YWRk
S2V5KTogU3RhcnQgYSBvbmUtc2hvdCB0aW1lciwgaGFuZGxlZCBpbiBhZGRLZXlUaW1lckZpcmVk
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjphZGRLZXlUaW1lckZpcmVkKTog
Rm9sbG93IHRoZSBzdGVwcyBpbiB0aGUgc3BlYzsgcHJvdmlkZSB0aGUga2V5IGRhdGEgdCBvdGhl
IENETS4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6a2V5U3lzdGVtKTog
U2ltcGxlIGFjY2Vzc29yIGZvciBtX2tleVN5c3RlbS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
S2V5U2Vzc2lvbjo6c2Vzc2lvbklkKTogU2ltcGxlIGFjY2Vzc29yIGZvciBtX3Nlc3Npb25JZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6ZXJyb3IpOiBTaW1wbGUgYWNjZXNz
b3IgZm9yIG1fZXJyb3I7CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVNlc3Npb24uaWRsOgorCisgICAgICAgIE1lZGlhS2V5U2Vzc2lvbiBpbmhlcml0cyBmcm9tIEV2
ZW50VGFyZ2V0LCBhbmQgbXVzdCBvdmVycmlkZSB0aGUgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9ucyBp
biB0aGF0IGNsYXNzOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246Omlu
dGVyZmFjZU5hbWUpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpyZWZF
dmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmRlcmVmRXZl
bnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpldmVudFRhcmdl
dERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjplbnN1cmVFdmVudFRh
cmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KToKKworICAgICAgICBNZWRpYUtleXMgaXMgYSBuZXcgY2xhc3MgdGhhdCBl
bmNhcHN1bGF0ZXMgYSBDRE0gYW5kIGEgbnVtYmVyIG9mIGtleSBzZXNzaW9uczoKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlzOjpjcmVhdGUpOiBUaHJvdyBhbiBleGNlcHRpb24gaWYgdGhlIGtl
eSBzeXN0ZW0gcGFyYW1ldGVyIGlzIHVuc3VwcG9ydGVkOyBjcmVhdGUgYSBDRE0gb2JqZWN0Cisg
ICAgICAgICAgICBhbmQgYSBuZXcgTWVkaWFLZXlzIHNlc3Npb24uCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleXM6Ok1lZGlhS2V5cyk6IFNpbXBsZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhS2V5czo6fk1lZGlhS2V5cyk6IFNpbXBsZSBkZXN0cnVjdG9yLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9uKTogRm9sbG93IHRoZSBzcGVjIGFu
ZCBjcmVhdGUgYSBuZXcga2V5IHNlc3Npb24uCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleXMuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRXJy
b3IuaWRsLgorCisgICAgICAgIFByb3ZpZGUgYSBuZXcgaW50ZXJmYWNlIHRvIEhUTUxNZWRpYUVs
ZW1lbnQgZm9yIE1lZGlhUGxheWVyIHdoaWNoIGRvZXMgbm90IHJlcXVpcmUgYSBzZXNzaW9uSWQg
b3IgYSBrZXkgc3lzdGVtOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmtleU5lZWRlZCk6CisKKyAgICAgICAgTWVkaWFLZXlFcnJv
ciBub3cgaGFzIGEgc3lzdGVtQ29kZSBwYXJhbWV0ZXIgYW5kIG1lbWJlciB2YXJpYWJsZS4KKyAg
ICAgICAgKiBodG1sL01lZGlhS2V5RXJyb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5
RXJyb3I6OmNyZWF0ZSk6IFRha2UgYSBzeXN0ZW1Db2RlIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVs
dCAoMCkgdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleUVycm9yOjpNZWRpYUtleUVy
cm9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleUVycm9yOjpzeXN0ZW1Db2Rl
KTogU2ltcGxlIGFjY2Vzc29yIGZvciBtX3N5c3RlbUNvZGUuCisgICAgICAgICogaHRtbC9NZWRp
YUtleUVycm9yLmlkbDoKKworICAgICAgICBBZGQgbmV3IG1ldGhvZHMgdG8gSFRNTE1lZGlhRWxl
bWVudCB0byBzdXBwb3J0IE1lZGlhS2V5cy4gU3VwcG9ydCBkaWZmZXJlbnQgaW5pdGlhbGl6ZXIK
KyAgICAgICAgZm9yIHRoZSBNZWRpYUtleU5lZWRlZEV2ZW50LgorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRNZWRpYUtleXMpOiBTaW1wbGUgc2V0dGVyIGZvciBtX21lZGlhS2V5cy4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKTogVGhpcyB2ZXJz
aW9uIHRha2VzIGZld2VyIHBhcmFtZXRlcnMKKyAgICAgICAgICAgIHRoYW4gdGhlIGRlcHJlY2F0
ZWQgdmVyc2lvbi4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhS2V5cyk6IFNpbXBsZSBhY2Nlc3NvciBm
b3IgbV9tZWRpYUtleXMuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbDogQWRk
IHRoZSBtZWRpYUtleXMgYXR0cmlidXRlLgorCisgICAgICAgIEFkZCBhbiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBX1YyKSBjaGVjayB0byB0aGUgZXhpc3RpbmcgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkgb25lOgorICAgICAgICAqIGh0bWwvTWVkaWFFcnJvci5oOgorICAgICAgICAqIGh0bWwvTWVk
aWFFcnJvci5pZGw6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YmVzdE1lZGlhRW5naW5lRm9yVHlwZUFuZENvZGVjcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXI6OmtleU5lZWRlZCk6IFRoaXMgdmVyc2lvbiB0YWtlcyBmZXdlciBwYXJhbWV0ZXJzIHRo
YW4gdGhlCisgICAgICAgICAgICBkZXByZWNhdGVkIHZlcnNpb24uCisKKyAgICAgICAgU3VwcG9y
dCB0aGUgbmV3IHZlcnNpb24gb2YgY2FuUGxheVR5cGUgd2hpY2ggdGFrZXMgYW4gZXh0cmEgcGFy
YW1ldGVyOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpleHRlbmRlZFN1cHBvcnRzVHlwZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmV4dGVu
ZGVkU3VwcG9ydHNUeXBlKToKKworICAgICAgICBBZGQgYSBtb2NrIENETSBmb3IgdXNlIHdpdGhp
biBEUlQgYW5kIFdLVFIgdG8gdGVzdCB0aGUgTWVkaWFLZXlzIGFuZCBNZWRpYUtleVNlc3Npb24K
KyAgICAgICAgQVBJcyBhbmQgZXZlbnRzOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aW5pdGlhbGl6ZU1vY2tDRE0pOiBBZGQg
dGhlIE1vY2tDRE0gY2xhc3MgdG8gdGhlIENETSBmYWN0b3JpZXMuCisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6IEFkZCB0aGUg
aW5pdGlhbGl6ZU1vY2tDRE0oKSBtZXRob2QuCisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0c0tleVN5c3RlbSk6
IE9ubHkgc3VwcG9ydHMgdGhlICdjb20ud2ViY29yZS5tb2NrJyBrZXkgc3lzdGVtLgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydHNNSU1FVHlwZSk6IE9ubHkgc3VwcG9ydHMgdGhl
ICd2aWRlby9tb2NrJyBtaW1lIHR5cGUuCisgICAgICAgIChXZWJDb3JlOjppbml0RGF0YVByZWZp
eCk6IFN0YXRpYyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIFVpbnQ4QXJyYXkgY29udGFpbmluZyAn
bW9jaycuCisgICAgICAgIChXZWJDb3JlOjprZXlQcmVmaXgpOiBTdGF0aWMgbWV0aG9kIHdoaWNo
IHJldHVybnMgYSBVaW50OEFycmF5IGNvbnRhaW5pbmcgJ2tleScuCisgICAgICAgIChXZWJDb3Jl
OjprZXlSZXF1ZXN0KTogU3RhdGljIG1ldGhvZCB3aGljaCByZXR1cm5zIGEgVWludDhBcnJheSBj
b250YWluaW5nICdyZXF1ZXN0Jy4KKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlU2Vzc2lvbklk
KTogUmV0dXJuIGEgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIG51bWJlci4KKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDRE1TZXNzaW9uOjpNb2NrQ0RNU2Vzc2lvbik6IFNpbXBsZSBjb25zdHJ1Y3Rv
ci4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3Qp
OiBJZ25vcmVzIHRoZSBwYXJhbWV0ZXJzIGFuZCByZXR1cm5zIGEga2V5UmVxdWVzdCgpIGFycmF5
LgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETVNlc3Npb246OnJlbGVhc2VLZXlzKTogTm8tb3Au
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNU2Vzc2lvbjo6YWRkS2V5KTogQ2hlY2tzIHRoYXQg
dGhlIGtleSBzdGFydHMgd2l0aCB0aGUga2V5UHJlZml4KCkgYXJyYXkuCisgICAgICAgICogdGVz
dGluZy9Nb2NrQ0RNLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06On5Nb2NrQ0RNKTogU2ltcGxlIGRlc3RydWN0
b3IuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpNb2NrQ0RNKTogU2ltcGxlIGNvbnN0cnVj
dG9yLgorCisgICAgICAgIEFkZCB0aGUgbmV3IGNsYXNzZXMgdG8gdGhlIGJ1aWx0IHN5c3RlbToK
KyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBNaXNj
ZWxhbmVvdXMgY2hhbmdlczoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5pbjogQWRkIHRoZSB0
d28gbmV3IGV2ZW50IHR5cGVzLCBNZWRpYUtleU1lc3NhZ2VFdmVudCBhbmQgTWVkaWFLZXlOZWVk
ZWRFdmVudC4KKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOiBBZGQgdGhlIG5l
dyBFdmVudFRhcmdldCwgTWVkaWFLZXlTZXNzaW9uLgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmlkbDogQWRkIGNvbnN0cnVjdG9ycyBmb3IgdGhlIG5ldyBjbGFzc2VzIHRvIHRoZSB3aW5kb3cg
b2JqZWN0LgorCiAyMDEzLTAyLTAxICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZW1vdmUgZHVwbGljYXRlIGNvZGUgaW4gUmVuZGVyQm94TW9kZWxPYmplY3Q6
OmNvbXB1dGVkQ1NTUGFkZGluZyoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCA4YjMzZDJl
NDA5NmZlNjQ5YWVjMGE5YmIwMTY1OGNkOTgxZjE0M2ViLi5hODE2MWZhZTU1ZDgzMWNiYjBiYjhj
NjBlNTBjOTljMmQyMzdlMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC02NSwxMSAr
NjUsMTEgQEAgRU5BQkxFX0RJQUxPR19FTEVNRU5UID0gOwogRU5BQkxFX0RJUkVDVE9SWV9VUExP
QUQgPSA7CiBFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IgPSBFTkFCTEVfRE9NNF9FVkVO
VFNfQ09OU1RSVUNUT1I7CiBFTkFCTEVfRFJBR0dBQkxFX1JFR0lPTiA9IDsKLUVOQUJMRV9FTkNS
WVBURURfTUVESUEgPSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfJChQTEFURk9STV9OQU1FKSk7
Ci1FTkFCTEVfRU5DUllQVEVEX01FRElBX21hY29zeCA9ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJ
QV9tYWNvc3hfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwotRU5BQkxFX0VOQ1JZ
UFRFRF9NRURJQV9tYWNvc3hfMTA3MCA9IDsKLUVOQUJMRV9FTkNSWVBURURfTUVESUFfbWFjb3N4
XzEwODAgPSA7Ci1FTkFCTEVfRU5DUllQVEVEX01FRElBX21hY29zeF8xMDkwID0gRU5BQkxFX0VO
Q1JZUFRFRF9NRURJQTsKK0VOQUJMRV9FTkNSWVBURURfTUVESUFfVjIgPSAkKEVOQUJMRV9FTkNS
WVBURURfTUVESUFfVjJfJChSRUFMX1BMQVRGT1JNX05BTUUpKTsKK0VOQUJMRV9FTkNSWVBURURf
TUVESUFfVjJfbWFjb3N4ID0gJChFTkFCTEVfRU5DUllQVEVEX01FRElBX21hY29zeF8kKFRBUkdF
VF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSk7CitFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21h
Y29zeF8xMDcwID0gOworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3hfMTA4MCA9IDsK
K0VOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEwOTAgPSBFTkFCTEVfRU5DUllQVEVE
X01FRElBX1YyOwogRU5BQkxFX0ZJTEVfU1lTVEVNID0gOwogRU5BQkxFX0ZJTFRFUlMgPSBFTkFC
TEVfRklMVEVSUzsKIEVOQUJMRV9GVUxMU0NSRUVOX0FQSSA9ICQoRU5BQkxFX0ZVTExTQ1JFRU5f
QVBJXyQoUExBVEZPUk1fTkFNRSkpOwpAQCAtMTY2LDQgKzE2Niw0IEBAIEVOQUJMRV9XT1JLRVJT
ID0gRU5BQkxFX1dPUktFUlM7CiBFTkFCTEVfWEhSX1RJTUVPVVQgPSBFTkFCTEVfWEhSX1RJTUVP
VVQ7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVO
QUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFC
TEVfQkxPQikgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChF
TkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1Nf
Qk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChF
TkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1Nf
SU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJM
RV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5BQkxFX0NTU19DT01QT1NJ
VElORykgJChFTkFCTEVfQ1NTX1NUSUNLWV9QT1NJVElPTikgJChFTkFCTEVfQ1NTX1RSQU5TRk9S
TVNfQU5JTUFUSU9OU19VTlBSRUZJWEVEKSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJM
RV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NV
U1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxF
X0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxF
X0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9E
SUFMT0dfRUxFTUVOVCkgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NNF9F
VkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0RSQUdHQUJMRV9SRUdJT04pICQoRU5BQkxFX0VO
Q1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZJTFRFUlMpICQo
RU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NB
VElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxF
X0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVf
U0VBTUxFU1MpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVD
SCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1F
TE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElN
RSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VS
KSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05P
VElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xF
R0FDWV9XRUJfQVVESU8pICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJTktfUFJF
UkVOREVSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVf
TUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwp
ICQoRU5BQkxFX01JQ1JPREFUQSkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJM
RV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFC
TEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVf
UExVR0lOX1BST1hZX0ZPUl9WSURFTykgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFC
TEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5J
TUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9T
Q1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JL
RVJTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TUUxfREFUQUJBU0UpICQo
RU5BQkxFX1NUWUxFX1NDT1BFRCkgJChFTkFCTEVfU1VCUElYRUxfTEFZT1VUKSAkKEVOQUJMRV9T
VkcpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAk
KEVOQUJMRV9URU1QTEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5B
QkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcp
ICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9f
VFJBQ0spICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9T
T0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9Y
SFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChGRUFUVVJFX0RFRklORVNfJChQTEFURk9STV9O
QU1FKSk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxF
X0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0FOVkFTX1BB
VEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQo
RU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5B
QkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5B
QkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxF
X0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NT
X1NIQURFUlMpICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX1NUSUNLWV9Q
T1NJVElPTikgJChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19VTlBSRUZJWEVEKSAk
KEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKSAk
KEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFC
TEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxF
X0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVf
REVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESUFMT0dfRUxFTUVOVCkgJChFTkFCTEVfRElS
RUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxF
X0RSQUdHQUJMRV9SRUdJT04pICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFCTEVf
RklMRV9TWVNURU0pICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAk
KEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVOX1BB
R0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFC
TEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVY
RURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9D
T0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVU
SU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9X
RUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZF
TkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xF
R0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5BQkxF
X0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJTktfUFJFUkVOREVSKSAkKEVOQUJMRV9NQVRITUwp
ICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFC
TEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01JQ1JPREFUQSkgJChF
TkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElM
UykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkg
JChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUExVR0lOX1BST1hZX0ZPUl9WSURFTykg
JChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChF
TkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9S
RVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxF
X1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUEVFQ0hfU1lO
VEhFU0lTKSAkKEVOQUJMRV9TUUxfREFUQUJBU0UpICQoRU5BQkxFX1NUWUxFX1NDT1BFRCkgJChF
TkFCTEVfU1VCUElYRUxfTEFZT1VUKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19ET01fT0JK
Q19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5U
KSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19P
TkxZKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxM
KSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1dFQkdMKSAk
KEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElN
SU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNM
VCkgJChGRUFUVVJFX0RFRklORVNfJChQTEFURk9STV9OQU1FKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCBi
OGZiYzkwMjljZGM3MDk3Y2VlMjFhNmI0NWZlYWUzZmM0YjZiNzA2Li4wYTU2OWU2Y2U3Yjg1OTFk
NzcyZTA4ZTY0NzZjMjY3NmYzNGJmZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTExNjcsNiArMTE2Nyw3
IEBACiAKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogI2RlZmluZSBIQVZFX0FWRk9VTkRBVElPTl9U
RVhUX1RSQUNLX1NVUFBPUlQgMQorI2RlZmluZSBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyIDEK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KEVGTCkgfHwgKFBMQVRGT1JNKFdJTikgJiYgIU9TKFdJTkNFKSAmJiAhUExBVEZPUk0oV0lOX0NB
SVJPKSkgfHwgUExBVEZPUk0oQkxBQ0tCRVJSWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggOGIzM2QyZTQwOTZm
ZTY0OWFlYzBhOWJiMDE2NThjZDk4MWYxNDNlYi4uODNhNjdjNmRhNjg0ODI2NTUyYTU3NzljZTYy
NDhlNDI5NGFiZDY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTY1LDExICs2NSwxMSBAQCBFTkFCTEVfRElB
TE9HX0VMRU1FTlQgPSA7CiBFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCA9IDsKIEVOQUJMRV9ET000
X0VWRU5UU19DT05TVFJVQ1RPUiA9IEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUjsKIEVO
QUJMRV9EUkFHR0FCTEVfUkVHSU9OID0gOwotRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSA9ICQoRU5B
QkxFX0VOQ1JZUFRFRF9NRURJQV8kKFBMQVRGT1JNX05BTUUpKTsKLUVOQUJMRV9FTkNSWVBURURf
TUVESUFfbWFjb3N4ID0gJChFTkFCTEVfRU5DUllQVEVEX01FRElBX21hY29zeF8kKFRBUkdFVF9N
QUNfT1NfWF9WRVJTSU9OX01BSk9SKSk7Ci1FTkFCTEVfRU5DUllQVEVEX01FRElBX21hY29zeF8x
MDcwID0gOwotRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9tYWNvc3hfMTA4MCA9IDsKLUVOQUJMRV9F
TkNSWVBURURfTUVESUFfbWFjb3N4XzEwOTAgPSBFTkFCTEVfRU5DUllQVEVEX01FRElBOworRU5B
QkxFX0VOQ1JZUFRFRF9NRURJQV9WMiA9ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl8kKFJF
QUxfUExBVEZPUk1fTkFNRSkpOworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3ggPSAk
KEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJ
T05fTUFKT1IpKTsKK0VOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEwNzAgPSA7CitF
TkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeF8xMDgwID0gOworRU5BQkxFX0VOQ1JZUFRF
RF9NRURJQV9WMl9tYWNvc3hfMTA5MCA9IEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI7CiBFTkFC
TEVfRklMRV9TWVNURU0gPSA7CiBFTkFCTEVfRklMVEVSUyA9IEVOQUJMRV9GSUxURVJTOwogRU5B
QkxFX0ZVTExTQ1JFRU5fQVBJID0gJChFTkFCTEVfRlVMTFNDUkVFTl9BUElfJChQTEFURk9STV9O
QU1FKSk7CkBAIC0xNjYsNCArMTY2LDQgQEAgRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VS
UzsKIEVOQUJMRV9YSFJfVElNRU9VVCA9IEVOQUJMRV9YSFJfVElNRU9VVDsKIEVOQUJMRV9YU0xU
ID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklO
RykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJM
RV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01F
U1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9C
UkVBSykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfRVhDTFVT
SU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElP
TikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAk
KEVOQUJMRV9DU1NfU0hBREVSUykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9D
U1NfU1RJQ0tZX1BPU0lUSU9OKSAkKEVOQUJMRV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1VO
UFJFRklYRUQpICQoRU5BQkxFX0NTU19WQVJJQUJMRVMpICQoRU5BQkxFX0NTUzNfQ09ORElUSU9O
QUxfUlVMRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5E
TEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVO
VCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5U
KSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJQUxPR19FTEVNRU5UKSAk
KEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RP
UikgJChFTkFCTEVfRFJBR0dBQkxFX1JFR0lPTikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAk
KEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRlVMTFNDUkVF
Tl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9I
SURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFT
KSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lGUkFNRV9TRUFNTEVTUykgJChFTkFC
TEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfREFURVRJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVf
SU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX1dFRUspICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX0xFR0FD
WV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChF
TkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX1dFQl9BVURJTykg
JChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTElOS19QUkVSRU5ERVIpICQoRU5BQkxF
X01BVEhNTCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNT
KSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTUlDUk9E
QVRBKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05U
RU5UX1VUSUxTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJ
VFlfQVBJKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QTFVHSU5fUFJPWFlfRk9S
X1ZJREVPKSAkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZF
TlRTKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQo
RU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCkg
JChFTkFCTEVfU0hBRE9XX0RPTSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NQ
RUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NRTF9EQVRBQkFTRSkgJChFTkFCTEVfU1RZTEVfU0NP
UEVEKSAkKEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZH
X0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTVBMQVRF
X0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVEVYVF9OT1RJRklD
QVRJT05TX09OTFkpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNF
TEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVf
V0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxF
X1dFQl9USU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVO
QUJMRV9YU0xUKSAkKEZFQVRVUkVfREVGSU5FU18kKFBMQVRGT1JNX05BTUUpKTsKK0ZFQVRVUkVf
REVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRf
Q0FOVkFTKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FO
VkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQp
ICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0RFVklDRV9B
REFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfRVhDTFVTSU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMp
ICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09M
VVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0hBREVSUykgJChFTkFC
TEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BPU0lUSU9OKSAkKEVOQUJM
RV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1VOUFJFRklYRUQpICQoRU5BQkxFX0NTU19WQVJJ
QUJMRVMpICQoRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVMpICQoRU5BQkxFX0NTUzNfVEVY
VCkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQ
UE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9J
VEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJ
T04pICQoRU5BQkxFX0RJQUxPR19FTEVNRU5UKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAk
KEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRFJBR0dBQkxFX1JFR0lP
TikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChF
TkFCTEVfRklMVEVSUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQp
ICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhS
T1RUTElORykgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKSAkKEVOQUJMRV9JQ09OREFUQUJBU0Up
ICQoRU5BQkxFX0lGUkFNRV9TRUFNTEVTUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChF
TkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUUpICQoRU5BQkxFX0lO
UFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFC
TEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0pB
VkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAk
KEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVG
SVhFUykgJChFTkFCTEVfTEVHQUNZX1dFQl9BVURJTykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkg
JChFTkFCTEVfTElOS19QUkVSRU5ERVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFf
U09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5U
KSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTUlDUk9EQVRBKSAkKEVOQUJMRV9NT1VTRV9DVVJT
T1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OT1RJ
RklDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QREZLSVRf
UExVR0lOKSAkKEVOQUJMRV9QTFVHSU5fUFJPWFlfRk9SX1ZJREVPKSAkKEVOQUJMRV9QUk9HUkVT
U19FTEVNRU5UKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9RVU9UQSkgJChF
TkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFf
UVVFUlkpICQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCkgJChFTkFCTEVfU0hBRE9XX0RPTSkgJChF
TkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxF
X1NRTF9EQVRBQkFTRSkgJChFTkFCTEVfU1RZTEVfU0NPUEVEKSAkKEVOQUJMRV9TVUJQSVhFTF9M
QVlPVVQpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVO
QUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRf
QVVUT1NJWklORykgJChFTkFCTEVfVEVYVF9OT1RJRklDQVRJT05TX09OTFkpICQoRU5BQkxFX1RP
VUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVP
KSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJ
TykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dP
UktFUlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJMRV9YU0xUKSAkKEZFQVRVUkVfREVG
SU5FU18kKFBMQVRGT1JNX05BTUUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4
IDYwNWEyMWVmM2RkZmRmMmE4N2ZlOWNhMjhhMTVlMWFmZjk2NTAxNDMuLjA3YjA2MTkxZmEzZGMx
ZTRmOGMzZDE1NTc5MjkyZjBhOTNhMTk3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtMjgsNiArMjgsNyBAQAogCiBWUEFUSCA9IFwKICAgICAkKFdlYkNvcmUpIFwKKwkkKFdl
YkNvcmUpL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9m
aWxlc3lzdGVtIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZ2VvbG9jYXRpb24gXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9pbmRleGVkZGIgXApAQCAtNjIsNiArNjMsMTAgQEAgVlBBVEggPSBc
CiAjCiAKIEJJTkRJTkdfSURMUyA9IFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwgXAorICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaWRsIFwKKyAgICAkKFdlYkNv
cmUpL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5pZGwgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NV2luZG93RmlsZVN5c3RlbS5pZGwgXApAQCAtMzY1LDgg
KzM3MCw4IEBAIEJJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSW1hZ2VEYXRh
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL01lZGlhQ29udHJvbGxlci5pZGwgXAogICAgICQo
V2ViQ29yZSkvaHRtbC9NZWRpYUVycm9yLmlkbCBcCi0JJChXZWJDb3JlKS9odG1sL01lZGlhS2V5
RXJyb3IuaWRsIFwKLQkkKFdlYkNvcmUpL2h0bWwvTWVkaWFLZXlFdmVudC5pZGwgXAorICAgICQo
V2ViQ29yZSkvaHRtbC9NZWRpYUtleUVycm9yLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL01l
ZGlhS2V5RXZlbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvTWljcm9EYXRhSXRlbVZhbHVl
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL1JhZGlvTm9kZUxpc3QuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2h0bWwvVGV4dE1ldHJpY3MuaWRsIFwKQEAgLTgzOCw2ICs4NDMsMTAgQEAgaWZlcSAo
JChmaW5kc3RyaW5nIEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQsJChGRUFUVVJFX0RFRklORVMpKSwg
RU5BQkxFX0RFVEFJTFNfRUwKICAgICBIVE1MX0ZMQUdTIDo9ICQoSFRNTF9GTEFHUykgRU5BQkxF
X0RFVEFJTFNfRUxFTUVOVD0xCiBlbmRpZgogCitpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX0VO
Q1JZUFRFRF9NRURJQV9WMiwkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfRU5DUllQVEVEX01F
RElBX1YyKQorCUhUTUxfRkxBR1MgOj0gJChIVE1MX0ZMQUdTKSBFTkFCTEVfRU5DUllQVEVEX01F
RElBX1YyPTEKK2VuZGlmCisKIGlmZXEgKCQoZmluZHN0cmluZyBFTkFCTEVfTUVURVJfRUxFTUVO
VCwkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfTUVURVJfRUxFTUVOVCkKICAgICBIVE1MX0ZM
QUdTIDo9ICQoSFRNTF9GTEFHUykgRU5BQkxFX01FVEVSX0VMRU1FTlQ9MQogZW5kaWYKQEAgLTk2
Miw2ICs5NzEsNyBAQCBwcmVwcm9jZXNzX2lkbHNfc2NyaXB0ID0gcGVybCAkKGFkZHByZWZpeCAt
SSAkKFdlYkNvcmUpLywgJChzb3J0ICQoZGlyICQoMSkpKSkgJAogCiBJRExfSU5DTFVERVMgPSBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2JhdHRlcnkgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0gXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9nYW1lcGFkIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZ2Vv
bG9jYXRpb24gXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM2YTg0OGZjOTQzMDg3ODEyOTkwNTI5YWZhNjdlOTYwZjMxODRjNjgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5jcHAKQEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ0RNLmgiCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQor
CisjaW5jbHVkZSAiQ0RNUHJpdmF0ZS5oIgorI2luY2x1ZGUgIk1lZGlhS2V5RXJyb3IuaCIKKyNp
bmNsdWRlICJNZWRpYUtleXMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQ0RNRmFjdG9yeSB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQ0RNRmFjdG9yeSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIENETUZhY3RvcnkoQ3JlYXRlQ0RNIGNvbnN0cnVjdG9yLCBDRE1TdXBwb3J0c0tleVN5
c3RlbSBzdXBwb3J0c0tleVN5c3RlbSkKKyAgICAgICAgOiBjb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rv
cikKKyAgICAgICAgLCBzdXBwb3J0c0tleVN5c3RlbShzdXBwb3J0c0tleVN5c3RlbSkKKyAgICB7
CisgICAgfQorCisgICAgQ3JlYXRlQ0RNIGNvbnN0cnVjdG9yOworICAgIENETVN1cHBvcnRzS2V5
U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtOworfTsKKworc3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5
Kj4mIGluc3RhbGxlZENETUZhY3RvcmllcygpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChW
ZWN0b3I8Q0RNRmFjdG9yeSo+LCBjZG1zLCAoKSk7CisgICAgc3RhdGljIGJvb2wgcXVlcmllZENE
TXMgPSBmYWxzZTsKKyAgICBpZiAoIXF1ZXJpZWRDRE1zKSB7CisgICAgICAgIHF1ZXJpZWRDRE1z
ID0gdHJ1ZTsKKworICAgICAgICAvLyBUT0RPOiBpbml0aWFsaXplIHNwZWNpZmljIFVBIENETXMu
CisgICAgfQorCisgICAgcmV0dXJuIGNkbXM7Cit9CisKK3ZvaWQgQ0RNOjpyZWdpc3RlckNETUZh
Y3RvcnkoQ3JlYXRlQ0RNIGNvbnN0cnVjdG9yLCBDRE1TdXBwb3J0c0tleVN5c3RlbSBzdXBwb3J0
c0tleVN5c3RlbSkKK3sKKyAgICBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKS5hcHBlbmQobmV3IENE
TUZhY3RvcnkoY29uc3RydWN0b3IsIHN1cHBvcnRzS2V5U3lzdGVtKSk7Cit9CisKK2Jvb2wgQ0RN
OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKK3sKKyAgICBWZWN0
b3I8Q0RNRmFjdG9yeSo+JiBjZG1GYWN0b3JpZXMgPSBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNkbUZhY3Rvcmllcy5zaXplKCk7ICsraSkgewor
ICAgICAgICBpZiAoY2RtRmFjdG9yaWVzW2ldLT5zdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0p
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30K
Kworc3RhdGljIENETUZhY3RvcnkqIENETUZhY3RvcnlGb3JLZXlTeXN0ZW0oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0pCit7CisgICAgVmVjdG9yPENETUZhY3RvcnkqPiYgY2RtRmFjdG9yaWVzID0g
aW5zdGFsbGVkQ0RNRmFjdG9yaWVzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjZG1G
YWN0b3JpZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGNkbUZhY3Rvcmllc1tpXS0+c3Vw
cG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKKyAgICAgICAgICAgIHJldHVybiBjZG1GYWN0b3Jp
ZXNbaV07CisgICAgfQorICAgIHJldHVybiAwOworfQorCitQYXNzT3duUHRyPENETT4gQ0RNOjpj
cmVhdGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7CisgICAgaWYgKCFzdXBwb3J0c0tleVN5
c3RlbShrZXlTeXN0ZW0pKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgQ0RNKGtleVN5c3RlbSkpOworfQorCitDRE06OkNETShjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSkKKyAgICA6IG1fa2V5U3lzdGVtKGtleVN5c3RlbSkKK3sKKyAgICBtX3ByaXZh
dGUgPSBDRE1GYWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSktPmNvbnN0cnVjdG9yKHRoaXMp
OworfQorCitDRE06On5DRE0oKQoreworfQorCitib29sIENETTo6c3VwcG9ydHNNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnN1cHBvcnRz
TUlNRVR5cGUobWltZVR5cGUpOworfQorCitQYXNzT3duUHRyPENETVNlc3Npb24+IENETTo6Y3Jl
YXRlU2Vzc2lvbigpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y3JlYXRlU2Vzc2lvbigpOwor
fQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjA4OTA3NmRl
NDNkMjY1YWU2ZjM1NTQyZGU5OTY4NTQxNzIyNTNiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTAsMCArMSw4MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgQ0RNX2gKKyNkZWZpbmUgQ0RNX2gKKworI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBN
ZWRpYUtleUVycm9yOworY2xhc3MgTWVkaWFLZXlTZXNzaW9uOworY2xhc3MgTWVkaWFLZXlzOwor
CitjbGFzcyBDRE07CitjbGFzcyBDRE1Qcml2YXRlSW50ZXJmYWNlOworY2xhc3MgQ0RNU2Vzc2lv
bjsKKwordHlwZWRlZiBQYXNzT3duUHRyPENETVByaXZhdGVJbnRlcmZhY2U+ICgqQ3JlYXRlQ0RN
KShDRE0qKTsKK3R5cGVkZWYgYm9vbCAoKkNETVN1cHBvcnRzS2V5U3lzdGVtKShjb25zdCBTdHJp
bmcmKTsKKworY2xhc3MgQ0RNU2Vzc2lvbiB7CitwdWJsaWM6CisgICAgQ0RNU2Vzc2lvbigpIHsg
fQorICAgIHZpcnR1YWwgfkNETVNlc3Npb24oKSB7IH0KKworICAgIHZpcnR1YWwgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQoKSA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+
IGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBp
bml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29k
ZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWxl
YXNlS2V5cygpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkS2V5KFVpbnQ4QXJyYXkqLCBSZWZQ
dHI8VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1
bnNpZ25lZCBsb25nJiBzeXN0ZW1Db2RlKSA9IDA7Cit9OworCitjbGFzcyBDRE0geworcHVibGlj
OgorICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpOworICAg
IHN0YXRpYyBQYXNzT3duUHRyPENETT4gY3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsK
KyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckNETUZhY3RvcnkoQ3JlYXRlQ0RNLCBDRE1TdXBwb3J0
c0tleVN5c3RlbSk7CisgICAgfkNETSgpOworCisgICAgYm9vbCBzdXBwb3J0c01JTUVUeXBlKGNv
bnN0IFN0cmluZyYpOworICAgIFBhc3NPd25QdHI8Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigp
OworCisgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2tleVN5
c3RlbTsgfQorCitwcml2YXRlOgorICAgIENETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CisK
KyAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CisgICAgT3duUHRyPENETVByaXZhdGVJbnRlcmZhY2U+
IG1fcHJpdmF0ZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUFf
VjIpCisKKyNlbmRpZiAvLyBDRE1faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzM3NTg4NGZhNGY4MmEwZWY5
MWNlMmIyYTkxZGI3ZTM5MTYwOWYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQ0RNUHJpdmF0ZV9oCisjZGVmaW5lIENETVByaXZhdGVfaAorCisj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBDRE1TZXNzaW9uOworCitjbGFzcyBDRE1Qcml2YXRlSW50ZXJmYWNlIHsKK3B1Ymxp
YzoKKyAgICBDRE1Qcml2YXRlSW50ZXJmYWNlKCkgeyB9CisgICAgdmlydHVhbCB+Q0RNUHJpdmF0
ZUludGVyZmFjZSgpIHsgfQorCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29u
c3QgU3RyaW5nJikgPSAwOworCisgICAgdmlydHVhbCBQYXNzT3duUHRyPENETVNlc3Npb24+IGNy
ZWF0ZVNlc3Npb24oKSA9IDA7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVE
X01FRElBX1YyKQorCisjZW5kaWYgLy8gQ0RNUHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZl
bnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRhOWM4NDNhNjUyMWY5YjFjN2YyZDliYmJmMjAzNmM0M2U3YWNh
NzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQor
CisjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCIKKworI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKKyNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK01lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdDo6TWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0KCkK
K3sKK30KKworTWVkaWFLZXlNZXNzYWdlRXZlbnQ6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50KCkKK3sK
K30KKworTWVkaWFLZXlNZXNzYWdlRXZlbnQ6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0JiBpbml0aWFs
aXplcikKKyAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKQorICAgICwgbV9tZXNzYWdlKGlu
aXRpYWxpemVyLm1lc3NhZ2UpCisgICAgLCBtX2Rlc3RpbmF0aW9uVVJMKGluaXRpYWxpemVyLmRl
c3RpbmF0aW9uVVJMKQoreworfQorCitNZWRpYUtleU1lc3NhZ2VFdmVudDo6fk1lZGlhS2V5TWVz
c2FnZUV2ZW50KCkKK3sKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUtleU1lc3NhZ2VF
dmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5p
bnRlcmZhY2VGb3JNZWRpYUtleU1lc3NhZ2VFdmVudDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Y2ZmMDIx
OTEyZTQwMDMwZmM0NDZiNGQxNWY1ZjYyY2I4YmU1MzNiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5o
CkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTWVkaWFLZXlNZXNzYWdlRXZl
bnRfaAorI2RlZmluZSBNZWRpYUtleU1lc3NhZ2VFdmVudF9oCisKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBX1YyKQorCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJNZWRpYUtleUVy
cm9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IE1lZGlhS2V5TWVzc2FnZUV2
ZW50SW5pdCA6IHB1YmxpYyBFdmVudEluaXQgeworICAgIE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5p
dCgpOworCisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IG1lc3NhZ2U7CisgICAgU3RyaW5nIGRlc3Rp
bmF0aW9uVVJMOworfTsKKworY2xhc3MgTWVkaWFLZXlNZXNzYWdlRXZlbnQgOiBwdWJsaWMgRXZl
bnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfk1lZGlhS2V5TWVzc2FnZUV2ZW50KCk7CisKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleU1lc3NhZ2VFdmVudD4gY3JlYXRlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFLZXlNZXNzYWdlRXZlbnQpOworICAg
IH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5TWVzc2FnZUV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQm
IGluaXRpYWxpemVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUtl
eU1lc3NhZ2VFdmVudCh0eXBlLCBpbml0aWFsaXplcikpOworICAgIH0KKworICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKKyAgICBVaW50OEFy
cmF5KiBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlLmdldCgpOyB9CisgICAgU3Ry
aW5nIGRlc3RpbmF0aW9uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblVSTDsgfQor
Citwcml2YXRlOgorICAgIE1lZGlhS2V5TWVzc2FnZUV2ZW50KCk7CisgICAgTWVkaWFLZXlNZXNz
YWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZWRpYUtleU1lc3NhZ2VF
dmVudEluaXQmIGluaXRpYWxpemVyKTsKKworICAgIFJlZlB0cjxVaW50OEFycmF5PiBtX21lc3Nh
Z2U7CisgICAgU3RyaW5nIG1fZGVzdGluYXRpb25VUkw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaWRsCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ3NmIwOTFiZGJlNWRjOWRlNzUyOWNhMGQ3NTFmNTY1NWIzNzNlODEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
TWVzc2FnZUV2ZW50LmlkbApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitpbnRlcmZhY2Ug
WworICAgIENvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMiwKKyAgICBWOEVuYWJsZWRBdFJ1
bnRpbWU9ZW5jcnlwdGVkTWVkaWEsCisgICAgQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudCAKK10g
TWVkaWFLZXlNZXNzYWdlRXZlbnQgOiBFdmVudCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVp
bnQ4QXJyYXkgbWVzc2FnZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgW0luaXRpYWxpemVkQnlF
dmVudENvbnN0cnVjdG9yXSBET01TdHJpbmcgZGVzdGluYXRpb25VUkw7Cit9OworCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVk
RXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eU5lZWRlZEV2ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTA2ZjhkNTA2MzE3ZWEzZmI5YTgzNzg3OWZm
ODAxYzhmOTY3YTI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmNwcApAQCAtMCwwICsxLDYyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBX1YyKQorCisjaW5jbHVkZSAiTWVkaWFLZXlOZWVkZWRFdmVudC5oIgorCisjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworTWVkaWFLZXlOZWVkZWRFdmVudEluaXQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnRJ
bml0KCkKK3sKK30KKworTWVkaWFLZXlOZWVkZWRFdmVudDo6TWVkaWFLZXlOZWVkZWRFdmVudCgp
Cit7Cit9CisKK01lZGlhS2V5TmVlZGVkRXZlbnQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCYgaW5pdGlh
bGl6ZXIpCisgICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKKyAgICAsIG1faW5pdERhdGEo
aW5pdGlhbGl6ZXIuaW5pdERhdGEpCit7Cit9CisKK01lZGlhS2V5TmVlZGVkRXZlbnQ6On5NZWRp
YUtleU5lZWRlZEV2ZW50KCkKK3sKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUtleU5l
ZWRlZEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1l
cygpLmludGVyZmFjZUZvck1lZGlhS2V5TmVlZGVkRXZlbnQ7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2YWNl
MzIzM2EzZDFlZjRiZTZjN2QzMjVjZGRlYmI1ZjYyMDA5NzcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQu
aApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhS2V5TmVlZGVkRXZl
bnRfaAorI2RlZmluZSBNZWRpYUtleU5lZWRlZEV2ZW50X2gKKworI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUFfVjIpCisKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIk1lZGlhS2V5RXJy
b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgTWVkaWFLZXlOZWVkZWRFdmVu
dEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKKyAgICBNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCgp
OworCisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGluaXREYXRhOworfTsKKworY2xhc3MgTWVkaWFL
ZXlOZWVkZWRFdmVudCA6IHB1YmxpYyBFdmVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TWVk
aWFLZXlOZWVkZWRFdmVudCgpOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFLZXlOZWVk
ZWRFdmVudD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVk
aWFLZXlOZWVkZWRFdmVudCk7CisgICAgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFL
ZXlOZWVkZWRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVk
aWFLZXlOZWVkZWRFdmVudEluaXQmIGluaXRpYWxpemVyKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBNZWRpYUtleU5lZWRlZEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKSk7Cisg
ICAgfQorCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBj
b25zdDsKKworICAgIFVpbnQ4QXJyYXkqIGluaXREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9pbml0
RGF0YS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIE1lZGlhS2V5TmVlZGVkRXZlbnQoKTsKKyAg
ICBNZWRpYUtleU5lZWRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVk
aWFLZXlOZWVkZWRFdmVudEluaXQmIGluaXRpYWxpemVyKTsKKworICAgIFJlZlB0cjxVaW50OEFy
cmF5PiBtX2luaXREYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleU5lZWRlZEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjNkNDA3YjUwNjdj
NmU5YzBkNGE0YjJkNTc0ODM5NWY0Y2E2MDM5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwKQEAg
LTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworaW50ZXJmYWNlIFsKKyAgICBDb25kaXRpb25hbD1F
TkNSWVBURURfTUVESUFfVjIsCisgICAgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlh
LAorICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQgCitdIE1lZGlhS2V5TmVlZGVkRXZlbnQg
OiBFdmVudCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVpbnQ4QXJyYXkgaW5pdERhdGE7Cit9
OworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJiYTNkYjg2MDk4MGVhNmQ5NmI5ZGQ4
NjdhMjY5M2E4OTZiNjNiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtMCwwICsxLDIzNCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYUtleVNlc3Np
b24uaCIKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlICJDRE0u
aCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCisj
aW5jbHVkZSAiTWVkaWFLZXlFcnJvci5oIgorI2luY2x1ZGUgIk1lZGlhS2V5TWVzc2FnZUV2ZW50
LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFz
c1JlZlB0cjxNZWRpYUtleVNlc3Npb24+IE1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE1lZGlhS2V5cyoga2V5cywgY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUtleVNlc3Npb24oY29u
dGV4dCwga2V5cywga2V5U3lzdGVtKSk7Cit9CisKK01lZGlhS2V5U2Vzc2lvbjo6TWVkaWFLZXlT
ZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE1lZGlhS2V5cyoga2V5cywg
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCisgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
cihjb250ZXh0KQorICAgICwgbV9rZXlzKGtleXMpCisgICAgLCBtX2tleVN5c3RlbShrZXlTeXN0
ZW0pCisgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKHRo
aXMpKQorICAgICwgbV9zZXNzaW9uKGtleXMtPmNkbSgpLT5jcmVhdGVTZXNzaW9uKCkpCisgICAg
LCBtX2tleVJlcXVlc3RUaW1lcih0aGlzLCAmTWVkaWFLZXlTZXNzaW9uOjprZXlSZXF1ZXN0VGlt
ZXJGaXJlZCkKKyAgICAsIG1fYWRkS2V5VGltZXIodGhpcywgJk1lZGlhS2V5U2Vzc2lvbjo6YWRk
S2V5VGltZXJGaXJlZCkKK3sKK30KKworTWVkaWFLZXlTZXNzaW9uOjp+TWVkaWFLZXlTZXNzaW9u
KCkKK3sKKyAgICBjbG9zZSgpOworfQorCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6c2V0RXJyb3Io
TWVkaWFLZXlFcnJvciogZXJyb3IpCit7CisgICAgbV9lcnJvciA9IGVycm9yOworfQorCit2b2lk
IE1lZGlhS2V5U2Vzc2lvbjo6Y2xvc2UoKQoreworICAgIGlmIChtX3Nlc3Npb24pCisgICAgICAg
IG1fc2Vzc2lvbi0+cmVsZWFzZUtleXMoKTsKKyAgICBtX3Nlc3Npb24gPSAwOworICAgIG1fYXN5
bmNFdmVudFF1ZXVlLT5jYW5jZWxBbGxFdmVudHMoKTsKK30KKworY29uc3QgU3RyaW5nJiBNZWRp
YUtleVNlc3Npb246OnNlc3Npb25JZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Vzc2lvbi0+
c2Vzc2lvbklkKCk7Cit9CisKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVl
c3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEpCit7CisgICAg
bV9wZW5kaW5nS2V5UmVxdWVzdHMuYXBwZW5kKFBlbmRpbmdLZXlSZXF1ZXN0KG1pbWVUeXBlLCBp
bml0RGF0YSkpOworICAgIG1fa2V5UmVxdWVzdFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwor
dm9pZCBNZWRpYUtleVNlc3Npb246OmtleVJlcXVlc3RUaW1lckZpcmVkKFRpbWVyPE1lZGlhS2V5
U2Vzc2lvbj4qKQoreworICAgIEFTU0VSVChtX3BlbmRpbmdLZXlSZXF1ZXN0cy5zaXplKCkpOwor
ICAgIGlmICghbV9zZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICB3aGlsZSAoIW1fcGVu
ZGluZ0tleVJlcXVlc3RzLmlzRW1wdHkoKSkgeworICAgICAgICBQZW5kaW5nS2V5UmVxdWVzdCBy
ZXF1ZXN0ID0gbV9wZW5kaW5nS2V5UmVxdWVzdHMudGFrZUZpcnN0KCk7CisKKyAgICAgICAgLy8g
Tk9URTogQ29udGludWVkIGZyb20gc3RlcCA1IGluIE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbigp
LgorICAgICAgICAvLyBUaGUgdXNlciBhZ2VudCB3aWxsIGFzeW5jaHJvbm91c2x5IGV4ZWN1dGUg
dGhlIGZvbGxvd2luZyBzdGVwcyBpbiB0aGUgdGFzazoKKworICAgICAgICAvLyAxLiBMZXQgY2Rt
IGJlIHRoZSBjZG0gbG9hZGVkIGluIHRoZSBNZWRpYUtleXMgY29uc3RydWN0b3IuCisgICAgICAg
IC8vIDIuIExldCBkZXN0aW5hdGlvblVSTCBiZSBudWxsLgorICAgICAgICBTdHJpbmcgZGVzdGlu
YXRpb25VUkw7CisgICAgICAgIE1lZGlhS2V5RXJyb3I6OkNvZGUgZXJyb3JDb2RlID0gMDsKKyAg
ICAgICAgdW5zaWduZWQgbG9uZyBzeXN0ZW1Db2RlID0gMDsKKworICAgICAgICAvLyAzLiBVc2Ug
Y2RtIHRvIGdlbmVyYXRlIGEga2V5IHJlcXVlc3QgYW5kIGZvbGxvdyB0aGUgc3RlcHMgZm9yIHRo
ZSBmaXJzdCBtYXRjaGluZyBjb25kaXRpb24gZnJvbSB0aGUgZm9sbG93aW5nIGxpc3Q6CisKKyAg
ICAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGtleVJlcXVlc3QgPSBtX3Nlc3Npb24tPmdlbmVyYXRl
S2V5UmVxdWVzdChyZXF1ZXN0Lm1pbWVUeXBlLCByZXF1ZXN0LmluaXREYXRhLmdldCgpLCBkZXN0
aW5hdGlvblVSTCwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKKworICAgICAgICAvLyBPdGhlcndp
c2UgW2lmIGEgcmVxdWVzdCBpcyBub3Qgc3VjY2Vzc2Z1bGx5IGdlbmVyYXRlZF06CisgICAgICAg
IGlmICgha2V5UmVxdWVzdCkgeworICAgICAgICAgICAgLy8gMy4xLiBDcmVhdGUgYSBuZXcgTWVk
aWFLZXlFcnJvciBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CisgICAgICAg
ICAgICAvLyAgICAgIGNvZGUgPSB0aGUgYXBwcm9wcmlhdGUgTWVkaWFLZXlFcnJvciBjb2RlCisg
ICAgICAgICAgICAvLyAgICAgIHN5c3RlbUNvZGUgPSBhIEtleSBTeXN0ZW0tc3BlY2lmaWMgdmFs
dWUsIGlmIHByb3ZpZGVkLCBhbmQgMCBvdGhlcndpc2UKKyAgICAgICAgICAgIFJlZlB0cjxNZWRp
YUtleUVycm9yPiBlcnJvciA9IE1lZGlhS2V5RXJyb3I6OmNyZWF0ZShlcnJvckNvZGUsIHN5c3Rl
bUNvZGUpLmdldCgpOworCisgICAgICAgICAgICAvLyAzLjIuIFNldCB0aGUgTWVkaWFLZXlTZXNz
aW9uIG9iamVjdCdzIGVycm9yIGF0dHJpYnV0ZSB0byB0aGUgZXJyb3Igb2JqZWN0IGNyZWF0ZWQg
aW4gdGhlIHByZXZpb3VzIHN0ZXAuCisgICAgICAgICAgICBzZXRFcnJvcihlcnJvci5nZXQoKSk7
CisKKyAgICAgICAgICAgIC8vIDMuMy4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZl
bnQgbmFtZWQga2V5ZXJyb3IgYXQgdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuCisgICAgICAg
ICAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Vi
a2l0a2V5ZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50LT5zZXRU
YXJnZXQodGhpcyk7CisgICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50
KGV2ZW50LnJlbGVhc2UoKSk7CisKKyAgICAgICAgICAgIC8vIDMuNC4gQWJvcnQgdGhlIHRhc2su
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIDQuIHF1ZXVl
IGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGtleW1lc3NhZ2UgYXQgdGhlIG5l
dyBvYmplY3QKKyAgICAgICAgLy8gICAgVGhlIGV2ZW50IGlzIG9mIHR5cGUgTWVkaWFLZXlNZXNz
YWdlRXZlbnQgYW5kIGhhczoKKyAgICAgICAgLy8gICAgbWVzc2FnZSA9IGtleSByZXF1ZXN0Cisg
ICAgICAgIC8vICAgIGRlc3RpbmF0aW9uVVJMID0gZGVzdGluYXRpb25VUkwKKyAgICAgICAgTWVk
aWFLZXlNZXNzYWdlRXZlbnRJbml0IGluaXQ7CisgICAgICAgIGluaXQuYnViYmxlcyA9IGZhbHNl
OworICAgICAgICBpbml0LmNhbmNlbGFibGUgPSBmYWxzZTsKKyAgICAgICAgaW5pdC5tZXNzYWdl
ID0ga2V5UmVxdWVzdDsKKyAgICAgICAgaW5pdC5kZXN0aW5hdGlvblVSTCA9IGRlc3RpbmF0aW9u
VVJMOworICAgICAgICBSZWZQdHI8TWVkaWFLZXlNZXNzYWdlRXZlbnQ+IGV2ZW50ID0gTWVkaWFL
ZXlNZXNzYWdlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0a2V5bWVzc2FnZUV2ZW50
LCBpbml0KTsKKyAgICAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9hc3lu
Y0V2ZW50UXVldWUtPmVucXVldWVFdmVudChldmVudCk7CisgICAgfQorfQorCit2b2lkIE1lZGlh
S2V5U2Vzc2lvbjo6YWRkS2V5KFVpbnQ4QXJyYXkqIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgLy8gRnJvbSA8aHR0cDovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUv
dGlwL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEuaHRtbCNkb20tYWRka2V5PjoKKyAg
ICAvLyBUaGUgYWRkS2V5KGtleSkgbWV0aG9kIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6
CisgICAgLy8gMS4gSWYgdGhlIGZpcnN0IG9yIHNlY29uZCBhcmd1bWVudCBbc2ljXSBpcyBudWxs
IG9yIGFuIGVtcHR5IGFycmF5LCB0aHJvdyBhbiBJTlZBTElEX0FDQ0VTU19FUlIuCisgICAgLy8g
Tk9URTogdGhlIHJlZmVyZW5jZSB0byBhICJzZWNvbmQgYXJndW1lbnQiIGlzIGEgc3BlYyBidWcu
CisgICAgaWYgKCFrZXkgfHwgIWtleS0+bGVuZ3RoKCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyAyLiBTY2hlZHVs
ZSBhIHRhc2sgdG8gaGFuZGxlIHRoZSBjYWxsLCBwcm92aWRpbmcga2V5LgorICAgIG1fcGVuZGlu
Z0tleXMuYXBwZW5kKGtleSk7CisgICAgbV9hZGRLZXlUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9
CisKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjphZGRLZXlUaW1lckZpcmVkKFRpbWVyPE1lZGlhS2V5
U2Vzc2lvbj4qKQoreworICAgIEFTU0VSVChtX3BlbmRpbmdLZXlzLnNpemUoKSk7CisgICAgaWYg
KCFtX3Nlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIHdoaWxlICghbV9wZW5kaW5nS2V5
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IHBlbmRpbmdLZXkgPSBt
X3BlbmRpbmdLZXlzLnRha2VGaXJzdCgpOworICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcnJvckNv
ZGUgPSAwOworICAgICAgICB1bnNpZ25lZCBsb25nIHN5c3RlbUNvZGUgPSAwOworCisgICAgICAg
IC8vIE5PVEU6IENvbnRpbnVlZCBmcm9tIHN0ZXAgMi4gb2YgTWVkaWFLZXlTZXNzaW9uOjphZGRL
ZXkoKQorICAgICAgICAvLyAyLjEuIExldCBjZG0gYmUgdGhlIGNkbSBsb2FkZWQgaW4gdGhlIE1l
ZGlhS2V5cyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgLy8gTk9URTogVGhpcyBpcyBtX3Nlc3Npb24u
CisgICAgICAgIC8vIDIuMi4gTGV0ICdkaWQgc3RvcmUga2V5JyBiZSBmYWxzZS4KKyAgICAgICAg
Ym9vbCBkaWRTdG9yZUtleSA9IGZhbHNlOworICAgICAgICAvLyAyLjMuIExldCAnbmV4dCBtZXNz
YWdlJyBiZSBudWxsLgorICAgICAgICBSZWZQdHI8VWludDhBcnJheT4gbmV4dE1lc3NhZ2U7Cisg
ICAgICAgIC8vIDIuNC4gVXNlIGNkbSB0byBoYW5kbGUga2V5LgorICAgICAgICBkaWRTdG9yZUtl
eSA9IG1fc2Vzc2lvbi0+YWRkS2V5KHBlbmRpbmdLZXkuZ2V0KCksIG5leHRNZXNzYWdlLCBlcnJv
ckNvZGUsIHN5c3RlbUNvZGUpOworICAgICAgICAvLyAyLjUuIElmIGRpZCBzdG9yZSBrZXkgaXMg
dHJ1ZSBhbmQgdGhlIG1lZGlhIGVsZW1lbnQgaXMgd2FpdGluZyBmb3IgYSBrZXksIHF1ZXVlIGEg
dGFzayB0byBhdHRlbXB0IHRvIHJlc3VtZSBwbGF5YmFjay4KKyAgICAgICAgLy8gVE9ETzogRmlu
ZCBhbmQgcmVzdGFydCB0aGUgbWVkaWEgZWxlbWVudAorCisgICAgICAgIC8vIDIuNi4gSWYgbmV4
dCBtZXNzYWdlIGlzIG5vdCBudWxsLCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVu
dCBuYW1lZCBrZXltZXNzYWdlIGF0IHRoZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0LgorICAgICAg
ICAvLyAgICAgIFRoZSBldmVudCBpcyBvZiB0eXBlIE1lZGlhS2V5TWVzc2FnZUV2ZW50IGFuZCBo
YXM6CisgICAgICAgIC8vICAgICAgbWVzc2FnZSA9IG5leHQgbWVzc2FnZQorICAgICAgICAvLyAg
ICAgIGRlc3RpbmF0aW9uVVJMID0gbnVsbAorICAgICAgICBpZiAobmV4dE1lc3NhZ2UpIHsKKyAg
ICAgICAgICAgIE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCBpbml0OworICAgICAgICAgICAgaW5p
dC5idWJibGVzID0gZmFsc2U7CisgICAgICAgICAgICBpbml0LmNhbmNlbGFibGUgPSBmYWxzZTsK
KyAgICAgICAgICAgIGluaXQubWVzc2FnZSA9IG5leHRNZXNzYWdlOworICAgICAgICAgICAgUmVm
UHRyPE1lZGlhS2V5TWVzc2FnZUV2ZW50PiBldmVudCA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtleW1lc3NhZ2VFdmVudCwgaW5pdCk7CisgICAgICAg
ICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVl
dWUtPmVucXVldWVFdmVudChldmVudCk7CisgICAgICAgIH0KKworICAgICAgICAvLyAyLjcuIElm
IGRpZCBzdG9yZSBrZXkgaXMgdHJ1ZSwgcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZl
bnQgbmFtZWQga2V5YWRkZWQgYXQgdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuCisgICAgICAg
IGlmIChkaWRTdG9yZUtleSkgeworICAgICAgICAgICAgUmVmUHRyPEV2ZW50PiBrZXlhZGRlZEV2
ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0a2V5YWRkZWRFdmVudCwgZmFs
c2UsIGZhbHNlKTsKKyAgICAgICAgICAgIGtleWFkZGVkRXZlbnQtPnNldFRhcmdldCh0aGlzKTsK
KyAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoa2V5YWRkZWRFdmVu
dCk7CisgICAgICAgIH0KKworICAgICAgICAvLyAyLjguIElmIGFueSBvZiB0aGUgcHJlY2VkaW5n
IHN0ZXBzIGluIHRoZSB0YXNrIGZhaWxlZAorICAgICAgICBpZiAoIWRpZFN0b3JlS2V5KSB7Cisg
ICAgICAgICAgICAvLyAyLjguMS4gQ3JlYXRlIGEgbmV3IE1lZGlhS2V5RXJyb3Igb2JqZWN0IHdp
dGggdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgorICAgICAgICAgICAgLy8gICAgICAgIGNvZGUg
PSB0aGUgYXBwcm9wcmlhdGUgTWVkaWFLZXlFcnJvciBjb2RlCisgICAgICAgICAgICAvLyAgICAg
ICAgc3lzdGVtQ29kZSA9IGEgS2V5IFN5c3RlbS1zcGVjaWZpYyB2YWx1ZSwgaWYgcHJvdmlkZWQs
IGFuZCAwIG90aGVyd2lzZQorICAgICAgICAgICAgUmVmUHRyPE1lZGlhS2V5RXJyb3I+IGVycm9y
ID0gTWVkaWFLZXlFcnJvcjo6Y3JlYXRlKGVycm9yQ29kZSwgc3lzdGVtQ29kZSkuZ2V0KCk7CisK
KyAgICAgICAgICAgIC8vIDIuOC4yLiBTZXQgdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QncyBl
cnJvciBhdHRyaWJ1dGUgdG8gdGhlIGVycm9yIG9iamVjdCBjcmVhdGVkIGluIHRoZSBwcmV2aW91
cyBzdGVwLgorICAgICAgICAgICAgc2V0RXJyb3IoZXJyb3IuZ2V0KCkpOworCisgICAgICAgICAg
ICAvLyAyLjguMy4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQga2V5
ZXJyb3IgYXQgdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuCisgICAgICAgICAgICBSZWZQdHI8
RXZlbnQ+IGtleWVycm9yRXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRr
ZXllcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAga2V5ZXJyb3JFdmVudC0+
c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVF
dmVudChrZXllcnJvckV2ZW50LnJlbGVhc2UoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IC8vIDIuOC40LiBBYm9ydCB0aGUgdGFzay4KKyAgICAgICAgICAgIC8vIE5PVEU6IG5vLW9wCisg
ICAgICAgIH0KKyAgICB9Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFLZXlTZXNzaW9u
OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVy
ZmFjZUZvck1lZGlhS2V5U2Vzc2lvbjsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVk
aWFLZXlTZXNzaW9uOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwMGYzOTAyZTMyYjAz
ZTNiMmY3YWY1ODA4NjgzZjJiZjA3MGQyNmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC0wLDAgKzEs
MTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYUtleVNlc3Npb25faAorI2RlZmluZSBN
ZWRpYUtleVNlc3Npb25faAorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2lu
Y2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJn
ZXQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBHZW5lcmljRXZlbnRRdWV1ZTsKK2NsYXNzIE1lZGlhS2V5RXJyb3I7CitjbGFzcyBNZWRpYUtl
eXM7CitjbGFzcyBDRE1TZXNzaW9uOworCitjbGFzcyBNZWRpYUtleVNlc3Npb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxNZWRpYUtleVNlc3Npb24+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFLZXlTZXNzaW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlh
S2V5cyosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKKyAgICB+TWVkaWFLZXlTZXNzaW9uKCk7
CisKKyAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5U3lz
dGVtOyB9CisgICAgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBjb25zdDsKKworICAgIHZvaWQg
c2V0RXJyb3IoTWVkaWFLZXlFcnJvciopOworICAgIE1lZGlhS2V5RXJyb3IqIGVycm9yKCkgeyBy
ZXR1cm4gbV9lcnJvci5nZXQoKTsgfQorCisgICAgdm9pZCBzZXRLZXlzKE1lZGlhS2V5cyoga2V5
cykgeyBtX2tleXMgPSBrZXlzOyB9CisgICAgTWVkaWFLZXlzKiBrZXlzKCkgY29uc3QgeyByZXR1
cm4gbV9rZXlzOyB9CisKKyAgICB2b2lkIGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSk7CisgICAgdm9pZCBhZGRLZXkoVWludDhB
cnJheSoga2V5LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBjbG9zZSgpOworCisgICAgdXNp
bmcgUmVmQ291bnRlZDxNZWRpYUtleVNlc3Npb24+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRl
ZDxNZWRpYUtleVNlc3Npb24+OjpkZXJlZjsKKworICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NS
ZWZQdHI8RXZlbnQ+KTsKKworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Vi
a2l0a2V5YWRkZWQpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0
a2V5ZXJyb3IpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0a2V5
bWVzc2FnZSk7CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFt
ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFOworCitwcm90ZWN0ZWQ6Cisg
ICAgTWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNZWRpYUtleXMqLCBj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CisgICAgdm9pZCBrZXlSZXF1ZXN0VGltZXJGaXJlZChU
aW1lcjxNZWRpYUtleVNlc3Npb24+Kik7CisgICAgdm9pZCBhZGRLZXlUaW1lckZpcmVkKFRpbWVy
PE1lZGlhS2V5U2Vzc2lvbj4qKTsKKworICAgIE1lZGlhS2V5cyogbV9rZXlzOworICAgIFN0cmlu
ZyBtX2tleVN5c3RlbTsKKyAgICBTdHJpbmcgbV9zZXNzaW9uSWQ7CisgICAgUmVmUHRyPE1lZGlh
S2V5RXJyb3I+IG1fZXJyb3I7CisgICAgT3duUHRyPEdlbmVyaWNFdmVudFF1ZXVlPiBtX2FzeW5j
RXZlbnRRdWV1ZTsKKyAgICBPd25QdHI8Q0RNU2Vzc2lvbj4gbV9zZXNzaW9uOworCisgICAgc3Ry
dWN0IFBlbmRpbmdLZXlSZXF1ZXN0IHsKKyAgICAgICAgUGVuZGluZ0tleVJlcXVlc3QoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEpIDogbWltZVR5cGUobWltZVR5
cGUpLCBpbml0RGF0YShpbml0RGF0YSkgeyB9CisgICAgICAgIFN0cmluZyBtaW1lVHlwZTsKKyAg
ICAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGluaXREYXRhOworICAgIH07CisgICAgRGVxdWU8UGVu
ZGluZ0tleVJlcXVlc3Q+IG1fcGVuZGluZ0tleVJlcXVlc3RzOworICAgIFRpbWVyPE1lZGlhS2V5
U2Vzc2lvbj4gbV9rZXlSZXF1ZXN0VGltZXI7CisKKyAgICBEZXF1ZTxSZWZQdHI8VWludDhBcnJh
eT4gPiBtX3BlbmRpbmdLZXlzOworICAgIFRpbWVyPE1lZGlhS2V5U2Vzc2lvbj4gbV9hZGRLZXlU
aW1lcjsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVS
UklERSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVS
UklERSB7IGRlcmVmKCk7IH0KKworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRh
cmdldERhdGEoKSBPVkVSUklERSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KKyAgICB2
aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREUg
eyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisKKyAgICBFdmVudFRhcmdldERhdGEgbV9l
dmVudFRhcmdldERhdGE7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01F
RElBX1YyKQorCisjZW5kaWYgLy8gTWVkaWFLZXlTZXNzaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45MTI1YmIzZDFlMDMzYzJiMDU1YjgxYzhiNjA2YjllMzAyYmM2ZDZmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uaWRsCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgICAgICovCisKK2ludGVyZmFj
ZSBbCisgICAgQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyLAorICAgIFY4RW5hYmxlZEF0
UnVudGltZT1lbmNyeXB0ZWRNZWRpYSwKKyAgICBFdmVudFRhcmdldCwKK10gTWVkaWFLZXlTZXNz
aW9uIHsKKyAgICAvLyBlcnJvciBzdGF0ZQorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYUtl
eUVycm9yIGVycm9yOworCisgICAgLy8gc2Vzc2lvbiBwcm9wZXJ0aWVzCisgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBrZXlTeXN0ZW07CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBzZXNzaW9uSWQ7CisKKyAgICAvLyBzZXNzaW9uIG9wZXJhdGlvbnMKKyAgICB2b2lk
IGFkZEtleShpbiBVaW50OEFycmF5IGtleSkKKyAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CisgICAgdm9pZCBjbG9zZSgpOworICAgIAorICAgIC8vIEV2ZW50TGlzdGVuZXJzCisgICAgYXR0
cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIg
b253ZWJraXRrZXlhZGRlZDsKKyAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1lbmNy
eXB0ZWRNZWRpYV0gRXZlbnRMaXN0ZW5lciBvbndlYmtpdGtleWVycm9yOworICAgIGF0dHJpYnV0
ZSBbVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBFdmVudExpc3RlbmVyIG9ud2Vi
a2l0a2V5bWVzc2FnZTsKKworICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgIHZvaWQg
YWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgdm9pZCByZW1vdmVF
dmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICBib29sZWFuIGRp
c3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQorICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24p
OworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZGMzM2NjMzhmNDBlMmY4YWFjMDk0NTU4NTVmYjc0MjQ5
YmI4ZmE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhS2V5cy5oIgorCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIkNETS5oIgorI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKKyNpbmNsdWRlICJNZWRpYUtleU1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIk1lZGlh
S2V5U2Vzc2lvbi5oIgorI2luY2x1ZGUgIlVVSUQuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWVkaWFLZXlzPiBNZWRpYUtl
eXM6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgLy8gRnJvbSA8aHR0cDovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUv
dGlwL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEuaHRtbCNkb20tbWVkaWEta2V5cy1j
b25zdHJ1Y3Rvcj46CisgICAgLy8gVGhlIE1lZGlhS2V5cyhrZXlTeXN0ZW0pIGNvbnN0cnVjdG9y
IG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisKKyAgICAvLyAxLiBJZiBrZXlTeXN0ZW0g
aXMgbnVsbCBvciBhbiBlbXB0eSBzdHJpbmcsIHRocm93IGFuIElOVkFMSURfQUNDRVNTX0VSUiBl
eGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmIChrZXlTeXN0ZW0uaXNOdWxs
KCkgfHwga2V5U3lzdGVtLmlzRW1wdHkoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNT
X0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gMi4gSWYga2V5U3lzdGVt
IGlzIG5vdCBvbmUgb2YgdGhlIHVzZXIgYWdlbnQncyBzdXBwb3J0ZWQgS2V5IFN5c3RlbXMsIHRo
cm93IGEgTk9UX1NVUFBPUlRFRF9FUlIgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICgh
Q0RNOjpzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKSB7CisgICAgICAgIGVjID0gTk9UX1NV
UFBPUlRFRF9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8vIDMuIExldCBj
ZG0gYmUgdGhlIGNvbnRlbnQgZGVjcnlwdGlvbiBtb2R1bGUgY29ycmVzcG9uZGluZyB0byBrZXlT
eXN0ZW0uCisgICAgLy8gNC4gTG9hZCBjZG0gaWYgbmVjZXNzYXJ5LgorICAgIE93blB0cjxDRE0+
IGNkbSA9IENETTo6Y3JlYXRlKGtleVN5c3RlbSk7CisKKyAgICAvLyA1LiBDcmVhdGUgYSBuZXcg
TWVkaWFLZXlzIG9iamVjdC4KKyAgICAvLyA1LjEgTGV0IHRoZSBrZXlTeXN0ZW0gYXR0cmlidXRl
IGJlIGtleVN5c3RlbS4KKyAgICAvLyA2LiBSZXR1cm4gdGhlIG5ldyBvYmplY3QgdG8gdGhlIGNh
bGxlci4KKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhS2V5cyhrZXlTeXN0ZW0sIGNkbS5y
ZWxlYXNlKCkpKTsKK30KKworTWVkaWFLZXlzOjpNZWRpYUtleXMoY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0sIFBhc3NPd25QdHI8Q0RNPiBjZG0pCisgICAgOiBtX2tleVN5c3RlbShrZXlTeXN0ZW0p
CisgICAgLCBtX2NkbShjZG0pCit7Cit9CisKK01lZGlhS2V5czo6fk1lZGlhS2V5cygpCit7Cisg
ICAgLy8gRnJvbSA8aHR0cDovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlw
L2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEuaHRtbCNkb20tbWVkaWEta2V5cy1jb25z
dHJ1Y3Rvcj46CisgICAgLy8gV2hlbiBkZXN0cm95aW5nIGEgTWVkaWFLZXlzIG9iamVjdCwgZm9s
bG93IHRoZSBzdGVwcyBpbiBjbG9zZSgpLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9z
ZXNzaW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBtX3Nlc3Npb25zW2ldLT5jbG9zZSgpOwor
ICAgICAgICBtX3Nlc3Npb25zW2ldLT5zZXRLZXlzKDApOworICAgIH0KK30KKworUGFzc1JlZlB0
cjxNZWRpYUtleVNlc3Npb24+IE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHR5cGUsIFVpbnQ4QXJyYXkqIGluaXRE
YXRhLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICAvLyBGcm9tIDxodHRwOi8vZHZjcy53My5v
cmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS90aXAvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1t
ZWRpYS5odG1sI2RvbS1jcmVhdGVzZXNzaW9uPjoKKyAgICAvLyBUaGUgY3JlYXRlU2Vzc2lvbih0
eXBlLCBpbml0RGF0YSkgbWV0aG9kIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAg
Ly8gTm90ZTogVGhlIGNvbnRlbnRzIG9mIGluaXREYXRhIGFyZSBjb250YWluZXItc3BlY2lmaWMg
SW5pdGlhbGl6YXRpb24gRGF0YS4KKworICAgIC8vIDEuIElmIHR5cGUgaXMgbnVsbCBvciBhbiBl
bXB0eSBzdHJpbmcgYW5kIGluaXREYXRhIGlzIG5vdCBudWxsIG9yIGFuIGVtcHR5IHN0cmluZywg
dGhyb3cgYW4KKyAgICAvLyBJTlZBTElEX0FDQ0VTU19FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0
aGVzZSBzdGVwcy4KKyAgICBpZiAoKHR5cGUuaXNOdWxsKCkgfHwgdHlwZS5pc0VtcHR5KCkpICYm
ICghaW5pdERhdGEgfHwgaW5pdERhdGEtPmxlbmd0aCgpKSkgeworICAgICAgICBlYyA9IElOVkFM
SURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gMi4gSWYg
dHlwZSBjb250YWlucyBhIE1JTUUgdHlwZSB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQgb3IgaXMgbm90
IHN1cHBvcnRlZCBieSB0aGUga2V5U3lzdGVtLCB0aHJvdworICAgIC8vIGEgTk9UX1NVUFBPUlRF
RF9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoIXR5cGUuaXNO
dWxsKCkgJiYgIXR5cGUuaXNFbXB0eSgpICYmICFtX2NkbS0+c3VwcG9ydHNNSU1FVHlwZSh0eXBl
KSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisKKyAgICAvLyAzLiBDcmVhdGUgYSBuZXcgTWVkaWFLZXlTZXNzaW9uIG9iamVjdC4K
KyAgICAvLyAzLjEgTGV0IHRoZSBrZXlTeXN0ZW0gYXR0cmlidXRlIGJlIGtleVN5c3RlbS4KKyAg
ICAvLyAzLjIgTGV0IHRoZSBzZXNzaW9uSWQgYXR0cmlidXRlIGJlIGEgdW5pcXVlIFNlc3Npb24g
SUQgc3RyaW5nLiBJdCBtYXkgYmUgZ2VuZXJhdGVkIGJ5IGNkbS4KKyAgICBSZWZQdHI8TWVkaWFL
ZXlTZXNzaW9uPiBzZXNzaW9uID0gTWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUoY29udGV4dCwgdGhp
cywga2V5U3lzdGVtKCkpOworCisgICAgLy8gNC4gQWRkIHRoZSBuZXcgb2JqZWN0IHRvIGFuIGlu
dGVybmFsIGxpc3Qgb2Ygc2Vzc2lvbiBvYmplY3RzLgorICAgIG1fc2Vzc2lvbnMuYXBwZW5kKHNl
c3Npb24pOworCisgICAgLy8gNS4gU2NoZWR1bGUgYSB0YXNrIHRvIGdlbmVyYXRlIGEga2V5IHJl
cXVlc3QsIHByb3ZpZGluZyB0eXBlLCBpbml0RGF0YSwgYW5kIHRoZSBuZXcgb2JqZWN0LgorICAg
IHNlc3Npb24tPmdlbmVyYXRlS2V5UmVxdWVzdCh0eXBlLCBpbml0RGF0YSk7CisKKyAgICAvLyA2
LiBSZXR1cm4gdGhlIG5ldyBvYmplY3QgdG8gdGhlIGNhbGxlci4KKyAgICByZXR1cm4gc2Vzc2lv
bjsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4YWRiNzVmNjFlM2M2YjJhZGFkNzUw
YmMzNGQ2ODJmYzllZTA3ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIE1lZGlhS2V5c19oCisjZGVmaW5lIE1lZGlhS2V5c19oCisKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDRE07
CitjbGFzcyBNZWRpYUtleVNlc3Npb247CisKK2NsYXNzIE1lZGlhS2V5cyA6IHB1YmxpYyBSZWZD
b3VudGVkPE1lZGlhS2V5cz4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
S2V5cz4gY3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgfk1lZGlhS2V5cygpOworCisgICAgUGFzc1JlZlB0cjxNZWRpYUtleVNlc3Npb24+IGNyZWF0
ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IFVpbnQ4QXJyYXkqIGluaXREYXRhLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICBjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9CisgICAgQ0RNKiBj
ZG0oKSB7IHJldHVybiBtX2NkbS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgTWVkaWFLZXlz
KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBQYXNzT3duUHRyPENETT4pOworCisgICAgVmVjdG9y
PFJlZlB0cjxNZWRpYUtleVNlc3Npb24+ID4gbV9zZXNzaW9uczsKKworICAgIFN0cmluZyBtX2tl
eVN5c3RlbTsKKyAgICBPd25QdHI8Q0RNPiBtX2NkbTsKK307CisKK30KKworI2VuZGlmIC8vIEVO
QUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNlbmRpZiAvLyBNZWRpYUtleXNfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA2NGI3NWNjNGI5YzM2YjRiNjc2MWQ0OTdiZTUwNDg0M2JhNmU5ZmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5pZGwKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworIAoraW50ZXJmYWNlIFsKKyAgICBD
b25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIsCisgICAgVjhFbmFibGVkQXRSdW50aW1lPWVu
Y3J5cHRlZE1lZGlhLAorICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyBrZXlTeXN0ZW0pLAor
ICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uLAorXSBNZWRpYUtleXMgeworICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBNZWRpYUtleVNlc3Npb24gY3JlYXRlU2Vzc2lv
bihpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgdHlwZSwgaW4gW09w
dGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gVWludDhBcnJheSBpbml0RGF0YSkKKyAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGtleVN5c3RlbTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
biBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDdiOGI5N2Q5NmMzYmZmZjg0
MTNiYzRmNTlhNmNmOWJhMjFhN2UwM2EuLjhhMmE0YzZmOTgzMWY1NGI5NzBhNzY1ZDQ2MGZlYmY1
OTViOTdhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yNzUxLDMgKzI3NTEsNyBAQCBfX1pO
N1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMxOWlzQ1NTUmVnaW9uc0VuYWJsZWRFCiAj
aWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKIF9fWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRG
ZWF0dXJlczI1YXJlU2VhbWxlc3NJRnJhbWVzRW5hYmxlZEUKICNlbmRpZgorCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQV9WMikKK19fWk43V2ViQ29yZTNDRE0xOHJlZ2lzdGVyQ0RNRmFjdG9y
eUVQRk4zV1RGMTBQYXNzT3duUHRySU5TXzE5Q0RNUHJpdmF0ZUludGVyZmFjZUVFRVBTMF9FUEZi
UktOUzFfNlN0cmluZ0VFCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5YjIwOGQyODE5YThiNmY5YmE1ZGU5OTcwOGIz
NTllMDM3YjJjYWRiLi5hZjZkMmE2ZTAxNGU3ZWQwNWQxNzhhNjRlZmYwNzhlNWU5YjYyMjQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xNDc1LDcgKzE0NzUsNiBAQAogCQk0QjZGQTZGNDBDMzlFNDhDMDAwODcwMTEgLyogU21h
cnRSZXBsYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0QjZGQTZGMjBDMzlFNDhDMDAwODcwMTEgLyogU21hcnRSZXBsYWNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEI2RkE2RjUwQzM5RTQ4QzAw
MDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QjZGQTZGMzBDMzlFNDhDMDAwODcwMTEgLyogU21hcnRSZXBsYWNl
LmNwcCAqLzsgfTsKIAkJNEI2RkE2RjcwQzM5RTRBMTAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZUNG
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkZB
NkY2MEMzOUU0QTEwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2VDRi5jcHAgKi87IH07Ci0JCTRCNjE3
MzczNzk2MzZGNjE2RTI3NzM2OCAvKiBJREJIaXN0b2dyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjYxNzM3Mzc5NjM2RjYxNkUyNzczNjggLyog
SURCSGlzdG9ncmFtcy5oICovOyB9OwogCQk0QjhBRjRBQTBCMUNFMDJCMDA2ODc2OTAgLyogQ2xp
cGJvYXJkQWNjZXNzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QjhBRjRBOTBCMUNFMDJCMDA2ODc2OTAgLyogQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NEJBRTk1QjEwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJBRTk1QjAwQjJGQTlDRTAw
QUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTREMjczQ0Y5MTY2OTQyMDgwMDI1OUNBMSAvKiBJbnNw
ZWN0b3JJbnB1dEFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDREMjczQ0Y3MTY2OTQyMDgwMDI1OUNBMSAvKiBJbnNwZWN0b3JJbnB1dEFnZW50
LmNwcCAqLzsgfTsKQEAgLTM2NDYsOCArMzY0NSw4IEBACiAJCTk3N0UyRENEMTJGMEUyODMwMEMx
MzM3OSAvKiBIVE1MU291cmNlVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NzdFMkRDQjEyRjBFMjgzMDBDMTMzNzkgLyogSFRNTFNvdXJj
ZVRyYWNrZXIuY3BwICovOyB9OwogCQk5NzdFMkRDRTEyRjBFMjgzMDBDMTMzNzkgLyogSFRNTFNv
dXJjZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3N0UyRENDMTJGMEUyODMwMEMxMzM3OSAvKiBIVE1MU291cmNlVHJhY2tlci5oICovOyB9
OwogCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzdFMkUwQjEyRjBGQzlDMDBD
MTMzNzkgLyogWFNTQXVkaXRvci5jcHAgKi87IH07Ci0JCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3
OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NzdFMkUwQzEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5oICovOyB9Owog
CQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzODAgLyogWFNTQXVkaXRvckRlbGVnYXRlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3N0UyRTBCMTJGMEZD
OUMwMEMxMzM4MCAvKiBYU1NBdWRpdG9yRGVsZWdhdGUuY3BwICovOyB9OworCQk5NzdFMkUwRjEy
RjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTc3RTJFMEMxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0
b3IuaCAqLzsgfTsKIAkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzgwIC8qIFhTU0F1ZGl0b3JEZWxl
Z2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc3
RTJFMEMxMkYwRkM5QzAwQzEzMzgwIC8qIFhTU0F1ZGl0b3JEZWxlZ2F0ZS5oICovOyB9OwogCQk5
NzhBRDY3NDE0MTMwQThEMDBDN0NBRTMgLyogSFRNTFNwYW5FbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OEFENjcxMTQxMzBBOEQwMEM3
Q0FFMyAvKiBIVE1MU3BhbkVsZW1lbnQuY3BwICovOyB9OwogCQk5NzhBRDY3NTE0MTMwQThEMDBD
N0NBRTMgLyogSFRNTFNwYW5FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NzhBRDY3MjE0MTMwQThEMDBDN0NBRTMgLyogSFRNTFNwYW5FbGVt
ZW50LmggKi87IH07CkBAIC01OTcxLDYgKzU5NzAsNyBAQAogCQlDQ0MyQjUxNjE1RjYxMzA2MDA0
OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0NDMkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRy
b2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDRDEyN0RFRDE0RjMwOTdEMDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RFQjE0
RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0gKi87IH07CiAJCUNE
MTI3REVFMTRGMzA5ODQwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxMjdERUExNEYzMDk3
OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QxQjRBNjUxNjA3ODZBRTAwMjgyREY5
IC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEQzIxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVl
ZGVkRXZlbnQuY3BwICovOyB9OwogCQlDRDFFNzM0NzE2N0JDNzhFMDA5QTg4NUQgLyogVGV4dFRy
YWNrUmVwcmVzZW50YXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0QxRTczNDYxNjdCQzc4RTAwOUE4ODVEIC8qIFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uLmNwcCAqLzsgfTsKIAkJQ0QyN0Y2RTUxNDU3Njg1QTAwNzgyMDdEIC8qIEpTTWVkaWFD
b250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEMjdGNkUyMTQ1NzY3NTgwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAgKi87
IH07CiAJCUNEMjdGNkU3MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTYxNDU3
NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgKi87IH07CkBAIC01OTgzLDEwICs1
OTgzLDIwIEBACiAJCUNEODIwMzBEMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0Q4MjAzMDkxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gKi87IH07CiAJCUNEODIwMzEwMTM5NUFDRTcwMEY5
NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dB
bmltYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDRDgyMDMxMTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4MjAzMEYxMzk1
QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSAqLzsgfTsKKwkJQ0RBOThEQTMx
NjAxNDY0MTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OEQ5QjE2MDEyOEE1MDBGRUEzQjEgLyog
SlNNZWRpYUtleUVycm9yLmNwcCAqLzsgfTsKKwkJQ0RBOThERDgxNjAyNUJFRjAwRkVBM0IxIC8q
IE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEQTk4REQ1MTYwMjVCRUQwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3Nh
Z2VFdmVudC5jcHAgKi87IH07CisJCUNEQTk4RERGMTYwMjZBMzcwMEZFQTNCMSAvKiBKU01lZGlh
S2V5TWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEQTk4RERCMTYwMjZBMTgwMEZFQTNCMSAvKiBKU01lZGlhS2V5TWVzc2FnZUV2
ZW50LmNwcCAqLzsgfTsKKwkJQ0RBOThERTAxNjAyNkEzNzAwRkVBM0IxIC8qIEpTTWVkaWFLZXlO
ZWVkZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREE5OERERDE2MDI2QTE5MDBGRUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmNw
cCAqLzsgfTsKKwkJQ0RBOThFMDQxNjAzOUUxQTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTk4RENFMTYw
MTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5cy5jcHAgKi87IH07CisJCUNEQTk4RTA2MTYwMzlF
MUYwMEZFQTNCMSAvKiBKU01lZGlhS2V5U2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OEREMDE2MDE1OTc5MDBGRUEzQjEgLyogSlNN
ZWRpYUtleVNlc3Npb24uY3BwICovOyB9OworCQlDREE5OEUwQjE2MDNDRDYwMDBGRUEzQjEgLyog
Q0RNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
QTk4RTA5MTYwM0NENTkwMEZFQTNCMSAvKiBDRE0uY3BwICovOyB9OworCQlDREE5OEUwRDE2MDNG
RTRBMDBGRUEzQjEgLyogTWVkaWFLZXlzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQTk4RENBMTYwMTUwOEEwMEZFQTNCMSAvKiBNZWRpYUtleXMu
Y3BwICovOyB9OworCQlDREE5OEUwRTE2MDNGRTU4MDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTk4
REM3MTYwMTRGMkMwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uY3BwICovOyB9OwogCQlDREFB
OEQwQTE0RDcxQjJFMDA2MUVBNjAgLyogUGxhdGZvcm1DbG9ja0NNLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQThEMDgxNEQzODU2MDAwNjFFQTYw
IC8qIFBsYXRmb3JtQ2xvY2tDTS5tbSAqLzsgfTsKIAkJQ0RCODU5RjcxNjBENDhBNDAwRTVCMDdG
IC8qIE1lZGlhS2V5RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RCODU5RjQxNjBENDg5OTAwRTVCMDdGIC8qIE1lZGlhS2V5RXZlbnQuY3Bw
ICovOyB9OwogCQlDREI4NTlGQTE2MEQ0OTQ5MDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQjg1OUY4
MTYwRDQ5M0UwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXZlbnQuY3BwICovOyB9OwotCQlDREI4NTlG
QjE2MEQ0OTRGMDBFNUIwN0YgLyogSlNNZWRpYUtleUVycm9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQjg1OUYwMTYwRDQyREQwMEU1QjA3RiAv
KiBKU01lZGlhS2V5RXJyb3IuY3BwICovOyB9OworCQlDREMyNkI0MDE2MEE4Q0M2MDAyNjc1N0Ig
LyogTW9ja0NETS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREMyNkIzQzE2MEE2MkIwMDAyNjc1N0IgLyogTW9ja0NETS5jcHAgKi87IH07CisJCUNE
QzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBNb2NrQ0RNLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREMyNkIzRDE2MEE2MkIwMDAyNjc1N0IgLyogTW9j
a0NETS5oICovOyB9OwogCQlDREM2OURENjE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxT
Y3JlZW5XYXJuaW5nVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RDNjlERDQxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2Fy
bmluZ1ZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDREM2OURENzE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5n
Vmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
QzY5REQ1MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lm1t
ICovOyB9OwogCQlDREM2OUREQTE2MzcxRkQ0MDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5Q
bGFjZWhvbGRlclZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQzY5REQ4MTYzNzFGRDMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlblBsYWNl
aG9sZGVyVmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xMTA1MSw4ICsxMTA2MSw4IEBACiAJCTk3N0UyRENCMTJGMEUyODMwMEMxMzM3OSAv
KiBIVE1MU291cmNlVHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBIVE1MU291cmNlVHJhY2tlci5jcHA7IHBhdGggPSBwYXJzZXIvSFRNTFNvdXJjZVRyYWNr
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzdFMkRDQzEyRjBFMjgzMDBD
MTMzNzkgLyogSFRNTFNvdXJjZVRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gSFRNTFNvdXJjZVRyYWNrZXIuaDsgcGF0aCA9IHBhcnNlci9IVE1MU291cmNlVHJhY2tl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzdFMkUwQjEyRjBGQzlDMDBDMTMz
NzkgLyogWFNTQXVkaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBYU1NBdWRpdG9yLmNwcDsgcGF0aCA9IHBhcnNlci9YU1NBdWRpdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTc3RTJFMEMxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWFNTQXVkaXRvci5oOyBwYXRo
ID0gcGFyc2VyL1hTU0F1ZGl0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc3
RTJFMEIxMkYwRkM5QzAwQzEzMzgwIC8qIFhTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBYU1NBdWRpdG9yRGVsZWdhdGUuY3BwOyBwYXRo
ID0gcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk3N0UyRTBDMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFhTU0F1ZGl0b3IuaDsgcGF0aCA9IHBhcnNlci9YU1NB
dWRpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3N0UyRTBDMTJGMEZDOUMw
MEMxMzM4MCAvKiBYU1NBdWRpdG9yRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gWFNTQXVkaXRvckRlbGVnYXRlLmg7IHBhdGggPSBwYXJzZXIvWFNTQXVkaXRvckRl
bGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OEFENjcxMTQxMzBBOEQw
MEM3Q0FFMyAvKiBIVE1MU3BhbkVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSFRNTFNwYW5FbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTc4QUQ2NzIxNDEzMEE4RDAwQzdDQUUzIC8qIEhUTUxTcGFuRWxlbWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MU3BhbkVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNTMzLDEwICsxMzU0MywzMyBAQAogCQlDRDgyMDMwOTEz
OTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViV2luZG93QW5pbWF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5k
b3dBbmltYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJXaW5kb3dBbmltYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4
RDlCMTYwMTI4QTUwMEZFQTNCMSAvKiBKU01lZGlhS2V5RXJyb3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYUtleUVycm9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEOUMxNjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlF
cnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhS2V5RXJyb3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQzIxNjAxNEVFRTAwRkVBM0Ix
IC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTWVkaWFLZXlOZWVkZWRFdmVudC5jcHA7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREE5OERDMzE2MDE0RUVFMDBGRUEzQjEgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYUtleU5lZWRlZEV2ZW50Lmg7IHBh
dGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQzQxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlh
S2V5TmVlZGVkRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE1lZGlhS2V5TmVlZGVk
RXZlbnQuaWRsOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2
ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQzcxNjAxNEYyQzAw
RkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBNZWRpYUtleVNlc3Npb24uY3BwOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REE5OERDODE2MDE0RjJDMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGlhS2V5U2Vzc2lvbi5oOyBwYXRoID0gTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBOThEQzkxNjAxNEY0MDAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBuYW1lID0gTWVkaWFLZXlTZXNzaW9uLmlkbDsgcGF0aCA9IE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBOThEQ0ExNjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBNZWRpYUtleXMuY3BwOyBwYXRoID0gTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREE5OERDQjE2MDE1MDhBMDBGRUEzQjEgLyogTWVkaWFLZXlzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGlhS2V5cy5oOyBwYXRoID0gTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
OThEQ0MxNjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBu
YW1lID0gTWVkaWFLZXlzLmlkbDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQ0UxNjAxNTk3OTAw
RkVBM0IxIC8qIEpTTWVkaWFLZXlzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTTWVkaWFLZXlzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
OThEQ0YxNjAxNTk3OTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFLZXlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQTk4REQwMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5U2Vzc2lvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5U2Vzc2lvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REQxMTYwMTU5NzkwMEZFQTNCMSAv
KiBKU01lZGlhS2V5U2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U01lZGlhS2V5U2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERE
NTE2MDI1QkVEMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwOyBwYXRo
ID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REQ2MTYwMjVCRUQwMEZFQTNCMSAvKiBNZWRp
YUtleU1lc3NhZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRp
YUtleU1lc3NhZ2VFdmVudC5oOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eU1lc3NhZ2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERENzE2
MDI1QkVFMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgbmFtZSA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREE5OEREQjE2MDI2QTE4MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEREMxNjAyNkExOTAwRkVBM0IxIC8qIEpT
TWVkaWFLZXlNZXNzYWdlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUtleU1lc3NhZ2VF
dmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERERDE2MDI2QTE5MDBG
RUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
TWVkaWFLZXlOZWVkZWRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QTk4RERFMTYwMjZBMTkwMEZFQTNCMSAvKiBKU01lZGlhS2V5TmVlZGVkRXZlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNNZWRpYUtleU5lZWRlZEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQTk4RTA5MTYwM0NENTkwMEZFQTNCMSAvKiBDRE0uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQ0RNLmNwcDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThFMEExNjAzQ0Q1OTAwRkVBM0IxIC8qIENE
TS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBDRE0uaDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RTBDMTYwM0NGM0MwMEZF
QTNCMSAvKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQUE4RDA3MTREMzg1NjAwMDYxRUE2MCAv
KiBQbGF0Zm9ybUNsb2NrQ00uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxh
dGZvcm1DbG9ja0NNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQUE4RDA4MTRE
Mzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybUNsb2NrQ00ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUNEQjg1OUYwMTYwRDQyREQwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXJyb3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYUtleUVycm9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0RCODU5RjExNjBENDJERDAwRTVC
MDdGIC8qIEpTTWVkaWFLZXlFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU01lZGlhS2V5RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCODU5
RjIxNjBENDg5OTAwRTVCMDdGIC8qIE1lZGlhS2V5RXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVkaWFLZXlFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDREI4NTlGMzE2MEQ0ODk5MDBFNUIwN0YgLyogTWVkaWFLZXlFcnJvci5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFLZXlFcnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNEQjg1OUY0MTYwRDQ4OTkwMEU1QjA3RiAvKiBNZWRpYUtleUV2ZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhS2V5RXZlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM1NDUsNiArMTM1NzgsOCBAQAogCQlDREI4
NTlGODE2MEQ0OTNFMDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFLZXlFdmVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEQjg1OUY5MTYwRDQ5M0UwMEU1QjA3RiAvKiBKU01lZGlhS2V5
RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUtleUV2ZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQkQ5M0JBMTMzM0JENEIwMDI1NzBF
MyAvKiBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0g
ZnVsbHNjcmVlblF1aWNrVGltZS5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QzI2QjNDMTYwQTYyQjAwMDI2NzU3QiAvKiBNb2NrQ0RNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1vY2tDRE0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREMyNkIzRDE2MEE2
MkIwMDAyNjc1N0IgLyogTW9ja0NETS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ0RNLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzY5REQ0MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJD
b3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RDNjlERDUxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2Fy
bmluZ1ZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJD
b3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDREM2OUREODE2MzcxRkQzMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRl
clZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZUZ1bGxTY3Jl
ZW5QbGFjZWhvbGRlclZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0Nzc2
LDYgKzE0ODExLDcgQEAKIAkJMTRERkIzM0YwQTdERjc2MzAwMThGNzY5IC8qIERlcml2ZWQgU291
cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0RB
OThEQ0QxNjAxNTE1QzAwRkVBM0IxIC8qIEVuY3J5cHRlZE1lZGlhICovLAogCQkJCUE4M0I3OTEw
MENDQjAwMUIwMDBCMDgyNSAvKiBDb3JlICovLAogCQkJCUE4M0I3OTBFMENDQUZGOTcwMDBCMDgy
NSAvKiBDU1MgKi8sCiAJCQkJQTgzQjc5MTIwQ0NCMDAzRjAwMEIwODI1IC8qIEV2ZW50cyAqLywK
QEAgLTE1NDgwLDYgKzE1NTE2LDggQEAKIAkJCQlBN0JFN0VERTE0QzkxNzVBMDAxNDQ4OUQgLyog
TWFsbG9jU3RhdGlzdGljcy5pZGwgKi8sCiAJCQkJRUIwODFDRDgxNjk2MDg0NDAwNTUzNzMwIC8q
IFR5cGVDb252ZXJzaW9ucy5oICovLAogCQkJCUVCMDgxQ0Q5MTY5NjA4NDQwMDU1MzczMCAvKiBU
eXBlQ29udmVyc2lvbnMuaWRsICovLAorCQkJCUNEQzI2QjNDMTYwQTYyQjAwMDI2NzU3QiAvKiBN
b2NrQ0RNLmNwcCAqLywKKwkJCQlDREMyNkIzRDE2MEE2MkIwMDAyNjc1N0IgLyogTW9ja0NETS5o
ICovLAogCQkJKTsKIAkJCXBhdGggPSB0ZXN0aW5nOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTE4MjE5LDYgKzE4MjU3LDcgQEAKIAkJOTcxMTQ1RkUxNEVGMDA2RTAwNjc0RkQ5IC8q
IE1vZHVsZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CUNEQTk4REJEMTYwMTRFMDgwMEZFQTNCMSAvKiBlbmNyeXB0ZWRtZWRpYSAqLywKIAkJCQk5NzEx
NDVGRjE0RUYwMDc5MDA2NzRGRDkgLyogZ2VvbG9jYXRpb24gKi8sCiAJCQkJOTcxMkE1NTMxNTAw
NEUzQzAwNDhBRjEwIC8qIGluZGV4ZWRkYiAqLywKIAkJCQlCMUE5NDJERDE1QjVDRTIyMDBENTI1
RDEgLyogbWVkaWFzb3VyY2UgKi8sCkBAIC0xODk2Nyw4ICsxOTAwNiw2IEBACiAJCQkJQ0QyN0Y2
RTMxNDU3Njc1ODAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmggKi8sCiAJCQkJRTQ0NjE0
MTAwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVkaWFFcnJvci5jcHAgKi8sCiAJCQkJRTQ0NjE0MTEw
Q0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVkaWFFcnJvci5oICovLAotCQkJCUNEQjg1OUYwMTYwRDQy
REQwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXJyb3IuY3BwICovLAotCQkJCUNEQjg1OUYxMTYwRDQy
REQwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXJyb3IuaCAqLywKIAkJCQlDREI4NTlGODE2MEQ0OTNF
MDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmNwcCAqLywKIAkJCQlDREI4NTlGOTE2MEQ0OTNF
MDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmggKi8sCiAJCQkJMTA1OTQ1NzUxNUI0MkEwRDAw
NEQzN0ZEIC8qIEpTTWljcm9EYXRhSXRlbVZhbHVlLmNwcCAqLywKQEAgLTIxNTI1LDYgKzIxNTYy
LDQ1IEBACiAJCQluYW1lID0gYXVkaW87CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9
OworCQlDREE5OERCRDE2MDE0RTA4MDBGRUEzQjEgLyogZW5jcnlwdGVkbWVkaWEgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUNEQTk4REQ1MTYwMjVCRUQw
MEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgKi8sCisJCQkJQ0RBOThERDYxNjAy
NUJFRDAwRkVBM0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmggKi8sCisJCQkJQ0RBOThERDcx
NjAyNUJFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbCAqLywKKwkJCQlDREE5
OERDMjE2MDE0RUVFMDBGRUEzQjEgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgKi8sCisJCQkJ
Q0RBOThEQzMxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuaCAqLywKKwkJ
CQlDREE5OERDNDE2MDE0RUVFMDBGRUEzQjEgLyogTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwgKi8s
CisJCQkJQ0RBOThEQ0ExNjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgKi8sCisJCQkJ
Q0RBOThEQ0IxNjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5oICovLAorCQkJCUNEQTk4REND
MTYwMTUwOEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuaWRsICovLAorCQkJCUNEQTk4REM3MTYwMTRG
MkMwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uY3BwICovLAorCQkJCUNEQTk4REM4MTYwMTRG
MkMwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uaCAqLywKKwkJCQlDREE5OERDOTE2MDE0RjQw
MDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmlkbCAqLywKKwkJCQlDREE5OEUwOTE2MDNDRDU5
MDBGRUEzQjEgLyogQ0RNLmNwcCAqLywKKwkJCQlDREE5OEUwQTE2MDNDRDU5MDBGRUEzQjEgLyog
Q0RNLmggKi8sCisJCQkJQ0RBOThFMEMxNjAzQ0YzQzAwRkVBM0IxIC8qIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNUHJpdmF0ZS5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBlbmNyeXB0ZWRtZWRp
YTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUNEQTk4RENEMTYwMTUxNUMw
MEZFQTNCMSAvKiBFbmNyeXB0ZWRNZWRpYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQ0RBOThEOUIxNjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlF
cnJvci5jcHAgKi8sCisJCQkJQ0RBOThEOUMxNjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlF
cnJvci5oICovLAorCQkJCUNEQTk4RERCMTYwMjZBMTgwMEZFQTNCMSAvKiBKU01lZGlhS2V5TWVz
c2FnZUV2ZW50LmNwcCAqLywKKwkJCQlDREE5OEREQzE2MDI2QTE5MDBGRUEzQjEgLyogSlNNZWRp
YUtleU1lc3NhZ2VFdmVudC5oICovLAorCQkJCUNEQTk4REREMTYwMjZBMTkwMEZFQTNCMSAvKiBK
U01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwICovLAorCQkJCUNEQTk4RERFMTYwMjZBMTkwMEZFQTNC
MSAvKiBKU01lZGlhS2V5TmVlZGVkRXZlbnQuaCAqLywKKwkJCQlDREE5OERDRTE2MDE1OTc5MDBG
RUEzQjEgLyogSlNNZWRpYUtleXMuY3BwICovLAorCQkJCUNEQTk4RENGMTYwMTU5NzkwMEZFQTNC
MSAvKiBKU01lZGlhS2V5cy5oICovLAorCQkJCUNEQTk4REQwMTYwMTU5NzkwMEZFQTNCMSAvKiBK
U01lZGlhS2V5U2Vzc2lvbi5jcHAgKi8sCisJCQkJQ0RBOThERDExNjAxNTk3OTAwRkVBM0IxIC8q
IEpTTWVkaWFLZXlTZXNzaW9uLmggKi8sCisJCQkpOworCQkJbmFtZSA9IEVuY3J5cHRlZE1lZGlh
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJREY5QUZENkYxM0ZDMzFCMDAw
MTVGRUI3IC8qIG9iamMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KApAQCAtMjI5NDEsNiArMjMwMTcsNyBAQAogCQkJCUE3NDBCNTk1MTRDOTM1QUIwMEE3N0ZBNCAv
KiBKU01hbGxvY1N0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUVCRjUxMjFEMTY5NjQ5
NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4
MTVDMUYxMzgzMTk4MzAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQ0RDMjZCNDExNjBBOENDRTAwMjY3NTdCIC8qIE1vY2tDRE0uaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMjY2NjIsNiArMjY3MzksNyBAQAogCQkJCUE3NDBCNTk3MTRDOTM1QUYwMEE3N0ZB
NCAvKiBKU01hbGxvY1N0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRUJGNTEyMUMx
Njk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxODE1QzFFMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQ0RDMjZCNDAxNjBBOENDNjAwMjY3NTdCIC8qIE1vY2tDRE0uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yODEyMSw3ICsyODE5OSw2IEBACiAJCQkJQ0QyN0Y2RTUxNDU3
Njg1QTAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUZEMjNBMTI1MTNGNUZBNTkwMEY2NzAwMSAvKiBKU01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTQxODBDRDY4MjY5MDBGQURBNzUgLyogSlNN
ZWRpYUVycm9yLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUNEQjg1OUZCMTYwRDQ5NEYwMEU1QjA3
RiAvKiBKU01lZGlhS2V5RXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCODU5RkExNjBE
NDk0OTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzNDMzlCNjBDMEQzRDhEMDA1RjREN0EgLyogSlNNZWRpYUxpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQ2NEUwNkMxMzVFQzEwNjAwRkRCMDBBIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjk0OTcsNiArMjk1NzQsMTYgQEAKIAkJCQk5NzdFMkUwRTEyRjBG
QzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUw
RTEyRjBGQzlDMDBDMTMzODAgLyogWFNTQXVkaXRvckRlbGVnYXRlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlDREE5OERBMzE2MDE0NjQxMDBGRUEzQjEgLyogSlNNZWRpYUtleUVycm9yLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4REQ4MTYwMjVCRUYwMEZFQTNCMSAvKiBNZWRpYUtl
eU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OERERjE2MDI2QTM3MDBG
RUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlD
REE5OERFMDE2MDI2QTM3MDBGRUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUNEQTk4RTA0MTYwMzlFMUEwMEZFQTNCMSAvKiBKU01lZGlhS2V5cy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OEUwNjE2MDM5RTFGMDBGRUEzQjEgLyogSlNNZWRp
YUtleVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVB
M0IxIC8qIENETS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OEUwRDE2MDNGRTRBMDBGRUEz
QjEgLyogTWVkaWFLZXlzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4RTBFMTYwM0ZFNTgw
MEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QxQjRB
NjUxNjA3ODZBRTAwMjgyREY5IC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbiBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCmluZGV4IGMyNjkzZGE5NmZhZWQ5ODdlNDM3NzMx
YjVmYzc2MTEyZmY3NDNlNGQuLjZiMzQ3YmU4OWQ1ZGY3MDNjOWQ3YTY0MDY3NjJhY2M3ZTI1ZjY2
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCkBAIC01MCw1ICs1MCw3IEBAIERldmljZU9y
aWVudGF0aW9uRXZlbnQgY29uZGl0aW9uYWw9REVWSUNFX09SSUVOVEFUSU9OCiBEZXZpY2VQcm94
aW1pdHlFdmVudCBjb25kaXRpb25hbD1QUk9YSU1JVFlfRVZFTlRTCiBPcmllbnRhdGlvbkV2ZW50
IGludGVyZmFjZU5hbWU9RXZlbnQsIGNvbmRpdGlvbmFsPU9SSUVOVEFUSU9OX0VWRU5UUwogTWVk
aWFLZXlFdmVudCBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUEKK01lZGlhS2V5TWVzc2FnZUV2
ZW50IGNvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMgorTWVkaWFLZXlOZWVkZWRFdmVudCBj
b25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIKIFRyYWNrRXZlbnQgY29uZGl0aW9uYWw9VklE
RU9fVFJBQ0sKIEF1dG9jb21wbGV0ZUVycm9yRXZlbnQgY29uZGl0aW9uYWw9UkVRVUVTVF9BVVRP
Q09NUExFVEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IDI0
MzY4NWE3ODkxMmRiNDc4Njk0MTU0ODFjNzg4NWE4YjI2MDdiZjYuLjNkYmQ3YjkxZTNmNmJhY2Fi
MGMwYjQwNmI1ZWEyZDhiZjQyMjFlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
RmFjdG9yeS5pbgpAQCAtMTQsNiArMTQsNyBAQCBJREJSZXF1ZXN0IGNvbmRpdGlvbmFsPUlOREVY
RURfREFUQUJBU0UKIElEQlRyYW5zYWN0aW9uIGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UK
IFNjcmlwdFByb2Nlc3Nvck5vZGUgY29uZGl0aW9uYWw9V0VCX0FVRElPCiBMb2NhbE1lZGlhU3Ry
ZWFtIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQorTWVkaWFLZXlTZXNzaW9uIGNvbmRpdGlvbmFs
PUVOQ1JZUFRFRF9NRURJQV9WMgogTWVkaWFDb250cm9sbGVyIGNvbmRpdGlvbmFsPVZJREVPCiBN
ZWRpYVNvdXJjZSBjb25kaXRpb25hbD1NRURJQV9TT1VSQ0UKIE1lZGlhU3RyZWFtIGNvbmRpdGlv
bmFsPU1FRElBX1NUUkVBTQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
aW5kZXggNWZiNDg0YzY0YTQwNGNlYmE0MDk4NzU3ZWY5ZjcyNGM0YWUyZTIyZC4uMjI0YWRhZDU3
OTFiYWM1YjBlYTI1ZWUwN2YyYWM0NjMzOWM4NTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xMjUsNiArMTI1LDExIEBACiAjaW5jbHVkZSAiTWVkaWFT
dHJlYW1SZWdpc3RyeS5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1Yy
KQorI2luY2x1ZGUgIk1lZGlhS2V5TmVlZGVkRXZlbnQuaCIKKyNpbmNsdWRlICJNZWRpYUtleXMu
aCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0xOTY2LDYgKzE5NzEsMjUgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
cktleU5lZWRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGUKIH0KICNlbmRp
ZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBVaW50OEFycmF5KiBpbml0RGF0
YSkKK3sKKyAgICBNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCBpbml0aWFsaXplcjsKKyAgICBpbml0
aWFsaXplci5pbml0RGF0YSA9IGluaXREYXRhOworICAgIGluaXRpYWxpemVyLmJ1YmJsZXMgPSBm
YWxzZTsKKyAgICBpbml0aWFsaXplci5jYW5jZWxhYmxlID0gZmFsc2U7CisKKyAgICBSZWZQdHI8
RXZlbnQ+IGV2ZW50ID0gTWVkaWFLZXlOZWVkZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53
ZWJraXRuZWVka2V5RXZlbnQsIGluaXRpYWxpemVyKTsKKyAgICBldmVudC0+c2V0VGFyZ2V0KHRo
aXMpOworICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQucmVsZWFzZSgp
KTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUtleXMoTWVkaWFLZXlzKiBt
ZWRpYUtleXMpCit7CisgICAgbV9tZWRpYUtleXMgPSBtZWRpYUtleXM7Cit9CisjZW5kaWYKKwog
dm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpwcm9ncmVzc0V2ZW50VGltZXJGaXJlZChUaW1lcjxIVE1M
TWVkaWFFbGVtZW50PiopCiB7CiAgICAgQVNTRVJUKG1fcGxheWVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZTUyY2U0MWI0MmEzNDZkMDkwZjE2OWNhN2Y3ZDM1
ZmMxNTUwOWUyOC4uYjE4NDA4NTcyNmQ5ZmE4ZmE2NWUwOGViOGNjZGEwMjYxYmQyNTJkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTY3LDYgKzY3LDkgQEAgY2xh
c3MgV2lkZ2V0OwogI2lmIFBMQVRGT1JNKE1BQykKIGNsYXNzIERpc3BsYXlTbGVlcERpc2FibGVy
OwogI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKK2NsYXNzIE1lZGlhS2V5
czsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogY2xhc3MgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZTsKQEAgLTE4OCw5ICsxOTEsMTYgQEAgcHVibGljOgogICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0a2V5YWRkZWQpOwogICAgIERFRklORV9BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIod2Via2l0a2V5ZXJyb3IpOwogICAgIERFRklORV9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIod2Via2l0a2V5bWVzc2FnZSk7CisjZW5kaWYKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQogICAgIERFRklORV9B
VFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0bmVlZGtleSk7CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUFfVjIpCisgICAgTWVkaWFLZXlzKiBtZWRpYUtleXMoKSBjb25z
dCB7IHJldHVybiBtX21lZGlhS2V5cy5nZXQoKTsgfQorICAgIHZvaWQgc2V0TWVkaWFLZXlzKE1l
ZGlhS2V5cyopOworI2VuZGlmCisKIC8vIGNvbnRyb2xzCiAgICAgYm9vbCBjb250cm9scygpIGNv
bnN0OwogICAgIHZvaWQgc2V0Q29udHJvbHMoYm9vbCk7CkBAIC00NDUsNiArNDU1LDEwIEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVy
KiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25z
dCB1bnNpZ25lZCBjaGFyKiBpbml0RGF0YSwgdW5zaWduZWQgaW5pdERhdGFMZW5ndGgpIE9WRVJS
SURFOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChNZWRpYVBsYXllciosIFVpbnQ4QXJyYXkqKTsK
KyNlbmRpZgorCiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJSZWZlcnJlcigpIGNvbnN0
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyVXNlckFnZW50KCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBDT1JTTW9kZSBtZWRpYVBsYXllckNPUlNNb2RlKCkg
Y29uc3QgT1ZFUlJJREU7CkBAIC03MDYsNiArNzIwLDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
ICAgIGZyaWVuZCBjbGFzcyBUcmFja0Rpc3BsYXlVcGRhdGVTY29wZTsKKworI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUFfVjIpCisgICAgUmVmUHRyPE1lZGlhS2V5cz4gbV9tZWRpYUtleXM7Cisj
ZW5kaWYKIH07CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmlkbAppbmRleCAyZWNlNWFjYWE1YWRhMzI4NWVjMzg3OTM0MmZhODFi
Mjc5MDU4M2JlLi41ZWJmNDQ3MGJiYzBkNmNlNTg2MmJhZDE5Y2RiNjRhNGNhZjU1ODlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKQEAgLTQ1LDcgKzQ1LDkgQEAg
YXR0cmlidXRlIERPTVN0cmluZyBwcmVsb2FkOwogcmVhZG9ubHkgYXR0cmlidXRlIFRpbWVSYW5n
ZXMgYnVmZmVyZWQ7CiB2b2lkIGxvYWQoKTsKICNpZiBkZWZpbmVkKEVOQUJMRV9FTkNSWVBURURf
TUVESUEpICYmIEVOQUJMRV9FTkNSWVBURURfTUVESUEKLURPTVN0cmluZyBjYW5QbGF5VHlwZShp
biBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgdHlwZSwgaW4gW09wdGlv
bmFsPURlZmF1bHRJc1VuZGVmaW5lZCwgVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRl
ZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcga2V5U3lzdGVtKTsKKyAgICBET01TdHJpbmcg
Y2FuUGxheVR5cGUoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHR5
cGUsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWQsIFRyZWF0TnVsbEFzPU51bGxTdHJp
bmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIGtleVN5c3RlbSk7Cisj
ZWxpZiBkZWZpbmVkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICYmIEVOQUJMRV9FTkNSWVBU
RURfTUVESUFfVjIKKyAgICBET01TdHJpbmcgY2FuUGxheVR5cGUoaW4gW09wdGlvbmFsPURlZmF1
bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHR5cGUsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRl
ZmluZWQsIFRyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmlu
Z10gRE9NU3RyaW5nIGtleVN5c3RlbSk7CiAjZWxzZQogRE9NU3RyaW5nIGNhblBsYXlUeXBlKGlu
IFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0eXBlKTsKICNlbmRpZgpA
QCAtMTAxLDEwICsxMDMsMTMgQEAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb25kaXRpb25hbD1NRURJ
QV9TVEFUSVNUSUNTXSB1bnNpZ25lZCBsb25nIHdlYmtpdFZpZGVvRGVjb2QKIFtWOEVuYWJsZWRB
dFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIHZvaWQgd2Via2l0Q2FuY2VsS2V5UmVxdWVzdChpbiBb
VHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01T
dHJpbmcga2V5U3lzdGVtLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzTnVsbFN0cmluZ10gRE9NU3Ry
aW5nIHNlc3Npb25JZCkKICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKLVtWOEVuYWJsZWRB
dFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ud2Via2l0
a2V5YWRkZWQ7Ci1hdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0g
RXZlbnRMaXN0ZW5lciBvbndlYmtpdGtleWVycm9yOwotYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1
bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXltZXNzYWdlOwot
YXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVu
ZXIgb253ZWJraXRuZWVka2V5OworICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPWVu
Y3J5cHRlZE1lZGlhXSBFdmVudExpc3RlbmVyIG9ud2Via2l0a2V5YWRkZWQ7CisgICAgYXR0cmli
dXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253
ZWJraXRrZXllcnJvcjsKKyAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0
ZWRNZWRpYV0gRXZlbnRMaXN0ZW5lciBvbndlYmtpdGtleW1lc3NhZ2U7CisjZW5kaWYKKyAgICBh
dHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQXxFTkNSWVBURURfTUVESUFfVjIs
IFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gRXZlbnRMaXN0ZW5lciBvbndlYmtp
dG5lZWRrZXk7CisjaWYgZGVmaW5lZChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAmJiBFTkFC
TEVfRU5DUllQVEVEX01FRElBX1YyCisgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9
ZW5jcnlwdGVkTWVkaWFdIE1lZGlhS2V5cyBtZWRpYUtleXM7CiAjZW5kaWYKIAogI2lmIGRlZmlu
ZWQoRU5BQkxFX1ZJREVPX1RSQUNLKSAmJiBFTkFCTEVfVklERU9fVFJBQ0sKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUVycm9yLmgKaW5kZXggOTBmNDQ3ZjA1ZTVhNGYwY2FkMTRiNWM0MjliZmJmZThjODcwZDMw
NC4uYjBiZjVmNzY1ZDVhMzg2NjY3OThiMDQ5MzU3NWIyYTA2NDAyMThkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUVycm9yLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgICAgICBNRURJQV9F
UlJfTkVUV09SSywKICAgICAgICAgTUVESUFfRVJSX0RFQ09ERSwKICAgICAgICAgTUVESUFfRVJS
X1NSQ19OT1RfU1VQUE9SVEVECi0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQogICAgICAg
ICAsIE1FRElBX0VSUl9FTkNSWVBURUQKICNlbmRpZgogICAgIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUVycm9yLmlkbAppbmRleCBlMmNkMjcxNDNjY2E1YTdiYzc1NDg4Yzg1NjFkOTY1M2YwOTQ3MWJk
Li43MzM3NDQ0NDZiMDFjMjEyYzU0NWYyZTA2N2JhODE2MWY4NjdjMDI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFFcnJvci5pZGwKQEAgLTIzLDE1ICsyMywxNSBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAg
Ki8KIAotWworaW50ZXJmYWNlIFsKICAgICBDb25kaXRpb25hbD1WSURFTywKICAgICBJbXBsZW1l
bnRhdGlvbkxhY2tzVlRhYmxlCi1dIGludGVyZmFjZSBNZWRpYUVycm9yIHsKK10gTWVkaWFFcnJv
ciB7CiAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfQUJPUlRFRCA9IDE7CiAg
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfTkVUV09SSyA9IDI7CiAgICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfREVDT0RFID0gMzsKICAgICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0IE1FRElBX0VSUl9TUkNfTk9UX1NVUFBPUlRFRCA9IDQ7Ci0jaWYgZGVmaW5l
ZChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEVfRU5DUllQVEVEX01FRElBCisjaWYg
KGRlZmluZWQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFX0VOQ1JZUFRFRF9NRURJ
QSkgfHwgKGRlZmluZWQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJiYgRU5BQkxFX0VOQ1JZ
UFRFRF9NRURJQV9WMikKICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0VSUl9FTkNS
WVBURUQgPSA1OwogI2VuZGlmCiAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hv
cnQgY29kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFcnJvci5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUVycm9yLmgKaW5kZXggMTJjNzM2ZDQ4N2Ez
ZjRjMDcxNjViNGM2NTI4ZWZkOTk5Y2Y3NWRlMi4uNDllMzg0M2UzMjhiMzkwODc4ZTY1ZTEyYzEx
ZTA2OTVkOTcxOGQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUVy
cm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUVycm9yLmgKQEAgLTI2LDcg
KzI2LDcgQEAKICNpZm5kZWYgTWVkaWFLZXlFcnJvcl9oCiAjZGVmaW5lIE1lZGlhS2V5RXJyb3Jf
aAogCi0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQogCiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMzUsNyArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhS2V5RXJyb3IgOiBwdWJsaWMgUmVmQ291
bnRlZDxNZWRpYUtleUVycm9yPiB7CiBwdWJsaWM6Ci0gICAgZW51bSBDb2RlIHsKKyAgICBlbnVt
IHsKICAgICAgICAgTUVESUFfS0VZRVJSX1VOS05PV04gPSAxLAogICAgICAgICBNRURJQV9LRVlF
UlJfQ0xJRU5ULAogICAgICAgICBNRURJQV9LRVlFUlJfU0VSVklDRSwKQEAgLTQzLDE1ICs0Mywx
OCBAQCBwdWJsaWM6CiAgICAgICAgIE1FRElBX0tFWUVSUl9IQVJEV0FSRUNIQU5HRSwKICAgICAg
ICAgTUVESUFfS0VZRVJSX0RPTUFJTgogICAgIH07CisgICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBDb2RlOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFLZXlFcnJvcj4gY3JlYXRlKENv
ZGUgY29kZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhS2V5RXJyb3IoY29kZSkpOyB9Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFLZXlFcnJvcj4gY3JlYXRlKENvZGUgY29kZSwgdW5z
aWduZWQgbG9uZyBzeXN0ZW1Db2RlID0gMCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhS2V5
RXJyb3IoY29kZSwgc3lzdGVtQ29kZSkpOyB9CiAKICAgICBDb2RlIGNvZGUoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGU7IH0KKyAgICB1bnNpZ25lZCBsb25nIHN5c3RlbUNvZGUoKSB7IHJldHVybiBt
X3N5c3RlbUNvZGU7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNZWRpYUtleUVycm9yKENv
ZGUgY29kZSkgOiBtX2NvZGUoY29kZSkgeyB9CisgICAgZXhwbGljaXQgTWVkaWFLZXlFcnJvcihD
b2RlIGNvZGUsIHVuc2lnbmVkIGxvbmcgc3lzdGVtQ29kZSkgOiBtX2NvZGUoY29kZSksIG1fc3lz
dGVtQ29kZShzeXN0ZW1Db2RlKSB7IH0KIAogICAgIENvZGUgbV9jb2RlOworICAgIHVuc2lnbmVk
IGxvbmcgbV9zeXN0ZW1Db2RlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUVycm9yLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFLZXlFcnJvci5pZGwKaW5kZXggZjcyNzlkMzljODgxYjFhZTk3MTQ4MGEz
MjAxNGM5YTY2ZTcxNDQxOS4uOTYzMTU1MTM5MmQ2ZTkyMzJmNGZlNjZiZjY4MDRlYjAyODA5YmM1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUVycm9yLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXJyb3IuaWRsCkBAIC0yMywxMSArMjMsMTEg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLVsKLSAgICBDb25kaXRpb25hbD1FTkNSWVBURURf
TUVESUEsCitpbnRlcmZhY2UgWworICAgIENvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQXxFTkNS
WVBURURfTUVESUFfVjIsCiAgICAgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhLCAK
ICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCi1dIGludGVyZmFjZSBNZWRpYUtleUVycm9y
IHsKK10gTWVkaWFLZXlFcnJvciB7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfS0VZ
RVJSX1VOS05PV04gPSAxOwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0tFWUVSUl9D
TElFTlQgPSAyOwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0tFWUVSUl9TRVJWSUNF
ID0gMzsKQEAgLTM1LDQgKzM1LDUgQEAKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9L
RVlFUlJfSEFSRFdBUkVDSEFOR0UgPSA1OwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElB
X0tFWUVSUl9ET01BSU4gPSA2OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9y
dCBjb2RlOworICAgIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjJdIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHN5c3RlbUNvZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaWRsCmluZGV4IDc3NGQwMjQ1YmIwZTk2NzQzM2NlMjFiMzQ2MmQxMjY0YmU1Y2U2NmEuLjc0
M2VmZmEyZDliNTU1YTVmYzJlNzgxMjE4MTRkOWVlYzUzYjA4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwKQEAgLTQ4Niw2ICs0ODYsMTAgQEAKIAogICAgIFtDb25kaXRpb25hbD1FTkNS
WVBURURfTUVESUEsIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gYXR0cmlidXRl
IE1lZGlhS2V5RXJyb3JDb25zdHJ1Y3RvciBNZWRpYUtleUVycm9yOwogICAgIFtDb25kaXRpb25h
bD1FTkNSWVBURURfTUVESUEsIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gYXR0
cmlidXRlIE1lZGlhS2V5RXZlbnRDb25zdHJ1Y3RvciBNZWRpYUtleUV2ZW50OworICAgIGF0dHJp
YnV0ZSBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyLCBWOEVuYWJsZWRBdFJ1bnRpbWU9
ZW5jcnlwdGVkTWVkaWFdIE1lZGlhS2V5c0NvbnN0cnVjdG9yIE1lZGlhS2V5czsKKyAgICBhdHRy
aWJ1dGUgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMiwgVjhFbmFibGVkQXRSdW50aW1l
PWVuY3J5cHRlZE1lZGlhXSBNZWRpYUtleUVycm9yQ29uc3RydWN0b3IgTWVkaWFLZXlFcnJvcjsK
KyAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMiwgVjhFbmFibGVk
QXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBNZWRpYUtleU1lc3NhZ2VFdmVudENvbnN0cnVjdG9y
IE1lZGlhS2V5TWVzc2FnZUV2ZW50OworICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9RU5DUllQ
VEVEX01FRElBX1YyLCBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIE1lZGlhS2V5
TmVlZGVkRXZlbnRDb25zdHJ1Y3RvciBNZWRpYUtleU5lZWRlZEV2ZW50OwogCiAgICAgW0NvbmRp
dGlvbmFsPVZJREVPX1RSQUNLLCBWOEVuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10g
YXR0cmlidXRlIEhUTUxUcmFja0VsZW1lbnRDb25zdHJ1Y3RvciBIVE1MVHJhY2tFbGVtZW50Owog
ICAgIFtDb25kaXRpb25hbD1WSURFT19UUkFDSywgVjhFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZp
ZGVvVHJhY2tdIGF0dHJpYnV0ZSBUZXh0VHJhY2tDb25zdHJ1Y3RvciBUZXh0VHJhY2s7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXgg
NGI3MDRhYjA1OTM5ZTc4NWYxMjczZDU1ZjdlMGE1ZjIxMzM1YTA1YS4uMDNkMzkxYzYxMzZkNzYy
ZTlmN2UxNjVhOGNlMDQ4NmIyY2MxNjQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIHN0YXRpYyBN
ZWRpYVBsYXllckZhY3RvcnkqIGJlc3RNZWRpYUVuZ2luZUZvclR5cGVBbmRDb2RlY3MoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjCiAgICAgICAgICAgICAgICAgY3VycmVudCA9IDA7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKICAg
ICAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdpbmVTdXBwb3J0ID0gZW5naW5lc1tu
ZHhdLT5zdXBwb3J0c1R5cGVBbmRDb2RlY3ModHlwZSwgY29kZWNzLCBrZXlTeXN0ZW0sIHVybCk7
CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oa2V5U3lzdGVtKTsKQEAgLTc4NCw3ICs3ODQs
NyBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUo
Y29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeQogICAgIFVOVVNFRF9QQVJBTShjbGllbnQpOwog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAgICAgcmV0dXJuIGVuZ2lu
ZS0+c3VwcG9ydHNUeXBlQW5kQ29kZWNzKHR5cGUsIHR5cGVDb2RlY3MsIHN5c3RlbSwgdXJsKTsK
ICNlbHNlCiAgICAgQVNTRVJUKHN5c3RlbS5pc0VtcHR5KCkpOwpAQCAtMTA4MSw2ICsxMDgxLDE0
IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmtleU5lZWRlZChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwg
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUFfVjIpCit2b2lkIE1lZGlhUGxheWVyOjprZXlOZWVkZWQoVWludDhBcnJheSog
aW5pdERhdGEpCit7CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIG1fbWVk
aWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyS2V5TmVlZGVkKHRoaXMsIGluaXREYXRhKTsKK30K
KyNlbmRpZgorCiBTdHJpbmcgTWVkaWFQbGF5ZXI6OnJlZmVycmVyKCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fbWVkaWFQbGF5ZXJDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCAyYjA1MTc2YWY2OWJhMTYyNmY2MjQxZmE4ODNmZmE0
MjUzOTlmODYyLi5jYjU1NzhiODE1MDk4YTY0MzcxMjMzMTNjNmQzMDNjMjFmOGNiMDhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTE5
Myw2ICsxOTMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcktleU5l
ZWRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYgLyoga2V5U3lzdGVtICovLCBjb25zdCBT
dHJpbmcmIC8qIHNlc3Npb25JZCAqLywgY29uc3QgdW5zaWduZWQgY2hhciogLyogaW5pdERhdGEg
Ki8sIHVuc2lnbmVkIC8qIGluaXREYXRhTGVuZ3RoICovKSB7IHJldHVybiBmYWxzZTsgfQogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIHZpcnR1YWwgdm9pZCBt
ZWRpYVBsYXllcktleU5lZWRlZChNZWRpYVBsYXllciosIFVpbnQ4QXJyYXkqKSB7IH0KKyNlbmRp
ZgorICAgIAogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdCB7
IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyVXNlckFn
ZW50KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIENPUlNNb2RlIG1l
ZGlhUGxheWVyQ09SU01vZGUoKSBjb25zdCB7IHJldHVybiBVbnNwZWNpZmllZDsgfQpAQCAtNDMw
LDYgKzQzNCwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBrZXlOZWVkZWQoY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBp
bml0RGF0YSwgdW5zaWduZWQgaW5pdERhdGFMZW5ndGgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBX1YyKQorICAgIHZvaWQga2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXRE
YXRhKTsKKyNlbmRpZgorCiAgICAgU3RyaW5nIHJlZmVycmVyKCkgY29uc3Q7CiAgICAgU3RyaW5n
IHVzZXJBZ2VudCgpIGNvbnN0OwogCkBAIC00ODAsNyArNDg4LDcgQEAgcHJpdmF0ZToKIAogdHlw
ZWRlZiBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gKCpDcmVhdGVNZWRp
YUVuZ2luZVBsYXllcikoTWVkaWFQbGF5ZXIqKTsKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5l
U3VwcG9ydGVkVHlwZXMpKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpOwotI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQV9WMikKIHR5cGVkZWYgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSAoKk1lZGlh
RW5naW5lU3VwcG9ydHNUeXBlKShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29k
ZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgS1VSTCYgdXJsKTsKICNlbHNlCiB0
eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlw
ZSkoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgS1VSTCYg
dXJsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCA2MmEwMmViZjFlNTk1YjQzZjZmMjk5MWI4
MjU0YzA3MDdmZTNjMzRhLi45ZDIxYjhjNjFlN2UzNTk3ZjlhNzZjYjM1MTkwMDM1OWFkNzk5YzFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGUoTWVk
aWFQbGF5ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0
cmluZz4mIHR5cGVzKTsKICAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBw
b3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3Qg
S1VSTCYpOwotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKICAgICBzdGF0aWMgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBleHRlbmRlZFN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3Qg
S1VSTCYpOwogI2VuZGlmCiAKQEAgLTE3NywxNyArMTc3LDE0IEBAIHByaXZhdGU6CiAKICNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKICAgICBSZXRhaW5QdHI8VlRQ
aXhlbFRyYW5zZmVyU2Vzc2lvblJlZj4gbV9waXhlbFRyYW5zZmVyU2Vzc2lvbjsKLSNlbmRpZgog
Ci0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDkwCisgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
cjsKKyAgICBPd25QdHI8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiBtX3Jlc291cmNlTG9hZGVy
OwogICAgIFJldGFpblB0cjxXZWJDb3JlQVZGTG9hZGVyRGVsZWdhdGU+IG1fbG9hZGVyRGVsZWdh
dGU7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKICAgICBIYXNoTWFwPFN0cmluZywg
UmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiA+IG1fa2V5VVJJVG9SZXF1
ZXN0TWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9h
ZGluZ1JlcXVlc3Q+ID4gbV9zZXNzaW9uSURUb1JlcXVlc3RNYXA7CiAjZW5kaWYKLQotI2lmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAotICAgIGZyaWVuZCBjbGFzcyBX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI7Ci0gICAgT3duUHRyPFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcj4gbV9yZXNvdXJjZUxvYWRlcjsKICNlbmRpZgogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05f
VEVYVF9UUkFDS19TVVBQT1JUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggNWZhOGNhMjQx
YTFmYjFmMjAyOGYxY2JjNGVhODg3NzcyY2YyMWUzYy4uMGFjYzc5M2E2MmJjZmY5NWExYWZjZGRi
NzE4N2RkODU4YzYxM2YwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xOTQsNyArMTk0
LDcgQEAgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWEKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciBy
ZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0jaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVE
X01FRElBX1YyKQogICAgICAgICByZWdpc3RyYXIoY3JlYXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywg
ZXh0ZW5kZWRTdXBwb3J0c1R5cGUsIDAsIDAsIDApOwogI2Vsc2UKICAgICAgICAgcmVnaXN0cmFy
KGNyZWF0ZSwgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCk7CkBAIC04
MTUsNyArODE1LDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c1R5cGUoY29uc3QKICAgICByZXR1cm4gW0FWVVJM
QXNzZXQgaXNQbGF5YWJsZUV4dGVuZGVkTUlNRVR5cGU6dHlwZVN0cmluZ10gPyBNZWRpYVBsYXll
cjo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ7OwogfQogCi0jaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBF
TkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQogc3RhdGljIGJvb2wga2V5U3lzdGVtSXNTdXBwb3J0
ZWQoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiB7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KGtleVN5c3RlbSwgImNvbS5hcHBsZS5sc2tkIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2Uoa2V5U3lz
dGVtLCAiY29tLmFwcGxlLmxza2QuMV8wIikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCmlu
ZGV4IDNlZTFhNGMyOTg2ZGM4OTI0YjM3ZDZmMTNlMWFlOGM0MTJiMDQ4YjkuLjhiMTFmODMyODAw
NDIyMmUwNGRlZWE1M2Y5ZmZjOTM2ZDllNWFhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtp
dC5oCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGUoTWVkaWFQbGF5ZXIqKTsKICAgICBzdGF0
aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mIHR5cGVzKTsKICAgICBz
dGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgS1VSTCYpOwotI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQV9WMikKICAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBl
eHRlbmRlZFN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29k
ZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgS1VSTCYpOwogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXll
clByaXZhdGVRVEtpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQppbmRleCBlZjdlMzgwNzllMDY1MDQ2OTdjMjM2OGUz
NDg5ZmI4N2IxMGM5YzRlLi41NmUzMzRhNmE4ZGM3N2YxODc1NGY2MWE1OGI1NzA4YWRiYjVjYjYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCkBAIC0xOTAsNyArMTkwLDcgQEAgUGFz
c093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IE1lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0OjpjcmVhdGUoTWVkaWFQbGEKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnJlZ2lz
dGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlm
IChpc0F2YWlsYWJsZSgpKQotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKICAgICAgICAg
cmVnaXN0cmFyKGNyZWF0ZSwgZ2V0U3VwcG9ydGVkVHlwZXMsIGV4dGVuZGVkU3VwcG9ydHNUeXBl
LCBnZXRTaXRlc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVG
b3JTaXRlKTsKICNlbHNlCiAgICAgICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5
cGVzLCBzdXBwb3J0c1R5cGUsIGdldFNpdGVzSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUs
IGNsZWFyTWVkaWFDYWNoZUZvclNpdGUpOwpAQCAtMTU1Miw3ICsxNTUyLDcgQEAgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6c3VwcG9ydHNUeXBlKGNv
bnN0IFN0cmluZyYgdHkKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwog
fQogCi0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQogTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6ZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0sIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICAvLyBRVEtpdCBkb2VzIG5vdCBzdXBwb3J0IGFu
eSBlbmNyeXRwZWQgbWVkaWEsIHNvIHJldHVybiBJc05vdFN1cHBvcnRlZCBpZiB0aGUga2V5U3lz
dGVtIGlzIG5vbi1OVUxMOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGVh
MjY0ZTI0YzY3YThjMWQzMTkzOWFjMjZjYjM2NzU3N2ZmMDA3MTAuLjg5NjA4NzllYjU1ZmY0ZmNj
YjRiNzNmMmY1NmQyM2NmYzJhZGUzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKQEAgLTEyNiw2ICsxMjYsMTEgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIK
ICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKyNpbmNsdWRlICJDRE0u
aCIKKyNpbmNsdWRlICJNb2NrQ0RNLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAjaWYgRU5BQkxFKFBBR0VfUE9QVVApCkBAIC0xOTA0LDQgKzE5MDksMTEgQEAgdm9pZCBJbnRl
cm5hbHM6OnNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyhib29sIGVuYWJsZWQpCiAgICAgV2ViQ29y
ZTo6U2V0dGluZ3M6OnNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyhlbmFibGVkKTsKIH0KIAorI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCit2b2lkIEludGVybmFsczo6aW5pdGlhbGl6ZU1v
Y2tDRE0oKQoreworICAgIENETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KE1vY2tDRE06OmNyZWF0ZSwg
TW9ja0NETTo6c3VwcG9ydHNLZXlTeXRlbSk7Cit9CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKaW5kZXggM2RlYjdjZmZkNDcxOTNhMDg2YzFkMjJiODllYmM1YjU2ZjE0
NGRkNy4uYjBiNWU5Yzc4NzU2MjEzOGI1NGE4ODRjYmNhOTg3ZTA3ZDA1YmU2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0yNzQsNiArMjc0LDEwIEBAIHB1YmxpYzoKIAogICAg
IFN0cmluZyBnZXRDdXJyZW50Q3Vyc29ySW5mbyhEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsK
IAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisgICAgdm9pZCBpbml0aWFsaXplTW9j
a0NETSgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERvY3Vt
ZW50Kik7CiAgICAgRG9jdW1lbnQqIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDc2MWQwMzBkMjI4NTQyNDkyMWI3Y2U5MGY1ZmEz
OTliMDMzMWVjNjYuLmY0YTM0NzUxNTAzZWRmOGFiNDM1ODE4YjUyZjRhN2NkZTBmNjI3NTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTI0Miw0ICsyNDIsNiBAQAogICAg
IEFycmF5QnVmZmVyIHNlcmlhbGl6ZU9iamVjdChpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUgb2Jq
KTsKIAogICAgIHZvaWQgc2V0VXNlc092ZXJsYXlTY3JvbGxiYXJzKGluIGJvb2xlYW4gZW5hYmxl
ZCk7CisKKyAgICBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyXSB2b2lkIGluaXRpYWxp
emVNb2NrQ0RNKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTAxODIzZjg3MTk2NjlhYTZlOTYzY2Y4Y2IwZmNhNDYxOWZiZjUyZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5jcHAKQEAgLTAsMCArMSwxNDQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9ja0NETS5oIgor
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIkNETS5oIgorI2lu
Y2x1ZGUgIk1lZGlhS2V5RXJyb3IuaCIKKyNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vY2tDRE1TZXNzaW9uIDogcHVibGljIENETVNl
c3Npb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPE1vY2tDRE1TZXNzaW9uPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFB0cihuZXcgTW9ja0NETVNlc3Npb24oKSk7IH0KKyAgICB2
aXJ0dWFsIH5Nb2NrQ0RNU2Vzc2lvbigpIHsgfQorCisgICAgdmlydHVhbCBjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCgpIE9WRVJSSURFIHsgcmV0dXJuIG1fc2Vzc2lvbklkOyB9CisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwg
dW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VLZXlzKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIGFkZEtleShVaW50OEFycmF5KiwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVz
c2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29k
ZSkgT1ZFUlJJREU7CisKK3Byb3RlY3RlZDoKKyAgICBNb2NrQ0RNU2Vzc2lvbigpOworCisgICAg
U3RyaW5nIG1fc2Vzc2lvbklkOworfTsKKworYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0tleVN5dGVt
KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2Fz
ZShrZXlTeXN0ZW0sICJjb20ud2ViY29yZS5tb2NrIik7Cit9CisKK2Jvb2wgTW9ja0NETTo6c3Vw
cG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIHJldHVybiBlcXVh
bElnbm9yaW5nQ2FzZShtaW1lVHlwZSwgInZpZGVvL21vY2siKTsKK30KKworUGFzc093blB0cjxD
RE1TZXNzaW9uPiBNb2NrQ0RNOjpjcmVhdGVTZXNzaW9uKCkKK3sKKyAgICByZXR1cm4gTW9ja0NE
TVNlc3Npb246OmNyZWF0ZSgpOworfQorCitzdGF0aWMgVWludDhBcnJheSogaW5pdERhdGFQcmVm
aXgoKQoreworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHByZWZpeERhdGFbXSA9IHsn
bScsICdvJywgJ2MnLCAnayd9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPFVpbnQ4
QXJyYXk+LCBwcmVmaXgsICgpKTsKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNl
OworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwor
ICAgICAgICBwcmVmaXggPSBVaW50OEFycmF5OjpjcmVhdGUocHJlZml4RGF0YSwgc2l6ZW9mKHBy
ZWZpeERhdGEpIC8gc2l6ZW9mKHByZWZpeERhdGFbMF0pKTsKKyAgICB9CisgICAgcmV0dXJuIHBy
ZWZpeC5nZXQoKTsKK30KKworc3RhdGljIFVpbnQ4QXJyYXkqIGtleVByZWZpeCgpCit7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcHJlZml4RGF0YVtdID0geydrJywgJ2UnLCAneSd9
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPFdURjo6VWludDhBcnJheT4sIHByZWZp
eCwgKCkpOworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKCFp
bml0aWFsaXplZCkgeworICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CisgICAgICAgIHByZWZp
eCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShwcmVmaXhEYXRhLCBzaXplb2YocHJlZml4RGF0YSkgLyBz
aXplb2YocHJlZml4RGF0YVswXSkpOworICAgIH0KKyAgICByZXR1cm4gcHJlZml4LmdldCgpOwor
fQorCitzdGF0aWMgVWludDhBcnJheSoga2V5UmVxdWVzdCgpCit7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGNoYXIgcmVxdWVzdERhdGFbXSA9IHsncicsICdlJywgJ3EnLCAndScsICdlJywg
J3MnLCAndCd9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPFdURjo6VWludDhBcnJh
eT4sIHJlcXVlc3QsICgpKTsKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwor
ICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAg
ICAgICByZXF1ZXN0ID0gVWludDhBcnJheTo6Y3JlYXRlKHJlcXVlc3REYXRhLCBzaXplb2YocmVx
dWVzdERhdGEpIC8gc2l6ZW9mKHJlcXVlc3REYXRhWzBdKSk7CisgICAgfQorICAgIHJldHVybiBy
ZXF1ZXN0LmdldCgpOworfQorCitzdGF0aWMgU3RyaW5nIGdlbmVyYXRlU2Vzc2lvbklkKCkKK3sK
KyAgICBzdGF0aWMgaW50IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nU2Vzc2lvbklkID0gMDsKKyAg
ICByZXR1cm4gU3RyaW5nOjpudW1iZXIobW9ub3RvbmljYWxseUluY3JlYXNpbmdTZXNzaW9uSWQr
Kyk7Cit9CisKK01vY2tDRE1TZXNzaW9uOjpNb2NrQ0RNU2Vzc2lvbigpCisgICAgOiBtX3Nlc3Np
b25JZChnZW5lcmF0ZVNlc3Npb25JZCgpKQoreworfQorCitQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+
IE1vY2tDRE1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiwgVWludDhB
cnJheSogaW5pdERhdGEsIFN0cmluZyYsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2ln
bmVkIGxvbmcmKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbml0RGF0YVByZWZp
eCgpLT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGlmICghaW5pdERhdGEgfHwgaSA+PSBpbml0
RGF0YS0+bGVuZ3RoKCkgfHwgaW5pdERhdGEtPml0ZW0oaSkgIT0gaW5pdERhdGFQcmVmaXgoKS0+
aXRlbShpKSkgeworICAgICAgICAgICAgZXJyb3JDb2RlID0gTWVkaWFLZXlFcnJvcjo6TUVESUFf
S0VZRVJSX1VOS05PV047CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4ga2V5UmVxdWVzdCgpOworfQorCit2b2lkIE1vY2tDRE1TZXNzaW9uOjpyZWxl
YXNlS2V5cygpCit7CisgICAgLy8gbm8tb3AKK30KKworYm9vbCBNb2NrQ0RNU2Vzc2lvbjo6YWRk
S2V5KFVpbnQ4QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiwgdW5zaWduZWQgc2hvcnQm
IGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGtleVByZWZpeCgpLT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGlmIChpID49IGtleS0+
bGVuZ3RoKCkgfHwga2V5LT5pdGVtKGkpICE9IGtleVByZWZpeCgpLT5pdGVtKGkpKSB7CisgICAg
ICAgICAgICBlcnJvckNvZGUgPSBNZWRpYUtleUVycm9yOjpNRURJQV9LRVlFUlJfQ0xJRU5UOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNLmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzViNTBhOWQ2YWYyYWJmYzZiODViMTEz
ZjQ4MzkwOTBiNjFkOThiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTW9ja0NE
TV9oCisjZGVmaW5lIE1vY2tDRE1faAorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikK
KworI2luY2x1ZGUgIkNETVByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENETTsKKworY2xhc3MgTW9ja0NETSA6IHB1
YmxpYyBDRE1Qcml2YXRlSW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICAvLyBDRE1GYWN0b3J5IHN1
cHBvcnQ6CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0RNUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRl
KENETSogY2RtKSB7IHJldHVybiBhZG9wdFB0cihuZXcgTW9ja0NETShjZG0pKTsgfQorICAgIHN0
YXRpYyBib29sIHN1cHBvcnRzS2V5U3l0ZW0oY29uc3QgU3RyaW5nJik7CisKKyAgICB2aXJ0dWFs
IH5Nb2NrQ0RNKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0RN
U2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIE9WRVJSSURFOworCitwcm90ZWN0ZWQ6CisgICAgTW9j
a0NETShDRE0qIGNkbSkgOiBtX2NkbShjZG0pIHsgfQorICAgIENETSogbV9jZG07Cit9OworCit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjZW5kaWYgLy8gTW9ja0NE
TV9oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggYmYyMGMxNGMyMzYyNWUyYTZlNDg3MmNiNzA5MTk2MzRjMWQ3ZWM4MC4uNDE3
N2M0ZThkNzFlNmJiYTljN2Q2MTQwNTBjMzc0NDVhZDY3NjlhYSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDEyLTA5LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAg
ICAgIEJyaW5nIFdlYktpdCB1cCB0byBzcGVlZCB3aXRoIGxhdGVzdCBFbmNyeXB0ZWQgTWVkaWEg
c3BlYy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3
MDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgbmV3IHRlc3RzIGZvciB0aGUgdXBkYXRlZCBFbmNyeXB0ZWQgTWVkaWEgRXh0ZW5zaW9ucyBz
cGVjLgorCisgICAgICAgICogbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12
Mi1ldmVudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9lbmNyeXB0ZWQt
bWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLWV2ZW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBt
ZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRheC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVk
aWEtdjItc3ludGF4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVk
OiBVbnNraXAgKG1vc3Qgb2YpIHRoZSBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvIHRlc3RzCisgICAg
ICAgICogcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEt
Y2FuLXBsYXktdHlwZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDEzLTAyLTA0ICBBbmRyZXkg
THVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBhZGQgcm91bmQgYnJhY2VzIHRvIGphdmFzY3JpcHQgdG9rZW5pemVyCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLWV2
ZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5j
cnlwdGVkLW1lZGlhLXYyLWV2ZW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2IyOTYzYTA2
NDMwNGQ2ODg2MjAyZTliODI2OTkyNWZkZGJkNTUzMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItZXZlbnRzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUaGlzIHRlc3RzIHRoZSBldmVudHMgY3JlYXRl
ZCBieSBNZWRpYUtleXMuCisKK1JVTihtZWRpYUtleXMgPSBuZXcgTWVkaWFLZXlzKCJjb20ud2Vi
Y29yZS5tb2NrIikpCitSVU4obWVkaWFLZXlTZXNzaW9uID0gbWVkaWFLZXlzLmNyZWF0ZVNlc3Np
b24oInZpZGVvL21vY2siLCBpbml0RGF0YSkpCitFVkVOVCh3ZWJraXRrZXltZXNzYWdlKQorUlVO
KG1lZGlhS2V5U2Vzc2lvbi5hZGRLZXkoaW52YWxpZEtleSkpCitFVkVOVCh3ZWJraXRrZXllcnJv
cikKK1JVTihtZWRpYUtleVNlc3Npb24uYWRkS2V5KHZhbGlkS2V5KSkKK0VWRU5UKHdlYmtpdGtl
eWFkZGVkKQorRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5j
cnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1ldmVudHMuaHRtbCBiL0xheW91dFRlc3Rz
L21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItZXZlbnRzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjc3NjA4ZjdiNTM2MWRiOTM2ZDY3ZWE1NDIyMzdjZWMxYjU2MWU3YwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQt
bWVkaWEtdjItZXZlbnRzLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPk1lZGlhS2V5czwvdGl0bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBzdHJpbmdUb1VpbnQ4QXJyYXkoc3RyKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHZhciBhcnI9W107CisgICAgICAgICAgICAgICAgZm9y
KHZhciBpPTAsaj1zdHIubGVuZ3RoO2k8ajsrK2kpeworICAgICAgICAgICAgICAgICAgYXJyW2ld
PXN0ci5jaGFyQ29kZUF0KGkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYXJyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIG1lZGlhS2V5czsKKyAgICAgICAgICAgIHZhciBtZWRpYUtleVNlc3Npb247CisgICAgICAg
ICAgICB2YXIgaW5pdERhdGEgPSBzdHJpbmdUb1VpbnQ4QXJyYXkoJ21vY2snKTsKKyAgICAgICAg
ICAgIHZhciBpbnZhbGlkS2V5ID0gc3RyaW5nVG9VaW50OEFycmF5KCdpbnZhbGlkJyk7CisgICAg
ICAgICAgICB2YXIgdmFsaWRLZXkgPSBzdHJpbmdUb1VpbnQ4QXJyYXkoJ2tleScpOworCisgICAg
ICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgLy8gSW5pdGlhbGl6ZSB0aGUgTW9ja0NETS4gSXQgc3VwcG9ydHMgdGhlIGtleSBzeXN0ZW0g
J2NvbS5hcHBsZS5tb2NrJywgdGhlIAorICAgICAgICAgICAgICAgIC8vIG1pbWUgdHlwZSAndmlk
ZW8vbW9jaycuIEl0IHJlcXVpcmVzIGluaXQgZGF0YSB0byBiZWdpbiB3aXRoICdtb2NrJywgYW5k
CisgICAgICAgICAgICAgICAgLy8ga2V5cyB0byBiZWdpbiB3aXRoICdrZXknLgorICAgICAgICAg
ICAgICAgIGlmIChpbnRlcm5hbHMpCisgICAgICAgICAgICAgICAgICAgIGludGVybmFscy5pbml0
aWFsaXplTW9ja0NETSgpOworCisgICAgICAgICAgICAgICAgcnVuKCdtZWRpYUtleXMgPSBuZXcg
TWVkaWFLZXlzKCJjb20ud2ViY29yZS5tb2NrIiknKTsKKyAgICAgICAgICAgICAgICBydW4oJ21l
ZGlhS2V5U2Vzc2lvbiA9IG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ2aWRlby9tb2NrIiwgaW5p
dERhdGEpJyk7CisgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50KCd3ZWJraXRrZXltZXNzYWdl
Jywga2V5TWVzc2FnZSwgZmFsc2UsIGZhbHNlLCBtZWRpYUtleVNlc3Npb24pOworICAgICAgICAg
ICAgICAgIHdhaXRGb3JFdmVudCgnd2Via2l0a2V5ZXJyb3InLCBrZXlFcnJvciwgZmFsc2UsIGZh
bHNlLCBtZWRpYUtleVNlc3Npb24pOworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnd2Vi
a2l0a2V5YWRkZWQnLCBudWxsLCB0cnVlLCBmYWxzZSwgbWVkaWFLZXlTZXNzaW9uKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24ga2V5TWVzc2FnZShldmVudCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBydW4oJ21lZGlhS2V5U2Vzc2lvbi5hZGRLZXkoaW52
YWxpZEtleSknKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24ga2V5RXJy
b3IoZXZlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcnVuKCdtZWRpYUtleVNl
c3Npb24uYWRkS2V5KHZhbGlkS2V5KScpOworICAgICAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgICAgICA8
cD5UaGlzIHRlc3RzIHRoZSBldmVudHMgY3JlYXRlZCBieSBNZWRpYUtleXMuPC9wPgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21l
ZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjIt
c3ludGF4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzA1MTExOTY4NTc2MTI2ZTdiZTA4OWNj
NTY3NGJhM2RlZGE3MjRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5j
cnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXgtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjYgQEAKK1RoaXMgdGVzdHMgdGhlIGJhc2ljIEFQSSBvZiBNZWRpYUtleXMgYW5kIE1l
ZGlhS2V5U2Vzc2lvbi4KKworVGVzdCBNZWRpYUtleXMuCitFWFBFQ1RFRCAodHlwZW9mIHdpbmRv
dy5NZWRpYUtleXMgPT0gJ29iamVjdCcpIE9LCitURVNUKG5ldyBNZWRpYUtleXMoIiIpKSBUSFJP
V1MoRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUikgT0sKK1RFU1QobmV3IE1lZGlhS2V5
cygidW5zdXBwb3J0ZWQiKSkgVEhST1dTKERPTUV4Y2VwdGlvbi5OT1RfU1VQUE9SVEVEX0VSUikg
T0sKK1JVTihtZWRpYUtleXMgPSBuZXcgTWVkaWFLZXlzKCJjb20ud2ViY29yZS5tb2NrIikpCitF
WFBFQ1RFRCAobWVkaWFLZXlzLmtleVN5c3RlbSA9PSAnY29tLndlYmNvcmUubW9jaycpIE9LCitF
WFBFQ1RFRCAodHlwZW9mIG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uID09ICdmdW5jdGlvbicpIE9L
CitURVNUKG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCIiLCBuZXcgVWludDhBcnJheSgxKSkpIFRI
Uk9XUyhET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1NfRVJSKSBPSworVEVTVChtZWRpYUtleXMu
Y3JlYXRlU2Vzc2lvbigidW5zdXBwb3J0ZWQvdHlwZSIpKSBUSFJPV1MoRE9NRXhjZXB0aW9uLk5P
VF9TVVBQT1JURURfRVJSKSBPSworCitUZXN0IE1lZGlhS2V5U2Vzc2lvbi4KK1JVTihtZWRpYUtl
eVNlc3Npb24gPSBtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidmlkZW8vbW9jayIsIGluaXREYXRh
KSkKK0VYUEVDVEVEICh0eXBlb2YgbWVkaWFLZXlTZXNzaW9uID09ICdvYmplY3QnKSBPSworRVhQ
RUNURUQgKHR5cGVvZiBtZWRpYUtleVNlc3Npb24uYWRkRXZlbnRMaXN0ZW5lciA9PSAnZnVuY3Rp
b24nKSBPSworRVhQRUNURUQgKHR5cGVvZiBtZWRpYUtleVNlc3Npb24uYWRkS2V5ID09ICdmdW5j
dGlvbicpIE9LCitFWFBFQ1RFRCAobWVkaWFLZXlTZXNzaW9uLmVycm9yID09ICdudWxsJykgT0sK
K0VYUEVDVEVEIChtZWRpYUtleVNlc3Npb24ua2V5U3lzdGVtID09ICdjb20ud2ViY29yZS5tb2Nr
JykgT0sKK0VYUEVDVEVEIChtZWRpYUtleVNlc3Npb24uc2Vzc2lvbklkICE9ICdudWxsJykgT0sK
K0VYUEVDVEVEIChtZWRpYUtleVNlc3Npb24ub253ZWJraXRrZXlhZGRlZCA9PSAnbnVsbCcpIE9L
CitFWFBFQ1RFRCAobWVkaWFLZXlTZXNzaW9uLm9ud2Via2l0a2V5ZXJyb3IgPT0gJ251bGwnKSBP
SworRVhQRUNURUQgKG1lZGlhS2V5U2Vzc2lvbi5vbndlYmtpdGtleW1lc3NhZ2UgPT0gJ251bGwn
KSBPSworVEVTVChtZWRpYUtleVNlc3Npb24uYWRkS2V5KG51bGwpKSBUSFJPV1MoRE9NRXhjZXB0
aW9uLklOVkFMSURfQUNDRVNTX0VSUikgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4
Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlh
LXYyLXN5bnRheC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MjBhYzliNzZkNmRiZTFmZGNiZDE3OTUyY2Qz
MTQ2MzliZGQ3YzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0
ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRheC5odG1sCkBAIC0wLDAgKzEsNTggQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT5NZWRp
YUtleXM8L3RpdGxlPgorICAgICAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0LmpzPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZnVuY3Rpb24gc3RyaW5nVG9VaW50
OEFycmF5KHN0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgYXJyPVtdOwor
ICAgICAgICAgICAgICAgIGZvcih2YXIgaT0wLGo9c3RyLmxlbmd0aDtpPGo7KytpKXsKKyAgICAg
ICAgICAgICAgICAgIGFycltpXT1zdHIuY2hhckNvZGVBdChpKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGFycik7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciBtZWRpYUtleXM7CisgICAgICAgICAgICB2YXIgbWVkaWFL
ZXlTZXNzaW9uOworICAgICAgICAgICAgdmFyIGluaXREYXRhID0gc3RyaW5nVG9VaW50OEFycmF5
KCdtb2NrJyk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBNb2NrQ0RNLiBJdCBzdXBwb3J0
cyB0aGUga2V5IHN5c3RlbSAnY29tLmFwcGxlLm1vY2snLCB0aGUgCisgICAgICAgICAgICAgICAg
Ly8gbWltZSB0eXBlICd2aWRlby9tb2NrJy4gSXQgcmVxdWlyZXMgaW5pdCBkYXRhIHRvIGJlZ2lu
IHdpdGggJ21vY2snLCBhbmQKKyAgICAgICAgICAgICAgICAvLyBrZXlzIHRvIGJlZ2luIHdpdGgg
J2tleScuCisgICAgICAgICAgICAgICAgaWYgKGludGVybmFscykKKyAgICAgICAgICAgICAgICAg
ICAgaW50ZXJuYWxzLmluaXRpYWxpemVNb2NrQ0RNKCk7CisKKyAgICAgICAgICAgICAgICBjb25z
b2xlV3JpdGUoIlRlc3QgTWVkaWFLZXlzLiIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgndHlwZW9mIHdpbmRvdy5NZWRpYUtleXMnLCAnb2JqZWN0Jyk7CisgICAgICAgICAgICAgICAg
dGVzdEV4Y2VwdGlvbignbmV3IE1lZGlhS2V5cygiIiknLCAiRE9NRXhjZXB0aW9uLklOVkFMSURf
QUNDRVNTX0VSUiIpOworICAgICAgICAgICAgICAgIHRlc3RFeGNlcHRpb24oJ25ldyBNZWRpYUtl
eXMoInVuc3VwcG9ydGVkIiknLCAiRE9NRXhjZXB0aW9uLk5PVF9TVVBQT1JURURfRVJSIik7Cisg
ICAgICAgICAgICAgICAgcnVuKCdtZWRpYUtleXMgPSBuZXcgTWVkaWFLZXlzKCJjb20ud2ViY29y
ZS5tb2NrIiknKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ21lZGlhS2V5cy5rZXlT
eXN0ZW0nLCAnY29tLndlYmNvcmUubW9jaycpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgndHlwZW9mIG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uJywgJ2Z1bmN0aW9uJyk7CisgICAgICAg
ICAgICAgICAgdGVzdEV4Y2VwdGlvbignbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oIiIsIG5ldyBV
aW50OEFycmF5KDEpKScsICJET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1NfRVJSIik7CisgICAg
ICAgICAgICAgICAgdGVzdEV4Y2VwdGlvbignbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oInVuc3Vw
cG9ydGVkL3R5cGUiKScsICJET01FeGNlcHRpb24uTk9UX1NVUFBPUlRFRF9FUlIiKTsKKyAgICAg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworCisgICAgICAgICAgICAgICAgY29uc29sZVdy
aXRlKCJUZXN0IE1lZGlhS2V5U2Vzc2lvbi4iKTsKKyAgICAgICAgICAgICAgICBydW4oJ21lZGlh
S2V5U2Vzc2lvbiA9IG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ2aWRlby9tb2NrIiwgaW5pdERh
dGEpJyk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd0eXBlb2YgbWVkaWFLZXlTZXNz
aW9uJywgJ29iamVjdCcpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndHlwZW9mIG1l
ZGlhS2V5U2Vzc2lvbi5hZGRFdmVudExpc3RlbmVyJywgJ2Z1bmN0aW9uJyk7CisgICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCd0eXBlb2YgbWVkaWFLZXlTZXNzaW9uLmFkZEtleScsICdmdW5j
dGlvbicpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnbWVkaWFLZXlTZXNzaW9uLmVy
cm9yJywgbnVsbCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleVNlc3Np
b24ua2V5U3lzdGVtJywgJ2NvbS53ZWJjb3JlLm1vY2snKTsKKyAgICAgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoJ21lZGlhS2V5U2Vzc2lvbi5zZXNzaW9uSWQnLCBudWxsLCAnIT0nKTsKKyAgICAg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ21lZGlhS2V5U2Vzc2lvbi5vbndlYmtpdGtleWFkZGVk
JywgbnVsbCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleVNlc3Npb24u
b253ZWJraXRrZXllcnJvcicsIG51bGwpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgn
bWVkaWFLZXlTZXNzaW9uLm9ud2Via2l0a2V5bWVzc2FnZScsIG51bGwpOworICAgICAgICAgICAg
ICAgIHRlc3RFeGNlcHRpb24oJ21lZGlhS2V5U2Vzc2lvbi5hZGRLZXkobnVsbCknLCAiRE9NRXhj
ZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUiIpOworICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICAgICAgPHA+VGhpcyB0ZXN0cyB0aGUgYmFzaWMgQVBJ
IG9mIE1lZGlhS2V5cyBhbmQgTWVkaWFLZXlTZXNzaW9uLjwvcD4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCAyMTQwMDYwNGFhN2I4ZDU5Y2Y1NTYwN2IyY2VmMWUwMmEw
NWMyOTQzLi5mNDdmYmMzNmU4MzQ4Y2U5YjBjN2UyYmI0ZjhhZjQzNjI3MzZiODE5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTIwLDkgKzUyMCwxMSBA
QCB3ZWJraXQub3JnL2IvMTAzOTI2IG1lZGlhL3RyYWNrL29wZXJhL3RyYWNrL3dlYnZ0dC9yZW5k
ZXJpbmcvYWRob2Mvdm9pY2Vfd2l0aF9ldgogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjQ3MzEKIGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlLwogCi0jIEVu
Y3J5cHRlZCBNZWRpYSBFeHRlbnNpb25zIGFyZSBub3QgZW5hYmxlZC4KLW1lZGlhL2VuY3J5cHRl
ZC1tZWRpYS8KLWZhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9tZWRpYS1rZXktZXZlbnQtY29uc3Ry
dWN0b3IuaHRtbAorIyBEZXByZWNhdGVkIEVuY3J5cHRlZCBNZWRpYSBFeHRlbnNpb25zIGFyZSBu
b3QgZW5hYmxlZC4KK21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtY2FuLXBs
YXktdHlwZS13ZWJtLmh0bWwKK21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEt
ZXZlbnRzLmh0bWwKK21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtbm90LWxv
YWRlZC5odG1sCittZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXN5bnRheC5o
dG1sCiAKICMgRm9udCBmZWF0dXJlIHNldHRpbmdzIGlzIG5vdCBpbXBsZW1lbnRlZC4KIGNzczMv
Zm9udC1mZWF0dXJlLXNldHRpbmdzLXJlbmRlcmluZy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS1j
YW4tcGxheS10eXBlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9tZWRp
YS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLWNhbi1wbGF5LXR5cGUtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJhY2M3N2E0NjU4OTA2YjIxNWRjZWU2M2QwNjNhOGI3NzhjNGEzMzcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEvZW5jcnlw
dGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS1jYW4tcGxheS10eXBlLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDc1IEBACitUZXN0IEVuY3J5cHRlZCBNZWRpYSBleHRlbnNpb24gb2YgSFRNTE1lZGlh
RWxlbWVudCBjYW5QbGF5VHlwZSgpIG1ldGhvZC4KKworVGhlIHRlc3QgaXMgZGVzaWduZWQgdG8g
cGFzcyB3aXRoIGFueSBpbXBsZW1lbnRhdGlvbiByZWdhcmRsZXNzIG9mIHN1cHBvcnRlZCBtZWRp
YSB0eXBlcyBhbmQgcmVsaWVzIG9uIHRoZSBleHBlY3RlZCBsb2cgdG8gZGV0ZWN0IHRoZSBleHBl
Y3RlZCByZXN1bHRzIGZvciBzb21lIHR5cGVzLiBUbyBnZXQgc3VmZmljaWVudCBjb3ZlcmFnZSwg
aXQgaXMgaW1wb3J0YW50IHRoYXQgYW4gaW1wbGVtZW50YXRpb24gc3VwcG9ydCBjbGVhcmtleSBl
bmNyeXB0aW9uIG9mIGF0IGxlYXN0IG9uZSBvZiB0aGUgdHlwZXMgYmVsb3cuCisKK0Fsd2F5cyBy
ZXR1cm4gdGhlIGVtcHR5IHN0cmluZyBmb3Igbm8gdHlwZS4KK0VYUEVDVEVEICh2aWRlby5jYW5Q
bGF5VHlwZSgpID09ICcnKSBPSworCitBbHdheXMgcmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgZm9y
IGFuIGVtcHR5IHR5cGUuCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJycpID09ICcnKSBP
SworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCcnLCAnJykgPT0gJycpIE9LCitFWFBFQ1RF
RCAodmlkZW8uY2FuUGxheVR5cGUoJycsIG51bGwpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVv
LmNhblBsYXlUeXBlKCcnLCB1bmRlZmluZWQpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNh
blBsYXlUeXBlKCcnLCAnd2Via2l0LW9yZy53My5jbGVhcmtleScpID09ICcnKSBPSworRVhQRUNU
RUQgKHZpZGVvLmNhblBsYXlUeXBlKCcnLCAnV2VCa0l0LU9yRy5XMy5DbEVhUmtFeScpID09ICcn
KSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCcnLCAnY29tLmV4YW1wbGUuaW52YWxp
ZCcpID09ICcnKSBPSworCitBbHdheXMgcmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgZm9yIHdoZW4g
bm8gY29udGFpbmVyIGlzIHNwZWNpZmllZC4KK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgn
dmlkZW8vJykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvLycs
ICcnKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vJywgbnVs
bCkgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvLycsIHVuZGVm
aW5lZCkgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvLycsICd3
ZWJraXQtb3JnLnczLmNsZWFya2V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxh
eVR5cGUoJ3ZpZGVvLycsICdXZUJrSXQtT3JHLlczLkNsRWFSa0V5JykgPT0gJycpIE9LCitFWFBF
Q1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvLycsICdjb20uZXhhbXBsZS5pbnZhbGlkJykg
PT0gJycpIE9LCisKK0Fsd2F5cyByZXR1cm4gdGhlIGVtcHR5IHN0cmluZyBmb3IgYW4gdW5zdXBw
b3J0ZWQgY29udGFpbmVyLgorRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9ibGFo
YmxhaCcpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9ibGFo
YmxhaCcsICcnKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8v
YmxhaGJsYWgnLCBudWxsKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgn
dmlkZW8vYmxhaGJsYWgnLCB1bmRlZmluZWQpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNh
blBsYXlUeXBlKCd2aWRlby9ibGFoYmxhaCcsICd3ZWJraXQtb3JnLnczLmNsZWFya2V5JykgPT0g
JycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL2JsYWhibGFoJywgJ1dl
QmtJdC1PckcuVzMuQ2xFYVJrRXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5
VHlwZSgndmlkZW8vYmxhaGJsYWgnLCAnY29tLmV4YW1wbGUuaW52YWxpZCcpID09ICcnKSBPSwor
CitFbXB0eSBrZXkgc3lzdGVtIHBhcmFtZXRlcnMgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIHJlc3Vs
dCBvZiB2aWRlby9tcDQgdHlwZXMuCitSZXN1bHQgb2YgdmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVv
L21wNDsgQ29kZWNzPSJhdmMxLjRENDAwQyInKTogJ3Byb2JhYmx5JworRVhQRUNURUQgKHZpZGVv
LmNhblBsYXlUeXBlKCd2aWRlby9tcDQ7IENvZGVjcz0iYXZjMS40RDQwMEMiJywgJycpID09ICdw
cm9iYWJseScpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL21wNDsgQ29k
ZWNzPSJhdmMxLjRENDAwQyInLCBudWxsKSA9PSAncHJvYmFibHknKSBPSworRVhQRUNURUQgKHZp
ZGVvLmNhblBsYXlUeXBlKCd2aWRlby9tcDQ7IENvZGVjcz0iYXZjMS40RDQwMEMiJywgdW5kZWZp
bmVkKSA9PSAncHJvYmFibHknKSBPSworVGhlcmUgYXJlIGN1cnJlbnRseSBubyBpbXBsZW1lbnRh
dGlvbnMgc3VwcG9ydGluZyBlbmNyeXB0aW9uIG9mIHZpZGVvL21wNC4KK0VYUEVDVEVEICh2aWRl
by5jYW5QbGF5VHlwZSgndmlkZW8vbXA0OyBDb2RlY3M9ImF2YzEuNEQ0MDBDIicsICd3ZWJraXQt
b3JnLnczLmNsZWFya2V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUo
J3ZpZGVvL21wNDsgQ29kZWNzPSJhdmMxLjRENDAwQyInLCAnV2VCa0l0LU9yRy5XMy5DbEVhUmtF
eScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9tcDQ7IENv
ZGVjcz0iYXZjMS40RDQwMEMiJywgJ2NvbS5leGFtcGxlLmludmFsaWQnKSA9PSAnJykgT0sKKwor
RW1wdHkga2V5IHN5c3RlbSBwYXJhbWV0ZXJzIHNob3VsZCBub3QgYWZmZWN0IHRoZSByZXN1bHQg
b2YgYXVkaW8vbXBlZyB0eXBlcy4KK1Jlc3VsdCBvZiB2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8v
bXBlZycpOiAnbWF5YmUnCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL21wZWcn
LCAnJykgPT0gJ21heWJlJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8v
bXBlZycsIG51bGwpID09ICdtYXliZScpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUo
J2F1ZGlvL21wZWcnLCB1bmRlZmluZWQpID09ICdtYXliZScpIE9LCitUaGVyZSBhcmUgY3VycmVu
dGx5IG5vIGltcGxlbWVudGF0aW9ucyBzdXBwb3J0aW5nIGVuY3J5cHRpb24gb2YgYXVkaW8vbXBl
Zy4KK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vbXBlZycsICd3ZWJraXQtb3Jn
LnczLmNsZWFya2V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ2F1
ZGlvL21wZWcnLCAnV2VCa0l0LU9yRy5XMy5DbEVhUmtFeScpID09ICcnKSBPSworRVhQRUNURUQg
KHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby9tcGVnJywgJ2NvbS5leGFtcGxlLmludmFsaWQnKSA9
PSAnJykgT0sKKworRW1wdHkga2V5IHN5c3RlbSBwYXJhbWV0ZXJzIHNob3VsZCBub3QgYWZmZWN0
IHRoZSByZXN1bHQgb2YgYXVkaW8vd2F2IHR5cGVzLgorUmVzdWx0IG9mIHZpZGVvLmNhblBsYXlU
eXBlKCdhdWRpby93YXYnKTogJ21heWJlJworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdh
dWRpby93YXYnLCAnJykgPT0gJ21heWJlJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlw
ZSgnYXVkaW8vd2F2JywgbnVsbCkgPT0gJ21heWJlJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5Q
bGF5VHlwZSgnYXVkaW8vd2F2JywgdW5kZWZpbmVkKSA9PSAnbWF5YmUnKSBPSworVGhlcmUgYXJl
IGN1cnJlbnRseSBubyBpbXBsZW1lbnRhdGlvbnMgc3VwcG9ydGluZyBlbmNyeXB0aW9uIG9mIGF1
ZGlvL3dhdi4KK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vd2F2JywgJ3dlYmtp
dC1vcmcudzMuY2xlYXJrZXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlw
ZSgnYXVkaW8vd2F2JywgJ1dlQmtJdC1PckcuVzMuQ2xFYVJrRXknKSA9PSAnJykgT0sKK0VYUEVD
VEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vd2F2JywgJ2NvbS5leGFtcGxlLmludmFsaWQn
KSA9PSAnJykgT0sKKworRW1wdHkga2V5IHN5c3RlbSBwYXJhbWV0ZXJzIHNob3VsZCBub3QgYWZm
ZWN0IHRoZSByZXN1bHQgb2YgdmlkZW8vd2VibSB0eXBlcy4KK1Jlc3VsdCBvZiB2aWRlby5jYW5Q
bGF5VHlwZSgndmlkZW8vd2VibScpOiAnJworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2
aWRlby93ZWJtJywgJycpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2
aWRlby93ZWJtJywgbnVsbCkgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUo
J3ZpZGVvL3dlYm0nLCB1bmRlZmluZWQpID09ICcnKSBPSworQWxsIGltcGxlbWVudGF0aW9ucyB0
aGF0IHN1cHBvcnQgV2ViTSBhbmQgRW5jcnlwdGVkIE1lZGlhIHN1cHBvcnQgZW5jcnlwdGVkIFdl
Yk0uCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL3dlYm0nLCAnd2Via2l0LW9y
Zy53My5jbGVhcmtleScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2
aWRlby93ZWJtJywgJ1dlQmtJdC1PckcuVzMuQ2xFYVJrRXknKSA9PSAnJykgT0sKK0VYUEVDVEVE
ICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vd2VibScsICdjb20uZXhhbXBsZS5pbnZhbGlkJykg
PT0gJycpIE9LCitFTkQgT0YgVEVTVAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186957</attachid>
            <date>2013-02-06 17:45:05 -0800</date>
            <delta_ts>2013-02-08 11:31:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97037-20130206174141.patch</filename>
            <type>text/plain</type>
            <size>150753</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MjQ0ZWI0OTc3ZTM4M2ZlNTk4OWY4ODU3NWU5NDhhM2UxOTU2ZmMzLi5lODlkMzQ3MzVjNmY2Nzkw
YjFkNWU2OWRmMTk4MDk5ZmRmY2UwOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOS0xOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KworICAgICAgICBCcmluZyBXZWJLaXQgdXAgdG8gc3BlZWQgd2l0aCBsYXRlc3QgRW5jcnlwdGVk
IE1lZGlhIHNwZWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NzAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIERlZmluZSB0aGUgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiBzZXR0aW5nLgorCisgICAg
ICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTMtMDIt
MDYgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IE5hdGl2ZSBNZW1vcnkgSW5zdHJ1bWVudGF0aW9uOiBhc3NpZ24gY2xhc3Mg
bmFtZSB0byB0aGUgaGVhcCBncmFwaCBub2RlIGF1dG9tYXRpY2FsbHkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMGNkZjhmMTVi
N2M2YTI1NTI2ZGQ3NmRkYzQ2ZDA4ZDkwZDY5ODI2OC4uNzY4N2VhY2E4OGM5ZjMyOTI1NjAyOWFk
YjMzODE5M2IyNGM3ZjJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOS0xOSAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBCcmluZyBXZWJLaXQgdXAgdG8g
c3BlZWQgd2l0aCBsYXRlc3QgRW5jcnlwdGVkIE1lZGlhIHNwZWMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzAzNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlZmluZSB0aGUgRU5BQkxFX0VOQ1JZUFRF
RF9NRURJQV9WMiBzZXR0aW5nLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTMt
MDItMDYgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtX
VEZVUkxdIEZpeCBlcnJvbmVvdXMgaGVhZGVyIGluY2x1c2lvbnMgaW4gV1RGVVJMIGNvZGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA3OGNjMGVjMzQyOWY4Yjg1N2RjNDAxYjE2YTQ2Y2U0YmE5NWVhNGFmLi4yZTBm
NzE5MjVmNWI2NGIzYWYwMThlMGNmMWE1OTEzMTM1YTFhYTVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTc4IEBACisyMDEyLTA5LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIEJyaW5nIFdlYktpdCB1cCB0byBzcGVlZCB3aXRoIGxhdGVzdCBFbmNyeXB0ZWQg
TWVkaWEgc3BlYy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk3MDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIG1vc3QgcmVjZW50IHZlcnNpb24gb2YgdGhlIEVuY3J5cHRlZCBNZWRpYSBFeHRlbnNp
b25zIHNwZWMgYnJlYWtzIGZ1bmN0aW9uYWxpdHkgb3V0IG9mIHRoZQorICAgICAgICBIVE1MTWVk
aWFFbGVtZW50IGFuZCBpbnRvIG5ldyBNZWRpYUtleXMgYW5kIE1lZGlhS2V5U2Vzc2lvbiBjbGFz
c2VzLiBTaW5jZSB0aGUgQ0RNIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgaGFzIGJlZW4gcHVsbGVk
IG91dCBvZiB0aGUgbWVkaWEgZWxlbWVudCwgd2UgY3JlYXRlIGEgcHJveHkgQ0RNIGNsYXNzIGFu
ZCBmYWN0b3J5IHN5c3RlbSBmb3IKKyAgICAgICAgY3JlYXRpbmcgc3BlY2lmaWMgQ0RNIGtleSBz
eXN0ZW0gaW1wbGVtZW50YXRpb25zLiBUaGUgc3BlYyBhbHNvIGJyZWFrcyBvdXQgTWVkaWFLZXlF
dmVudAorICAgICAgICBpbnRvIGRpc3RpbmN0IGV2ZW50IGNsYXNzZXMsIE1lZGlhS2V5TmVlZGVk
RXZlbnQgYW5kIE1lZGlhS2V5TWVzc2FnZUV2ZW50LCBmb3IgbmVlZGtleSBhbmQKKyAgICAgICAg
a2V5bWVzc2FnZSBldmVudHMsIHJlc3BlY3RpdmVseS4KKworICAgICAgICBUZXN0czogbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1ldmVudHMuaHRtbAorICAgICAgICAg
ICAgICAgbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXguaHRt
bAorCisgICAgICAgIENETSBpcyBhIHByb3h5IGNsYXNzIChhIGxhIE1lZGlhUGxheWVyKSBmb3Ig
YSBzcGVjaWZpYyBDRE1Qcml2YXRlSW50ZXJmYWNlIGltcGxlbWVudGF0aW9uLiBBIENETQorICAg
ICAgICBpbXBsZW1lbnRhdGlvbiBpcyByZWdpc3RlcmVkIHdpdGggdGhlIENETUZhY3RvcnkgYW5k
IHdpbGwgYmUgY3JlYXRlZCBpZiB0aGF0IGltcGxlbWVudGF0aW9uIHN1cHBvcnRzCisgICAgICAg
IHRoZSBrZXkgc3lzdGVtIHBhc3NlZCBpbnRvIHRoZSBNZWRpYUtleXMgY29uc3RydWN0b3IuIENE
TVNlc3Npb24gaXMgYSBwdXJlLXZpcnR1YWwgaW50ZXJmYWNlIGV4cG9zZWQKKyAgICAgICAgYnkg
Y29uY3JldGUgQ0RNUHJpdmF0ZSBzdWJjbGFzc2VzLiAgSXRzIGxpZmV0aW1lIGlzIG93bmVkIGJ5
IE1lZGlhS2V5U2Vzc2lvbi4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aW5zdGFsbGVkQ0RNRmFjdG9yaWVzKTogSW5p
dGlhbGl6ZSBhbGwgdGhlIGtub3duIENETSBzdWJ0eXBlcy4gUG9ydHMgd2lsbCBhZGQgQ0RNIGlt
cGxlbWVudGF0aW9ucyBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpyZWdpc3RlckNETUZh
Y3RvcnkpOiBSZWdpc3RlcnMgYSBuZXcgQ0RNRmFjdG9yeSB1c2luZyB0aGUgcGFzc2VkIGluIGZ1
bmN0aW9uIHBvaW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6Q0RNRmFjdG9yeUZvcktleVN5c3Rl
bSk6IFJldHVybiB0aGUgZmlyc3QgQ0RNIGZhY3Rvcnkgd2hpY2ggc3VwcG9ydHMgdGhlIHJlcXVl
c3RlZCBrZXkgc3lzdGVtLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0tleVN5c3Rl
bSk6IFdhbGsgdGhlIGluc3RhbGxlZCBDRE1zIGFuZCBhc2sgaWYgdGhlIGdpdmVuIGtleSBzeXN0
ZW0gaXMgc3VwcG9ydGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdXBwb3J0c0tleVN5c3Rl
bU1JTUVUeXBlQW5kQ29kZWMpOiBEaXR0bywgd2l0aCBhbiBhZGRpdGlvbmFsIE1JTUUgdHlwZSBh
bmQgY29kZWMgc3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpjcmVhdGUpOiBTaW1wbGUg
Y29uc3RydWN0b3Igd3JhcHBlci4KKyAgICAgICAgKFdlYkNvcmU6OkNETTo6Q0RNKTogU2ltcGxl
IGNvbnN0cnVjdG9yOyBjYWxscyBiZXN0Q0RNRm9yS2V5U3lzdGVtKCkgdG8gY3JlYXRlIGl0J3Mg
cHJpdmF0ZSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNETTo6fkNETSk6IFNp
bXBsZSBkZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpjcmVhdGVTZXNzaW9uKTog
Q3JlYXRlcyBhIG5ldyBDRE1TZXNzaW9uLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjprZXlTeXN0ZW0pOiBTaW1w
bGUgYWNjZXNzb3IgZm9yIG1fa2V5U3lzdGVtLgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lv
bjo6Q0RNU2Vzc2lvbik6IFNpbXBsZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkNE
TVNlc3Npb246On5DRE1TZXNzaW9uKTogU2ltcGxlIGRlc3RydWN0b3IuCisgICAgICAgICogTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNUHJpdmF0ZUludGVyZmFjZTo6Q0RNUHJpdmF0ZUludGVyZmFjZSk6IFNpbXBsZSBjb25z
dHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVJbnRlcmZhY2U6On5DRE1Qcml2
YXRlSW50ZXJmYWNlKTogU2ltcGxlIGRlc3RydWN0b3IuCisKKyAgICAgICAgVGhlIG5ldyBjbGFz
c2VzLCBNZWRpYUtleU1lc3NhZ2VFdmVudCBhbmQgTWVkaWFLZXlOZWVkZWRFdmVudCwgdGFrZSBk
aXN0aW5jdCBzdWJzZXRzIG9mIHRoZSBpbml0aWFsaXplcnMgb2YKKyAgICAgICAgdGhlIG9yaWdp
bmFsIE1lZGlhS2V5TWVzc2FnZUV2ZW50LgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhS2V5RXZlbnQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdl
RXZlbnRJbml0OjpNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQpOiBJbml0aWFsaXplciBub3cgb25s
eSB0YWtlcyBtZXNzYWdlIGFuZCBkZXN0aW5hdGlvblVSTAorICAgICAgICAgICAgcGFyYW1ldGVy
cy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50OjpNZWRpYUtleU1lc3Nh
Z2VFdmVudCk6IFNpbXBsZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5
TWVzc2FnZUV2ZW50Ojp+TWVkaWFLZXlNZXNzYWdlRXZlbnQpOiBTaW1wbGUgZGVzdHJ1Y3Rvci4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50OjppbnRlcmZhY2VOYW1lKTog
U3RhbmRhcmQgaW50ZXJmYWNlTmFtZS4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5TWVzc2FnZUV2ZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFLZXlFdmVudC5oLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlRXZlbnQ6
OmNyZWF0ZSk6IFNpbXBsZSBjb25zdHJ1Y3Rpb24gd3JhcHBlci4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhS2V5TWVzc2FnZUV2ZW50OjptZXNzYWdlKTogU2ltcGxlIGFjY2Vzc29yIGZvciBtX21l
c3NhZ2UuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVudDo6ZGVzdGluYXRp
b25VUkwpOiBTaW1wbGUgYWNjZXNzb3IgZm9yIG1fZGVzdGluYXRpb25VUkwuCisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5pZGw6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVudC5pZGwuCisgICAgICAgICogTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50LmguCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUtleU5lZWRlZEV2ZW50SW5pdDo6TWVkaWFLZXlOZWVkZWRFdmVudEluaXQpOiBJbml0aWFs
aXplciBub3cgb25seSB0YWtlcyBpbml0RGF0YSBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleU5lZWRlZEV2ZW50OjpNZWRpYUtleU5lZWRlZEV2ZW50KTogU2ltcGxlIGNvbnN0
cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlOZWVkZWRFdmVudDo6fk1lZGlhS2V5
TmVlZGVkRXZlbnQpOiBTaW1wbGUgZGVzdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
S2V5TmVlZGVkRXZlbnQ6OmludGVyZmFjZU5hbWUpOiBTdGFuZGFyZCBpbnRlcmZhY2VOYW1lLgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXZlbnQuaC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhS2V5TmVlZGVkRXZlbnQ6OmNyZWF0ZSk6IFNpbXBsZSBjb25zdHJ1Y3Rp
b24gd3JhcHBlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5TmVlZGVkRXZlbnQ6OmluaXRE
YXRhKTogU2ltcGxlIGFjY2Vzc29yIGZvciBtX2luaXREYXRhLgorICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGw6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVudC5pZGwuCisKKyAgICAgICAgTWVkaWFLZXlTZXNz
aW9uIGlzIGEgbmV3IGNsYXNzIHRoYXQgbWFwcyBrZXlzIGFuZCBrZXkgcmVxdWVzdHMgdG8gYSBn
aXZlbiBzZXNzaW9uIElEOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246
OmNyZWF0ZSk6IFNpbXBsZSBjb25zdHJ1Y3Rpb24gd3JhcHBlci4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhS2V5U2Vzc2lvbjo6TWVkaWFLZXlTZXNzaW9uKTogU2ltcGxlIGNvbnN0cnVjdG9yLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjp+TWVkaWFLZXlTZXNzaW9uKTogU2lt
cGxlIGRlc3RydWN0b3I7IGNhbGxzIGNsb3NlKCkuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtl
eVNlc3Npb246OnNldEVycm9yKTogU2ltcGxlIHNldHRlciBmb3IgbV9lcnJvcjsKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Y2xvc2UpOiBUZWxsIHRoZSBDRE0gdG8gY2xlYXIg
YW55IHNhdmVkIHNlc3Npb24ga2V5cy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lv
bjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KTogU3RhcnQgYSBvbmUtc2hvdCB0aW1lciwgaGFuZGxlZCBp
biBrZXlSZXF1ZXN0VGltZXJGaXJlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lv
bjo6a2V5UmVxdWVzdFRpbWVyRmlyZWQpOiBGb2xsb3cgdGhlIHN0ZXBzIGluIHRoZSBzcGVjOyBh
c2sgdGhlIENETSB0byBnZW5lcmF0ZSBhIGtleSByZXF1ZXN0LgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFLZXlTZXNzaW9uOjphZGRLZXkpOiBTdGFydCBhIG9uZS1zaG90IHRpbWVyLCBoYW5kbGVk
IGluIGFkZEtleVRpbWVyRmlyZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246
OmFkZEtleVRpbWVyRmlyZWQpOiBGb2xsb3cgdGhlIHN0ZXBzIGluIHRoZSBzcGVjOyBwcm92aWRl
IHRoZSBrZXkgZGF0YSB0IG90aGUgQ0RNLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlT
ZXNzaW9uOjprZXlTeXN0ZW0pOiBTaW1wbGUgYWNjZXNzb3IgZm9yIG1fa2V5U3lzdGVtLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpzZXNzaW9uSWQpOiBTaW1wbGUgYWNjZXNz
b3IgZm9yIG1fc2Vzc2lvbklkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpl
cnJvcik6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9lcnJvcjsKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGw6CisKKyAgICAgICAgTWVkaWFLZXlTZXNz
aW9uIGluaGVyaXRzIGZyb20gRXZlbnRUYXJnZXQsIGFuZCBtdXN0IG92ZXJyaWRlIHRoZSBwdXJl
IHZpcnR1YWwgZnVuY3Rpb25zIGluIHRoYXQgY2xhc3M6CisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhS2V5U2Vzc2lvbjo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUtleVNlc3Npb246OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
S2V5U2Vzc2lvbjo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtl
eVNlc3Npb246OmV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNl
c3Npb246OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtl
eVNlc3Npb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorCisgICAgICAgIE1lZGlhS2V5cyBp
cyBhIG5ldyBjbGFzcyB0aGF0IGVuY2Fwc3VsYXRlcyBhIENETSBhbmQgYSBudW1iZXIgb2Yga2V5
IHNlc3Npb25zOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleXM6OmNyZWF0ZSk6IFRocm93IGFu
IGV4Y2VwdGlvbiBpZiB0aGUga2V5IHN5c3RlbSBwYXJhbWV0ZXIgaXMgdW5zdXBwb3J0ZWQ7IGNy
ZWF0ZSBhIENETSBvYmplY3QKKyAgICAgICAgICAgIGFuZCBhIG5ldyBNZWRpYUtleXMgc2Vzc2lv
bi4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6TWVkaWFLZXlzKTogU2ltcGxlIGNvbnN0
cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlzOjp+TWVkaWFLZXlzKTogU2ltcGxl
IGRlc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleXM6OmNyZWF0ZVNlc3Npb24p
OiBGb2xsb3cgdGhlIHNwZWMgYW5kIGNyZWF0ZSBhIG5ldyBrZXkgc2Vzc2lvbi4KKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5pZGwuCisKKyAgICAgICAgUHJvdmlkZSBhIG5ldyBpbnRl
cmZhY2UgdG8gSFRNTE1lZGlhRWxlbWVudCBmb3IgTWVkaWFQbGF5ZXIgd2hpY2ggZG9lcyBub3Qg
cmVxdWlyZSBhIHNlc3Npb25JZCBvciBhIGtleSBzeXN0ZW06CisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6a2V5TmVlZGVkKToKKwor
ICAgICAgICBNZWRpYUtleUVycm9yIG5vdyBoYXMgYSBzeXN0ZW1Db2RlIHBhcmFtZXRlciBhbmQg
bWVtYmVyIHZhcmlhYmxlLgorICAgICAgICAqIGh0bWwvTWVkaWFLZXlFcnJvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFLZXlFcnJvcjo6Y3JlYXRlKTogVGFrZSBhIHN5c3RlbUNvZGUgcGFy
YW1ldGVyIHdpdGggYSBkZWZhdWx0ICgwKSB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
S2V5RXJyb3I6Ok1lZGlhS2V5RXJyb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
S2V5RXJyb3I6OnN5c3RlbUNvZGUpOiBTaW1wbGUgYWNjZXNzb3IgZm9yIG1fc3lzdGVtQ29kZS4K
KyAgICAgICAgKiBodG1sL01lZGlhS2V5RXJyb3IuaWRsOgorCisgICAgICAgIEFkZCBuZXcgbWV0
aG9kcyB0byBIVE1MTWVkaWFFbGVtZW50IHRvIHN1cHBvcnQgTWVkaWFLZXlzLiBTdXBwb3J0IGRp
ZmZlcmVudCBpbml0aWFsaXplcgorICAgICAgICBmb3IgdGhlIE1lZGlhS2V5TmVlZGVkRXZlbnQu
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhS2V5cyk6IFNpbXBsZSBzZXR0ZXIgZm9yIG1fbWVk
aWFLZXlzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJL
ZXlOZWVkZWQpOiBUaGlzIHZlcnNpb24gdGFrZXMgZmV3ZXIgcGFyYW1ldGVycworICAgICAgICAg
ICAgdGhhbiB0aGUgZGVwcmVjYXRlZCB2ZXJzaW9uLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlh
RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFLZXlz
KTogU2ltcGxlIGFjY2Vzc29yIGZvciBtX21lZGlhS2V5cy4KKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaWRsOiBBZGQgdGhlIG1lZGlhS2V5cyBhdHRyaWJ1dGUuCisKKyAgICAgICAg
QWRkIGFuIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpIGNoZWNrIHRvIHRoZSBleGlzdGluZyBF
TkFCTEUoRU5DUllQVEVEX01FRElBKSBvbmU6CisgICAgICAgICogaHRtbC9NZWRpYUVycm9yLmg6
CisgICAgICAgICogaHRtbC9NZWRpYUVycm9yLmlkbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpiZXN0TWVkaWFFbmdpbmVG
b3JUeXBlQW5kQ29kZWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0
c1R5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6a2V5TmVlZGVkKTogVGhpcyB2ZXJzaW9uIHRha2Vz
IGZld2VyIHBhcmFtZXRlcnMgdGhhbiB0aGUKKyAgICAgICAgICAgIGRlcHJlY2F0ZWQgdmVyc2lv
bi4KKworICAgICAgICBTdXBwb3J0IHRoZSBuZXcgdmVyc2lvbiBvZiBjYW5QbGF5VHlwZSB3aGlj
aCB0YWtlcyBhbiBleHRyYSBwYXJhbWV0ZXI6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmV4dGVuZGVkU3Vw
cG9ydHNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVR
VEtpdDo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVRVEtpdDo6ZXh0ZW5kZWRTdXBwb3J0c1R5cGUpOgorCisgICAgICAgIEFkZCBhIG1v
Y2sgQ0RNIGZvciB1c2Ugd2l0aGluIERSVCBhbmQgV0tUUiB0byB0ZXN0IHRoZSBNZWRpYUtleXMg
YW5kIE1lZGlhS2V5U2Vzc2lvbgorICAgICAgICBBUElzIGFuZCBldmVudHM6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppbml0
aWFsaXplTW9ja0NETSk6IEFkZCB0aGUgTW9ja0NETSBjbGFzcyB0byB0aGUgQ0RNIGZhY3Rvcmll
cy4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmlkbDogQWRkIHRoZSBpbml0aWFsaXplTW9ja0NETSgpIG1ldGhvZC4KKyAgICAgICAg
KiB0ZXN0aW5nL01vY2tDRE0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06
OnN1cHBvcnRzS2V5U3lzdGVtKTogT25seSBzdXBwb3J0cyB0aGUgJ2NvbS53ZWJjb3JlLm1vY2sn
IGtleSBzeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0c01JTUVUeXBl
KTogT25seSBzdXBwb3J0cyB0aGUgJ3ZpZGVvL21vY2snIG1pbWUgdHlwZS4KKyAgICAgICAgKFdl
YkNvcmU6OmluaXREYXRhUHJlZml4KTogU3RhdGljIG1ldGhvZCB3aGljaCByZXR1cm5zIGEgVWlu
dDhBcnJheSBjb250YWluaW5nICdtb2NrJy4KKyAgICAgICAgKFdlYkNvcmU6OmtleVByZWZpeCk6
IFN0YXRpYyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIFVpbnQ4QXJyYXkgY29udGFpbmluZyAna2V5
Jy4KKyAgICAgICAgKFdlYkNvcmU6OmtleVJlcXVlc3QpOiBTdGF0aWMgbWV0aG9kIHdoaWNoIHJl
dHVybnMgYSBVaW50OEFycmF5IGNvbnRhaW5pbmcgJ3JlcXVlc3QnLgorICAgICAgICAoV2ViQ29y
ZTo6Z2VuZXJhdGVTZXNzaW9uSWQpOiBSZXR1cm4gYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcg
bnVtYmVyLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETVNlc3Npb246Ok1vY2tDRE1TZXNzaW9u
KTogU2ltcGxlIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETVNlc3Npb246
OmdlbmVyYXRlS2V5UmVxdWVzdCk6IElnbm9yZXMgdGhlIHBhcmFtZXRlcnMgYW5kIHJldHVybnMg
YSBrZXlSZXF1ZXN0KCkgYXJyYXkuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNU2Vzc2lvbjo6
cmVsZWFzZUtleXMpOiBOby1vcC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1TZXNzaW9uOjph
ZGRLZXkpOiBDaGVja3MgdGhhdCB0aGUga2V5IHN0YXJ0cyB3aXRoIHRoZSBrZXlQcmVmaXgoKSBh
cnJheS4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE0uaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ0RNOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6fk1vY2tD
RE0pOiBTaW1wbGUgZGVzdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06Ok1vY2tD
RE0pOiBTaW1wbGUgY29uc3RydWN0b3IuCisKKyAgICAgICAgQWRkIHRoZSBuZXcgY2xhc3NlcyB0
byB0aGUgYnVpbHQgc3lzdGVtOgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
V2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorCisgICAgICAgIE1pc2NlbGFuZW91cyBjaGFuZ2VzOgorICAgICAgICAqIGRvbS9FdmVu
dE5hbWVzLmluOiBBZGQgdGhlIHR3byBuZXcgZXZlbnQgdHlwZXMsIE1lZGlhS2V5TWVzc2FnZUV2
ZW50IGFuZCBNZWRpYUtleU5lZWRlZEV2ZW50LgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZh
Y3RvcnkuaW46IEFkZCB0aGUgbmV3IEV2ZW50VGFyZ2V0LCBNZWRpYUtleVNlc3Npb24uCisgICAg
ICAgICogcGFnZS9ET01XaW5kb3cuaWRsOiBBZGQgY29uc3RydWN0b3JzIGZvciB0aGUgbmV3IGNs
YXNzZXMgdG8gdGhlIHdpbmRvdyBvYmplY3QuCisKIDIwMTMtMDItMDYgIERpbWEgR29yYmlrICA8
ZGdvcmJpa0BhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcmUgdGhlIGxhbmd1YWdlIGludGVybmFs
bHkgaW5zdGVhZCBvZiB1c2luZyBsYW5nIGF0dHJpYnV0ZSBmb3IgV2ViVlRUIG5vZGVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKaW5kZXggOTQ3MDIzNzc1NTAyNWYzOTU4MDM5MDQyMDQ3M2JlYmUw
NzEzMTM1Yy4uMjlkMWRmNjAyNTlkZWNkNzBiMzgyZTNhMmRmN2I1MjE4ZmJiMjM4YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNjUsMTEgKzY1LDExIEBAIEVOQUJMRV9ESUFMT0dfRUxF
TUVOVCA9IDsKIEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEID0gOwogRU5BQkxFX0RPTTRfRVZFTlRT
X0NPTlNUUlVDVE9SID0gRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SOwogRU5BQkxFX0RS
QUdHQUJMRV9SRUdJT04gPSA7Ci1FTkFCTEVfRU5DUllQVEVEX01FRElBID0gJChFTkFCTEVfRU5D
UllQVEVEX01FRElBXyQoUExBVEZPUk1fTkFNRSkpOwotRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9t
YWNvc3ggPSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfbWFjb3N4XyQoVEFSR0VUX01BQ19PU19Y
X1ZFUlNJT05fTUFKT1IpKTsKLUVOQUJMRV9FTkNSWVBURURfTUVESUFfbWFjb3N4XzEwNzAgPSA7
Ci1FTkFCTEVfRU5DUllQVEVEX01FRElBX21hY29zeF8xMDgwID0gOwotRU5BQkxFX0VOQ1JZUFRF
RF9NRURJQV9tYWNvc3hfMTA5MCA9IEVOQUJMRV9FTkNSWVBURURfTUVESUE7CitFTkFCTEVfRU5D
UllQVEVEX01FRElBX1YyID0gJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyXyQoUkVBTF9QTEFU
Rk9STV9OQU1FKSk7CitFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeCA9ICQoRU5BQkxF
X0VOQ1JZUFRFRF9NRURJQV9tYWNvc3hfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikp
OworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3hfMTA3MCA9IDsKK0VOQUJMRV9FTkNS
WVBURURfTUVESUFfVjJfbWFjb3N4XzEwODAgPSA7CitFTkFCTEVfRU5DUllQVEVEX01FRElBX1Yy
X21hY29zeF8xMDkwID0gRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMjsKIEVOQUJMRV9GSUxFX1NZ
U1RFTSA9IDsKIEVOQUJMRV9GSUxURVJTID0gRU5BQkxFX0ZJTFRFUlM7CiBFTkFCTEVfRlVMTFND
UkVFTl9BUEkgPSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSV8kKFBMQVRGT1JNX05BTUUpKTsKQEAg
LTE2Nyw0ICsxNjcsNCBAQCBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxF
X1hIUl9USU1FT1VUID0gRU5BQkxFX1hIUl9USU1FT1VUOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVf
WFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJM
RV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NBTlZBU19Q
QVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAk
KEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVO
QUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19FWENMVVNJT05TKSAkKEVO
QUJMRV9DU1NfRklMVEVSUykgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NT
U19TSEFERVJTKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19TVElDS1lf
UE9TSVRJT04pICQoRU5BQkxFX0NTU19UUkFOU0ZPUk1TX0FOSU1BVElPTlNfVU5QUkVGSVhFRCkg
JChFTkFCTEVfQ1NTX1ZBUklBQkxFUykgJChFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUykg
JChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5B
QkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJM
RV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxF
X0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElBTE9HX0VMRU1FTlQpICQoRU5BQkxFX0RJ
UkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJM
RV9EUkFHR0FCTEVfUkVHSU9OKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0ZJ
TEVfU1lTVEVNKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChF
TkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJRERFTl9QQUdF
X0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpICQoRU5BQkxF
X0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1FX1NFQU1MRVNTKSAkKEVOQUJMRV9JTkRFWEVE
X0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09M
T1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElN
RSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VF
SykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5E
T1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdB
Q1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9M
SU5LX1BSRUZFVENIKSAkKEVOQUJMRV9MSU5LX1BSRVJFTkRFUikgJChFTkFCTEVfTUFUSE1MKSAk
KEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxF
X01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NSUNST0RBVEEpICQoRU5B
QkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMp
ICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQo
RU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BMVUdJTl9QUk9YWV9GT1JfVklERU8pICQo
RU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5B
QkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVT
T0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9T
SEFET1dfRE9NKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1BFRUNIX1NZTlRI
RVNJUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9TVFlMRV9TQ09QRUQpICQoRU5B
QkxFX1NVQlBJWEVMX0xBWU9VVCkgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNf
QklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkg
JChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05M
WSkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkg
JChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9XRUJHTCkgJChF
TkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlO
RykgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQp
ICQoRkVBVFVSRV9ERUZJTkVTXyQoUExBVEZPUk1fTkFNRSkpOworRkVBVFVSRV9ERUZJTkVTID0g
JChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQo
RU5BQkxFX0JMT0IpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkp
ICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVf
Q1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04p
ICQoRU5BQkxFX0NTU19FWENMVVNJT05TKSAkKEVOQUJMRV9DU1NfRklMVEVSUykgJChFTkFCTEVf
Q1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChF
TkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFERVJTKSAkKEVOQUJMRV9DU1NfQ09N
UE9TSVRJTkcpICQoRU5BQkxFX0NTU19TVElDS1lfUE9TSVRJT04pICQoRU5BQkxFX0NTU19UUkFO
U0ZPUk1TX0FOSU1BVElPTlNfVU5QUkVGSVhFRCkgJChFTkFCTEVfQ1NTX1ZBUklBQkxFUykgJChF
TkFCTEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJM
RV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVO
QUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVO
QUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFC
TEVfRElBTE9HX0VMRU1FTlQpICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RP
TTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJMRV9EUkFHR0FCTEVfUkVHSU9OKSAkKEVOQUJM
RV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GSUxU
RVJTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVf
R0VPTE9DQVRJT04pICQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAk
KEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVf
SUZSQU1FX1NFQU1MRVNTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBV
VF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVf
REFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9E
QVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9E
RUJVR0dFUikgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xF
R0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVO
QUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9M
SU5LX1BSRVJFTkRFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQo
RU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxF
X01IVE1MKSAkKEVOQUJMRV9NSUNST0RBVEEpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkg
JChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05PVElGSUNBVElPTlMp
ICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQo
RU5BQkxFX1BMVUdJTl9QUk9YWV9GT1JfVklERU8pICQoRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQp
ICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFV
RVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChF
TkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFET1dfRE9NKSAkKEVOQUJMRV9TSEFS
RURfV09SS0VSUykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1FMX0RBVEFC
QVNFKSAkKEVOQUJMRV9TVFlMRV9TQ09QRUQpICQoRU5BQkxFX1NVQlBJWEVMX0xBWU9VVCkgJChF
TkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19G
T05UUykgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5H
KSAkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWSkgJChFTkFCTEVfVE9VQ0hfSUNPTl9M
T0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVklERU8pICQoRU5BQkxF
X1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJM
RV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VSUykgJChF
TkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRkVBVFVSRV9ERUZJTkVTXyQoUExB
VEZPUk1fTkFNRSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggMTk4NGNmZGU4NzFjNjlmYmNhMGQ3Nzc1Mjg5
OGNhZWZjZjI1MDljMi4uZDhmZTY2MDE1M2E1ZWViYjBkNjI2OWIxYjAxNzNhNzVmYzZlZThmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oCkBAIC0xMTY4LDYgKzExNjgsNyBAQAogCiAjaWYgUExBVEZPUk0oTUFDKSAm
JiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
OTAKICNkZWZpbmUgSEFWRV9BVkZPVU5EQVRJT05fVEVYVF9UUkFDS19TVVBQT1JUIDEKKyNkZWZp
bmUgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiAxCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1B
QykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpIHx8IChQTEFURk9STShXSU4pICYm
ICFPUyhXSU5DRSkgJiYgIVBMQVRGT1JNKFdJTl9DQUlSTykpIHx8IFBMQVRGT1JNKEJMQUNLQkVS
UlkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnCmluZGV4IDk0NzAyMzc3NTUwMjVmMzk1ODAzOTA0MjA0NzNiZWJlMDcxMzEz
NWMuLjc5NzcyZmJhMjZlYTc5NTVhOWVlYzg5ZTBiZjliNWVlNmI0ZDJhY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
CkBAIC02NSwxMSArNjUsMTEgQEAgRU5BQkxFX0RJQUxPR19FTEVNRU5UID0gOwogRU5BQkxFX0RJ
UkVDVE9SWV9VUExPQUQgPSA7CiBFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IgPSBFTkFC
TEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I7CiBFTkFCTEVfRFJBR0dBQkxFX1JFR0lPTiA9IDsK
LUVOQUJMRV9FTkNSWVBURURfTUVESUEgPSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfJChQTEFU
Rk9STV9OQU1FKSk7Ci1FTkFCTEVfRU5DUllQVEVEX01FRElBX21hY29zeCA9ICQoRU5BQkxFX0VO
Q1JZUFRFRF9NRURJQV9tYWNvc3hfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwot
RU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9tYWNvc3hfMTA3MCA9IDsKLUVOQUJMRV9FTkNSWVBURURf
TUVESUFfbWFjb3N4XzEwODAgPSA7Ci1FTkFCTEVfRU5DUllQVEVEX01FRElBX21hY29zeF8xMDkw
ID0gRU5BQkxFX0VOQ1JZUFRFRF9NRURJQTsKK0VOQUJMRV9FTkNSWVBURURfTUVESUFfVjIgPSAk
KEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfJChSRUFMX1BMQVRGT1JNX05BTUUpKTsKK0VOQUJM
RV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4ID0gJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1Yy
X21hY29zeF8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSk7CitFTkFCTEVfRU5DUllQ
VEVEX01FRElBX1YyX21hY29zeF8xMDcwID0gOworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9t
YWNvc3hfMTA4MCA9IDsKK0VOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEwOTAgPSBF
TkFCTEVfRU5DUllQVEVEX01FRElBX1YyOwogRU5BQkxFX0ZJTEVfU1lTVEVNID0gOwogRU5BQkxF
X0ZJTFRFUlMgPSBFTkFCTEVfRklMVEVSUzsKIEVOQUJMRV9GVUxMU0NSRUVOX0FQSSA9ICQoRU5B
QkxFX0ZVTExTQ1JFRU5fQVBJXyQoUExBVEZPUk1fTkFNRSkpOwpAQCAtMTY3LDQgKzE2Nyw0IEBA
IEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dPUktFUlM7CiBFTkFCTEVfWEhSX1RJTUVPVVQgPSBF
TkFCTEVfWEhSX1RJTUVPVVQ7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJF
X0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJE
X0NBTlZBUykgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NB
TlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9ORVhU
KSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19ERVZJQ0Vf
QURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJT
KSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNP
TFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5B
QkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX1NUSUNLWV9QT1NJVElPTikgJChFTkFC
TEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19VTlBSRUZJWEVEKSAkKEVOQUJMRV9DU1NfVkFS
SUFCTEVTKSAkKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKSAkKEVOQUJMRV9DU1MzX1RF
WFQpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NV
UFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJf
SVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFU
SU9OKSAkKEVOQUJMRV9ESUFMT0dfRUxFTUVOVCkgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkg
JChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0RSQUdHQUJMRV9SRUdJ
T04pICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5B
QkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAk
KEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9U
VExJTkcpICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAk
KEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5B
QkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5Q
VVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxF
X0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZB
U0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChF
TkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklY
RVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQo
RU5BQkxFX0xJTktfUFJFUkVOREVSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX1NP
VVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkg
JChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01JQ1JPREFUQSkgJChFTkFCTEVfTU9VU0VfQ1VSU09S
X1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTk9USUZJ
Q0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUERGS0lUX1BM
VUdJTikgJChFTkFCTEVfUExVR0lOX1BST1hZX0ZPUl9WSURFTykgJChFTkFCTEVfUFJPR1JFU1Nf
RUxFTUVOVCkgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUVVPVEEpICQoRU5B
QkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FV
RVJZKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURPV19ET00pICQoRU5B
QkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9T
UUxfREFUQUJBU0UpICQoRU5BQkxFX1NUWUxFX1NDT1BFRCkgJChFTkFCTEVfU1VCUElYRUxfTEFZ
T1VUKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFC
TEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FV
VE9TSVpJTkcpICQoRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZKSAkKEVOQUJMRV9UT1VD
SF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykg
JChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8p
ICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XT1JL
RVJTKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChGRUFUVVJFX0RFRklO
RVNfJChQTEFURk9STV9OQU1FKSk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5E
RVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQkxPQikgJChF
TkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5F
TF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJ
T05fQlJFQUspICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0VY
Q0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9O
UykgJChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFC
TEVfQ1NTX1NUSUNLWV9QT1NJVElPTikgJChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9O
U19VTlBSRUZJWEVEKSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX0NPTkRJ
VElPTkFMX1JVTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVf
SEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VM
RU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxF
TUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESUFMT0dfRUxFTUVO
VCkgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RS
VUNUT1IpICQoRU5BQkxFX0RSQUdHQUJMRV9SRUdJT04pICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJ
QV9WMikgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZV
TExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChF
TkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0hJR0hfRFBJ
X0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1Mp
ICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFC
TEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX0RBVEVUSU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQo
RU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFC
TEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJM
RV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElP
TlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJf
QVVESU8pICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJTktfUFJFUkVOREVSKSAk
KEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RB
VElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxF
X01JQ1JPREFUQSkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FU
T1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9W
SVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUExVR0lOX1BS
T1hZX0ZPUl9WSURFTykgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUFJPWElN
SVRZX0VWRU5UUykgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9TQ1JJUFRFRF9T
UEVFQ0gpICQoRU5BQkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVO
QUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TUUxfREFUQUJBU0UpICQoRU5BQkxFX1NU
WUxFX1NDT1BFRCkgJChFTkFCTEVfU1VCUElYRUxfTEFZT1VUKSAkKEVOQUJMRV9TVkcpICQoRU5B
QkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9U
RU1QTEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RFWFRf
Tk9USUZJQ0FUSU9OU19PTkxZKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxF
X1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQo
RU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAk
KEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFJfVElNRU9V
VCkgJChFTkFCTEVfWFNMVCkgJChGRUFUVVJFX0RFRklORVNfJChQTEFURk9STV9OQU1FKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2MDVhMjFlZjNkZGZkZjJhODdmZTljYTI4
YTE1ZTFhZmY5NjUwMTQzLi4wN2IwNjE5MWZhM2RjMWU0ZjhjM2QxNTU3OTI5MmYwYTkzYTE5N2M0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI4LDYgKzI4LDcgQEAKIAogVlBB
VEggPSBcCiAgICAgJChXZWJDb3JlKSBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbSBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL2dlb2xvY2F0aW9uIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvaW5kZXhlZGRi
IFwKQEAgLTYyLDYgKzYzLDEwIEBAIFZQQVRIID0gXAogIwogCiBCSU5ESU5HX0lETFMgPSBcCisg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50
LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVl
ZGVkRXZlbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZp
bGVTeXN0ZW0uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxl
U3lzdGVtU3luYy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdp
bmRvd0ZpbGVTeXN0ZW0uaWRsIFwKQEAgLTM2NSw4ICszNzAsOCBAQCBCSU5ESU5HX0lETFMgPSBc
CiAgICAgJChXZWJDb3JlKS9odG1sL0ltYWdlRGF0YS5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRt
bC9NZWRpYUNvbnRyb2xsZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvTWVkaWFFcnJvci5p
ZGwgXAotCSQoV2ViQ29yZSkvaHRtbC9NZWRpYUtleUVycm9yLmlkbCBcCi0JJChXZWJDb3JlKS9o
dG1sL01lZGlhS2V5RXZlbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvTWVkaWFLZXlFcnJv
ci5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9NZWRpYUtleUV2ZW50LmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9odG1sL01pY3JvRGF0YUl0ZW1WYWx1ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRt
bC9SYWRpb05vZGVMaXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL1RleHRNZXRyaWNzLmlk
bCBcCkBAIC04MzgsNiArODQzLDEwIEBAIGlmZXEgKCQoZmluZHN0cmluZyBFTkFCTEVfREVUQUlM
U19FTEVNRU5ULCQoRkVBVFVSRV9ERUZJTkVTKSksIEVOQUJMRV9ERVRBSUxTX0VMCiAgICAgSFRN
TF9GTEFHUyA6PSAkKEhUTUxfRkxBR1MpIEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQ9MQogZW5kaWYK
IAoraWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIsJChGRUFUVVJF
X0RFRklORVMpKSwgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikKKwlIVE1MX0ZMQUdTIDo9ICQo
SFRNTF9GTEFHUykgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMj0xCitlbmRpZgorCiBpZmVxICgk
KGZpbmRzdHJpbmcgRU5BQkxFX01FVEVSX0VMRU1FTlQsJChGRUFUVVJFX0RFRklORVMpKSwgRU5B
QkxFX01FVEVSX0VMRU1FTlQpCiAgICAgSFRNTF9GTEFHUyA6PSAkKEhUTUxfRkxBR1MpIEVOQUJM
RV9NRVRFUl9FTEVNRU5UPTEKIGVuZGlmCkBAIC05NjIsNiArOTcxLDcgQEAgcHJlcHJvY2Vzc19p
ZGxzX3NjcmlwdCA9IHBlcmwgJChhZGRwcmVmaXggLUkgJChXZWJDb3JlKS8sICQoc29ydCAkKGRp
ciAkKDEpKSkpICQKIAogSURMX0lOQ0xVREVTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9i
YXR0ZXJ5IFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9maWxlc3lzdGVtIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZ2FtZXBh
ZCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmE4NDhmYzk0
MzA4NzgxMjk5MDUyOWFmYTY3ZTk2MGYzMTg0YzY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCkBAIC0wLDAgKzEsMTE5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNETS5oIgorCisj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIkNETVByaXZhdGUuaCIK
KyNpbmNsdWRlICJNZWRpYUtleUVycm9yLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlzLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Ry
dWN0IENETUZhY3RvcnkgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENETUZhY3RvcnkpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBDRE1GYWN0b3J5KENyZWF0ZUNE
TSBjb25zdHJ1Y3RvciwgQ0RNU3VwcG9ydHNLZXlTeXN0ZW0gc3VwcG9ydHNLZXlTeXN0ZW0pCisg
ICAgICAgIDogY29uc3RydWN0b3IoY29uc3RydWN0b3IpCisgICAgICAgICwgc3VwcG9ydHNLZXlT
eXN0ZW0oc3VwcG9ydHNLZXlTeXN0ZW0pCisgICAgeworICAgIH0KKworICAgIENyZWF0ZUNETSBj
b25zdHJ1Y3RvcjsKKyAgICBDRE1TdXBwb3J0c0tleVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbTsK
K307CisKK3N0YXRpYyBWZWN0b3I8Q0RNRmFjdG9yeSo+JiBpbnN0YWxsZWRDRE1GYWN0b3JpZXMo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPENETUZhY3RvcnkqPiwgY2Rtcywg
KCkpOworICAgIHN0YXRpYyBib29sIHF1ZXJpZWRDRE1zID0gZmFsc2U7CisgICAgaWYgKCFxdWVy
aWVkQ0RNcykgeworICAgICAgICBxdWVyaWVkQ0RNcyA9IHRydWU7CisKKyAgICAgICAgLy8gVE9E
TzogaW5pdGlhbGl6ZSBzcGVjaWZpYyBVQSBDRE1zLgorICAgIH0KKworICAgIHJldHVybiBjZG1z
OworfQorCit2b2lkIENETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KENyZWF0ZUNETSBjb25zdHJ1Y3Rv
ciwgQ0RNU3VwcG9ydHNLZXlTeXN0ZW0gc3VwcG9ydHNLZXlTeXN0ZW0pCit7CisgICAgaW5zdGFs
bGVkQ0RNRmFjdG9yaWVzKCkuYXBwZW5kKG5ldyBDRE1GYWN0b3J5KGNvbnN0cnVjdG9yLCBzdXBw
b3J0c0tleVN5c3RlbSkpOworfQorCitib29sIENETTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0pCit7CisgICAgVmVjdG9yPENETUZhY3RvcnkqPiYgY2RtRmFjdG9y
aWVzID0gaW5zdGFsbGVkQ0RNRmFjdG9yaWVzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjZG1GYWN0b3JpZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGNkbUZhY3Rvcmllc1tp
XS0+c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBDRE1GYWN0b3J5KiBDRE1G
YWN0b3J5Rm9yS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAgIFZlY3Rv
cjxDRE1GYWN0b3J5Kj4mIGNkbUZhY3RvcmllcyA9IGluc3RhbGxlZENETUZhY3RvcmllcygpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2RtRmFjdG9yaWVzLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIGlmIChjZG1GYWN0b3JpZXNbaV0tPnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkp
CisgICAgICAgICAgICByZXR1cm4gY2RtRmFjdG9yaWVzW2ldOworICAgIH0KKyAgICByZXR1cm4g
MDsKK30KKworUGFzc093blB0cjxDRE0+IENETTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtKQoreworICAgIGlmICghc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IENETShrZXlTeXN0ZW0p
KTsKK30KKworQ0RNOjpDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCisgICAgOiBtX2tleVN5
c3RlbShrZXlTeXN0ZW0pCit7CisgICAgbV9wcml2YXRlID0gQ0RNRmFjdG9yeUZvcktleVN5c3Rl
bShrZXlTeXN0ZW0pLT5jb25zdHJ1Y3Rvcih0aGlzKTsKK30KKworQ0RNOjp+Q0RNKCkKK3sKK30K
KworYm9vbCBDRE06OnN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sK
KyAgICByZXR1cm4gbV9wcml2YXRlLT5zdXBwb3J0c01JTUVUeXBlKG1pbWVUeXBlKTsKK30KKwor
UGFzc093blB0cjxDRE1TZXNzaW9uPiBDRE06OmNyZWF0ZVNlc3Npb24oKQoreworICAgIHJldHVy
biBtX3ByaXZhdGUtPmNyZWF0ZVNlc3Npb24oKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQV9WMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwODkwNzZkZTQzZDI2NWFlNmYzNTU0MmRlOTk2ODU0MTcy
MjUzYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETS5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENETV9o
CisjZGVmaW5lIENETV9oCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFLZXlFcnJvcjsKK2NsYXNzIE1lZGlh
S2V5U2Vzc2lvbjsKK2NsYXNzIE1lZGlhS2V5czsKKworY2xhc3MgQ0RNOworY2xhc3MgQ0RNUHJp
dmF0ZUludGVyZmFjZTsKK2NsYXNzIENETVNlc3Npb247CisKK3R5cGVkZWYgUGFzc093blB0cjxD
RE1Qcml2YXRlSW50ZXJmYWNlPiAoKkNyZWF0ZUNETSkoQ0RNKik7Cit0eXBlZGVmIGJvb2wgKCpD
RE1TdXBwb3J0c0tleVN5c3RlbSkoY29uc3QgU3RyaW5nJik7CisKK2NsYXNzIENETVNlc3Npb24g
eworcHVibGljOgorICAgIENETVNlc3Npb24oKSB7IH0KKyAgICB2aXJ0dWFsIH5DRE1TZXNzaW9u
KCkgeyB9CisKKyAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKCkgPSAwOworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRp
b25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNv
ZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUtleXMoKSA9IDA7CisgICAgdmlydHVh
bCBib29sIGFkZEtleShVaW50OEFycmF5KiwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2Fn
ZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkg
PSAwOworfTsKKworY2xhc3MgQ0RNIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
c0tleVN5c3RlbShjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDRE0+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJD
RE1GYWN0b3J5KENyZWF0ZUNETSwgQ0RNU3VwcG9ydHNLZXlTeXN0ZW0pOworICAgIH5DRE0oKTsK
KworICAgIGJvb2wgc3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKKyAgICBQYXNzT3du
UHRyPENETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKTsKKworICAgIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtKCkgY29uc3QgeyByZXR1cm4gbV9rZXlTeXN0ZW07IH0KKworcHJpdmF0ZToKKyAgICBD
RE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOworCisgICAgU3RyaW5nIG1fa2V5U3lzdGVtOwor
ICAgIE93blB0cjxDRE1Qcml2YXRlSW50ZXJmYWNlPiBtX3ByaXZhdGU7Cit9OworCit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjZW5kaWYgLy8gQ0RNX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWMzNzU4ODRmYTRmODJhMGVmOTFjZTJiMmE5MWRiN2UzOTE2MDlmMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
UHJpdmF0ZS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENETVByaXZh
dGVfaAorI2RlZmluZSBDRE1Qcml2YXRlX2gKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFf
VjIpCisKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0RNU2Vzc2lvbjsKKworY2xh
c3MgQ0RNUHJpdmF0ZUludGVyZmFjZSB7CitwdWJsaWM6CisgICAgQ0RNUHJpdmF0ZUludGVyZmFj
ZSgpIHsgfQorICAgIHZpcnR1YWwgfkNETVByaXZhdGVJbnRlcmZhY2UoKSB7IH0KKworICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYpID0gMDsKKworICAgIHZp
cnR1YWwgUGFzc093blB0cjxDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgPSAwOworfTsKKwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2VuZGlmIC8vIENE
TVByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTljODQz
YTY1MjFmOWIxYzdmMmQ5YmJiZjIwMzZjNDNlN2FjYTc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5j
cHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIk1lZGlhS2V5TWVzc2Fn
ZUV2ZW50LmgiCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL1VpbnQ4
QXJyYXkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRpYUtleU1lc3NhZ2VFdmVudElu
aXQ6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCgpCit7Cit9CisKK01lZGlhS2V5TWVzc2FnZUV2
ZW50OjpNZWRpYUtleU1lc3NhZ2VFdmVudCgpCit7Cit9CisKK01lZGlhS2V5TWVzc2FnZUV2ZW50
OjpNZWRpYUtleU1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IE1l
ZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCisgICAgOiBFdmVudCh0eXBlLCBp
bml0aWFsaXplcikKKyAgICAsIG1fbWVzc2FnZShpbml0aWFsaXplci5tZXNzYWdlKQorICAgICwg
bV9kZXN0aW5hdGlvblVSTChpbml0aWFsaXplci5kZXN0aW5hdGlvblVSTCkKK3sKK30KKworTWVk
aWFLZXlNZXNzYWdlRXZlbnQ6On5NZWRpYUtleU1lc3NhZ2VFdmVudCgpCit7Cit9CisKK2NvbnN0
IEF0b21pY1N0cmluZyYgTWVkaWFLZXlNZXNzYWdlRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25z
dAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yTWVkaWFLZXlNZXNzYWdl
RXZlbnQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVz
c2FnZUV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNmZjAyMTkxMmU0MDAzMGZjNDQ2YjRkMTVmNWY2MmNi
OGJlNTMzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaApAQCAtMCwwICsxLDczIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIE1lZGlhS2V5TWVzc2FnZUV2ZW50X2gKKyNkZWZpbmUgTWVkaWFLZXlNZXNz
YWdlRXZlbnRfaAorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUg
IkV2ZW50LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlFcnJvci5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0cnVjdCBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0
IHsKKyAgICBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQoKTsKKworICAgIFJlZlB0cjxVaW50OEFy
cmF5PiBtZXNzYWdlOworICAgIFN0cmluZyBkZXN0aW5hdGlvblVSTDsKK307CisKK2NsYXNzIE1l
ZGlhS2V5TWVzc2FnZUV2ZW50IDogcHVibGljIEV2ZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5NZWRpYUtleU1lc3NhZ2VFdmVudCgpOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFL
ZXlNZXNzYWdlRXZlbnQ+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1lZGlhS2V5TWVzc2FnZUV2ZW50KTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNZWRpYUtleU1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Y29uc3QgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0JiBpbml0aWFsaXplcikKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFLZXlNZXNzYWdlRXZlbnQodHlwZSwgaW5pdGlh
bGl6ZXIpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJm
YWNlTmFtZSgpIGNvbnN0OworCisgICAgVWludDhBcnJheSogbWVzc2FnZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWVzc2FnZS5nZXQoKTsgfQorICAgIFN0cmluZyBkZXN0aW5hdGlvblVSTCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGVzdGluYXRpb25VUkw7IH0KKworcHJpdmF0ZToKKyAgICBNZWRpYUtleU1l
c3NhZ2VFdmVudCgpOworICAgIE1lZGlhS2V5TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0JiBpbml0aWFsaXplcik7CisK
KyAgICBSZWZQdHI8VWludDhBcnJheT4gbV9tZXNzYWdlOworICAgIFN0cmluZyBtX2Rlc3RpbmF0
aW9uVVJMOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eU1lc3NhZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzZiMDkxYmRiZTVkYzlkZTc1
MjljYTBkNzUxZjU2NTViMzczZTgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5pZGwKQEAgLTAsMCAr
MSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworaW50ZXJmYWNlIFsKKyAgICBDb25kaXRpb25hbD1FTkNSWVBU
RURfTUVESUFfVjIsCisgICAgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhLAorICAg
IENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQgCitdIE1lZGlhS2V5TWVzc2FnZUV2ZW50IDogRXZl
bnQgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVaW50OEFycmF5IG1lc3NhZ2U7CisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFtJbml0aWFsaXplZEJ5RXZlbnRDb25zdHJ1Y3Rvcl0gRE9NU3RyaW5n
IGRlc3RpbmF0aW9uVVJMOworfTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWUwNmY4ZDUwNjMxN2VhM2ZiOWE4Mzc4NzlmZjgwMWM4Zjk2N2EyNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVk
ZWRFdmVudC5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIk1lZGlh
S2V5TmVlZGVkRXZlbnQuaCIKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlIDx3
dGYvVWludDhBcnJheS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01lZGlhS2V5TmVlZGVk
RXZlbnRJbml0OjpNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCgpCit7Cit9CisKK01lZGlhS2V5TmVl
ZGVkRXZlbnQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnQoKQoreworfQorCitNZWRpYUtleU5lZWRlZEV2
ZW50OjpNZWRpYUtleU5lZWRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3Qg
TWVkaWFLZXlOZWVkZWRFdmVudEluaXQmIGluaXRpYWxpemVyKQorICAgIDogRXZlbnQodHlwZSwg
aW5pdGlhbGl6ZXIpCisgICAgLCBtX2luaXREYXRhKGluaXRpYWxpemVyLmluaXREYXRhKQorewor
fQorCitNZWRpYUtleU5lZWRlZEV2ZW50Ojp+TWVkaWFLZXlOZWVkZWRFdmVudCgpCit7Cit9CisK
K2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFLZXlOZWVkZWRFdmVudDo6aW50ZXJmYWNlTmFtZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JNZWRpYUtleU5l
ZWRlZEV2ZW50OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRl
ZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
TmVlZGVkRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmFjZTMyMzNhM2QxZWY0YmU2YzdkMzI1Y2RkZWJi
NWY2MjAwOTc3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBNZWRpYUtleU5lZWRlZEV2ZW50X2gKKyNkZWZpbmUgTWVkaWFLZXlOZWVk
ZWRFdmVudF9oCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjaW5jbHVkZSAi
RXZlbnQuaCIKKyNpbmNsdWRlICJNZWRpYUtleUVycm9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RydWN0IE1lZGlhS2V5TmVlZGVkRXZlbnRJbml0IDogcHVibGljIEV2ZW50SW5pdCB7
CisgICAgTWVkaWFLZXlOZWVkZWRFdmVudEluaXQoKTsKKworICAgIFJlZlB0cjxVaW50OEFycmF5
PiBpbml0RGF0YTsKK307CisKK2NsYXNzIE1lZGlhS2V5TmVlZGVkRXZlbnQgOiBwdWJsaWMgRXZl
bnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfk1lZGlhS2V5TmVlZGVkRXZlbnQoKTsKKworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5TmVlZGVkRXZlbnQ+IGNyZWF0ZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhS2V5TmVlZGVkRXZlbnQpOworICAgIH0K
KworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5TmVlZGVkRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IE1lZGlhS2V5TmVlZGVkRXZlbnRJbml0JiBpbml0
aWFsaXplcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFLZXlOZWVk
ZWRFdmVudCh0eXBlLCBpbml0aWFsaXplcikpOworICAgIH0KKworICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKKyAgICBVaW50OEFycmF5KiBp
bml0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdERhdGEuZ2V0KCk7IH0KKworcHJpdmF0ZToK
KyAgICBNZWRpYUtleU5lZWRlZEV2ZW50KCk7CisgICAgTWVkaWFLZXlOZWVkZWRFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IE1lZGlhS2V5TmVlZGVkRXZlbnRJbml0JiBpbml0
aWFsaXplcik7CisKKyAgICBSZWZQdHI8VWludDhBcnJheT4gbV9pbml0RGF0YTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZl
bnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmIzZDQwN2I1MDY3YzZlOWMwZDRhNGIyZDU3NDgzOTVmNGNhNjAz
OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaWRsCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
K2ludGVyZmFjZSBbCisgICAgQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyLAorICAgIFY4
RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYSwKKyAgICBDb25zdHJ1Y3RvclRlbXBsYXRl
PUV2ZW50IAorXSBNZWRpYUtleU5lZWRlZEV2ZW50IDogRXZlbnQgeworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBVaW50OEFycmF5IGluaXREYXRhOworfTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJiYmEzZGI4NjA5ODBlYTZkOTZiOWRkODY3YTI2OTNhODk2YjYzYmMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U2Vzc2lvbi5jcHAKQEAgLTAsMCArMSwyMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlTZXNzaW9uLmgiCisKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBX1YyKQorCisjaW5jbHVkZSAiQ0RNLmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNp
bmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgorI2luY2x1ZGUgIk1lZGlhS2V5RXJyb3IuaCIK
KyNpbmNsdWRlICJNZWRpYUtleU1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIk1lZGlhS2V5cy5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBN
ZWRpYUtleVNlc3Npb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBN
ZWRpYUtleXMqIGtleXMsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTWVkaWFLZXlTZXNzaW9uKGNvbnRleHQsIGtleXMsIGtleVN5c3RlbSkpOwor
fQorCitNZWRpYUtleVNlc3Npb246Ok1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBNZWRpYUtleXMqIGtleXMsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQor
ICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29udGV4dCkKKyAgICAsIG1fa2V5cyhr
ZXlzKQorICAgICwgbV9rZXlTeXN0ZW0oa2V5U3lzdGVtKQorICAgICwgbV9hc3luY0V2ZW50UXVl
dWUoR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fc2Vzc2lvbihrZXlz
LT5jZG0oKS0+Y3JlYXRlU2Vzc2lvbigpKQorICAgICwgbV9rZXlSZXF1ZXN0VGltZXIodGhpcywg
Jk1lZGlhS2V5U2Vzc2lvbjo6a2V5UmVxdWVzdFRpbWVyRmlyZWQpCisgICAgLCBtX2FkZEtleVRp
bWVyKHRoaXMsICZNZWRpYUtleVNlc3Npb246OmFkZEtleVRpbWVyRmlyZWQpCit7Cit9CisKK01l
ZGlhS2V5U2Vzc2lvbjo6fk1lZGlhS2V5U2Vzc2lvbigpCit7CisgICAgY2xvc2UoKTsKK30KKwor
dm9pZCBNZWRpYUtleVNlc3Npb246OnNldEVycm9yKE1lZGlhS2V5RXJyb3IqIGVycm9yKQorewor
ICAgIG1fZXJyb3IgPSBlcnJvcjsKK30KKwordm9pZCBNZWRpYUtleVNlc3Npb246OmNsb3NlKCkK
K3sKKyAgICBpZiAobV9zZXNzaW9uKQorICAgICAgICBtX3Nlc3Npb24tPnJlbGVhc2VLZXlzKCk7
CisgICAgbV9zZXNzaW9uID0gMDsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+Y2FuY2VsQWxsRXZl
bnRzKCk7Cit9CisKK2NvbnN0IFN0cmluZyYgTWVkaWFLZXlTZXNzaW9uOjpzZXNzaW9uSWQoKSBj
b25zdAoreworICAgIHJldHVybiBtX3Nlc3Npb24tPnNlc3Npb25JZCgpOworfQorCit2b2lkIE1l
ZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IFVpbnQ4QXJyYXkqIGluaXREYXRhKQoreworICAgIG1fcGVuZGluZ0tleVJlcXVlc3RzLmFwcGVu
ZChQZW5kaW5nS2V5UmVxdWVzdChtaW1lVHlwZSwgaW5pdERhdGEpKTsKKyAgICBtX2tleVJlcXVl
c3RUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjprZXlS
ZXF1ZXN0VGltZXJGaXJlZChUaW1lcjxNZWRpYUtleVNlc3Npb24+KikKK3sKKyAgICBBU1NFUlQo
bV9wZW5kaW5nS2V5UmVxdWVzdHMuc2l6ZSgpKTsKKyAgICBpZiAoIW1fc2Vzc2lvbikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgd2hpbGUgKCFtX3BlbmRpbmdLZXlSZXF1ZXN0cy5pc0VtcHR5KCkp
IHsKKyAgICAgICAgUGVuZGluZ0tleVJlcXVlc3QgcmVxdWVzdCA9IG1fcGVuZGluZ0tleVJlcXVl
c3RzLnRha2VGaXJzdCgpOworCisgICAgICAgIC8vIE5PVEU6IENvbnRpbnVlZCBmcm9tIHN0ZXAg
NSBpbiBNZWRpYUtleXM6OmNyZWF0ZVNlc3Npb24oKS4KKyAgICAgICAgLy8gVGhlIHVzZXIgYWdl
bnQgd2lsbCBhc3luY2hyb25vdXNseSBleGVjdXRlIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gdGhl
IHRhc2s6CisKKyAgICAgICAgLy8gMS4gTGV0IGNkbSBiZSB0aGUgY2RtIGxvYWRlZCBpbiB0aGUg
TWVkaWFLZXlzIGNvbnN0cnVjdG9yLgorICAgICAgICAvLyAyLiBMZXQgZGVzdGluYXRpb25VUkwg
YmUgbnVsbC4KKyAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9uVVJMOworICAgICAgICBNZWRpYUtl
eUVycm9yOjpDb2RlIGVycm9yQ29kZSA9IDA7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgc3lzdGVt
Q29kZSA9IDA7CisKKyAgICAgICAgLy8gMy4gVXNlIGNkbSB0byBnZW5lcmF0ZSBhIGtleSByZXF1
ZXN0IGFuZCBmb2xsb3cgdGhlIHN0ZXBzIGZvciB0aGUgZmlyc3QgbWF0Y2hpbmcgY29uZGl0aW9u
IGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgorCisgICAgICAgIFJlZlB0cjxVaW50OEFycmF5PiBr
ZXlSZXF1ZXN0ID0gbV9zZXNzaW9uLT5nZW5lcmF0ZUtleVJlcXVlc3QocmVxdWVzdC5taW1lVHlw
ZSwgcmVxdWVzdC5pbml0RGF0YS5nZXQoKSwgZGVzdGluYXRpb25VUkwsIGVycm9yQ29kZSwgc3lz
dGVtQ29kZSk7CisKKyAgICAgICAgLy8gT3RoZXJ3aXNlIFtpZiBhIHJlcXVlc3QgaXMgbm90IHN1
Y2Nlc3NmdWxseSBnZW5lcmF0ZWRdOgorICAgICAgICBpZiAoIWtleVJlcXVlc3QpIHsKKyAgICAg
ICAgICAgIC8vIDMuMS4gQ3JlYXRlIGEgbmV3IE1lZGlhS2V5RXJyb3Igb2JqZWN0IHdpdGggdGhl
IGZvbGxvd2luZyBhdHRyaWJ1dGVzOgorICAgICAgICAgICAgLy8gICAgICBjb2RlID0gdGhlIGFw
cHJvcHJpYXRlIE1lZGlhS2V5RXJyb3IgY29kZQorICAgICAgICAgICAgLy8gICAgICBzeXN0ZW1D
b2RlID0gYSBLZXkgU3lzdGVtLXNwZWNpZmljIHZhbHVlLCBpZiBwcm92aWRlZCwgYW5kIDAgb3Ro
ZXJ3aXNlCisgICAgICAgICAgICBSZWZQdHI8TWVkaWFLZXlFcnJvcj4gZXJyb3IgPSBNZWRpYUtl
eUVycm9yOjpjcmVhdGUoZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKS5nZXQoKTsKKworICAgICAgICAg
ICAgLy8gMy4yLiBTZXQgdGhlIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QncyBlcnJvciBhdHRyaWJ1
dGUgdG8gdGhlIGVycm9yIG9iamVjdCBjcmVhdGVkIGluIHRoZSBwcmV2aW91cyBzdGVwLgorICAg
ICAgICAgICAgc2V0RXJyb3IoZXJyb3IuZ2V0KCkpOworCisgICAgICAgICAgICAvLyAzLjMuIHF1
ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGtleWVycm9yIGF0IHRoZSBN
ZWRpYUtleVNlc3Npb24gb2JqZWN0LgorICAgICAgICAgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9
IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtleWVycm9yRXZlbnQsIGZhbHNlLCBm
YWxzZSk7CisgICAgICAgICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICAgICAg
bV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChldmVudC5yZWxlYXNlKCkpOworCisgICAg
ICAgICAgICAvLyAzLjQuIEFib3J0IHRoZSB0YXNrLgorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyA0LiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBl
dmVudCBuYW1lZCBrZXltZXNzYWdlIGF0IHRoZSBuZXcgb2JqZWN0CisgICAgICAgIC8vICAgIFRo
ZSBldmVudCBpcyBvZiB0eXBlIE1lZGlhS2V5TWVzc2FnZUV2ZW50IGFuZCBoYXM6CisgICAgICAg
IC8vICAgIG1lc3NhZ2UgPSBrZXkgcmVxdWVzdAorICAgICAgICAvLyAgICBkZXN0aW5hdGlvblVS
TCA9IGRlc3RpbmF0aW9uVVJMCisgICAgICAgIE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCBpbml0
OworICAgICAgICBpbml0LmJ1YmJsZXMgPSBmYWxzZTsKKyAgICAgICAgaW5pdC5jYW5jZWxhYmxl
ID0gZmFsc2U7CisgICAgICAgIGluaXQubWVzc2FnZSA9IGtleVJlcXVlc3Q7CisgICAgICAgIGlu
aXQuZGVzdGluYXRpb25VUkwgPSBkZXN0aW5hdGlvblVSTDsKKyAgICAgICAgUmVmUHRyPE1lZGlh
S2V5TWVzc2FnZUV2ZW50PiBldmVudCA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLndlYmtpdGtleW1lc3NhZ2VFdmVudCwgaW5pdCk7CisgICAgICAgIGV2ZW50LT5z
ZXRUYXJnZXQodGhpcyk7CisgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQo
ZXZlbnQpOworICAgIH0KK30KKwordm9pZCBNZWRpYUtleVNlc3Npb246OmFkZEtleShVaW50OEFy
cmF5KiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIEZyb20gPGh0dHA6Ly9kdmNz
LnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlw
dGVkLW1lZGlhLmh0bWwjZG9tLWFkZGtleT46CisgICAgLy8gVGhlIGFkZEtleShrZXkpIG1ldGhv
ZCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIC8vIDEuIElmIHRoZSBmaXJzdCBv
ciBzZWNvbmQgYXJndW1lbnQgW3NpY10gaXMgbnVsbCBvciBhbiBlbXB0eSBhcnJheSwgdGhyb3cg
YW4gSU5WQUxJRF9BQ0NFU1NfRVJSLgorICAgIC8vIE5PVEU6IHRoZSByZWZlcmVuY2UgdG8gYSAi
c2Vjb25kIGFyZ3VtZW50IiBpcyBhIHNwZWMgYnVnLgorICAgIGlmICgha2V5IHx8ICFrZXktPmxl
bmd0aCgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgLy8gMi4gU2NoZWR1bGUgYSB0YXNrIHRvIGhhbmRsZSB0aGUgY2Fs
bCwgcHJvdmlkaW5nIGtleS4KKyAgICBtX3BlbmRpbmdLZXlzLmFwcGVuZChrZXkpOworICAgIG1f
YWRkS2V5VGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6
YWRkS2V5VGltZXJGaXJlZChUaW1lcjxNZWRpYUtleVNlc3Npb24+KikKK3sKKyAgICBBU1NFUlQo
bV9wZW5kaW5nS2V5cy5zaXplKCkpOworICAgIGlmICghbV9zZXNzaW9uKQorICAgICAgICByZXR1
cm47CisKKyAgICB3aGlsZSAoIW1fcGVuZGluZ0tleXMuaXNFbXB0eSgpKSB7CisgICAgICAgIFJl
ZlB0cjxVaW50OEFycmF5PiBwZW5kaW5nS2V5ID0gbV9wZW5kaW5nS2V5cy50YWtlRmlyc3QoKTsK
KyAgICAgICAgdW5zaWduZWQgc2hvcnQgZXJyb3JDb2RlID0gMDsKKyAgICAgICAgdW5zaWduZWQg
bG9uZyBzeXN0ZW1Db2RlID0gMDsKKworICAgICAgICAvLyBOT1RFOiBDb250aW51ZWQgZnJvbSBz
dGVwIDIuIG9mIE1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5KCkKKyAgICAgICAgLy8gMi4xLiBMZXQg
Y2RtIGJlIHRoZSBjZG0gbG9hZGVkIGluIHRoZSBNZWRpYUtleXMgY29uc3RydWN0b3IuCisgICAg
ICAgIC8vIE5PVEU6IFRoaXMgaXMgbV9zZXNzaW9uLgorICAgICAgICAvLyAyLjIuIExldCAnZGlk
IHN0b3JlIGtleScgYmUgZmFsc2UuCisgICAgICAgIGJvb2wgZGlkU3RvcmVLZXkgPSBmYWxzZTsK
KyAgICAgICAgLy8gMi4zLiBMZXQgJ25leHQgbWVzc2FnZScgYmUgbnVsbC4KKyAgICAgICAgUmVm
UHRyPFVpbnQ4QXJyYXk+IG5leHRNZXNzYWdlOworICAgICAgICAvLyAyLjQuIFVzZSBjZG0gdG8g
aGFuZGxlIGtleS4KKyAgICAgICAgZGlkU3RvcmVLZXkgPSBtX3Nlc3Npb24tPmFkZEtleShwZW5k
aW5nS2V5LmdldCgpLCBuZXh0TWVzc2FnZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKKyAgICAg
ICAgLy8gMi41LiBJZiBkaWQgc3RvcmUga2V5IGlzIHRydWUgYW5kIHRoZSBtZWRpYSBlbGVtZW50
IGlzIHdhaXRpbmcgZm9yIGEga2V5LCBxdWV1ZSBhIHRhc2sgdG8gYXR0ZW1wdCB0byByZXN1bWUg
cGxheWJhY2suCisgICAgICAgIC8vIFRPRE86IEZpbmQgYW5kIHJlc3RhcnQgdGhlIG1lZGlhIGVs
ZW1lbnQKKworICAgICAgICAvLyAyLjYuIElmIG5leHQgbWVzc2FnZSBpcyBub3QgbnVsbCwgcXVl
dWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQga2V5bWVzc2FnZSBhdCB0aGUg
TWVkaWFLZXlTZXNzaW9uIG9iamVjdC4KKyAgICAgICAgLy8gICAgICBUaGUgZXZlbnQgaXMgb2Yg
dHlwZSBNZWRpYUtleU1lc3NhZ2VFdmVudCBhbmQgaGFzOgorICAgICAgICAvLyAgICAgIG1lc3Nh
Z2UgPSBuZXh0IG1lc3NhZ2UKKyAgICAgICAgLy8gICAgICBkZXN0aW5hdGlvblVSTCA9IG51bGwK
KyAgICAgICAgaWYgKG5leHRNZXNzYWdlKSB7CisgICAgICAgICAgICBNZWRpYUtleU1lc3NhZ2VF
dmVudEluaXQgaW5pdDsKKyAgICAgICAgICAgIGluaXQuYnViYmxlcyA9IGZhbHNlOworICAgICAg
ICAgICAgaW5pdC5jYW5jZWxhYmxlID0gZmFsc2U7CisgICAgICAgICAgICBpbml0Lm1lc3NhZ2Ug
PSBuZXh0TWVzc2FnZTsKKyAgICAgICAgICAgIFJlZlB0cjxNZWRpYUtleU1lc3NhZ2VFdmVudD4g
ZXZlbnQgPSBNZWRpYUtleU1lc3NhZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRr
ZXltZXNzYWdlRXZlbnQsIGluaXQpOworICAgICAgICAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlz
KTsKKyAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQpOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gMi43LiBJZiBkaWQgc3RvcmUga2V5IGlzIHRydWUsIHF1
ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGtleWFkZGVkIGF0IHRoZSBN
ZWRpYUtleVNlc3Npb24gb2JqZWN0LgorICAgICAgICBpZiAoZGlkU3RvcmVLZXkpIHsKKyAgICAg
ICAgICAgIFJlZlB0cjxFdmVudD4ga2V5YWRkZWRFdmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLndlYmtpdGtleWFkZGVkRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICBr
ZXlhZGRlZEV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgICAgICBtX2FzeW5jRXZlbnRR
dWV1ZS0+ZW5xdWV1ZUV2ZW50KGtleWFkZGVkRXZlbnQpOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gMi44LiBJZiBhbnkgb2YgdGhlIHByZWNlZGluZyBzdGVwcyBpbiB0aGUgdGFzayBmYWlsZWQK
KyAgICAgICAgaWYgKCFkaWRTdG9yZUtleSkgeworICAgICAgICAgICAgLy8gMi44LjEuIENyZWF0
ZSBhIG5ldyBNZWRpYUtleUVycm9yIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRl
czoKKyAgICAgICAgICAgIC8vICAgICAgICBjb2RlID0gdGhlIGFwcHJvcHJpYXRlIE1lZGlhS2V5
RXJyb3IgY29kZQorICAgICAgICAgICAgLy8gICAgICAgIHN5c3RlbUNvZGUgPSBhIEtleSBTeXN0
ZW0tc3BlY2lmaWMgdmFsdWUsIGlmIHByb3ZpZGVkLCBhbmQgMCBvdGhlcndpc2UKKyAgICAgICAg
ICAgIFJlZlB0cjxNZWRpYUtleUVycm9yPiBlcnJvciA9IE1lZGlhS2V5RXJyb3I6OmNyZWF0ZShl
cnJvckNvZGUsIHN5c3RlbUNvZGUpLmdldCgpOworCisgICAgICAgICAgICAvLyAyLjguMi4gU2V0
IHRoZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0J3MgZXJyb3IgYXR0cmlidXRlIHRvIHRoZSBlcnJv
ciBvYmplY3QgY3JlYXRlZCBpbiB0aGUgcHJldmlvdXMgc3RlcC4KKyAgICAgICAgICAgIHNldEVy
cm9yKGVycm9yLmdldCgpKTsKKworICAgICAgICAgICAgLy8gMi44LjMuIHF1ZXVlIGEgdGFzayB0
byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGtleWVycm9yIGF0IHRoZSBNZWRpYUtleVNlc3Np
b24gb2JqZWN0LgorICAgICAgICAgICAgUmVmUHRyPEV2ZW50PiBrZXllcnJvckV2ZW50ID0gRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0a2V5ZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNl
KTsKKyAgICAgICAgICAgIGtleWVycm9yRXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAg
ICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoa2V5ZXJyb3JFdmVudC5yZWxlYXNl
KCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyAyLjguNC4gQWJvcnQgdGhlIHRhc2su
CisgICAgICAgICAgICAvLyBOT1RFOiBuby1vcAorICAgICAgICB9CisgICAgfQorfQorCitjb25z
dCBBdG9taWNTdHJpbmcmIE1lZGlhS2V5U2Vzc2lvbjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JNZWRpYUtleVNlc3Npb247Cit9
CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1lZGlhS2V5U2Vzc2lvbjo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMDBmMzkwMmUzMmIwM2UzYjJmN2FmNTgwODY4M2YyYmYwNzBkMjZm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVNlc3Npb24uaApAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgTWVkaWFLZXlTZXNzaW9uX2gKKyNkZWZpbmUgTWVkaWFLZXlTZXNzaW9uX2gKKworI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlci5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR2VuZXJpY0V2ZW50UXVldWU7CitjbGFz
cyBNZWRpYUtleUVycm9yOworY2xhc3MgTWVkaWFLZXlzOworY2xhc3MgQ0RNU2Vzc2lvbjsKKwor
Y2xhc3MgTWVkaWFLZXlTZXNzaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlTZXNzaW9u
PiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5U2Vzc2lvbj4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNZWRpYUtleXMqLCBjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSk7CisgICAgfk1lZGlhS2V5U2Vzc2lvbigpOworCisgICAgY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2tleVN5c3RlbTsgfQorICAgIGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldEVycm9yKE1lZGlhS2V5RXJyb3IqKTsK
KyAgICBNZWRpYUtleUVycm9yKiBlcnJvcigpIHsgcmV0dXJuIG1fZXJyb3IuZ2V0KCk7IH0KKwor
ICAgIHZvaWQgc2V0S2V5cyhNZWRpYUtleXMqIGtleXMpIHsgbV9rZXlzID0ga2V5czsgfQorICAg
IE1lZGlhS2V5cyoga2V5cygpIGNvbnN0IHsgcmV0dXJuIG1fa2V5czsgfQorCisgICAgdm9pZCBn
ZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5p
dERhdGEpOworICAgIHZvaWQgYWRkS2V5KFVpbnQ4QXJyYXkqIGtleSwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgY2xvc2UoKTsKKworICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFLZXlTZXNz
aW9uPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFLZXlTZXNzaW9uPjo6ZGVyZWY7
CisKKyAgICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CisKKyAgICBERUZJ
TkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGtleWFkZGVkKTsKKyAgICBERUZJTkVf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGtleWVycm9yKTsKKyAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGtleW1lc3NhZ2UpOworCisgICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCBPVkVSUklERTsKKworcHJvdGVjdGVkOgorICAgIE1lZGlhS2V5U2Vzc2lvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgTWVkaWFLZXlzKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOwor
ICAgIHZvaWQga2V5UmVxdWVzdFRpbWVyRmlyZWQoVGltZXI8TWVkaWFLZXlTZXNzaW9uPiopOwor
ICAgIHZvaWQgYWRkS2V5VGltZXJGaXJlZChUaW1lcjxNZWRpYUtleVNlc3Npb24+Kik7CisKKyAg
ICBNZWRpYUtleXMqIG1fa2V5czsKKyAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CisgICAgU3RyaW5n
IG1fc2Vzc2lvbklkOworICAgIFJlZlB0cjxNZWRpYUtleUVycm9yPiBtX2Vycm9yOworICAgIE93
blB0cjxHZW5lcmljRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7CisgICAgT3duUHRyPENE
TVNlc3Npb24+IG1fc2Vzc2lvbjsKKworICAgIHN0cnVjdCBQZW5kaW5nS2V5UmVxdWVzdCB7Cisg
ICAgICAgIFBlbmRpbmdLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJy
YXkqIGluaXREYXRhKSA6IG1pbWVUeXBlKG1pbWVUeXBlKSwgaW5pdERhdGEoaW5pdERhdGEpIHsg
fQorICAgICAgICBTdHJpbmcgbWltZVR5cGU7CisgICAgICAgIFJlZlB0cjxVaW50OEFycmF5PiBp
bml0RGF0YTsKKyAgICB9OworICAgIERlcXVlPFBlbmRpbmdLZXlSZXF1ZXN0PiBtX3BlbmRpbmdL
ZXlSZXF1ZXN0czsKKyAgICBUaW1lcjxNZWRpYUtleVNlc3Npb24+IG1fa2V5UmVxdWVzdFRpbWVy
OworCisgICAgRGVxdWU8UmVmUHRyPFVpbnQ4QXJyYXk+ID4gbV9wZW5kaW5nS2V5czsKKyAgICBU
aW1lcjxNZWRpYUtleVNlc3Npb24+IG1fYWRkS2V5VGltZXI7CisKK3ByaXZhdGU6CisgICAgdmly
dHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9CisKKyAgICB2
aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREUgeyByZXR1
cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVu
c3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0
YTsgfQorCisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworfTsKKworfQor
CisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2VuZGlmIC8vIE1lZGlh
S2V5U2Vzc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTEyNWJiM2QxZTAzM2My
YjA1NWI4MWM4YjYwNmI5ZTMwMmJjNmQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmlkbApAQCAtMCwwICsx
LDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICAgICAqLworCitpbnRlcmZhY2UgWworICAgIENvbmRpdGlvbmFsPUVOQ1JZ
UFRFRF9NRURJQV9WMiwKKyAgICBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWEsCisg
ICAgRXZlbnRUYXJnZXQsCitdIE1lZGlhS2V5U2Vzc2lvbiB7CisgICAgLy8gZXJyb3Igc3RhdGUK
KyAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFLZXlFcnJvciBlcnJvcjsKKworICAgIC8vIHNl
c3Npb24gcHJvcGVydGllcworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2V5U3lz
dGVtOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc2Vzc2lvbklkOworCisgICAg
Ly8gc2Vzc2lvbiBvcGVyYXRpb25zCisgICAgdm9pZCBhZGRLZXkoaW4gVWludDhBcnJheSBrZXkp
CisgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgIHZvaWQgY2xvc2UoKTsKKyAgICAK
KyAgICAvLyBFdmVudExpc3RlbmVycworICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1l
PWVuY3J5cHRlZE1lZGlhXSBFdmVudExpc3RlbmVyIG9ud2Via2l0a2V5YWRkZWQ7CisgICAgYXR0
cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIg
b253ZWJraXRrZXllcnJvcjsKKyAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1lbmNy
eXB0ZWRNZWRpYV0gRXZlbnRMaXN0ZW5lciBvbndlYmtpdGtleW1lc3NhZ2U7CisKKyAgICAvLyBF
dmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3Ry
aW5nIHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxp
c3RlbmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFu
IHVzZUNhcHR1cmUpOworICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcg
dHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlz
dGVuZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xl
YW4gdXNlQ2FwdHVyZSk7CisgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkK
KyAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRj
MzNjYzM4ZjQwZTJmOGFhYzA5NDU1ODU1ZmI3NDI0OWJiOGZhOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAt
MCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJNZWRpYUtleXMuaCIKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNs
dWRlICJDRE0uaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlN
ZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJNZWRpYUtleVNlc3Npb24uaCIKKyNpbmNsdWRlICJV
VUlELmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitQYXNzUmVmUHRyPE1lZGlhS2V5cz4gTWVkaWFLZXlzOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIEZyb20gPGh0dHA6Ly9kdmNz
LnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlw
dGVkLW1lZGlhLmh0bWwjZG9tLW1lZGlhLWtleXMtY29uc3RydWN0b3I+OgorICAgIC8vIFRoZSBN
ZWRpYUtleXMoa2V5U3lzdGVtKSBjb25zdHJ1Y3RvciBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0
ZXBzOgorCisgICAgLy8gMS4gSWYga2V5U3lzdGVtIGlzIG51bGwgb3IgYW4gZW1wdHkgc3RyaW5n
LCB0aHJvdyBhbiBJTlZBTElEX0FDQ0VTU19FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBz
dGVwcy4KKyAgICBpZiAoa2V5U3lzdGVtLmlzTnVsbCgpIHx8IGtleVN5c3RlbS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKworICAgIC8vIDIuIElmIGtleVN5c3RlbSBpcyBub3Qgb25lIG9mIHRoZSB1c2VyIGFn
ZW50J3Mgc3VwcG9ydGVkIEtleSBTeXN0ZW1zLCB0aHJvdyBhIE5PVF9TVVBQT1JURURfRVJSIGFu
ZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoIUNETTo6c3VwcG9ydHNLZXlTeXN0ZW0oa2V5
U3lzdGVtKSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisKKyAgICAvLyAzLiBMZXQgY2RtIGJlIHRoZSBjb250ZW50IGRlY3J5cHRp
b24gbW9kdWxlIGNvcnJlc3BvbmRpbmcgdG8ga2V5U3lzdGVtLgorICAgIC8vIDQuIExvYWQgY2Rt
IGlmIG5lY2Vzc2FyeS4KKyAgICBPd25QdHI8Q0RNPiBjZG0gPSBDRE06OmNyZWF0ZShrZXlTeXN0
ZW0pOworCisgICAgLy8gNS4gQ3JlYXRlIGEgbmV3IE1lZGlhS2V5cyBvYmplY3QuCisgICAgLy8g
NS4xIExldCB0aGUga2V5U3lzdGVtIGF0dHJpYnV0ZSBiZSBrZXlTeXN0ZW0uCisgICAgLy8gNi4g
UmV0dXJuIHRoZSBuZXcgb2JqZWN0IHRvIHRoZSBjYWxsZXIuCisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBNZWRpYUtleXMoa2V5U3lzdGVtLCBjZG0ucmVsZWFzZSgpKSk7Cit9CisKK01lZGlhS2V5
czo6TWVkaWFLZXlzKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBQYXNzT3duUHRyPENETT4gY2Rt
KQorICAgIDogbV9rZXlTeXN0ZW0oa2V5U3lzdGVtKQorICAgICwgbV9jZG0oY2RtKQoreworfQor
CitNZWRpYUtleXM6On5NZWRpYUtleXMoKQoreworICAgIC8vIEZyb20gPGh0dHA6Ly9kdmNzLncz
Lm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVk
LW1lZGlhLmh0bWwjZG9tLW1lZGlhLWtleXMtY29uc3RydWN0b3I+OgorICAgIC8vIFdoZW4gZGVz
dHJveWluZyBhIE1lZGlhS2V5cyBvYmplY3QsIGZvbGxvdyB0aGUgc3RlcHMgaW4gY2xvc2UoKS4K
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc2Vzc2lvbnMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgbV9zZXNzaW9uc1tpXS0+Y2xvc2UoKTsKKyAgICAgICAgbV9zZXNzaW9uc1tpXS0+c2V0
S2V5cygwKTsKKyAgICB9Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtl
eXM6OmNyZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgLy8gRnJvbSA8aHR0cDovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUv
dGlwL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEuaHRtbCNkb20tY3JlYXRlc2Vzc2lv
bj46CisgICAgLy8gVGhlIGNyZWF0ZVNlc3Npb24odHlwZSwgaW5pdERhdGEpIG1ldGhvZCBtdXN0
IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgIC8vIE5vdGU6IFRoZSBjb250ZW50cyBvZiBp
bml0RGF0YSBhcmUgY29udGFpbmVyLXNwZWNpZmljIEluaXRpYWxpemF0aW9uIERhdGEuCisKKyAg
ICAvLyAxLiBJZiB0eXBlIGlzIG51bGwgb3IgYW4gZW1wdHkgc3RyaW5nIGFuZCBpbml0RGF0YSBp
cyBub3QgbnVsbCBvciBhbiBlbXB0eSBzdHJpbmcsIHRocm93IGFuCisgICAgLy8gSU5WQUxJRF9B
Q0NFU1NfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgaWYgKCh0eXBl
LmlzTnVsbCgpIHx8IHR5cGUuaXNFbXB0eSgpKSAmJiAoIWluaXREYXRhIHx8IGluaXREYXRhLT5s
ZW5ndGgoKSkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKworICAgIC8vIDIuIElmIHR5cGUgY29udGFpbnMgYSBNSU1FIHR5cGUg
dGhhdCBpcyBub3Qgc3VwcG9ydGVkIG9yIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGtleVN5c3Rl
bSwgdGhyb3cKKyAgICAvLyBhIE5PVF9TVVBQT1JURURfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQg
dGhlc2Ugc3RlcHMuCisgICAgaWYgKCF0eXBlLmlzTnVsbCgpICYmICF0eXBlLmlzRW1wdHkoKSAm
JiAhbV9jZG0tPnN1cHBvcnRzTUlNRVR5cGUodHlwZSkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQ
UE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gMy4gQ3JlYXRl
IGEgbmV3IE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QuCisgICAgLy8gMy4xIExldCB0aGUga2V5U3lz
dGVtIGF0dHJpYnV0ZSBiZSBrZXlTeXN0ZW0uCisgICAgLy8gMy4yIExldCB0aGUgc2Vzc2lvbklk
IGF0dHJpYnV0ZSBiZSBhIHVuaXF1ZSBTZXNzaW9uIElEIHN0cmluZy4gSXQgbWF5IGJlIGdlbmVy
YXRlZCBieSBjZG0uCisgICAgUmVmUHRyPE1lZGlhS2V5U2Vzc2lvbj4gc2Vzc2lvbiA9IE1lZGlh
S2V5U2Vzc2lvbjo6Y3JlYXRlKGNvbnRleHQsIHRoaXMsIGtleVN5c3RlbSgpKTsKKworICAgIC8v
IDQuIEFkZCB0aGUgbmV3IG9iamVjdCB0byBhbiBpbnRlcm5hbCBsaXN0IG9mIHNlc3Npb24gb2Jq
ZWN0cy4KKyAgICBtX3Nlc3Npb25zLmFwcGVuZChzZXNzaW9uKTsKKworICAgIC8vIDUuIFNjaGVk
dWxlIGEgdGFzayB0byBnZW5lcmF0ZSBhIGtleSByZXF1ZXN0LCBwcm92aWRpbmcgdHlwZSwgaW5p
dERhdGEsIGFuZCB0aGUgbmV3IG9iamVjdC4KKyAgICBzZXNzaW9uLT5nZW5lcmF0ZUtleVJlcXVl
c3QodHlwZSwgaW5pdERhdGEpOworCisgICAgLy8gNi4gUmV0dXJuIHRoZSBuZXcgb2JqZWN0IHRv
IHRoZSBjYWxsZXIuCisgICAgcmV0dXJuIHNlc3Npb247Cit9CisKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lOGFkYjc1ZjYxZTNjNmIyYWRhZDc1MGJjMzRkNjgyZmM5ZWUwN2Q5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYUtleXNfaAor
I2RlZmluZSBNZWRpYUtleXNfaAorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKwor
I2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0RNOworY2xhc3MgTWVkaWFLZXlTZXNzaW9uOwor
CitjbGFzcyBNZWRpYUtleXMgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUtleXM+IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleXM+IGNyZWF0ZShjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSwgRXhjZXB0aW9uQ29kZSYpOworICAgIH5NZWRpYUtleXMoKTsKKworICAgIFBh
c3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgRXhj
ZXB0aW9uQ29kZSYpOworCisgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCB7IHJl
dHVybiBtX2tleVN5c3RlbTsgfQorICAgIENETSogY2RtKCkgeyByZXR1cm4gbV9jZG0uZ2V0KCk7
IH0KKworcHJvdGVjdGVkOgorICAgIE1lZGlhS2V5cyhjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwg
UGFzc093blB0cjxDRE0+KTsKKworICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiA+
IG1fc2Vzc2lvbnM7CisKKyAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CisgICAgT3duUHRyPENETT4g
bV9jZG07Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQor
CisjZW5kaWYgLy8gTWVkaWFLZXlzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjRiNzVjYzRiOWMzNmI0
YjY3NjFkNDk3YmU1MDQ4NDNiYTZlOWZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCkBAIC0wLDAgKzEsMzYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKyAKK2ludGVyZmFjZSBbCisgICAgQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElB
X1YyLAorICAgIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYSwKKyAgICBDb25zdHJ1
Y3RvcihpbiBET01TdHJpbmcga2V5U3lzdGVtKSwKKyAgICBDb25zdHJ1Y3RvclJhaXNlc0V4Y2Vw
dGlvbiwKK10gTWVkaWFLZXlzIHsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dF0gTWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24oaW4gW09wdGlvbmFsPURlZmF1bHRJc1Vu
ZGVmaW5lZF0gRE9NU3RyaW5nIHR5cGUsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRd
IFVpbnQ4QXJyYXkgaW5pdERhdGEpCisgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworCisg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBrZXlTeXN0ZW07Cit9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCAwMzhlNWUyZDVhZGE5Zjc4OTkyOGM0YjE5NTI1ZjA3M2IwZjBiMDE4Li4y
YTBmNTY0M2U1NmU0ZTc0ODM5YTFlNTU0YmE3N2IxNTljNzQxMDEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtMjc1MSwzICsyNzUxLDcgQEAgX19aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZl
YXR1cmVzMTlpc0NTU1JlZ2lvbnNFbmFibGVkRQogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1Mp
CiBfX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMyNWFyZVNlYW1sZXNzSUZyYW1l
c0VuYWJsZWRFCiAjZW5kaWYKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCitfX1pO
N1dlYkNvcmUzQ0RNMThyZWdpc3RlckNETUZhY3RvcnlFUEZOM1dURjEwUGFzc093blB0cklOU18x
OUNETVByaXZhdGVJbnRlcmZhY2VFRUVQUzBfRVBGYlJLTlMxXzZTdHJpbmdFRQorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYzJhZmVmZGUxNTk1OTVhZDVlYzdhMzkzMDNhMWZlYTBlYzY5YjlmNy4uYjdjODVhMzEyNDAx
YjUxNDI1ZjJkZGRmMmViM2FiZDg0NmQ1NmRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ3NSw3ICsxNDc1LDYgQEAKIAkJ
NEI2RkE2RjQwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjIwQzM5RTQ4QzAwMDg3MDEx
IC8qIFNtYXJ0UmVwbGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTRCNkZBNkY1MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjMw
QzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5jcHAgKi87IH07CiAJCTRCNkZBNkY3MEMz
OUU0QTEwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2VDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZGQTZGNjBDMzlFNEExMDAwODcwMTEgLyogU21h
cnRSZXBsYWNlQ0YuY3BwICovOyB9OwotCQk0QjYxNzM3Mzc5NjM2RjYxNkUyNzczNjggLyogSURC
SGlzdG9ncmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEI2MTczNzM3OTYzNkY2MTZFMjc3MzY4IC8qIElEQkhpc3RvZ3JhbXMuaCAqLzsgfTsKIAkJ
NEI4QUY0QUEwQjFDRTAyQjAwNjg3NjkwIC8qIENsaXBib2FyZEFjY2Vzc1BvbGljeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI4QUY0QTkwQjFDRTAy
QjAwNjg3NjkwIC8qIENsaXBib2FyZEFjY2Vzc1BvbGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCQUU5NUIxMEIyRkE5Q0UwMEFFRDhBMCAv
KiBFZGl0b3JEZWxldGVBY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRCQUU5NUIwMEIyRkE5Q0UwMEFFRDhBMCAvKiBFZGl0b3JEZWxldGVBY3Rp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
RDI3M0NGOTE2Njk0MjA4MDAyNTlDQTEgLyogSW5zcGVjdG9ySW5wdXRBZ2VudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RDI3M0NGNzE2Njk0MjA4
MDAyNTlDQTEgLyogSW5zcGVjdG9ySW5wdXRBZ2VudC5jcHAgKi87IH07CkBAIC0zNjQ2LDggKzM2
NDUsOCBAQAogCQk5NzdFMkRDRDEyRjBFMjgzMDBDMTMzNzkgLyogSFRNTFNvdXJjZVRyYWNrZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc3RTJE
Q0IxMkYwRTI4MzAwQzEzMzc5IC8qIEhUTUxTb3VyY2VUcmFja2VyLmNwcCAqLzsgfTsKIAkJOTc3
RTJEQ0UxMkYwRTI4MzAwQzEzMzc5IC8qIEhUTUxTb3VyY2VUcmFja2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzdFMkRDQzEyRjBFMjgzMDBDMTMz
NzkgLyogSFRNTFNvdXJjZVRyYWNrZXIuaCAqLzsgfTsKIAkJOTc3RTJFMEUxMkYwRkM5QzAwQzEz
Mzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTc3RTJFMEIxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwICov
OyB9OwotCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc3RTJFMEMxMkYwRkM5QzAw
QzEzMzc5IC8qIFhTU0F1ZGl0b3IuaCAqLzsgfTsKIAkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzgw
IC8qIFhTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NzdFMkUwQjEyRjBGQzlDMDBDMTMzODAgLyogWFNTQXVkaXRvckRl
bGVnYXRlLmNwcCAqLzsgfTsKKwkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3N0Uy
RTBDMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggKi87IH07CiAJCTk3N0UyRTBGMTJG
MEZDOUMwMEMxMzM4MCAvKiBYU1NBdWRpdG9yRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3N0UyRTBDMTJGMEZDOUMwMEMxMzM4MCAvKiBY
U1NBdWRpdG9yRGVsZWdhdGUuaCAqLzsgfTsKIAkJOTc4QUQ2NzQxNDEzMEE4RDAwQzdDQUUzIC8q
IEhUTUxTcGFuRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NzhBRDY3MTE0MTMwQThEMDBDN0NBRTMgLyogSFRNTFNwYW5FbGVtZW50LmNw
cCAqLzsgfTsKIAkJOTc4QUQ2NzUxNDEzMEE4RDAwQzdDQUUzIC8qIEhUTUxTcGFuRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc4QUQ2NzIx
NDEzMEE4RDAwQzdDQUUzIC8qIEhUTUxTcGFuRWxlbWVudC5oICovOyB9OwpAQCAtNTk3MSw2ICs1
OTcwLDcgQEAKIAkJQ0NDMkI1MTYxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENDQzJCNTEy
MTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0QxMjdERUQxNEYzMDk3RDAwRTg0Nzc5
IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxMjdERUIxNEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVG
dWxsU2NyZWVuV2luZG93Lm1tICovOyB9OwogCQlDRDEyN0RFRTE0RjMwOTg0MDBFODQ3NzkgLyog
V2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEMTI3REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNj
cmVlbldpbmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUNEMUI0QTY1MTYwNzg2QUUwMDI4MkRGOSAvKiBNZWRpYUtleU5lZWRlZEV2ZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTk4REMy
MTYwMTRFRUUwMEZFQTNCMSAvKiBNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCAqLzsgfTsKIAkJQ0Qx
RTczNDcxNjdCQzc4RTAwOUE4ODVEIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMUU3MzQ2MTY3QkM3
OEUwMDlBODg1RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAgKi87IH07CiAJCUNEMjdG
NkU1MTQ1NzY4NUEwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZFMjE0NTc2NzU4MDA3ODIw
N0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlDRDI3RjZFNzE0NTc3MEQzMDA3
ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkU2MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRy
b2xsZXIuY3BwICovOyB9OwpAQCAtNTk4MywxMCArNTk4MywyMCBAQAogCQlDRDgyMDMwRDEzOTVB
QjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzA5MTM5
NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1t
ICovOyB9OwogCQlDRDgyMDMxMDEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMw
RTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q4MjAzMTExMzk1QUNFNzAwRjk1
NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzBGMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dB
bmltYXRpb24ubW0gKi87IH07CisJCUNEQTk4REEzMTYwMTQ2NDEwMEZFQTNCMSAvKiBKU01lZGlh
S2V5RXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RBOThEOUIxNjAxMjhBNTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5jcHAgKi87IH07
CisJCUNEQTk4REQ4MTYwMjVCRUYwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERENTE2
MDI1QkVEMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwICovOyB9OworCQlDREE5
OERERjE2MDI2QTM3MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OEREQjE2MDI2QTE4
MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgKi87IH07CisJCUNEQTk4REUw
MTYwMjZBMzcwMEZFQTNCMSAvKiBKU01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEREQxNjAyNkExOTAwRkVB
M0IxIC8qIEpTTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgKi87IH07CisJCUNEQTk4RTA0MTYwMzlF
MUEwMEZFQTNCMSAvKiBKU01lZGlhS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERDRTE2MDE1OTc5MDBGRUEzQjEgLyogSlNNZWRpYUtl
eXMuY3BwICovOyB9OworCQlDREE5OEUwNjE2MDM5RTFGMDBGRUEzQjEgLyogSlNNZWRpYUtleVNl
c3Npb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RBOThERDAxNjAxNTk3OTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlTZXNzaW9uLmNwcCAqLzsgfTsK
KwkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVBM0IxIC8qIENETS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OEUwOTE2MDNDRDU5MDBGRUEzQjEgLyog
Q0RNLmNwcCAqLzsgfTsKKwkJQ0RBOThFMEQxNjAzRkU0QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERD
QTE2MDE1MDhBMDBGRUEzQjEgLyogTWVkaWFLZXlzLmNwcCAqLzsgfTsKKwkJQ0RBOThFMEUxNjAz
RkU1ODAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERDNzE2MDE0RjJDMDBGRUEzQjEgLyogTWVk
aWFLZXlTZXNzaW9uLmNwcCAqLzsgfTsKIAkJQ0RBQThEMEExNEQ3MUIyRTAwNjFFQTYwIC8qIFBs
YXRmb3JtQ2xvY2tDTS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQUE4RDA4MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gKi87
IH07CiAJCUNEQjg1OUY3MTYwRDQ4QTQwMEU1QjA3RiAvKiBNZWRpYUtleUV2ZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQjg1OUY0MTYwRDQ4
OTkwMEU1QjA3RiAvKiBNZWRpYUtleUV2ZW50LmNwcCAqLzsgfTsKIAkJQ0RCODU5RkExNjBENDk0
OTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREI4NTlGODE2MEQ0OTNFMDBFNUIwN0YgLyogSlNNZWRp
YUtleUV2ZW50LmNwcCAqLzsgfTsKLQkJQ0RCODU5RkIxNjBENDk0RjAwRTVCMDdGIC8qIEpTTWVk
aWFLZXlFcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREI4NTlGMDE2MEQ0MkREMDBFNUIwN0YgLyogSlNNZWRpYUtleUVycm9yLmNwcCAqLzsg
fTsKKwkJQ0RDMjZCNDAxNjBBOENDNjAwMjY3NTdCIC8qIE1vY2tDRE0uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDMjZCM0MxNjBBNjJCMDAwMjY3
NTdCIC8qIE1vY2tDRE0uY3BwICovOyB9OworCQlDREMyNkI0MTE2MEE4Q0NFMDAyNjc1N0IgLyog
TW9ja0NETS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RDMjZCM0QxNjBBNjJCMDAwMjY3NTdCIC8qIE1vY2tDRE0uaCAqLzsgfTsKIAkJQ0RDNjlERDYx
NjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzY5REQ0MTYzMjAyNkMw
MDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RDNjlERDcxNjMyMDI2QzAwN0Mz
OERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREM2OURENTE2MzIwMjZDMDA3QzM4REYgLyog
V2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5tbSAqLzsgfTsKIAkJQ0RDNjlEREExNjM3MUZE
NDAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREM2OUREODE2MzcxRkQzMDA3
QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTEwNTksOCArMTEwNjksOCBA
QAogCQk5NzdFMkRDQjEyRjBFMjgzMDBDMTMzNzkgLyogSFRNTFNvdXJjZVRyYWNrZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSFRNTFNvdXJjZVRyYWNrZXIuY3Bw
OyBwYXRoID0gcGFyc2VyL0hUTUxTb3VyY2VUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTc3RTJEQ0MxMkYwRTI4MzAwQzEzMzc5IC8qIEhUTUxTb3VyY2VUcmFja2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEhUTUxTb3VyY2VUcmFja2VyLmg7
IHBhdGggPSBwYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTc3RTJFMEIxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWFNTQXVkaXRvci5jcHA7IHBhdGggPSBw
YXJzZXIvWFNTQXVkaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3N0Uy
RTBDMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFhTU0F1ZGl0b3IuaDsgcGF0aCA9IHBhcnNlci9YU1NBdWRpdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3N0UyRTBCMTJGMEZDOUMwMEMxMzM4MCAvKiBY
U1NBdWRpdG9yRGVsZWdhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gWFNTQXVkaXRvckRlbGVnYXRlLmNwcDsgcGF0aCA9IHBhcnNlci9YU1NBdWRpdG9yRGVsZWdh
dGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzdFMkUwQzEyRjBGQzlDMDBD
MTMzNzkgLyogWFNTQXVkaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBY
U1NBdWRpdG9yLmg7IHBhdGggPSBwYXJzZXIvWFNTQXVkaXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NzdFMkUwQzEyRjBGQzlDMDBDMTMzODAgLyogWFNTQXVkaXRvckRlbGVn
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFhTU0F1ZGl0b3JEZWxlZ2F0
ZS5oOyBwYXRoID0gcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NzhBRDY3MTE0MTMwQThEMDBDN0NBRTMgLyogSFRNTFNwYW5FbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxTcGFuRWxlbWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OEFENjcyMTQxMzBBOEQwMEM3
Q0FFMyAvKiBIVE1MU3BhbkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSFRNTFNwYW5FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzU0
MSwxMCArMTM1NTEsMzMgQEAKIAkJQ0Q4MjAzMDkxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVv
RnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDgyMDMwRTEzOTVBQ0U3MDBGOTU2QzYg
LyogV2ViV2luZG93QW5pbWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYldpbmRvd0FuaW1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDgy
MDMwRjEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViV2luZG93QW5pbWF0aW9uLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OEQ5QjE2MDEyOEE1MDBGRUEzQjEgLyogSlNN
ZWRpYUtleUVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
TWVkaWFLZXlFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RDlD
MTYwMTI4QTUwMEZFQTNCMSAvKiBKU01lZGlhS2V5RXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNNZWRpYUtleUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQTk4REMyMTYwMTRFRUUwMEZFQTNCMSAvKiBNZWRpYUtleU5lZWRlZEV2ZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1lZGlhS2V5TmVlZGVkRXZl
bnQuY3BwOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQzMxNjAxNEVFRTAwRkVB
M0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gTWVkaWFLZXlOZWVkZWRFdmVudC5oOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleU5lZWRlZEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QTk4REM0MTYwMTRFRUUwMEZFQTNCMSAvKiBNZWRpYUtleU5lZWRlZEV2ZW50LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IG5hbWUgPSBNZWRpYUtleU5lZWRlZEV2ZW50LmlkbDsgcGF0aCA9IE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEQTk4REM3MTYwMTRGMkMwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTWVkaWFLZXlTZXNzaW9u
LmNwcDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQzgxNjAxNEYyQzAwRkVBM0IxIC8q
IE1lZGlhS2V5U2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRp
YUtleVNlc3Npb24uaDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNz
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REM5MTYwMTRGNDAwMEZF
QTNCMSAvKiBNZWRpYUtleVNlc3Npb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE1lZGlh
S2V5U2Vzc2lvbi5pZGw7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RENBMTYwMTUwOEEw
MEZFQTNCMSAvKiBNZWRpYUtleXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTWVkaWFLZXlzLmNwcDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEQ0IxNjAxNTA4QTAw
RkVBM0IxIC8qIE1lZGlhS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBN
ZWRpYUtleXMuaDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RENDMTYwMTUwOEEwMEZFQTNCMSAvKiBN
ZWRpYUtleXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE1lZGlhS2V5cy5pZGw7IHBhdGgg
PSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEQTk4RENFMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5cy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5cy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RENGMTYwMTU5NzkwMEZFQTNCMSAvKiBK
U01lZGlhS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhS2V5
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OEREMDE2MDE1OTc5MDBGRUEz
QjEgLyogSlNNZWRpYUtleVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNNZWRpYUtleVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREE5OEREMTE2MDE1OTc5MDBGRUEzQjEgLyogSlNNZWRpYUtleVNlc3Npb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUtleVNlc3Npb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThERDUxNjAyNUJFRDAwRkVBM0IxIC8qIE1lZGlh
S2V5TWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REE5OERENjE2MDI1QkVEMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFLZXlNZXNzYWdlRXZlbnQuaDsgcGF0aCA9
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThERDcxNjAyNUJFRTAwRkVBM0IxIC8qIE1lZGlhS2V5
TWVzc2FnZUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBNZWRpYUtleU1lc3NhZ2VF
dmVudC5pZGw7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2
ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEREIxNjAyNkExODAw
RkVBM0IxIC8qIEpTTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQTk4RERDMTYwMjZBMTkwMEZFQTNCMSAvKiBKU01lZGlhS2V5TWVzc2FnZUV2ZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTTWVkaWFLZXlNZXNzYWdlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBOThEREQxNjAyNkExOTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlOZWVkZWRF
dmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERERTE2MDI2QTE5MDBGRUEzQjEgLyog
SlNNZWRpYUtleU5lZWRlZEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFLZXlOZWVkZWRF
dmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OEUwOTE2MDNDRDU5MDBG
RUEzQjEgLyogQ0RNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENETS5jcHA7IHBhdGggPSBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQTk4RTBBMTYwM0NENTkwMEZFQTNCMSAvKiBDRE0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ0RNLmg7
IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREE5OEUwQzE2MDNDRjNDMDBGRUEzQjEgLyogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE1Qcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDREFBOEQwNzE0RDM4NTYwMDA2MUVBNjAgLyogUGxhdGZvcm1DbG9ja0NNLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ2xvY2tDTS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREFBOEQwODE0RDM4NTYwMDA2MUVBNjAgLyogUGxhdGZvcm1D
bG9ja0NNLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZv
cm1DbG9ja0NNLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDREI4NTlGMDE2MEQ0
MkREMDBFNUIwN0YgLyogSlNNZWRpYUtleUVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFLZXlFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUNEQjg1OUYxMTYwRDQyREQwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXJyb3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUtleUVycm9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQjg1OUYyMTYwRDQ4OTkwMEU1QjA3RiAvKiBNZWRp
YUtleUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhS2V5RXJy
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCODU5RjMxNjBENDg5OTAwRTVC
MDdGIC8qIE1lZGlhS2V5RXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhS2V5
RXJyb3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREI4NTlGNDE2MEQ0ODk5
MDBFNUIwN0YgLyogTWVkaWFLZXlFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNZWRpYUtleUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEzNTUzLDYgKzEzNTg2LDggQEAKIAkJQ0RCODU5RjgxNjBENDkzRTAwRTVCMDdGIC8qIEpT
TWVkaWFLZXlFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U01lZGlhS2V5RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREI4NTlG
OTE2MEQ0OTNFMDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFLZXlFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDREJEOTNCQTEzMzNCRDRCMDAyNTcwRTMgLyogZnVsbHNjcmVlblF1aWNrVGltZS5j
c3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3JlZW5RdWlja1RpbWUuY3NzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREMyNkIzQzE2MEE2MkIwMDAyNjc1N0IgLyog
TW9ja0NETS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrQ0RNLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDMjZCM0QxNjBBNjJCMDAwMjY3NTdCIC8qIE1vY2tDRE0uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTW9ja0NETS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
REM2OURENDE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRnVsbFNjcmVlbldhcm5p
bmdWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzY5REQ1MTYzMjAyNkMw
MDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDNjlERDgxNjM3MUZEMzAwN0MzOERG
IC8qIFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDc5Miw2ICsxNDgyNyw3IEBACiAJCTE0REZCMzNG
MEE3REY3NjMwMDE4Rjc2OSAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNEQTk4RENEMTYwMTUxNUMwMEZFQTNCMSAvKiBF
bmNyeXB0ZWRNZWRpYSAqLywKIAkJCQlBODNCNzkxMDBDQ0IwMDFCMDAwQjA4MjUgLyogQ29yZSAq
LywKIAkJCQlBODNCNzkwRTBDQ0FGRjk3MDAwQjA4MjUgLyogQ1NTICovLAogCQkJCUE4M0I3OTEy
MENDQjAwM0YwMDBCMDgyNSAvKiBFdmVudHMgKi8sCkBAIC0xNTQ5Niw2ICsxNTUzMiw4IEBACiAJ
CQkJQTdCRTdFREUxNEM5MTc1QTAwMTQ0ODlEIC8qIE1hbGxvY1N0YXRpc3RpY3MuaWRsICovLAog
CQkJCUVCMDgxQ0Q4MTY5NjA4NDQwMDU1MzczMCAvKiBUeXBlQ29udmVyc2lvbnMuaCAqLywKIAkJ
CQlFQjA4MUNEOTE2OTYwODQ0MDA1NTM3MzAgLyogVHlwZUNvbnZlcnNpb25zLmlkbCAqLywKKwkJ
CQlDREMyNkIzQzE2MEE2MkIwMDAyNjc1N0IgLyogTW9ja0NETS5jcHAgKi8sCisJCQkJQ0RDMjZC
M0QxNjBBNjJCMDAwMjY3NTdCIC8qIE1vY2tDRE0uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gdGVz
dGluZzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xODIzNSw2ICsxODI3Myw3IEBA
CiAJCTk3MTE0NUZFMTRFRjAwNkUwMDY3NEZEOSAvKiBNb2R1bGVzICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDREE5OERCRDE2MDE0RTA4MDBGRUEzQjEg
LyogZW5jcnlwdGVkbWVkaWEgKi8sCiAJCQkJOTcxMTQ1RkYxNEVGMDA3OTAwNjc0RkQ5IC8qIGdl
b2xvY2F0aW9uICovLAogCQkJCTk3MTJBNTUzMTUwMDRFM0MwMDQ4QUYxMCAvKiBpbmRleGVkZGIg
Ki8sCiAJCQkJQjFBOTQyREQxNUI1Q0UyMjAwRDUyNUQxIC8qIG1lZGlhc291cmNlICovLApAQCAt
MTg5OTEsOCArMTkwMzAsNiBAQAogCQkJCUNEMjdGNkUzMTQ1NzY3NTgwMDc4MjA3RCAvKiBKU01l
ZGlhQ29udHJvbGxlci5oICovLAogCQkJCUU0NDYxNDEwMENENjgyNjkwMEZBREE3NSAvKiBKU01l
ZGlhRXJyb3IuY3BwICovLAogCQkJCUU0NDYxNDExMENENjgyNjkwMEZBREE3NSAvKiBKU01lZGlh
RXJyb3IuaCAqLywKLQkJCQlDREI4NTlGMDE2MEQ0MkREMDBFNUIwN0YgLyogSlNNZWRpYUtleUVy
cm9yLmNwcCAqLywKLQkJCQlDREI4NTlGMTE2MEQ0MkREMDBFNUIwN0YgLyogSlNNZWRpYUtleUVy
cm9yLmggKi8sCiAJCQkJQ0RCODU5RjgxNjBENDkzRTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVu
dC5jcHAgKi8sCiAJCQkJQ0RCODU5RjkxNjBENDkzRTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVu
dC5oICovLAogCQkJCTEwNTk0NTc1MTVCNDJBMEQwMDREMzdGRCAvKiBKU01pY3JvRGF0YUl0ZW1W
YWx1ZS5jcHAgKi8sCkBAIC0yMTU0OSw2ICsyMTU4Niw0NSBAQAogCQkJbmFtZSA9IGF1ZGlvOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQ0RBOThEQkQxNjAxNEUwODAwRkVB
M0IxIC8qIGVuY3J5cHRlZG1lZGlhICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQlDREE5OERENTE2MDI1QkVEMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdl
RXZlbnQuY3BwICovLAorCQkJCUNEQTk4REQ2MTYwMjVCRUQwMEZFQTNCMSAvKiBNZWRpYUtleU1l
c3NhZ2VFdmVudC5oICovLAorCQkJCUNEQTk4REQ3MTYwMjVCRUUwMEZFQTNCMSAvKiBNZWRpYUtl
eU1lc3NhZ2VFdmVudC5pZGwgKi8sCisJCQkJQ0RBOThEQzIxNjAxNEVFRTAwRkVBM0IxIC8qIE1l
ZGlhS2V5TmVlZGVkRXZlbnQuY3BwICovLAorCQkJCUNEQTk4REMzMTYwMTRFRUUwMEZFQTNCMSAv
KiBNZWRpYUtleU5lZWRlZEV2ZW50LmggKi8sCisJCQkJQ0RBOThEQzQxNjAxNEVFRTAwRkVBM0Ix
IC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuaWRsICovLAorCQkJCUNEQTk4RENBMTYwMTUwOEEwMEZF
QTNCMSAvKiBNZWRpYUtleXMuY3BwICovLAorCQkJCUNEQTk4RENCMTYwMTUwOEEwMEZFQTNCMSAv
KiBNZWRpYUtleXMuaCAqLywKKwkJCQlDREE5OERDQzE2MDE1MDhBMDBGRUEzQjEgLyogTWVkaWFL
ZXlzLmlkbCAqLywKKwkJCQlDREE5OERDNzE2MDE0RjJDMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNz
aW9uLmNwcCAqLywKKwkJCQlDREE5OERDODE2MDE0RjJDMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNz
aW9uLmggKi8sCisJCQkJQ0RBOThEQzkxNjAxNEY0MDAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lv
bi5pZGwgKi8sCisJCQkJQ0RBOThFMDkxNjAzQ0Q1OTAwRkVBM0IxIC8qIENETS5jcHAgKi8sCisJ
CQkJQ0RBOThFMEExNjAzQ0Q1OTAwRkVBM0IxIC8qIENETS5oICovLAorCQkJCUNEQTk4RTBDMTYw
M0NGM0MwMEZFQTNCMSAvKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCAqLywK
KwkJCSk7CisJCQluYW1lID0gZW5jcnlwdGVkbWVkaWE7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OworCQlDREE5OERDRDE2MDE1MTVDMDBGRUEzQjEgLyogRW5jcnlwdGVkTWVkaWEg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUNEQTk4RDlC
MTYwMTI4QTUwMEZFQTNCMSAvKiBKU01lZGlhS2V5RXJyb3IuY3BwICovLAorCQkJCUNEQTk4RDlD
MTYwMTI4QTUwMEZFQTNCMSAvKiBKU01lZGlhS2V5RXJyb3IuaCAqLywKKwkJCQlDREE5OEREQjE2
MDI2QTE4MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgKi8sCisJCQkJQ0RB
OThEREMxNjAyNkExOTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCAqLywKKwkJ
CQlDREE5OERERDE2MDI2QTE5MDBGRUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCAq
LywKKwkJCQlDREE5OERERTE2MDI2QTE5MDBGRUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50
LmggKi8sCisJCQkJQ0RBOThEQ0UxNjAxNTk3OTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlzLmNwcCAq
LywKKwkJCQlDREE5OERDRjE2MDE1OTc5MDBGRUEzQjEgLyogSlNNZWRpYUtleXMuaCAqLywKKwkJ
CQlDREE5OEREMDE2MDE1OTc5MDBGRUEzQjEgLyogSlNNZWRpYUtleVNlc3Npb24uY3BwICovLAor
CQkJCUNEQTk4REQxMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5U2Vzc2lvbi5oICovLAor
CQkJKTsKKwkJCW5hbWUgPSBFbmNyeXB0ZWRNZWRpYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CiAJCURGOUFGRDZGMTNGQzMxQjAwMDE1RkVCNyAvKiBvYmpjICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIyOTY1LDYgKzIzMDQxLDcgQEAK
IAkJCQlBNzQwQjU5NTE0QzkzNUFCMDBBNzdGQTQgLyogSlNNYWxsb2NTdGF0aXN0aWNzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVy
c2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxODE1QzFGMTM4MzE5ODMwMDU3QUFBNCAvKiBX
ZWJDb3JlVGVzdFN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQzI2QjQxMTYwQThDQ0Uw
MDI2NzU3QiAvKiBNb2NrQ0RNLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI2NjkwLDYgKzI2NzY3LDcg
QEAKIAkJCQlBNzQwQjU5NzE0QzkzNUFGMDBBNzdGQTQgLyogSlNNYWxsb2NTdGF0aXN0aWNzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUVCRjUxMjFDMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVD
b252ZXJzaW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTgxNUMxRTEzODMxOTgzMDA1N0FB
QTQgLyogV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQzI2QjQw
MTYwQThDQzYwMDI2NzU3QiAvKiBNb2NrQ0RNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjgxNTMs
NyArMjgyMzEsNiBAQAogCQkJCUNEMjdGNkU1MTQ1NzY4NUEwMDc4MjA3RCAvKiBKU01lZGlhQ29u
dHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDIzQTEyNTEzRjVGQTU5MDBGNjcwMDEg
LyogSlNNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTQ0NjE0MTgwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVkaWFFcnJvci5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlDREI4NTlGQjE2MEQ0OTRGMDBFNUIwN0YgLyogSlNNZWRpYUtleUVycm9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUNEQjg1OUZBMTYwRDQ5NDkwMEU1QjA3RiAvKiBKU01lZGlhS2V5
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMzQzM5QjYwQzBEM0Q4RDAwNUY0RDdBIC8q
IEpTTWVkaWFMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NjRFMDZDMTM1RUMxMDYwMEZE
QjAwQSAvKiBKU01lZGlhTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NTI5LDYg
KzI5NjA2LDE2IEBACiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzgwIC8qIFhTU0F1
ZGl0b3JEZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAw
MDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThEQTMxNjAxNDY0
MTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5
OEREODE2MDI1QkVGMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQ0RBOThEREYxNjAyNkEzNzAwRkVBM0IxIC8qIEpTTWVkaWFLZXlNZXNzYWdl
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThERTAxNjAyNkEzNzAwRkVBM0IxIC8q
IEpTTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OEUwNDE2
MDM5RTFBMDBGRUEzQjEgLyogSlNNZWRpYUtleXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RB
OThFMDYxNjAzOUUxRjAwRkVBM0IxIC8qIEpTTWVkaWFLZXlTZXNzaW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUNEQTk4RTBCMTYwM0NENjAwMEZFQTNCMSAvKiBDRE0uY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQ0RBOThFMEQxNjAzRkU0QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlDREE5OEUwRTE2MDNGRTU4MDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9u
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEMUI0QTY1MTYwNzg2QUUwMDI4MkRGOSAvKiBNZWRp
YUtleU5lZWRlZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5p
bgppbmRleCBiNGI1YTNlNzc0YWQzNTRlNGJjMDkwYTQ1ODBjYjkzYjE0MjMyMTU0Li45MjQ1YWRj
OTQ2MGVhNjNiOGZkODA1NjI2MzEwNmZmMGY4YzYzZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnROYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5pbgpAQCAtNTEsNSArNTEsNyBAQCBEZXZpY2VPcmllbnRhdGlvbkV2ZW50IGNvbmRpdGlvbmFs
PURFVklDRV9PUklFTlRBVElPTgogRGV2aWNlUHJveGltaXR5RXZlbnQgY29uZGl0aW9uYWw9UFJP
WElNSVRZX0VWRU5UUwogT3JpZW50YXRpb25FdmVudCBpbnRlcmZhY2VOYW1lPUV2ZW50LCBjb25k
aXRpb25hbD1PUklFTlRBVElPTl9FVkVOVFMKIE1lZGlhS2V5RXZlbnQgY29uZGl0aW9uYWw9RU5D
UllQVEVEX01FRElBCitNZWRpYUtleU1lc3NhZ2VFdmVudCBjb25kaXRpb25hbD1FTkNSWVBURURf
TUVESUFfVjIKK01lZGlhS2V5TmVlZGVkRXZlbnQgY29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElB
X1YyCiBUcmFja0V2ZW50IGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCiBBdXRvY29tcGxldGVFcnJv
ckV2ZW50IGNvbmRpdGlvbmFsPVJFUVVFU1RfQVVUT0NPTVBMRVRFCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCA4MjU2NjdiM2NhZDdhMzUxMWEwZGE0ZTA5ZWQ2
OWU5MjJlNzExOTVjLi5jZjVhY2Y3NWMzYmU0OTAzMGQzODcxMjM5MzAzODRlMTgwMDRmNGM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTE0LDYgKzE0LDcg
QEAgSURCUmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJREJUcmFuc2FjdGlv
biBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBTY3JpcHRQcm9jZXNzb3JOb2RlIGNvbmRp
dGlvbmFsPVdFQl9BVURJTwogTG9jYWxNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJF
QU0KK01lZGlhS2V5U2Vzc2lvbiBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIKIE1lZGlh
Q29udHJvbGxlciBjb25kaXRpb25hbD1WSURFTwogTWVkaWFTb3VyY2UgY29uZGl0aW9uYWw9TUVE
SUFfU09VUkNFCiBNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGMyZmU2NzU2MzhjNjM5NmUzNjMw
ZjcwYWE0YjQ0ZDA5ODZjNTgwZTMuLjQyMmExYjFjZTA1MTQ4MzczMzNhMDEyNzA1MmUzY2M2ODQy
NTdhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTI1
LDYgKzEyNSwxMSBAQAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUmVnaXN0cnkuaCIKICNlbmRpZgog
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKyNpbmNsdWRlICJNZWRpYUtleU5lZWRl
ZEV2ZW50LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlzLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTk2Niw2ICsxOTcxLDI1IEBAIGJv
b2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBj
b25zdCBTdHJpbmcmIGtleVN5c3RlCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUFfVjIpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKE1l
ZGlhUGxheWVyKiwgVWludDhBcnJheSogaW5pdERhdGEpCit7CisgICAgTWVkaWFLZXlOZWVkZWRF
dmVudEluaXQgaW5pdGlhbGl6ZXI7CisgICAgaW5pdGlhbGl6ZXIuaW5pdERhdGEgPSBpbml0RGF0
YTsKKyAgICBpbml0aWFsaXplci5idWJibGVzID0gZmFsc2U7CisgICAgaW5pdGlhbGl6ZXIuY2Fu
Y2VsYWJsZSA9IGZhbHNlOworCisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IE1lZGlhS2V5TmVl
ZGVkRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50LCBpbml0aWFs
aXplcik7CisgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1
ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0TWVkaWFLZXlzKE1lZGlhS2V5cyogbWVkaWFLZXlzKQoreworICAgIG1fbWVkaWFL
ZXlzID0gbWVkaWFLZXlzOworfQorI2VuZGlmCisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJv
Z3Jlc3NFdmVudFRpbWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKQogewogICAgIEFT
U0VSVChtX3BsYXllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4
IGU1MmNlNDFiNDJhMzQ2ZDA5MGYxNjljYTdmN2QzNWZjMTU1MDllMjguLmIxODQwODU3MjZkOWZh
OGZhNjVlMDhlYjhjY2RhMDI2MWJkMjUyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCkBAIC02Nyw2ICs2Nyw5IEBAIGNsYXNzIFdpZGdldDsKICNpZiBQTEFURk9STShN
QUMpCiBjbGFzcyBEaXNwbGF5U2xlZXBEaXNhYmxlcjsKICNlbmRpZgorI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUFfVjIpCitjbGFzcyBNZWRpYUtleXM7CisjZW5kaWYKIAogI2lmIEVOQUJMRShW
SURFT19UUkFDSykKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGU7CkBAIC0xODgsOSArMTkx
LDE2IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtp
dGtleWFkZGVkKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGtl
eWVycm9yKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGtleW1l
c3NhZ2UpOworI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQV9WMikKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdl
YmtpdG5lZWRrZXkpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQor
ICAgIE1lZGlhS2V5cyogbWVkaWFLZXlzKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUtleXMuZ2V0
KCk7IH0KKyAgICB2b2lkIHNldE1lZGlhS2V5cyhNZWRpYUtleXMqKTsKKyNlbmRpZgorCiAvLyBj
b250cm9scwogICAgIGJvb2wgY29udHJvbHMoKSBjb25zdDsKICAgICB2b2lkIHNldENvbnRyb2xz
KGJvb2wpOwpAQCAtNDQ1LDYgKzQ1NSwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBt
ZWRpYVBsYXllcktleU5lZWRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
LCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogaW5pdERhdGEs
IHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoKSBPVkVSUklERTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQV9WMikKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVk
ZWQoTWVkaWFQbGF5ZXIqLCBVaW50OEFycmF5Kik7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgU3Ry
aW5nIG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0
cmluZyBtZWRpYVBsYXllclVzZXJBZ2VudCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwg
Q09SU01vZGUgbWVkaWFQbGF5ZXJDT1JTTW9kZSgpIGNvbnN0IE9WRVJSSURFOwpAQCAtNzA2LDYg
KzcyMCwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBmcmllbmQgY2xhc3MgVHJhY2tEaXNw
bGF5VXBkYXRlU2NvcGU7CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIFJl
ZlB0cjxNZWRpYUtleXM+IG1fbWVkaWFLZXlzOworI2VuZGlmCiB9OwogCiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKaW5kZXgg
MmVjZTVhY2FhNWFkYTMyODVlYzM4NzkzNDJmYTgxYjI3OTA1ODNiZS4uNWViZjQ0NzBiYmMwZDZj
ZTU4NjJiYWQxOWNkYjY0YTRjYWY1NTg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaWRsCkBAIC00NSw3ICs0NSw5IEBAIGF0dHJpYnV0ZSBET01TdHJpbmcgcHJlbG9h
ZDsKIHJlYWRvbmx5IGF0dHJpYnV0ZSBUaW1lUmFuZ2VzIGJ1ZmZlcmVkOwogdm9pZCBsb2FkKCk7
CiAjaWYgZGVmaW5lZChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEVfRU5DUllQVEVE
X01FRElBCi1ET01TdHJpbmcgY2FuUGxheVR5cGUoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVm
aW5lZF0gRE9NU3RyaW5nIHR5cGUsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWQsIFRy
ZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3Ry
aW5nIGtleVN5c3RlbSk7CisgICAgRE9NU3RyaW5nIGNhblBsYXlUeXBlKGluIFtPcHRpb25hbD1E
ZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0eXBlLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElz
VW5kZWZpbmVkLCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxT
dHJpbmddIERPTVN0cmluZyBrZXlTeXN0ZW0pOworI2VsaWYgZGVmaW5lZChFTkFCTEVfRU5DUllQ
VEVEX01FRElBX1YyKSAmJiBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyCisgICAgRE9NU3RyaW5n
IGNhblBsYXlUeXBlKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0
eXBlLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkLCBUcmVhdE51bGxBcz1OdWxsU3Ry
aW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBrZXlTeXN0ZW0pOwog
I2Vsc2UKIERPTVN0cmluZyBjYW5QbGF5VHlwZShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZp
bmVkXSBET01TdHJpbmcgdHlwZSk7CiAjZW5kaWYKQEAgLTEwMSwxMCArMTAzLDEzIEBAIHJlYWRv
bmx5IGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9TUVESUFfU1RBVElTVElDU10gdW5zaWduZWQgbG9u
ZyB3ZWJraXRWaWRlb0RlY29kCiBbVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSB2
b2lkIHdlYmtpdENhbmNlbEtleVJlcXVlc3QoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRy
ZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIGtleVN5c3RlbSwgaW4gW09wdGlv
bmFsPURlZmF1bHRJc051bGxTdHJpbmddIERPTVN0cmluZyBzZXNzaW9uSWQpCiAgICAgcmFpc2Vz
IChET01FeGNlcHRpb24pOwogCi1bVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBh
dHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbndlYmtpdGtleWFkZGVkOwotYXR0cmlidXRlIFtWOEVu
YWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXll
cnJvcjsKLWF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBFdmVu
dExpc3RlbmVyIG9ud2Via2l0a2V5bWVzc2FnZTsKLWF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50
aW1lPWVuY3J5cHRlZE1lZGlhXSBFdmVudExpc3RlbmVyIG9ud2Via2l0bmVlZGtleTsKKyAgICBh
dHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gRXZlbnRMaXN0ZW5l
ciBvbndlYmtpdGtleWFkZGVkOworICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPWVu
Y3J5cHRlZE1lZGlhXSBFdmVudExpc3RlbmVyIG9ud2Via2l0a2V5ZXJyb3I7CisgICAgYXR0cmli
dXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253
ZWJraXRrZXltZXNzYWdlOworI2VuZGlmCisgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1FTkNS
WVBURURfTUVESUF8RU5DUllQVEVEX01FRElBX1YyLCBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlw
dGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRuZWVka2V5OworI2lmIGRlZmluZWQoRU5B
QkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJiYgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMgorICAg
IGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBNZWRpYUtleXMg
bWVkaWFLZXlzOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKEVOQUJMRV9WSURFT19UUkFDSykgJiYg
RU5BQkxFX1ZJREVPX1RSQUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
RXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5oCmluZGV4IDkwZjQ0N2Yw
NWU1YTRmMGNhZDE0YjVjNDI5YmZiZmU4Yzg3MGQzMDQuLmIwYmY1Zjc2NWQ1YTM4NjY2Nzk4YjA0
OTM1NzViMmEwNjQwMjE4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFF
cnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5oCkBAIC00MCw3ICs0
MCw3IEBAIHB1YmxpYzoKICAgICAgICAgTUVESUFfRVJSX05FVFdPUkssCiAgICAgICAgIE1FRElB
X0VSUl9ERUNPREUsCiAgICAgICAgIE1FRElBX0VSUl9TUkNfTk9UX1NVUFBPUlRFRAotI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKICAgICAgICAgLCBNRURJQV9FUlJfRU5DUllQVEVECiAj
ZW5kaWYKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVycm9y
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5pZGwKaW5kZXggZTJjZDI3MTQz
Y2NhNWE3YmM3NTQ4OGM4NTYxZDk2NTNmMDk0NzFiZC4uNzMzNzQ0NDQ2YjAxYzIxMmM1NDVmMmUw
NjdiYTgxNjFmODY3YzAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVy
cm9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaWRsCkBAIC0yMywx
NSArMjMsMTUgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLVsKK2ludGVyZmFjZSBbCiAgICAg
Q29uZGl0aW9uYWw9VklERU8sCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQotXSBpbnRl
cmZhY2UgTWVkaWFFcnJvciB7CitdIE1lZGlhRXJyb3IgewogICAgICAgY29uc3QgdW5zaWduZWQg
c2hvcnQgTUVESUFfRVJSX0FCT1JURUQgPSAxOwogICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
TUVESUFfRVJSX05FVFdPUksgPSAyOwogICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFf
RVJSX0RFQ09ERSA9IDM7CiAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfU1JD
X05PVF9TVVBQT1JURUQgPSA0OwotI2lmIGRlZmluZWQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkg
JiYgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQQorI2lmIChkZWZpbmVkKEVOQUJMRV9FTkNSWVBURURf
TUVESUEpICYmIEVOQUJMRV9FTkNSWVBURURfTUVESUEpIHx8IChkZWZpbmVkKEVOQUJMRV9FTkNS
WVBURURfTUVESUFfVjIpICYmIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpCiAgICAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfRU5DUllQVEVEID0gNTsKICNlbmRpZgogICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IGNvZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFLZXlFcnJvci5oCmluZGV4IDEyYzczNmQ0ODdhM2Y0YzA3MTY1YjRjNjUyOGVmZDk5OWNmNzVk
ZTIuLjQ5ZTM4NDNlMzI4YjM5MDg3OGU2NWUxMmMxMWUwNjk1ZDk3MThkODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFLZXlFcnJvci5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIE1lZGlhS2V5
RXJyb3JfaAogI2RlZmluZSBNZWRpYUtleUVycm9yX2gKIAotI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQV9WMikKIAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBNZWRpYUtleUVycm9yIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlFcnJvcj4gewogcHVi
bGljOgotICAgIGVudW0gQ29kZSB7CisgICAgZW51bSB7CiAgICAgICAgIE1FRElBX0tFWUVSUl9V
TktOT1dOID0gMSwKICAgICAgICAgTUVESUFfS0VZRVJSX0NMSUVOVCwKICAgICAgICAgTUVESUFf
S0VZRVJSX1NFUlZJQ0UsCkBAIC00MywxNSArNDMsMTggQEAgcHVibGljOgogICAgICAgICBNRURJ
QV9LRVlFUlJfSEFSRFdBUkVDSEFOR0UsCiAgICAgICAgIE1FRElBX0tFWUVSUl9ET01BSU4KICAg
ICB9OworICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgQ29kZTsKIAotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE1lZGlhS2V5RXJyb3I+IGNyZWF0ZShDb2RlIGNvZGUpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBNZWRpYUtleUVycm9yKGNvZGUpKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
S2V5RXJyb3I+IGNyZWF0ZShDb2RlIGNvZGUsIHVuc2lnbmVkIGxvbmcgc3lzdGVtQ29kZSA9IDAp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUtleUVycm9yKGNvZGUsIHN5c3RlbUNvZGUpKTsg
fQogCiAgICAgQ29kZSBjb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlOyB9CisgICAgdW5zaWdu
ZWQgbG9uZyBzeXN0ZW1Db2RlKCkgeyByZXR1cm4gbV9zeXN0ZW1Db2RlOyB9CiAKIHByaXZhdGU6
Ci0gICAgZXhwbGljaXQgTWVkaWFLZXlFcnJvcihDb2RlIGNvZGUpIDogbV9jb2RlKGNvZGUpIHsg
fQorICAgIGV4cGxpY2l0IE1lZGlhS2V5RXJyb3IoQ29kZSBjb2RlLCB1bnNpZ25lZCBsb25nIHN5
c3RlbUNvZGUpIDogbV9jb2RlKGNvZGUpLCBtX3N5c3RlbUNvZGUoc3lzdGVtQ29kZSkgeyB9CiAK
ICAgICBDb2RlIG1fY29kZTsKKyAgICB1bnNpZ25lZCBsb25nIG1fc3lzdGVtQ29kZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFLZXlFcnJvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXJyb3IuaWRs
CmluZGV4IGY3Mjc5ZDM5Yzg4MWIxYWU5NzE0ODBhMzIwMTRjOWE2NmU3MTQ0MTkuLjk2MzE1NTEz
OTJkNmU5MjMyZjRmZTY2YmY2ODA0ZWIwMjgwOWJjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFLZXlFcnJvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUtleUVycm9yLmlkbApAQCAtMjMsMTEgKzIzLDExIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwog
Ci1bCi0gICAgQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBLAoraW50ZXJmYWNlIFsKKyAgICBD
b25kaXRpb25hbD1FTkNSWVBURURfTUVESUF8RU5DUllQVEVEX01FRElBX1YyLAogICAgIFY4RW5h
YmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYSwgCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZU
YWJsZQotXSBpbnRlcmZhY2UgTWVkaWFLZXlFcnJvciB7CitdIE1lZGlhS2V5RXJyb3IgewogICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0tFWUVSUl9VTktOT1dOID0gMTsKICAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBNRURJQV9LRVlFUlJfQ0xJRU5UID0gMjsKICAgICBjb25zdCB1bnNp
Z25lZCBzaG9ydCBNRURJQV9LRVlFUlJfU0VSVklDRSA9IDM7CkBAIC0zNSw0ICszNSw1IEBACiAg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfS0VZRVJSX0hBUkRXQVJFQ0hBTkdFID0gNTsK
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9LRVlFUlJfRE9NQUlOID0gNjsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgY29kZTsKKyAgICBbQ29uZGl0aW9uYWw9
RU5DUllQVEVEX01FRElBX1YyXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBzeXN0
ZW1Db2RlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCA3NzRkMDI0NWJiMGU5
Njc0MzNjZTIxYjM0NjJkMTI2NGJlNWNlNjZhLi43NDNlZmZhMmQ5YjU1NWE1ZmMyZTc4MTIxODE0
ZDllZWM1M2IwOGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC00ODYsNiArNDg2
LDEwIEBACiAKICAgICBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBLCBWOEVuYWJsZWRBdFJ1
bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIGF0dHJpYnV0ZSBNZWRpYUtleUVycm9yQ29uc3RydWN0b3Ig
TWVkaWFLZXlFcnJvcjsKICAgICBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBLCBWOEVuYWJs
ZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIGF0dHJpYnV0ZSBNZWRpYUtleUV2ZW50Q29uc3Ry
dWN0b3IgTWVkaWFLZXlFdmVudDsKKyAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUVOQ1JZUFRF
RF9NRURJQV9WMiwgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBNZWRpYUtleXND
b25zdHJ1Y3RvciBNZWRpYUtleXM7CisgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1FTkNSWVBU
RURfTUVESUFfVjIsIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gTWVkaWFLZXlF
cnJvckNvbnN0cnVjdG9yIE1lZGlhS2V5RXJyb3I7CisgICAgYXR0cmlidXRlIFtDb25kaXRpb25h
bD1FTkNSWVBURURfTUVESUFfVjIsIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0g
TWVkaWFLZXlNZXNzYWdlRXZlbnRDb25zdHJ1Y3RvciBNZWRpYUtleU1lc3NhZ2VFdmVudDsKKyAg
ICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMiwgVjhFbmFibGVkQXRS
dW50aW1lPWVuY3J5cHRlZE1lZGlhXSBNZWRpYUtleU5lZWRlZEV2ZW50Q29uc3RydWN0b3IgTWVk
aWFLZXlOZWVkZWRFdmVudDsKIAogICAgIFtDb25kaXRpb25hbD1WSURFT19UUkFDSywgVjhFbmFi
bGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2tdIGF0dHJpYnV0ZSBIVE1MVHJhY2tFbGVtZW50
Q29uc3RydWN0b3IgSFRNTFRyYWNrRWxlbWVudDsKICAgICBbQ29uZGl0aW9uYWw9VklERU9fVFJB
Q0ssIFY4RW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrXSBhdHRyaWJ1dGUgVGV4dFRy
YWNrQ29uc3RydWN0b3IgVGV4dFRyYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDRiNzA0YWIwNTkzOWU3ODVmMTI3M2Q1NWY3
ZTBhNWYyMTMzNWEwNWEuLjAzZDM5MWM2MTM2ZDc2MmU5ZjdlMTY1YThjZTA0ODZiMmNjMTY0MzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAKQEAgLTI5NSw3ICsyOTUsNyBAQCBzdGF0aWMgTWVkaWFQbGF5ZXJGYWN0b3J5KiBiZXN0TWVk
aWFFbmdpbmVGb3JUeXBlQW5kQ29kZWNzKGNvbnN0IFN0cmluZyYgdHlwZSwgYwogICAgICAgICAg
ICAgICAgIGN1cnJlbnQgPSAwOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8
IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAgICAgICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGUgZW5naW5lU3VwcG9ydCA9IGVuZ2luZXNbbmR4XS0+c3VwcG9ydHNUeXBlQW5kQ29kZWNz
KHR5cGUsIGNvZGVjcywga2V5U3lzdGVtLCB1cmwpOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BB
UkFNKGtleVN5c3RlbSk7CkBAIC03ODQsNyArNzg0LDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50
VHkKICAgICBVTlVTRURfUEFSQU0oY2xpZW50KTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQ
VEVEX01FRElBX1YyKQogICAgIHJldHVybiBlbmdpbmUtPnN1cHBvcnRzVHlwZUFuZENvZGVjcyh0
eXBlLCB0eXBlQ29kZWNzLCBzeXN0ZW0sIHVybCk7CiAjZWxzZQogICAgIEFTU0VSVChzeXN0ZW0u
aXNFbXB0eSgpKTsKQEAgLTEwODEsNiArMTA4MSwxNCBAQCBib29sIE1lZGlhUGxheWVyOjprZXlO
ZWVkZWQoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBj
bwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQordm9pZCBNZWRp
YVBsYXllcjo6a2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRhKQoreworICAgIGlmIChtX21l
ZGlhUGxheWVyQ2xpZW50KQorICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXll
cktleU5lZWRlZCh0aGlzLCBpbml0RGF0YSk7Cit9CisjZW5kaWYKKwogU3RyaW5nIE1lZGlhUGxh
eWVyOjpyZWZlcnJlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX21lZGlhUGxheWVyQ2xpZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXgg
MmIwNTE3NmFmNjliYTE2MjZmNjI0MWZhODgzZmZhNDI1Mzk5Zjg2Mi4uY2I1NTc4YjgxNTA5OGE2
NDM3MTIzMzEzYzZkMzAzYzIxZjhjYjA4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0xOTMsNiArMTkzLDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBT
dHJpbmcmIC8qIGtleVN5c3RlbSAqLywgY29uc3QgU3RyaW5nJiAvKiBzZXNzaW9uSWQgKi8sIGNv
bnN0IHVuc2lnbmVkIGNoYXIqIC8qIGluaXREYXRhICovLCB1bnNpZ25lZCAvKiBpbml0RGF0YUxl
bmd0aCAqLykgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQV9WMikKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQ
bGF5ZXIqLCBVaW50OEFycmF5KikgeyB9CisjZW5kaWYKKyAgICAKICAgICB2aXJ0dWFsIFN0cmlu
ZyBtZWRpYVBsYXllclJlZmVycmVyKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2
aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclVzZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIFN0cmlu
ZygpOyB9CiAgICAgdmlydHVhbCBDT1JTTW9kZSBtZWRpYVBsYXllckNPUlNNb2RlKCkgY29uc3Qg
eyByZXR1cm4gVW5zcGVjaWZpZWQ7IH0KQEAgLTQzMCw2ICs0MzQsMTAgQEAgcHVibGljOgogICAg
IGJvb2wga2V5TmVlZGVkKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogaW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRh
TGVuZ3RoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKyAgICB2
b2lkIGtleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSk7CisjZW5kaWYKKwogICAgIFN0cmlu
ZyByZWZlcnJlcigpIGNvbnN0OwogICAgIFN0cmluZyB1c2VyQWdlbnQoKSBjb25zdDsKIApAQCAt
NDgwLDcgKzQ4OCw3IEBAIHByaXZhdGU6CiAKIHR5cGVkZWYgUGFzc093blB0cjxNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2U+ICgqQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIpKE1lZGlhUGxheWVy
Kik7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzKShIYXNoU2V0PFN0
cmluZz4mIHR5cGVzKTsKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiB0eXBlZGVmIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0sIGNvbnN0IEtVUkwmIHVybCk7CiAjZWxzZQogdHlwZWRlZiBNZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlICgqTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUpKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwmIHVybCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgK
aW5kZXggNjJhMDJlYmYxZTU5NWI0M2Y2ZjI5OTFiODI1NGMwNzA3ZmUzYzM0YS4uM2U0NjZiYzY5
MGUwZjNiODRmYzNlMGI5ODcwODdiNTMwZTUxNzU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApA
QCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxh
eWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAgICAgc3RhdGljIHZv
aWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7CiAgICAgc3RhdGlj
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwmKTsKLSNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBU
RURfTUVESUFfVjIpCiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgZXh0ZW5k
ZWRTdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywg
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmKTsKICNlbmRpZgogCkBAIC0xNzcs
MTkgKzE3NywxNCBAQCBwcml2YXRlOgogCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDkwCiAgICAgUmV0YWluUHRyPFZUUGl4ZWxUcmFuc2ZlclNlc3Npb25SZWY+IG1f
cGl4ZWxUcmFuc2ZlclNlc3Npb247Ci0jZW5kaWYKIAotI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIGZyaWVu
ZCBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI7CisgICAgT3duUHRyPFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRlcjsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFW
RkxvYWRlckRlbGVnYXRlPiBtX2xvYWRlckRlbGVnYXRlOwogICAgIEhhc2hNYXA8U3RyaW5nLCBS
ZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+ID4gbV9rZXlVUklUb1JlcXVl
c3RNYXA7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2Fk
aW5nUmVxdWVzdD4gPiBtX3Nlc3Npb25JRFRvUmVxdWVzdE1hcDsKICNlbmRpZgogCi0jaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi0gICAgZnJpZW5kIGNsYXNzIFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcjsKLSAgICBPd25QdHI8V2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyPiBtX3Jlc291cmNlTG9hZGVyOwotI2VuZGlmCi0KICNpZiBIQVZFKEFWRk9VTkRBVElPTl9U
RVhUX1RSQUNLX1NVUFBPUlQpCiAgICAgUmV0YWluUHRyPEFWUGxheWVySXRlbUxlZ2libGVPdXRw
dXQ+IG1fbGVnaWJsZU91dHB1dDsKICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQyog
bV9jdXJyZW50VHJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA1ZmE4Y2EyNDFhMWZi
MWYyMDI4ZjFjYmM0ZWE4ODc3NzJjZjIxZTNjLi45NTc3OGZkYmZiMTRlOWUyMTBkYTVhZTZmMDNi
NDcxMGZjNzk0ZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTE5NCw3ICsxOTQsNyBA
QCBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lz
dHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVE
SUFfVjIpCiAgICAgICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5cGVzLCBleHRl
bmRlZFN1cHBvcnRzVHlwZSwgMCwgMCwgMCk7CiAjZWxzZQogICAgICAgICByZWdpc3RyYXIoY3Jl
YXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwKTsKQEAgLTIwNiw5
ICsyMDYsNyBAQCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDKE1lZGlhUGxheQogICAgICwgbV9vYmpjT2JzZXJ2ZXIo
QWRvcHROUywgW1tXZWJDb3JlQVZGTW92aWVPYnNlcnZlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFj
azp0aGlzXSkKICAgICAsIG1fdmlkZW9GcmFtZUhhc0RyYXduKGZhbHNlKQogICAgICwgbV9oYXZl
Q2hlY2tlZFBsYXlhYmlsaXR5KGZhbHNlKQotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAg
ICAgLCBtX2xvYWRlckRlbGVnYXRlKEFkb3B0TlMsIFtbV2ViQ29yZUFWRkxvYWRlckRlbGVnYXRl
IGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKQotI2VuZGlmCiAjaWYgSEFWRShBVkZPVU5E
QVRJT05fVEVYVF9UUkFDS19TVVBQT1JUKQogICAgICwgbV9jdXJyZW50VHJhY2soMCkKICNlbmRp
ZgpAQCAtODE1LDcgKzgxMyw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3VwcG9ydHNUeXBlKGNvbnN0CiAgICAgcmV0dXJu
IFtBVlVSTEFzc2V0IGlzUGxheWFibGVFeHRlbmRlZE1JTUVUeXBlOnR5cGVTdHJpbmddID8gTWVk
aWFQbGF5ZXI6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOzsKIH0K
IAotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKIHN0YXRpYyBib29sIGtleVN5c3RlbUlz
U3VwcG9ydGVkKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogewogICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShrZXlTeXN0ZW0sICJjb20uYXBwbGUubHNrZCIpIHx8IGVxdWFsSWdub3JpbmdDYXNl
KGtleVN5c3RlbSwgImNvbS5hcHBsZS5sc2tkLjFfMCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQuaAppbmRleCAzZWUxYTRjMjk4NmRjODkyNGIzN2Q2ZjEzZTFhZThjNDEyYjA0OGI5Li44YjEx
ZjgzMjgwMDQyMjJlMDRkZWVhNTNmOWZmYzkzNmQ5ZTVhYTVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQuaApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBQYXNzT3du
UHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAg
ICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7
CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwmKTsKLSNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVO
QUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGUgZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmKTsKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggZWY3ZTM4MDc5ZTA2NTA0Njk3
YzIzNjhlMzQ4OWZiODdiMTBjOWM0ZS4uNTZlMzM0YTZhOGRjNzdmMTg3NTRmNjFhNThiNTcwOGFk
YmI1Y2I2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtMTkwLDcgKzE5MCw3
IEBAIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBNZWRpYVBsYXllclBy
aXZhdGVRVEtpdDo6Y3JlYXRlKE1lZGlhUGxhCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
OjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsK
ICAgICBpZiAoaXNBdmFpbGFibGUoKSkKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAg
ICAgICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5cGVzLCBleHRlbmRlZFN1cHBv
cnRzVHlwZSwgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRp
YUNhY2hlRm9yU2l0ZSk7CiAjZWxzZQogICAgICAgICByZWdpc3RyYXIoY3JlYXRlLCBnZXRTdXBw
b3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBnZXRTaXRlc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRp
YUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKTsKQEAgLTE1NTIsNyArMTU1Miw3IEBAIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1cHBvcnRz
VHlwZShjb25zdCBTdHJpbmcmIHR5CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBv
cnRlZDsKIH0KIAotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmV4dGVuZGVkU3VwcG9ydHNUeXBl
KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgLy8gUVRLaXQgZG9lcyBub3Qgc3Vw
cG9ydCBhbnkgZW5jcnl0cGVkIG1lZGlhLCBzbyByZXR1cm4gSXNOb3RTdXBwb3J0ZWQgaWYgdGhl
IGtleVN5c3RlbSBpcyBub24tTlVMTDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCAzZjc4MjVkYzM5NzMxZDdhZDZmOWQ0ZjA2ZjM3M2NkNTgwMjNmNmI2Li43NzM5MWEyNzRi
Nzk0YmMzZDc2YmI4NmI1OGYzYWFmMmNjYTVmNmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCkBAIC0xMjYsNiArMTI2LDExIEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNr
aW5nLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisjaW5jbHVk
ZSAiQ0RNLmgiCisjaW5jbHVkZSAiTW9ja0NETS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogI2lmIEVOQUJMRShQQUdFX1BPUFVQKQpAQCAtMTkxMiw0ICsxOTE3LDExIEBAIHZv
aWQgSW50ZXJuYWxzOjpzZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnMoYm9vbCBlbmFibGVkKQogICAg
IFdlYkNvcmU6OlNldHRpbmdzOjpzZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnMoZW5hYmxlZCk7CiB9
CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQordm9pZCBJbnRlcm5hbHM6OmluaXRp
YWxpemVNb2NrQ0RNKCkKK3sKKyAgICBDRE06OnJlZ2lzdGVyQ0RNRmFjdG9yeShNb2NrQ0RNOjpj
cmVhdGUsIE1vY2tDRE06OnN1cHBvcnRzS2V5U3l0ZW0pOworfQorI2VuZGlmCisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDgzMTRmOTM5YjVhYmNlYmQyMDc4OTBjZTkzNDNj
MmY1YTY3MTdkN2IuLmVmNzNjM2RmYWFiNmI0ZjRkM2IzNDcwNWM5NTQ2YjUyYzdmNGViOWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjc0LDYgKzI3NCwxMCBAQCBwdWJsaWM6
CiAKICAgICBTdHJpbmcgZ2V0Q3VycmVudEN1cnNvckluZm8oRG9jdW1lbnQqLCBFeGNlcHRpb25D
b2RlJik7CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIHZvaWQgaW5pdGlh
bGl6ZU1vY2tDRE0oKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFs
cyhEb2N1bWVudCopOwogICAgIERvY3VtZW50KiBjb250ZXh0RG9jdW1lbnQoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBmN2E5N2FiODhlZjM1OTRkZWRiMDBl
M2YyMGY4NmI1NDQ2OGUzOGQwLi5lY2E0MjdiNzlhYzYxOWI5M2U2MDEwOTIxMTQwYTE2Y2M2YTg1
YzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0yNDIsNCArMjQyLDYg
QEAKICAgICBBcnJheUJ1ZmZlciBzZXJpYWxpemVPYmplY3QoaW4gU2VyaWFsaXplZFNjcmlwdFZh
bHVlIG9iaik7CiAKICAgICB2b2lkIHNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyhpbiBib29sZWFu
IGVuYWJsZWQpOworCisgICAgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMl0gdm9pZCBp
bml0aWFsaXplTW9ja0NETSgpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjEwMTgyM2Y4NzE5NjY5YWE2ZTk2M2NmOGNiMGZjYTQ2MTlmYmY1MmYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uY3BwCkBAIC0wLDAgKzEs
MTQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tD
RE0uaCIKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlICJDRE0u
aCIKKyNpbmNsdWRlICJNZWRpYUtleUVycm9yLmgiCisjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXku
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2NrQ0RNU2Vzc2lvbiA6IHB1Ymxp
YyBDRE1TZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxNb2NrQ0RNU2Vz
c2lvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IE1vY2tDRE1TZXNzaW9uKCkpOyB9
CisgICAgdmlydHVhbCB+TW9ja0NETVNlc3Npb24oKSB7IH0KKworICAgIHZpcnR1YWwgY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQoKSBPVkVSUklERSB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQorICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRp
b25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNv
ZGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlS2V5cygpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCBhZGRLZXkoVWludDhBcnJheSosIFJlZlB0cjxVaW50OEFycmF5PiYg
bmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5
c3RlbUNvZGUpIE9WRVJSSURFOworCitwcm90ZWN0ZWQ6CisgICAgTW9ja0NETVNlc3Npb24oKTsK
KworICAgIFN0cmluZyBtX3Nlc3Npb25JZDsKK307CisKK2Jvb2wgTW9ja0NETTo6c3VwcG9ydHNL
ZXlTeXRlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKK3sKKyAgICByZXR1cm4gZXF1YWxJZ25v
cmluZ0Nhc2Uoa2V5U3lzdGVtLCAiY29tLndlYmNvcmUubW9jayIpOworfQorCitib29sIE1vY2tD
RE06OnN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICByZXR1
cm4gZXF1YWxJZ25vcmluZ0Nhc2UobWltZVR5cGUsICJ2aWRlby9tb2NrIik7Cit9CisKK1Bhc3NP
d25QdHI8Q0RNU2Vzc2lvbj4gTW9ja0NETTo6Y3JlYXRlU2Vzc2lvbigpCit7CisgICAgcmV0dXJu
IE1vY2tDRE1TZXNzaW9uOjpjcmVhdGUoKTsKK30KKworc3RhdGljIFVpbnQ4QXJyYXkqIGluaXRE
YXRhUHJlZml4KCkKK3sKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwcmVmaXhEYXRh
W10gPSB7J20nLCAnbycsICdjJywgJ2snfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0
cjxVaW50OEFycmF5PiwgcHJlZml4LCAoKSk7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQg
PSBmYWxzZTsKKyAgICBpZiAoIWluaXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVkID0g
dHJ1ZTsKKyAgICAgICAgcHJlZml4ID0gVWludDhBcnJheTo6Y3JlYXRlKHByZWZpeERhdGEsIHNp
emVvZihwcmVmaXhEYXRhKSAvIHNpemVvZihwcmVmaXhEYXRhWzBdKSk7CisgICAgfQorICAgIHJl
dHVybiBwcmVmaXguZ2V0KCk7Cit9CisKK3N0YXRpYyBVaW50OEFycmF5KiBrZXlQcmVmaXgoKQor
eworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHByZWZpeERhdGFbXSA9IHsnaycsICdl
JywgJ3knfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxXVEY6OlVpbnQ4QXJyYXk+
LCBwcmVmaXgsICgpKTsKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAg
IGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAg
ICBwcmVmaXggPSBVaW50OEFycmF5OjpjcmVhdGUocHJlZml4RGF0YSwgc2l6ZW9mKHByZWZpeERh
dGEpIC8gc2l6ZW9mKHByZWZpeERhdGFbMF0pKTsKKyAgICB9CisgICAgcmV0dXJuIHByZWZpeC5n
ZXQoKTsKK30KKworc3RhdGljIFVpbnQ4QXJyYXkqIGtleVJlcXVlc3QoKQoreworICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBjaGFyIHJlcXVlc3REYXRhW10gPSB7J3InLCAnZScsICdxJywgJ3Un
LCAnZScsICdzJywgJ3QnfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxXVEY6OlVp
bnQ4QXJyYXk+LCByZXF1ZXN0LCAoKSk7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBm
YWxzZTsKKyAgICBpZiAoIWluaXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1
ZTsKKyAgICAgICAgcmVxdWVzdCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShyZXF1ZXN0RGF0YSwgc2l6
ZW9mKHJlcXVlc3REYXRhKSAvIHNpemVvZihyZXF1ZXN0RGF0YVswXSkpOworICAgIH0KKyAgICBy
ZXR1cm4gcmVxdWVzdC5nZXQoKTsKK30KKworc3RhdGljIFN0cmluZyBnZW5lcmF0ZVNlc3Npb25J
ZCgpCit7CisgICAgc3RhdGljIGludCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Nlc3Npb25JZCA9
IDA7CisgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nU2Vz
c2lvbklkKyspOworfQorCitNb2NrQ0RNU2Vzc2lvbjo6TW9ja0NETVNlc3Npb24oKQorICAgIDog
bV9zZXNzaW9uSWQoZ2VuZXJhdGVTZXNzaW9uSWQoKSkKK3sKK30KKworUGFzc1JlZlB0cjxVaW50
OEFycmF5PiBNb2NrQ0RNU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYs
IFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2Rl
LCB1bnNpZ25lZCBsb25nJikKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5pdERh
dGFQcmVmaXgoKS0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAoIWluaXREYXRhIHx8IGkg
Pj0gaW5pdERhdGEtPmxlbmd0aCgpIHx8IGluaXREYXRhLT5pdGVtKGkpICE9IGluaXREYXRhUHJl
Zml4KCktPml0ZW0oaSkpIHsKKyAgICAgICAgICAgIGVycm9yQ29kZSA9IE1lZGlhS2V5RXJyb3I6
Ok1FRElBX0tFWUVSUl9VTktOT1dOOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIGtleVJlcXVlc3QoKTsKK30KKwordm9pZCBNb2NrQ0RNU2Vzc2lv
bjo6cmVsZWFzZUtleXMoKQoreworICAgIC8vIG5vLW9wCit9CisKK2Jvb2wgTW9ja0NETVNlc3Np
b246OmFkZEtleShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYsIHVuc2lnbmVk
IHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmKQoreworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBrZXlQcmVmaXgoKS0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAoaSA+
PSBrZXktPmxlbmd0aCgpIHx8IGtleS0+aXRlbShpKSAhPSBrZXlQcmVmaXgoKS0+aXRlbShpKSkg
eworICAgICAgICAgICAgZXJyb3JDb2RlID0gTWVkaWFLZXlFcnJvcjo6TUVESUFfS0VZRVJSX0NM
SUVOVDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9W
MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5oIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM1YjUwYTlkNmFmMmFiZmM2
Yjg1YjExM2Y0ODM5MDkwYjYxZDk4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NETS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IE1vY2tDRE1faAorI2RlZmluZSBNb2NrQ0RNX2gKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUFfVjIpCisKKyNpbmNsdWRlICJDRE1Qcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDRE07CisKK2NsYXNzIE1vY2tD
RE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZUludGVyZmFjZSB7CitwdWJsaWM6CisgICAgLy8gQ0RNRmFj
dG9yeSBzdXBwb3J0OgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENETVByaXZhdGVJbnRlcmZhY2U+
IGNyZWF0ZShDRE0qIGNkbSkgeyByZXR1cm4gYWRvcHRQdHIobmV3IE1vY2tDRE0oY2RtKSk7IH0K
KyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5dGVtKGNvbnN0IFN0cmluZyYpOworCisgICAg
dmlydHVhbCB+TW9ja0NETSgpIHsgfQorCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzT3du
UHRyPENETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBPVkVSUklERTsKKworcHJvdGVjdGVkOgor
ICAgIE1vY2tDRE0oQ0RNKiBjZG0pIDogbV9jZG0oY2RtKSB7IH0KKyAgICBDRE0qIG1fY2RtOwor
fTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2VuZGlmIC8v
IE1vY2tDRE1faApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDFhODkyMDczNDk5MjJkM2E0ZGNiMGFjMWI0MDhiOTM4NmFkMjVk
MjYuLmZjZGJlMDlkOTU1NzMxNjM3YjkyZWE0YzdlNTE4Mzc1YzQ0Y2NhMmIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxMi0wOS0xOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KworICAgICAgICBCcmluZyBXZWJLaXQgdXAgdG8gc3BlZWQgd2l0aCBsYXRlc3QgRW5jcnlwdGVk
IE1lZGlhIHNwZWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NzAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIG5ldyB0ZXN0cyBmb3IgdGhlIHVwZGF0ZWQgRW5jcnlwdGVkIE1lZGlhIEV4dGVu
c2lvbnMgc3BlYy4KKworICAgICAgICAqIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQt
bWVkaWEtdjItZXZlbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvZW5j
cnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1ldmVudHMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXgtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlw
dGVkLW1lZGlhLXYyLXN5bnRheC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
U2tpcHBlZDogVW5za2lwIChtb3N0IG9mKSB0aGUgbWVkaWEvZW5jcnlwdGVkLW1lZGlhLyB0ZXN0
cworICAgICAgICAqIHBsYXRmb3JtL21hYy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVk
LW1lZGlhLWNhbi1wbGF5LXR5cGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMy0wMi0wNiAg
RGltYSBHb3JiaWsgIDxkZ29yYmlrQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9yZSB0aGUgbGFu
Z3VhZ2UgaW50ZXJuYWxseSBpbnN0ZWFkIG9mIHVzaW5nIGxhbmcgYXR0cmlidXRlIGZvciBXZWJW
VFQgbm9kZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9l
bmNyeXB0ZWQtbWVkaWEtdjItZXZlbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlh
L2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItZXZlbnRzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43YjI5NjNhMDY0MzA0ZDY4ODYyMDJlOWI4MjY5OTI1ZmRkYmQ1NTMxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRl
ZC1tZWRpYS12Mi1ldmVudHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVz
dHMgdGhlIGV2ZW50cyBjcmVhdGVkIGJ5IE1lZGlhS2V5cy4KKworUlVOKG1lZGlhS2V5cyA9IG5l
dyBNZWRpYUtleXMoImNvbS53ZWJjb3JlLm1vY2siKSkKK1JVTihtZWRpYUtleVNlc3Npb24gPSBt
ZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidmlkZW8vbW9jayIsIGluaXREYXRhKSkKK0VWRU5UKHdl
YmtpdGtleW1lc3NhZ2UpCitSVU4obWVkaWFLZXlTZXNzaW9uLmFkZEtleShpbnZhbGlkS2V5KSkK
K0VWRU5UKHdlYmtpdGtleWVycm9yKQorUlVOKG1lZGlhS2V5U2Vzc2lvbi5hZGRLZXkodmFsaWRL
ZXkpKQorRVZFTlQod2Via2l0a2V5YWRkZWQpCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLWV2ZW50
cy5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRp
YS12Mi1ldmVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzc2MDhmN2I1MzYxZGI5MzZkNjdlYTU0MjIz
N2NlYzFiNTYxZTdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlw
dGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1ldmVudHMuaHRtbApAQCAtMCwwICsxLDUwIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+TWVk
aWFLZXlzPC90aXRsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vdmlkZW8tdGVzdC5qcz48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0cmluZ1RvVWlu
dDhBcnJheShzdHIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGFycj1bXTsK
KyAgICAgICAgICAgICAgICBmb3IodmFyIGk9MCxqPXN0ci5sZW5ndGg7aTxqOysraSl7CisgICAg
ICAgICAgICAgICAgICBhcnJbaV09c3RyLmNoYXJDb2RlQXQoaSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShhcnIpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgbWVkaWFLZXlzOworICAgICAgICAgICAgdmFyIG1lZGlh
S2V5U2Vzc2lvbjsKKyAgICAgICAgICAgIHZhciBpbml0RGF0YSA9IHN0cmluZ1RvVWludDhBcnJh
eSgnbW9jaycpOworICAgICAgICAgICAgdmFyIGludmFsaWRLZXkgPSBzdHJpbmdUb1VpbnQ4QXJy
YXkoJ2ludmFsaWQnKTsKKyAgICAgICAgICAgIHZhciB2YWxpZEtleSA9IHN0cmluZ1RvVWludDhB
cnJheSgna2V5Jyk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSAKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBNb2NrQ0RNLiBJdCBzdXBw
b3J0cyB0aGUga2V5IHN5c3RlbSAnY29tLmFwcGxlLm1vY2snLCB0aGUgCisgICAgICAgICAgICAg
ICAgLy8gbWltZSB0eXBlICd2aWRlby9tb2NrJy4gSXQgcmVxdWlyZXMgaW5pdCBkYXRhIHRvIGJl
Z2luIHdpdGggJ21vY2snLCBhbmQKKyAgICAgICAgICAgICAgICAvLyBrZXlzIHRvIGJlZ2luIHdp
dGggJ2tleScuCisgICAgICAgICAgICAgICAgaWYgKGludGVybmFscykKKyAgICAgICAgICAgICAg
ICAgICAgaW50ZXJuYWxzLmluaXRpYWxpemVNb2NrQ0RNKCk7CisKKyAgICAgICAgICAgICAgICBy
dW4oJ21lZGlhS2V5cyA9IG5ldyBNZWRpYUtleXMoImNvbS53ZWJjb3JlLm1vY2siKScpOworICAg
ICAgICAgICAgICAgIHJ1bignbWVkaWFLZXlTZXNzaW9uID0gbWVkaWFLZXlzLmNyZWF0ZVNlc3Np
b24oInZpZGVvL21vY2siLCBpbml0RGF0YSknKTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZl
bnQoJ3dlYmtpdGtleW1lc3NhZ2UnLCBrZXlNZXNzYWdlLCBmYWxzZSwgZmFsc2UsIG1lZGlhS2V5
U2Vzc2lvbik7CisgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50KCd3ZWJraXRrZXllcnJvcics
IGtleUVycm9yLCBmYWxzZSwgZmFsc2UsIG1lZGlhS2V5U2Vzc2lvbik7CisgICAgICAgICAgICAg
ICAgd2FpdEZvckV2ZW50KCd3ZWJraXRrZXlhZGRlZCcsIG51bGwsIHRydWUsIGZhbHNlLCBtZWRp
YUtleVNlc3Npb24pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBrZXlN
ZXNzYWdlKGV2ZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJ1bignbWVkaWFL
ZXlTZXNzaW9uLmFkZEtleShpbnZhbGlkS2V5KScpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBmdW5jdGlvbiBrZXlFcnJvcihldmVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBydW4oJ21lZGlhS2V5U2Vzc2lvbi5hZGRLZXkodmFsaWRLZXkpJyk7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+CisgICAgICAgIDxwPlRoaXMgdGVzdHMgdGhlIGV2ZW50cyBjcmVhdGVkIGJ5IE1l
ZGlhS2V5cy48L3A+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12
Mi1zeW50YXgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlh
L2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzMDUx
MTE5Njg1NzYxMjZlN2JlMDg5Y2M1Njc0YmEzZGVkYTcyNGYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRh
eC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNiBAQAorVGhpcyB0ZXN0cyB0aGUgYmFzaWMgQVBJ
IG9mIE1lZGlhS2V5cyBhbmQgTWVkaWFLZXlTZXNzaW9uLgorCitUZXN0IE1lZGlhS2V5cy4KK0VY
UEVDVEVEICh0eXBlb2Ygd2luZG93Lk1lZGlhS2V5cyA9PSAnb2JqZWN0JykgT0sKK1RFU1QobmV3
IE1lZGlhS2V5cygiIikpIFRIUk9XUyhET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1NfRVJSKSBP
SworVEVTVChuZXcgTWVkaWFLZXlzKCJ1bnN1cHBvcnRlZCIpKSBUSFJPV1MoRE9NRXhjZXB0aW9u
Lk5PVF9TVVBQT1JURURfRVJSKSBPSworUlVOKG1lZGlhS2V5cyA9IG5ldyBNZWRpYUtleXMoImNv
bS53ZWJjb3JlLm1vY2siKSkKK0VYUEVDVEVEIChtZWRpYUtleXMua2V5U3lzdGVtID09ICdjb20u
d2ViY29yZS5tb2NrJykgT0sKK0VYUEVDVEVEICh0eXBlb2YgbWVkaWFLZXlzLmNyZWF0ZVNlc3Np
b24gPT0gJ2Z1bmN0aW9uJykgT0sKK1RFU1QobWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oIiIsIG5l
dyBVaW50OEFycmF5KDEpKSkgVEhST1dTKERPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIp
IE9LCitURVNUKG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ1bnN1cHBvcnRlZC90eXBlIikpIFRI
Uk9XUyhET01FeGNlcHRpb24uTk9UX1NVUFBPUlRFRF9FUlIpIE9LCisKK1Rlc3QgTWVkaWFLZXlT
ZXNzaW9uLgorUlVOKG1lZGlhS2V5U2Vzc2lvbiA9IG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ2
aWRlby9tb2NrIiwgaW5pdERhdGEpKQorRVhQRUNURUQgKHR5cGVvZiBtZWRpYUtleVNlc3Npb24g
PT0gJ29iamVjdCcpIE9LCitFWFBFQ1RFRCAodHlwZW9mIG1lZGlhS2V5U2Vzc2lvbi5hZGRFdmVu
dExpc3RlbmVyID09ICdmdW5jdGlvbicpIE9LCitFWFBFQ1RFRCAodHlwZW9mIG1lZGlhS2V5U2Vz
c2lvbi5hZGRLZXkgPT0gJ2Z1bmN0aW9uJykgT0sKK0VYUEVDVEVEIChtZWRpYUtleVNlc3Npb24u
ZXJyb3IgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKG1lZGlhS2V5U2Vzc2lvbi5rZXlTeXN0ZW0g
PT0gJ2NvbS53ZWJjb3JlLm1vY2snKSBPSworRVhQRUNURUQgKG1lZGlhS2V5U2Vzc2lvbi5zZXNz
aW9uSWQgIT0gJ251bGwnKSBPSworRVhQRUNURUQgKG1lZGlhS2V5U2Vzc2lvbi5vbndlYmtpdGtl
eWFkZGVkID09ICdudWxsJykgT0sKK0VYUEVDVEVEIChtZWRpYUtleVNlc3Npb24ub253ZWJraXRr
ZXllcnJvciA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAobWVkaWFLZXlTZXNzaW9uLm9ud2Via2l0
a2V5bWVzc2FnZSA9PSAnbnVsbCcpIE9LCitURVNUKG1lZGlhS2V5U2Vzc2lvbi5hZGRLZXkobnVs
bCkpIFRIUk9XUyhET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1NfRVJSKSBPSworRU5EIE9GIFRF
U1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5
cHRlZC1tZWRpYS12Mi1zeW50YXguaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1t
ZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyMGFjOWI3
NmQ2ZGJlMWZkY2JkMTc5NTJjZDMxNDYzOWJkZDdjMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4Lmh0
bWwKQEAgLTAsMCArMSw1OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4K
KyAgICAgICAgPHRpdGxlPk1lZGlhS2V5czwvdGl0bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPS4u
L3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBm
dW5jdGlvbiBzdHJpbmdUb1VpbnQ4QXJyYXkoc3RyKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHZhciBhcnI9W107CisgICAgICAgICAgICAgICAgZm9yKHZhciBpPTAsaj1zdHIubGVu
Z3RoO2k8ajsrK2kpeworICAgICAgICAgICAgICAgICAgYXJyW2ldPXN0ci5jaGFyQ29kZUF0KGkp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJy
YXkoYXJyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIG1lZGlhS2V5czsKKyAg
ICAgICAgICAgIHZhciBtZWRpYUtleVNlc3Npb247CisgICAgICAgICAgICB2YXIgaW5pdERhdGEg
PSBzdHJpbmdUb1VpbnQ4QXJyYXkoJ21vY2snKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gcnVu
VGVzdCgpIAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGhl
IE1vY2tDRE0uIEl0IHN1cHBvcnRzIHRoZSBrZXkgc3lzdGVtICdjb20uYXBwbGUubW9jaycsIHRo
ZSAKKyAgICAgICAgICAgICAgICAvLyBtaW1lIHR5cGUgJ3ZpZGVvL21vY2snLiBJdCByZXF1aXJl
cyBpbml0IGRhdGEgdG8gYmVnaW4gd2l0aCAnbW9jaycsIGFuZAorICAgICAgICAgICAgICAgIC8v
IGtleXMgdG8gYmVnaW4gd2l0aCAna2V5Jy4KKyAgICAgICAgICAgICAgICBpZiAoaW50ZXJuYWxz
KQorICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbHMuaW5pdGlhbGl6ZU1vY2tDRE0oKTsKKwor
ICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCBNZWRpYUtleXMuIik7CisgICAgICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCd0eXBlb2Ygd2luZG93Lk1lZGlhS2V5cycsICdvYmplY3Qn
KTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhjZXB0aW9uKCduZXcgTWVkaWFLZXlzKCIiKScsICJE
T01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1NfRVJSIik7CisgICAgICAgICAgICAgICAgdGVzdEV4
Y2VwdGlvbignbmV3IE1lZGlhS2V5cygidW5zdXBwb3J0ZWQiKScsICJET01FeGNlcHRpb24uTk9U
X1NVUFBPUlRFRF9FUlIiKTsKKyAgICAgICAgICAgICAgICBydW4oJ21lZGlhS2V5cyA9IG5ldyBN
ZWRpYUtleXMoImNvbS53ZWJjb3JlLm1vY2siKScpOworICAgICAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgnbWVkaWFLZXlzLmtleVN5c3RlbScsICdjb20ud2ViY29yZS5tb2NrJyk7CisgICAgICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCd0eXBlb2YgbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24nLCAn
ZnVuY3Rpb24nKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhjZXB0aW9uKCdtZWRpYUtleXMuY3Jl
YXRlU2Vzc2lvbigiIiwgbmV3IFVpbnQ4QXJyYXkoMSkpJywgIkRPTUV4Y2VwdGlvbi5JTlZBTElE
X0FDQ0VTU19FUlIiKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhjZXB0aW9uKCdtZWRpYUtleXMu
Y3JlYXRlU2Vzc2lvbigidW5zdXBwb3J0ZWQvdHlwZSIpJywgIkRPTUV4Y2VwdGlvbi5OT1RfU1VQ
UE9SVEVEX0VSUiIpOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisKKyAgICAg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgTWVkaWFLZXlTZXNzaW9uLiIpOworICAgICAg
ICAgICAgICAgIHJ1bignbWVkaWFLZXlTZXNzaW9uID0gbWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24o
InZpZGVvL21vY2siLCBpbml0RGF0YSknKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
J3R5cGVvZiBtZWRpYUtleVNlc3Npb24nLCAnb2JqZWN0Jyk7CisgICAgICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCd0eXBlb2YgbWVkaWFLZXlTZXNzaW9uLmFkZEV2ZW50TGlzdGVuZXInLCAnZnVu
Y3Rpb24nKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3R5cGVvZiBtZWRpYUtleVNl
c3Npb24uYWRkS2V5JywgJ2Z1bmN0aW9uJyk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCdtZWRpYUtleVNlc3Npb24uZXJyb3InLCBudWxsKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ21lZGlhS2V5U2Vzc2lvbi5rZXlTeXN0ZW0nLCAnY29tLndlYmNvcmUubW9jaycpOwor
ICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnbWVkaWFLZXlTZXNzaW9uLnNlc3Npb25JZCcs
IG51bGwsICchPScpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnbWVkaWFLZXlTZXNz
aW9uLm9ud2Via2l0a2V5YWRkZWQnLCBudWxsKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoJ21lZGlhS2V5U2Vzc2lvbi5vbndlYmtpdGtleWVycm9yJywgbnVsbCk7CisgICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleVNlc3Npb24ub253ZWJraXRrZXltZXNzYWdlJywg
bnVsbCk7CisgICAgICAgICAgICAgICAgdGVzdEV4Y2VwdGlvbignbWVkaWFLZXlTZXNzaW9uLmFk
ZEtleShudWxsKScsICJET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1NfRVJSIik7CisgICAgICAg
ICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgICAgICA8cD5UaGlz
IHRlc3RzIHRoZSBiYXNpYyBBUEkgb2YgTWVkaWFLZXlzIGFuZCBNZWRpYUtleVNlc3Npb24uPC9w
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDNlM2Q0YzQxMjc4ZGMw
MDIwZjFjZWRiNTExMzRkYjg1NDk5OGE3ZDkuLjc4ODEyNTMwOTY4MThkM2JkOGYxM2YxZmUyNzVi
YzMyMzg1N2U1MmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25z
CkBAIC01MjAsOSArNTIwLDExIEBAIHdlYmtpdC5vcmcvYi8xMDM5MjYgbWVkaWEvdHJhY2svb3Bl
cmEvdHJhY2svd2VidnR0L3JlbmRlcmluZy9hZGhvYy92b2ljZV93aXRoX2V2CiAjIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDczMQogaHR0cC90ZXN0cy9tZWRpYS9t
ZWRpYS1zb3VyY2UvCiAKLSMgRW5jcnlwdGVkIE1lZGlhIEV4dGVuc2lvbnMgYXJlIG5vdCBlbmFi
bGVkLgotbWVkaWEvZW5jcnlwdGVkLW1lZGlhLwotZmFzdC9ldmVudHMvY29uc3RydWN0b3JzL21l
ZGlhLWtleS1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCisjIERlcHJlY2F0ZWQgRW5jcnlwdGVkIE1l
ZGlhIEV4dGVuc2lvbnMgYXJlIG5vdCBlbmFibGVkLgorbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2Vu
Y3J5cHRlZC1tZWRpYS1jYW4tcGxheS10eXBlLXdlYm0uaHRtbAorbWVkaWEvZW5jcnlwdGVkLW1l
ZGlhL2VuY3J5cHRlZC1tZWRpYS1ldmVudHMuaHRtbAorbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2Vu
Y3J5cHRlZC1tZWRpYS1ub3QtbG9hZGVkLmh0bWwKK21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNy
eXB0ZWQtbWVkaWEtc3ludGF4Lmh0bWwKIAogIyBGb250IGZlYXR1cmUgc2V0dGluZ3MgaXMgbm90
IGltcGxlbWVudGVkLgogY3NzMy9mb250LWZlYXR1cmUtc2V0dGluZ3MtcmVuZGVyaW5nLmh0bWwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9tZWRpYS9lbmNyeXB0ZWQtbWVk
aWEvZW5jcnlwdGVkLW1lZGlhLWNhbi1wbGF5LXR5cGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtY2Fu
LXBsYXktdHlwZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmFjYzc3YTQ2NTg5MDZiMjE1ZGNl
ZTYzZDA2M2E4Yjc3OGM0YTMzNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLWNhbi1wbGF5LXR5
cGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNzUgQEAKK1Rlc3QgRW5jcnlwdGVkIE1lZGlhIGV4
dGVuc2lvbiBvZiBIVE1MTWVkaWFFbGVtZW50IGNhblBsYXlUeXBlKCkgbWV0aG9kLgorCitUaGUg
dGVzdCBpcyBkZXNpZ25lZCB0byBwYXNzIHdpdGggYW55IGltcGxlbWVudGF0aW9uIHJlZ2FyZGxl
c3Mgb2Ygc3VwcG9ydGVkIG1lZGlhIHR5cGVzIGFuZCByZWxpZXMgb24gdGhlIGV4cGVjdGVkIGxv
ZyB0byBkZXRlY3QgdGhlIGV4cGVjdGVkIHJlc3VsdHMgZm9yIHNvbWUgdHlwZXMuIFRvIGdldCBz
dWZmaWNpZW50IGNvdmVyYWdlLCBpdCBpcyBpbXBvcnRhbnQgdGhhdCBhbiBpbXBsZW1lbnRhdGlv
biBzdXBwb3J0IGNsZWFya2V5IGVuY3J5cHRpb24gb2YgYXQgbGVhc3Qgb25lIG9mIHRoZSB0eXBl
cyBiZWxvdy4KKworQWx3YXlzIHJldHVybiB0aGUgZW1wdHkgc3RyaW5nIGZvciBubyB0eXBlLgor
RVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCkgPT0gJycpIE9LCisKK0Fsd2F5cyByZXR1cm4g
dGhlIGVtcHR5IHN0cmluZyBmb3IgYW4gZW1wdHkgdHlwZS4KK0VYUEVDVEVEICh2aWRlby5jYW5Q
bGF5VHlwZSgnJykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJycsICcn
KSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnJywgbnVsbCkgPT0gJycp
IE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJycsIHVuZGVmaW5lZCkgPT0gJycpIE9L
CitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJycsICd3ZWJraXQtb3JnLnczLmNsZWFya2V5
JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJycsICdXZUJrSXQtT3JH
LlczLkNsRWFSa0V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJycs
ICdjb20uZXhhbXBsZS5pbnZhbGlkJykgPT0gJycpIE9LCisKK0Fsd2F5cyByZXR1cm4gdGhlIGVt
cHR5IHN0cmluZyBmb3Igd2hlbiBubyBjb250YWluZXIgaXMgc3BlY2lmaWVkLgorRVhQRUNURUQg
KHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby8nKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5j
YW5QbGF5VHlwZSgndmlkZW8vJywgJycpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBs
YXlUeXBlKCd2aWRlby8nLCBudWxsKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5
VHlwZSgndmlkZW8vJywgdW5kZWZpbmVkKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5Q
bGF5VHlwZSgndmlkZW8vJywgJ3dlYmtpdC1vcmcudzMuY2xlYXJrZXknKSA9PSAnJykgT0sKK0VY
UEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vJywgJ1dlQmtJdC1PckcuVzMuQ2xFYVJr
RXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vJywgJ2Nv
bS5leGFtcGxlLmludmFsaWQnKSA9PSAnJykgT0sKKworQWx3YXlzIHJldHVybiB0aGUgZW1wdHkg
c3RyaW5nIGZvciBhbiB1bnN1cHBvcnRlZCBjb250YWluZXIuCitFWFBFQ1RFRCAodmlkZW8uY2Fu
UGxheVR5cGUoJ3ZpZGVvL2JsYWhibGFoJykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2Fu
UGxheVR5cGUoJ3ZpZGVvL2JsYWhibGFoJywgJycpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVv
LmNhblBsYXlUeXBlKCd2aWRlby9ibGFoYmxhaCcsIG51bGwpID09ICcnKSBPSworRVhQRUNURUQg
KHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9ibGFoYmxhaCcsIHVuZGVmaW5lZCkgPT0gJycpIE9L
CitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL2JsYWhibGFoJywgJ3dlYmtpdC1v
cmcudzMuY2xlYXJrZXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgn
dmlkZW8vYmxhaGJsYWgnLCAnV2VCa0l0LU9yRy5XMy5DbEVhUmtFeScpID09ICcnKSBPSworRVhQ
RUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9ibGFoYmxhaCcsICdjb20uZXhhbXBsZS5p
bnZhbGlkJykgPT0gJycpIE9LCisKK0VtcHR5IGtleSBzeXN0ZW0gcGFyYW1ldGVycyBzaG91bGQg
bm90IGFmZmVjdCB0aGUgcmVzdWx0IG9mIHZpZGVvL21wNCB0eXBlcy4KK1Jlc3VsdCBvZiB2aWRl
by5jYW5QbGF5VHlwZSgndmlkZW8vbXA0OyBDb2RlY3M9ImF2YzEuNEQ0MDBDIicpOiAncHJvYmFi
bHknCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL21wNDsgQ29kZWNzPSJhdmMx
LjRENDAwQyInLCAnJykgPT0gJ3Byb2JhYmx5JykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5
VHlwZSgndmlkZW8vbXA0OyBDb2RlY3M9ImF2YzEuNEQ0MDBDIicsIG51bGwpID09ICdwcm9iYWJs
eScpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL21wNDsgQ29kZWNzPSJh
dmMxLjRENDAwQyInLCB1bmRlZmluZWQpID09ICdwcm9iYWJseScpIE9LCitUaGVyZSBhcmUgY3Vy
cmVudGx5IG5vIGltcGxlbWVudGF0aW9ucyBzdXBwb3J0aW5nIGVuY3J5cHRpb24gb2YgdmlkZW8v
bXA0LgorRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9tcDQ7IENvZGVjcz0iYXZj
MS40RDQwMEMiJywgJ3dlYmtpdC1vcmcudzMuY2xlYXJrZXknKSA9PSAnJykgT0sKK0VYUEVDVEVE
ICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vbXA0OyBDb2RlY3M9ImF2YzEuNEQ0MDBDIicsICdX
ZUJrSXQtT3JHLlczLkNsRWFSa0V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxh
eVR5cGUoJ3ZpZGVvL21wNDsgQ29kZWNzPSJhdmMxLjRENDAwQyInLCAnY29tLmV4YW1wbGUuaW52
YWxpZCcpID09ICcnKSBPSworCitFbXB0eSBrZXkgc3lzdGVtIHBhcmFtZXRlcnMgc2hvdWxkIG5v
dCBhZmZlY3QgdGhlIHJlc3VsdCBvZiBhdWRpby9tcGVnIHR5cGVzLgorUmVzdWx0IG9mIHZpZGVv
LmNhblBsYXlUeXBlKCdhdWRpby9tcGVnJyk6ICdtYXliZScKK0VYUEVDVEVEICh2aWRlby5jYW5Q
bGF5VHlwZSgnYXVkaW8vbXBlZycsICcnKSA9PSAnbWF5YmUnKSBPSworRVhQRUNURUQgKHZpZGVv
LmNhblBsYXlUeXBlKCdhdWRpby9tcGVnJywgbnVsbCkgPT0gJ21heWJlJykgT0sKK0VYUEVDVEVE
ICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vbXBlZycsIHVuZGVmaW5lZCkgPT0gJ21heWJlJykg
T0sKK1RoZXJlIGFyZSBjdXJyZW50bHkgbm8gaW1wbGVtZW50YXRpb25zIHN1cHBvcnRpbmcgZW5j
cnlwdGlvbiBvZiBhdWRpby9tcGVnLgorRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRp
by9tcGVnJywgJ3dlYmtpdC1vcmcudzMuY2xlYXJrZXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2
aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vbXBlZycsICdXZUJrSXQtT3JHLlczLkNsRWFSa0V5Jykg
PT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL21wZWcnLCAnY29t
LmV4YW1wbGUuaW52YWxpZCcpID09ICcnKSBPSworCitFbXB0eSBrZXkgc3lzdGVtIHBhcmFtZXRl
cnMgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIHJlc3VsdCBvZiBhdWRpby93YXYgdHlwZXMuCitSZXN1
bHQgb2YgdmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL3dhdicpOiAnbWF5YmUnCitFWFBFQ1RFRCAo
dmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL3dhdicsICcnKSA9PSAnbWF5YmUnKSBPSworRVhQRUNU
RUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby93YXYnLCBudWxsKSA9PSAnbWF5YmUnKSBPSwor
RVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby93YXYnLCB1bmRlZmluZWQpID09ICdt
YXliZScpIE9LCitUaGVyZSBhcmUgY3VycmVudGx5IG5vIGltcGxlbWVudGF0aW9ucyBzdXBwb3J0
aW5nIGVuY3J5cHRpb24gb2YgYXVkaW8vd2F2LgorRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBl
KCdhdWRpby93YXYnLCAnd2Via2l0LW9yZy53My5jbGVhcmtleScpID09ICcnKSBPSworRVhQRUNU
RUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby93YXYnLCAnV2VCa0l0LU9yRy5XMy5DbEVhUmtF
eScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby93YXYnLCAn
Y29tLmV4YW1wbGUuaW52YWxpZCcpID09ICcnKSBPSworCitFbXB0eSBrZXkgc3lzdGVtIHBhcmFt
ZXRlcnMgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIHJlc3VsdCBvZiB2aWRlby93ZWJtIHR5cGVzLgor
UmVzdWx0IG9mIHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby93ZWJtJyk6ICcnCitFWFBFQ1RFRCAo
dmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL3dlYm0nLCAnJykgPT0gJycpIE9LCitFWFBFQ1RFRCAo
dmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL3dlYm0nLCBudWxsKSA9PSAnJykgT0sKK0VYUEVDVEVE
ICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vd2VibScsIHVuZGVmaW5lZCkgPT0gJycpIE9LCitB
bGwgaW1wbGVtZW50YXRpb25zIHRoYXQgc3VwcG9ydCBXZWJNIGFuZCBFbmNyeXB0ZWQgTWVkaWEg
c3VwcG9ydCBlbmNyeXB0ZWQgV2ViTS4KK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlk
ZW8vd2VibScsICd3ZWJraXQtb3JnLnczLmNsZWFya2V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAo
dmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL3dlYm0nLCAnV2VCa0l0LU9yRy5XMy5DbEVhUmtFeScp
ID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby93ZWJtJywgJ2Nv
bS5leGFtcGxlLmludmFsaWQnKSA9PSAnJykgT0sKK0VORCBPRiBURVNUCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187340</attachid>
            <date>2013-02-08 11:31:35 -0800</date>
            <delta_ts>2013-02-08 11:47:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97037-20130208112810.patch</filename>
            <type>text/plain</type>
            <size>150537</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YTM4MDQxZTJmNjYyYzIyZDU5OWQ4NTEyNjE5YjkxNzRkZjllMjhlLi4yMGIwZmI0MmYxN2NmMzA1
NDlkZWQ2ZGZlOWUwYzc4MTEyOGEyYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOS0xOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KworICAgICAgICBCcmluZyBXZWJLaXQgdXAgdG8gc3BlZWQgd2l0aCBsYXRlc3QgRW5jcnlwdGVk
IE1lZGlhIHNwZWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NzAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIERlZmluZSB0aGUgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiBzZXR0aW5nLgorCisgICAg
ICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTMtMDIt
MDcgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBP
YmplY3RpdmUtQyBBUEk6IHRlc3RhcGkubW0gc2hvdWxkIHVzZSBBUkMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGIzOGQ1NGY5
NjFlMTAxYzVjZDM2M2QwMmRkMjBmZjAxNWVlNDgyZi4uODViYjNhMmNiYzUzMTllNGNmZGJmNzU0
YTQwNWNiYzVjZTk2M2NiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOS0xOSAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBCcmluZyBXZWJLaXQgdXAgdG8g
c3BlZWQgd2l0aCBsYXRlc3QgRW5jcnlwdGVkIE1lZGlhIHNwZWMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzAzNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlZmluZSB0aGUgRU5BQkxFX0VOQ1JZUFRF
RF9NRURJQV9WMiBzZXR0aW5nLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTMt
MDItMDcgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
Rml4IGFuIGluY29ycmVjdCBjb21tZW50IGZyb20gcjE0MjE2MwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDc4Mjg2
MzBhYzM4Mjc5YjcyMWZmOWU3ZGZlN2UxM2Y5NTYzMTljMjMuLmE0NTg4YzEwOTVmOGEyYTg5ZmFi
OGUzYjE5MzAyMDVjNWY2MmQ5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzggQEAKKzIwMTIt
MDktMTkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQnJpbmcg
V2ViS2l0IHVwIHRvIHNwZWVkIHdpdGggbGF0ZXN0IEVuY3J5cHRlZCBNZWRpYSBzcGVjLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcwMzcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgbW9zdCByZWNl
bnQgdmVyc2lvbiBvZiB0aGUgRW5jcnlwdGVkIE1lZGlhIEV4dGVuc2lvbnMgc3BlYyBicmVha3Mg
ZnVuY3Rpb25hbGl0eSBvdXQgb2YgdGhlCisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQgYW5kIGlu
dG8gbmV3IE1lZGlhS2V5cyBhbmQgTWVkaWFLZXlTZXNzaW9uIGNsYXNzZXMuIFNpbmNlIHRoZSBD
RE0gZnVuY3Rpb25hbGl0eQorICAgICAgICBoYXMgYmVlbiBwdWxsZWQgb3V0IG9mIHRoZSBtZWRp
YSBlbGVtZW50LCB3ZSBjcmVhdGUgYSBwcm94eSBDRE0gY2xhc3MgYW5kIGZhY3Rvcnkgc3lzdGVt
IGZvcgorICAgICAgICBjcmVhdGluZyBzcGVjaWZpYyBDRE0ga2V5IHN5c3RlbSBpbXBsZW1lbnRh
dGlvbnMuIFRoZSBzcGVjIGFsc28gYnJlYWtzIG91dCBNZWRpYUtleUV2ZW50CisgICAgICAgIGlu
dG8gZGlzdGluY3QgZXZlbnQgY2xhc3NlcywgTWVkaWFLZXlOZWVkZWRFdmVudCBhbmQgTWVkaWFL
ZXlNZXNzYWdlRXZlbnQsIGZvciBuZWVka2V5IGFuZAorICAgICAgICBrZXltZXNzYWdlIGV2ZW50
cywgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgIFRlc3RzOiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhLXYyLWV2ZW50cy5odG1sCisgICAgICAgICAgICAgICBtZWRpYS9lbmNy
eXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRheC5odG1sCisKKyAgICAgICAgQ0RN
IGlzIGEgcHJveHkgY2xhc3MgKGEgbGEgTWVkaWFQbGF5ZXIpIGZvciBhIHNwZWNpZmljIENETVBy
aXZhdGVJbnRlcmZhY2UgaW1wbGVtZW50YXRpb24uIEEgQ0RNCisgICAgICAgIGltcGxlbWVudGF0
aW9uIGlzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgQ0RNRmFjdG9yeSBhbmQgd2lsbCBiZSBjcmVhdGVk
IGlmIHRoYXQgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMKKyAgICAgICAgdGhlIGtleSBzeXN0ZW0g
cGFzc2VkIGludG8gdGhlIE1lZGlhS2V5cyBjb25zdHJ1Y3Rvci4gQ0RNU2Vzc2lvbiBpcyBhIHB1
cmUtdmlydHVhbCBpbnRlcmZhY2UgZXhwb3NlZAorICAgICAgICBieSBjb25jcmV0ZSBDRE1Qcml2
YXRlIHN1YmNsYXNzZXMuICBJdHMgbGlmZXRpbWUgaXMgb3duZWQgYnkgTWVkaWFLZXlTZXNzaW9u
LgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjppbnN0YWxsZWRDRE1GYWN0b3JpZXMpOiBJbml0aWFsaXplIGFsbCB0aGUg
a25vd24gQ0RNIHN1YnR5cGVzLiBQb3J0cyB3aWxsIGFkZCBDRE0gaW1wbGVtZW50YXRpb25zIGhl
cmUuCisgICAgICAgIChXZWJDb3JlOjpDRE06OnJlZ2lzdGVyQ0RNRmFjdG9yeSk6IFJlZ2lzdGVy
cyBhIG5ldyBDRE1GYWN0b3J5IHVzaW5nIHRoZSBwYXNzZWQgaW4gZnVuY3Rpb24gcG9pbnRlcnMu
CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5Rm9yS2V5U3lzdGVtKTogUmV0dXJuIHRoZSBm
aXJzdCBDRE0gZmFjdG9yeSB3aGljaCBzdXBwb3J0cyB0aGUgcmVxdWVzdGVkIGtleSBzeXN0ZW0u
CisgICAgICAgIChXZWJDb3JlOjpDRE06OnN1cHBvcnRzS2V5U3lzdGVtKTogV2FsayB0aGUgaW5z
dGFsbGVkIENETXMgYW5kIGFzayBpZiB0aGUgZ2l2ZW4ga2V5IHN5c3RlbSBpcyBzdXBwb3J0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDRE06OnN1cHBvcnRzS2V5U3lzdGVtTUlNRVR5cGVBbmRDb2Rl
Yyk6IERpdHRvLCB3aXRoIGFuIGFkZGl0aW9uYWwgTUlNRSB0eXBlIGFuZCBjb2RlYyBzdHJpbmcu
CisgICAgICAgIChXZWJDb3JlOjpDRE06OmNyZWF0ZSk6IFNpbXBsZSBjb25zdHJ1Y3RvciB3cmFw
cGVyLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpDRE0pOiBTaW1wbGUgY29uc3RydWN0b3I7IGNh
bGxzIGJlc3RDRE1Gb3JLZXlTeXN0ZW0oKSB0byBjcmVhdGUgaXQncyBwcml2YXRlIGltcGxlbWVu
dGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjp+Q0RNKTogU2ltcGxlIGRlc3RydWN0b3Iu
CisgICAgICAgIChXZWJDb3JlOjpDRE06OmNyZWF0ZVNlc3Npb24pOiBDcmVhdGVzIGEgbmV3IENE
TVNlc3Npb24uCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpDRE06OmtleVN5c3RlbSk6IFNpbXBsZSBhY2Nlc3NvciBmb3Ig
bV9rZXlTeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uOjpDRE1TZXNzaW9uKTog
U2ltcGxlIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbjo6fkNETVNl
c3Npb24pOiBTaW1wbGUgZGVzdHJ1Y3Rvci4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETVByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlSW50
ZXJmYWNlOjpDRE1Qcml2YXRlSW50ZXJmYWNlKTogU2ltcGxlIGNvbnN0cnVjdG9yLgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUludGVyZmFjZTo6fkNETVByaXZhdGVJbnRlcmZhY2UpOiBT
aW1wbGUgZGVzdHJ1Y3Rvci4KKworICAgICAgICBUaGUgbmV3IGNsYXNzZXMsIE1lZGlhS2V5TWVz
c2FnZUV2ZW50IGFuZCBNZWRpYUtleU5lZWRlZEV2ZW50LCB0YWtlIGRpc3RpbmN0IHN1YnNldHMg
b2YgdGhlIGluaXRpYWxpemVycyBvZgorICAgICAgICB0aGUgb3JpZ2luYWwgTWVkaWFLZXlNZXNz
YWdlRXZlbnQuCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3Nh
Z2VFdmVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVu
dC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQ6Ok1lZGlh
S2V5TWVzc2FnZUV2ZW50SW5pdCk6IEluaXRpYWxpemVyIG5vdyBvbmx5IHRha2VzIG1lc3NhZ2Ug
YW5kIGRlc3RpbmF0aW9uVVJMCisgICAgICAgICAgICBwYXJhbWV0ZXJzLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlNZXNzYWdlRXZlbnQ6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50KTogU2ltcGxl
IGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlRXZlbnQ6On5N
ZWRpYUtleU1lc3NhZ2VFdmVudCk6IFNpbXBsZSBkZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlNZXNzYWdlRXZlbnQ6OmludGVyZmFjZU5hbWUpOiBTdGFuZGFyZCBpbnRlcmZh
Y2VOYW1lLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdl
RXZlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50Lmgu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVudDo6Y3JlYXRlKTogU2ltcGxl
IGNvbnN0cnVjdGlvbiB3cmFwcGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdl
RXZlbnQ6Om1lc3NhZ2UpOiBTaW1wbGUgYWNjZXNzb3IgZm9yIG1fbWVzc2FnZS4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50OjpkZXN0aW5hdGlvblVSTCk6IFNpbXBsZSBh
Y2Nlc3NvciBmb3IgbV9kZXN0aW5hdGlvblVSTC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUtleUV2ZW50LmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhS2V5RXZlbnQuaC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5TmVlZGVkRXZl
bnRJbml0OjpNZWRpYUtleU5lZWRlZEV2ZW50SW5pdCk6IEluaXRpYWxpemVyIG5vdyBvbmx5IHRh
a2VzIGluaXREYXRhIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5TmVlZGVk
RXZlbnQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnQpOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleU5lZWRlZEV2ZW50Ojp+TWVkaWFLZXlOZWVkZWRFdmVudCk6IFNp
bXBsZSBkZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlOZWVkZWRFdmVudDo6
aW50ZXJmYWNlTmFtZSk6IFN0YW5kYXJkIGludGVyZmFjZU5hbWUuCisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50Lmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVudC5oLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFL
ZXlOZWVkZWRFdmVudDo6Y3JlYXRlKTogU2ltcGxlIGNvbnN0cnVjdGlvbiB3cmFwcGVyLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlOZWVkZWRFdmVudDo6aW5pdERhdGEpOiBTaW1wbGUgYWNj
ZXNzb3IgZm9yIG1faW5pdERhdGEuCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleU5lZWRlZEV2ZW50LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUtleUV2ZW50LmlkbC4KKworICAgICAgICBNZWRpYUtleVNlc3Npb24gaXMgYSBuZXcgY2xh
c3MgdGhhdCBtYXBzIGtleXMgYW5kIGtleSByZXF1ZXN0cyB0byBhIGdpdmVuIHNlc3Npb24gSUQ6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKTogU2ltcGxl
IGNvbnN0cnVjdGlvbiB3cmFwcGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9u
OjpNZWRpYUtleVNlc3Npb24pOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVNlc3Npb246On5NZWRpYUtleVNlc3Npb24pOiBTaW1wbGUgZGVzdHJ1Y3Rvcjsg
Y2FsbHMgY2xvc2UoKS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6c2V0RXJy
b3IpOiBTaW1wbGUgc2V0dGVyIGZvciBtX2Vycm9yOworICAgICAgICAoV2ViQ29yZTo6TWVkaWFL
ZXlTZXNzaW9uOjpjbG9zZSk6IFRlbGwgdGhlIENETSB0byBjbGVhciBhbnkgc2F2ZWQgc2Vzc2lv
biBrZXlzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJl
cXVlc3QpOiBTdGFydCBhIG9uZS1zaG90IHRpbWVyLCBoYW5kbGVkIGluIGtleVJlcXVlc3RUaW1l
ckZpcmVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjprZXlSZXF1ZXN0VGlt
ZXJGaXJlZCk6IEZvbGxvdyB0aGUgc3RlcHMgaW4gdGhlIHNwZWM7IGFzayB0aGUgQ0RNIHRvIGdl
bmVyYXRlIGEga2V5IHJlcXVlc3QuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246
OmFkZEtleSk6IFN0YXJ0IGEgb25lLXNob3QgdGltZXIsIGhhbmRsZWQgaW4gYWRkS2V5VGltZXJG
aXJlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGltZXJGaXJl
ZCk6IEZvbGxvdyB0aGUgc3RlcHMgaW4gdGhlIHNwZWM7IHByb3ZpZGUgdGhlIGtleSBkYXRhIHQg
b3RoZSBDRE0uCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmtleVN5c3Rl
bSk6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9rZXlTeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUtleVNlc3Npb246OnNlc3Npb25JZCk6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9zZXNzaW9u
SWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmVycm9yKTogU2ltcGxlIGFj
Y2Vzc29yIGZvciBtX2Vycm9yOworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmlkbDoKKworICAgICAgICBNZWRpYUtleVNlc3Npb24gaW5oZXJpdHMgZnJv
bSBFdmVudFRhcmdldCwgYW5kIG11c3Qgb3ZlcnJpZGUgdGhlIHB1cmUgdmlydHVhbCBmdW5jdGlv
bnMgaW4gdGhhdCBjbGFzczoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9u
OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6
cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpkZXJl
ZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6ZXZlbnRU
YXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6ZW5zdXJlRXZl
bnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk6CisKKyAgICAgICAgTWVkaWFLZXlzIGlzIGEgbmV3IGNsYXNzIHRo
YXQgZW5jYXBzdWxhdGVzIGEgQ0RNIGFuZCBhIG51bWJlciBvZiBrZXkgc2Vzc2lvbnM6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3JlYXRlKTogVGhyb3cgYW4gZXhjZXB0aW9uIGlmIHRo
ZSBrZXkgc3lzdGVtIHBhcmFtZXRlciBpcyB1bnN1cHBvcnRlZDsgY3JlYXRlIGEgQ0RNIG9iamVj
dAorICAgICAgICAgICAgYW5kIGEgbmV3IE1lZGlhS2V5cyBzZXNzaW9uLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlzOjpNZWRpYUtleXMpOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleXM6On5NZWRpYUtleXMpOiBTaW1wbGUgZGVzdHJ1Y3Rvci4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbik6IEZvbGxvdyB0aGUgc3Bl
YyBhbmQgY3JlYXRlIGEgbmV3IGtleSBzZXNzaW9uLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlzLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUVycm9yLmlkbC4KKworICAgICAgICBQcm92aWRlIGEgbmV3IGludGVyZmFjZSB0byBIVE1MTWVk
aWFFbGVtZW50IGZvciBNZWRpYVBsYXllciB3aGljaCBkb2VzIG5vdCByZXF1aXJlIGEgc2Vzc2lv
bklkIG9yIGEga2V5IHN5c3RlbToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVk
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjprZXlOZWVkZWQpOgorCisgICAgICAgIE1lZGlhS2V5
RXJyb3Igbm93IGhhcyBhIHN5c3RlbUNvZGUgcGFyYW1ldGVyIGFuZCBtZW1iZXIgdmFyaWFibGUu
CisgICAgICAgICogaHRtbC9NZWRpYUtleUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUtleUVycm9yOjpjcmVhdGUpOiBUYWtlIGEgc3lzdGVtQ29kZSBwYXJhbWV0ZXIgd2l0aCBhIGRl
ZmF1bHQgKDApIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlFcnJvcjo6TWVkaWFL
ZXlFcnJvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlFcnJvcjo6c3lzdGVt
Q29kZSk6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9zeXN0ZW1Db2RlLgorICAgICAgICAqIGh0bWwv
TWVkaWFLZXlFcnJvci5pZGw6CisKKyAgICAgICAgQWRkIG5ldyBtZXRob2RzIHRvIEhUTUxNZWRp
YUVsZW1lbnQgdG8gc3VwcG9ydCBNZWRpYUtleXMuIFN1cHBvcnQgZGlmZmVyZW50IGluaXRpYWxp
emVyCisgICAgICAgIGZvciB0aGUgTWVkaWFLZXlOZWVkZWRFdmVudC4KKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6c2V0TWVkaWFLZXlzKTogU2ltcGxlIHNldHRlciBmb3IgbV9tZWRpYUtleXMuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6IFRoaXMg
dmVyc2lvbiB0YWtlcyBmZXdlciBwYXJhbWV0ZXJzCisgICAgICAgICAgICB0aGFuIHRoZSBkZXBy
ZWNhdGVkIHZlcnNpb24uCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYUtleXMpOiBTaW1wbGUgYWNjZXNz
b3IgZm9yIG1fbWVkaWFLZXlzLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6
IEFkZCB0aGUgbWVkaWFLZXlzIGF0dHJpYnV0ZS4KKworICAgICAgICBBZGQgYW4gRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQV9WMikgY2hlY2sgdG8gdGhlIGV4aXN0aW5nIEVOQUJMRShFTkNSWVBURURf
TUVESUEpIG9uZToKKyAgICAgICAgKiBodG1sL01lZGlhRXJyb3IuaDoKKyAgICAgICAgKiBodG1s
L01lZGlhRXJyb3IuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RNZWRpYUVuZ2luZUZvclR5cGVBbmRDb2RlY3Mp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjprZXlOZWVkZWQpOiBUaGlzIHZlcnNpb24gdGFrZXMgZmV3ZXIgcGFyYW1ldGVy
cyB0aGFuIHRoZQorICAgICAgICAgICAgZGVwcmVjYXRlZCB2ZXJzaW9uLgorCisgICAgICAgIFN1
cHBvcnQgdGhlIG5ldyB2ZXJzaW9uIG9mIGNhblBsYXlUeXBlIHdoaWNoIHRha2VzIGFuIGV4dHJh
IHBhcmFtZXRlcjoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZXh0ZW5kZWRTdXBwb3J0c1R5cGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpyZWdpc3Rlck1l
ZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojpl
eHRlbmRlZFN1cHBvcnRzVHlwZSk6CisKKyAgICAgICAgQWRkIGEgbW9jayBDRE0gZm9yIHVzZSB3
aXRoaW4gRFJUIGFuZCBXS1RSIHRvIHRlc3QgdGhlIE1lZGlhS2V5cyBhbmQgTWVkaWFLZXlTZXNz
aW9uCisgICAgICAgIEFQSXMgYW5kIGV2ZW50czoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RNKTog
QWRkIHRoZSBNb2NrQ0RNIGNsYXNzIHRvIHRoZSBDRE0gZmFjdG9yaWVzLgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOiBBZGQg
dGhlIGluaXRpYWxpemVNb2NrQ0RNKCkgbWV0aG9kLgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NE
TS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c3VwcG9ydHNLZXlTeXN0
ZW0pOiBPbmx5IHN1cHBvcnRzIHRoZSAnY29tLndlYmNvcmUubW9jaycga2V5IHN5c3RlbS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnN1cHBvcnRzTUlNRVR5cGUpOiBPbmx5IHN1cHBvcnRz
IHRoZSAndmlkZW8vbW9jaycgbWltZSB0eXBlLgorICAgICAgICAoV2ViQ29yZTo6aW5pdERhdGFQ
cmVmaXgpOiBTdGF0aWMgbWV0aG9kIHdoaWNoIHJldHVybnMgYSBVaW50OEFycmF5IGNvbnRhaW5p
bmcgJ21vY2snLgorICAgICAgICAoV2ViQ29yZTo6a2V5UHJlZml4KTogU3RhdGljIG1ldGhvZCB3
aGljaCByZXR1cm5zIGEgVWludDhBcnJheSBjb250YWluaW5nICdrZXknLgorICAgICAgICAoV2Vi
Q29yZTo6a2V5UmVxdWVzdCk6IFN0YXRpYyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIFVpbnQ4QXJy
YXkgY29udGFpbmluZyAncmVxdWVzdCcuCisgICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZVNlc3Np
b25JZCk6IFJldHVybiBhIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBudW1iZXIuCisgICAgICAg
IChXZWJDb3JlOjpNb2NrQ0RNU2Vzc2lvbjo6TW9ja0NETVNlc3Npb24pOiBTaW1wbGUgY29uc3Ry
dWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1
ZXN0KTogSWdub3JlcyB0aGUgcGFyYW1ldGVycyBhbmQgcmV0dXJucyBhIGtleVJlcXVlc3QoKSBh
cnJheS4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1TZXNzaW9uOjpyZWxlYXNlS2V5cyk6IE5v
LW9wLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETVNlc3Npb246OmFkZEtleSk6IENoZWNrcyB0
aGF0IHRoZSBrZXkgc3RhcnRzIHdpdGggdGhlIGtleVByZWZpeCgpIGFycmF5LgorICAgICAgICAq
IHRlc3RpbmcvTW9ja0NETS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjp+TW9ja0NETSk6IFNpbXBsZSBkZXN0
cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6TW9ja0NETSk6IFNpbXBsZSBjb25z
dHJ1Y3Rvci4KKworICAgICAgICBBZGQgdGhlIG5ldyBjbGFzc2VzIHRvIHRoZSBidWlsdCBzeXN0
ZW06CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAg
TWlzY2VsYW5lb3VzIGNoYW5nZXM6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaW46IEFkZCB0
aGUgdHdvIG5ldyBldmVudCB0eXBlcywgTWVkaWFLZXlNZXNzYWdlRXZlbnQgYW5kIE1lZGlhS2V5
TmVlZGVkRXZlbnQuCisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjogQWRkIHRo
ZSBuZXcgRXZlbnRUYXJnZXQsIE1lZGlhS2V5U2Vzc2lvbi4KKyAgICAgICAgKiBwYWdlL0RPTVdp
bmRvdy5pZGw6IEFkZCBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBuZXcgY2xhc3NlcyB0byB0aGUgd2lu
ZG93IG9iamVjdC4KKwogMjAxMy0wMi0wNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbXByb3ZlIGxvZ2dpbmcgb2YgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uIE5vdGlmaWNhdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggOTQ3MDIz
Nzc1NTAyNWYzOTU4MDM5MDQyMDQ3M2JlYmUwNzEzMTM1Yy4uMjlkMWRmNjAyNTlkZWNkNzBiMzgy
ZTNhMmRmN2I1MjE4ZmJiMjM4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNjUsMTEg
KzY1LDExIEBAIEVOQUJMRV9ESUFMT0dfRUxFTUVOVCA9IDsKIEVOQUJMRV9ESVJFQ1RPUllfVVBM
T0FEID0gOwogRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SID0gRU5BQkxFX0RPTTRfRVZF
TlRTX0NPTlNUUlVDVE9SOwogRU5BQkxFX0RSQUdHQUJMRV9SRUdJT04gPSA7Ci1FTkFCTEVfRU5D
UllQVEVEX01FRElBID0gJChFTkFCTEVfRU5DUllQVEVEX01FRElBXyQoUExBVEZPUk1fTkFNRSkp
OwotRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9tYWNvc3ggPSAkKEVOQUJMRV9FTkNSWVBURURfTUVE
SUFfbWFjb3N4XyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKLUVOQUJMRV9FTkNS
WVBURURfTUVESUFfbWFjb3N4XzEwNzAgPSA7Ci1FTkFCTEVfRU5DUllQVEVEX01FRElBX21hY29z
eF8xMDgwID0gOwotRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9tYWNvc3hfMTA5MCA9IEVOQUJMRV9F
TkNSWVBURURfTUVESUE7CitFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyID0gJChFTkFCTEVfRU5D
UllQVEVEX01FRElBX1YyXyQoUkVBTF9QTEFURk9STV9OQU1FKSk7CitFTkFCTEVfRU5DUllQVEVE
X01FRElBX1YyX21hY29zeCA9ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9tYWNvc3hfJChUQVJH
RVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9t
YWNvc3hfMTA3MCA9IDsKK0VOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEwODAgPSA7
CitFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeF8xMDkwID0gRU5BQkxFX0VOQ1JZUFRF
RF9NRURJQV9WMjsKIEVOQUJMRV9GSUxFX1NZU1RFTSA9IDsKIEVOQUJMRV9GSUxURVJTID0gRU5B
QkxFX0ZJTFRFUlM7CiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkgPSAkKEVOQUJMRV9GVUxMU0NSRUVO
X0FQSV8kKFBMQVRGT1JNX05BTUUpKTsKQEAgLTE2Nyw0ICsxNjcsNCBAQCBFTkFCTEVfV09SS0VS
UyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hIUl9USU1FT1VUID0gRU5BQkxFX1hIUl9USU1F
T1VUOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChF
TkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5B
QkxFX0JMT0IpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQo
RU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NT
X0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQo
RU5BQkxFX0NTU19FWENMVVNJT05TKSAkKEVOQUJMRV9DU1NfRklMVEVSUykgJChFTkFCTEVfQ1NT
X0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFC
TEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFERVJTKSAkKEVOQUJMRV9DU1NfQ09NUE9T
SVRJTkcpICQoRU5BQkxFX0NTU19TVElDS1lfUE9TSVRJT04pICQoRU5BQkxFX0NTU19UUkFOU0ZP
Uk1TX0FOSU1BVElPTlNfVU5QUkVGSVhFRCkgJChFTkFCTEVfQ1NTX1ZBUklBQkxFUykgJChFTkFC
TEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9D
VVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJM
RV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJM
RV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVf
RElBTE9HX0VMRU1FTlQpICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTTRf
RVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJMRV9EUkFHR0FCTEVfUkVHSU9OKSAkKEVOQUJMRV9F
TkNSWVBURURfTUVESUEpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GSUxURVJTKSAk
KEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9D
QVRJT04pICQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJM
RV9ISUdIX0RQSV9DQU5WQVMpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1F
X1NFQU1MRVNTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVF
Q0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkg
JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElN
RUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJ
TUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dF
UikgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9O
T1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9M
RUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9MSU5LX1BS
RVJFTkRFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxF
X01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1M
KSAkKEVOQUJMRV9NSUNST0RBVEEpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFC
TEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxF
X1BMVUdJTl9QUk9YWV9GT1JfVklERU8pICQoRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5B
QkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FO
SU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVf
U0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFET1dfRE9NKSAkKEVOQUJMRV9TSEFSRURfV09S
S0VSUykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAk
KEVOQUJMRV9TVFlMRV9TQ09QRUQpICQoRU5BQkxFX1NVQlBJWEVMX0xBWU9VVCkgJChFTkFCTEVf
U1ZHKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykg
JChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVO
QUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWSkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5H
KSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVP
X1RSQUNLKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJf
U09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVf
WEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRkVBVFVSRV9ERUZJTkVTXyQoUExBVEZPUk1f
TkFNRSkpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJM
RV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NBTlZBU19Q
QVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAk
KEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVO
QUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19FWENMVVNJT05TKSAkKEVO
QUJMRV9DU1NfRklMVEVSUykgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NT
U19TSEFERVJTKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19TVElDS1lf
UE9TSVRJT04pICQoRU5BQkxFX0NTU19UUkFOU0ZPUk1TX0FOSU1BVElPTlNfVU5QUkVGSVhFRCkg
JChFTkFCTEVfQ1NTX1ZBUklBQkxFUykgJChFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUykg
JChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5B
QkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJM
RV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxF
X0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElBTE9HX0VMRU1FTlQpICQoRU5BQkxFX0RJ
UkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJM
RV9EUkFHR0FCTEVfUkVHSU9OKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxF
X0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkg
JChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJRERFTl9Q
QUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpICQoRU5B
QkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1FX1NFQU1MRVNTKSAkKEVOQUJMRV9JTkRF
WEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZUEVf
Q09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRF
VElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVf
V0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTEVHQUNZX0NTU19W
RU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9M
RUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJM
RV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9MSU5LX1BSRVJFTkRFUikgJChFTkFCTEVfTUFUSE1M
KSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5B
QkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NSUNST0RBVEEpICQo
RU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJ
TFMpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkp
ICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BMVUdJTl9QUk9YWV9GT1JfVklERU8p
ICQoRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQo
RU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVf
UkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJM
RV9TSEFET1dfRE9NKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1BFRUNIX1NZ
TlRIRVNJUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9TVFlMRV9TQ09QRUQpICQo
RU5BQkxFX1NVQlBJWEVMX0xBWU9VVCkgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfRE9NX09C
SkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVO
VCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNf
T05MWSkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FM
TCkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9XRUJHTCkg
JChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJ
TUlORykgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hT
TFQpICQoRkVBVFVSRV9ERUZJTkVTXyQoUExBVEZPUk1fTkFNRSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXgg
MWIxNGZjOTM4MjU4OTA4ODk0ZWE1OWU5NTQ0ZjhiYzQ2NzgyMjAwYy4uNWEwOWFiMWQ3NWJiMTRh
NDc4Y2NkYTVhMGVmNTgyYWQ5ZWEwYTAyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMTY4LDYgKzExNjgs
NyBAQAogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKICNkZWZpbmUgSEFWRV9BVkZPVU5EQVRJT05f
VEVYVF9UUkFDS19TVVBQT1JUIDEKKyNkZWZpbmUgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiAx
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShFRkwpIHx8IChQTEFURk9STShXSU4pICYmICFPUyhXSU5DRSkgJiYgIVBMQVRGT1JNKFdJTl9D
QUlSTykpIHx8IFBMQVRGT1JNKEJMQUNLQkVSUlkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3Jl
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IDk0NzAyMzc3NTUw
MjVmMzk1ODAzOTA0MjA0NzNiZWJlMDcxMzEzNWMuLjc5NzcyZmJhMjZlYTc5NTVhOWVlYzg5ZTBi
ZjliNWVlNmI0ZDJhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25z
L0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC02NSwxMSArNjUsMTEgQEAgRU5BQkxFX0RJ
QUxPR19FTEVNRU5UID0gOwogRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQgPSA7CiBFTkFCTEVfRE9N
NF9FVkVOVFNfQ09OU1RSVUNUT1IgPSBFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I7CiBF
TkFCTEVfRFJBR0dBQkxFX1JFR0lPTiA9IDsKLUVOQUJMRV9FTkNSWVBURURfTUVESUEgPSAkKEVO
QUJMRV9FTkNSWVBURURfTUVESUFfJChQTEFURk9STV9OQU1FKSk7Ci1FTkFCTEVfRU5DUllQVEVE
X01FRElBX21hY29zeCA9ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9tYWNvc3hfJChUQVJHRVRf
TUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwotRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9tYWNvc3hf
MTA3MCA9IDsKLUVOQUJMRV9FTkNSWVBURURfTUVESUFfbWFjb3N4XzEwODAgPSA7Ci1FTkFCTEVf
RU5DUllQVEVEX01FRElBX21hY29zeF8xMDkwID0gRU5BQkxFX0VOQ1JZUFRFRF9NRURJQTsKK0VO
QUJMRV9FTkNSWVBURURfTUVESUFfVjIgPSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfJChS
RUFMX1BMQVRGT1JNX05BTUUpKTsKK0VOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4ID0g
JChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeF8kKFRBUkdFVF9NQUNfT1NfWF9WRVJT
SU9OX01BSk9SKSk7CitFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeF8xMDcwID0gOwor
RU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3hfMTA4MCA9IDsKK0VOQUJMRV9FTkNSWVBU
RURfTUVESUFfVjJfbWFjb3N4XzEwOTAgPSBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyOwogRU5B
QkxFX0ZJTEVfU1lTVEVNID0gOwogRU5BQkxFX0ZJTFRFUlMgPSBFTkFCTEVfRklMVEVSUzsKIEVO
QUJMRV9GVUxMU0NSRUVOX0FQSSA9ICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJXyQoUExBVEZPUk1f
TkFNRSkpOwpAQCAtMTY3LDQgKzE2Nyw0IEBAIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dPUktF
UlM7CiBFTkFCTEVfWEhSX1RJTUVPVVQgPSBFTkFCTEVfWEhSX1RJTUVPVVQ7CiBFTkFCTEVfWFNM
VCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJ
TkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQkxPQikgJChFTkFC
TEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9N
RVNTQUdJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05f
QlJFQUspICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0VYQ0xV
U0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJ
T04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykg
JChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVf
Q1NTX1NUSUNLWV9QT1NJVElPTikgJChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19V
TlBSRUZJWEVEKSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX0NPTkRJVElP
TkFMX1JVTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFO
RExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1F
TlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVO
VCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESUFMT0dfRUxFTUVOVCkg
JChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNU
T1IpICQoRU5BQkxFX0RSQUdHQUJMRV9SRUdJT04pICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkg
JChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZVTExTQ1JF
RU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVf
SElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZB
UykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5B
QkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5Q
VVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0RBVEVUSU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxF
X0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5Q
VVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdB
Q1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQo
RU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8p
ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJTktfUFJFUkVOREVSKSAkKEVOQUJM
RV9NQVRITUwpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElD
UykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01JQ1JP
REFUQSkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09O
VEVOVF9VVElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklM
SVRZX0FQSSkgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUExVR0lOX1BST1hZX0ZP
Ul9WSURFTykgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUFJPWElNSVRZX0VW
RU5UUykgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAk
KEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gp
ICQoRU5BQkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9T
UEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TUUxfREFUQUJBU0UpICQoRU5BQkxFX1NUWUxFX1ND
T1BFRCkgJChFTkFCTEVfU1VCUElYRUxfTEFZT1VUKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NW
R19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URU1QTEFU
RV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RFWFRfTk9USUZJ
Q0FUSU9OU19PTkxZKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJT
RUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxF
X1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJM
RV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChF
TkFCTEVfWFNMVCkgJChGRUFUVVJFX0RFRklORVNfJChQTEFURk9STV9OQU1FKSk7CitGRUFUVVJF
X0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJE
X0NBTlZBUykgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NB
TlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9ORVhU
KSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19ERVZJQ0Vf
QURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJT
KSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNP
TFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5B
QkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX1NUSUNLWV9QT1NJVElPTikgJChFTkFC
TEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19VTlBSRUZJWEVEKSAkKEVOQUJMRV9DU1NfVkFS
SUFCTEVTKSAkKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKSAkKEVOQUJMRV9DU1MzX1RF
WFQpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NV
UFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJf
SVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFU
SU9OKSAkKEVOQUJMRV9ESUFMT0dfRUxFTUVOVCkgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkg
JChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0RSQUdHQUJMRV9SRUdJ
T04pICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFCTEVfRklMRV9TWVNURU0pICQo
RU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFE
KSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RI
Uk9UVExJTkcpICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNF
KSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQo
RU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVf
SU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5B
QkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9K
QVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykg
JChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJF
RklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gp
ICQoRU5BQkxFX0xJTktfUFJFUkVOREVSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElB
X1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVO
VCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01JQ1JPREFUQSkgJChFTkFCTEVfTU9VU0VfQ1VS
U09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTk9U
SUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUERGS0lU
X1BMVUdJTikgJChFTkFCTEVfUExVR0lOX1BST1hZX0ZPUl9WSURFTykgJChFTkFCTEVfUFJPR1JF
U1NfRUxFTUVOVCkgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUVVPVEEpICQo
RU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElB
X1FVRVJZKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURPV19ET00pICQo
RU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJM
RV9TUUxfREFUQUJBU0UpICQoRU5BQkxFX1NUWUxFX1NDT1BFRCkgJChFTkFCTEVfU1VCUElYRUxf
TEFZT1VUKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChF
TkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhU
X0FVVE9TSVpJTkcpICQoRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZKSAkKEVOQUJMRV9U
T1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURF
TykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVE
SU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9X
T1JLRVJTKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChGRUFUVVJFX0RF
RklORVNfJChQTEFURk9STV9OQU1FKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRl
eCAzOWJkZThlY2M1ODkxYmExODJjYWNhNGYzYTg3YTRiMjU4NmIwZWZjLi45OWNiNGY4ZjJlMTk5
MmU1NzVkYmRmNzQ3MGY0NjA1NmQ0OGViMTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTI4LDYgKzI4LDcgQEAKIAogVlBBVEggPSBcCiAgICAgJChXZWJDb3JlKSBcCisJJChX
ZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
ZmlsZXN5c3RlbSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvaW5kZXhlZGRiIFwKQEAgLTYyLDYgKzYzLDEwIEBAIFZQQVRIID0g
XAogIwogCiBCSU5ESU5HX0lETFMgPSBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmlkbCBcCisgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaWRsIFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uaWRsIFwKQEAgLTM2Niw4
ICszNzEsOCBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9odG1sL0ltYWdlRGF0
YS5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsIFwKICAgICAk
KFdlYkNvcmUpL2h0bWwvTWVkaWFFcnJvci5pZGwgXAotCSQoV2ViQ29yZSkvaHRtbC9NZWRpYUtl
eUVycm9yLmlkbCBcCi0JJChXZWJDb3JlKS9odG1sL01lZGlhS2V5RXZlbnQuaWRsIFwKKyAgICAk
KFdlYkNvcmUpL2h0bWwvTWVkaWFLZXlFcnJvci5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9N
ZWRpYUtleUV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL01pY3JvRGF0YUl0ZW1WYWx1
ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9SYWRpb05vZGVMaXN0LmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9odG1sL1RleHRNZXRyaWNzLmlkbCBcCkBAIC04MzksNiArODQ0LDEwIEBAIGlmZXEg
KCQoZmluZHN0cmluZyBFTkFCTEVfREVUQUlMU19FTEVNRU5ULCQoRkVBVFVSRV9ERUZJTkVTKSks
IEVOQUJMRV9ERVRBSUxTX0VMCiAgICAgSFRNTF9GTEFHUyA6PSAkKEhUTUxfRkxBR1MpIEVOQUJM
RV9ERVRBSUxTX0VMRU1FTlQ9MQogZW5kaWYKIAoraWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9F
TkNSWVBURURfTUVESUFfVjIsJChGRUFUVVJFX0RFRklORVMpKSwgRU5BQkxFX0VOQ1JZUFRFRF9N
RURJQV9WMikKKwlIVE1MX0ZMQUdTIDo9ICQoSFRNTF9GTEFHUykgRU5BQkxFX0VOQ1JZUFRFRF9N
RURJQV9WMj0xCitlbmRpZgorCiBpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX01FVEVSX0VMRU1F
TlQsJChGRUFUVVJFX0RFRklORVMpKSwgRU5BQkxFX01FVEVSX0VMRU1FTlQpCiAgICAgSFRNTF9G
TEFHUyA6PSAkKEhUTUxfRkxBR1MpIEVOQUJMRV9NRVRFUl9FTEVNRU5UPTEKIGVuZGlmCkBAIC05
NjMsNiArOTcyLDcgQEAgcHJlcHJvY2Vzc19pZGxzX3NjcmlwdCA9IHBlcmwgJChhZGRwcmVmaXgg
LUkgJChXZWJDb3JlKS8sICQoc29ydCAkKGRpciAkKDEpKSkpICQKIAogSURMX0lOQ0xVREVTID0g
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9iYXR0ZXJ5IFwKKwkkKFdlYkNvcmUpL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvZ2FtZXBhZCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2dl
b2xvY2F0aW9uIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNmE4NDhmYzk0MzA4NzgxMjk5MDUyOWFmYTY3ZTk2MGYzMTg0YzY4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE0uY3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkNETS5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikK
KworI2luY2x1ZGUgIkNETVByaXZhdGUuaCIKKyNpbmNsdWRlICJNZWRpYUtleUVycm9yLmgiCisj
aW5jbHVkZSAiTWVkaWFLZXlzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IENETUZhY3RvcnkgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENETUZhY3RvcnkpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBDRE1GYWN0b3J5KENyZWF0ZUNETSBjb25zdHJ1Y3RvciwgQ0RNU3VwcG9ydHNLZXlT
eXN0ZW0gc3VwcG9ydHNLZXlTeXN0ZW0pCisgICAgICAgIDogY29uc3RydWN0b3IoY29uc3RydWN0
b3IpCisgICAgICAgICwgc3VwcG9ydHNLZXlTeXN0ZW0oc3VwcG9ydHNLZXlTeXN0ZW0pCisgICAg
eworICAgIH0KKworICAgIENyZWF0ZUNETSBjb25zdHJ1Y3RvcjsKKyAgICBDRE1TdXBwb3J0c0tl
eVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbTsKK307CisKK3N0YXRpYyBWZWN0b3I8Q0RNRmFjdG9y
eSo+JiBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
VmVjdG9yPENETUZhY3RvcnkqPiwgY2RtcywgKCkpOworICAgIHN0YXRpYyBib29sIHF1ZXJpZWRD
RE1zID0gZmFsc2U7CisgICAgaWYgKCFxdWVyaWVkQ0RNcykgeworICAgICAgICBxdWVyaWVkQ0RN
cyA9IHRydWU7CisKKyAgICAgICAgLy8gVE9ETzogaW5pdGlhbGl6ZSBzcGVjaWZpYyBVQSBDRE1z
LgorICAgIH0KKworICAgIHJldHVybiBjZG1zOworfQorCit2b2lkIENETTo6cmVnaXN0ZXJDRE1G
YWN0b3J5KENyZWF0ZUNETSBjb25zdHJ1Y3RvciwgQ0RNU3VwcG9ydHNLZXlTeXN0ZW0gc3VwcG9y
dHNLZXlTeXN0ZW0pCit7CisgICAgaW5zdGFsbGVkQ0RNRmFjdG9yaWVzKCkuYXBwZW5kKG5ldyBD
RE1GYWN0b3J5KGNvbnN0cnVjdG9yLCBzdXBwb3J0c0tleVN5c3RlbSkpOworfQorCitib29sIENE
TTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7CisgICAgVmVj
dG9yPENETUZhY3RvcnkqPiYgY2RtRmFjdG9yaWVzID0gaW5zdGFsbGVkQ0RNRmFjdG9yaWVzKCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjZG1GYWN0b3JpZXMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgaWYgKGNkbUZhY3Rvcmllc1tpXS0+c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVt
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3N0YXRpYyBDRE1GYWN0b3J5KiBDRE1GYWN0b3J5Rm9yS2V5U3lzdGVtKGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtKQoreworICAgIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIGNkbUZhY3RvcmllcyA9
IGluc3RhbGxlZENETUZhY3RvcmllcygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2Rt
RmFjdG9yaWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChjZG1GYWN0b3JpZXNbaV0tPnN1
cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCisgICAgICAgICAgICByZXR1cm4gY2RtRmFjdG9y
aWVzW2ldOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworUGFzc093blB0cjxDRE0+IENETTo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAgIGlmICghc3VwcG9ydHNLZXlT
eXN0ZW0oa2V5U3lzdGVtKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4g
YWRvcHRQdHIobmV3IENETShrZXlTeXN0ZW0pKTsKK30KKworQ0RNOjpDRE0oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0pCisgICAgOiBtX2tleVN5c3RlbShrZXlTeXN0ZW0pCit7CisgICAgbV9wcml2
YXRlID0gQ0RNRmFjdG9yeUZvcktleVN5c3RlbShrZXlTeXN0ZW0pLT5jb25zdHJ1Y3Rvcih0aGlz
KTsKK30KKworQ0RNOjp+Q0RNKCkKK3sKK30KKworYm9vbCBDRE06OnN1cHBvcnRzTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5zdXBwb3J0
c01JTUVUeXBlKG1pbWVUeXBlKTsKK30KKworUGFzc093blB0cjxDRE1TZXNzaW9uPiBDRE06OmNy
ZWF0ZVNlc3Npb24oKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmNyZWF0ZVNlc3Npb24oKTsK
K30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwODkwNzZk
ZTQzZDI2NWFlNmYzNTU0MmRlOTk2ODU0MTcyMjUzYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCkBAIC0wLDAgKzEsODMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIENETV9oCisjZGVmaW5lIENETV9oCisKKyNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBX1YyKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
TWVkaWFLZXlFcnJvcjsKK2NsYXNzIE1lZGlhS2V5U2Vzc2lvbjsKK2NsYXNzIE1lZGlhS2V5czsK
KworY2xhc3MgQ0RNOworY2xhc3MgQ0RNUHJpdmF0ZUludGVyZmFjZTsKK2NsYXNzIENETVNlc3Np
b247CisKK3R5cGVkZWYgUGFzc093blB0cjxDRE1Qcml2YXRlSW50ZXJmYWNlPiAoKkNyZWF0ZUNE
TSkoQ0RNKik7Cit0eXBlZGVmIGJvb2wgKCpDRE1TdXBwb3J0c0tleVN5c3RlbSkoY29uc3QgU3Ry
aW5nJik7CisKK2NsYXNzIENETVNlc3Npb24geworcHVibGljOgorICAgIENETVNlc3Npb24oKSB7
IH0KKyAgICB2aXJ0dWFsIH5DRE1TZXNzaW9uKCkgeyB9CisKKyAgICB2aXJ0dWFsIGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKCkgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxVaW50OEFycmF5
PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSog
aW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNv
ZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVs
ZWFzZUtleXMoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGFkZEtleShVaW50OEFycmF5KiwgUmVm
UHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwg
dW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkgPSAwOworfTsKKworY2xhc3MgQ0RNIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmKTsKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxDRE0+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7
CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJDRE1GYWN0b3J5KENyZWF0ZUNETSwgQ0RNU3VwcG9y
dHNLZXlTeXN0ZW0pOworICAgIH5DRE0oKTsKKworICAgIGJvb2wgc3VwcG9ydHNNSU1FVHlwZShj
b25zdCBTdHJpbmcmKTsKKyAgICBQYXNzT3duUHRyPENETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24o
KTsKKworICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgeyByZXR1cm4gbV9rZXlT
eXN0ZW07IH0KKworcHJpdmF0ZToKKyAgICBDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOwor
CisgICAgU3RyaW5nIG1fa2V5U3lzdGVtOworICAgIE93blB0cjxDRE1Qcml2YXRlSW50ZXJmYWNl
PiBtX3ByaXZhdGU7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElB
X1YyKQorCisjZW5kaWYgLy8gQ0RNX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWMzNzU4ODRmYTRmODJhMGVm
OTFjZTJiMmE5MWRiN2UzOTE2MDlmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIENETVByaXZhdGVfaAorI2RlZmluZSBDRE1Qcml2YXRlX2gKKwor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgQ0RNU2Vzc2lvbjsKKworY2xhc3MgQ0RNUHJpdmF0ZUludGVyZmFjZSB7CitwdWJs
aWM6CisgICAgQ0RNUHJpdmF0ZUludGVyZmFjZSgpIHsgfQorICAgIHZpcnR1YWwgfkNETVByaXZh
dGVJbnRlcmZhY2UoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c01JTUVUeXBlKGNv
bnN0IFN0cmluZyYpID0gMDsKKworICAgIHZpcnR1YWwgUGFzc093blB0cjxDRE1TZXNzaW9uPiBj
cmVhdGVTZXNzaW9uKCkgPSAwOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQV9WMikKKworI2VuZGlmIC8vIENETVByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2
ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40YTljODQzYTY1MjFmOWIxYzdmMmQ5YmJiZjIwMzZjNDNlN2Fj
YTc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikK
KworI2luY2x1ZGUgIk1lZGlhS2V5TWVzc2FnZUV2ZW50LmgiCisKKyNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCisjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQ6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCgp
Cit7Cit9CisKK01lZGlhS2V5TWVzc2FnZUV2ZW50OjpNZWRpYUtleU1lc3NhZ2VFdmVudCgpCit7
Cit9CisKK01lZGlhS2V5TWVzc2FnZUV2ZW50OjpNZWRpYUtleU1lc3NhZ2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCYgaW5pdGlh
bGl6ZXIpCisgICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKKyAgICAsIG1fbWVzc2FnZShp
bml0aWFsaXplci5tZXNzYWdlKQorICAgICwgbV9kZXN0aW5hdGlvblVSTChpbml0aWFsaXplci5k
ZXN0aW5hdGlvblVSTCkKK3sKK30KKworTWVkaWFLZXlNZXNzYWdlRXZlbnQ6On5NZWRpYUtleU1l
c3NhZ2VFdmVudCgpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFLZXlNZXNzYWdl
RXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCku
aW50ZXJmYWNlRm9yTWVkaWFLZXlNZXNzYWdlRXZlbnQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNmZjAy
MTkxMmU0MDAzMGZjNDQ2YjRkMTVmNWY2MmNiOGJlNTMzYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQu
aApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhS2V5TWVzc2FnZUV2
ZW50X2gKKyNkZWZpbmUgTWVkaWFLZXlNZXNzYWdlRXZlbnRfaAorCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlF
cnJvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBNZWRpYUtleU1lc3NhZ2VF
dmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKKyAgICBNZWRpYUtleU1lc3NhZ2VFdmVudElu
aXQoKTsKKworICAgIFJlZlB0cjxVaW50OEFycmF5PiBtZXNzYWdlOworICAgIFN0cmluZyBkZXN0
aW5hdGlvblVSTDsKK307CisKK2NsYXNzIE1lZGlhS2V5TWVzc2FnZUV2ZW50IDogcHVibGljIEV2
ZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NZWRpYUtleU1lc3NhZ2VFdmVudCgpOworCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFLZXlNZXNzYWdlRXZlbnQ+IGNyZWF0ZSgpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhS2V5TWVzc2FnZUV2ZW50KTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleU1lc3NhZ2VFdmVudD4gY3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0
JiBpbml0aWFsaXplcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFL
ZXlNZXNzYWdlRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCisgICAgVWludDhB
cnJheSogbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZS5nZXQoKTsgfQorICAgIFN0
cmluZyBkZXN0aW5hdGlvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25VUkw7IH0K
KworcHJpdmF0ZToKKyAgICBNZWRpYUtleU1lc3NhZ2VFdmVudCgpOworICAgIE1lZGlhS2V5TWVz
c2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdl
RXZlbnRJbml0JiBpbml0aWFsaXplcik7CisKKyAgICBSZWZQdHI8VWludDhBcnJheT4gbV9tZXNz
YWdlOworICAgIFN0cmluZyBtX2Rlc3RpbmF0aW9uVVJMOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNzZiMDkxYmRiZTVkYzlkZTc1MjljYTBkNzUxZjU2NTViMzczZTgxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eU1lc3NhZ2VFdmVudC5pZGwKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworaW50ZXJmYWNl
IFsKKyAgICBDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIsCisgICAgVjhFbmFibGVkQXRS
dW50aW1lPWVuY3J5cHRlZE1lZGlhLAorICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQgCitd
IE1lZGlhS2V5TWVzc2FnZUV2ZW50IDogRXZlbnQgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBV
aW50OEFycmF5IG1lc3NhZ2U7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtJbml0aWFsaXplZEJ5
RXZlbnRDb25zdHJ1Y3Rvcl0gRE9NU3RyaW5nIGRlc3RpbmF0aW9uVVJMOworfTsKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRl
ZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlOZWVkZWRFdmVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUwNmY4ZDUwNjMxN2VhM2ZiOWE4Mzc4Nzlm
ZjgwMWM4Zjk2N2EyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAKQEAgLTAsMCArMSw2MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQV9WMikKKworI2luY2x1ZGUgIk1lZGlhS2V5TmVlZGVkRXZlbnQuaCIKKworI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK01lZGlhS2V5TmVlZGVkRXZlbnRJbml0OjpNZWRpYUtleU5lZWRlZEV2ZW50
SW5pdCgpCit7Cit9CisKK01lZGlhS2V5TmVlZGVkRXZlbnQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnQo
KQoreworfQorCitNZWRpYUtleU5lZWRlZEV2ZW50OjpNZWRpYUtleU5lZWRlZEV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlOZWVkZWRFdmVudEluaXQmIGluaXRp
YWxpemVyKQorICAgIDogRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpCisgICAgLCBtX2luaXREYXRh
KGluaXRpYWxpemVyLmluaXREYXRhKQoreworfQorCitNZWRpYUtleU5lZWRlZEV2ZW50Ojp+TWVk
aWFLZXlOZWVkZWRFdmVudCgpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFLZXlO
ZWVkZWRFdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFt
ZXMoKS5pbnRlcmZhY2VGb3JNZWRpYUtleU5lZWRlZEV2ZW50OworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmFj
ZTMyMzNhM2QxZWY0YmU2YzdkMzI1Y2RkZWJiNWY2MjAwOTc3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50
LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNZWRpYUtleU5lZWRlZEV2
ZW50X2gKKyNkZWZpbmUgTWVkaWFLZXlOZWVkZWRFdmVudF9oCisKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBX1YyKQorCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJNZWRpYUtleUVy
cm9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IE1lZGlhS2V5TmVlZGVkRXZl
bnRJbml0IDogcHVibGljIEV2ZW50SW5pdCB7CisgICAgTWVkaWFLZXlOZWVkZWRFdmVudEluaXQo
KTsKKworICAgIFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YTsKK307CisKK2NsYXNzIE1lZGlh
S2V5TmVlZGVkRXZlbnQgOiBwdWJsaWMgRXZlbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfk1l
ZGlhS2V5TmVlZGVkRXZlbnQoKTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5TmVl
ZGVkRXZlbnQ+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1l
ZGlhS2V5TmVlZGVkRXZlbnQpOworICAgIH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
S2V5TmVlZGVkRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IE1l
ZGlhS2V5TmVlZGVkRXZlbnRJbml0JiBpbml0aWFsaXplcikKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgTWVkaWFLZXlOZWVkZWRFdmVudCh0eXBlLCBpbml0aWFsaXplcikpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkg
Y29uc3Q7CisKKyAgICBVaW50OEFycmF5KiBpbml0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faW5p
dERhdGEuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBNZWRpYUtleU5lZWRlZEV2ZW50KCk7Cisg
ICAgTWVkaWFLZXlOZWVkZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IE1l
ZGlhS2V5TmVlZGVkRXZlbnRJbml0JiBpbml0aWFsaXplcik7CisKKyAgICBSZWZQdHI8VWludDhB
cnJheT4gbV9pbml0RGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzZDQwN2I1MDY3
YzZlOWMwZDRhNGIyZDU3NDgzOTVmNGNhNjAzOWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaWRsCkBA
IC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK2ludGVyZmFjZSBbCisgICAgQ29uZGl0aW9uYWw9
RU5DUllQVEVEX01FRElBX1YyLAorICAgIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRp
YSwKKyAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50IAorXSBNZWRpYUtleU5lZWRlZEV2ZW50
IDogRXZlbnQgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVaW50OEFycmF5IGluaXREYXRhOwor
fTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVNlc3Npb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiYmEzZGI4NjA5ODBlYTZkOTZiOWRk
ODY3YTI2OTNhODk2YjYzYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTAsMCArMSwyMzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlTZXNz
aW9uLmgiCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjaW5jbHVkZSAiQ0RN
LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgor
I2luY2x1ZGUgIk1lZGlhS2V5RXJyb3IuaCIKKyNpbmNsdWRlICJNZWRpYUtleU1lc3NhZ2VFdmVu
dC5oIgorI2luY2x1ZGUgIk1lZGlhS2V5cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bh
c3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleVNlc3Npb246OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBNZWRpYUtleXMqIGtleXMsIGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFLZXlTZXNzaW9uKGNv
bnRleHQsIGtleXMsIGtleVN5c3RlbSkpOworfQorCitNZWRpYUtleVNlc3Npb246Ok1lZGlhS2V5
U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBNZWRpYUtleXMqIGtleXMs
IGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQorICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIoY29udGV4dCkKKyAgICAsIG1fa2V5cyhrZXlzKQorICAgICwgbV9rZXlTeXN0ZW0oa2V5U3lz
dGVtKQorICAgICwgbV9hc3luY0V2ZW50UXVldWUoR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSh0
aGlzKSkKKyAgICAsIG1fc2Vzc2lvbihrZXlzLT5jZG0oKS0+Y3JlYXRlU2Vzc2lvbigpKQorICAg
ICwgbV9rZXlSZXF1ZXN0VGltZXIodGhpcywgJk1lZGlhS2V5U2Vzc2lvbjo6a2V5UmVxdWVzdFRp
bWVyRmlyZWQpCisgICAgLCBtX2FkZEtleVRpbWVyKHRoaXMsICZNZWRpYUtleVNlc3Npb246OmFk
ZEtleVRpbWVyRmlyZWQpCit7Cit9CisKK01lZGlhS2V5U2Vzc2lvbjo6fk1lZGlhS2V5U2Vzc2lv
bigpCit7CisgICAgY2xvc2UoKTsKK30KKwordm9pZCBNZWRpYUtleVNlc3Npb246OnNldEVycm9y
KE1lZGlhS2V5RXJyb3IqIGVycm9yKQoreworICAgIG1fZXJyb3IgPSBlcnJvcjsKK30KKwordm9p
ZCBNZWRpYUtleVNlc3Npb246OmNsb3NlKCkKK3sKKyAgICBpZiAobV9zZXNzaW9uKQorICAgICAg
ICBtX3Nlc3Npb24tPnJlbGVhc2VLZXlzKCk7CisgICAgbV9zZXNzaW9uID0gMDsKKyAgICBtX2Fz
eW5jRXZlbnRRdWV1ZS0+Y2FuY2VsQWxsRXZlbnRzKCk7Cit9CisKK2NvbnN0IFN0cmluZyYgTWVk
aWFLZXlTZXNzaW9uOjpzZXNzaW9uSWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3Nlc3Npb24t
PnNlc3Npb25JZCgpOworfQorCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1
ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhKQoreworICAg
IG1fcGVuZGluZ0tleVJlcXVlc3RzLmFwcGVuZChQZW5kaW5nS2V5UmVxdWVzdChtaW1lVHlwZSwg
aW5pdERhdGEpKTsKKyAgICBtX2tleVJlcXVlc3RUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisK
K3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjprZXlSZXF1ZXN0VGltZXJGaXJlZChUaW1lcjxNZWRpYUtl
eVNlc3Npb24+KikKK3sKKyAgICBBU1NFUlQobV9wZW5kaW5nS2V5UmVxdWVzdHMuc2l6ZSgpKTsK
KyAgICBpZiAoIW1fc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgd2hpbGUgKCFtX3Bl
bmRpbmdLZXlSZXF1ZXN0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgUGVuZGluZ0tleVJlcXVlc3Qg
cmVxdWVzdCA9IG1fcGVuZGluZ0tleVJlcXVlc3RzLnRha2VGaXJzdCgpOworCisgICAgICAgIC8v
IE5PVEU6IENvbnRpbnVlZCBmcm9tIHN0ZXAgNSBpbiBNZWRpYUtleXM6OmNyZWF0ZVNlc3Npb24o
KS4KKyAgICAgICAgLy8gVGhlIHVzZXIgYWdlbnQgd2lsbCBhc3luY2hyb25vdXNseSBleGVjdXRl
IHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gdGhlIHRhc2s6CisKKyAgICAgICAgLy8gMS4gTGV0IGNk
bSBiZSB0aGUgY2RtIGxvYWRlZCBpbiB0aGUgTWVkaWFLZXlzIGNvbnN0cnVjdG9yLgorICAgICAg
ICAvLyAyLiBMZXQgZGVzdGluYXRpb25VUkwgYmUgbnVsbC4KKyAgICAgICAgU3RyaW5nIGRlc3Rp
bmF0aW9uVVJMOworICAgICAgICBNZWRpYUtleUVycm9yOjpDb2RlIGVycm9yQ29kZSA9IDA7Cisg
ICAgICAgIHVuc2lnbmVkIGxvbmcgc3lzdGVtQ29kZSA9IDA7CisKKyAgICAgICAgLy8gMy4gVXNl
IGNkbSB0byBnZW5lcmF0ZSBhIGtleSByZXF1ZXN0IGFuZCBmb2xsb3cgdGhlIHN0ZXBzIGZvciB0
aGUgZmlyc3QgbWF0Y2hpbmcgY29uZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgorCisg
ICAgICAgIFJlZlB0cjxVaW50OEFycmF5PiBrZXlSZXF1ZXN0ID0gbV9zZXNzaW9uLT5nZW5lcmF0
ZUtleVJlcXVlc3QocmVxdWVzdC5taW1lVHlwZSwgcmVxdWVzdC5pbml0RGF0YS5nZXQoKSwgZGVz
dGluYXRpb25VUkwsIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7CisKKyAgICAgICAgLy8gT3RoZXJ3
aXNlIFtpZiBhIHJlcXVlc3QgaXMgbm90IHN1Y2Nlc3NmdWxseSBnZW5lcmF0ZWRdOgorICAgICAg
ICBpZiAoIWtleVJlcXVlc3QpIHsKKyAgICAgICAgICAgIC8vIDMuMS4gQ3JlYXRlIGEgbmV3IE1l
ZGlhS2V5RXJyb3Igb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgorICAgICAg
ICAgICAgLy8gICAgICBjb2RlID0gdGhlIGFwcHJvcHJpYXRlIE1lZGlhS2V5RXJyb3IgY29kZQor
ICAgICAgICAgICAgLy8gICAgICBzeXN0ZW1Db2RlID0gYSBLZXkgU3lzdGVtLXNwZWNpZmljIHZh
bHVlLCBpZiBwcm92aWRlZCwgYW5kIDAgb3RoZXJ3aXNlCisgICAgICAgICAgICBSZWZQdHI8TWVk
aWFLZXlFcnJvcj4gZXJyb3IgPSBNZWRpYUtleUVycm9yOjpjcmVhdGUoZXJyb3JDb2RlLCBzeXN0
ZW1Db2RlKS5nZXQoKTsKKworICAgICAgICAgICAgLy8gMy4yLiBTZXQgdGhlIE1lZGlhS2V5U2Vz
c2lvbiBvYmplY3QncyBlcnJvciBhdHRyaWJ1dGUgdG8gdGhlIGVycm9yIG9iamVjdCBjcmVhdGVk
IGluIHRoZSBwcmV2aW91cyBzdGVwLgorICAgICAgICAgICAgc2V0RXJyb3IoZXJyb3IuZ2V0KCkp
OworCisgICAgICAgICAgICAvLyAzLjMuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2
ZW50IG5hbWVkIGtleWVycm9yIGF0IHRoZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0LgorICAgICAg
ICAgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndl
YmtpdGtleWVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudC0+c2V0
VGFyZ2V0KHRoaXMpOworICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVu
dChldmVudC5yZWxlYXNlKCkpOworCisgICAgICAgICAgICAvLyAzLjQuIEFib3J0IHRoZSB0YXNr
LgorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyA0LiBxdWV1
ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBrZXltZXNzYWdlIGF0IHRoZSBu
ZXcgb2JqZWN0CisgICAgICAgIC8vICAgIFRoZSBldmVudCBpcyBvZiB0eXBlIE1lZGlhS2V5TWVz
c2FnZUV2ZW50IGFuZCBoYXM6CisgICAgICAgIC8vICAgIG1lc3NhZ2UgPSBrZXkgcmVxdWVzdAor
ICAgICAgICAvLyAgICBkZXN0aW5hdGlvblVSTCA9IGRlc3RpbmF0aW9uVVJMCisgICAgICAgIE1l
ZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCBpbml0OworICAgICAgICBpbml0LmJ1YmJsZXMgPSBmYWxz
ZTsKKyAgICAgICAgaW5pdC5jYW5jZWxhYmxlID0gZmFsc2U7CisgICAgICAgIGluaXQubWVzc2Fn
ZSA9IGtleVJlcXVlc3Q7CisgICAgICAgIGluaXQuZGVzdGluYXRpb25VUkwgPSBkZXN0aW5hdGlv
blVSTDsKKyAgICAgICAgUmVmUHRyPE1lZGlhS2V5TWVzc2FnZUV2ZW50PiBldmVudCA9IE1lZGlh
S2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtleW1lc3NhZ2VFdmVu
dCwgaW5pdCk7CisgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIG1fYXN5
bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQpOworICAgIH0KK30KKwordm9pZCBNZWRp
YUtleVNlc3Npb246OmFkZEtleShVaW50OEFycmF5KiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIC8vIEZyb20gPGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxl
L3RpcC9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLmh0bWwjZG9tLWFkZGtleT46Cisg
ICAgLy8gVGhlIGFkZEtleShrZXkpIG1ldGhvZCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBz
OgorICAgIC8vIDEuIElmIHRoZSBmaXJzdCBvciBzZWNvbmQgYXJndW1lbnQgW3NpY10gaXMgbnVs
bCBvciBhbiBlbXB0eSBhcnJheSwgdGhyb3cgYW4gSU5WQUxJRF9BQ0NFU1NfRVJSLgorICAgIC8v
IE5PVEU6IHRoZSByZWZlcmVuY2UgdG8gYSAic2Vjb25kIGFyZ3VtZW50IiBpcyBhIHNwZWMgYnVn
LgorICAgIGlmICgha2V5IHx8ICFrZXktPmxlbmd0aCgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJ
RF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gMi4gU2NoZWR1
bGUgYSB0YXNrIHRvIGhhbmRsZSB0aGUgY2FsbCwgcHJvdmlkaW5nIGtleS4KKyAgICBtX3BlbmRp
bmdLZXlzLmFwcGVuZChrZXkpOworICAgIG1fYWRkS2V5VGltZXIuc3RhcnRPbmVTaG90KDApOwor
fQorCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGltZXJGaXJlZChUaW1lcjxNZWRpYUtl
eVNlc3Npb24+KikKK3sKKyAgICBBU1NFUlQobV9wZW5kaW5nS2V5cy5zaXplKCkpOworICAgIGlm
ICghbV9zZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICB3aGlsZSAoIW1fcGVuZGluZ0tl
eXMuaXNFbXB0eSgpKSB7CisgICAgICAgIFJlZlB0cjxVaW50OEFycmF5PiBwZW5kaW5nS2V5ID0g
bV9wZW5kaW5nS2V5cy50YWtlRmlyc3QoKTsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgZXJyb3JD
b2RlID0gMDsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBzeXN0ZW1Db2RlID0gMDsKKworICAgICAg
ICAvLyBOT1RFOiBDb250aW51ZWQgZnJvbSBzdGVwIDIuIG9mIE1lZGlhS2V5U2Vzc2lvbjo6YWRk
S2V5KCkKKyAgICAgICAgLy8gMi4xLiBMZXQgY2RtIGJlIHRoZSBjZG0gbG9hZGVkIGluIHRoZSBN
ZWRpYUtleXMgY29uc3RydWN0b3IuCisgICAgICAgIC8vIE5PVEU6IFRoaXMgaXMgbV9zZXNzaW9u
LgorICAgICAgICAvLyAyLjIuIExldCAnZGlkIHN0b3JlIGtleScgYmUgZmFsc2UuCisgICAgICAg
IGJvb2wgZGlkU3RvcmVLZXkgPSBmYWxzZTsKKyAgICAgICAgLy8gMi4zLiBMZXQgJ25leHQgbWVz
c2FnZScgYmUgbnVsbC4KKyAgICAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IG5leHRNZXNzYWdlOwor
ICAgICAgICAvLyAyLjQuIFVzZSBjZG0gdG8gaGFuZGxlIGtleS4KKyAgICAgICAgZGlkU3RvcmVL
ZXkgPSBtX3Nlc3Npb24tPmFkZEtleShwZW5kaW5nS2V5LmdldCgpLCBuZXh0TWVzc2FnZSwgZXJy
b3JDb2RlLCBzeXN0ZW1Db2RlKTsKKyAgICAgICAgLy8gMi41LiBJZiBkaWQgc3RvcmUga2V5IGlz
IHRydWUgYW5kIHRoZSBtZWRpYSBlbGVtZW50IGlzIHdhaXRpbmcgZm9yIGEga2V5LCBxdWV1ZSBh
IHRhc2sgdG8gYXR0ZW1wdCB0byByZXN1bWUgcGxheWJhY2suCisgICAgICAgIC8vIFRPRE86IEZp
bmQgYW5kIHJlc3RhcnQgdGhlIG1lZGlhIGVsZW1lbnQKKworICAgICAgICAvLyAyLjYuIElmIG5l
eHQgbWVzc2FnZSBpcyBub3QgbnVsbCwgcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZl
bnQgbmFtZWQga2V5bWVzc2FnZSBhdCB0aGUgTWVkaWFLZXlTZXNzaW9uIG9iamVjdC4KKyAgICAg
ICAgLy8gICAgICBUaGUgZXZlbnQgaXMgb2YgdHlwZSBNZWRpYUtleU1lc3NhZ2VFdmVudCBhbmQg
aGFzOgorICAgICAgICAvLyAgICAgIG1lc3NhZ2UgPSBuZXh0IG1lc3NhZ2UKKyAgICAgICAgLy8g
ICAgICBkZXN0aW5hdGlvblVSTCA9IG51bGwKKyAgICAgICAgaWYgKG5leHRNZXNzYWdlKSB7Cisg
ICAgICAgICAgICBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQgaW5pdDsKKyAgICAgICAgICAgIGlu
aXQuYnViYmxlcyA9IGZhbHNlOworICAgICAgICAgICAgaW5pdC5jYW5jZWxhYmxlID0gZmFsc2U7
CisgICAgICAgICAgICBpbml0Lm1lc3NhZ2UgPSBuZXh0TWVzc2FnZTsKKyAgICAgICAgICAgIFJl
ZlB0cjxNZWRpYUtleU1lc3NhZ2VFdmVudD4gZXZlbnQgPSBNZWRpYUtleU1lc3NhZ2VFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXltZXNzYWdlRXZlbnQsIGluaXQpOworICAgICAg
ICAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1
ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gMi43LiBJ
ZiBkaWQgc3RvcmUga2V5IGlzIHRydWUsIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2
ZW50IG5hbWVkIGtleWFkZGVkIGF0IHRoZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0LgorICAgICAg
ICBpZiAoZGlkU3RvcmVLZXkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxFdmVudD4ga2V5YWRkZWRF
dmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtleWFkZGVkRXZlbnQsIGZh
bHNlLCBmYWxzZSk7CisgICAgICAgICAgICBrZXlhZGRlZEV2ZW50LT5zZXRUYXJnZXQodGhpcyk7
CisgICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGtleWFkZGVkRXZl
bnQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gMi44LiBJZiBhbnkgb2YgdGhlIHByZWNlZGlu
ZyBzdGVwcyBpbiB0aGUgdGFzayBmYWlsZWQKKyAgICAgICAgaWYgKCFkaWRTdG9yZUtleSkgewor
ICAgICAgICAgICAgLy8gMi44LjEuIENyZWF0ZSBhIG5ldyBNZWRpYUtleUVycm9yIG9iamVjdCB3
aXRoIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKyAgICAgICAgICAgIC8vICAgICAgICBjb2Rl
ID0gdGhlIGFwcHJvcHJpYXRlIE1lZGlhS2V5RXJyb3IgY29kZQorICAgICAgICAgICAgLy8gICAg
ICAgIHN5c3RlbUNvZGUgPSBhIEtleSBTeXN0ZW0tc3BlY2lmaWMgdmFsdWUsIGlmIHByb3ZpZGVk
LCBhbmQgMCBvdGhlcndpc2UKKyAgICAgICAgICAgIFJlZlB0cjxNZWRpYUtleUVycm9yPiBlcnJv
ciA9IE1lZGlhS2V5RXJyb3I6OmNyZWF0ZShlcnJvckNvZGUsIHN5c3RlbUNvZGUpLmdldCgpOwor
CisgICAgICAgICAgICAvLyAyLjguMi4gU2V0IHRoZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0J3Mg
ZXJyb3IgYXR0cmlidXRlIHRvIHRoZSBlcnJvciBvYmplY3QgY3JlYXRlZCBpbiB0aGUgcHJldmlv
dXMgc3RlcC4KKyAgICAgICAgICAgIHNldEVycm9yKGVycm9yLmdldCgpKTsKKworICAgICAgICAg
ICAgLy8gMi44LjMuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGtl
eWVycm9yIGF0IHRoZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0LgorICAgICAgICAgICAgUmVmUHRy
PEV2ZW50PiBrZXllcnJvckV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0
a2V5ZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgIGtleWVycm9yRXZlbnQt
PnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVl
RXZlbnQoa2V5ZXJyb3JFdmVudC5yZWxlYXNlKCkpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICAvLyAyLjguNC4gQWJvcnQgdGhlIHRhc2suCisgICAgICAgICAgICAvLyBOT1RFOiBuby1vcAor
ICAgICAgICB9CisgICAgfQorfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhS2V5U2Vzc2lv
bjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRl
cmZhY2VGb3JNZWRpYUtleVNlc3Npb247Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1l
ZGlhS2V5U2Vzc2lvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDBmMzkwMmUzMmIw
M2UzYjJmN2FmNTgwODY4M2YyYmYwNzBkMjZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtMCwwICsx
LDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFLZXlTZXNzaW9uX2gKKyNkZWZpbmUg
TWVkaWFLZXlTZXNzaW9uX2gKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNp
bmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgorI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgR2VuZXJpY0V2ZW50UXVldWU7CitjbGFzcyBNZWRpYUtleUVycm9yOworY2xhc3MgTWVkaWFL
ZXlzOworY2xhc3MgQ0RNU2Vzc2lvbjsKKworY2xhc3MgTWVkaWFLZXlTZXNzaW9uIDogcHVibGlj
IFJlZkNvdW50ZWQ8TWVkaWFLZXlTZXNzaW9uPiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMg
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1lZGlhS2V5U2Vzc2lvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNZWRp
YUtleXMqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CisgICAgfk1lZGlhS2V5U2Vzc2lvbigp
OworCisgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2tleVN5
c3RlbTsgfQorICAgIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKCkgY29uc3Q7CisKKyAgICB2b2lk
IHNldEVycm9yKE1lZGlhS2V5RXJyb3IqKTsKKyAgICBNZWRpYUtleUVycm9yKiBlcnJvcigpIHsg
cmV0dXJuIG1fZXJyb3IuZ2V0KCk7IH0KKworICAgIHZvaWQgc2V0S2V5cyhNZWRpYUtleXMqIGtl
eXMpIHsgbV9rZXlzID0ga2V5czsgfQorICAgIE1lZGlhS2V5cyoga2V5cygpIGNvbnN0IHsgcmV0
dXJuIG1fa2V5czsgfQorCisgICAgdm9pZCBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEpOworICAgIHZvaWQgYWRkS2V5KFVpbnQ4
QXJyYXkqIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgY2xvc2UoKTsKKworICAgIHVz
aW5nIFJlZkNvdW50ZWQ8TWVkaWFLZXlTZXNzaW9uPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50
ZWQ8TWVkaWFLZXlTZXNzaW9uPjo6ZGVyZWY7CisKKyAgICB2b2lkIGVucXVldWVFdmVudChQYXNz
UmVmUHRyPEV2ZW50Pik7CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdl
YmtpdGtleWFkZGVkKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtp
dGtleWVycm9yKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGtl
eW1lc3NhZ2UpOworCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5h
bWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERTsKKworcHJvdGVjdGVkOgor
ICAgIE1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWVkaWFLZXlzKiwg
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOworICAgIHZvaWQga2V5UmVxdWVzdFRpbWVyRmlyZWQo
VGltZXI8TWVkaWFLZXlTZXNzaW9uPiopOworICAgIHZvaWQgYWRkS2V5VGltZXJGaXJlZChUaW1l
cjxNZWRpYUtleVNlc3Npb24+Kik7CisKKyAgICBNZWRpYUtleXMqIG1fa2V5czsKKyAgICBTdHJp
bmcgbV9rZXlTeXN0ZW07CisgICAgU3RyaW5nIG1fc2Vzc2lvbklkOworICAgIFJlZlB0cjxNZWRp
YUtleUVycm9yPiBtX2Vycm9yOworICAgIE93blB0cjxHZW5lcmljRXZlbnRRdWV1ZT4gbV9hc3lu
Y0V2ZW50UXVldWU7CisgICAgT3duUHRyPENETVNlc3Npb24+IG1fc2Vzc2lvbjsKKworICAgIHN0
cnVjdCBQZW5kaW5nS2V5UmVxdWVzdCB7CisgICAgICAgIFBlbmRpbmdLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhKSA6IG1pbWVUeXBlKG1pbWVU
eXBlKSwgaW5pdERhdGEoaW5pdERhdGEpIHsgfQorICAgICAgICBTdHJpbmcgbWltZVR5cGU7Cisg
ICAgICAgIFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YTsKKyAgICB9OworICAgIERlcXVlPFBl
bmRpbmdLZXlSZXF1ZXN0PiBtX3BlbmRpbmdLZXlSZXF1ZXN0czsKKyAgICBUaW1lcjxNZWRpYUtl
eVNlc3Npb24+IG1fa2V5UmVxdWVzdFRpbWVyOworCisgICAgRGVxdWU8UmVmUHRyPFVpbnQ4QXJy
YXk+ID4gbV9wZW5kaW5nS2V5czsKKyAgICBUaW1lcjxNZWRpYUtleVNlc3Npb24+IG1fYWRkS2V5
VGltZXI7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZF
UlJJREUgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZF
UlJJREUgeyBkZXJlZigpOyB9CisKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRU
YXJnZXREYXRhKCkgT1ZFUlJJREUgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisgICAg
dmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURF
IHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorCisgICAgRXZlbnRUYXJnZXREYXRhIG1f
ZXZlbnRUYXJnZXREYXRhOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQV9WMikKKworI2VuZGlmIC8vIE1lZGlhS2V5U2Vzc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTEyNWJiM2QxZTAzM2MyYjA1NWI4MWM4YjYwNmI5ZTMwMmJjNmQ2ZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmlkbApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICAgICAqLworCitpbnRlcmZh
Y2UgWworICAgIENvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMiwKKyAgICBWOEVuYWJsZWRB
dFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWEsCisgICAgRXZlbnRUYXJnZXQsCitdIE1lZGlhS2V5U2Vz
c2lvbiB7CisgICAgLy8gZXJyb3Igc3RhdGUKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFL
ZXlFcnJvciBlcnJvcjsKKworICAgIC8vIHNlc3Npb24gcHJvcGVydGllcworICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcga2V5U3lzdGVtOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgc2Vzc2lvbklkOworCisgICAgLy8gc2Vzc2lvbiBvcGVyYXRpb25zCisgICAgdm9p
ZCBhZGRLZXkoaW4gVWludDhBcnJheSBrZXkpCisgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24p
OworICAgIHZvaWQgY2xvc2UoKTsKKyAgICAKKyAgICAvLyBFdmVudExpc3RlbmVycworICAgIGF0
dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBFdmVudExpc3RlbmVy
IG9ud2Via2l0a2V5YWRkZWQ7CisgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5j
cnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXllcnJvcjsKKyAgICBhdHRyaWJ1
dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gRXZlbnRMaXN0ZW5lciBvbndl
YmtpdGtleW1lc3NhZ2U7CisKKyAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICB2b2lk
IGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIHZvaWQgcmVtb3Zl
RXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgYm9vbGVhbiBk
aXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKKyAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9u
KTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRjMzNjYzM4ZjQwZTJmOGFhYzA5NDU1ODU1ZmI3NDI0
OWJiOGZhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYUtleXMuaCIKKworI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlICJDRE0uaCIKKyNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJNZWRp
YUtleVNlc3Npb24uaCIKKyNpbmNsdWRlICJVVUlELmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlhS2V5cz4gTWVkaWFL
ZXlzOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIC8vIEZyb20gPGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxl
L3RpcC9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLmh0bWwjZG9tLW1lZGlhLWtleXMt
Y29uc3RydWN0b3I+OgorICAgIC8vIFRoZSBNZWRpYUtleXMoa2V5U3lzdGVtKSBjb25zdHJ1Y3Rv
ciBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorCisgICAgLy8gMS4gSWYga2V5U3lzdGVt
IGlzIG51bGwgb3IgYW4gZW1wdHkgc3RyaW5nLCB0aHJvdyBhbiBJTlZBTElEX0FDQ0VTU19FUlIg
ZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoa2V5U3lzdGVtLmlzTnVs
bCgpIHx8IGtleVN5c3RlbS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VT
U19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8vIDIuIElmIGtleVN5c3Rl
bSBpcyBub3Qgb25lIG9mIHRoZSB1c2VyIGFnZW50J3Mgc3VwcG9ydGVkIEtleSBTeXN0ZW1zLCB0
aHJvdyBhIE5PVF9TVVBQT1JURURfRVJSIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAo
IUNETTo6c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkgeworICAgICAgICBlYyA9IE5PVF9T
VVBQT1JURURfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyAzLiBMZXQg
Y2RtIGJlIHRoZSBjb250ZW50IGRlY3J5cHRpb24gbW9kdWxlIGNvcnJlc3BvbmRpbmcgdG8ga2V5
U3lzdGVtLgorICAgIC8vIDQuIExvYWQgY2RtIGlmIG5lY2Vzc2FyeS4KKyAgICBPd25QdHI8Q0RN
PiBjZG0gPSBDRE06OmNyZWF0ZShrZXlTeXN0ZW0pOworCisgICAgLy8gNS4gQ3JlYXRlIGEgbmV3
IE1lZGlhS2V5cyBvYmplY3QuCisgICAgLy8gNS4xIExldCB0aGUga2V5U3lzdGVtIGF0dHJpYnV0
ZSBiZSBrZXlTeXN0ZW0uCisgICAgLy8gNi4gUmV0dXJuIHRoZSBuZXcgb2JqZWN0IHRvIHRoZSBj
YWxsZXIuCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUtleXMoa2V5U3lzdGVtLCBjZG0u
cmVsZWFzZSgpKSk7Cit9CisKK01lZGlhS2V5czo6TWVkaWFLZXlzKGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBQYXNzT3duUHRyPENETT4gY2RtKQorICAgIDogbV9rZXlTeXN0ZW0oa2V5U3lzdGVt
KQorICAgICwgbV9jZG0oY2RtKQoreworfQorCitNZWRpYUtleXM6On5NZWRpYUtleXMoKQorewor
ICAgIC8vIEZyb20gPGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL3Rp
cC9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLmh0bWwjZG9tLW1lZGlhLWtleXMtY29u
c3RydWN0b3I+OgorICAgIC8vIFdoZW4gZGVzdHJveWluZyBhIE1lZGlhS2V5cyBvYmplY3QsIGZv
bGxvdyB0aGUgc3RlcHMgaW4gY2xvc2UoKS4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
c2Vzc2lvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgbV9zZXNzaW9uc1tpXS0+Y2xvc2UoKTsK
KyAgICAgICAgbV9zZXNzaW9uc1tpXS0+c2V0S2V5cygwKTsKKyAgICB9Cit9CisKK1Bhc3NSZWZQ
dHI8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleXM6OmNyZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB0eXBlLCBVaW50OEFycmF5KiBpbml0
RGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8gRnJvbSA8aHR0cDovL2R2Y3MudzMu
b3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQt
bWVkaWEuaHRtbCNkb20tY3JlYXRlc2Vzc2lvbj46CisgICAgLy8gVGhlIGNyZWF0ZVNlc3Npb24o
dHlwZSwgaW5pdERhdGEpIG1ldGhvZCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAg
IC8vIE5vdGU6IFRoZSBjb250ZW50cyBvZiBpbml0RGF0YSBhcmUgY29udGFpbmVyLXNwZWNpZmlj
IEluaXRpYWxpemF0aW9uIERhdGEuCisKKyAgICAvLyAxLiBJZiB0eXBlIGlzIG51bGwgb3IgYW4g
ZW1wdHkgc3RyaW5nIGFuZCBpbml0RGF0YSBpcyBub3QgbnVsbCBvciBhbiBlbXB0eSBzdHJpbmcs
IHRocm93IGFuCisgICAgLy8gSU5WQUxJRF9BQ0NFU1NfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQg
dGhlc2Ugc3RlcHMuCisgICAgaWYgKCh0eXBlLmlzTnVsbCgpIHx8IHR5cGUuaXNFbXB0eSgpKSAm
JiAoIWluaXREYXRhIHx8IGluaXREYXRhLT5sZW5ndGgoKSkpIHsKKyAgICAgICAgZWMgPSBJTlZB
TElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8vIDIuIElm
IHR5cGUgY29udGFpbnMgYSBNSU1FIHR5cGUgdGhhdCBpcyBub3Qgc3VwcG9ydGVkIG9yIGlzIG5v
dCBzdXBwb3J0ZWQgYnkgdGhlIGtleVN5c3RlbSwgdGhyb3cKKyAgICAvLyBhIE5PVF9TVVBQT1JU
RURfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgaWYgKCF0eXBlLmlz
TnVsbCgpICYmICF0eXBlLmlzRW1wdHkoKSAmJiAhbV9jZG0tPnN1cHBvcnRzTUlNRVR5cGUodHlw
ZSkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorCisgICAgLy8gMy4gQ3JlYXRlIGEgbmV3IE1lZGlhS2V5U2Vzc2lvbiBvYmplY3Qu
CisgICAgLy8gMy4xIExldCB0aGUga2V5U3lzdGVtIGF0dHJpYnV0ZSBiZSBrZXlTeXN0ZW0uCisg
ICAgLy8gMy4yIExldCB0aGUgc2Vzc2lvbklkIGF0dHJpYnV0ZSBiZSBhIHVuaXF1ZSBTZXNzaW9u
IElEIHN0cmluZy4gSXQgbWF5IGJlIGdlbmVyYXRlZCBieSBjZG0uCisgICAgUmVmUHRyPE1lZGlh
S2V5U2Vzc2lvbj4gc2Vzc2lvbiA9IE1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKGNvbnRleHQsIHRo
aXMsIGtleVN5c3RlbSgpKTsKKworICAgIC8vIDQuIEFkZCB0aGUgbmV3IG9iamVjdCB0byBhbiBp
bnRlcm5hbCBsaXN0IG9mIHNlc3Npb24gb2JqZWN0cy4KKyAgICBtX3Nlc3Npb25zLmFwcGVuZChz
ZXNzaW9uKTsKKworICAgIC8vIDUuIFNjaGVkdWxlIGEgdGFzayB0byBnZW5lcmF0ZSBhIGtleSBy
ZXF1ZXN0LCBwcm92aWRpbmcgdHlwZSwgaW5pdERhdGEsIGFuZCB0aGUgbmV3IG9iamVjdC4KKyAg
ICBzZXNzaW9uLT5nZW5lcmF0ZUtleVJlcXVlc3QodHlwZSwgaW5pdERhdGEpOworCisgICAgLy8g
Ni4gUmV0dXJuIHRoZSBuZXcgb2JqZWN0IHRvIHRoZSBjYWxsZXIuCisgICAgcmV0dXJuIHNlc3Np
b247Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGFkYjc1ZjYxZTNjNmIyYWRhZDc1
MGJjMzRkNjgyZmM5ZWUwN2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaApAQCAtMCwwICsxLDY4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBNZWRpYUtleXNfaAorI2RlZmluZSBNZWRpYUtleXNfaAorCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0RN
OworY2xhc3MgTWVkaWFLZXlTZXNzaW9uOworCitjbGFzcyBNZWRpYUtleXMgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYUtleXM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUtleXM+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIH5NZWRpYUtleXMoKTsKKworICAgIFBhc3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBjcmVh
dGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBVaW50OEFycmF5KiBpbml0RGF0YSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2tleVN5c3RlbTsgfQorICAgIENETSog
Y2RtKCkgeyByZXR1cm4gbV9jZG0uZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIE1lZGlhS2V5
cyhjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgUGFzc093blB0cjxDRE0+KTsKKworICAgIFZlY3Rv
cjxSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiA+IG1fc2Vzc2lvbnM7CisKKyAgICBTdHJpbmcgbV9r
ZXlTeXN0ZW07CisgICAgT3duUHRyPENETT4gbV9jZG07Cit9OworCit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjZW5kaWYgLy8gTWVkaWFLZXlzX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNjRiNzVjYzRiOWMzNmI0YjY3NjFkNDk3YmU1MDQ4NDNiYTZlOWZhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuaWRsCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyAKK2ludGVyZmFjZSBbCisgICAg
Q29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyLAorICAgIFY4RW5hYmxlZEF0UnVudGltZT1l
bmNyeXB0ZWRNZWRpYSwKKyAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcga2V5U3lzdGVtKSwK
KyAgICBDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiwKK10gTWVkaWFLZXlzIHsKKyAgICBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gTWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Np
b24oaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHR5cGUsIGluIFtP
cHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIFVpbnQ4QXJyYXkgaW5pdERhdGEpCisgICAgICAg
IHJhaXNlcyhET01FeGNlcHRpb24pOworCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBrZXlTeXN0ZW07Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAwMzhlNWUyZDVhZGE5Zjc4
OTkyOGM0YjE5NTI1ZjA3M2IwZjBiMDE4Li4yYTBmNTY0M2U1NmU0ZTc0ODM5YTFlNTU0YmE3N2Ix
NTljNzQxMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjc1MSwzICsyNzUxLDcgQEAgX19a
TjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMTlpc0NTU1JlZ2lvbnNFbmFibGVkRQog
I2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCiBfX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXMyNWFyZVNlYW1sZXNzSUZyYW1lc0VuYWJsZWRFCiAjZW5kaWYKKworI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUFfVjIpCitfX1pON1dlYkNvcmUzQ0RNMThyZWdpc3RlckNETUZhY3Rv
cnlFUEZOM1dURjEwUGFzc093blB0cklOU18xOUNETVByaXZhdGVJbnRlcmZhY2VFRUVQUzBfRVBG
YlJLTlMxXzZTdHJpbmdFRQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjYyNjczNmQwMjRmN2ZiNmM0NDNiZjZmOTU1
NzVlMDhhMzcwMWZjMy4uZWIwMzcxNGQzZGFhYWJlOGMzZTMzYzI2ZGNkNDA1YmUzZDk1ZTlkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTQ3NSw3ICsxNDc1LDYgQEAKIAkJNEI2RkE2RjQwQzM5RTQ4QzAwMDg3MDExIC8qIFNt
YXJ0UmVwbGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEI2RkE2RjIwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCNkZBNkY1MEMzOUU0OEMw
MDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjMwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFj
ZS5jcHAgKi87IH07CiAJCTRCNkZBNkY3MEMzOUU0QTEwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2VD
Ri5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZG
QTZGNjBDMzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwICovOyB9OwotCQk0QjYx
NzM3Mzc5NjM2RjYxNkUyNzczNjggLyogSURCSGlzdG9ncmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2MTczNzM3OTYzNkY2MTZFMjc3MzY4IC8q
IElEQkhpc3RvZ3JhbXMuaCAqLzsgfTsKIAkJNEI4QUY0QUEwQjFDRTAyQjAwNjg3NjkwIC8qIENs
aXBib2FyZEFjY2Vzc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEI4QUY0QTkwQjFDRTAyQjAwNjg3NjkwIC8qIENsaXBib2FyZEFjY2Vzc1Bv
bGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTRCQUU5NUIxMEIyRkE5Q0UwMEFFRDhBMCAvKiBFZGl0b3JEZWxldGVBY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCQUU5NUIwMEIyRkE5Q0Uw
MEFFRDhBMCAvKiBFZGl0b3JEZWxldGVBY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RDI3M0NGOTE2Njk0MjA4MDAyNTlDQTEgLyogSW5z
cGVjdG9ySW5wdXRBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0RDI3M0NGNzE2Njk0MjA4MDAyNTlDQTEgLyogSW5zcGVjdG9ySW5wdXRBZ2Vu
dC5jcHAgKi87IH07CkBAIC0zNjQ2LDggKzM2NDUsOCBAQAogCQk5NzdFMkRDRDEyRjBFMjgzMDBD
MTMzNzkgLyogSFRNTFNvdXJjZVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTc3RTJEQ0IxMkYwRTI4MzAwQzEzMzc5IC8qIEhUTUxTb3Vy
Y2VUcmFja2VyLmNwcCAqLzsgfTsKIAkJOTc3RTJEQ0UxMkYwRTI4MzAwQzEzMzc5IC8qIEhUTUxT
b3VyY2VUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NzdFMkRDQzEyRjBFMjgzMDBDMTMzNzkgLyogSFRNTFNvdXJjZVRyYWNrZXIuaCAqLzsg
fTsKIAkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc3RTJFMEIxMkYwRkM5QzAw
QzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwICovOyB9OwotCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMz
NzkgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTc3RTJFMEMxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuaCAqLzsgfTsK
IAkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzgwIC8qIFhTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzdFMkUwQjEyRjBG
QzlDMDBDMTMzODAgLyogWFNTQXVkaXRvckRlbGVnYXRlLmNwcCAqLzsgfTsKKwkJOTc3RTJFMEYx
MkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3N0UyRTBDMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRp
dG9yLmggKi87IH07CiAJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM4MCAvKiBYU1NBdWRpdG9yRGVs
ZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3
N0UyRTBDMTJGMEZDOUMwMEMxMzM4MCAvKiBYU1NBdWRpdG9yRGVsZWdhdGUuaCAqLzsgfTsKIAkJ
OTc4QUQ2NzQxNDEzMEE4RDAwQzdDQUUzIC8qIEhUTUxTcGFuRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzhBRDY3MTE0MTMwQThEMDBD
N0NBRTMgLyogSFRNTFNwYW5FbGVtZW50LmNwcCAqLzsgfTsKIAkJOTc4QUQ2NzUxNDEzMEE4RDAw
QzdDQUUzIC8qIEhUTUxTcGFuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTc4QUQ2NzIxNDEzMEE4RDAwQzdDQUUzIC8qIEhUTUxTcGFuRWxl
bWVudC5oICovOyB9OwpAQCAtNTk3NSw2ICs1OTc0LDcgQEAKIAkJQ0NDMkI1MTYxNUY2MTMwNjAw
NDhDREQ2IC8qIERldmljZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENDQzJCNTEyMTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250
cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQ0QxMjdERUQxNEYzMDk3RDAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxMjdERUIx
NEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93Lm1tICovOyB9OwogCQlD
RDEyN0RFRTE0RjMwOTg0MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMTI3REVBMTRGMzA5
NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEMUI0QTY1MTYwNzg2QUUwMDI4MkRG
OSAvKiBNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQTk4REMyMTYwMTRFRUUwMEZFQTNCMSAvKiBNZWRpYUtleU5l
ZWRlZEV2ZW50LmNwcCAqLzsgfTsKIAkJQ0QxRTczNDcxNjdCQzc4RTAwOUE4ODVEIC8qIFRleHRU
cmFja1JlcHJlc2VudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEMUU3MzQ2MTY3QkM3OEUwMDlBODg1RCAvKiBUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbi5jcHAgKi87IH07CiAJCUNEMjdGNkU1MTQ1NzY4NUEwMDc4MjA3RCAvKiBKU01lZGlh
Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDI3RjZFMjE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwICov
OyB9OwogCQlDRDI3RjZFNzE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkU2MTQ1
NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwICovOyB9OwpAQCAtNTk4NywxMCAr
NTk4NywyMCBAQAogCQlDRDgyMDMwRDEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2Ny
ZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEODIwMzA5MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxz
Y3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tICovOyB9OwogCQlDRDgyMDMxMDEzOTVBQ0U3MDBG
OTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwRTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93
QW5pbWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0Q4MjAzMTExMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzBGMTM5
NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi87IH07CisJCUNEQTk4REEz
MTYwMTQ2NDEwMEZFQTNCMSAvKiBKU01lZGlhS2V5RXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEOUIxNjAxMjhBNTAwRkVBM0IxIC8q
IEpTTWVkaWFLZXlFcnJvci5jcHAgKi87IH07CisJCUNEQTk4REQ4MTYwMjVCRUYwMEZFQTNCMSAv
KiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREE5OERENTE2MDI1QkVEMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNz
YWdlRXZlbnQuY3BwICovOyB9OworCQlDREE5OERERjE2MDI2QTM3MDBGRUEzQjEgLyogSlNNZWRp
YUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREE5OEREQjE2MDI2QTE4MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VF
dmVudC5jcHAgKi87IH07CisJCUNEQTk4REUwMTYwMjZBMzcwMEZFQTNCMSAvKiBKU01lZGlhS2V5
TmVlZGVkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RBOThEREQxNjAyNkExOTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlOZWVkZWRFdmVudC5j
cHAgKi87IH07CisJCUNEQTk4RTA0MTYwMzlFMUEwMEZFQTNCMSAvKiBKU01lZGlhS2V5cy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERDRTE2
MDE1OTc5MDBGRUEzQjEgLyogSlNNZWRpYUtleXMuY3BwICovOyB9OworCQlDREE5OEUwNjE2MDM5
RTFGMDBGRUEzQjEgLyogSlNNZWRpYUtleVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThERDAxNjAxNTk3OTAwRkVBM0IxIC8qIEpT
TWVkaWFLZXlTZXNzaW9uLmNwcCAqLzsgfTsKKwkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVBM0IxIC8q
IENETS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REE5OEUwOTE2MDNDRDU5MDBGRUEzQjEgLyogQ0RNLmNwcCAqLzsgfTsKKwkJQ0RBOThFMEQxNjAz
RkU0QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERDQTE2MDE1MDhBMDBGRUEzQjEgLyogTWVkaWFLZXlz
LmNwcCAqLzsgfTsKKwkJQ0RBOThFMEUxNjAzRkU1ODAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5
OERDNzE2MDE0RjJDMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmNwcCAqLzsgfTsKIAkJQ0RB
QThEMEExNEQ3MUIyRTAwNjFFQTYwIC8qIFBsYXRmb3JtQ2xvY2tDTS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUE4RDA4MTREMzg1NjAwMDYxRUE2
MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gKi87IH07CiAJCUNEQjg1OUY3MTYwRDQ4QTQwMEU1QjA3
RiAvKiBNZWRpYUtleUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEQjg1OUY0MTYwRDQ4OTkwMEU1QjA3RiAvKiBNZWRpYUtleUV2ZW50LmNw
cCAqLzsgfTsKIAkJQ0RCODU5RkExNjBENDk0OTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREI4NTlG
ODE2MEQ0OTNFMDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmNwcCAqLzsgfTsKLQkJQ0RCODU5
RkIxNjBENDk0RjAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFcnJvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREI4NTlGMDE2MEQ0MkREMDBFNUIwN0Yg
LyogSlNNZWRpYUtleUVycm9yLmNwcCAqLzsgfTsKKwkJQ0RDMjZCNDAxNjBBOENDNjAwMjY3NTdC
IC8qIE1vY2tDRE0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RDMjZCM0MxNjBBNjJCMDAwMjY3NTdCIC8qIE1vY2tDRE0uY3BwICovOyB9OworCQlD
REMyNkI0MTE2MEE4Q0NFMDAyNjc1N0IgLyogTW9ja0NETS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDMjZCM0QxNjBBNjJCMDAwMjY3NTdCIC8qIE1v
Y2tDRE0uaCAqLzsgfTsKIAkJQ0RDNjlERDYxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxs
U2NyZWVuV2FybmluZ1ZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEQzY5REQ0MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldh
cm5pbmdWaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0RDNjlERDcxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2Fybmlu
Z1ZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REM2OURENTE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5t
bSAqLzsgfTsKIAkJQ0RDNjlEREExNjM3MUZENDAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVu
UGxhY2Vob2xkZXJWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREM2OUREODE2MzcxRkQzMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5QbGFj
ZWhvbGRlclZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTEwNjMsOCArMTEwNzMsOCBAQAogCQk5NzdFMkRDQjEyRjBFMjgzMDBDMTMzNzkg
LyogSFRNTFNvdXJjZVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gSFRNTFNvdXJjZVRyYWNrZXIuY3BwOyBwYXRoID0gcGFyc2VyL0hUTUxTb3VyY2VUcmFj
a2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc3RTJEQ0MxMkYwRTI4MzAw
QzEzMzc5IC8qIEhUTUxTb3VyY2VUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEhUTUxTb3VyY2VUcmFja2VyLmg7IHBhdGggPSBwYXJzZXIvSFRNTFNvdXJjZVRyYWNr
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc3RTJFMEIxMkYwRkM5QzAwQzEz
Mzc5IC8qIFhTU0F1ZGl0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gWFNTQXVkaXRvci5jcHA7IHBhdGggPSBwYXJzZXIvWFNTQXVkaXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3N0UyRTBDMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRp
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFhTU0F1ZGl0b3IuaDsgcGF0
aCA9IHBhcnNlci9YU1NBdWRpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3
N0UyRTBCMTJGMEZDOUMwMEMxMzM4MCAvKiBYU1NBdWRpdG9yRGVsZWdhdGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWFNTQXVkaXRvckRlbGVnYXRlLmNwcDsgcGF0
aCA9IHBhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5NzdFMkUwQzEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBYU1NBdWRpdG9yLmg7IHBhdGggPSBwYXJzZXIvWFNT
QXVkaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzdFMkUwQzEyRjBGQzlD
MDBDMTMzODAgLyogWFNTQXVkaXRvckRlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFhTU0F1ZGl0b3JEZWxlZ2F0ZS5oOyBwYXRoID0gcGFyc2VyL1hTU0F1ZGl0b3JE
ZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzhBRDY3MTE0MTMwQThE
MDBDN0NBRTMgLyogSFRNTFNwYW5FbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEhUTUxTcGFuRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk3OEFENjcyMTQxMzBBOEQwMEM3Q0FFMyAvKiBIVE1MU3BhbkVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFNwYW5FbGVtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzU1MCwxMCArMTM1NjAsMzMgQEAKIAkJQ0Q4MjAzMDkx
Mzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaWRlb0Z1bGxz
Y3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRDgyMDMwRTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYldpbmRvd0FuaW1hdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDgyMDMwRjEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2lu
ZG93QW5pbWF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViV2luZG93QW5pbWF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5
OEQ5QjE2MDEyOEE1MDBGRUEzQjEgLyogSlNNZWRpYUtleUVycm9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFLZXlFcnJvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RDlDMTYwMTI4QTUwMEZFQTNCMSAvKiBKU01lZGlhS2V5
RXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUtleUVycm9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REMyMTYwMTRFRUUwMEZFQTNC
MSAvKiBNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBOThEQzMxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFLZXlOZWVkZWRFdmVudC5oOyBw
YXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REM0MTYwMTRFRUUwMEZFQTNCMSAvKiBNZWRp
YUtleU5lZWRlZEV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBNZWRpYUtleU5lZWRl
ZEV2ZW50LmlkbDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRF
dmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REM3MTYwMTRGMkMw
MEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gTWVkaWFLZXlTZXNzaW9uLmNwcDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBOThEQzgxNjAxNEYyQzAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYUtleVNlc3Npb24uaDsgcGF0aCA9IE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQTk4REM5MTYwMTRGNDAwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgbmFtZSA9IE1lZGlhS2V5U2Vzc2lvbi5pZGw7IHBhdGggPSBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQTk4RENBMTYwMTUwOEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTWVkaWFLZXlzLmNwcDsgcGF0aCA9IE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBOThEQ0IxNjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYUtleXMuaDsgcGF0aCA9IE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QTk4RENDMTYwMTUwOEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
bmFtZSA9IE1lZGlhS2V5cy5pZGw7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RENFMTYwMTU5Nzkw
MEZFQTNCMSAvKiBKU01lZGlhS2V5cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU01lZGlhS2V5cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QTk4RENGMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU01lZGlhS2V5cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREE5OEREMDE2MDE1OTc5MDBGRUEzQjEgLyogSlNNZWRpYUtleVNlc3Npb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYUtleVNlc3Npb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OEREMTE2MDE1OTc5MDBGRUEzQjEg
LyogSlNNZWRpYUtleVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNNZWRpYUtleVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThE
RDUxNjAyNUJFRDAwRkVBM0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcDsgcGF0
aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERENjE2MDI1QkVEMDBGRUEzQjEgLyogTWVk
aWFLZXlNZXNzYWdlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVk
aWFLZXlNZXNzYWdlRXZlbnQuaDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlNZXNzYWdlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThERDcx
NjAyNUJFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IG5hbWUgPSBNZWRpYUtleU1lc3NhZ2VFdmVudC5pZGw7IHBhdGggPSBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBOThEREIxNjAyNkExODAwRkVBM0IxIC8qIEpTTWVkaWFLZXlNZXNzYWdlRXZl
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RERDMTYwMjZBMTkwMEZFQTNCMSAvKiBK
U01lZGlhS2V5TWVzc2FnZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFLZXlNZXNzYWdl
RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEREQxNjAyNkExOTAw
RkVBM0IxIC8qIEpTTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REE5OERERTE2MDI2QTE5MDBGRUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTTWVkaWFLZXlOZWVkZWRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREE5OEUwOTE2MDNDRDU5MDBGRUEzQjEgLyogQ0RNLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IENETS5jcHA7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RTBBMTYwM0NENTkwMEZFQTNCMSAvKiBD
RE0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQ0RNLmg7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OEUwQzE2MDNDRjNDMDBG
RUEzQjEgLyogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREFBOEQwNzE0RDM4NTYwMDA2MUVBNjAg
LyogUGxhdGZvcm1DbG9ja0NNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBs
YXRmb3JtQ2xvY2tDTS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREFBOEQwODE0
RDM4NTYwMDA2MUVBNjAgLyogUGxhdGZvcm1DbG9ja0NNLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZvcm1DbG9ja0NNLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDREI4NTlGMDE2MEQ0MkREMDBFNUIwN0YgLyogSlNNZWRpYUtleUVycm9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFLZXlFcnJv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEQjg1OUYxMTYwRDQyREQwMEU1
QjA3RiAvKiBKU01lZGlhS2V5RXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNNZWRpYUtleUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQjg1
OUYyMTYwRDQ4OTkwMEU1QjA3RiAvKiBNZWRpYUtleUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lZGlhS2V5RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0RCODU5RjMxNjBENDg5OTAwRTVCMDdGIC8qIE1lZGlhS2V5RXJyb3IuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhS2V5RXJyb3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDREI4NTlGNDE2MEQ0ODk5MDBFNUIwN0YgLyogTWVkaWFLZXlFdmVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUtleUV2ZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNTYyLDYgKzEzNTk1LDggQEAKIAkJQ0RC
ODU5RjgxNjBENDkzRTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5RXZlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREI4NTlGOTE2MEQ0OTNFMDBFNUIwN0YgLyogSlNNZWRpYUtl
eUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFLZXlFdmVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREJEOTNCQTEzMzNCRDRCMDAyNTcw
RTMgLyogZnVsbHNjcmVlblF1aWNrVGltZS5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9
IGZ1bGxzY3JlZW5RdWlja1RpbWUuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REMyNkIzQzE2MEE2MkIwMDAyNjc1N0IgLyogTW9ja0NETS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNb2NrQ0RNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDMjZCM0QxNjBB
NjJCMDAwMjY3NTdCIC8qIE1vY2tDRE0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NETS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREM2OURENDE2MzIwMjZDMDA3QzM4REYgLyogV2Vi
Q29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNEQzY5REQ1MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldh
cm5pbmdWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
Q29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0RDNjlERDgxNjM3MUZEMzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xk
ZXJWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVGdWxsU2Ny
ZWVuUGxhY2Vob2xkZXJWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDgw
MSw2ICsxNDgzNiw3IEBACiAJCTE0REZCMzNGMEE3REY3NjMwMDE4Rjc2OSAvKiBEZXJpdmVkIFNv
dXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNE
QTk4RENEMTYwMTUxNUMwMEZFQTNCMSAvKiBFbmNyeXB0ZWRNZWRpYSAqLywKIAkJCQlBODNCNzkx
MDBDQ0IwMDFCMDAwQjA4MjUgLyogQ29yZSAqLywKIAkJCQlBODNCNzkwRTBDQ0FGRjk3MDAwQjA4
MjUgLyogQ1NTICovLAogCQkJCUE4M0I3OTEyMENDQjAwM0YwMDBCMDgyNSAvKiBFdmVudHMgKi8s
CkBAIC0xNTUwNSw2ICsxNTU0MSw4IEBACiAJCQkJQTdCRTdFREUxNEM5MTc1QTAwMTQ0ODlEIC8q
IE1hbGxvY1N0YXRpc3RpY3MuaWRsICovLAogCQkJCUVCMDgxQ0Q4MTY5NjA4NDQwMDU1MzczMCAv
KiBUeXBlQ29udmVyc2lvbnMuaCAqLywKIAkJCQlFQjA4MUNEOTE2OTYwODQ0MDA1NTM3MzAgLyog
VHlwZUNvbnZlcnNpb25zLmlkbCAqLywKKwkJCQlDREMyNkIzQzE2MEE2MkIwMDAyNjc1N0IgLyog
TW9ja0NETS5jcHAgKi8sCisJCQkJQ0RDMjZCM0QxNjBBNjJCMDAwMjY3NTdCIC8qIE1vY2tDRE0u
aCAqLywKIAkJCSk7CiAJCQlwYXRoID0gdGVzdGluZzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC0xODI0NCw2ICsxODI4Miw3IEBACiAJCTk3MTE0NUZFMTRFRjAwNkUwMDY3NEZEOSAv
KiBNb2R1bGVzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQlDREE5OERCRDE2MDE0RTA4MDBGRUEzQjEgLyogZW5jcnlwdGVkbWVkaWEgKi8sCiAJCQkJOTcx
MTQ1RkYxNEVGMDA3OTAwNjc0RkQ5IC8qIGdlb2xvY2F0aW9uICovLAogCQkJCTk3MTJBNTUzMTUw
MDRFM0MwMDQ4QUYxMCAvKiBpbmRleGVkZGIgKi8sCiAJCQkJQjFBOTQyREQxNUI1Q0UyMjAwRDUy
NUQxIC8qIG1lZGlhc291cmNlICovLApAQCAtMTkwMDAsOCArMTkwMzksNiBAQAogCQkJCUNEMjdG
NkUzMTQ1NzY3NTgwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5oICovLAogCQkJCUU0NDYx
NDEwMENENjgyNjkwMEZBREE3NSAvKiBKU01lZGlhRXJyb3IuY3BwICovLAogCQkJCUU0NDYxNDEx
MENENjgyNjkwMEZBREE3NSAvKiBKU01lZGlhRXJyb3IuaCAqLywKLQkJCQlDREI4NTlGMDE2MEQ0
MkREMDBFNUIwN0YgLyogSlNNZWRpYUtleUVycm9yLmNwcCAqLywKLQkJCQlDREI4NTlGMTE2MEQ0
MkREMDBFNUIwN0YgLyogSlNNZWRpYUtleUVycm9yLmggKi8sCiAJCQkJQ0RCODU5RjgxNjBENDkz
RTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVudC5jcHAgKi8sCiAJCQkJQ0RCODU5RjkxNjBENDkz
RTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVudC5oICovLAogCQkJCTEwNTk0NTc1MTVCNDJBMEQw
MDREMzdGRCAvKiBKU01pY3JvRGF0YUl0ZW1WYWx1ZS5jcHAgKi8sCkBAIC0yMTU2MCw2ICsyMTU5
Nyw0NSBAQAogCQkJbmFtZSA9IGF1ZGlvOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJ
fTsKKwkJQ0RBOThEQkQxNjAxNEUwODAwRkVBM0IxIC8qIGVuY3J5cHRlZG1lZGlhICovID0gewor
CQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDREE5OERENTE2MDI1QkVE
MDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwICovLAorCQkJCUNEQTk4REQ2MTYw
MjVCRUQwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5oICovLAorCQkJCUNEQTk4REQ3
MTYwMjVCRUUwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5pZGwgKi8sCisJCQkJQ0RB
OThEQzIxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwICovLAorCQkJ
CUNEQTk4REMzMTYwMTRFRUUwMEZFQTNCMSAvKiBNZWRpYUtleU5lZWRlZEV2ZW50LmggKi8sCisJ
CQkJQ0RBOThEQzQxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuaWRsICov
LAorCQkJCUNEQTk4RENBMTYwMTUwOEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuY3BwICovLAorCQkJ
CUNEQTk4RENCMTYwMTUwOEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuaCAqLywKKwkJCQlDREE5OERD
QzE2MDE1MDhBMDBGRUEzQjEgLyogTWVkaWFLZXlzLmlkbCAqLywKKwkJCQlDREE5OERDNzE2MDE0
RjJDMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmNwcCAqLywKKwkJCQlDREE5OERDODE2MDE0
RjJDMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmggKi8sCisJCQkJQ0RBOThEQzkxNjAxNEY0
MDAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5pZGwgKi8sCisJCQkJQ0RBOThFMDkxNjAzQ0Q1
OTAwRkVBM0IxIC8qIENETS5jcHAgKi8sCisJCQkJQ0RBOThFMEExNjAzQ0Q1OTAwRkVBM0IxIC8q
IENETS5oICovLAorCQkJCUNEQTk4RTBDMTYwM0NGM0MwMEZFQTNCMSAvKiBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETVByaXZhdGUuaCAqLywKKwkJCSk7CisJCQluYW1lID0gZW5jcnlwdGVkbWVk
aWE7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDREE5OERDRDE2MDE1MTVD
MDBGRUEzQjEgLyogRW5jcnlwdGVkTWVkaWEgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCUNEQTk4RDlCMTYwMTI4QTUwMEZFQTNCMSAvKiBKU01lZGlhS2V5
RXJyb3IuY3BwICovLAorCQkJCUNEQTk4RDlDMTYwMTI4QTUwMEZFQTNCMSAvKiBKU01lZGlhS2V5
RXJyb3IuaCAqLywKKwkJCQlDREE5OEREQjE2MDI2QTE4MDBGRUEzQjEgLyogSlNNZWRpYUtleU1l
c3NhZ2VFdmVudC5jcHAgKi8sCisJCQkJQ0RBOThEREMxNjAyNkExOTAwRkVBM0IxIC8qIEpTTWVk
aWFLZXlNZXNzYWdlRXZlbnQuaCAqLywKKwkJCQlDREE5OERERDE2MDI2QTE5MDBGRUEzQjEgLyog
SlNNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCAqLywKKwkJCQlDREE5OERERTE2MDI2QTE5MDBGRUEz
QjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmggKi8sCisJCQkJQ0RBOThEQ0UxNjAxNTk3OTAw
RkVBM0IxIC8qIEpTTWVkaWFLZXlzLmNwcCAqLywKKwkJCQlDREE5OERDRjE2MDE1OTc5MDBGRUEz
QjEgLyogSlNNZWRpYUtleXMuaCAqLywKKwkJCQlDREE5OEREMDE2MDE1OTc5MDBGRUEzQjEgLyog
SlNNZWRpYUtleVNlc3Npb24uY3BwICovLAorCQkJCUNEQTk4REQxMTYwMTU5NzkwMEZFQTNCMSAv
KiBKU01lZGlhS2V5U2Vzc2lvbi5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBFbmNyeXB0ZWRNZWRp
YTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCURGOUFGRDZGMTNGQzMxQjAw
MDE1RkVCNyAvKiBvYmpjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKQEAgLTIyOTc5LDYgKzIzMDU1LDcgQEAKIAkJCQlBNzQwQjU5NTE0QzkzNUFCMDBBNzdGQTQg
LyogSlNNYWxsb2NTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkY1MTIxRDE2OTY0
OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
ODE1QzFGMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBNb2NrQ0RNLmggaW4gSGVhZGVy
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKQEAgLTI2NzA2LDYgKzI2NzgzLDcgQEAKIAkJCQlBNzQwQjU5NzE0QzkzNUFGMDBBNzdG
QTQgLyogSlNNYWxsb2NTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUVCRjUxMjFD
MTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9ucy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0MTgxNUMxRTEzODMxOTgzMDA1N0FBQTQgLyogV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUNEQzI2QjQwMTYwQThDQzYwMDI2NzU3QiAvKiBNb2NrQ0RNLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpAQCAtMjgxNzEsNyArMjgyNDksNiBAQAogCQkJCUNEMjdGNkU1MTQ1
NzY4NUEwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGRDIzQTEyNTEzRjVGQTU5MDBGNjcwMDEgLyogSlNNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0NjE0MTgwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpT
TWVkaWFFcnJvci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlDREI4NTlGQjE2MEQ0OTRGMDBFNUIw
N0YgLyogSlNNZWRpYUtleUVycm9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQjg1OUZBMTYw
RDQ5NDkwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkMzQzM5QjYwQzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0NjRFMDZDMTM1RUMxMDYwMEZEQjAwQSAvKiBKU01lZGlhTGlzdEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTI5NTQ3LDYgKzI5NjI0LDE2IEBACiAJCQkJOTc3RTJFMEUxMkYw
RkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJF
MEUxMkYwRkM5QzAwQzEzMzgwIC8qIFhTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQ0RBOThEQTMxNjAxNDY0MTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OEREODE2MDI1QkVGMDBGRUEzQjEgLyogTWVkaWFL
ZXlNZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThEREYxNjAyNkEzNzAw
RkVBM0IxIC8qIEpTTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
Q0RBOThERTAxNjAyNkEzNzAwRkVBM0IxIC8qIEpTTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlDREE5OEUwNDE2MDM5RTFBMDBGRUEzQjEgLyogSlNNZWRpYUtleXMu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThFMDYxNjAzOUUxRjAwRkVBM0IxIC8qIEpTTWVk
aWFLZXlTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4RTBCMTYwM0NENjAwMEZF
QTNCMSAvKiBDRE0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThFMEQxNjAzRkU0QTAwRkVB
M0IxIC8qIE1lZGlhS2V5cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OEUwRTE2MDNGRTU4
MDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEMUI0
QTY1MTYwNzg2QUUwMDI4MkRGOSAvKiBNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4gYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbgppbmRleCBhMmMzYzljMjMzMzIxYjI1MmJmYWYw
OGU3ZDI1NWJkNTlhNTNkZWUyLi5jMDRiMDI1Y2VjNDA3MDQ3MmMzMjJlYWUwZmE2N2E4ZWY2ZGRj
NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbgpAQCAtNTIsNSArNTIsNyBAQCBEZXZpY2VP
cmllbnRhdGlvbkV2ZW50IGNvbmRpdGlvbmFsPURFVklDRV9PUklFTlRBVElPTgogRGV2aWNlUHJv
eGltaXR5RXZlbnQgY29uZGl0aW9uYWw9UFJPWElNSVRZX0VWRU5UUwogT3JpZW50YXRpb25FdmVu
dCBpbnRlcmZhY2VOYW1lPUV2ZW50LCBjb25kaXRpb25hbD1PUklFTlRBVElPTl9FVkVOVFMKIE1l
ZGlhS2V5RXZlbnQgY29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBCitNZWRpYUtleU1lc3NhZ2VF
dmVudCBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIKK01lZGlhS2V5TmVlZGVkRXZlbnQg
Y29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyCiBUcmFja0V2ZW50IGNvbmRpdGlvbmFsPVZJ
REVPX1RSQUNLCiBBdXRvY29tcGxldGVFcnJvckV2ZW50IGNvbmRpdGlvbmFsPVJFUVVFU1RfQVVU
T0NPTVBMRVRFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0
b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCA4
MjU2NjdiM2NhZDdhMzUxMWEwZGE0ZTA5ZWQ2OWU5MjJlNzExOTVjLi5jZjVhY2Y3NWMzYmU0OTAz
MGQzODcxMjM5MzAzODRlMTgwMDRmNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dEZhY3RvcnkuaW4KQEAgLTE0LDYgKzE0LDcgQEAgSURCUmVxdWVzdCBjb25kaXRpb25hbD1JTkRF
WEVEX0RBVEFCQVNFCiBJREJUcmFuc2FjdGlvbiBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNF
CiBTY3JpcHRQcm9jZXNzb3JOb2RlIGNvbmRpdGlvbmFsPVdFQl9BVURJTwogTG9jYWxNZWRpYVN0
cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KK01lZGlhS2V5U2Vzc2lvbiBjb25kaXRpb25h
bD1FTkNSWVBURURfTUVESUFfVjIKIE1lZGlhQ29udHJvbGxlciBjb25kaXRpb25hbD1WSURFTwog
TWVkaWFTb3VyY2UgY29uZGl0aW9uYWw9TUVESUFfU09VUkNFCiBNZWRpYVN0cmVhbSBjb25kaXRp
b25hbD1NRURJQV9TVFJFQU0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CmluZGV4IGMyZmU2NzU2MzhjNjM5NmUzNjMwZjcwYWE0YjQ0ZDA5ODZjNTgwZTMuLjQyMmExYjFj
ZTA1MTQ4MzczMzNhMDEyNzA1MmUzY2M2ODQyNTdhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTI1LDYgKzEyNSwxMSBAQAogI2luY2x1ZGUgIk1lZGlh
U3RyZWFtUmVnaXN0cnkuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9W
MikKKyNpbmNsdWRlICJNZWRpYUtleU5lZWRlZEV2ZW50LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlz
LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMTk2Niw2ICsxOTcxLDI1IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCit2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwgVWludDhBcnJheSogaW5pdERh
dGEpCit7CisgICAgTWVkaWFLZXlOZWVkZWRFdmVudEluaXQgaW5pdGlhbGl6ZXI7CisgICAgaW5p
dGlhbGl6ZXIuaW5pdERhdGEgPSBpbml0RGF0YTsKKyAgICBpbml0aWFsaXplci5idWJibGVzID0g
ZmFsc2U7CisgICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJsZSA9IGZhbHNlOworCisgICAgUmVmUHRy
PEV2ZW50PiBldmVudCA9IE1lZGlhS2V5TmVlZGVkRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
d2Via2l0bmVlZGtleUV2ZW50LCBpbml0aWFsaXplcik7CisgICAgZXZlbnQtPnNldFRhcmdldCh0
aGlzKTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2Uo
KSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TWVkaWFLZXlzKE1lZGlhS2V5cyog
bWVkaWFLZXlzKQoreworICAgIG1fbWVkaWFLZXlzID0gbWVkaWFLZXlzOworfQorI2VuZGlmCisK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJvZ3Jlc3NFdmVudFRpbWVyRmlyZWQoVGltZXI8SFRN
TE1lZGlhRWxlbWVudD4qKQogewogICAgIEFTU0VSVChtX3BsYXllcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGU1MmNlNDFiNDJhMzQ2ZDA5MGYxNjljYTdmN2Qz
NWZjMTU1MDllMjguLmIxODQwODU3MjZkOWZhOGZhNjVlMDhlYjhjY2RhMDI2MWJkMjUyZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC02Nyw2ICs2Nyw5IEBAIGNs
YXNzIFdpZGdldDsKICNpZiBQTEFURk9STShNQUMpCiBjbGFzcyBEaXNwbGF5U2xlZXBEaXNhYmxl
cjsKICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCitjbGFzcyBNZWRpYUtl
eXM7CisjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIGNsYXNzIEluYmFuZFRleHRU
cmFja1ByaXZhdGU7CkBAIC0xODgsOSArMTkxLDE2IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGtleWFkZGVkKTsKICAgICBERUZJTkVfQVRUUklC
VVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGtleWVycm9yKTsKICAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKHdlYmtpdGtleW1lc3NhZ2UpOworI2VuZGlmCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKICAgICBERUZJTkVf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdG5lZWRrZXkpOwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIE1lZGlhS2V5cyogbWVkaWFLZXlzKCkgY29u
c3QgeyByZXR1cm4gbV9tZWRpYUtleXMuZ2V0KCk7IH0KKyAgICB2b2lkIHNldE1lZGlhS2V5cyhN
ZWRpYUtleXMqKTsKKyNlbmRpZgorCiAvLyBjb250cm9scwogICAgIGJvb2wgY29udHJvbHMoKSBj
b25zdDsKICAgICB2b2lkIHNldENvbnRyb2xzKGJvb2wpOwpAQCAtNDQ1LDYgKzQ1NSwxMCBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcktleU5lZWRlZChNZWRpYVBsYXll
ciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29u
c3QgdW5zaWduZWQgY2hhciogaW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoKSBPVkVS
UklERTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKyAgICB2aXJ0
dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBVaW50OEFycmF5Kik7
CisjZW5kaWYKKwogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclVzZXJBZ2VudCgpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgQ09SU01vZGUgbWVkaWFQbGF5ZXJDT1JTTW9kZSgp
IGNvbnN0IE9WRVJSSURFOwpAQCAtNzA2LDYgKzcyMCwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICBmcmllbmQgY2xhc3MgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGU7CisKKyNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBX1YyKQorICAgIFJlZlB0cjxNZWRpYUtleXM+IG1fbWVkaWFLZXlzOwor
I2VuZGlmCiB9OwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5pZGwKaW5kZXggMmVjZTVhY2FhNWFkYTMyODVlYzM4NzkzNDJmYTgx
YjI3OTA1ODNiZS4uNWViZjQ0NzBiYmMwZDZjZTU4NjJiYWQxOWNkYjY0YTRjYWY1NTg5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCkBAIC00NSw3ICs0NSw5IEBA
IGF0dHJpYnV0ZSBET01TdHJpbmcgcHJlbG9hZDsKIHJlYWRvbmx5IGF0dHJpYnV0ZSBUaW1lUmFu
Z2VzIGJ1ZmZlcmVkOwogdm9pZCBsb2FkKCk7CiAjaWYgZGVmaW5lZChFTkFCTEVfRU5DUllQVEVE
X01FRElBKSAmJiBFTkFCTEVfRU5DUllQVEVEX01FRElBCi1ET01TdHJpbmcgY2FuUGxheVR5cGUo
aW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHR5cGUsIGluIFtPcHRp
b25hbD1EZWZhdWx0SXNVbmRlZmluZWQsIFRyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5k
ZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIGtleVN5c3RlbSk7CisgICAgRE9NU3RyaW5n
IGNhblBsYXlUeXBlKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0
eXBlLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkLCBUcmVhdE51bGxBcz1OdWxsU3Ry
aW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBrZXlTeXN0ZW0pOwor
I2VsaWYgZGVmaW5lZChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAmJiBFTkFCTEVfRU5DUllQ
VEVEX01FRElBX1YyCisgICAgRE9NU3RyaW5nIGNhblBsYXlUeXBlKGluIFtPcHRpb25hbD1EZWZh
dWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0eXBlLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5k
ZWZpbmVkLCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJp
bmddIERPTVN0cmluZyBrZXlTeXN0ZW0pOwogI2Vsc2UKIERPTVN0cmluZyBjYW5QbGF5VHlwZShp
biBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgdHlwZSk7CiAjZW5kaWYK
QEAgLTEwMSwxMCArMTAzLDEzIEBAIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9TUVE
SUFfU1RBVElTVElDU10gdW5zaWduZWQgbG9uZyB3ZWJraXRWaWRlb0RlY29kCiBbVjhFbmFibGVk
QXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSB2b2lkIHdlYmtpdENhbmNlbEtleVJlcXVlc3QoaW4g
W1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9N
U3RyaW5nIGtleVN5c3RlbSwgaW4gW09wdGlvbmFsPURlZmF1bHRJc051bGxTdHJpbmddIERPTVN0
cmluZyBzZXNzaW9uSWQpCiAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwogCi1bVjhFbmFibGVk
QXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbndlYmtp
dGtleWFkZGVkOwotYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFd
IEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXllcnJvcjsKLWF0dHJpYnV0ZSBbVjhFbmFibGVkQXRS
dW50aW1lPWVuY3J5cHRlZE1lZGlhXSBFdmVudExpc3RlbmVyIG9ud2Via2l0a2V5bWVzc2FnZTsK
LWF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBFdmVudExpc3Rl
bmVyIG9ud2Via2l0bmVlZGtleTsKKyAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1l
bmNyeXB0ZWRNZWRpYV0gRXZlbnRMaXN0ZW5lciBvbndlYmtpdGtleWFkZGVkOworICAgIGF0dHJp
YnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBFdmVudExpc3RlbmVyIG9u
d2Via2l0a2V5ZXJyb3I7CisgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlw
dGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXltZXNzYWdlOworI2VuZGlmCisgICAg
YXR0cmlidXRlIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUF8RU5DUllQVEVEX01FRElBX1Yy
LCBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJr
aXRuZWVka2V5OworI2lmIGRlZmluZWQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJiYgRU5B
QkxFX0VOQ1JZUFRFRF9NRURJQV9WMgorICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1l
PWVuY3J5cHRlZE1lZGlhXSBNZWRpYUtleXMgbWVkaWFLZXlzOwogI2VuZGlmCiAKICNpZiBkZWZp
bmVkKEVOQUJMRV9WSURFT19UUkFDSykgJiYgRU5BQkxFX1ZJREVPX1RSQUNLCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFFcnJvci5oCmluZGV4IDkwZjQ0N2YwNWU1YTRmMGNhZDE0YjVjNDI5YmZiZmU4Yzg3MGQz
MDQuLmIwYmY1Zjc2NWQ1YTM4NjY2Nzk4YjA0OTM1NzViMmEwNjQwMjE4ZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFFcnJvci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgTUVESUFf
RVJSX05FVFdPUkssCiAgICAgICAgIE1FRElBX0VSUl9ERUNPREUsCiAgICAgICAgIE1FRElBX0VS
Ul9TUkNfTk9UX1NVUFBPUlRFRAotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKICAgICAg
ICAgLCBNRURJQV9FUlJfRU5DUllQVEVECiAjZW5kaWYKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFFcnJvci5pZGwKaW5kZXggZTJjZDI3MTQzY2NhNWE3YmM3NTQ4OGM4NTYxZDk2NTNmMDk0NzFi
ZC4uNzMzNzQ0NDQ2YjAxYzIxMmM1NDVmMmUwNjdiYTgxNjFmODY3YzAyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRXJyb3IuaWRsCkBAIC0yMywxNSArMjMsMTUgQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAog
ICovCiAKLVsKK2ludGVyZmFjZSBbCiAgICAgQ29uZGl0aW9uYWw9VklERU8sCiAgICAgSW1wbGVt
ZW50YXRpb25MYWNrc1ZUYWJsZQotXSBpbnRlcmZhY2UgTWVkaWFFcnJvciB7CitdIE1lZGlhRXJy
b3IgewogICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfRVJSX0FCT1JURUQgPSAxOwog
ICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfRVJSX05FVFdPUksgPSAyOwogICAgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfRVJSX0RFQ09ERSA9IDM7CiAgICAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfU1JDX05PVF9TVVBQT1JURUQgPSA0OwotI2lmIGRlZmlu
ZWQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQQorI2lm
IChkZWZpbmVkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRV9FTkNSWVBURURfTUVE
SUEpIHx8IChkZWZpbmVkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICYmIEVOQUJMRV9FTkNS
WVBURURfTUVESUFfVjIpCiAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfRU5D
UllQVEVEID0gNTsKICNlbmRpZgogICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNo
b3J0IGNvZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXJyb3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFcnJvci5oCmluZGV4IDEyYzczNmQ0ODdh
M2Y0YzA3MTY1YjRjNjUyOGVmZDk5OWNmNzVkZTIuLjQ5ZTM4NDNlMzI4YjM5MDg3OGU2NWUxMmMx
MWUwNjk1ZDk3MThkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlF
cnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFcnJvci5oCkBAIC0yNiw3
ICsyNiw3IEBACiAjaWZuZGVmIE1lZGlhS2V5RXJyb3JfaAogI2RlZmluZSBNZWRpYUtleUVycm9y
X2gKIAotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKIAogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTM1LDcgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYUtleUVycm9yIDogcHVibGljIFJlZkNv
dW50ZWQ8TWVkaWFLZXlFcnJvcj4gewogcHVibGljOgotICAgIGVudW0gQ29kZSB7CisgICAgZW51
bSB7CiAgICAgICAgIE1FRElBX0tFWUVSUl9VTktOT1dOID0gMSwKICAgICAgICAgTUVESUFfS0VZ
RVJSX0NMSUVOVCwKICAgICAgICAgTUVESUFfS0VZRVJSX1NFUlZJQ0UsCkBAIC00MywxNSArNDMs
MTggQEAgcHVibGljOgogICAgICAgICBNRURJQV9LRVlFUlJfSEFSRFdBUkVDSEFOR0UsCiAgICAg
ICAgIE1FRElBX0tFWUVSUl9ET01BSU4KICAgICB9OworICAgIHR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgQ29kZTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5RXJyb3I+IGNyZWF0ZShD
b2RlIGNvZGUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUtleUVycm9yKGNvZGUpKTsgfQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5RXJyb3I+IGNyZWF0ZShDb2RlIGNvZGUsIHVu
c2lnbmVkIGxvbmcgc3lzdGVtQ29kZSA9IDApIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUtl
eUVycm9yKGNvZGUsIHN5c3RlbUNvZGUpKTsgfQogCiAgICAgQ29kZSBjb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlOyB9CisgICAgdW5zaWduZWQgbG9uZyBzeXN0ZW1Db2RlKCkgeyByZXR1cm4g
bV9zeXN0ZW1Db2RlOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTWVkaWFLZXlFcnJvcihD
b2RlIGNvZGUpIDogbV9jb2RlKGNvZGUpIHsgfQorICAgIGV4cGxpY2l0IE1lZGlhS2V5RXJyb3Io
Q29kZSBjb2RlLCB1bnNpZ25lZCBsb25nIHN5c3RlbUNvZGUpIDogbV9jb2RlKGNvZGUpLCBtX3N5
c3RlbUNvZGUoc3lzdGVtQ29kZSkgeyB9CiAKICAgICBDb2RlIG1fY29kZTsKKyAgICB1bnNpZ25l
ZCBsb25nIG1fc3lzdGVtQ29kZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFcnJvci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhS2V5RXJyb3IuaWRsCmluZGV4IGY3Mjc5ZDM5Yzg4MWIxYWU5NzE0ODBh
MzIwMTRjOWE2NmU3MTQ0MTkuLjk2MzE1NTEzOTJkNmU5MjMyZjRmZTY2YmY2ODA0ZWIwMjgwOWJj
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFcnJvci5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUVycm9yLmlkbApAQCAtMjMsMTEgKzIzLDEx
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi1bCi0gICAgQ29uZGl0aW9uYWw9RU5DUllQVEVE
X01FRElBLAoraW50ZXJmYWNlIFsKKyAgICBDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUF8RU5D
UllQVEVEX01FRElBX1YyLAogICAgIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYSwg
CiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQotXSBpbnRlcmZhY2UgTWVkaWFLZXlFcnJv
ciB7CitdIE1lZGlhS2V5RXJyb3IgewogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0tF
WUVSUl9VTktOT1dOID0gMTsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9LRVlFUlJf
Q0xJRU5UID0gMjsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9LRVlFUlJfU0VSVklD
RSA9IDM7CkBAIC0zNSw0ICszNSw1IEBACiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFf
S0VZRVJSX0hBUkRXQVJFQ0hBTkdFID0gNTsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJ
QV9LRVlFUlJfRE9NQUlOID0gNjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hv
cnQgY29kZTsKKyAgICBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyXSByZWFkb25seSBh
dHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBzeXN0ZW1Db2RlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmlkbAppbmRleCA5OTIxMTAyNzkyMTUwYTQyNTAyYjE1NzZjZmIzNjE2NjJjMjk3N2RmLi44
NWIwZGFjYzJlMmQyZWFjM2ZlYWRkNDVkZDhhNjRiYTRjNmVjMGVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCkBAIC00ODcsNiArNDg3LDEwIEBACiAKICAgICBbQ29uZGl0aW9uYWw9RU5D
UllQVEVEX01FRElBLCBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIGF0dHJpYnV0
ZSBNZWRpYUtleUVycm9yQ29uc3RydWN0b3IgTWVkaWFLZXlFcnJvcjsKICAgICBbQ29uZGl0aW9u
YWw9RU5DUllQVEVEX01FRElBLCBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIGF0
dHJpYnV0ZSBNZWRpYUtleUV2ZW50Q29uc3RydWN0b3IgTWVkaWFLZXlFdmVudDsKKyAgICBhdHRy
aWJ1dGUgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMiwgVjhFbmFibGVkQXRSdW50aW1l
PWVuY3J5cHRlZE1lZGlhXSBNZWRpYUtleXNDb25zdHJ1Y3RvciBNZWRpYUtleXM7CisgICAgYXR0
cmlidXRlIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIsIFY4RW5hYmxlZEF0UnVudGlt
ZT1lbmNyeXB0ZWRNZWRpYV0gTWVkaWFLZXlFcnJvckNvbnN0cnVjdG9yIE1lZGlhS2V5RXJyb3I7
CisgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIsIFY4RW5hYmxl
ZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gTWVkaWFLZXlNZXNzYWdlRXZlbnRDb25zdHJ1Y3Rv
ciBNZWRpYUtleU1lc3NhZ2VFdmVudDsKKyAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUVOQ1JZ
UFRFRF9NRURJQV9WMiwgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBNZWRpYUtl
eU5lZWRlZEV2ZW50Q29uc3RydWN0b3IgTWVkaWFLZXlOZWVkZWRFdmVudDsKIAogICAgIFtDb25k
aXRpb25hbD1WSURFT19UUkFDSywgVjhFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2td
IGF0dHJpYnV0ZSBIVE1MVHJhY2tFbGVtZW50Q29uc3RydWN0b3IgSFRNTFRyYWNrRWxlbWVudDsK
ICAgICBbQ29uZGl0aW9uYWw9VklERU9fVFJBQ0ssIFY4RW5hYmxlZEF0UnVudGltZT13ZWJraXRW
aWRlb1RyYWNrXSBhdHRyaWJ1dGUgVGV4dFRyYWNrQ29uc3RydWN0b3IgVGV4dFRyYWNrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4
IDRiNzA0YWIwNTkzOWU3ODVmMTI3M2Q1NWY3ZTBhNWYyMTMzNWEwNWEuLjAzZDM5MWM2MTM2ZDc2
MmU5ZjdlMTY1YThjZTA0ODZiMmNjMTY0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTI5NSw3ICsyOTUsNyBAQCBzdGF0aWMg
TWVkaWFQbGF5ZXJGYWN0b3J5KiBiZXN0TWVkaWFFbmdpbmVGb3JUeXBlQW5kQ29kZWNzKGNvbnN0
IFN0cmluZyYgdHlwZSwgYwogICAgICAgICAgICAgICAgIGN1cnJlbnQgPSAwOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAg
ICAgICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgZW5naW5lU3VwcG9ydCA9IGVuZ2luZXNb
bmR4XS0+c3VwcG9ydHNUeXBlQW5kQ29kZWNzKHR5cGUsIGNvZGVjcywga2V5U3lzdGVtLCB1cmwp
OwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKGtleVN5c3RlbSk7CkBAIC03ODQsNyArNzg0
LDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBl
KGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHkKICAgICBVTlVTRURfUEFSQU0oY2xpZW50KTsK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQogICAgIHJldHVybiBlbmdp
bmUtPnN1cHBvcnRzVHlwZUFuZENvZGVjcyh0eXBlLCB0eXBlQ29kZWNzLCBzeXN0ZW0sIHVybCk7
CiAjZWxzZQogICAgIEFTU0VSVChzeXN0ZW0uaXNFbXB0eSgpKTsKQEAgLTEwODEsNiArMTA4MSwx
NCBAQCBib29sIE1lZGlhUGxheWVyOjprZXlOZWVkZWQoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjbwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBX1YyKQordm9pZCBNZWRpYVBsYXllcjo6a2V5TmVlZGVkKFVpbnQ4QXJyYXkq
IGluaXREYXRhKQoreworICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQorICAgICAgICBtX21l
ZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllcktleU5lZWRlZCh0aGlzLCBpbml0RGF0YSk7Cit9
CisjZW5kaWYKKwogU3RyaW5nIE1lZGlhUGxheWVyOjpyZWZlcnJlcigpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX21lZGlhUGxheWVyQ2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggMmIwNTE3NmFmNjliYTE2MjZmNjI0MWZhODgzZmZh
NDI1Mzk5Zjg2Mi4uY2I1NTc4YjgxNTA5OGE2NDM3MTIzMzEzYzZkMzAzYzIxZjhjYjA4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0x
OTMsNiArMTkzLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJLZXlO
ZWVkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIC8qIGtleVN5c3RlbSAqLywgY29uc3Qg
U3RyaW5nJiAvKiBzZXNzaW9uSWQgKi8sIGNvbnN0IHVuc2lnbmVkIGNoYXIqIC8qIGluaXREYXRh
ICovLCB1bnNpZ25lZCAvKiBpbml0RGF0YUxlbmd0aCAqLykgeyByZXR1cm4gZmFsc2U7IH0KICNl
bmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKyAgICB2aXJ0dWFsIHZvaWQg
bWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBVaW50OEFycmF5KikgeyB9CisjZW5k
aWYKKyAgICAKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclJlZmVycmVyKCkgY29uc3Qg
eyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclVzZXJB
Z2VudCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBDT1JTTW9kZSBt
ZWRpYVBsYXllckNPUlNNb2RlKCkgY29uc3QgeyByZXR1cm4gVW5zcGVjaWZpZWQ7IH0KQEAgLTQz
MCw2ICs0MzQsMTAgQEAgcHVibGljOgogICAgIGJvb2wga2V5TmVlZGVkKGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciog
aW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoKTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQV9WMikKKyAgICB2b2lkIGtleU5lZWRlZChVaW50OEFycmF5KiBpbml0
RGF0YSk7CisjZW5kaWYKKwogICAgIFN0cmluZyByZWZlcnJlcigpIGNvbnN0OwogICAgIFN0cmlu
ZyB1c2VyQWdlbnQoKSBjb25zdDsKIApAQCAtNDgwLDcgKzQ4OCw3IEBAIHByaXZhdGU6CiAKIHR5
cGVkZWYgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+ICgqQ3JlYXRlTWVk
aWFFbmdpbmVQbGF5ZXIpKE1lZGlhUGxheWVyKik7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2lu
ZVN1cHBvcnRlZFR5cGVzKShIYXNoU2V0PFN0cmluZz4mIHR5cGVzKTsKLSNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNS
WVBURURfTUVESUFfVjIpCiB0eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRp
YUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNv
ZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmIHVybCk7CiAjZWxzZQog
dHlwZWRlZiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlICgqTWVkaWFFbmdpbmVTdXBwb3J0c1R5
cGUpKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwm
IHVybCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggNjJhMDJlYmYxZTU5NWI0M2Y2ZjI5OTFi
ODI1NGMwNzA3ZmUzYzM0YS4uM2U0NjZiYzY5MGUwZjNiODRmYzNlMGI5ODcwODdiNTMwZTUxNzU2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1l
ZGlhUGxheWVyKik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxT
dHJpbmc+JiB0eXBlcyk7CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3Vw
cG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0
IEtVUkwmKTsKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAgICAgc3RhdGljIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGUgZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0
IEtVUkwmKTsKICNlbmRpZgogCkBAIC0xNzcsMTkgKzE3NywxNCBAQCBwcml2YXRlOgogCiAjaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCiAgICAgUmV0YWluUHRyPFZU
UGl4ZWxUcmFuc2ZlclNlc3Npb25SZWY+IG1fcGl4ZWxUcmFuc2ZlclNlc3Npb247Ci0jZW5kaWYK
IAotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTA5MAorICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXI7CisgICAgT3duUHRyPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRl
cjsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlPiBtX2xvYWRlckRlbGVn
YXRlOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGlu
Z1JlcXVlc3Q+ID4gbV9rZXlVUklUb1JlcXVlc3RNYXA7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJl
dGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gPiBtX3Nlc3Npb25JRFRvUmVx
dWVzdE1hcDsKICNlbmRpZgogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDkwCi0gICAgZnJpZW5kIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjsKLSAgICBP
d25QdHI8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiBtX3Jlc291cmNlTG9hZGVyOwotI2VuZGlm
Ci0KICNpZiBIQVZFKEFWRk9VTkRBVElPTl9URVhUX1RSQUNLX1NVUFBPUlQpCiAgICAgUmV0YWlu
UHRyPEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXQ+IG1fbGVnaWJsZU91dHB1dDsKICAgICBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQyogbV9jdXJyZW50VHJhY2s7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQppbmRleCA4YmI3ODg1ZWVkMjgyM2I3NjE5YjU3MzdjZjJkNjJhMDJhNmFjMDYwLi4z
NDBlNTljZjgxNzYwMjY5NDFjOGMxNDliMWFlMTRiMjAzNWVkZmJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KQEAgLTE5NCw3ICsxOTQsNyBAQCBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZT4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYQogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5l
KE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUo
KSkKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAgICAgICAgIHJlZ2lzdHJhcihjcmVh
dGUsIGdldFN1cHBvcnRlZFR5cGVzLCBleHRlbmRlZFN1cHBvcnRzVHlwZSwgMCwgMCwgMCk7CiAj
ZWxzZQogICAgICAgICByZWdpc3RyYXIoY3JlYXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9y
dHNUeXBlLCAwLCAwLCAwKTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKE1lZGlh
UGxheQogICAgICwgbV9vYmpjT2JzZXJ2ZXIoQWRvcHROUywgW1tXZWJDb3JlQVZGTW92aWVPYnNl
cnZlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazp0aGlzXSkKICAgICAsIG1fdmlkZW9GcmFtZUhh
c0RyYXduKGZhbHNlKQogICAgICwgbV9oYXZlQ2hlY2tlZFBsYXlhYmlsaXR5KGZhbHNlKQotI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDkwCiAgICAgLCBtX2xvYWRlckRlbGVnYXRlKEFkb3B0TlMsIFtbV2ViQ29yZUFW
RkxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKQogI2VuZGlmCiAj
aWYgSEFWRShBVkZPVU5EQVRJT05fVEVYVF9UUkFDS19TVVBQT1JUKQpAQCAtODE1LDcgKzgxNSw3
IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6c3VwcG9ydHNUeXBlKGNvbnN0CiAgICAgcmV0dXJuIFtBVlVSTEFzc2V0IGlzUGxh
eWFibGVFeHRlbmRlZE1JTUVUeXBlOnR5cGVTdHJpbmddID8gTWVkaWFQbGF5ZXI6OklzU3VwcG9y
dGVkIDogTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOzsKIH0KIAotI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQV9WMikKIHN0YXRpYyBib29sIGtleVN5c3RlbUlzU3VwcG9ydGVkKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKQogewogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShrZXlTeXN0ZW0s
ICJjb20uYXBwbGUubHNrZCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGtleVN5c3RlbSwgImNvbS5h
cHBsZS5sc2tkLjFfMCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAppbmRleCAzZWUxYTRj
Mjk4NmRjODkyNGIzN2Q2ZjEzZTFhZThjNDEyYjA0OGI5Li44YjExZjgzMjgwMDQyMjJlMDRkZWVh
NTNmOWZmYzkzNmQ5ZTVhYTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaApAQCAtNzYs
NyArNzYsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJp
dmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAgICAgc3RhdGljIHZvaWQgZ2V0
U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7CiAgICAgc3RhdGljIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwmKTsKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVE
SUFfVjIpCiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgZXh0ZW5kZWRTdXBw
b3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQubW0KaW5kZXggZWY3ZTM4MDc5ZTA2NTA0Njk3YzIzNjhlMzQ4OWZiODdiMTBj
OWM0ZS4uNTZlMzM0YTZhOGRjNzdmMTg3NTRmNjFhNThiNTcwOGFkYmI1Y2I2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRp
YVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtMTkwLDcgKzE5MCw3IEBAIFBhc3NPd25QdHI8TWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y3JlYXRl
KE1lZGlhUGxhCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpyZWdpc3Rlck1lZGlhRW5n
aW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFi
bGUoKSkKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAgICAgICAgIHJlZ2lzdHJhcihj
cmVhdGUsIGdldFN1cHBvcnRlZFR5cGVzLCBleHRlbmRlZFN1cHBvcnRzVHlwZSwgZ2V0U2l0ZXNJ
bk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk7CiAj
ZWxzZQogICAgICAgICByZWdpc3RyYXIoY3JlYXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9y
dHNUeXBlLCBnZXRTaXRlc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlLCBjbGVhck1lZGlh
Q2FjaGVGb3JTaXRlKTsKQEAgLTE1NTIsNyArMTU1Miw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcm
IHR5CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIH0KIAotI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQ6OmV4dGVuZGVkU3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBL
VVJMJiB1cmwpCiB7CiAgICAgLy8gUVRLaXQgZG9lcyBub3Qgc3VwcG9ydCBhbnkgZW5jcnl0cGVk
IG1lZGlhLCBzbyByZXR1cm4gSXNOb3RTdXBwb3J0ZWQgaWYgdGhlIGtleVN5c3RlbSBpcyBub24t
TlVMTDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhZDRkZDlkYjgxNTI1
MjQ2YzEyYjk5YWJkMWI3NzQ3YTViNTE4YzlkLi5mYjNlNDcxM2YzYTMxODk3N2E4N2Q3NGQ4ZmU2
ZWVhYWZhMzQyZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xMjYs
NiArMTI2LDExIEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisjaW5jbHVkZSAiQ0RNLmgiCisjaW5jbHVk
ZSAiTW9ja0NETS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJM
RShQQUdFX1BPUFVQKQpAQCAtMTkzMiw0ICsxOTM3LDExIEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRV
c2VzT3ZlcmxheVNjcm9sbGJhcnMoYm9vbCBlbmFibGVkKQogICAgIFdlYkNvcmU6OlNldHRpbmdz
OjpzZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnMoZW5hYmxlZCk7CiB9CiAKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBX1YyKQordm9pZCBJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RNKCkKK3sK
KyAgICBDRE06OnJlZ2lzdGVyQ0RNRmFjdG9yeShNb2NrQ0RNOjpjcmVhdGUsIE1vY2tDRE06OnN1
cHBvcnRzS2V5U3l0ZW0pOworfQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCmluZGV4IDY0NmIxNTU5ZjgzZjMyNDNmZmU2YjYyZTQxYWM0MjliYWNlODExNzEuLjVkZDZj
NGIwMmY4M2Y0NjZjMzFiMGM2ZWJmYTIyNjIzMTkxYWNhMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaApAQCAtMjgwLDYgKzI4MCwxMCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgZ2V0
Q3VycmVudEN1cnNvckluZm8oRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIHZvaWQgaW5pdGlhbGl6ZU1vY2tDRE0oKTsKKyNl
bmRpZgorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFscyhEb2N1bWVudCopOwogICAg
IERvY3VtZW50KiBjb250ZXh0RG9jdW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAppbmRleCBhNTBiNzljZTVjNmI0YWM3NzkzZDg4N2IyNTYyZjVmNTgzZGFmNDU1
Li4xNzkzNmM4MDI1OWVmNzEwM2Q4YWYyZDI3ZDI1NWZkZTEwNmFkNTAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0yNDgsNCArMjQ4LDYgQEAKICAgICBBcnJheUJ1ZmZl
ciBzZXJpYWxpemVPYmplY3QoaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIG9iaik7CiAKICAgICB2
b2lkIHNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyhpbiBib29sZWFuIGVuYWJsZWQpOworCisgICAg
W0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMl0gdm9pZCBpbml0aWFsaXplTW9ja0NETSgp
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMTgyM2Y4NzE5
NjY5YWE2ZTk2M2NmOGNiMGZjYTQ2MTlmYmY1MmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uY3BwCkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tDRE0uaCIKKworI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlICJDRE0uaCIKKyNpbmNsdWRlICJNZWRp
YUtleUVycm9yLmgiCisjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBNb2NrQ0RNU2Vzc2lvbiA6IHB1YmxpYyBDRE1TZXNzaW9uIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxNb2NrQ0RNU2Vzc2lvbj4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRQdHIobmV3IE1vY2tDRE1TZXNzaW9uKCkpOyB9CisgICAgdmlydHVhbCB+TW9j
a0NETVNlc3Npb24oKSB7IH0KKworICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQo
KSBPVkVSUklERSB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
VWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNo
b3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCByZWxlYXNlS2V5cygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBh
ZGRLZXkoVWludDhBcnJheSosIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVuc2ln
bmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpIE9WRVJSSURF
OworCitwcm90ZWN0ZWQ6CisgICAgTW9ja0NETVNlc3Npb24oKTsKKworICAgIFN0cmluZyBtX3Nl
c3Npb25JZDsKK307CisKK2Jvb2wgTW9ja0NETTo6c3VwcG9ydHNLZXlTeXRlbShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSkKK3sKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2Uoa2V5U3lzdGVt
LCAiY29tLndlYmNvcmUubW9jayIpOworfQorCitib29sIE1vY2tDRE06OnN1cHBvcnRzTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nh
c2UobWltZVR5cGUsICJ2aWRlby9tb2NrIik7Cit9CisKK1Bhc3NPd25QdHI8Q0RNU2Vzc2lvbj4g
TW9ja0NETTo6Y3JlYXRlU2Vzc2lvbigpCit7CisgICAgcmV0dXJuIE1vY2tDRE1TZXNzaW9uOjpj
cmVhdGUoKTsKK30KKworc3RhdGljIFVpbnQ4QXJyYXkqIGluaXREYXRhUHJlZml4KCkKK3sKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwcmVmaXhEYXRhW10gPSB7J20nLCAnbycsICdj
JywgJ2snfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxVaW50OEFycmF5PiwgcHJl
Zml4LCAoKSk7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAo
IWluaXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAgcHJl
Zml4ID0gVWludDhBcnJheTo6Y3JlYXRlKHByZWZpeERhdGEsIHNpemVvZihwcmVmaXhEYXRhKSAv
IHNpemVvZihwcmVmaXhEYXRhWzBdKSk7CisgICAgfQorICAgIHJldHVybiBwcmVmaXguZ2V0KCk7
Cit9CisKK3N0YXRpYyBVaW50OEFycmF5KiBrZXlQcmVmaXgoKQoreworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBjaGFyIHByZWZpeERhdGFbXSA9IHsnaycsICdlJywgJ3knfTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxXVEY6OlVpbnQ4QXJyYXk+LCBwcmVmaXgsICgpKTsKKyAg
ICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmICghaW5pdGlhbGl6ZWQp
IHsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgICBwcmVmaXggPSBVaW50OEFy
cmF5OjpjcmVhdGUocHJlZml4RGF0YSwgc2l6ZW9mKHByZWZpeERhdGEpIC8gc2l6ZW9mKHByZWZp
eERhdGFbMF0pKTsKKyAgICB9CisgICAgcmV0dXJuIHByZWZpeC5nZXQoKTsKK30KKworc3RhdGlj
IFVpbnQ4QXJyYXkqIGtleVJlcXVlc3QoKQoreworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj
aGFyIHJlcXVlc3REYXRhW10gPSB7J3InLCAnZScsICdxJywgJ3UnLCAnZScsICdzJywgJ3QnfTsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxXVEY6OlVpbnQ4QXJyYXk+LCByZXF1ZXN0
LCAoKSk7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoIWlu
aXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAgcmVxdWVz
dCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShyZXF1ZXN0RGF0YSwgc2l6ZW9mKHJlcXVlc3REYXRhKSAv
IHNpemVvZihyZXF1ZXN0RGF0YVswXSkpOworICAgIH0KKyAgICByZXR1cm4gcmVxdWVzdC5nZXQo
KTsKK30KKworc3RhdGljIFN0cmluZyBnZW5lcmF0ZVNlc3Npb25JZCgpCit7CisgICAgc3RhdGlj
IGludCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Nlc3Npb25JZCA9IDA7CisgICAgcmV0dXJuIFN0
cmluZzo6bnVtYmVyKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nU2Vzc2lvbklkKyspOworfQorCitN
b2NrQ0RNU2Vzc2lvbjo6TW9ja0NETVNlc3Npb24oKQorICAgIDogbV9zZXNzaW9uSWQoZ2VuZXJh
dGVTZXNzaW9uSWQoKSkKK3sKK30KKworUGFzc1JlZlB0cjxVaW50OEFycmF5PiBNb2NrQ0RNU2Vz
c2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYsIFVpbnQ4QXJyYXkqIGluaXRE
YXRhLCBTdHJpbmcmLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNpZ25lZCBsb25nJikK
K3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5pdERhdGFQcmVmaXgoKS0+bGVuZ3Ro
KCk7ICsraSkgeworICAgICAgICBpZiAoIWluaXREYXRhIHx8IGkgPj0gaW5pdERhdGEtPmxlbmd0
aCgpIHx8IGluaXREYXRhLT5pdGVtKGkpICE9IGluaXREYXRhUHJlZml4KCktPml0ZW0oaSkpIHsK
KyAgICAgICAgICAgIGVycm9yQ29kZSA9IE1lZGlhS2V5RXJyb3I6Ok1FRElBX0tFWUVSUl9VTktO
T1dOOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IGtleVJlcXVlc3QoKTsKK30KKwordm9pZCBNb2NrQ0RNU2Vzc2lvbjo6cmVsZWFzZUtleXMoKQor
eworICAgIC8vIG5vLW9wCit9CisKK2Jvb2wgTW9ja0NETVNlc3Npb246OmFkZEtleShVaW50OEFy
cmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUs
IHVuc2lnbmVkIGxvbmcmKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBrZXlQcmVm
aXgoKS0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAoaSA+PSBrZXktPmxlbmd0aCgpIHx8
IGtleS0+aXRlbShpKSAhPSBrZXlQcmVmaXgoKS0+aXRlbShpKSkgeworICAgICAgICAgICAgZXJy
b3JDb2RlID0gTWVkaWFLZXlFcnJvcjo6TUVESUFfS0VZRVJSX0NMSUVOVDsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM1YjUwYTlkNmFmMmFiZmM2Yjg1YjExM2Y0ODM5MDkwYjYx
ZDk4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5o
CkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1vY2tDRE1faAorI2RlZmlu
ZSBNb2NrQ0RNX2gKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRl
ICJDRE1Qcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBDRE07CisKK2NsYXNzIE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJp
dmF0ZUludGVyZmFjZSB7CitwdWJsaWM6CisgICAgLy8gQ0RNRmFjdG9yeSBzdXBwb3J0OgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPENETVByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShDRE0qIGNkbSkg
eyByZXR1cm4gYWRvcHRQdHIobmV3IE1vY2tDRE0oY2RtKSk7IH0KKyAgICBzdGF0aWMgYm9vbCBz
dXBwb3J0c0tleVN5dGVtKGNvbnN0IFN0cmluZyYpOworCisgICAgdmlydHVhbCB+TW9ja0NETSgp
IHsgfQorCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPENETVNlc3Npb24+IGNy
ZWF0ZVNlc3Npb24oKSBPVkVSUklERTsKKworcHJvdGVjdGVkOgorICAgIE1vY2tDRE0oQ0RNKiBj
ZG0pIDogbV9jZG0oY2RtKSB7IH0KKyAgICBDRE0qIG1fY2RtOworfTsKKworfQorCisjZW5kaWYg
Ly8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2VuZGlmIC8vIE1vY2tDRE1faApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDI5Y2QyNTkwZmJkYmJkMGQ5NzM1N2MxYmNjYTk5Mjk1ZTc0ZjcwMjUuLjc2NWRiMDk4YTRkMDMz
NGQyZDE1NWEwY2I3M2I5NGQ2ZjBiMzJjMTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0w
OS0xOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBCcmluZyBX
ZWJLaXQgdXAgdG8gc3BlZWQgd2l0aCBsYXRlc3QgRW5jcnlwdGVkIE1lZGlhIHNwZWMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzAzNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5ldyB0ZXN0
cyBmb3IgdGhlIHVwZGF0ZWQgRW5jcnlwdGVkIE1lZGlhIEV4dGVuc2lvbnMgc3BlYy4KKworICAg
ICAgICAqIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItZXZlbnRzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5
cHRlZC1tZWRpYS12Mi1ldmVudHMuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvZW5jcnlw
dGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXgtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRh
eC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9DaHJvbWl1bS9UZXN0RXhwZWN0YXRp
b25zOiBTa2lwIHRoZSBuZXcgbWVkaWEvZW5jcnlwdGVkLW1lZGlhLyB2MiB0ZXN0cy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS1j
YW4tcGxheS10eXBlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTMtMDItMDcgIEphbWVzIENy
YWlnICA8amNyYWlnQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbGF5b3V0IHRlc3QgdmVyaWZ5
aW5nIHJvbGUsIHN1YnJvbGUsIGFuZCByb2xlIGRlc2NyaXB0aW9uIGZvciBhbGwgSFRNTCBlbGVt
ZW50cyBhbmQgQVJJQSByb2xlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlw
dGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1ldmVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1ldmVudHMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiMjk2M2EwNjQzMDRkNjg4NjIwMmU5YjgyNjk5MjVmZGRi
ZDU1MzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVk
aWEvZW5jcnlwdGVkLW1lZGlhLXYyLWV2ZW50cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBA
QAorVGhpcyB0ZXN0cyB0aGUgZXZlbnRzIGNyZWF0ZWQgYnkgTWVkaWFLZXlzLgorCitSVU4obWVk
aWFLZXlzID0gbmV3IE1lZGlhS2V5cygiY29tLndlYmNvcmUubW9jayIpKQorUlVOKG1lZGlhS2V5
U2Vzc2lvbiA9IG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ2aWRlby9tb2NrIiwgaW5pdERhdGEp
KQorRVZFTlQod2Via2l0a2V5bWVzc2FnZSkKK1JVTihtZWRpYUtleVNlc3Npb24uYWRkS2V5KGlu
dmFsaWRLZXkpKQorRVZFTlQod2Via2l0a2V5ZXJyb3IpCitSVU4obWVkaWFLZXlTZXNzaW9uLmFk
ZEtleSh2YWxpZEtleSkpCitFVkVOVCh3ZWJraXRrZXlhZGRlZCkKK0VORCBPRiBURVNUCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVk
aWEtdjItZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5j
cnlwdGVkLW1lZGlhLXYyLWV2ZW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3NzYwOGY3YjUzNjFkYjkz
NmQ2N2VhNTQyMjM3Y2VjMWI1NjFlN2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9t
ZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLWV2ZW50cy5odG1sCkBAIC0w
LDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDx0aXRsZT5NZWRpYUtleXM8L3RpdGxlPgorICAgICAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10
ZXN0LmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZnVuY3Rpb24g
c3RyaW5nVG9VaW50OEFycmF5KHN0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2
YXIgYXJyPVtdOworICAgICAgICAgICAgICAgIGZvcih2YXIgaT0wLGo9c3RyLmxlbmd0aDtpPGo7
KytpKXsKKyAgICAgICAgICAgICAgICAgIGFycltpXT1zdHIuY2hhckNvZGVBdChpKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGFycik7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBtZWRpYUtleXM7CisgICAgICAgICAg
ICB2YXIgbWVkaWFLZXlTZXNzaW9uOworICAgICAgICAgICAgdmFyIGluaXREYXRhID0gc3RyaW5n
VG9VaW50OEFycmF5KCdtb2NrJyk7CisgICAgICAgICAgICB2YXIgaW52YWxpZEtleSA9IHN0cmlu
Z1RvVWludDhBcnJheSgnaW52YWxpZCcpOworICAgICAgICAgICAgdmFyIHZhbGlkS2V5ID0gc3Ry
aW5nVG9VaW50OEFycmF5KCdrZXknKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgp
IAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIE1vY2tD
RE0uIEl0IHN1cHBvcnRzIHRoZSBrZXkgc3lzdGVtICdjb20uYXBwbGUubW9jaycsIHRoZSAKKyAg
ICAgICAgICAgICAgICAvLyBtaW1lIHR5cGUgJ3ZpZGVvL21vY2snLiBJdCByZXF1aXJlcyBpbml0
IGRhdGEgdG8gYmVnaW4gd2l0aCAnbW9jaycsIGFuZAorICAgICAgICAgICAgICAgIC8vIGtleXMg
dG8gYmVnaW4gd2l0aCAna2V5Jy4KKyAgICAgICAgICAgICAgICBpZiAoaW50ZXJuYWxzKQorICAg
ICAgICAgICAgICAgICAgICBpbnRlcm5hbHMuaW5pdGlhbGl6ZU1vY2tDRE0oKTsKKworICAgICAg
ICAgICAgICAgIHJ1bignbWVkaWFLZXlzID0gbmV3IE1lZGlhS2V5cygiY29tLndlYmNvcmUubW9j
ayIpJyk7CisgICAgICAgICAgICAgICAgcnVuKCdtZWRpYUtleVNlc3Npb24gPSBtZWRpYUtleXMu
Y3JlYXRlU2Vzc2lvbigidmlkZW8vbW9jayIsIGluaXREYXRhKScpOworICAgICAgICAgICAgICAg
IHdhaXRGb3JFdmVudCgnd2Via2l0a2V5bWVzc2FnZScsIGtleU1lc3NhZ2UsIGZhbHNlLCBmYWxz
ZSwgbWVkaWFLZXlTZXNzaW9uKTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3dlYmtp
dGtleWVycm9yJywga2V5RXJyb3IsIGZhbHNlLCBmYWxzZSwgbWVkaWFLZXlTZXNzaW9uKTsKKyAg
ICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3dlYmtpdGtleWFkZGVkJywgbnVsbCwgdHJ1ZSwg
ZmFsc2UsIG1lZGlhS2V5U2Vzc2lvbik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1
bmN0aW9uIGtleU1lc3NhZ2UoZXZlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cnVuKCdtZWRpYUtleVNlc3Npb24uYWRkS2V5KGludmFsaWRLZXkpJyk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGtleUVycm9yKGV2ZW50KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJ1bignbWVkaWFLZXlTZXNzaW9uLmFkZEtleSh2YWxpZEtleSknKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICAgICAgPHA+VGhpcyB0ZXN0cyB0aGUgZXZlbnRzIGNy
ZWF0ZWQgYnkgTWVkaWFLZXlzLjwvcD4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlw
dGVkLW1lZGlhLXYyLXN5bnRheC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNy
eXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRheC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjMwNTExMTk2ODU3NjEyNmU3YmUwODljYzU2NzRiYTNkZWRhNzI0ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVk
aWEtdjItc3ludGF4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI2IEBACitUaGlzIHRlc3RzIHRo
ZSBiYXNpYyBBUEkgb2YgTWVkaWFLZXlzIGFuZCBNZWRpYUtleVNlc3Npb24uCisKK1Rlc3QgTWVk
aWFLZXlzLgorRVhQRUNURUQgKHR5cGVvZiB3aW5kb3cuTWVkaWFLZXlzID09ICdvYmplY3QnKSBP
SworVEVTVChuZXcgTWVkaWFLZXlzKCIiKSkgVEhST1dTKERPTUV4Y2VwdGlvbi5JTlZBTElEX0FD
Q0VTU19FUlIpIE9LCitURVNUKG5ldyBNZWRpYUtleXMoInVuc3VwcG9ydGVkIikpIFRIUk9XUyhE
T01FeGNlcHRpb24uTk9UX1NVUFBPUlRFRF9FUlIpIE9LCitSVU4obWVkaWFLZXlzID0gbmV3IE1l
ZGlhS2V5cygiY29tLndlYmNvcmUubW9jayIpKQorRVhQRUNURUQgKG1lZGlhS2V5cy5rZXlTeXN0
ZW0gPT0gJ2NvbS53ZWJjb3JlLm1vY2snKSBPSworRVhQRUNURUQgKHR5cGVvZiBtZWRpYUtleXMu
Y3JlYXRlU2Vzc2lvbiA9PSAnZnVuY3Rpb24nKSBPSworVEVTVChtZWRpYUtleXMuY3JlYXRlU2Vz
c2lvbigiIiwgbmV3IFVpbnQ4QXJyYXkoMSkpKSBUSFJPV1MoRE9NRXhjZXB0aW9uLklOVkFMSURf
QUNDRVNTX0VSUikgT0sKK1RFU1QobWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oInVuc3VwcG9ydGVk
L3R5cGUiKSkgVEhST1dTKERPTUV4Y2VwdGlvbi5OT1RfU1VQUE9SVEVEX0VSUikgT0sKKworVGVz
dCBNZWRpYUtleVNlc3Npb24uCitSVU4obWVkaWFLZXlTZXNzaW9uID0gbWVkaWFLZXlzLmNyZWF0
ZVNlc3Npb24oInZpZGVvL21vY2siLCBpbml0RGF0YSkpCitFWFBFQ1RFRCAodHlwZW9mIG1lZGlh
S2V5U2Vzc2lvbiA9PSAnb2JqZWN0JykgT0sKK0VYUEVDVEVEICh0eXBlb2YgbWVkaWFLZXlTZXNz
aW9uLmFkZEV2ZW50TGlzdGVuZXIgPT0gJ2Z1bmN0aW9uJykgT0sKK0VYUEVDVEVEICh0eXBlb2Yg
bWVkaWFLZXlTZXNzaW9uLmFkZEtleSA9PSAnZnVuY3Rpb24nKSBPSworRVhQRUNURUQgKG1lZGlh
S2V5U2Vzc2lvbi5lcnJvciA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAobWVkaWFLZXlTZXNzaW9u
LmtleVN5c3RlbSA9PSAnY29tLndlYmNvcmUubW9jaycpIE9LCitFWFBFQ1RFRCAobWVkaWFLZXlT
ZXNzaW9uLnNlc3Npb25JZCAhPSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAobWVkaWFLZXlTZXNzaW9u
Lm9ud2Via2l0a2V5YWRkZWQgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKG1lZGlhS2V5U2Vzc2lv
bi5vbndlYmtpdGtleWVycm9yID09ICdudWxsJykgT0sKK0VYUEVDVEVEIChtZWRpYUtleVNlc3Np
b24ub253ZWJraXRrZXltZXNzYWdlID09ICdudWxsJykgT0sKK1RFU1QobWVkaWFLZXlTZXNzaW9u
LmFkZEtleShudWxsKSkgVEhST1dTKERPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIpIE9L
CitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQt
bWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRheC5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXguaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODIwYWM5Yjc2ZDZkYmUxZmRjYmQxNzk1MmNkMzE0NjM5YmRkN2MxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12
Mi1zeW50YXguaHRtbApAQCAtMCwwICsxLDU4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+TWVkaWFLZXlzPC90aXRsZT4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Li4vdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHN0cmluZ1RvVWludDhBcnJheShzdHIpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgdmFyIGFycj1bXTsKKyAgICAgICAgICAgICAgICBmb3IodmFyIGk9
MCxqPXN0ci5sZW5ndGg7aTxqOysraSl7CisgICAgICAgICAgICAgICAgICBhcnJbaV09c3RyLmNo
YXJDb2RlQXQoaSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgVWludDhBcnJheShhcnIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgbWVk
aWFLZXlzOworICAgICAgICAgICAgdmFyIG1lZGlhS2V5U2Vzc2lvbjsKKyAgICAgICAgICAgIHZh
ciBpbml0RGF0YSA9IHN0cmluZ1RvVWludDhBcnJheSgnbW9jaycpOworCisgICAgICAgICAgICBm
dW5jdGlvbiBydW5UZXN0KCkgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gSW5p
dGlhbGl6ZSB0aGUgTW9ja0NETS4gSXQgc3VwcG9ydHMgdGhlIGtleSBzeXN0ZW0gJ2NvbS5hcHBs
ZS5tb2NrJywgdGhlIAorICAgICAgICAgICAgICAgIC8vIG1pbWUgdHlwZSAndmlkZW8vbW9jaycu
IEl0IHJlcXVpcmVzIGluaXQgZGF0YSB0byBiZWdpbiB3aXRoICdtb2NrJywgYW5kCisgICAgICAg
ICAgICAgICAgLy8ga2V5cyB0byBiZWdpbiB3aXRoICdrZXknLgorICAgICAgICAgICAgICAgIGlm
IChpbnRlcm5hbHMpCisgICAgICAgICAgICAgICAgICAgIGludGVybmFscy5pbml0aWFsaXplTW9j
a0NETSgpOworCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0IE1lZGlhS2V5cy4i
KTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3R5cGVvZiB3aW5kb3cuTWVkaWFLZXlz
JywgJ29iamVjdCcpOworICAgICAgICAgICAgICAgIHRlc3RFeGNlcHRpb24oJ25ldyBNZWRpYUtl
eXMoIiIpJywgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIiKTsKKyAgICAgICAgICAg
ICAgICB0ZXN0RXhjZXB0aW9uKCduZXcgTWVkaWFLZXlzKCJ1bnN1cHBvcnRlZCIpJywgIkRPTUV4
Y2VwdGlvbi5OT1RfU1VQUE9SVEVEX0VSUiIpOworICAgICAgICAgICAgICAgIHJ1bignbWVkaWFL
ZXlzID0gbmV3IE1lZGlhS2V5cygiY29tLndlYmNvcmUubW9jayIpJyk7CisgICAgICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleXMua2V5U3lzdGVtJywgJ2NvbS53ZWJjb3JlLm1vY2sn
KTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3R5cGVvZiBtZWRpYUtleXMuY3JlYXRl
U2Vzc2lvbicsICdmdW5jdGlvbicpOworICAgICAgICAgICAgICAgIHRlc3RFeGNlcHRpb24oJ21l
ZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCIiLCBuZXcgVWludDhBcnJheSgxKSknLCAiRE9NRXhjZXB0
aW9uLklOVkFMSURfQUNDRVNTX0VSUiIpOworICAgICAgICAgICAgICAgIHRlc3RFeGNlcHRpb24o
J21lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ1bnN1cHBvcnRlZC90eXBlIiknLCAiRE9NRXhjZXB0
aW9uLk5PVF9TVVBQT1JURURfRVJSIik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIi
KTsKKworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCBNZWRpYUtleVNlc3Npb24u
Iik7CisgICAgICAgICAgICAgICAgcnVuKCdtZWRpYUtleVNlc3Npb24gPSBtZWRpYUtleXMuY3Jl
YXRlU2Vzc2lvbigidmlkZW8vbW9jayIsIGluaXREYXRhKScpOworICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgndHlwZW9mIG1lZGlhS2V5U2Vzc2lvbicsICdvYmplY3QnKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3R5cGVvZiBtZWRpYUtleVNlc3Npb24uYWRkRXZlbnRMaXN0
ZW5lcicsICdmdW5jdGlvbicpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndHlwZW9m
IG1lZGlhS2V5U2Vzc2lvbi5hZGRLZXknLCAnZnVuY3Rpb24nKTsKKyAgICAgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoJ21lZGlhS2V5U2Vzc2lvbi5lcnJvcicsIG51bGwpOworICAgICAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgnbWVkaWFLZXlTZXNzaW9uLmtleVN5c3RlbScsICdjb20ud2ViY29y
ZS5tb2NrJyk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleVNlc3Npb24u
c2Vzc2lvbklkJywgbnVsbCwgJyE9Jyk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdt
ZWRpYUtleVNlc3Npb24ub253ZWJraXRrZXlhZGRlZCcsIG51bGwpOworICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgnbWVkaWFLZXlTZXNzaW9uLm9ud2Via2l0a2V5ZXJyb3InLCBudWxsKTsK
KyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ21lZGlhS2V5U2Vzc2lvbi5vbndlYmtpdGtl
eW1lc3NhZ2UnLCBudWxsKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhjZXB0aW9uKCdtZWRpYUtl
eVNlc3Npb24uYWRkS2V5KG51bGwpJywgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIi
KTsKKyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAg
ICAgIDxwPlRoaXMgdGVzdHMgdGhlIGJhc2ljIEFQSSBvZiBNZWRpYUtleXMgYW5kIE1lZGlhS2V5
U2Vzc2lvbi48L3A+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDdmNGQwMDkxMzQ2N2U4YTE2NzdhNjAzMDAwZmJlYWI3NWI0NTBkNGYuLjM0MDkyYTNh
YTQ1YjMxYmYyZjBmMmYwYzc4YjIzNzE3M2YxMzhjMGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDM1MSwzICs0MzUxLDYgQEAgd2Vi
a2l0Lm9yZy9iLzEwODg3NiBbIExpbnV4IF0gbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1jdWVjaGFu
Z2UuaHRtbCBbIFNsb3cgXQogd2Via2l0Lm9yZy9iLzEwODg3NiBbIExpbnV4IF0gbWVkaWEvdHJh
Y2svdHJhY2stY3Vlcy1lbnRlci1leGl0Lmh0bWwgWyBTbG93IF0KIAogd2Via2l0Lm9yZy9iLzEw
ODkxMiBpbnNwZWN0b3ItcHJvdG9jb2wvaGVhcC1wcm9maWxlci9oZWFwLXNuYXBzaG90LXdpdGgt
ZGV0YWNoZWQtZG9tLXRyZWUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCisKK3dlYmtpdC5vcmcvYi85
NzAzNyBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLWV2ZW50cy5odG1s
IFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvOTcwMzcgbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2Vu
Y3J5cHRlZC1tZWRpYS12Mi1zeW50YXguaHRtbCBbIEZhaWx1cmUgXQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9tZWRpYS9l
bmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLWNhbi1wbGF5LXR5cGUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0
ZWQtbWVkaWEtY2FuLXBsYXktdHlwZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmFjYzc3YTQ2
NTg5MDZiMjE1ZGNlZTYzZDA2M2E4Yjc3OGM0YTMzNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlh
LWNhbi1wbGF5LXR5cGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNzUgQEAKK1Rlc3QgRW5jcnlw
dGVkIE1lZGlhIGV4dGVuc2lvbiBvZiBIVE1MTWVkaWFFbGVtZW50IGNhblBsYXlUeXBlKCkgbWV0
aG9kLgorCitUaGUgdGVzdCBpcyBkZXNpZ25lZCB0byBwYXNzIHdpdGggYW55IGltcGxlbWVudGF0
aW9uIHJlZ2FyZGxlc3Mgb2Ygc3VwcG9ydGVkIG1lZGlhIHR5cGVzIGFuZCByZWxpZXMgb24gdGhl
IGV4cGVjdGVkIGxvZyB0byBkZXRlY3QgdGhlIGV4cGVjdGVkIHJlc3VsdHMgZm9yIHNvbWUgdHlw
ZXMuIFRvIGdldCBzdWZmaWNpZW50IGNvdmVyYWdlLCBpdCBpcyBpbXBvcnRhbnQgdGhhdCBhbiBp
bXBsZW1lbnRhdGlvbiBzdXBwb3J0IGNsZWFya2V5IGVuY3J5cHRpb24gb2YgYXQgbGVhc3Qgb25l
IG9mIHRoZSB0eXBlcyBiZWxvdy4KKworQWx3YXlzIHJldHVybiB0aGUgZW1wdHkgc3RyaW5nIGZv
ciBubyB0eXBlLgorRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCkgPT0gJycpIE9LCisKK0Fs
d2F5cyByZXR1cm4gdGhlIGVtcHR5IHN0cmluZyBmb3IgYW4gZW1wdHkgdHlwZS4KK0VYUEVDVEVE
ICh2aWRlby5jYW5QbGF5VHlwZSgnJykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxh
eVR5cGUoJycsICcnKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnJywg
bnVsbCkgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJycsIHVuZGVmaW5l
ZCkgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJycsICd3ZWJraXQtb3Jn
LnczLmNsZWFya2V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJycs
ICdXZUJrSXQtT3JHLlczLkNsRWFSa0V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2Fu
UGxheVR5cGUoJycsICdjb20uZXhhbXBsZS5pbnZhbGlkJykgPT0gJycpIE9LCisKK0Fsd2F5cyBy
ZXR1cm4gdGhlIGVtcHR5IHN0cmluZyBmb3Igd2hlbiBubyBjb250YWluZXIgaXMgc3BlY2lmaWVk
LgorRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby8nKSA9PSAnJykgT0sKK0VYUEVD
VEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vJywgJycpID09ICcnKSBPSworRVhQRUNURUQg
KHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby8nLCBudWxsKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2
aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vJywgdW5kZWZpbmVkKSA9PSAnJykgT0sKK0VYUEVDVEVE
ICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vJywgJ3dlYmtpdC1vcmcudzMuY2xlYXJrZXknKSA9
PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vJywgJ1dlQmtJdC1P
ckcuVzMuQ2xFYVJrRXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgn
dmlkZW8vJywgJ2NvbS5leGFtcGxlLmludmFsaWQnKSA9PSAnJykgT0sKKworQWx3YXlzIHJldHVy
biB0aGUgZW1wdHkgc3RyaW5nIGZvciBhbiB1bnN1cHBvcnRlZCBjb250YWluZXIuCitFWFBFQ1RF
RCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL2JsYWhibGFoJykgPT0gJycpIE9LCitFWFBFQ1RF
RCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL2JsYWhibGFoJywgJycpID09ICcnKSBPSworRVhQ
RUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9ibGFoYmxhaCcsIG51bGwpID09ICcnKSBP
SworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9ibGFoYmxhaCcsIHVuZGVmaW5l
ZCkgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL2JsYWhibGFo
JywgJ3dlYmtpdC1vcmcudzMuY2xlYXJrZXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5j
YW5QbGF5VHlwZSgndmlkZW8vYmxhaGJsYWgnLCAnV2VCa0l0LU9yRy5XMy5DbEVhUmtFeScpID09
ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9ibGFoYmxhaCcsICdj
b20uZXhhbXBsZS5pbnZhbGlkJykgPT0gJycpIE9LCisKK0VtcHR5IGtleSBzeXN0ZW0gcGFyYW1l
dGVycyBzaG91bGQgbm90IGFmZmVjdCB0aGUgcmVzdWx0IG9mIHZpZGVvL21wNCB0eXBlcy4KK1Jl
c3VsdCBvZiB2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vbXA0OyBDb2RlY3M9ImF2YzEuNEQ0MDBD
IicpOiAncHJvYmFibHknCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL21wNDsg
Q29kZWNzPSJhdmMxLjRENDAwQyInLCAnJykgPT0gJ3Byb2JhYmx5JykgT0sKK0VYUEVDVEVEICh2
aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vbXA0OyBDb2RlY3M9ImF2YzEuNEQ0MDBDIicsIG51bGwp
ID09ICdwcm9iYWJseScpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL21w
NDsgQ29kZWNzPSJhdmMxLjRENDAwQyInLCB1bmRlZmluZWQpID09ICdwcm9iYWJseScpIE9LCitU
aGVyZSBhcmUgY3VycmVudGx5IG5vIGltcGxlbWVudGF0aW9ucyBzdXBwb3J0aW5nIGVuY3J5cHRp
b24gb2YgdmlkZW8vbXA0LgorRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9tcDQ7
IENvZGVjcz0iYXZjMS40RDQwMEMiJywgJ3dlYmtpdC1vcmcudzMuY2xlYXJrZXknKSA9PSAnJykg
T0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vbXA0OyBDb2RlY3M9ImF2YzEu
NEQ0MDBDIicsICdXZUJrSXQtT3JHLlczLkNsRWFSa0V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAo
dmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL21wNDsgQ29kZWNzPSJhdmMxLjRENDAwQyInLCAnY29t
LmV4YW1wbGUuaW52YWxpZCcpID09ICcnKSBPSworCitFbXB0eSBrZXkgc3lzdGVtIHBhcmFtZXRl
cnMgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIHJlc3VsdCBvZiBhdWRpby9tcGVnIHR5cGVzLgorUmVz
dWx0IG9mIHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby9tcGVnJyk6ICdtYXliZScKK0VYUEVDVEVE
ICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vbXBlZycsICcnKSA9PSAnbWF5YmUnKSBPSworRVhQ
RUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby9tcGVnJywgbnVsbCkgPT0gJ21heWJlJykg
T0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vbXBlZycsIHVuZGVmaW5lZCkg
PT0gJ21heWJlJykgT0sKK1RoZXJlIGFyZSBjdXJyZW50bHkgbm8gaW1wbGVtZW50YXRpb25zIHN1
cHBvcnRpbmcgZW5jcnlwdGlvbiBvZiBhdWRpby9tcGVnLgorRVhQRUNURUQgKHZpZGVvLmNhblBs
YXlUeXBlKCdhdWRpby9tcGVnJywgJ3dlYmtpdC1vcmcudzMuY2xlYXJrZXknKSA9PSAnJykgT0sK
K0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vbXBlZycsICdXZUJrSXQtT3JHLlcz
LkNsRWFSa0V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlv
L21wZWcnLCAnY29tLmV4YW1wbGUuaW52YWxpZCcpID09ICcnKSBPSworCitFbXB0eSBrZXkgc3lz
dGVtIHBhcmFtZXRlcnMgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIHJlc3VsdCBvZiBhdWRpby93YXYg
dHlwZXMuCitSZXN1bHQgb2YgdmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL3dhdicpOiAnbWF5YmUn
CitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL3dhdicsICcnKSA9PSAnbWF5YmUn
KSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby93YXYnLCBudWxsKSA9PSAn
bWF5YmUnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby93YXYnLCB1bmRl
ZmluZWQpID09ICdtYXliZScpIE9LCitUaGVyZSBhcmUgY3VycmVudGx5IG5vIGltcGxlbWVudGF0
aW9ucyBzdXBwb3J0aW5nIGVuY3J5cHRpb24gb2YgYXVkaW8vd2F2LgorRVhQRUNURUQgKHZpZGVv
LmNhblBsYXlUeXBlKCdhdWRpby93YXYnLCAnd2Via2l0LW9yZy53My5jbGVhcmtleScpID09ICcn
KSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby93YXYnLCAnV2VCa0l0LU9y
Ry5XMy5DbEVhUmtFeScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdh
dWRpby93YXYnLCAnY29tLmV4YW1wbGUuaW52YWxpZCcpID09ICcnKSBPSworCitFbXB0eSBrZXkg
c3lzdGVtIHBhcmFtZXRlcnMgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIHJlc3VsdCBvZiB2aWRlby93
ZWJtIHR5cGVzLgorUmVzdWx0IG9mIHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby93ZWJtJyk6ICcn
CitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL3dlYm0nLCAnJykgPT0gJycpIE9L
CitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL3dlYm0nLCBudWxsKSA9PSAnJykg
T0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vd2VibScsIHVuZGVmaW5lZCkg
PT0gJycpIE9LCitBbGwgaW1wbGVtZW50YXRpb25zIHRoYXQgc3VwcG9ydCBXZWJNIGFuZCBFbmNy
eXB0ZWQgTWVkaWEgc3VwcG9ydCBlbmNyeXB0ZWQgV2ViTS4KK0VYUEVDVEVEICh2aWRlby5jYW5Q
bGF5VHlwZSgndmlkZW8vd2VibScsICd3ZWJraXQtb3JnLnczLmNsZWFya2V5JykgPT0gJycpIE9L
CitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL3dlYm0nLCAnV2VCa0l0LU9yRy5X
My5DbEVhUmtFeScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRl
by93ZWJtJywgJ2NvbS5leGFtcGxlLmludmFsaWQnKSA9PSAnJykgT0sKK0VORCBPRiBURVNUCisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187344</attachid>
            <date>2013-02-08 11:47:17 -0800</date>
            <delta_ts>2013-02-08 12:53:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97037-20130208114351.patch</filename>
            <type>text/plain</type>
            <size>150475</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NWFkOWYzMWMzMjRjYWUyNjgxNjJiNjMwOTMyNzg5M2FjNjQyNzgxLi40OGIyYTU2NTgxNjliNmE0
MmU5Mzc0MWQ4MjM2NGE3YzcyNWU0NzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOS0xOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KworICAgICAgICBCcmluZyBXZWJLaXQgdXAgdG8gc3BlZWQgd2l0aCBsYXRlc3QgRW5jcnlwdGVk
IE1lZGlhIHNwZWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NzAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIERlZmluZSB0aGUgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiBzZXR0aW5nLgorCisgICAg
ICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTMtMDIt
MDggIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
VEtdIEFkZCBhbiBleHBlcmltZW50YWwgZ3lwIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc1MjE0MDI2OTIyMTJlYTFi
MzVmNjdjZjNiNWU3ZWE1ZDlmNjUwNWUuLmZlMWJjYzIxMWZiNzQzZjJhMDg3ODQyNjc4OWZhMzU1
NmJkZmFjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDktMTkgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQnJpbmcgV2ViS2l0IHVwIHRvIHNwZWVkIHdp
dGggbGF0ZXN0IEVuY3J5cHRlZCBNZWRpYSBzcGVjLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBEZWZpbmUgdGhlIEVOQUJMRV9FTkNSWVBURURfTUVESUFf
VjIgc2V0dGluZy4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDEzLTAyLTA4ICBB
ZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIFdlYWtQdHJzIHRv
IGNvbW11bmljYXRlIGJldHdlZW4gdGhlIEhUTUxEb2N1bWVudFBhcnNlciBhbmQgdGhlIEJhY2tn
cm91bmRIVE1MUGFyc2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODQyOTgzNzgwZGVhOWY2YWFiZTdiZjgzNGRm
YjE5MGM4NzVmODA2Zi4uNDJhMTIyZmJlYTAwYmRiOGUzNjc0M2IyYjVmMGJmNjQ4NzMzYmNjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3OCBAQAorMjAxMi0wOS0xOSAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBCcmluZyBXZWJLaXQgdXAgdG8gc3BlZWQgd2l0
aCBsYXRlc3QgRW5jcnlwdGVkIE1lZGlhIHNwZWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uIG9mIHRoZSBFbmNy
eXB0ZWQgTWVkaWEgRXh0ZW5zaW9ucyBzcGVjIGJyZWFrcyBmdW5jdGlvbmFsaXR5IG91dCBvZiB0
aGUKKyAgICAgICAgSFRNTE1lZGlhRWxlbWVudCBhbmQgaW50byBuZXcgTWVkaWFLZXlzIGFuZCBN
ZWRpYUtleVNlc3Npb24gY2xhc3Nlcy4gU2luY2UgdGhlIENETSBmdW5jdGlvbmFsaXR5CisgICAg
ICAgIGhhcyBiZWVuIHB1bGxlZCBvdXQgb2YgdGhlIG1lZGlhIGVsZW1lbnQsIHdlIGNyZWF0ZSBh
IHByb3h5IENETSBjbGFzcyBhbmQgZmFjdG9yeSBzeXN0ZW0gZm9yCisgICAgICAgIGNyZWF0aW5n
IHNwZWNpZmljIENETSBrZXkgc3lzdGVtIGltcGxlbWVudGF0aW9ucy4gVGhlIHNwZWMgYWxzbyBi
cmVha3Mgb3V0IE1lZGlhS2V5RXZlbnQKKyAgICAgICAgaW50byBkaXN0aW5jdCBldmVudCBjbGFz
c2VzLCBNZWRpYUtleU5lZWRlZEV2ZW50IGFuZCBNZWRpYUtleU1lc3NhZ2VFdmVudCwgZm9yIG5l
ZWRrZXkgYW5kCisgICAgICAgIGtleW1lc3NhZ2UgZXZlbnRzLCByZXNwZWN0aXZlbHkuCisKKyAg
ICAgICAgVGVzdHM6IG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItZXZl
bnRzLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQt
bWVkaWEtdjItc3ludGF4Lmh0bWwKKworICAgICAgICBDRE0gaXMgYSBwcm94eSBjbGFzcyAoYSBs
YSBNZWRpYVBsYXllcikgZm9yIGEgc3BlY2lmaWMgQ0RNUHJpdmF0ZUludGVyZmFjZSBpbXBsZW1l
bnRhdGlvbi4gQSBDRE0KKyAgICAgICAgaW1wbGVtZW50YXRpb24gaXMgcmVnaXN0ZXJlZCB3aXRo
IHRoZSBDRE1GYWN0b3J5IGFuZCB3aWxsIGJlIGNyZWF0ZWQgaWYgdGhhdCBpbXBsZW1lbnRhdGlv
biBzdXBwb3J0cworICAgICAgICB0aGUga2V5IHN5c3RlbSBwYXNzZWQgaW50byB0aGUgTWVkaWFL
ZXlzIGNvbnN0cnVjdG9yLiBDRE1TZXNzaW9uIGlzIGEgcHVyZS12aXJ0dWFsIGludGVyZmFjZSBl
eHBvc2VkCisgICAgICAgIGJ5IGNvbmNyZXRlIENETVByaXZhdGUgc3ViY2xhc3Nlcy4gIEl0cyBs
aWZldGltZSBpcyBvd25lZCBieSBNZWRpYUtleVNlc3Npb24uCisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omluc3RhbGxl
ZENETUZhY3Rvcmllcyk6IEluaXRpYWxpemUgYWxsIHRoZSBrbm93biBDRE0gc3VidHlwZXMuIFBv
cnRzIHdpbGwgYWRkIENETSBpbXBsZW1lbnRhdGlvbnMgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6
OkNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KTogUmVnaXN0ZXJzIGEgbmV3IENETUZhY3RvcnkgdXNp
bmcgdGhlIHBhc3NlZCBpbiBmdW5jdGlvbiBwb2ludGVycy4KKyAgICAgICAgKFdlYkNvcmU6OkNE
TUZhY3RvcnlGb3JLZXlTeXN0ZW0pOiBSZXR1cm4gdGhlIGZpcnN0IENETSBmYWN0b3J5IHdoaWNo
IHN1cHBvcnRzIHRoZSByZXF1ZXN0ZWQga2V5IHN5c3RlbS4KKyAgICAgICAgKFdlYkNvcmU6OkNE
TTo6c3VwcG9ydHNLZXlTeXN0ZW0pOiBXYWxrIHRoZSBpbnN0YWxsZWQgQ0RNcyBhbmQgYXNrIGlm
IHRoZSBnaXZlbiBrZXkgc3lzdGVtIGlzIHN1cHBvcnRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNE
TTo6c3VwcG9ydHNLZXlTeXN0ZW1NSU1FVHlwZUFuZENvZGVjKTogRGl0dG8sIHdpdGggYW4gYWRk
aXRpb25hbCBNSU1FIHR5cGUgYW5kIGNvZGVjIHN0cmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkNE
TTo6Y3JlYXRlKTogU2ltcGxlIGNvbnN0cnVjdG9yIHdyYXBwZXIuCisgICAgICAgIChXZWJDb3Jl
OjpDRE06OkNETSk6IFNpbXBsZSBjb25zdHJ1Y3RvcjsgY2FsbHMgYmVzdENETUZvcktleVN5c3Rl
bSgpIHRvIGNyZWF0ZSBpdCdzIHByaXZhdGUgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJD
b3JlOjpDRE06On5DRE0pOiBTaW1wbGUgZGVzdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkNE
TTo6Y3JlYXRlU2Vzc2lvbik6IENyZWF0ZXMgYSBuZXcgQ0RNU2Vzc2lvbi4KKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNE
TTo6a2V5U3lzdGVtKTogU2ltcGxlIGFjY2Vzc29yIGZvciBtX2tleVN5c3RlbS4KKyAgICAgICAg
KFdlYkNvcmU6OkNETVNlc3Npb246OkNETVNlc3Npb24pOiBTaW1wbGUgY29uc3RydWN0b3IuCisg
ICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uOjp+Q0RNU2Vzc2lvbik6IFNpbXBsZSBkZXN0cnVj
dG9yLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVJbnRlcmZhY2U6OkNETVByaXZhdGVJbnRl
cmZhY2UpOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRl
SW50ZXJmYWNlOjp+Q0RNUHJpdmF0ZUludGVyZmFjZSk6IFNpbXBsZSBkZXN0cnVjdG9yLgorCisg
ICAgICAgIFRoZSBuZXcgY2xhc3NlcywgTWVkaWFLZXlNZXNzYWdlRXZlbnQgYW5kIE1lZGlhS2V5
TmVlZGVkRXZlbnQsIHRha2UgZGlzdGluY3Qgc3Vic2V0cyBvZiB0aGUgaW5pdGlhbGl6ZXJzIG9m
CisgICAgICAgIHRoZSBvcmlnaW5hbCBNZWRpYUtleU1lc3NhZ2VFdmVudC4KKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50LmNwcC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdDo6TWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0KTog
SW5pdGlhbGl6ZXIgbm93IG9ubHkgdGFrZXMgbWVzc2FnZSBhbmQgZGVzdGluYXRpb25VUkwKKyAg
ICAgICAgICAgIHBhcmFtZXRlcnMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VF
dmVudDo6TWVkaWFLZXlNZXNzYWdlRXZlbnQpOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVudDo6fk1lZGlhS2V5TWVzc2FnZUV2ZW50KTog
U2ltcGxlIGRlc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVu
dDo6aW50ZXJmYWNlTmFtZSk6IFN0YW5kYXJkIGludGVyZmFjZU5hbWUuCisgICAgICAgICogTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXZlbnQuaC4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUpOiBTaW1wbGUgY29uc3RydWN0aW9uIHdyYXBwZXIu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VFdmVudDo6bWVzc2FnZSk6IFNpbXBs
ZSBhY2Nlc3NvciBmb3IgbV9tZXNzYWdlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlNZXNz
YWdlRXZlbnQ6OmRlc3RpbmF0aW9uVVJMKTogU2ltcGxlIGFjY2Vzc29yIGZvciBtX2Rlc3RpbmF0
aW9uVVJMLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdl
RXZlbnQuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXZlbnQu
aWRsLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVu
dC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVudC5oLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlOZWVkZWRFdmVudEluaXQ6Ok1lZGlhS2V5TmVlZGVk
RXZlbnRJbml0KTogSW5pdGlhbGl6ZXIgbm93IG9ubHkgdGFrZXMgaW5pdERhdGEgcGFyYW1ldGVy
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlOZWVkZWRFdmVudDo6TWVkaWFLZXlOZWVkZWRF
dmVudCk6IFNpbXBsZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5TmVl
ZGVkRXZlbnQ6On5NZWRpYUtleU5lZWRlZEV2ZW50KTogU2ltcGxlIGRlc3RydWN0b3IuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUtleU5lZWRlZEV2ZW50OjppbnRlcmZhY2VOYW1lKTogU3RhbmRh
cmQgaW50ZXJmYWNlTmFtZS4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5TmVlZGVkRXZlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtl
eUV2ZW50LmguCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVhdGUp
OiBTaW1wbGUgY29uc3RydWN0aW9uIHdyYXBwZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtl
eU5lZWRlZEV2ZW50Ojppbml0RGF0YSk6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9pbml0RGF0YS4K
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaWRs
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXZlbnQuaWRsLgorCisg
ICAgICAgIE1lZGlhS2V5U2Vzc2lvbiBpcyBhIG5ldyBjbGFzcyB0aGF0IG1hcHMga2V5cyBhbmQg
a2V5IHJlcXVlc3RzIHRvIGEgZ2l2ZW4gc2Vzc2lvbiBJRDoKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUpOiBTaW1wbGUgY29uc3RydWN0aW9uIHdyYXBwZXIu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246Ok1lZGlhS2V5U2Vzc2lvbik6IFNp
bXBsZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6fk1l
ZGlhS2V5U2Vzc2lvbik6IFNpbXBsZSBkZXN0cnVjdG9yOyBjYWxscyBjbG9zZSgpLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpzZXRFcnJvcik6IFNpbXBsZSBzZXR0ZXIgZm9y
IG1fZXJyb3I7CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmNsb3NlKTogVGVs
bCB0aGUgQ0RNIHRvIGNsZWFyIGFueSBzYXZlZCBzZXNzaW9uIGtleXMuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdCk6IFN0YXJ0IGEgb25lLXNo
b3QgdGltZXIsIGhhbmRsZWQgaW4ga2V5UmVxdWVzdFRpbWVyRmlyZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUtleVNlc3Npb246OmtleVJlcXVlc3RUaW1lckZpcmVkKTogRm9sbG93IHRoZSBz
dGVwcyBpbiB0aGUgc3BlYzsgYXNrIHRoZSBDRE0gdG8gZ2VuZXJhdGUgYSBrZXkgcmVxdWVzdC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5KTogU3RhcnQgYSBvbmUt
c2hvdCB0aW1lciwgaGFuZGxlZCBpbiBhZGRLZXlUaW1lckZpcmVkLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTZXNzaW9uOjphZGRLZXlUaW1lckZpcmVkKTogRm9sbG93IHRoZSBzdGVwcyBp
biB0aGUgc3BlYzsgcHJvdmlkZSB0aGUga2V5IGRhdGEgdCBvdGhlIENETS4KKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6a2V5U3lzdGVtKTogU2ltcGxlIGFjY2Vzc29yIGZv
ciBtX2tleVN5c3RlbS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6c2Vzc2lv
bklkKTogU2ltcGxlIGFjY2Vzc29yIGZvciBtX3Nlc3Npb25JZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhS2V5U2Vzc2lvbjo6ZXJyb3IpOiBTaW1wbGUgYWNjZXNzb3IgZm9yIG1fZXJyb3I7Cisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaWRsOgorCisg
ICAgICAgIE1lZGlhS2V5U2Vzc2lvbiBpbmhlcml0cyBmcm9tIEV2ZW50VGFyZ2V0LCBhbmQgbXVz
dCBvdmVycmlkZSB0aGUgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9ucyBpbiB0aGF0IGNsYXNzOgorICAg
ICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmludGVyZmFjZU5hbWUpOgorICAg
ICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpyZWZFdmVudFRhcmdldCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmRlcmVmRXZlbnRUYXJnZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKwor
ICAgICAgICBNZWRpYUtleXMgaXMgYSBuZXcgY2xhc3MgdGhhdCBlbmNhcHN1bGF0ZXMgYSBDRE0g
YW5kIGEgbnVtYmVyIG9mIGtleSBzZXNzaW9uczoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlz
OjpjcmVhdGUpOiBUaHJvdyBhbiBleGNlcHRpb24gaWYgdGhlIGtleSBzeXN0ZW0gcGFyYW1ldGVy
IGlzIHVuc3VwcG9ydGVkOyBjcmVhdGUgYSBDRE0gb2JqZWN0CisgICAgICAgICAgICBhbmQgYSBu
ZXcgTWVkaWFLZXlzIHNlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleXM6Ok1lZGlh
S2V5cyk6IFNpbXBsZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6
fk1lZGlhS2V5cyk6IFNpbXBsZSBkZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFL
ZXlzOjpjcmVhdGVTZXNzaW9uKTogRm9sbG93IHRoZSBzcGVjIGFuZCBjcmVhdGUgYSBuZXcga2V5
IHNlc3Npb24uCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaDog
QWRkZWQuCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaWRsLgorCisgICAgICAg
IFByb3ZpZGUgYSBuZXcgaW50ZXJmYWNlIHRvIEhUTUxNZWRpYUVsZW1lbnQgZm9yIE1lZGlhUGxh
eWVyIHdoaWNoIGRvZXMgbm90IHJlcXVpcmUgYSBzZXNzaW9uSWQgb3IgYSBrZXkgc3lzdGVtOgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6OmtleU5lZWRlZCk6CisKKyAgICAgICAgTWVkaWFLZXlFcnJvciBub3cgaGFzIGEgc3lzdGVt
Q29kZSBwYXJhbWV0ZXIgYW5kIG1lbWJlciB2YXJpYWJsZS4KKyAgICAgICAgKiBodG1sL01lZGlh
S2V5RXJyb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5RXJyb3I6OmNyZWF0ZSk6IFRh
a2UgYSBzeXN0ZW1Db2RlIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCAoMCkgdmFsdWUuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUtleUVycm9yOjpNZWRpYUtleUVycm9yKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUtleUVycm9yOjpzeXN0ZW1Db2RlKTogU2ltcGxlIGFjY2Vzc29y
IGZvciBtX3N5c3RlbUNvZGUuCisgICAgICAgICogaHRtbC9NZWRpYUtleUVycm9yLmlkbDoKKwor
ICAgICAgICBBZGQgbmV3IG1ldGhvZHMgdG8gSFRNTE1lZGlhRWxlbWVudCB0byBzdXBwb3J0IE1l
ZGlhS2V5cy4gU3VwcG9ydCBkaWZmZXJlbnQgaW5pdGlhbGl6ZXIKKyAgICAgICAgZm9yIHRoZSBN
ZWRpYUtleU5lZWRlZEV2ZW50LgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUtleXMpOiBTaW1w
bGUgc2V0dGVyIGZvciBtX21lZGlhS2V5cy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKTogVGhpcyB2ZXJzaW9uIHRha2VzIGZld2VyIHBh
cmFtZXRlcnMKKyAgICAgICAgICAgIHRoYW4gdGhlIGRlcHJlY2F0ZWQgdmVyc2lvbi4KKyAgICAg
ICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhS2V5cyk6IFNpbXBsZSBhY2Nlc3NvciBmb3IgbV9tZWRpYUtleXMuCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbDogQWRkIHRoZSBtZWRpYUtleXMgYXR0
cmlidXRlLgorCisgICAgICAgIEFkZCBhbiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKSBjaGVj
ayB0byB0aGUgZXhpc3RpbmcgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgb25lOgorICAgICAgICAq
IGh0bWwvTWVkaWFFcnJvci5oOgorICAgICAgICAqIGh0bWwvTWVkaWFFcnJvci5pZGw6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YmVzdE1lZGlhRW5naW5lRm9yVHlwZUFuZENvZGVjcyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmtleU5lZWRlZCk6
IFRoaXMgdmVyc2lvbiB0YWtlcyBmZXdlciBwYXJhbWV0ZXJzIHRoYW4gdGhlCisgICAgICAgICAg
ICBkZXByZWNhdGVkIHZlcnNpb24uCisKKyAgICAgICAgU3VwcG9ydCB0aGUgbmV3IHZlcnNpb24g
b2YgY2FuUGxheVR5cGUgd2hpY2ggdGFrZXMgYW4gZXh0cmEgcGFyYW1ldGVyOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRp
YUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpleHRlbmRlZFN1cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmV4dGVuZGVkU3VwcG9ydHNUeXBlKToK
KworICAgICAgICBBZGQgYSBtb2NrIENETSBmb3IgdXNlIHdpdGhpbiBEUlQgYW5kIFdLVFIgdG8g
dGVzdCB0aGUgTWVkaWFLZXlzIGFuZCBNZWRpYUtleVNlc3Npb24KKyAgICAgICAgQVBJcyBhbmQg
ZXZlbnRzOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6aW5pdGlhbGl6ZU1vY2tDRE0pOiBBZGQgdGhlIE1vY2tDRE0gY2xhc3Mg
dG8gdGhlIENETSBmYWN0b3JpZXMuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6IEFkZCB0aGUgaW5pdGlhbGl6ZU1vY2tDRE0o
KSBtZXRob2QuCisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0c0tleVN5c3RlbSk6IE9ubHkgc3VwcG9ydHMgdGhl
ICdjb20ud2ViY29yZS5tb2NrJyBrZXkgc3lzdGVtLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NE
TTo6c3VwcG9ydHNNSU1FVHlwZSk6IE9ubHkgc3VwcG9ydHMgdGhlICd2aWRlby9tb2NrJyBtaW1l
IHR5cGUuCisgICAgICAgIChXZWJDb3JlOjppbml0RGF0YVByZWZpeCk6IFN0YXRpYyBtZXRob2Qg
d2hpY2ggcmV0dXJucyBhIFVpbnQ4QXJyYXkgY29udGFpbmluZyAnbW9jaycuCisgICAgICAgIChX
ZWJDb3JlOjprZXlQcmVmaXgpOiBTdGF0aWMgbWV0aG9kIHdoaWNoIHJldHVybnMgYSBVaW50OEFy
cmF5IGNvbnRhaW5pbmcgJ2tleScuCisgICAgICAgIChXZWJDb3JlOjprZXlSZXF1ZXN0KTogU3Rh
dGljIG1ldGhvZCB3aGljaCByZXR1cm5zIGEgVWludDhBcnJheSBjb250YWluaW5nICdyZXF1ZXN0
Jy4KKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlU2Vzc2lvbklkKTogUmV0dXJuIGEgbW9ub3Rv
bmljYWxseSBpbmNyZWFzaW5nIG51bWJlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1TZXNz
aW9uOjpNb2NrQ0RNU2Vzc2lvbik6IFNpbXBsZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDRE1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QpOiBJZ25vcmVzIHRoZSBwYXJh
bWV0ZXJzIGFuZCByZXR1cm5zIGEga2V5UmVxdWVzdCgpIGFycmF5LgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NETVNlc3Npb246OnJlbGVhc2VLZXlzKTogTm8tb3AuCisgICAgICAgIChXZWJDb3Jl
OjpNb2NrQ0RNU2Vzc2lvbjo6YWRkS2V5KTogQ2hlY2tzIHRoYXQgdGhlIGtleSBzdGFydHMgd2l0
aCB0aGUga2V5UHJlZml4KCkgYXJyYXkuCisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDRE06On5Nb2NrQ0RNKTogU2ltcGxlIGRlc3RydWN0b3IuCisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ0RNOjpNb2NrQ0RNKTogU2ltcGxlIGNvbnN0cnVjdG9yLgorCisgICAgICAgIEFk
ZCB0aGUgbmV3IGNsYXNzZXMgdG8gdGhlIGJ1aWx0IHN5c3RlbToKKyAgICAgICAgKiBDb25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBNaXNjZWxhbmVvdXMgY2hhbmdlczoK
KyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5pbjogQWRkIHRoZSB0d28gbmV3IGV2ZW50IHR5cGVz
LCBNZWRpYUtleU1lc3NhZ2VFdmVudCBhbmQgTWVkaWFLZXlOZWVkZWRFdmVudC4KKyAgICAgICAg
KiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOiBBZGQgdGhlIG5ldyBFdmVudFRhcmdldCwgTWVk
aWFLZXlTZXNzaW9uLgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDogQWRkIGNvbnN0cnVj
dG9ycyBmb3IgdGhlIG5ldyBjbGFzc2VzIHRvIHRoZSB3aW5kb3cgb2JqZWN0LgorCiAyMDEzLTAy
LTA4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIFdlYWtQ
dHJzIHRvIGNvbW11bmljYXRlIGJldHdlZW4gdGhlIEhUTUxEb2N1bWVudFBhcnNlciBhbmQgdGhl
IEJhY2tncm91bmRIVE1MUGFyc2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggOTQ3MDIz
Nzc1NTAyNWYzOTU4MDM5MDQyMDQ3M2JlYmUwNzEzMTM1Yy4uMjlkMWRmNjAyNTlkZWNkNzBiMzgy
ZTNhMmRmN2I1MjE4ZmJiMjM4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNjUsMTEg
KzY1LDExIEBAIEVOQUJMRV9ESUFMT0dfRUxFTUVOVCA9IDsKIEVOQUJMRV9ESVJFQ1RPUllfVVBM
T0FEID0gOwogRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SID0gRU5BQkxFX0RPTTRfRVZF
TlRTX0NPTlNUUlVDVE9SOwogRU5BQkxFX0RSQUdHQUJMRV9SRUdJT04gPSA7Ci1FTkFCTEVfRU5D
UllQVEVEX01FRElBID0gJChFTkFCTEVfRU5DUllQVEVEX01FRElBXyQoUExBVEZPUk1fTkFNRSkp
OwotRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9tYWNvc3ggPSAkKEVOQUJMRV9FTkNSWVBURURfTUVE
SUFfbWFjb3N4XyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKLUVOQUJMRV9FTkNS
WVBURURfTUVESUFfbWFjb3N4XzEwNzAgPSA7Ci1FTkFCTEVfRU5DUllQVEVEX01FRElBX21hY29z
eF8xMDgwID0gOwotRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9tYWNvc3hfMTA5MCA9IEVOQUJMRV9F
TkNSWVBURURfTUVESUE7CitFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyID0gJChFTkFCTEVfRU5D
UllQVEVEX01FRElBX1YyXyQoUkVBTF9QTEFURk9STV9OQU1FKSk7CitFTkFCTEVfRU5DUllQVEVE
X01FRElBX1YyX21hY29zeCA9ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9tYWNvc3hfJChUQVJH
RVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOworRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9t
YWNvc3hfMTA3MCA9IDsKK0VOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEwODAgPSA7
CitFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeF8xMDkwID0gRU5BQkxFX0VOQ1JZUFRF
RF9NRURJQV9WMjsKIEVOQUJMRV9GSUxFX1NZU1RFTSA9IDsKIEVOQUJMRV9GSUxURVJTID0gRU5B
QkxFX0ZJTFRFUlM7CiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkgPSAkKEVOQUJMRV9GVUxMU0NSRUVO
X0FQSV8kKFBMQVRGT1JNX05BTUUpKTsKQEAgLTE2Nyw0ICsxNjcsNCBAQCBFTkFCTEVfV09SS0VS
UyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hIUl9USU1FT1VUID0gRU5BQkxFX1hIUl9USU1F
T1VUOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChF
TkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5B
QkxFX0JMT0IpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQo
RU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NT
X0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQo
RU5BQkxFX0NTU19FWENMVVNJT05TKSAkKEVOQUJMRV9DU1NfRklMVEVSUykgJChFTkFCTEVfQ1NT
X0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFC
TEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFERVJTKSAkKEVOQUJMRV9DU1NfQ09NUE9T
SVRJTkcpICQoRU5BQkxFX0NTU19TVElDS1lfUE9TSVRJT04pICQoRU5BQkxFX0NTU19UUkFOU0ZP
Uk1TX0FOSU1BVElPTlNfVU5QUkVGSVhFRCkgJChFTkFCTEVfQ1NTX1ZBUklBQkxFUykgJChFTkFC
TEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9D
VVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJM
RV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJM
RV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVf
RElBTE9HX0VMRU1FTlQpICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTTRf
RVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJMRV9EUkFHR0FCTEVfUkVHSU9OKSAkKEVOQUJMRV9F
TkNSWVBURURfTUVESUEpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GSUxURVJTKSAk
KEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9D
QVRJT04pICQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJM
RV9ISUdIX0RQSV9DQU5WQVMpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1F
X1NFQU1MRVNTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVF
Q0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkg
JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElN
RUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJ
TUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dF
UikgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9O
T1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9M
RUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9MSU5LX1BS
RVJFTkRFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxF
X01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1M
KSAkKEVOQUJMRV9NSUNST0RBVEEpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFC
TEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxF
X1BMVUdJTl9QUk9YWV9GT1JfVklERU8pICQoRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5B
QkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FO
SU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVf
U0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFET1dfRE9NKSAkKEVOQUJMRV9TSEFSRURfV09S
S0VSUykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAk
KEVOQUJMRV9TVFlMRV9TQ09QRUQpICQoRU5BQkxFX1NVQlBJWEVMX0xBWU9VVCkgJChFTkFCTEVf
U1ZHKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykg
JChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVO
QUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWSkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5H
KSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVP
X1RSQUNLKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJf
U09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVf
WEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRkVBVFVSRV9ERUZJTkVTXyQoUExBVEZPUk1f
TkFNRSkpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJM
RV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NBTlZBU19Q
QVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAk
KEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVO
QUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19FWENMVVNJT05TKSAkKEVO
QUJMRV9DU1NfRklMVEVSUykgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NT
U19TSEFERVJTKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19TVElDS1lf
UE9TSVRJT04pICQoRU5BQkxFX0NTU19UUkFOU0ZPUk1TX0FOSU1BVElPTlNfVU5QUkVGSVhFRCkg
JChFTkFCTEVfQ1NTX1ZBUklBQkxFUykgJChFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUykg
JChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5B
QkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJM
RV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxF
X0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElBTE9HX0VMRU1FTlQpICQoRU5BQkxFX0RJ
UkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJM
RV9EUkFHR0FCTEVfUkVHSU9OKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxF
X0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkg
JChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJRERFTl9Q
QUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpICQoRU5B
QkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1FX1NFQU1MRVNTKSAkKEVOQUJMRV9JTkRF
WEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZUEVf
Q09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRF
VElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVf
V0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTEVHQUNZX0NTU19W
RU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9M
RUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJM
RV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9MSU5LX1BSRVJFTkRFUikgJChFTkFCTEVfTUFUSE1M
KSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5B
QkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NSUNST0RBVEEpICQo
RU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJ
TFMpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkp
ICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BMVUdJTl9QUk9YWV9GT1JfVklERU8p
ICQoRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQo
RU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVf
UkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJM
RV9TSEFET1dfRE9NKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1BFRUNIX1NZ
TlRIRVNJUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9TVFlMRV9TQ09QRUQpICQo
RU5BQkxFX1NVQlBJWEVMX0xBWU9VVCkgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfRE9NX09C
SkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVO
VCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNf
T05MWSkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FM
TCkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9XRUJHTCkg
JChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJ
TUlORykgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hT
TFQpICQoRkVBVFVSRV9ERUZJTkVTXyQoUExBVEZPUk1fTkFNRSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXgg
MWIxNGZjOTM4MjU4OTA4ODk0ZWE1OWU5NTQ0ZjhiYzQ2NzgyMjAwYy4uNWEwOWFiMWQ3NWJiMTRh
NDc4Y2NkYTVhMGVmNTgyYWQ5ZWEwYTAyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMTY4LDYgKzExNjgs
NyBAQAogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKICNkZWZpbmUgSEFWRV9BVkZPVU5EQVRJT05f
VEVYVF9UUkFDS19TVVBQT1JUIDEKKyNkZWZpbmUgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiAx
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShFRkwpIHx8IChQTEFURk9STShXSU4pICYmICFPUyhXSU5DRSkgJiYgIVBMQVRGT1JNKFdJTl9D
QUlSTykpIHx8IFBMQVRGT1JNKEJMQUNLQkVSUlkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3Jl
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IDk0NzAyMzc3NTUw
MjVmMzk1ODAzOTA0MjA0NzNiZWJlMDcxMzEzNWMuLjc5NzcyZmJhMjZlYTc5NTVhOWVlYzg5ZTBi
ZjliNWVlNmI0ZDJhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25z
L0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC02NSwxMSArNjUsMTEgQEAgRU5BQkxFX0RJ
QUxPR19FTEVNRU5UID0gOwogRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQgPSA7CiBFTkFCTEVfRE9N
NF9FVkVOVFNfQ09OU1RSVUNUT1IgPSBFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I7CiBF
TkFCTEVfRFJBR0dBQkxFX1JFR0lPTiA9IDsKLUVOQUJMRV9FTkNSWVBURURfTUVESUEgPSAkKEVO
QUJMRV9FTkNSWVBURURfTUVESUFfJChQTEFURk9STV9OQU1FKSk7Ci1FTkFCTEVfRU5DUllQVEVE
X01FRElBX21hY29zeCA9ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9tYWNvc3hfJChUQVJHRVRf
TUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwotRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9tYWNvc3hf
MTA3MCA9IDsKLUVOQUJMRV9FTkNSWVBURURfTUVESUFfbWFjb3N4XzEwODAgPSA7Ci1FTkFCTEVf
RU5DUllQVEVEX01FRElBX21hY29zeF8xMDkwID0gRU5BQkxFX0VOQ1JZUFRFRF9NRURJQTsKK0VO
QUJMRV9FTkNSWVBURURfTUVESUFfVjIgPSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfJChS
RUFMX1BMQVRGT1JNX05BTUUpKTsKK0VOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4ID0g
JChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeF8kKFRBUkdFVF9NQUNfT1NfWF9WRVJT
SU9OX01BSk9SKSk7CitFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeF8xMDcwID0gOwor
RU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3hfMTA4MCA9IDsKK0VOQUJMRV9FTkNSWVBU
RURfTUVESUFfVjJfbWFjb3N4XzEwOTAgPSBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyOwogRU5B
QkxFX0ZJTEVfU1lTVEVNID0gOwogRU5BQkxFX0ZJTFRFUlMgPSBFTkFCTEVfRklMVEVSUzsKIEVO
QUJMRV9GVUxMU0NSRUVOX0FQSSA9ICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJXyQoUExBVEZPUk1f
TkFNRSkpOwpAQCAtMTY3LDQgKzE2Nyw0IEBAIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dPUktF
UlM7CiBFTkFCTEVfWEhSX1RJTUVPVVQgPSBFTkFCTEVfWEhSX1RJTUVPVVQ7CiBFTkFCTEVfWFNM
VCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJ
TkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQkxPQikgJChFTkFC
TEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9N
RVNTQUdJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05f
QlJFQUspICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0VYQ0xV
U0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJ
T04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykg
JChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVf
Q1NTX1NUSUNLWV9QT1NJVElPTikgJChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19V
TlBSRUZJWEVEKSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX0NPTkRJVElP
TkFMX1JVTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFO
RExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1F
TlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVO
VCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESUFMT0dfRUxFTUVOVCkg
JChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNU
T1IpICQoRU5BQkxFX0RSQUdHQUJMRV9SRUdJT04pICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkg
JChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZVTExTQ1JF
RU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVf
SElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZB
UykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5B
QkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5Q
VVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0RBVEVUSU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxF
X0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5Q
VVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdB
Q1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQo
RU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8p
ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0xJTktfUFJFUkVOREVSKSAkKEVOQUJM
RV9NQVRITUwpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElD
UykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01JQ1JP
REFUQSkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09O
VEVOVF9VVElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklM
SVRZX0FQSSkgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUExVR0lOX1BST1hZX0ZP
Ul9WSURFTykgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUFJPWElNSVRZX0VW
RU5UUykgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAk
KEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gp
ICQoRU5BQkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9T
UEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TUUxfREFUQUJBU0UpICQoRU5BQkxFX1NUWUxFX1ND
T1BFRCkgJChFTkFCTEVfU1VCUElYRUxfTEFZT1VUKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NW
R19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URU1QTEFU
RV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RFWFRfTk9USUZJ
Q0FUSU9OU19PTkxZKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJT
RUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxF
X1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJM
RV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChF
TkFCTEVfWFNMVCkgJChGRUFUVVJFX0RFRklORVNfJChQTEFURk9STV9OQU1FKSk7CitGRUFUVVJF
X0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJE
X0NBTlZBUykgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NB
TlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9ORVhU
KSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19ERVZJQ0Vf
QURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJT
KSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNP
TFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5B
QkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX1NUSUNLWV9QT1NJVElPTikgJChFTkFC
TEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19VTlBSRUZJWEVEKSAkKEVOQUJMRV9DU1NfVkFS
SUFCTEVTKSAkKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKSAkKEVOQUJMRV9DU1MzX1RF
WFQpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NV
UFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJf
SVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFU
SU9OKSAkKEVOQUJMRV9ESUFMT0dfRUxFTUVOVCkgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkg
JChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0RSQUdHQUJMRV9SRUdJ
T04pICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFCTEVfRklMRV9TWVNURU0pICQo
RU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFE
KSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RI
Uk9UVExJTkcpICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNF
KSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQo
RU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVf
SU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5B
QkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9K
QVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykg
JChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJF
RklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gp
ICQoRU5BQkxFX0xJTktfUFJFUkVOREVSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElB
X1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVO
VCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01JQ1JPREFUQSkgJChFTkFCTEVfTU9VU0VfQ1VS
U09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTk9U
SUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUERGS0lU
X1BMVUdJTikgJChFTkFCTEVfUExVR0lOX1BST1hZX0ZPUl9WSURFTykgJChFTkFCTEVfUFJPR1JF
U1NfRUxFTUVOVCkgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUVVPVEEpICQo
RU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElB
X1FVRVJZKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURPV19ET00pICQo
RU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJM
RV9TUUxfREFUQUJBU0UpICQoRU5BQkxFX1NUWUxFX1NDT1BFRCkgJChFTkFCTEVfU1VCUElYRUxf
TEFZT1VUKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChF
TkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhU
X0FVVE9TSVpJTkcpICQoRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZKSAkKEVOQUJMRV9U
T1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURF
TykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVE
SU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9X
T1JLRVJTKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChGRUFUVVJFX0RF
RklORVNfJChQTEFURk9STV9OQU1FKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRl
eCAzOWJkZThlY2M1ODkxYmExODJjYWNhNGYzYTg3YTRiMjU4NmIwZWZjLi45OWNiNGY4ZjJlMTk5
MmU1NzVkYmRmNzQ3MGY0NjA1NmQ0OGViMTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTI4LDYgKzI4LDcgQEAKIAogVlBBVEggPSBcCiAgICAgJChXZWJDb3JlKSBcCisJJChX
ZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
ZmlsZXN5c3RlbSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvaW5kZXhlZGRiIFwKQEAgLTYyLDYgKzYzLDEwIEBAIFZQQVRIID0g
XAogIwogCiBCSU5ESU5HX0lETFMgPSBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmlkbCBcCisgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaWRsIFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uaWRsIFwKQEAgLTM2Niw4
ICszNzEsOCBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9odG1sL0ltYWdlRGF0
YS5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsIFwKICAgICAk
KFdlYkNvcmUpL2h0bWwvTWVkaWFFcnJvci5pZGwgXAotCSQoV2ViQ29yZSkvaHRtbC9NZWRpYUtl
eUVycm9yLmlkbCBcCi0JJChXZWJDb3JlKS9odG1sL01lZGlhS2V5RXZlbnQuaWRsIFwKKyAgICAk
KFdlYkNvcmUpL2h0bWwvTWVkaWFLZXlFcnJvci5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9N
ZWRpYUtleUV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL01pY3JvRGF0YUl0ZW1WYWx1
ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9SYWRpb05vZGVMaXN0LmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9odG1sL1RleHRNZXRyaWNzLmlkbCBcCkBAIC04MzksNiArODQ0LDEwIEBAIGlmZXEg
KCQoZmluZHN0cmluZyBFTkFCTEVfREVUQUlMU19FTEVNRU5ULCQoRkVBVFVSRV9ERUZJTkVTKSks
IEVOQUJMRV9ERVRBSUxTX0VMCiAgICAgSFRNTF9GTEFHUyA6PSAkKEhUTUxfRkxBR1MpIEVOQUJM
RV9ERVRBSUxTX0VMRU1FTlQ9MQogZW5kaWYKIAoraWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9F
TkNSWVBURURfTUVESUFfVjIsJChGRUFUVVJFX0RFRklORVMpKSwgRU5BQkxFX0VOQ1JZUFRFRF9N
RURJQV9WMikKKwlIVE1MX0ZMQUdTIDo9ICQoSFRNTF9GTEFHUykgRU5BQkxFX0VOQ1JZUFRFRF9N
RURJQV9WMj0xCitlbmRpZgorCiBpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX01FVEVSX0VMRU1F
TlQsJChGRUFUVVJFX0RFRklORVMpKSwgRU5BQkxFX01FVEVSX0VMRU1FTlQpCiAgICAgSFRNTF9G
TEFHUyA6PSAkKEhUTUxfRkxBR1MpIEVOQUJMRV9NRVRFUl9FTEVNRU5UPTEKIGVuZGlmCkBAIC05
NjMsNiArOTcyLDcgQEAgcHJlcHJvY2Vzc19pZGxzX3NjcmlwdCA9IHBlcmwgJChhZGRwcmVmaXgg
LUkgJChXZWJDb3JlKS8sICQoc29ydCAkKGRpciAkKDEpKSkpICQKIAogSURMX0lOQ0xVREVTID0g
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9iYXR0ZXJ5IFwKKwkkKFdlYkNvcmUpL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvZ2FtZXBhZCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2dl
b2xvY2F0aW9uIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNmE4NDhmYzk0MzA4NzgxMjk5MDUyOWFmYTY3ZTk2MGYzMTg0YzY4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE0uY3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkNETS5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikK
KworI2luY2x1ZGUgIkNETVByaXZhdGUuaCIKKyNpbmNsdWRlICJNZWRpYUtleUVycm9yLmgiCisj
aW5jbHVkZSAiTWVkaWFLZXlzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IENETUZhY3RvcnkgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENETUZhY3RvcnkpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBDRE1GYWN0b3J5KENyZWF0ZUNETSBjb25zdHJ1Y3RvciwgQ0RNU3VwcG9ydHNLZXlT
eXN0ZW0gc3VwcG9ydHNLZXlTeXN0ZW0pCisgICAgICAgIDogY29uc3RydWN0b3IoY29uc3RydWN0
b3IpCisgICAgICAgICwgc3VwcG9ydHNLZXlTeXN0ZW0oc3VwcG9ydHNLZXlTeXN0ZW0pCisgICAg
eworICAgIH0KKworICAgIENyZWF0ZUNETSBjb25zdHJ1Y3RvcjsKKyAgICBDRE1TdXBwb3J0c0tl
eVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbTsKK307CisKK3N0YXRpYyBWZWN0b3I8Q0RNRmFjdG9y
eSo+JiBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
VmVjdG9yPENETUZhY3RvcnkqPiwgY2RtcywgKCkpOworICAgIHN0YXRpYyBib29sIHF1ZXJpZWRD
RE1zID0gZmFsc2U7CisgICAgaWYgKCFxdWVyaWVkQ0RNcykgeworICAgICAgICBxdWVyaWVkQ0RN
cyA9IHRydWU7CisKKyAgICAgICAgLy8gVE9ETzogaW5pdGlhbGl6ZSBzcGVjaWZpYyBVQSBDRE1z
LgorICAgIH0KKworICAgIHJldHVybiBjZG1zOworfQorCit2b2lkIENETTo6cmVnaXN0ZXJDRE1G
YWN0b3J5KENyZWF0ZUNETSBjb25zdHJ1Y3RvciwgQ0RNU3VwcG9ydHNLZXlTeXN0ZW0gc3VwcG9y
dHNLZXlTeXN0ZW0pCit7CisgICAgaW5zdGFsbGVkQ0RNRmFjdG9yaWVzKCkuYXBwZW5kKG5ldyBD
RE1GYWN0b3J5KGNvbnN0cnVjdG9yLCBzdXBwb3J0c0tleVN5c3RlbSkpOworfQorCitib29sIENE
TTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7CisgICAgVmVj
dG9yPENETUZhY3RvcnkqPiYgY2RtRmFjdG9yaWVzID0gaW5zdGFsbGVkQ0RNRmFjdG9yaWVzKCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjZG1GYWN0b3JpZXMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgaWYgKGNkbUZhY3Rvcmllc1tpXS0+c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVt
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3N0YXRpYyBDRE1GYWN0b3J5KiBDRE1GYWN0b3J5Rm9yS2V5U3lzdGVtKGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtKQoreworICAgIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIGNkbUZhY3RvcmllcyA9
IGluc3RhbGxlZENETUZhY3RvcmllcygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2Rt
RmFjdG9yaWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChjZG1GYWN0b3JpZXNbaV0tPnN1
cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCisgICAgICAgICAgICByZXR1cm4gY2RtRmFjdG9y
aWVzW2ldOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworUGFzc093blB0cjxDRE0+IENETTo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAgIGlmICghc3VwcG9ydHNLZXlT
eXN0ZW0oa2V5U3lzdGVtKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4g
YWRvcHRQdHIobmV3IENETShrZXlTeXN0ZW0pKTsKK30KKworQ0RNOjpDRE0oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0pCisgICAgOiBtX2tleVN5c3RlbShrZXlTeXN0ZW0pCit7CisgICAgbV9wcml2
YXRlID0gQ0RNRmFjdG9yeUZvcktleVN5c3RlbShrZXlTeXN0ZW0pLT5jb25zdHJ1Y3Rvcih0aGlz
KTsKK30KKworQ0RNOjp+Q0RNKCkKK3sKK30KKworYm9vbCBDRE06OnN1cHBvcnRzTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5zdXBwb3J0
c01JTUVUeXBlKG1pbWVUeXBlKTsKK30KKworUGFzc093blB0cjxDRE1TZXNzaW9uPiBDRE06OmNy
ZWF0ZVNlc3Npb24oKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmNyZWF0ZVNlc3Npb24oKTsK
K30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwODkwNzZk
ZTQzZDI2NWFlNmYzNTU0MmRlOTk2ODU0MTcyMjUzYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCkBAIC0wLDAgKzEsODMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIENETV9oCisjZGVmaW5lIENETV9oCisKKyNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBX1YyKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
TWVkaWFLZXlFcnJvcjsKK2NsYXNzIE1lZGlhS2V5U2Vzc2lvbjsKK2NsYXNzIE1lZGlhS2V5czsK
KworY2xhc3MgQ0RNOworY2xhc3MgQ0RNUHJpdmF0ZUludGVyZmFjZTsKK2NsYXNzIENETVNlc3Np
b247CisKK3R5cGVkZWYgUGFzc093blB0cjxDRE1Qcml2YXRlSW50ZXJmYWNlPiAoKkNyZWF0ZUNE
TSkoQ0RNKik7Cit0eXBlZGVmIGJvb2wgKCpDRE1TdXBwb3J0c0tleVN5c3RlbSkoY29uc3QgU3Ry
aW5nJik7CisKK2NsYXNzIENETVNlc3Npb24geworcHVibGljOgorICAgIENETVNlc3Npb24oKSB7
IH0KKyAgICB2aXJ0dWFsIH5DRE1TZXNzaW9uKCkgeyB9CisKKyAgICB2aXJ0dWFsIGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKCkgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxVaW50OEFycmF5
PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSog
aW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNv
ZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVs
ZWFzZUtleXMoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGFkZEtleShVaW50OEFycmF5KiwgUmVm
UHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwg
dW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkgPSAwOworfTsKKworY2xhc3MgQ0RNIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmKTsKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxDRE0+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7
CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJDRE1GYWN0b3J5KENyZWF0ZUNETSwgQ0RNU3VwcG9y
dHNLZXlTeXN0ZW0pOworICAgIH5DRE0oKTsKKworICAgIGJvb2wgc3VwcG9ydHNNSU1FVHlwZShj
b25zdCBTdHJpbmcmKTsKKyAgICBQYXNzT3duUHRyPENETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24o
KTsKKworICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgeyByZXR1cm4gbV9rZXlT
eXN0ZW07IH0KKworcHJpdmF0ZToKKyAgICBDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOwor
CisgICAgU3RyaW5nIG1fa2V5U3lzdGVtOworICAgIE93blB0cjxDRE1Qcml2YXRlSW50ZXJmYWNl
PiBtX3ByaXZhdGU7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElB
X1YyKQorCisjZW5kaWYgLy8gQ0RNX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWMzNzU4ODRmYTRmODJhMGVm
OTFjZTJiMmE5MWRiN2UzOTE2MDlmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIENETVByaXZhdGVfaAorI2RlZmluZSBDRE1Qcml2YXRlX2gKKwor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgQ0RNU2Vzc2lvbjsKKworY2xhc3MgQ0RNUHJpdmF0ZUludGVyZmFjZSB7CitwdWJs
aWM6CisgICAgQ0RNUHJpdmF0ZUludGVyZmFjZSgpIHsgfQorICAgIHZpcnR1YWwgfkNETVByaXZh
dGVJbnRlcmZhY2UoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c01JTUVUeXBlKGNv
bnN0IFN0cmluZyYpID0gMDsKKworICAgIHZpcnR1YWwgUGFzc093blB0cjxDRE1TZXNzaW9uPiBj
cmVhdGVTZXNzaW9uKCkgPSAwOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQV9WMikKKworI2VuZGlmIC8vIENETVByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2
ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40YTljODQzYTY1MjFmOWIxYzdmMmQ5YmJiZjIwMzZjNDNlN2Fj
YTc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikK
KworI2luY2x1ZGUgIk1lZGlhS2V5TWVzc2FnZUV2ZW50LmgiCisKKyNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCisjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQ6Ok1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCgp
Cit7Cit9CisKK01lZGlhS2V5TWVzc2FnZUV2ZW50OjpNZWRpYUtleU1lc3NhZ2VFdmVudCgpCit7
Cit9CisKK01lZGlhS2V5TWVzc2FnZUV2ZW50OjpNZWRpYUtleU1lc3NhZ2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCYgaW5pdGlh
bGl6ZXIpCisgICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKKyAgICAsIG1fbWVzc2FnZShp
bml0aWFsaXplci5tZXNzYWdlKQorICAgICwgbV9kZXN0aW5hdGlvblVSTChpbml0aWFsaXplci5k
ZXN0aW5hdGlvblVSTCkKK3sKK30KKworTWVkaWFLZXlNZXNzYWdlRXZlbnQ6On5NZWRpYUtleU1l
c3NhZ2VFdmVudCgpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFLZXlNZXNzYWdl
RXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCku
aW50ZXJmYWNlRm9yTWVkaWFLZXlNZXNzYWdlRXZlbnQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNmZjAy
MTkxMmU0MDAzMGZjNDQ2YjRkMTVmNWY2MmNiOGJlNTMzYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQu
aApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1lZGlhS2V5TWVzc2FnZUV2
ZW50X2gKKyNkZWZpbmUgTWVkaWFLZXlNZXNzYWdlRXZlbnRfaAorCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlF
cnJvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBNZWRpYUtleU1lc3NhZ2VF
dmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKKyAgICBNZWRpYUtleU1lc3NhZ2VFdmVudElu
aXQoKTsKKworICAgIFJlZlB0cjxVaW50OEFycmF5PiBtZXNzYWdlOworICAgIFN0cmluZyBkZXN0
aW5hdGlvblVSTDsKK307CisKK2NsYXNzIE1lZGlhS2V5TWVzc2FnZUV2ZW50IDogcHVibGljIEV2
ZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NZWRpYUtleU1lc3NhZ2VFdmVudCgpOworCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFLZXlNZXNzYWdlRXZlbnQ+IGNyZWF0ZSgpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhS2V5TWVzc2FnZUV2ZW50KTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleU1lc3NhZ2VFdmVudD4gY3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0
JiBpbml0aWFsaXplcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFL
ZXlNZXNzYWdlRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCisgICAgVWludDhB
cnJheSogbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZS5nZXQoKTsgfQorICAgIFN0
cmluZyBkZXN0aW5hdGlvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25VUkw7IH0K
KworcHJpdmF0ZToKKyAgICBNZWRpYUtleU1lc3NhZ2VFdmVudCgpOworICAgIE1lZGlhS2V5TWVz
c2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlNZXNzYWdl
RXZlbnRJbml0JiBpbml0aWFsaXplcik7CisKKyAgICBSZWZQdHI8VWludDhBcnJheT4gbV9tZXNz
YWdlOworICAgIFN0cmluZyBtX2Rlc3RpbmF0aW9uVVJMOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNzZiMDkxYmRiZTVkYzlkZTc1MjljYTBkNzUxZjU2NTViMzczZTgxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eU1lc3NhZ2VFdmVudC5pZGwKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworaW50ZXJmYWNl
IFsKKyAgICBDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIsCisgICAgVjhFbmFibGVkQXRS
dW50aW1lPWVuY3J5cHRlZE1lZGlhLAorICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQgCitd
IE1lZGlhS2V5TWVzc2FnZUV2ZW50IDogRXZlbnQgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBV
aW50OEFycmF5IG1lc3NhZ2U7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtJbml0aWFsaXplZEJ5
RXZlbnRDb25zdHJ1Y3Rvcl0gRE9NU3RyaW5nIGRlc3RpbmF0aW9uVVJMOworfTsKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRl
ZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlOZWVkZWRFdmVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUwNmY4ZDUwNjMxN2VhM2ZiOWE4Mzc4Nzlm
ZjgwMWM4Zjk2N2EyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAKQEAgLTAsMCArMSw2MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQV9WMikKKworI2luY2x1ZGUgIk1lZGlhS2V5TmVlZGVkRXZlbnQuaCIKKworI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK01lZGlhS2V5TmVlZGVkRXZlbnRJbml0OjpNZWRpYUtleU5lZWRlZEV2ZW50
SW5pdCgpCit7Cit9CisKK01lZGlhS2V5TmVlZGVkRXZlbnQ6Ok1lZGlhS2V5TmVlZGVkRXZlbnQo
KQoreworfQorCitNZWRpYUtleU5lZWRlZEV2ZW50OjpNZWRpYUtleU5lZWRlZEV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVkaWFLZXlOZWVkZWRFdmVudEluaXQmIGluaXRp
YWxpemVyKQorICAgIDogRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpCisgICAgLCBtX2luaXREYXRh
KGluaXRpYWxpemVyLmluaXREYXRhKQoreworfQorCitNZWRpYUtleU5lZWRlZEV2ZW50Ojp+TWVk
aWFLZXlOZWVkZWRFdmVudCgpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFLZXlO
ZWVkZWRFdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFt
ZXMoKS5pbnRlcmZhY2VGb3JNZWRpYUtleU5lZWRlZEV2ZW50OworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmFj
ZTMyMzNhM2QxZWY0YmU2YzdkMzI1Y2RkZWJiNWY2MjAwOTc3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50
LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNZWRpYUtleU5lZWRlZEV2
ZW50X2gKKyNkZWZpbmUgTWVkaWFLZXlOZWVkZWRFdmVudF9oCisKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBX1YyKQorCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJNZWRpYUtleUVy
cm9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IE1lZGlhS2V5TmVlZGVkRXZl
bnRJbml0IDogcHVibGljIEV2ZW50SW5pdCB7CisgICAgTWVkaWFLZXlOZWVkZWRFdmVudEluaXQo
KTsKKworICAgIFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YTsKK307CisKK2NsYXNzIE1lZGlh
S2V5TmVlZGVkRXZlbnQgOiBwdWJsaWMgRXZlbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfk1l
ZGlhS2V5TmVlZGVkRXZlbnQoKTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5TmVl
ZGVkRXZlbnQ+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1l
ZGlhS2V5TmVlZGVkRXZlbnQpOworICAgIH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
S2V5TmVlZGVkRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IE1l
ZGlhS2V5TmVlZGVkRXZlbnRJbml0JiBpbml0aWFsaXplcikKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgTWVkaWFLZXlOZWVkZWRFdmVudCh0eXBlLCBpbml0aWFsaXplcikpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkg
Y29uc3Q7CisKKyAgICBVaW50OEFycmF5KiBpbml0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faW5p
dERhdGEuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBNZWRpYUtleU5lZWRlZEV2ZW50KCk7Cisg
ICAgTWVkaWFLZXlOZWVkZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IE1l
ZGlhS2V5TmVlZGVkRXZlbnRJbml0JiBpbml0aWFsaXplcik7CisKKyAgICBSZWZQdHI8VWludDhB
cnJheT4gbV9pbml0RGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlOZWVkZWRFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzZDQwN2I1MDY3
YzZlOWMwZDRhNGIyZDU3NDgzOTVmNGNhNjAzOWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaWRsCkBA
IC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK2ludGVyZmFjZSBbCisgICAgQ29uZGl0aW9uYWw9
RU5DUllQVEVEX01FRElBX1YyLAorICAgIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRp
YSwKKyAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50IAorXSBNZWRpYUtleU5lZWRlZEV2ZW50
IDogRXZlbnQgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVaW50OEFycmF5IGluaXREYXRhOwor
fTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVNlc3Npb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiYmEzZGI4NjA5ODBlYTZkOTZiOWRk
ODY3YTI2OTNhODk2YjYzYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTAsMCArMSwyMzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlTZXNz
aW9uLmgiCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjaW5jbHVkZSAiQ0RN
LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgor
I2luY2x1ZGUgIk1lZGlhS2V5RXJyb3IuaCIKKyNpbmNsdWRlICJNZWRpYUtleU1lc3NhZ2VFdmVu
dC5oIgorI2luY2x1ZGUgIk1lZGlhS2V5cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bh
c3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleVNlc3Npb246OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBNZWRpYUtleXMqIGtleXMsIGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFLZXlTZXNzaW9uKGNv
bnRleHQsIGtleXMsIGtleVN5c3RlbSkpOworfQorCitNZWRpYUtleVNlc3Npb246Ok1lZGlhS2V5
U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBNZWRpYUtleXMqIGtleXMs
IGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQorICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIoY29udGV4dCkKKyAgICAsIG1fa2V5cyhrZXlzKQorICAgICwgbV9rZXlTeXN0ZW0oa2V5U3lz
dGVtKQorICAgICwgbV9hc3luY0V2ZW50UXVldWUoR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSh0
aGlzKSkKKyAgICAsIG1fc2Vzc2lvbihrZXlzLT5jZG0oKS0+Y3JlYXRlU2Vzc2lvbigpKQorICAg
ICwgbV9rZXlSZXF1ZXN0VGltZXIodGhpcywgJk1lZGlhS2V5U2Vzc2lvbjo6a2V5UmVxdWVzdFRp
bWVyRmlyZWQpCisgICAgLCBtX2FkZEtleVRpbWVyKHRoaXMsICZNZWRpYUtleVNlc3Npb246OmFk
ZEtleVRpbWVyRmlyZWQpCit7Cit9CisKK01lZGlhS2V5U2Vzc2lvbjo6fk1lZGlhS2V5U2Vzc2lv
bigpCit7CisgICAgY2xvc2UoKTsKK30KKwordm9pZCBNZWRpYUtleVNlc3Npb246OnNldEVycm9y
KE1lZGlhS2V5RXJyb3IqIGVycm9yKQoreworICAgIG1fZXJyb3IgPSBlcnJvcjsKK30KKwordm9p
ZCBNZWRpYUtleVNlc3Npb246OmNsb3NlKCkKK3sKKyAgICBpZiAobV9zZXNzaW9uKQorICAgICAg
ICBtX3Nlc3Npb24tPnJlbGVhc2VLZXlzKCk7CisgICAgbV9zZXNzaW9uID0gMDsKKyAgICBtX2Fz
eW5jRXZlbnRRdWV1ZS0+Y2FuY2VsQWxsRXZlbnRzKCk7Cit9CisKK2NvbnN0IFN0cmluZyYgTWVk
aWFLZXlTZXNzaW9uOjpzZXNzaW9uSWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3Nlc3Npb24t
PnNlc3Npb25JZCgpOworfQorCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1
ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhKQoreworICAg
IG1fcGVuZGluZ0tleVJlcXVlc3RzLmFwcGVuZChQZW5kaW5nS2V5UmVxdWVzdChtaW1lVHlwZSwg
aW5pdERhdGEpKTsKKyAgICBtX2tleVJlcXVlc3RUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisK
K3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjprZXlSZXF1ZXN0VGltZXJGaXJlZChUaW1lcjxNZWRpYUtl
eVNlc3Npb24+KikKK3sKKyAgICBBU1NFUlQobV9wZW5kaW5nS2V5UmVxdWVzdHMuc2l6ZSgpKTsK
KyAgICBpZiAoIW1fc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgd2hpbGUgKCFtX3Bl
bmRpbmdLZXlSZXF1ZXN0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgUGVuZGluZ0tleVJlcXVlc3Qg
cmVxdWVzdCA9IG1fcGVuZGluZ0tleVJlcXVlc3RzLnRha2VGaXJzdCgpOworCisgICAgICAgIC8v
IE5PVEU6IENvbnRpbnVlZCBmcm9tIHN0ZXAgNSBpbiBNZWRpYUtleXM6OmNyZWF0ZVNlc3Npb24o
KS4KKyAgICAgICAgLy8gVGhlIHVzZXIgYWdlbnQgd2lsbCBhc3luY2hyb25vdXNseSBleGVjdXRl
IHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gdGhlIHRhc2s6CisKKyAgICAgICAgLy8gMS4gTGV0IGNk
bSBiZSB0aGUgY2RtIGxvYWRlZCBpbiB0aGUgTWVkaWFLZXlzIGNvbnN0cnVjdG9yLgorICAgICAg
ICAvLyAyLiBMZXQgZGVzdGluYXRpb25VUkwgYmUgbnVsbC4KKyAgICAgICAgU3RyaW5nIGRlc3Rp
bmF0aW9uVVJMOworICAgICAgICBNZWRpYUtleUVycm9yOjpDb2RlIGVycm9yQ29kZSA9IDA7Cisg
ICAgICAgIHVuc2lnbmVkIGxvbmcgc3lzdGVtQ29kZSA9IDA7CisKKyAgICAgICAgLy8gMy4gVXNl
IGNkbSB0byBnZW5lcmF0ZSBhIGtleSByZXF1ZXN0IGFuZCBmb2xsb3cgdGhlIHN0ZXBzIGZvciB0
aGUgZmlyc3QgbWF0Y2hpbmcgY29uZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgorCisg
ICAgICAgIFJlZlB0cjxVaW50OEFycmF5PiBrZXlSZXF1ZXN0ID0gbV9zZXNzaW9uLT5nZW5lcmF0
ZUtleVJlcXVlc3QocmVxdWVzdC5taW1lVHlwZSwgcmVxdWVzdC5pbml0RGF0YS5nZXQoKSwgZGVz
dGluYXRpb25VUkwsIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7CisKKyAgICAgICAgLy8gT3RoZXJ3
aXNlIFtpZiBhIHJlcXVlc3QgaXMgbm90IHN1Y2Nlc3NmdWxseSBnZW5lcmF0ZWRdOgorICAgICAg
ICBpZiAoIWtleVJlcXVlc3QpIHsKKyAgICAgICAgICAgIC8vIDMuMS4gQ3JlYXRlIGEgbmV3IE1l
ZGlhS2V5RXJyb3Igb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgorICAgICAg
ICAgICAgLy8gICAgICBjb2RlID0gdGhlIGFwcHJvcHJpYXRlIE1lZGlhS2V5RXJyb3IgY29kZQor
ICAgICAgICAgICAgLy8gICAgICBzeXN0ZW1Db2RlID0gYSBLZXkgU3lzdGVtLXNwZWNpZmljIHZh
bHVlLCBpZiBwcm92aWRlZCwgYW5kIDAgb3RoZXJ3aXNlCisgICAgICAgICAgICBSZWZQdHI8TWVk
aWFLZXlFcnJvcj4gZXJyb3IgPSBNZWRpYUtleUVycm9yOjpjcmVhdGUoZXJyb3JDb2RlLCBzeXN0
ZW1Db2RlKS5nZXQoKTsKKworICAgICAgICAgICAgLy8gMy4yLiBTZXQgdGhlIE1lZGlhS2V5U2Vz
c2lvbiBvYmplY3QncyBlcnJvciBhdHRyaWJ1dGUgdG8gdGhlIGVycm9yIG9iamVjdCBjcmVhdGVk
IGluIHRoZSBwcmV2aW91cyBzdGVwLgorICAgICAgICAgICAgc2V0RXJyb3IoZXJyb3IuZ2V0KCkp
OworCisgICAgICAgICAgICAvLyAzLjMuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2
ZW50IG5hbWVkIGtleWVycm9yIGF0IHRoZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0LgorICAgICAg
ICAgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndl
YmtpdGtleWVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudC0+c2V0
VGFyZ2V0KHRoaXMpOworICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVu
dChldmVudC5yZWxlYXNlKCkpOworCisgICAgICAgICAgICAvLyAzLjQuIEFib3J0IHRoZSB0YXNr
LgorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyA0LiBxdWV1
ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBrZXltZXNzYWdlIGF0IHRoZSBu
ZXcgb2JqZWN0CisgICAgICAgIC8vICAgIFRoZSBldmVudCBpcyBvZiB0eXBlIE1lZGlhS2V5TWVz
c2FnZUV2ZW50IGFuZCBoYXM6CisgICAgICAgIC8vICAgIG1lc3NhZ2UgPSBrZXkgcmVxdWVzdAor
ICAgICAgICAvLyAgICBkZXN0aW5hdGlvblVSTCA9IGRlc3RpbmF0aW9uVVJMCisgICAgICAgIE1l
ZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCBpbml0OworICAgICAgICBpbml0LmJ1YmJsZXMgPSBmYWxz
ZTsKKyAgICAgICAgaW5pdC5jYW5jZWxhYmxlID0gZmFsc2U7CisgICAgICAgIGluaXQubWVzc2Fn
ZSA9IGtleVJlcXVlc3Q7CisgICAgICAgIGluaXQuZGVzdGluYXRpb25VUkwgPSBkZXN0aW5hdGlv
blVSTDsKKyAgICAgICAgUmVmUHRyPE1lZGlhS2V5TWVzc2FnZUV2ZW50PiBldmVudCA9IE1lZGlh
S2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtleW1lc3NhZ2VFdmVu
dCwgaW5pdCk7CisgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIG1fYXN5
bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQpOworICAgIH0KK30KKwordm9pZCBNZWRp
YUtleVNlc3Npb246OmFkZEtleShVaW50OEFycmF5KiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIC8vIEZyb20gPGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxl
L3RpcC9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLmh0bWwjZG9tLWFkZGtleT46Cisg
ICAgLy8gVGhlIGFkZEtleShrZXkpIG1ldGhvZCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBz
OgorICAgIC8vIDEuIElmIHRoZSBmaXJzdCBvciBzZWNvbmQgYXJndW1lbnQgW3NpY10gaXMgbnVs
bCBvciBhbiBlbXB0eSBhcnJheSwgdGhyb3cgYW4gSU5WQUxJRF9BQ0NFU1NfRVJSLgorICAgIC8v
IE5PVEU6IHRoZSByZWZlcmVuY2UgdG8gYSAic2Vjb25kIGFyZ3VtZW50IiBpcyBhIHNwZWMgYnVn
LgorICAgIGlmICgha2V5IHx8ICFrZXktPmxlbmd0aCgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJ
RF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gMi4gU2NoZWR1
bGUgYSB0YXNrIHRvIGhhbmRsZSB0aGUgY2FsbCwgcHJvdmlkaW5nIGtleS4KKyAgICBtX3BlbmRp
bmdLZXlzLmFwcGVuZChrZXkpOworICAgIG1fYWRkS2V5VGltZXIuc3RhcnRPbmVTaG90KDApOwor
fQorCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGltZXJGaXJlZChUaW1lcjxNZWRpYUtl
eVNlc3Npb24+KikKK3sKKyAgICBBU1NFUlQobV9wZW5kaW5nS2V5cy5zaXplKCkpOworICAgIGlm
ICghbV9zZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICB3aGlsZSAoIW1fcGVuZGluZ0tl
eXMuaXNFbXB0eSgpKSB7CisgICAgICAgIFJlZlB0cjxVaW50OEFycmF5PiBwZW5kaW5nS2V5ID0g
bV9wZW5kaW5nS2V5cy50YWtlRmlyc3QoKTsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgZXJyb3JD
b2RlID0gMDsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBzeXN0ZW1Db2RlID0gMDsKKworICAgICAg
ICAvLyBOT1RFOiBDb250aW51ZWQgZnJvbSBzdGVwIDIuIG9mIE1lZGlhS2V5U2Vzc2lvbjo6YWRk
S2V5KCkKKyAgICAgICAgLy8gMi4xLiBMZXQgY2RtIGJlIHRoZSBjZG0gbG9hZGVkIGluIHRoZSBN
ZWRpYUtleXMgY29uc3RydWN0b3IuCisgICAgICAgIC8vIE5PVEU6IFRoaXMgaXMgbV9zZXNzaW9u
LgorICAgICAgICAvLyAyLjIuIExldCAnZGlkIHN0b3JlIGtleScgYmUgZmFsc2UuCisgICAgICAg
IGJvb2wgZGlkU3RvcmVLZXkgPSBmYWxzZTsKKyAgICAgICAgLy8gMi4zLiBMZXQgJ25leHQgbWVz
c2FnZScgYmUgbnVsbC4KKyAgICAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IG5leHRNZXNzYWdlOwor
ICAgICAgICAvLyAyLjQuIFVzZSBjZG0gdG8gaGFuZGxlIGtleS4KKyAgICAgICAgZGlkU3RvcmVL
ZXkgPSBtX3Nlc3Npb24tPmFkZEtleShwZW5kaW5nS2V5LmdldCgpLCBuZXh0TWVzc2FnZSwgZXJy
b3JDb2RlLCBzeXN0ZW1Db2RlKTsKKyAgICAgICAgLy8gMi41LiBJZiBkaWQgc3RvcmUga2V5IGlz
IHRydWUgYW5kIHRoZSBtZWRpYSBlbGVtZW50IGlzIHdhaXRpbmcgZm9yIGEga2V5LCBxdWV1ZSBh
IHRhc2sgdG8gYXR0ZW1wdCB0byByZXN1bWUgcGxheWJhY2suCisgICAgICAgIC8vIFRPRE86IEZp
bmQgYW5kIHJlc3RhcnQgdGhlIG1lZGlhIGVsZW1lbnQKKworICAgICAgICAvLyAyLjYuIElmIG5l
eHQgbWVzc2FnZSBpcyBub3QgbnVsbCwgcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZl
bnQgbmFtZWQga2V5bWVzc2FnZSBhdCB0aGUgTWVkaWFLZXlTZXNzaW9uIG9iamVjdC4KKyAgICAg
ICAgLy8gICAgICBUaGUgZXZlbnQgaXMgb2YgdHlwZSBNZWRpYUtleU1lc3NhZ2VFdmVudCBhbmQg
aGFzOgorICAgICAgICAvLyAgICAgIG1lc3NhZ2UgPSBuZXh0IG1lc3NhZ2UKKyAgICAgICAgLy8g
ICAgICBkZXN0aW5hdGlvblVSTCA9IG51bGwKKyAgICAgICAgaWYgKG5leHRNZXNzYWdlKSB7Cisg
ICAgICAgICAgICBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQgaW5pdDsKKyAgICAgICAgICAgIGlu
aXQuYnViYmxlcyA9IGZhbHNlOworICAgICAgICAgICAgaW5pdC5jYW5jZWxhYmxlID0gZmFsc2U7
CisgICAgICAgICAgICBpbml0Lm1lc3NhZ2UgPSBuZXh0TWVzc2FnZTsKKyAgICAgICAgICAgIFJl
ZlB0cjxNZWRpYUtleU1lc3NhZ2VFdmVudD4gZXZlbnQgPSBNZWRpYUtleU1lc3NhZ2VFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXltZXNzYWdlRXZlbnQsIGluaXQpOworICAgICAg
ICAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1
ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gMi43LiBJ
ZiBkaWQgc3RvcmUga2V5IGlzIHRydWUsIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2
ZW50IG5hbWVkIGtleWFkZGVkIGF0IHRoZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0LgorICAgICAg
ICBpZiAoZGlkU3RvcmVLZXkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxFdmVudD4ga2V5YWRkZWRF
dmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtleWFkZGVkRXZlbnQsIGZh
bHNlLCBmYWxzZSk7CisgICAgICAgICAgICBrZXlhZGRlZEV2ZW50LT5zZXRUYXJnZXQodGhpcyk7
CisgICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGtleWFkZGVkRXZl
bnQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gMi44LiBJZiBhbnkgb2YgdGhlIHByZWNlZGlu
ZyBzdGVwcyBpbiB0aGUgdGFzayBmYWlsZWQKKyAgICAgICAgaWYgKCFkaWRTdG9yZUtleSkgewor
ICAgICAgICAgICAgLy8gMi44LjEuIENyZWF0ZSBhIG5ldyBNZWRpYUtleUVycm9yIG9iamVjdCB3
aXRoIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKyAgICAgICAgICAgIC8vICAgICAgICBjb2Rl
ID0gdGhlIGFwcHJvcHJpYXRlIE1lZGlhS2V5RXJyb3IgY29kZQorICAgICAgICAgICAgLy8gICAg
ICAgIHN5c3RlbUNvZGUgPSBhIEtleSBTeXN0ZW0tc3BlY2lmaWMgdmFsdWUsIGlmIHByb3ZpZGVk
LCBhbmQgMCBvdGhlcndpc2UKKyAgICAgICAgICAgIFJlZlB0cjxNZWRpYUtleUVycm9yPiBlcnJv
ciA9IE1lZGlhS2V5RXJyb3I6OmNyZWF0ZShlcnJvckNvZGUsIHN5c3RlbUNvZGUpLmdldCgpOwor
CisgICAgICAgICAgICAvLyAyLjguMi4gU2V0IHRoZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0J3Mg
ZXJyb3IgYXR0cmlidXRlIHRvIHRoZSBlcnJvciBvYmplY3QgY3JlYXRlZCBpbiB0aGUgcHJldmlv
dXMgc3RlcC4KKyAgICAgICAgICAgIHNldEVycm9yKGVycm9yLmdldCgpKTsKKworICAgICAgICAg
ICAgLy8gMi44LjMuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGtl
eWVycm9yIGF0IHRoZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0LgorICAgICAgICAgICAgUmVmUHRy
PEV2ZW50PiBrZXllcnJvckV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0
a2V5ZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgIGtleWVycm9yRXZlbnQt
PnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVl
RXZlbnQoa2V5ZXJyb3JFdmVudC5yZWxlYXNlKCkpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICAvLyAyLjguNC4gQWJvcnQgdGhlIHRhc2suCisgICAgICAgICAgICAvLyBOT1RFOiBuby1vcAor
ICAgICAgICB9CisgICAgfQorfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhS2V5U2Vzc2lv
bjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRl
cmZhY2VGb3JNZWRpYUtleVNlc3Npb247Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1l
ZGlhS2V5U2Vzc2lvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDBmMzkwMmUzMmIw
M2UzYjJmN2FmNTgwODY4M2YyYmYwNzBkMjZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtMCwwICsx
LDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFLZXlTZXNzaW9uX2gKKyNkZWZpbmUg
TWVkaWFLZXlTZXNzaW9uX2gKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNp
bmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgorI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgR2VuZXJpY0V2ZW50UXVldWU7CitjbGFzcyBNZWRpYUtleUVycm9yOworY2xhc3MgTWVkaWFL
ZXlzOworY2xhc3MgQ0RNU2Vzc2lvbjsKKworY2xhc3MgTWVkaWFLZXlTZXNzaW9uIDogcHVibGlj
IFJlZkNvdW50ZWQ8TWVkaWFLZXlTZXNzaW9uPiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMg
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1lZGlhS2V5U2Vzc2lvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNZWRp
YUtleXMqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CisgICAgfk1lZGlhS2V5U2Vzc2lvbigp
OworCisgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2tleVN5
c3RlbTsgfQorICAgIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKCkgY29uc3Q7CisKKyAgICB2b2lk
IHNldEVycm9yKE1lZGlhS2V5RXJyb3IqKTsKKyAgICBNZWRpYUtleUVycm9yKiBlcnJvcigpIHsg
cmV0dXJuIG1fZXJyb3IuZ2V0KCk7IH0KKworICAgIHZvaWQgc2V0S2V5cyhNZWRpYUtleXMqIGtl
eXMpIHsgbV9rZXlzID0ga2V5czsgfQorICAgIE1lZGlhS2V5cyoga2V5cygpIGNvbnN0IHsgcmV0
dXJuIG1fa2V5czsgfQorCisgICAgdm9pZCBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEpOworICAgIHZvaWQgYWRkS2V5KFVpbnQ4
QXJyYXkqIGtleSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgY2xvc2UoKTsKKworICAgIHVz
aW5nIFJlZkNvdW50ZWQ8TWVkaWFLZXlTZXNzaW9uPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50
ZWQ8TWVkaWFLZXlTZXNzaW9uPjo6ZGVyZWY7CisKKyAgICB2b2lkIGVucXVldWVFdmVudChQYXNz
UmVmUHRyPEV2ZW50Pik7CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdl
YmtpdGtleWFkZGVkKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtp
dGtleWVycm9yKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGtl
eW1lc3NhZ2UpOworCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5h
bWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERTsKKworcHJvdGVjdGVkOgor
ICAgIE1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWVkaWFLZXlzKiwg
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOworICAgIHZvaWQga2V5UmVxdWVzdFRpbWVyRmlyZWQo
VGltZXI8TWVkaWFLZXlTZXNzaW9uPiopOworICAgIHZvaWQgYWRkS2V5VGltZXJGaXJlZChUaW1l
cjxNZWRpYUtleVNlc3Npb24+Kik7CisKKyAgICBNZWRpYUtleXMqIG1fa2V5czsKKyAgICBTdHJp
bmcgbV9rZXlTeXN0ZW07CisgICAgU3RyaW5nIG1fc2Vzc2lvbklkOworICAgIFJlZlB0cjxNZWRp
YUtleUVycm9yPiBtX2Vycm9yOworICAgIE93blB0cjxHZW5lcmljRXZlbnRRdWV1ZT4gbV9hc3lu
Y0V2ZW50UXVldWU7CisgICAgT3duUHRyPENETVNlc3Npb24+IG1fc2Vzc2lvbjsKKworICAgIHN0
cnVjdCBQZW5kaW5nS2V5UmVxdWVzdCB7CisgICAgICAgIFBlbmRpbmdLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhKSA6IG1pbWVUeXBlKG1pbWVU
eXBlKSwgaW5pdERhdGEoaW5pdERhdGEpIHsgfQorICAgICAgICBTdHJpbmcgbWltZVR5cGU7Cisg
ICAgICAgIFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YTsKKyAgICB9OworICAgIERlcXVlPFBl
bmRpbmdLZXlSZXF1ZXN0PiBtX3BlbmRpbmdLZXlSZXF1ZXN0czsKKyAgICBUaW1lcjxNZWRpYUtl
eVNlc3Npb24+IG1fa2V5UmVxdWVzdFRpbWVyOworCisgICAgRGVxdWU8UmVmUHRyPFVpbnQ4QXJy
YXk+ID4gbV9wZW5kaW5nS2V5czsKKyAgICBUaW1lcjxNZWRpYUtleVNlc3Npb24+IG1fYWRkS2V5
VGltZXI7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZF
UlJJREUgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZF
UlJJREUgeyBkZXJlZigpOyB9CisKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRU
YXJnZXREYXRhKCkgT1ZFUlJJREUgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisgICAg
dmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURF
IHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorCisgICAgRXZlbnRUYXJnZXREYXRhIG1f
ZXZlbnRUYXJnZXREYXRhOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQV9WMikKKworI2VuZGlmIC8vIE1lZGlhS2V5U2Vzc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTEyNWJiM2QxZTAzM2MyYjA1NWI4MWM4YjYwNmI5ZTMwMmJjNmQ2ZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmlkbApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICAgICAqLworCitpbnRlcmZh
Y2UgWworICAgIENvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMiwKKyAgICBWOEVuYWJsZWRB
dFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWEsCisgICAgRXZlbnRUYXJnZXQsCitdIE1lZGlhS2V5U2Vz
c2lvbiB7CisgICAgLy8gZXJyb3Igc3RhdGUKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFL
ZXlFcnJvciBlcnJvcjsKKworICAgIC8vIHNlc3Npb24gcHJvcGVydGllcworICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcga2V5U3lzdGVtOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgc2Vzc2lvbklkOworCisgICAgLy8gc2Vzc2lvbiBvcGVyYXRpb25zCisgICAgdm9p
ZCBhZGRLZXkoaW4gVWludDhBcnJheSBrZXkpCisgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24p
OworICAgIHZvaWQgY2xvc2UoKTsKKyAgICAKKyAgICAvLyBFdmVudExpc3RlbmVycworICAgIGF0
dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBFdmVudExpc3RlbmVy
IG9ud2Via2l0a2V5YWRkZWQ7CisgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5j
cnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXllcnJvcjsKKyAgICBhdHRyaWJ1
dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gRXZlbnRMaXN0ZW5lciBvbndl
YmtpdGtleW1lc3NhZ2U7CisKKyAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICB2b2lk
IGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIHZvaWQgcmVtb3Zl
RXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgYm9vbGVhbiBk
aXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKKyAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9u
KTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRjMzNjYzM4ZjQwZTJmOGFhYzA5NDU1ODU1ZmI3NDI0
OWJiOGZhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYUtleXMuaCIKKworI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlICJDRE0uaCIKKyNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCisjaW5jbHVkZSAiTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJNZWRp
YUtleVNlc3Npb24uaCIKKyNpbmNsdWRlICJVVUlELmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlhS2V5cz4gTWVkaWFL
ZXlzOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIC8vIEZyb20gPGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxl
L3RpcC9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLmh0bWwjZG9tLW1lZGlhLWtleXMt
Y29uc3RydWN0b3I+OgorICAgIC8vIFRoZSBNZWRpYUtleXMoa2V5U3lzdGVtKSBjb25zdHJ1Y3Rv
ciBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorCisgICAgLy8gMS4gSWYga2V5U3lzdGVt
IGlzIG51bGwgb3IgYW4gZW1wdHkgc3RyaW5nLCB0aHJvdyBhbiBJTlZBTElEX0FDQ0VTU19FUlIg
ZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoa2V5U3lzdGVtLmlzTnVs
bCgpIHx8IGtleVN5c3RlbS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VT
U19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8vIDIuIElmIGtleVN5c3Rl
bSBpcyBub3Qgb25lIG9mIHRoZSB1c2VyIGFnZW50J3Mgc3VwcG9ydGVkIEtleSBTeXN0ZW1zLCB0
aHJvdyBhIE5PVF9TVVBQT1JURURfRVJSIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAo
IUNETTo6c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkgeworICAgICAgICBlYyA9IE5PVF9T
VVBQT1JURURfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyAzLiBMZXQg
Y2RtIGJlIHRoZSBjb250ZW50IGRlY3J5cHRpb24gbW9kdWxlIGNvcnJlc3BvbmRpbmcgdG8ga2V5
U3lzdGVtLgorICAgIC8vIDQuIExvYWQgY2RtIGlmIG5lY2Vzc2FyeS4KKyAgICBPd25QdHI8Q0RN
PiBjZG0gPSBDRE06OmNyZWF0ZShrZXlTeXN0ZW0pOworCisgICAgLy8gNS4gQ3JlYXRlIGEgbmV3
IE1lZGlhS2V5cyBvYmplY3QuCisgICAgLy8gNS4xIExldCB0aGUga2V5U3lzdGVtIGF0dHJpYnV0
ZSBiZSBrZXlTeXN0ZW0uCisgICAgLy8gNi4gUmV0dXJuIHRoZSBuZXcgb2JqZWN0IHRvIHRoZSBj
YWxsZXIuCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUtleXMoa2V5U3lzdGVtLCBjZG0u
cmVsZWFzZSgpKSk7Cit9CisKK01lZGlhS2V5czo6TWVkaWFLZXlzKGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBQYXNzT3duUHRyPENETT4gY2RtKQorICAgIDogbV9rZXlTeXN0ZW0oa2V5U3lzdGVt
KQorICAgICwgbV9jZG0oY2RtKQoreworfQorCitNZWRpYUtleXM6On5NZWRpYUtleXMoKQorewor
ICAgIC8vIEZyb20gPGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL3Rp
cC9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLmh0bWwjZG9tLW1lZGlhLWtleXMtY29u
c3RydWN0b3I+OgorICAgIC8vIFdoZW4gZGVzdHJveWluZyBhIE1lZGlhS2V5cyBvYmplY3QsIGZv
bGxvdyB0aGUgc3RlcHMgaW4gY2xvc2UoKS4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
c2Vzc2lvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgbV9zZXNzaW9uc1tpXS0+Y2xvc2UoKTsK
KyAgICAgICAgbV9zZXNzaW9uc1tpXS0+c2V0S2V5cygwKTsKKyAgICB9Cit9CisKK1Bhc3NSZWZQ
dHI8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleXM6OmNyZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB0eXBlLCBVaW50OEFycmF5KiBpbml0
RGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8gRnJvbSA8aHR0cDovL2R2Y3MudzMu
b3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQt
bWVkaWEuaHRtbCNkb20tY3JlYXRlc2Vzc2lvbj46CisgICAgLy8gVGhlIGNyZWF0ZVNlc3Npb24o
dHlwZSwgaW5pdERhdGEpIG1ldGhvZCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAg
IC8vIE5vdGU6IFRoZSBjb250ZW50cyBvZiBpbml0RGF0YSBhcmUgY29udGFpbmVyLXNwZWNpZmlj
IEluaXRpYWxpemF0aW9uIERhdGEuCisKKyAgICAvLyAxLiBJZiB0eXBlIGlzIG51bGwgb3IgYW4g
ZW1wdHkgc3RyaW5nIGFuZCBpbml0RGF0YSBpcyBub3QgbnVsbCBvciBhbiBlbXB0eSBzdHJpbmcs
IHRocm93IGFuCisgICAgLy8gSU5WQUxJRF9BQ0NFU1NfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQg
dGhlc2Ugc3RlcHMuCisgICAgaWYgKCh0eXBlLmlzTnVsbCgpIHx8IHR5cGUuaXNFbXB0eSgpKSAm
JiAoIWluaXREYXRhIHx8IGluaXREYXRhLT5sZW5ndGgoKSkpIHsKKyAgICAgICAgZWMgPSBJTlZB
TElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8vIDIuIElm
IHR5cGUgY29udGFpbnMgYSBNSU1FIHR5cGUgdGhhdCBpcyBub3Qgc3VwcG9ydGVkIG9yIGlzIG5v
dCBzdXBwb3J0ZWQgYnkgdGhlIGtleVN5c3RlbSwgdGhyb3cKKyAgICAvLyBhIE5PVF9TVVBQT1JU
RURfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgaWYgKCF0eXBlLmlz
TnVsbCgpICYmICF0eXBlLmlzRW1wdHkoKSAmJiAhbV9jZG0tPnN1cHBvcnRzTUlNRVR5cGUodHlw
ZSkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorCisgICAgLy8gMy4gQ3JlYXRlIGEgbmV3IE1lZGlhS2V5U2Vzc2lvbiBvYmplY3Qu
CisgICAgLy8gMy4xIExldCB0aGUga2V5U3lzdGVtIGF0dHJpYnV0ZSBiZSBrZXlTeXN0ZW0uCisg
ICAgLy8gMy4yIExldCB0aGUgc2Vzc2lvbklkIGF0dHJpYnV0ZSBiZSBhIHVuaXF1ZSBTZXNzaW9u
IElEIHN0cmluZy4gSXQgbWF5IGJlIGdlbmVyYXRlZCBieSBjZG0uCisgICAgUmVmUHRyPE1lZGlh
S2V5U2Vzc2lvbj4gc2Vzc2lvbiA9IE1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKGNvbnRleHQsIHRo
aXMsIGtleVN5c3RlbSgpKTsKKworICAgIC8vIDQuIEFkZCB0aGUgbmV3IG9iamVjdCB0byBhbiBp
bnRlcm5hbCBsaXN0IG9mIHNlc3Npb24gb2JqZWN0cy4KKyAgICBtX3Nlc3Npb25zLmFwcGVuZChz
ZXNzaW9uKTsKKworICAgIC8vIDUuIFNjaGVkdWxlIGEgdGFzayB0byBnZW5lcmF0ZSBhIGtleSBy
ZXF1ZXN0LCBwcm92aWRpbmcgdHlwZSwgaW5pdERhdGEsIGFuZCB0aGUgbmV3IG9iamVjdC4KKyAg
ICBzZXNzaW9uLT5nZW5lcmF0ZUtleVJlcXVlc3QodHlwZSwgaW5pdERhdGEpOworCisgICAgLy8g
Ni4gUmV0dXJuIHRoZSBuZXcgb2JqZWN0IHRvIHRoZSBjYWxsZXIuCisgICAgcmV0dXJuIHNlc3Np
b247Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGFkYjc1ZjYxZTNjNmIyYWRhZDc1
MGJjMzRkNjgyZmM5ZWUwN2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaApAQCAtMCwwICsxLDY4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBNZWRpYUtleXNfaAorI2RlZmluZSBNZWRpYUtleXNfaAorCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0RN
OworY2xhc3MgTWVkaWFLZXlTZXNzaW9uOworCitjbGFzcyBNZWRpYUtleXMgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYUtleXM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUtleXM+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIH5NZWRpYUtleXMoKTsKKworICAgIFBhc3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBjcmVh
dGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBVaW50OEFycmF5KiBpbml0RGF0YSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2tleVN5c3RlbTsgfQorICAgIENETSog
Y2RtKCkgeyByZXR1cm4gbV9jZG0uZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIE1lZGlhS2V5
cyhjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgUGFzc093blB0cjxDRE0+KTsKKworICAgIFZlY3Rv
cjxSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiA+IG1fc2Vzc2lvbnM7CisKKyAgICBTdHJpbmcgbV9r
ZXlTeXN0ZW07CisgICAgT3duUHRyPENETT4gbV9jZG07Cit9OworCit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCisjZW5kaWYgLy8gTWVkaWFLZXlzX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNjRiNzVjYzRiOWMzNmI0YjY3NjFkNDk3YmU1MDQ4NDNiYTZlOWZhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuaWRsCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyAKK2ludGVyZmFjZSBbCisgICAg
Q29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyLAorICAgIFY4RW5hYmxlZEF0UnVudGltZT1l
bmNyeXB0ZWRNZWRpYSwKKyAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcga2V5U3lzdGVtKSwK
KyAgICBDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiwKK10gTWVkaWFLZXlzIHsKKyAgICBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gTWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Np
b24oaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHR5cGUsIGluIFtP
cHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIFVpbnQ4QXJyYXkgaW5pdERhdGEpCisgICAgICAg
IHJhaXNlcyhET01FeGNlcHRpb24pOworCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBrZXlTeXN0ZW07Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAyYzNlZjkzYTdjM2YxNDY0
M2ExZDc4ZDNlOWNmOWRhMDFlYjg1ZmFhLi5lNzQ1MjFkNTJlMGMyMzFkZTFkNDFiODY5MDA2ZGQ2
NTBmOWY2ZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjc1MSwzICsyNzUxLDcgQEAgX19a
TjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMTlpc0NTU1JlZ2lvbnNFbmFibGVkRQog
I2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCiBfX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXMyNWFyZVNlYW1sZXNzSUZyYW1lc0VuYWJsZWRFCiAjZW5kaWYKKworI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUFfVjIpCitfX1pON1dlYkNvcmUzQ0RNMThyZWdpc3RlckNETUZhY3Rv
cnlFUEZOM1dURjEwUGFzc093blB0cklOU18xOUNETVByaXZhdGVJbnRlcmZhY2VFRUVQUzBfRVBG
YlJLTlMxXzZTdHJpbmdFRQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTQwZThkMzIzYTgyZjJlMjZkYmFhNjJmMjAz
Y2MyODBkM2YwOGY3MS4uYzA3YWRhN2NhOWI1NTUwZmY5NzRhNTBlNjAzZGM0ZGVkNTI0ZTQ4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTQ3NSw3ICsxNDc1LDYgQEAKIAkJNEI2RkE2RjQwQzM5RTQ4QzAwMDg3MDExIC8qIFNt
YXJ0UmVwbGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEI2RkE2RjIwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCNkZBNkY1MEMzOUU0OEMw
MDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjMwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFj
ZS5jcHAgKi87IH07CiAJCTRCNkZBNkY3MEMzOUU0QTEwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2VD
Ri5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZG
QTZGNjBDMzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwICovOyB9OwotCQk0QjYx
NzM3Mzc5NjM2RjYxNkUyNzczNjggLyogSURCSGlzdG9ncmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2MTczNzM3OTYzNkY2MTZFMjc3MzY4IC8q
IElEQkhpc3RvZ3JhbXMuaCAqLzsgfTsKIAkJNEI4QUY0QUEwQjFDRTAyQjAwNjg3NjkwIC8qIENs
aXBib2FyZEFjY2Vzc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEI4QUY0QTkwQjFDRTAyQjAwNjg3NjkwIC8qIENsaXBib2FyZEFjY2Vzc1Bv
bGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTRCQUU5NUIxMEIyRkE5Q0UwMEFFRDhBMCAvKiBFZGl0b3JEZWxldGVBY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCQUU5NUIwMEIyRkE5Q0Uw
MEFFRDhBMCAvKiBFZGl0b3JEZWxldGVBY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RDI3M0NGOTE2Njk0MjA4MDAyNTlDQTEgLyogSW5z
cGVjdG9ySW5wdXRBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0RDI3M0NGNzE2Njk0MjA4MDAyNTlDQTEgLyogSW5zcGVjdG9ySW5wdXRBZ2Vu
dC5jcHAgKi87IH07CkBAIC0zNjQ2LDggKzM2NDUsOCBAQAogCQk5NzdFMkRDRDEyRjBFMjgzMDBD
MTMzNzkgLyogSFRNTFNvdXJjZVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTc3RTJEQ0IxMkYwRTI4MzAwQzEzMzc5IC8qIEhUTUxTb3Vy
Y2VUcmFja2VyLmNwcCAqLzsgfTsKIAkJOTc3RTJEQ0UxMkYwRTI4MzAwQzEzMzc5IC8qIEhUTUxT
b3VyY2VUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NzdFMkRDQzEyRjBFMjgzMDBDMTMzNzkgLyogSFRNTFNvdXJjZVRyYWNrZXIuaCAqLzsg
fTsKIAkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc3RTJFMEIxMkYwRkM5QzAw
QzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwICovOyB9OwotCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMz
NzkgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTc3RTJFMEMxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuaCAqLzsgfTsK
IAkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzgwIC8qIFhTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzdFMkUwQjEyRjBG
QzlDMDBDMTMzODAgLyogWFNTQXVkaXRvckRlbGVnYXRlLmNwcCAqLzsgfTsKKwkJOTc3RTJFMEYx
MkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3N0UyRTBDMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRp
dG9yLmggKi87IH07CiAJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM4MCAvKiBYU1NBdWRpdG9yRGVs
ZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3
N0UyRTBDMTJGMEZDOUMwMEMxMzM4MCAvKiBYU1NBdWRpdG9yRGVsZWdhdGUuaCAqLzsgfTsKIAkJ
OTc4QUQ2NzQxNDEzMEE4RDAwQzdDQUUzIC8qIEhUTUxTcGFuRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzhBRDY3MTE0MTMwQThEMDBD
N0NBRTMgLyogSFRNTFNwYW5FbGVtZW50LmNwcCAqLzsgfTsKIAkJOTc4QUQ2NzUxNDEzMEE4RDAw
QzdDQUUzIC8qIEhUTUxTcGFuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTc4QUQ2NzIxNDEzMEE4RDAwQzdDQUUzIC8qIEhUTUxTcGFuRWxl
bWVudC5oICovOyB9OwpAQCAtNTk3OSw2ICs1OTc4LDcgQEAKIAkJQ0NDMkI1MTYxNUY2MTMwNjAw
NDhDREQ2IC8qIERldmljZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENDQzJCNTEyMTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250
cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQ0QxMjdERUQxNEYzMDk3RDAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxMjdERUIx
NEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93Lm1tICovOyB9OwogCQlD
RDEyN0RFRTE0RjMwOTg0MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMTI3REVBMTRGMzA5
NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEMUI0QTY1MTYwNzg2QUUwMDI4MkRG
OSAvKiBNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQTk4REMyMTYwMTRFRUUwMEZFQTNCMSAvKiBNZWRpYUtleU5l
ZWRlZEV2ZW50LmNwcCAqLzsgfTsKIAkJQ0QxRTczNDcxNjdCQzc4RTAwOUE4ODVEIC8qIFRleHRU
cmFja1JlcHJlc2VudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEMUU3MzQ2MTY3QkM3OEUwMDlBODg1RCAvKiBUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbi5jcHAgKi87IH07CiAJCUNEMjdGNkU1MTQ1NzY4NUEwMDc4MjA3RCAvKiBKU01lZGlh
Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDI3RjZFMjE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwICov
OyB9OwogCQlDRDI3RjZFNzE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkU2MTQ1
NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwICovOyB9OwpAQCAtNTk5MSwxMCAr
NTk5MSwyMCBAQAogCQlDRDgyMDMwRDEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2Ny
ZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEODIwMzA5MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxz
Y3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tICovOyB9OwogCQlDRDgyMDMxMDEzOTVBQ0U3MDBG
OTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwRTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93
QW5pbWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0Q4MjAzMTExMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzBGMTM5
NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi87IH07CisJCUNEQTk4REEz
MTYwMTQ2NDEwMEZFQTNCMSAvKiBKU01lZGlhS2V5RXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEOUIxNjAxMjhBNTAwRkVBM0IxIC8q
IEpTTWVkaWFLZXlFcnJvci5jcHAgKi87IH07CisJCUNEQTk4REQ4MTYwMjVCRUYwMEZFQTNCMSAv
KiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREE5OERENTE2MDI1QkVEMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNz
YWdlRXZlbnQuY3BwICovOyB9OworCQlDREE5OERERjE2MDI2QTM3MDBGRUEzQjEgLyogSlNNZWRp
YUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREE5OEREQjE2MDI2QTE4MDBGRUEzQjEgLyogSlNNZWRpYUtleU1lc3NhZ2VF
dmVudC5jcHAgKi87IH07CisJCUNEQTk4REUwMTYwMjZBMzcwMEZFQTNCMSAvKiBKU01lZGlhS2V5
TmVlZGVkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RBOThEREQxNjAyNkExOTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlOZWVkZWRFdmVudC5j
cHAgKi87IH07CisJCUNEQTk4RTA0MTYwMzlFMUEwMEZFQTNCMSAvKiBKU01lZGlhS2V5cy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERDRTE2
MDE1OTc5MDBGRUEzQjEgLyogSlNNZWRpYUtleXMuY3BwICovOyB9OworCQlDREE5OEUwNjE2MDM5
RTFGMDBGRUEzQjEgLyogSlNNZWRpYUtleVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThERDAxNjAxNTk3OTAwRkVBM0IxIC8qIEpT
TWVkaWFLZXlTZXNzaW9uLmNwcCAqLzsgfTsKKwkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVBM0IxIC8q
IENETS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REE5OEUwOTE2MDNDRDU5MDBGRUEzQjEgLyogQ0RNLmNwcCAqLzsgfTsKKwkJQ0RBOThFMEQxNjAz
RkU0QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERDQTE2MDE1MDhBMDBGRUEzQjEgLyogTWVkaWFLZXlz
LmNwcCAqLzsgfTsKKwkJQ0RBOThFMEUxNjAzRkU1ODAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5
OERDNzE2MDE0RjJDMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmNwcCAqLzsgfTsKIAkJQ0RB
QThEMEExNEQ3MUIyRTAwNjFFQTYwIC8qIFBsYXRmb3JtQ2xvY2tDTS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUE4RDA4MTREMzg1NjAwMDYxRUE2
MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gKi87IH07CiAJCUNEQjg1OUY3MTYwRDQ4QTQwMEU1QjA3
RiAvKiBNZWRpYUtleUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEQjg1OUY0MTYwRDQ4OTkwMEU1QjA3RiAvKiBNZWRpYUtleUV2ZW50LmNw
cCAqLzsgfTsKIAkJQ0RCODU5RkExNjBENDk0OTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREI4NTlG
ODE2MEQ0OTNFMDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmNwcCAqLzsgfTsKLQkJQ0RCODU5
RkIxNjBENDk0RjAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFcnJvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREI4NTlGMDE2MEQ0MkREMDBFNUIwN0Yg
LyogSlNNZWRpYUtleUVycm9yLmNwcCAqLzsgfTsKKwkJQ0RDMjZCNDAxNjBBOENDNjAwMjY3NTdC
IC8qIE1vY2tDRE0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RDMjZCM0MxNjBBNjJCMDAwMjY3NTdCIC8qIE1vY2tDRE0uY3BwICovOyB9OworCQlD
REMyNkI0MTE2MEE4Q0NFMDAyNjc1N0IgLyogTW9ja0NETS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDMjZCM0QxNjBBNjJCMDAwMjY3NTdCIC8qIE1v
Y2tDRE0uaCAqLzsgfTsKIAkJQ0RDNjlERDYxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxs
U2NyZWVuV2FybmluZ1ZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEQzY5REQ0MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldh
cm5pbmdWaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0RDNjlERDcxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2Fybmlu
Z1ZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REM2OURENTE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5t
bSAqLzsgfTsKIAkJQ0RDNjlEREExNjM3MUZENDAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVu
UGxhY2Vob2xkZXJWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREM2OUREODE2MzcxRkQzMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5QbGFj
ZWhvbGRlclZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTEwNjcsOCArMTEwNzcsOCBAQAogCQk5NzdFMkRDQjEyRjBFMjgzMDBDMTMzNzkg
LyogSFRNTFNvdXJjZVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gSFRNTFNvdXJjZVRyYWNrZXIuY3BwOyBwYXRoID0gcGFyc2VyL0hUTUxTb3VyY2VUcmFj
a2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc3RTJEQ0MxMkYwRTI4MzAw
QzEzMzc5IC8qIEhUTUxTb3VyY2VUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEhUTUxTb3VyY2VUcmFja2VyLmg7IHBhdGggPSBwYXJzZXIvSFRNTFNvdXJjZVRyYWNr
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc3RTJFMEIxMkYwRkM5QzAwQzEz
Mzc5IC8qIFhTU0F1ZGl0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gWFNTQXVkaXRvci5jcHA7IHBhdGggPSBwYXJzZXIvWFNTQXVkaXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3N0UyRTBDMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRp
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFhTU0F1ZGl0b3IuaDsgcGF0
aCA9IHBhcnNlci9YU1NBdWRpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3
N0UyRTBCMTJGMEZDOUMwMEMxMzM4MCAvKiBYU1NBdWRpdG9yRGVsZWdhdGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWFNTQXVkaXRvckRlbGVnYXRlLmNwcDsgcGF0
aCA9IHBhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5NzdFMkUwQzEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBYU1NBdWRpdG9yLmg7IHBhdGggPSBwYXJzZXIvWFNT
QXVkaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzdFMkUwQzEyRjBGQzlD
MDBDMTMzODAgLyogWFNTQXVkaXRvckRlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFhTU0F1ZGl0b3JEZWxlZ2F0ZS5oOyBwYXRoID0gcGFyc2VyL1hTU0F1ZGl0b3JE
ZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzhBRDY3MTE0MTMwQThE
MDBDN0NBRTMgLyogSFRNTFNwYW5FbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEhUTUxTcGFuRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk3OEFENjcyMTQxMzBBOEQwMEM3Q0FFMyAvKiBIVE1MU3BhbkVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFNwYW5FbGVtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzU1OCwxMCArMTM1NjgsMzMgQEAKIAkJQ0Q4MjAzMDkx
Mzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaWRlb0Z1bGxz
Y3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRDgyMDMwRTEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYldpbmRvd0FuaW1hdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDgyMDMwRjEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2lu
ZG93QW5pbWF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViV2luZG93QW5pbWF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5
OEQ5QjE2MDEyOEE1MDBGRUEzQjEgLyogSlNNZWRpYUtleUVycm9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFLZXlFcnJvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RDlDMTYwMTI4QTUwMEZFQTNCMSAvKiBKU01lZGlhS2V5
RXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUtleUVycm9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REMyMTYwMTRFRUUwMEZFQTNC
MSAvKiBNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBOThEQzMxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFLZXlOZWVkZWRFdmVudC5oOyBw
YXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REM0MTYwMTRFRUUwMEZFQTNCMSAvKiBNZWRp
YUtleU5lZWRlZEV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBNZWRpYUtleU5lZWRl
ZEV2ZW50LmlkbDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlOZWVkZWRF
dmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4REM3MTYwMTRGMkMw
MEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gTWVkaWFLZXlTZXNzaW9uLmNwcDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBOThEQzgxNjAxNEYyQzAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYUtleVNlc3Npb24uaDsgcGF0aCA9IE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQTk4REM5MTYwMTRGNDAwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgbmFtZSA9IE1lZGlhS2V5U2Vzc2lvbi5pZGw7IHBhdGggPSBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQTk4RENBMTYwMTUwOEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTWVkaWFLZXlzLmNwcDsgcGF0aCA9IE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBOThEQ0IxNjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYUtleXMuaDsgcGF0aCA9IE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QTk4RENDMTYwMTUwOEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
bmFtZSA9IE1lZGlhS2V5cy5pZGw7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RENFMTYwMTU5Nzkw
MEZFQTNCMSAvKiBKU01lZGlhS2V5cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU01lZGlhS2V5cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QTk4RENGMTYwMTU5NzkwMEZFQTNCMSAvKiBKU01lZGlhS2V5cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU01lZGlhS2V5cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREE5OEREMDE2MDE1OTc5MDBGRUEzQjEgLyogSlNNZWRpYUtleVNlc3Npb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYUtleVNlc3Npb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OEREMTE2MDE1OTc5MDBGRUEzQjEg
LyogSlNNZWRpYUtleVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNNZWRpYUtleVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThE
RDUxNjAyNUJFRDAwRkVBM0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcDsgcGF0
aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OERENjE2MDI1QkVEMDBGRUEzQjEgLyogTWVk
aWFLZXlNZXNzYWdlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVk
aWFLZXlNZXNzYWdlRXZlbnQuaDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlNZXNzYWdlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThERDcx
NjAyNUJFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IG5hbWUgPSBNZWRpYUtleU1lc3NhZ2VFdmVudC5pZGw7IHBhdGggPSBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RBOThEREIxNjAyNkExODAwRkVBM0IxIC8qIEpTTWVkaWFLZXlNZXNzYWdlRXZl
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RERDMTYwMjZBMTkwMEZFQTNCMSAvKiBK
U01lZGlhS2V5TWVzc2FnZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFLZXlNZXNzYWdl
RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBOThEREQxNjAyNkExOTAw
RkVBM0IxIC8qIEpTTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U01lZGlhS2V5TmVlZGVkRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REE5OERERTE2MDI2QTE5MDBGRUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTTWVkaWFLZXlOZWVkZWRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREE5OEUwOTE2MDNDRDU5MDBGRUEzQjEgLyogQ0RNLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IENETS5jcHA7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTk4RTBBMTYwM0NENTkwMEZFQTNCMSAvKiBD
RE0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQ0RNLmg7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE5OEUwQzE2MDNDRjNDMDBG
RUEzQjEgLyogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREFBOEQwNzE0RDM4NTYwMDA2MUVBNjAg
LyogUGxhdGZvcm1DbG9ja0NNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBs
YXRmb3JtQ2xvY2tDTS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREFBOEQwODE0
RDM4NTYwMDA2MUVBNjAgLyogUGxhdGZvcm1DbG9ja0NNLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZvcm1DbG9ja0NNLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDREI4NTlGMDE2MEQ0MkREMDBFNUIwN0YgLyogSlNNZWRpYUtleUVycm9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFLZXlFcnJv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEQjg1OUYxMTYwRDQyREQwMEU1
QjA3RiAvKiBKU01lZGlhS2V5RXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNNZWRpYUtleUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQjg1
OUYyMTYwRDQ4OTkwMEU1QjA3RiAvKiBNZWRpYUtleUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lZGlhS2V5RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0RCODU5RjMxNjBENDg5OTAwRTVCMDdGIC8qIE1lZGlhS2V5RXJyb3IuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhS2V5RXJyb3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDREI4NTlGNDE2MEQ0ODk5MDBFNUIwN0YgLyogTWVkaWFLZXlFdmVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUtleUV2ZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNTcwLDYgKzEzNjAzLDggQEAKIAkJQ0RC
ODU5RjgxNjBENDkzRTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhS2V5RXZlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREI4NTlGOTE2MEQ0OTNFMDBFNUIwN0YgLyogSlNNZWRpYUtl
eUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFLZXlFdmVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREJEOTNCQTEzMzNCRDRCMDAyNTcw
RTMgLyogZnVsbHNjcmVlblF1aWNrVGltZS5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9
IGZ1bGxzY3JlZW5RdWlja1RpbWUuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REMyNkIzQzE2MEE2MkIwMDAyNjc1N0IgLyogTW9ja0NETS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNb2NrQ0RNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDMjZCM0QxNjBB
NjJCMDAwMjY3NTdCIC8qIE1vY2tDRE0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NETS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREM2OURENDE2MzIwMjZDMDA3QzM4REYgLyogV2Vi
Q29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNEQzY5REQ1MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldh
cm5pbmdWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
Q29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0RDNjlERDgxNjM3MUZEMzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xk
ZXJWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVGdWxsU2Ny
ZWVuUGxhY2Vob2xkZXJWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDgw
OSw2ICsxNDg0NCw3IEBACiAJCTE0REZCMzNGMEE3REY3NjMwMDE4Rjc2OSAvKiBEZXJpdmVkIFNv
dXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNE
QTk4RENEMTYwMTUxNUMwMEZFQTNCMSAvKiBFbmNyeXB0ZWRNZWRpYSAqLywKIAkJCQlBODNCNzkx
MDBDQ0IwMDFCMDAwQjA4MjUgLyogQ29yZSAqLywKIAkJCQlBODNCNzkwRTBDQ0FGRjk3MDAwQjA4
MjUgLyogQ1NTICovLAogCQkJCUE4M0I3OTEyMENDQjAwM0YwMDBCMDgyNSAvKiBFdmVudHMgKi8s
CkBAIC0xNTUxMyw2ICsxNTU0OSw4IEBACiAJCQkJQTdCRTdFREUxNEM5MTc1QTAwMTQ0ODlEIC8q
IE1hbGxvY1N0YXRpc3RpY3MuaWRsICovLAogCQkJCUVCMDgxQ0Q4MTY5NjA4NDQwMDU1MzczMCAv
KiBUeXBlQ29udmVyc2lvbnMuaCAqLywKIAkJCQlFQjA4MUNEOTE2OTYwODQ0MDA1NTM3MzAgLyog
VHlwZUNvbnZlcnNpb25zLmlkbCAqLywKKwkJCQlDREMyNkIzQzE2MEE2MkIwMDAyNjc1N0IgLyog
TW9ja0NETS5jcHAgKi8sCisJCQkJQ0RDMjZCM0QxNjBBNjJCMDAwMjY3NTdCIC8qIE1vY2tDRE0u
aCAqLywKIAkJCSk7CiAJCQlwYXRoID0gdGVzdGluZzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC0xODI1Miw2ICsxODI5MCw3IEBACiAJCTk3MTE0NUZFMTRFRjAwNkUwMDY3NEZEOSAv
KiBNb2R1bGVzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQlDREE5OERCRDE2MDE0RTA4MDBGRUEzQjEgLyogZW5jcnlwdGVkbWVkaWEgKi8sCiAJCQkJOTcx
MTQ1RkYxNEVGMDA3OTAwNjc0RkQ5IC8qIGdlb2xvY2F0aW9uICovLAogCQkJCTk3MTJBNTUzMTUw
MDRFM0MwMDQ4QUYxMCAvKiBpbmRleGVkZGIgKi8sCiAJCQkJQjFBOTQyREQxNUI1Q0UyMjAwRDUy
NUQxIC8qIG1lZGlhc291cmNlICovLApAQCAtMTkwMTIsOCArMTkwNTEsNiBAQAogCQkJCUNEMjdG
NkUzMTQ1NzY3NTgwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5oICovLAogCQkJCUU0NDYx
NDEwMENENjgyNjkwMEZBREE3NSAvKiBKU01lZGlhRXJyb3IuY3BwICovLAogCQkJCUU0NDYxNDEx
MENENjgyNjkwMEZBREE3NSAvKiBKU01lZGlhRXJyb3IuaCAqLywKLQkJCQlDREI4NTlGMDE2MEQ0
MkREMDBFNUIwN0YgLyogSlNNZWRpYUtleUVycm9yLmNwcCAqLywKLQkJCQlDREI4NTlGMTE2MEQ0
MkREMDBFNUIwN0YgLyogSlNNZWRpYUtleUVycm9yLmggKi8sCiAJCQkJQ0RCODU5RjgxNjBENDkz
RTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVudC5jcHAgKi8sCiAJCQkJQ0RCODU5RjkxNjBENDkz
RTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVudC5oICovLAogCQkJCTEwNTk0NTc1MTVCNDJBMEQw
MDREMzdGRCAvKiBKU01pY3JvRGF0YUl0ZW1WYWx1ZS5jcHAgKi8sCkBAIC0yMTU3Miw2ICsyMTYw
OSw0NSBAQAogCQkJbmFtZSA9IGF1ZGlvOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJ
fTsKKwkJQ0RBOThEQkQxNjAxNEUwODAwRkVBM0IxIC8qIGVuY3J5cHRlZG1lZGlhICovID0gewor
CQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDREE5OERENTE2MDI1QkVE
MDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwICovLAorCQkJCUNEQTk4REQ2MTYw
MjVCRUQwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5oICovLAorCQkJCUNEQTk4REQ3
MTYwMjVCRUUwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5pZGwgKi8sCisJCQkJQ0RB
OThEQzIxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwICovLAorCQkJ
CUNEQTk4REMzMTYwMTRFRUUwMEZFQTNCMSAvKiBNZWRpYUtleU5lZWRlZEV2ZW50LmggKi8sCisJ
CQkJQ0RBOThEQzQxNjAxNEVFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuaWRsICov
LAorCQkJCUNEQTk4RENBMTYwMTUwOEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuY3BwICovLAorCQkJ
CUNEQTk4RENCMTYwMTUwOEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuaCAqLywKKwkJCQlDREE5OERD
QzE2MDE1MDhBMDBGRUEzQjEgLyogTWVkaWFLZXlzLmlkbCAqLywKKwkJCQlDREE5OERDNzE2MDE0
RjJDMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmNwcCAqLywKKwkJCQlDREE5OERDODE2MDE0
RjJDMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmggKi8sCisJCQkJQ0RBOThEQzkxNjAxNEY0
MDAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5pZGwgKi8sCisJCQkJQ0RBOThFMDkxNjAzQ0Q1
OTAwRkVBM0IxIC8qIENETS5jcHAgKi8sCisJCQkJQ0RBOThFMEExNjAzQ0Q1OTAwRkVBM0IxIC8q
IENETS5oICovLAorCQkJCUNEQTk4RTBDMTYwM0NGM0MwMEZFQTNCMSAvKiBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETVByaXZhdGUuaCAqLywKKwkJCSk7CisJCQluYW1lID0gZW5jcnlwdGVkbWVk
aWE7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDREE5OERDRDE2MDE1MTVD
MDBGRUEzQjEgLyogRW5jcnlwdGVkTWVkaWEgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCUNEQTk4RDlCMTYwMTI4QTUwMEZFQTNCMSAvKiBKU01lZGlhS2V5
RXJyb3IuY3BwICovLAorCQkJCUNEQTk4RDlDMTYwMTI4QTUwMEZFQTNCMSAvKiBKU01lZGlhS2V5
RXJyb3IuaCAqLywKKwkJCQlDREE5OEREQjE2MDI2QTE4MDBGRUEzQjEgLyogSlNNZWRpYUtleU1l
c3NhZ2VFdmVudC5jcHAgKi8sCisJCQkJQ0RBOThEREMxNjAyNkExOTAwRkVBM0IxIC8qIEpTTWVk
aWFLZXlNZXNzYWdlRXZlbnQuaCAqLywKKwkJCQlDREE5OERERDE2MDI2QTE5MDBGRUEzQjEgLyog
SlNNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCAqLywKKwkJCQlDREE5OERERTE2MDI2QTE5MDBGRUEz
QjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmggKi8sCisJCQkJQ0RBOThEQ0UxNjAxNTk3OTAw
RkVBM0IxIC8qIEpTTWVkaWFLZXlzLmNwcCAqLywKKwkJCQlDREE5OERDRjE2MDE1OTc5MDBGRUEz
QjEgLyogSlNNZWRpYUtleXMuaCAqLywKKwkJCQlDREE5OEREMDE2MDE1OTc5MDBGRUEzQjEgLyog
SlNNZWRpYUtleVNlc3Npb24uY3BwICovLAorCQkJCUNEQTk4REQxMTYwMTU5NzkwMEZFQTNCMSAv
KiBKU01lZGlhS2V5U2Vzc2lvbi5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBFbmNyeXB0ZWRNZWRp
YTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCURGOUFGRDZGMTNGQzMxQjAw
MDE1RkVCNyAvKiBvYmpjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKQEAgLTIyOTkxLDYgKzIzMDY3LDcgQEAKIAkJCQlBNzQwQjU5NTE0QzkzNUFCMDBBNzdGQTQg
LyogSlNNYWxsb2NTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkY1MTIxRDE2OTY0
OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
ODE1QzFGMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBNb2NrQ0RNLmggaW4gSGVhZGVy
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKQEAgLTI2NzIwLDYgKzI2Nzk3LDcgQEAKIAkJCQlBNzQwQjU5NzE0QzkzNUFGMDBBNzdG
QTQgLyogSlNNYWxsb2NTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUVCRjUxMjFD
MTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9ucy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0MTgxNUMxRTEzODMxOTgzMDA1N0FBQTQgLyogV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUNEQzI2QjQwMTYwQThDQzYwMDI2NzU3QiAvKiBNb2NrQ0RNLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpAQCAtMjgxODUsNyArMjgyNjMsNiBAQAogCQkJCUNEMjdGNkU1MTQ1
NzY4NUEwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGRDIzQTEyNTEzRjVGQTU5MDBGNjcwMDEgLyogSlNNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0NjE0MTgwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpT
TWVkaWFFcnJvci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlDREI4NTlGQjE2MEQ0OTRGMDBFNUIw
N0YgLyogSlNNZWRpYUtleUVycm9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQjg1OUZBMTYw
RDQ5NDkwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkMzQzM5QjYwQzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0NjRFMDZDMTM1RUMxMDYwMEZEQjAwQSAvKiBKU01lZGlhTGlzdEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTI5NTYzLDYgKzI5NjQwLDE2IEBACiAJCQkJOTc3RTJFMEUxMkYw
RkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJF
MEUxMkYwRkM5QzAwQzEzMzgwIC8qIFhTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQ0RBOThEQTMxNjAxNDY0MTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OEREODE2MDI1QkVGMDBGRUEzQjEgLyogTWVkaWFL
ZXlNZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThEREYxNjAyNkEzNzAw
RkVBM0IxIC8qIEpTTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
Q0RBOThERTAxNjAyNkEzNzAwRkVBM0IxIC8qIEpTTWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlDREE5OEUwNDE2MDM5RTFBMDBGRUEzQjEgLyogSlNNZWRpYUtleXMu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThFMDYxNjAzOUUxRjAwRkVBM0IxIC8qIEpTTWVk
aWFLZXlTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4RTBCMTYwM0NENjAwMEZF
QTNCMSAvKiBDRE0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThFMEQxNjAzRkU0QTAwRkVB
M0IxIC8qIE1lZGlhS2V5cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE5OEUwRTE2MDNGRTU4
MDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEMUI0
QTY1MTYwNzg2QUUwMDI4MkRGOSAvKiBNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4gYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbgppbmRleCBhMmMzYzljMjMzMzIxYjI1MmJmYWYw
OGU3ZDI1NWJkNTlhNTNkZWUyLi5jMDRiMDI1Y2VjNDA3MDQ3MmMzMjJlYWUwZmE2N2E4ZWY2ZGRj
NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbgpAQCAtNTIsNSArNTIsNyBAQCBEZXZpY2VP
cmllbnRhdGlvbkV2ZW50IGNvbmRpdGlvbmFsPURFVklDRV9PUklFTlRBVElPTgogRGV2aWNlUHJv
eGltaXR5RXZlbnQgY29uZGl0aW9uYWw9UFJPWElNSVRZX0VWRU5UUwogT3JpZW50YXRpb25FdmVu
dCBpbnRlcmZhY2VOYW1lPUV2ZW50LCBjb25kaXRpb25hbD1PUklFTlRBVElPTl9FVkVOVFMKIE1l
ZGlhS2V5RXZlbnQgY29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBCitNZWRpYUtleU1lc3NhZ2VF
dmVudCBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIKK01lZGlhS2V5TmVlZGVkRXZlbnQg
Y29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyCiBUcmFja0V2ZW50IGNvbmRpdGlvbmFsPVZJ
REVPX1RSQUNLCiBBdXRvY29tcGxldGVFcnJvckV2ZW50IGNvbmRpdGlvbmFsPVJFUVVFU1RfQVVU
T0NPTVBMRVRFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0
b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCA4
MjU2NjdiM2NhZDdhMzUxMWEwZGE0ZTA5ZWQ2OWU5MjJlNzExOTVjLi5jZjVhY2Y3NWMzYmU0OTAz
MGQzODcxMjM5MzAzODRlMTgwMDRmNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dEZhY3RvcnkuaW4KQEAgLTE0LDYgKzE0LDcgQEAgSURCUmVxdWVzdCBjb25kaXRpb25hbD1JTkRF
WEVEX0RBVEFCQVNFCiBJREJUcmFuc2FjdGlvbiBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNF
CiBTY3JpcHRQcm9jZXNzb3JOb2RlIGNvbmRpdGlvbmFsPVdFQl9BVURJTwogTG9jYWxNZWRpYVN0
cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KK01lZGlhS2V5U2Vzc2lvbiBjb25kaXRpb25h
bD1FTkNSWVBURURfTUVESUFfVjIKIE1lZGlhQ29udHJvbGxlciBjb25kaXRpb25hbD1WSURFTwog
TWVkaWFTb3VyY2UgY29uZGl0aW9uYWw9TUVESUFfU09VUkNFCiBNZWRpYVN0cmVhbSBjb25kaXRp
b25hbD1NRURJQV9TVFJFQU0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CmluZGV4IDMwYWZkMzY0Mzg1ZjQ5Y2RkNGYzOTg4NTc1MWM2NTU0OGU0ZDI4N2IuLjFhNjVjYTY4
ZTRjZDAyYzM2NDg0Yzc1ZTg3NTUzZGY4YjE0NzEyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTI1LDYgKzEyNSwxMSBAQAogI2luY2x1ZGUgIk1lZGlh
U3RyZWFtUmVnaXN0cnkuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9W
MikKKyNpbmNsdWRlICJNZWRpYUtleU5lZWRlZEV2ZW50LmgiCisjaW5jbHVkZSAiTWVkaWFLZXlz
LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMTk2Niw2ICsxOTcxLDI1IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCit2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwgVWludDhBcnJheSogaW5pdERh
dGEpCit7CisgICAgTWVkaWFLZXlOZWVkZWRFdmVudEluaXQgaW5pdGlhbGl6ZXI7CisgICAgaW5p
dGlhbGl6ZXIuaW5pdERhdGEgPSBpbml0RGF0YTsKKyAgICBpbml0aWFsaXplci5idWJibGVzID0g
ZmFsc2U7CisgICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJsZSA9IGZhbHNlOworCisgICAgUmVmUHRy
PEV2ZW50PiBldmVudCA9IE1lZGlhS2V5TmVlZGVkRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
d2Via2l0bmVlZGtleUV2ZW50LCBpbml0aWFsaXplcik7CisgICAgZXZlbnQtPnNldFRhcmdldCh0
aGlzKTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2Uo
KSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TWVkaWFLZXlzKE1lZGlhS2V5cyog
bWVkaWFLZXlzKQoreworICAgIG1fbWVkaWFLZXlzID0gbWVkaWFLZXlzOworfQorI2VuZGlmCisK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJvZ3Jlc3NFdmVudFRpbWVyRmlyZWQoVGltZXI8SFRN
TE1lZGlhRWxlbWVudD4qKQogewogICAgIEFTU0VSVChtX3BsYXllcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGJhYzcyMWQzNWNlMzZkZjFkOTQ4NDA5ZDc2YWIz
MmQ0MzYyMGUwMzguLjhmZjEyZDFiNTQ5ZDhjZTJkYjRiNjgyYmI5NDU4ZTJiNDIzYWEyODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC02Niw2ICs2Niw5IEBAIGNs
YXNzIFdpZGdldDsKICNpZiBQTEFURk9STShNQUMpCiBjbGFzcyBEaXNwbGF5U2xlZXBEaXNhYmxl
cjsKICNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCitjbGFzcyBNZWRpYUtl
eXM7CisjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIGNsYXNzIEluYmFuZFRleHRU
cmFja1ByaXZhdGU7CkBAIC0xODcsOSArMTkwLDE2IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGtleWFkZGVkKTsKICAgICBERUZJTkVfQVRUUklC
VVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGtleWVycm9yKTsKICAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKHdlYmtpdGtleW1lc3NhZ2UpOworI2VuZGlmCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKICAgICBERUZJTkVf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdG5lZWRrZXkpOwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIE1lZGlhS2V5cyogbWVkaWFLZXlzKCkgY29u
c3QgeyByZXR1cm4gbV9tZWRpYUtleXMuZ2V0KCk7IH0KKyAgICB2b2lkIHNldE1lZGlhS2V5cyhN
ZWRpYUtleXMqKTsKKyNlbmRpZgorCiAvLyBjb250cm9scwogICAgIGJvb2wgY29udHJvbHMoKSBj
b25zdDsKICAgICB2b2lkIHNldENvbnRyb2xzKGJvb2wpOwpAQCAtNDQ0LDYgKzQ1NCwxMCBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcktleU5lZWRlZChNZWRpYVBsYXll
ciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29u
c3QgdW5zaWduZWQgY2hhciogaW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoKSBPVkVS
UklERTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKyAgICB2aXJ0
dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBVaW50OEFycmF5Kik7
CisjZW5kaWYKKwogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclVzZXJBZ2VudCgpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgQ09SU01vZGUgbWVkaWFQbGF5ZXJDT1JTTW9kZSgp
IGNvbnN0IE9WRVJSSURFOwpAQCAtNzA1LDYgKzcxOSwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICBmcmllbmQgY2xhc3MgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGU7CisKKyNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBX1YyKQorICAgIFJlZlB0cjxNZWRpYUtleXM+IG1fbWVkaWFLZXlzOwor
I2VuZGlmCiB9OwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5pZGwKaW5kZXggMmVjZTVhY2FhNWFkYTMyODVlYzM4NzkzNDJmYTgx
YjI3OTA1ODNiZS4uNWViZjQ0NzBiYmMwZDZjZTU4NjJiYWQxOWNkYjY0YTRjYWY1NTg5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCkBAIC00NSw3ICs0NSw5IEBA
IGF0dHJpYnV0ZSBET01TdHJpbmcgcHJlbG9hZDsKIHJlYWRvbmx5IGF0dHJpYnV0ZSBUaW1lUmFu
Z2VzIGJ1ZmZlcmVkOwogdm9pZCBsb2FkKCk7CiAjaWYgZGVmaW5lZChFTkFCTEVfRU5DUllQVEVE
X01FRElBKSAmJiBFTkFCTEVfRU5DUllQVEVEX01FRElBCi1ET01TdHJpbmcgY2FuUGxheVR5cGUo
aW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHR5cGUsIGluIFtPcHRp
b25hbD1EZWZhdWx0SXNVbmRlZmluZWQsIFRyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5k
ZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIGtleVN5c3RlbSk7CisgICAgRE9NU3RyaW5n
IGNhblBsYXlUeXBlKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0
eXBlLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkLCBUcmVhdE51bGxBcz1OdWxsU3Ry
aW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBrZXlTeXN0ZW0pOwor
I2VsaWYgZGVmaW5lZChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAmJiBFTkFCTEVfRU5DUllQ
VEVEX01FRElBX1YyCisgICAgRE9NU3RyaW5nIGNhblBsYXlUeXBlKGluIFtPcHRpb25hbD1EZWZh
dWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB0eXBlLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5k
ZWZpbmVkLCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJp
bmddIERPTVN0cmluZyBrZXlTeXN0ZW0pOwogI2Vsc2UKIERPTVN0cmluZyBjYW5QbGF5VHlwZShp
biBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgdHlwZSk7CiAjZW5kaWYK
QEAgLTEwMSwxMCArMTAzLDEzIEBAIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9TUVE
SUFfU1RBVElTVElDU10gdW5zaWduZWQgbG9uZyB3ZWJraXRWaWRlb0RlY29kCiBbVjhFbmFibGVk
QXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSB2b2lkIHdlYmtpdENhbmNlbEtleVJlcXVlc3QoaW4g
W1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9N
U3RyaW5nIGtleVN5c3RlbSwgaW4gW09wdGlvbmFsPURlZmF1bHRJc051bGxTdHJpbmddIERPTVN0
cmluZyBzZXNzaW9uSWQpCiAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwogCi1bVjhFbmFibGVk
QXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbndlYmtp
dGtleWFkZGVkOwotYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFd
IEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXllcnJvcjsKLWF0dHJpYnV0ZSBbVjhFbmFibGVkQXRS
dW50aW1lPWVuY3J5cHRlZE1lZGlhXSBFdmVudExpc3RlbmVyIG9ud2Via2l0a2V5bWVzc2FnZTsK
LWF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBFdmVudExpc3Rl
bmVyIG9ud2Via2l0bmVlZGtleTsKKyAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZT1l
bmNyeXB0ZWRNZWRpYV0gRXZlbnRMaXN0ZW5lciBvbndlYmtpdGtleWFkZGVkOworICAgIGF0dHJp
YnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBFdmVudExpc3RlbmVyIG9u
d2Via2l0a2V5ZXJyb3I7CisgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlw
dGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRrZXltZXNzYWdlOworI2VuZGlmCisgICAg
YXR0cmlidXRlIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUF8RU5DUllQVEVEX01FRElBX1Yy
LCBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIEV2ZW50TGlzdGVuZXIgb253ZWJr
aXRuZWVka2V5OworI2lmIGRlZmluZWQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJiYgRU5B
QkxFX0VOQ1JZUFRFRF9NRURJQV9WMgorICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1l
PWVuY3J5cHRlZE1lZGlhXSBNZWRpYUtleXMgbWVkaWFLZXlzOwogI2VuZGlmCiAKICNpZiBkZWZp
bmVkKEVOQUJMRV9WSURFT19UUkFDSykgJiYgRU5BQkxFX1ZJREVPX1RSQUNLCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFFcnJvci5oCmluZGV4IDkwZjQ0N2YwNWU1YTRmMGNhZDE0YjVjNDI5YmZiZmU4Yzg3MGQz
MDQuLmIwYmY1Zjc2NWQ1YTM4NjY2Nzk4YjA0OTM1NzViMmEwNjQwMjE4ZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFFcnJvci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgTUVESUFf
RVJSX05FVFdPUkssCiAgICAgICAgIE1FRElBX0VSUl9ERUNPREUsCiAgICAgICAgIE1FRElBX0VS
Ul9TUkNfTk9UX1NVUFBPUlRFRAotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKICAgICAg
ICAgLCBNRURJQV9FUlJfRU5DUllQVEVECiAjZW5kaWYKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFFcnJvci5pZGwKaW5kZXggZTJjZDI3MTQzY2NhNWE3YmM3NTQ4OGM4NTYxZDk2NTNmMDk0NzFi
ZC4uNzMzNzQ0NDQ2YjAxYzIxMmM1NDVmMmUwNjdiYTgxNjFmODY3YzAyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRXJyb3IuaWRsCkBAIC0yMywxNSArMjMsMTUgQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAog
ICovCiAKLVsKK2ludGVyZmFjZSBbCiAgICAgQ29uZGl0aW9uYWw9VklERU8sCiAgICAgSW1wbGVt
ZW50YXRpb25MYWNrc1ZUYWJsZQotXSBpbnRlcmZhY2UgTWVkaWFFcnJvciB7CitdIE1lZGlhRXJy
b3IgewogICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfRVJSX0FCT1JURUQgPSAxOwog
ICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfRVJSX05FVFdPUksgPSAyOwogICAgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFfRVJSX0RFQ09ERSA9IDM7CiAgICAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfU1JDX05PVF9TVVBQT1JURUQgPSA0OwotI2lmIGRlZmlu
ZWQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQQorI2lm
IChkZWZpbmVkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRV9FTkNSWVBURURfTUVE
SUEpIHx8IChkZWZpbmVkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICYmIEVOQUJMRV9FTkNS
WVBURURfTUVESUFfVjIpCiAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9FUlJfRU5D
UllQVEVEID0gNTsKICNlbmRpZgogICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNo
b3J0IGNvZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhS2V5RXJyb3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFcnJvci5oCmluZGV4IDEyYzczNmQ0ODdh
M2Y0YzA3MTY1YjRjNjUyOGVmZDk5OWNmNzVkZTIuLjQ5ZTM4NDNlMzI4YjM5MDg3OGU2NWUxMmMx
MWUwNjk1ZDk3MThkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlF
cnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFcnJvci5oCkBAIC0yNiw3
ICsyNiw3IEBACiAjaWZuZGVmIE1lZGlhS2V5RXJyb3JfaAogI2RlZmluZSBNZWRpYUtleUVycm9y
X2gKIAotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKIAogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTM1LDcgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYUtleUVycm9yIDogcHVibGljIFJlZkNv
dW50ZWQ8TWVkaWFLZXlFcnJvcj4gewogcHVibGljOgotICAgIGVudW0gQ29kZSB7CisgICAgZW51
bSB7CiAgICAgICAgIE1FRElBX0tFWUVSUl9VTktOT1dOID0gMSwKICAgICAgICAgTUVESUFfS0VZ
RVJSX0NMSUVOVCwKICAgICAgICAgTUVESUFfS0VZRVJSX1NFUlZJQ0UsCkBAIC00MywxNSArNDMs
MTggQEAgcHVibGljOgogICAgICAgICBNRURJQV9LRVlFUlJfSEFSRFdBUkVDSEFOR0UsCiAgICAg
ICAgIE1FRElBX0tFWUVSUl9ET01BSU4KICAgICB9OworICAgIHR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgQ29kZTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5RXJyb3I+IGNyZWF0ZShD
b2RlIGNvZGUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUtleUVycm9yKGNvZGUpKTsgfQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5RXJyb3I+IGNyZWF0ZShDb2RlIGNvZGUsIHVu
c2lnbmVkIGxvbmcgc3lzdGVtQ29kZSA9IDApIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUtl
eUVycm9yKGNvZGUsIHN5c3RlbUNvZGUpKTsgfQogCiAgICAgQ29kZSBjb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlOyB9CisgICAgdW5zaWduZWQgbG9uZyBzeXN0ZW1Db2RlKCkgeyByZXR1cm4g
bV9zeXN0ZW1Db2RlOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTWVkaWFLZXlFcnJvcihD
b2RlIGNvZGUpIDogbV9jb2RlKGNvZGUpIHsgfQorICAgIGV4cGxpY2l0IE1lZGlhS2V5RXJyb3Io
Q29kZSBjb2RlLCB1bnNpZ25lZCBsb25nIHN5c3RlbUNvZGUpIDogbV9jb2RlKGNvZGUpLCBtX3N5
c3RlbUNvZGUoc3lzdGVtQ29kZSkgeyB9CiAKICAgICBDb2RlIG1fY29kZTsKKyAgICB1bnNpZ25l
ZCBsb25nIG1fc3lzdGVtQ29kZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFcnJvci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhS2V5RXJyb3IuaWRsCmluZGV4IGY3Mjc5ZDM5Yzg4MWIxYWU5NzE0ODBh
MzIwMTRjOWE2NmU3MTQ0MTkuLjk2MzE1NTEzOTJkNmU5MjMyZjRmZTY2YmY2ODA0ZWIwMjgwOWJj
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFcnJvci5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUVycm9yLmlkbApAQCAtMjMsMTEgKzIzLDEx
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi1bCi0gICAgQ29uZGl0aW9uYWw9RU5DUllQVEVE
X01FRElBLAoraW50ZXJmYWNlIFsKKyAgICBDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUF8RU5D
UllQVEVEX01FRElBX1YyLAogICAgIFY4RW5hYmxlZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYSwg
CiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQotXSBpbnRlcmZhY2UgTWVkaWFLZXlFcnJv
ciB7CitdIE1lZGlhS2V5RXJyb3IgewogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1FRElBX0tF
WUVSUl9VTktOT1dOID0gMTsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9LRVlFUlJf
Q0xJRU5UID0gMjsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJQV9LRVlFUlJfU0VSVklD
RSA9IDM7CkBAIC0zNSw0ICszNSw1IEBACiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTUVESUFf
S0VZRVJSX0hBUkRXQVJFQ0hBTkdFID0gNTsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNRURJ
QV9LRVlFUlJfRE9NQUlOID0gNjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hv
cnQgY29kZTsKKyAgICBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyXSByZWFkb25seSBh
dHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBzeXN0ZW1Db2RlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmlkbAppbmRleCAwMjU1MjE0MDI1ZjdmNTA1ZDA5YTY4Mzg1NWM3N2I2ZjQ1MmU3MmM0Li41
MGNlNDNiY2NjYmFjNWQzMTExZjg0OWJmOGY0ZTU0NmRkZmYxNzU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCkBAIC00ODcsNiArNDg3LDEwIEBACiAKICAgICBbQ29uZGl0aW9uYWw9RU5D
UllQVEVEX01FRElBLCBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIGF0dHJpYnV0
ZSBNZWRpYUtleUVycm9yQ29uc3RydWN0b3IgTWVkaWFLZXlFcnJvcjsKICAgICBbQ29uZGl0aW9u
YWw9RU5DUllQVEVEX01FRElBLCBWOEVuYWJsZWRBdFJ1bnRpbWU9ZW5jcnlwdGVkTWVkaWFdIGF0
dHJpYnV0ZSBNZWRpYUtleUV2ZW50Q29uc3RydWN0b3IgTWVkaWFLZXlFdmVudDsKKyAgICBhdHRy
aWJ1dGUgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMiwgVjhFbmFibGVkQXRSdW50aW1l
PWVuY3J5cHRlZE1lZGlhXSBNZWRpYUtleXNDb25zdHJ1Y3RvciBNZWRpYUtleXM7CisgICAgYXR0
cmlidXRlIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIsIFY4RW5hYmxlZEF0UnVudGlt
ZT1lbmNyeXB0ZWRNZWRpYV0gTWVkaWFLZXlFcnJvckNvbnN0cnVjdG9yIE1lZGlhS2V5RXJyb3I7
CisgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjIsIFY4RW5hYmxl
ZEF0UnVudGltZT1lbmNyeXB0ZWRNZWRpYV0gTWVkaWFLZXlNZXNzYWdlRXZlbnRDb25zdHJ1Y3Rv
ciBNZWRpYUtleU1lc3NhZ2VFdmVudDsKKyAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUVOQ1JZ
UFRFRF9NRURJQV9WMiwgVjhFbmFibGVkQXRSdW50aW1lPWVuY3J5cHRlZE1lZGlhXSBNZWRpYUtl
eU5lZWRlZEV2ZW50Q29uc3RydWN0b3IgTWVkaWFLZXlOZWVkZWRFdmVudDsKIAogICAgIFtDb25k
aXRpb25hbD1WSURFT19UUkFDSywgVjhFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2td
IGF0dHJpYnV0ZSBIVE1MVHJhY2tFbGVtZW50Q29uc3RydWN0b3IgSFRNTFRyYWNrRWxlbWVudDsK
ICAgICBbQ29uZGl0aW9uYWw9VklERU9fVFJBQ0ssIFY4RW5hYmxlZEF0UnVudGltZT13ZWJraXRW
aWRlb1RyYWNrXSBhdHRyaWJ1dGUgVGV4dFRyYWNrQ29uc3RydWN0b3IgVGV4dFRyYWNrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4
IDRiNzA0YWIwNTkzOWU3ODVmMTI3M2Q1NWY3ZTBhNWYyMTMzNWEwNWEuLjAzZDM5MWM2MTM2ZDc2
MmU5ZjdlMTY1YThjZTA0ODZiMmNjMTY0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTI5NSw3ICsyOTUsNyBAQCBzdGF0aWMg
TWVkaWFQbGF5ZXJGYWN0b3J5KiBiZXN0TWVkaWFFbmdpbmVGb3JUeXBlQW5kQ29kZWNzKGNvbnN0
IFN0cmluZyYgdHlwZSwgYwogICAgICAgICAgICAgICAgIGN1cnJlbnQgPSAwOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAg
ICAgICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgZW5naW5lU3VwcG9ydCA9IGVuZ2luZXNb
bmR4XS0+c3VwcG9ydHNUeXBlQW5kQ29kZWNzKHR5cGUsIGNvZGVjcywga2V5U3lzdGVtLCB1cmwp
OwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKGtleVN5c3RlbSk7CkBAIC03ODQsNyArNzg0
LDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBl
KGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHkKICAgICBVTlVTRURfUEFSQU0oY2xpZW50KTsK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQogICAgIHJldHVybiBlbmdp
bmUtPnN1cHBvcnRzVHlwZUFuZENvZGVjcyh0eXBlLCB0eXBlQ29kZWNzLCBzeXN0ZW0sIHVybCk7
CiAjZWxzZQogICAgIEFTU0VSVChzeXN0ZW0uaXNFbXB0eSgpKTsKQEAgLTEwODEsNiArMTA4MSwx
NCBAQCBib29sIE1lZGlhUGxheWVyOjprZXlOZWVkZWQoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjbwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBX1YyKQordm9pZCBNZWRpYVBsYXllcjo6a2V5TmVlZGVkKFVpbnQ4QXJyYXkq
IGluaXREYXRhKQoreworICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQorICAgICAgICBtX21l
ZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllcktleU5lZWRlZCh0aGlzLCBpbml0RGF0YSk7Cit9
CisjZW5kaWYKKwogU3RyaW5nIE1lZGlhUGxheWVyOjpyZWZlcnJlcigpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX21lZGlhUGxheWVyQ2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggMmIwNTE3NmFmNjliYTE2MjZmNjI0MWZhODgzZmZh
NDI1Mzk5Zjg2Mi4uY2I1NTc4YjgxNTA5OGE2NDM3MTIzMzEzYzZkMzAzYzIxZjhjYjA4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0x
OTMsNiArMTkzLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJLZXlO
ZWVkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIC8qIGtleVN5c3RlbSAqLywgY29uc3Qg
U3RyaW5nJiAvKiBzZXNzaW9uSWQgKi8sIGNvbnN0IHVuc2lnbmVkIGNoYXIqIC8qIGluaXREYXRh
ICovLCB1bnNpZ25lZCAvKiBpbml0RGF0YUxlbmd0aCAqLykgeyByZXR1cm4gZmFsc2U7IH0KICNl
bmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKyAgICB2aXJ0dWFsIHZvaWQg
bWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBVaW50OEFycmF5KikgeyB9CisjZW5k
aWYKKyAgICAKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclJlZmVycmVyKCkgY29uc3Qg
eyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclVzZXJB
Z2VudCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBDT1JTTW9kZSBt
ZWRpYVBsYXllckNPUlNNb2RlKCkgY29uc3QgeyByZXR1cm4gVW5zcGVjaWZpZWQ7IH0KQEAgLTQz
MCw2ICs0MzQsMTAgQEAgcHVibGljOgogICAgIGJvb2wga2V5TmVlZGVkKGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciog
aW5pdERhdGEsIHVuc2lnbmVkIGluaXREYXRhTGVuZ3RoKTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQV9WMikKKyAgICB2b2lkIGtleU5lZWRlZChVaW50OEFycmF5KiBpbml0
RGF0YSk7CisjZW5kaWYKKwogICAgIFN0cmluZyByZWZlcnJlcigpIGNvbnN0OwogICAgIFN0cmlu
ZyB1c2VyQWdlbnQoKSBjb25zdDsKIApAQCAtNDgwLDcgKzQ4OCw3IEBAIHByaXZhdGU6CiAKIHR5
cGVkZWYgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+ICgqQ3JlYXRlTWVk
aWFFbmdpbmVQbGF5ZXIpKE1lZGlhUGxheWVyKik7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2lu
ZVN1cHBvcnRlZFR5cGVzKShIYXNoU2V0PFN0cmluZz4mIHR5cGVzKTsKLSNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNS
WVBURURfTUVESUFfVjIpCiB0eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRp
YUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNv
ZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmIHVybCk7CiAjZWxzZQog
dHlwZWRlZiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlICgqTWVkaWFFbmdpbmVTdXBwb3J0c1R5
cGUpKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwm
IHVybCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggNjJhMDJlYmYxZTU5NWI0M2Y2ZjI5OTFi
ODI1NGMwNzA3ZmUzYzM0YS4uM2U0NjZiYzY5MGUwZjNiODRmYzNlMGI5ODcwODdiNTMwZTUxNzU2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1l
ZGlhUGxheWVyKik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxT
dHJpbmc+JiB0eXBlcyk7CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3Vw
cG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0
IEtVUkwmKTsKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAgICAgc3RhdGljIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGUgZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0
IEtVUkwmKTsKICNlbmRpZgogCkBAIC0xNzcsMTkgKzE3NywxNCBAQCBwcml2YXRlOgogCiAjaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCiAgICAgUmV0YWluUHRyPFZU
UGl4ZWxUcmFuc2ZlclNlc3Npb25SZWY+IG1fcGl4ZWxUcmFuc2ZlclNlc3Npb247Ci0jZW5kaWYK
IAotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTA5MAorICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXI7CisgICAgT3duUHRyPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRl
cjsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRkxvYWRlckRlbGVnYXRlPiBtX2xvYWRlckRlbGVn
YXRlOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGlu
Z1JlcXVlc3Q+ID4gbV9rZXlVUklUb1JlcXVlc3RNYXA7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJl
dGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gPiBtX3Nlc3Npb25JRFRvUmVx
dWVzdE1hcDsKICNlbmRpZgogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDkwCi0gICAgZnJpZW5kIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjsKLSAgICBP
d25QdHI8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiBtX3Jlc291cmNlTG9hZGVyOwotI2VuZGlm
Ci0KICNpZiBIQVZFKEFWRk9VTkRBVElPTl9URVhUX1RSQUNLX1NVUFBPUlQpCiAgICAgUmV0YWlu
UHRyPEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXQ+IG1fbGVnaWJsZU91dHB1dDsKICAgICBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQyogbV9jdXJyZW50VHJhY2s7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQppbmRleCA4YmI3ODg1ZWVkMjgyM2I3NjE5YjU3MzdjZjJkNjJhMDJhNmFjMDYwLi4z
NDBlNTljZjgxNzYwMjY5NDFjOGMxNDliMWFlMTRiMjAzNWVkZmJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KQEAgLTE5NCw3ICsxOTQsNyBAQCBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZT4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYQogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5l
KE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUo
KSkKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAgICAgICAgIHJlZ2lzdHJhcihjcmVh
dGUsIGdldFN1cHBvcnRlZFR5cGVzLCBleHRlbmRlZFN1cHBvcnRzVHlwZSwgMCwgMCwgMCk7CiAj
ZWxzZQogICAgICAgICByZWdpc3RyYXIoY3JlYXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9y
dHNUeXBlLCAwLCAwLCAwKTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKE1lZGlh
UGxheQogICAgICwgbV9vYmpjT2JzZXJ2ZXIoQWRvcHROUywgW1tXZWJDb3JlQVZGTW92aWVPYnNl
cnZlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazp0aGlzXSkKICAgICAsIG1fdmlkZW9GcmFtZUhh
c0RyYXduKGZhbHNlKQogICAgICwgbV9oYXZlQ2hlY2tlZFBsYXlhYmlsaXR5KGZhbHNlKQotI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDkwCiAgICAgLCBtX2xvYWRlckRlbGVnYXRlKEFkb3B0TlMsIFtbV2ViQ29yZUFW
RkxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKQogI2VuZGlmCiAj
aWYgSEFWRShBVkZPVU5EQVRJT05fVEVYVF9UUkFDS19TVVBQT1JUKQpAQCAtODE1LDcgKzgxNSw3
IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6c3VwcG9ydHNUeXBlKGNvbnN0CiAgICAgcmV0dXJuIFtBVlVSTEFzc2V0IGlzUGxh
eWFibGVFeHRlbmRlZE1JTUVUeXBlOnR5cGVTdHJpbmddID8gTWVkaWFQbGF5ZXI6OklzU3VwcG9y
dGVkIDogTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOzsKIH0KIAotI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQV9WMikKIHN0YXRpYyBib29sIGtleVN5c3RlbUlzU3VwcG9ydGVkKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKQogewogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShrZXlTeXN0ZW0s
ICJjb20uYXBwbGUubHNrZCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGtleVN5c3RlbSwgImNvbS5h
cHBsZS5sc2tkLjFfMCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAppbmRleCAzZWUxYTRj
Mjk4NmRjODkyNGIzN2Q2ZjEzZTFhZThjNDEyYjA0OGI5Li44YjExZjgzMjgwMDQyMjJlMDRkZWVh
NTNmOWZmYzkzNmQ5ZTVhYTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaApAQCAtNzYs
NyArNzYsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJp
dmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAgICAgc3RhdGljIHZvaWQgZ2V0
U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7CiAgICAgc3RhdGljIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwmKTsKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVE
SUFfVjIpCiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgZXh0ZW5kZWRTdXBw
b3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQubW0KaW5kZXggZWY3ZTM4MDc5ZTA2NTA0Njk3YzIzNjhlMzQ4OWZiODdiMTBj
OWM0ZS4uNTZlMzM0YTZhOGRjNzdmMTg3NTRmNjFhNThiNTcwOGFkYmI1Y2I2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRp
YVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtMTkwLDcgKzE5MCw3IEBAIFBhc3NPd25QdHI8TWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y3JlYXRl
KE1lZGlhUGxhCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpyZWdpc3Rlck1lZGlhRW5n
aW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFi
bGUoKSkKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAgICAgICAgIHJlZ2lzdHJhcihj
cmVhdGUsIGdldFN1cHBvcnRlZFR5cGVzLCBleHRlbmRlZFN1cHBvcnRzVHlwZSwgZ2V0U2l0ZXNJ
bk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk7CiAj
ZWxzZQogICAgICAgICByZWdpc3RyYXIoY3JlYXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9y
dHNUeXBlLCBnZXRTaXRlc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlLCBjbGVhck1lZGlh
Q2FjaGVGb3JTaXRlKTsKQEAgLTE1NTIsNyArMTU1Miw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcm
IHR5CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIH0KIAotI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQ6OmV4dGVuZGVkU3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBL
VVJMJiB1cmwpCiB7CiAgICAgLy8gUVRLaXQgZG9lcyBub3Qgc3VwcG9ydCBhbnkgZW5jcnl0cGVk
IG1lZGlhLCBzbyByZXR1cm4gSXNOb3RTdXBwb3J0ZWQgaWYgdGhlIGtleVN5c3RlbSBpcyBub24t
TlVMTDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhZDRkZDlkYjgxNTI1
MjQ2YzEyYjk5YWJkMWI3NzQ3YTViNTE4YzlkLi5mYjNlNDcxM2YzYTMxODk3N2E4N2Q3NGQ4ZmU2
ZWVhYWZhMzQyZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xMjYs
NiArMTI2LDExIEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisjaW5jbHVkZSAiQ0RNLmgiCisjaW5jbHVk
ZSAiTW9ja0NETS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJM
RShQQUdFX1BPUFVQKQpAQCAtMTkzMiw0ICsxOTM3LDExIEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRV
c2VzT3ZlcmxheVNjcm9sbGJhcnMoYm9vbCBlbmFibGVkKQogICAgIFdlYkNvcmU6OlNldHRpbmdz
OjpzZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnMoZW5hYmxlZCk7CiB9CiAKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBX1YyKQordm9pZCBJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RNKCkKK3sK
KyAgICBDRE06OnJlZ2lzdGVyQ0RNRmFjdG9yeShNb2NrQ0RNOjpjcmVhdGUsIE1vY2tDRE06OnN1
cHBvcnRzS2V5U3l0ZW0pOworfQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCmluZGV4IDY0NmIxNTU5ZjgzZjMyNDNmZmU2YjYyZTQxYWM0MjliYWNlODExNzEuLjVkZDZj
NGIwMmY4M2Y0NjZjMzFiMGM2ZWJmYTIyNjIzMTkxYWNhMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaApAQCAtMjgwLDYgKzI4MCwxMCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgZ2V0
Q3VycmVudEN1cnNvckluZm8oRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIHZvaWQgaW5pdGlhbGl6ZU1vY2tDRE0oKTsKKyNl
bmRpZgorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFscyhEb2N1bWVudCopOwogICAg
IERvY3VtZW50KiBjb250ZXh0RG9jdW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAppbmRleCBhNTBiNzljZTVjNmI0YWM3NzkzZDg4N2IyNTYyZjVmNTgzZGFmNDU1
Li4xNzkzNmM4MDI1OWVmNzEwM2Q4YWYyZDI3ZDI1NWZkZTEwNmFkNTAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0yNDgsNCArMjQ4LDYgQEAKICAgICBBcnJheUJ1ZmZl
ciBzZXJpYWxpemVPYmplY3QoaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIG9iaik7CiAKICAgICB2
b2lkIHNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyhpbiBib29sZWFuIGVuYWJsZWQpOworCisgICAg
W0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMl0gdm9pZCBpbml0aWFsaXplTW9ja0NETSgp
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMTgyM2Y4NzE5
NjY5YWE2ZTk2M2NmOGNiMGZjYTQ2MTlmYmY1MmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uY3BwCkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tDRE0uaCIKKworI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlICJDRE0uaCIKKyNpbmNsdWRlICJNZWRp
YUtleUVycm9yLmgiCisjaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXkuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBNb2NrQ0RNU2Vzc2lvbiA6IHB1YmxpYyBDRE1TZXNzaW9uIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxNb2NrQ0RNU2Vzc2lvbj4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRQdHIobmV3IE1vY2tDRE1TZXNzaW9uKCkpOyB9CisgICAgdmlydHVhbCB+TW9j
a0NETVNlc3Npb24oKSB7IH0KKworICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQo
KSBPVkVSUklERSB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
VWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNo
b3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCByZWxlYXNlS2V5cygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBh
ZGRLZXkoVWludDhBcnJheSosIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVuc2ln
bmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpIE9WRVJSSURF
OworCitwcm90ZWN0ZWQ6CisgICAgTW9ja0NETVNlc3Npb24oKTsKKworICAgIFN0cmluZyBtX3Nl
c3Npb25JZDsKK307CisKK2Jvb2wgTW9ja0NETTo6c3VwcG9ydHNLZXlTeXRlbShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSkKK3sKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2Uoa2V5U3lzdGVt
LCAiY29tLndlYmNvcmUubW9jayIpOworfQorCitib29sIE1vY2tDRE06OnN1cHBvcnRzTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nh
c2UobWltZVR5cGUsICJ2aWRlby9tb2NrIik7Cit9CisKK1Bhc3NPd25QdHI8Q0RNU2Vzc2lvbj4g
TW9ja0NETTo6Y3JlYXRlU2Vzc2lvbigpCit7CisgICAgcmV0dXJuIE1vY2tDRE1TZXNzaW9uOjpj
cmVhdGUoKTsKK30KKworc3RhdGljIFVpbnQ4QXJyYXkqIGluaXREYXRhUHJlZml4KCkKK3sKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwcmVmaXhEYXRhW10gPSB7J20nLCAnbycsICdj
JywgJ2snfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxVaW50OEFycmF5PiwgcHJl
Zml4LCAoKSk7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAo
IWluaXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAgcHJl
Zml4ID0gVWludDhBcnJheTo6Y3JlYXRlKHByZWZpeERhdGEsIHNpemVvZihwcmVmaXhEYXRhKSAv
IHNpemVvZihwcmVmaXhEYXRhWzBdKSk7CisgICAgfQorICAgIHJldHVybiBwcmVmaXguZ2V0KCk7
Cit9CisKK3N0YXRpYyBVaW50OEFycmF5KiBrZXlQcmVmaXgoKQoreworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBjaGFyIHByZWZpeERhdGFbXSA9IHsnaycsICdlJywgJ3knfTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxXVEY6OlVpbnQ4QXJyYXk+LCBwcmVmaXgsICgpKTsKKyAg
ICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmICghaW5pdGlhbGl6ZWQp
IHsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgICBwcmVmaXggPSBVaW50OEFy
cmF5OjpjcmVhdGUocHJlZml4RGF0YSwgc2l6ZW9mKHByZWZpeERhdGEpIC8gc2l6ZW9mKHByZWZp
eERhdGFbMF0pKTsKKyAgICB9CisgICAgcmV0dXJuIHByZWZpeC5nZXQoKTsKK30KKworc3RhdGlj
IFVpbnQ4QXJyYXkqIGtleVJlcXVlc3QoKQoreworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj
aGFyIHJlcXVlc3REYXRhW10gPSB7J3InLCAnZScsICdxJywgJ3UnLCAnZScsICdzJywgJ3QnfTsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxXVEY6OlVpbnQ4QXJyYXk+LCByZXF1ZXN0
LCAoKSk7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoIWlu
aXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAgcmVxdWVz
dCA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShyZXF1ZXN0RGF0YSwgc2l6ZW9mKHJlcXVlc3REYXRhKSAv
IHNpemVvZihyZXF1ZXN0RGF0YVswXSkpOworICAgIH0KKyAgICByZXR1cm4gcmVxdWVzdC5nZXQo
KTsKK30KKworc3RhdGljIFN0cmluZyBnZW5lcmF0ZVNlc3Npb25JZCgpCit7CisgICAgc3RhdGlj
IGludCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Nlc3Npb25JZCA9IDA7CisgICAgcmV0dXJuIFN0
cmluZzo6bnVtYmVyKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nU2Vzc2lvbklkKyspOworfQorCitN
b2NrQ0RNU2Vzc2lvbjo6TW9ja0NETVNlc3Npb24oKQorICAgIDogbV9zZXNzaW9uSWQoZ2VuZXJh
dGVTZXNzaW9uSWQoKSkKK3sKK30KKworUGFzc1JlZlB0cjxVaW50OEFycmF5PiBNb2NrQ0RNU2Vz
c2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYsIFVpbnQ4QXJyYXkqIGluaXRE
YXRhLCBTdHJpbmcmLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNpZ25lZCBsb25nJikK
K3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5pdERhdGFQcmVmaXgoKS0+bGVuZ3Ro
KCk7ICsraSkgeworICAgICAgICBpZiAoIWluaXREYXRhIHx8IGkgPj0gaW5pdERhdGEtPmxlbmd0
aCgpIHx8IGluaXREYXRhLT5pdGVtKGkpICE9IGluaXREYXRhUHJlZml4KCktPml0ZW0oaSkpIHsK
KyAgICAgICAgICAgIGVycm9yQ29kZSA9IE1lZGlhS2V5RXJyb3I6Ok1FRElBX0tFWUVSUl9VTktO
T1dOOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IGtleVJlcXVlc3QoKTsKK30KKwordm9pZCBNb2NrQ0RNU2Vzc2lvbjo6cmVsZWFzZUtleXMoKQor
eworICAgIC8vIG5vLW9wCit9CisKK2Jvb2wgTW9ja0NETVNlc3Npb246OmFkZEtleShVaW50OEFy
cmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUs
IHVuc2lnbmVkIGxvbmcmKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBrZXlQcmVm
aXgoKS0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAoaSA+PSBrZXktPmxlbmd0aCgpIHx8
IGtleS0+aXRlbShpKSAhPSBrZXlQcmVmaXgoKS0+aXRlbShpKSkgeworICAgICAgICAgICAgZXJy
b3JDb2RlID0gTWVkaWFLZXlFcnJvcjo6TUVESUFfS0VZRVJSX0NMSUVOVDsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM1YjUwYTlkNmFmMmFiZmM2Yjg1YjExM2Y0ODM5MDkwYjYx
ZDk4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5o
CkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1vY2tDRE1faAorI2RlZmlu
ZSBNb2NrQ0RNX2gKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRl
ICJDRE1Qcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBDRE07CisKK2NsYXNzIE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJp
dmF0ZUludGVyZmFjZSB7CitwdWJsaWM6CisgICAgLy8gQ0RNRmFjdG9yeSBzdXBwb3J0OgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPENETVByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShDRE0qIGNkbSkg
eyByZXR1cm4gYWRvcHRQdHIobmV3IE1vY2tDRE0oY2RtKSk7IH0KKyAgICBzdGF0aWMgYm9vbCBz
dXBwb3J0c0tleVN5dGVtKGNvbnN0IFN0cmluZyYpOworCisgICAgdmlydHVhbCB+TW9ja0NETSgp
IHsgfQorCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPENETVNlc3Npb24+IGNy
ZWF0ZVNlc3Npb24oKSBPVkVSUklERTsKKworcHJvdGVjdGVkOgorICAgIE1vY2tDRE0oQ0RNKiBj
ZG0pIDogbV9jZG0oY2RtKSB7IH0KKyAgICBDRE0qIG1fY2RtOworfTsKKworfQorCisjZW5kaWYg
Ly8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2VuZGlmIC8vIE1vY2tDRE1faApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDVjMjc0M2M0Y2NkOWYzNDFmNjc0NzMwMTE3NzViOGJmNzU1NDY4MDAuLmRhNGM1ZmI1YzBkYmI1
NDkwYTdjZDFjZmQ1ZmRlNmQ0YWMwOGYwOWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0w
OS0xOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBCcmluZyBX
ZWJLaXQgdXAgdG8gc3BlZWQgd2l0aCBsYXRlc3QgRW5jcnlwdGVkIE1lZGlhIHNwZWMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzAzNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5ldyB0ZXN0
cyBmb3IgdGhlIHVwZGF0ZWQgRW5jcnlwdGVkIE1lZGlhIEV4dGVuc2lvbnMgc3BlYy4KKworICAg
ICAgICAqIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItZXZlbnRzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5
cHRlZC1tZWRpYS12Mi1ldmVudHMuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvZW5jcnlw
dGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXgtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRh
eC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9DaHJvbWl1bS9UZXN0RXhwZWN0YXRp
b25zOiBTa2lwIHRoZSBuZXcgbWVkaWEvZW5jcnlwdGVkLW1lZGlhLyB2MiB0ZXN0cy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS1j
YW4tcGxheS10eXBlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTMtMDItMDggIFN0ZXBoZW4g
Q2hlbm5leSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEZs
YWtleSB0ZXN0IGV4cGVjdGF0aW9ucyB1cGRhdGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21l
ZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItZXZlbnRzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjIt
ZXZlbnRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjI5NjNhMDY0MzA0ZDY4ODYyMDJlOWI4
MjY5OTI1ZmRkYmQ1NTMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5j
cnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1ldmVudHMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTEgQEAKK1RoaXMgdGVzdHMgdGhlIGV2ZW50cyBjcmVhdGVkIGJ5IE1lZGlhS2V5cy4K
KworUlVOKG1lZGlhS2V5cyA9IG5ldyBNZWRpYUtleXMoImNvbS53ZWJjb3JlLm1vY2siKSkKK1JV
TihtZWRpYUtleVNlc3Npb24gPSBtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidmlkZW8vbW9jayIs
IGluaXREYXRhKSkKK0VWRU5UKHdlYmtpdGtleW1lc3NhZ2UpCitSVU4obWVkaWFLZXlTZXNzaW9u
LmFkZEtleShpbnZhbGlkS2V5KSkKK0VWRU5UKHdlYmtpdGtleWVycm9yKQorUlVOKG1lZGlhS2V5
U2Vzc2lvbi5hZGRLZXkodmFsaWRLZXkpKQorRVZFTlQod2Via2l0a2V5YWRkZWQpCitFTkQgT0Yg
VEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5j
cnlwdGVkLW1lZGlhLXYyLWV2ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVk
LW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1ldmVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzc2MDhm
N2I1MzYxZGI5MzZkNjdlYTU0MjIzN2NlYzFiNTYxZTdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1ldmVudHMu
aHRtbApAQCAtMCwwICsxLDUwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8dGl0bGU+TWVkaWFLZXlzPC90aXRsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9
Li4vdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAg
IGZ1bmN0aW9uIHN0cmluZ1RvVWludDhBcnJheShzdHIpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgdmFyIGFycj1bXTsKKyAgICAgICAgICAgICAgICBmb3IodmFyIGk9MCxqPXN0ci5s
ZW5ndGg7aTxqOysraSl7CisgICAgICAgICAgICAgICAgICBhcnJbaV09c3RyLmNoYXJDb2RlQXQo
aSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVWludDhB
cnJheShhcnIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgbWVkaWFLZXlzOwor
ICAgICAgICAgICAgdmFyIG1lZGlhS2V5U2Vzc2lvbjsKKyAgICAgICAgICAgIHZhciBpbml0RGF0
YSA9IHN0cmluZ1RvVWludDhBcnJheSgnbW9jaycpOworICAgICAgICAgICAgdmFyIGludmFsaWRL
ZXkgPSBzdHJpbmdUb1VpbnQ4QXJyYXkoJ2ludmFsaWQnKTsKKyAgICAgICAgICAgIHZhciB2YWxp
ZEtleSA9IHN0cmluZ1RvVWludDhBcnJheSgna2V5Jyk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IHJ1blRlc3QoKSAKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBJbml0aWFsaXpl
IHRoZSBNb2NrQ0RNLiBJdCBzdXBwb3J0cyB0aGUga2V5IHN5c3RlbSAnY29tLmFwcGxlLm1vY2sn
LCB0aGUgCisgICAgICAgICAgICAgICAgLy8gbWltZSB0eXBlICd2aWRlby9tb2NrJy4gSXQgcmVx
dWlyZXMgaW5pdCBkYXRhIHRvIGJlZ2luIHdpdGggJ21vY2snLCBhbmQKKyAgICAgICAgICAgICAg
ICAvLyBrZXlzIHRvIGJlZ2luIHdpdGggJ2tleScuCisgICAgICAgICAgICAgICAgaWYgKGludGVy
bmFscykKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLmluaXRpYWxpemVNb2NrQ0RNKCk7
CisKKyAgICAgICAgICAgICAgICBydW4oJ21lZGlhS2V5cyA9IG5ldyBNZWRpYUtleXMoImNvbS53
ZWJjb3JlLm1vY2siKScpOworICAgICAgICAgICAgICAgIHJ1bignbWVkaWFLZXlTZXNzaW9uID0g
bWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oInZpZGVvL21vY2siLCBpbml0RGF0YSknKTsKKyAgICAg
ICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ3dlYmtpdGtleW1lc3NhZ2UnLCBrZXlNZXNzYWdlLCBm
YWxzZSwgZmFsc2UsIG1lZGlhS2V5U2Vzc2lvbik7CisgICAgICAgICAgICAgICAgd2FpdEZvckV2
ZW50KCd3ZWJraXRrZXllcnJvcicsIGtleUVycm9yLCBmYWxzZSwgZmFsc2UsIG1lZGlhS2V5U2Vz
c2lvbik7CisgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50KCd3ZWJraXRrZXlhZGRlZCcsIG51
bGwsIHRydWUsIGZhbHNlLCBtZWRpYUtleVNlc3Npb24pOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBmdW5jdGlvbiBrZXlNZXNzYWdlKGV2ZW50KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJ1bignbWVkaWFLZXlTZXNzaW9uLmFkZEtleShpbnZhbGlkS2V5KScpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBrZXlFcnJvcihldmVudCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBydW4oJ21lZGlhS2V5U2Vzc2lvbi5hZGRLZXkodmFs
aWRLZXkpJyk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgICAgIDxwPlRoaXMgdGVzdHMgdGhl
IGV2ZW50cyBjcmVhdGVkIGJ5IE1lZGlhS2V5cy48L3A+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvZW5jcnlwdGVkLW1l
ZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
bWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXgtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIzMDUxMTE5Njg1NzYxMjZlN2JlMDg5Y2M1Njc0YmEzZGVkYTcyNGYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5j
cnlwdGVkLW1lZGlhLXYyLXN5bnRheC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNiBAQAorVGhp
cyB0ZXN0cyB0aGUgYmFzaWMgQVBJIG9mIE1lZGlhS2V5cyBhbmQgTWVkaWFLZXlTZXNzaW9uLgor
CitUZXN0IE1lZGlhS2V5cy4KK0VYUEVDVEVEICh0eXBlb2Ygd2luZG93Lk1lZGlhS2V5cyA9PSAn
b2JqZWN0JykgT0sKK1RFU1QobmV3IE1lZGlhS2V5cygiIikpIFRIUk9XUyhET01FeGNlcHRpb24u
SU5WQUxJRF9BQ0NFU1NfRVJSKSBPSworVEVTVChuZXcgTWVkaWFLZXlzKCJ1bnN1cHBvcnRlZCIp
KSBUSFJPV1MoRE9NRXhjZXB0aW9uLk5PVF9TVVBQT1JURURfRVJSKSBPSworUlVOKG1lZGlhS2V5
cyA9IG5ldyBNZWRpYUtleXMoImNvbS53ZWJjb3JlLm1vY2siKSkKK0VYUEVDVEVEIChtZWRpYUtl
eXMua2V5U3lzdGVtID09ICdjb20ud2ViY29yZS5tb2NrJykgT0sKK0VYUEVDVEVEICh0eXBlb2Yg
bWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24gPT0gJ2Z1bmN0aW9uJykgT0sKK1RFU1QobWVkaWFLZXlz
LmNyZWF0ZVNlc3Npb24oIiIsIG5ldyBVaW50OEFycmF5KDEpKSkgVEhST1dTKERPTUV4Y2VwdGlv
bi5JTlZBTElEX0FDQ0VTU19FUlIpIE9LCitURVNUKG1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCJ1
bnN1cHBvcnRlZC90eXBlIikpIFRIUk9XUyhET01FeGNlcHRpb24uTk9UX1NVUFBPUlRFRF9FUlIp
IE9LCisKK1Rlc3QgTWVkaWFLZXlTZXNzaW9uLgorUlVOKG1lZGlhS2V5U2Vzc2lvbiA9IG1lZGlh
S2V5cy5jcmVhdGVTZXNzaW9uKCJ2aWRlby9tb2NrIiwgaW5pdERhdGEpKQorRVhQRUNURUQgKHR5
cGVvZiBtZWRpYUtleVNlc3Npb24gPT0gJ29iamVjdCcpIE9LCitFWFBFQ1RFRCAodHlwZW9mIG1l
ZGlhS2V5U2Vzc2lvbi5hZGRFdmVudExpc3RlbmVyID09ICdmdW5jdGlvbicpIE9LCitFWFBFQ1RF
RCAodHlwZW9mIG1lZGlhS2V5U2Vzc2lvbi5hZGRLZXkgPT0gJ2Z1bmN0aW9uJykgT0sKK0VYUEVD
VEVEIChtZWRpYUtleVNlc3Npb24uZXJyb3IgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKG1lZGlh
S2V5U2Vzc2lvbi5rZXlTeXN0ZW0gPT0gJ2NvbS53ZWJjb3JlLm1vY2snKSBPSworRVhQRUNURUQg
KG1lZGlhS2V5U2Vzc2lvbi5zZXNzaW9uSWQgIT0gJ251bGwnKSBPSworRVhQRUNURUQgKG1lZGlh
S2V5U2Vzc2lvbi5vbndlYmtpdGtleWFkZGVkID09ICdudWxsJykgT0sKK0VYUEVDVEVEIChtZWRp
YUtleVNlc3Npb24ub253ZWJraXRrZXllcnJvciA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAobWVk
aWFLZXlTZXNzaW9uLm9ud2Via2l0a2V5bWVzc2FnZSA9PSAnbnVsbCcpIE9LCitURVNUKG1lZGlh
S2V5U2Vzc2lvbi5hZGRLZXkobnVsbCkpIFRIUk9XUyhET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NF
U1NfRVJSKSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS12Mi1zeW50YXguaHRtbCBiL0xheW91dFRl
c3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEtdjItc3ludGF4Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTgyMGFjOWI3NmQ2ZGJlMWZkY2JkMTc5NTJjZDMxNDYzOWJkZDdjMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0
ZWQtbWVkaWEtdjItc3ludGF4Lmh0bWwKQEAgLTAsMCArMSw1OCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPk1lZGlhS2V5czwvdGl0bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBzdHJpbmdUb1VpbnQ4QXJyYXkoc3RyKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBhcnI9W107CisgICAgICAgICAgICAgICAg
Zm9yKHZhciBpPTAsaj1zdHIubGVuZ3RoO2k8ajsrK2kpeworICAgICAgICAgICAgICAgICAgYXJy
W2ldPXN0ci5jaGFyQ29kZUF0KGkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYXJyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIG1lZGlhS2V5czsKKyAgICAgICAgICAgIHZhciBtZWRpYUtleVNlc3Npb247CisgICAg
ICAgICAgICB2YXIgaW5pdERhdGEgPSBzdHJpbmdUb1VpbnQ4QXJyYXkoJ21vY2snKTsKKworICAg
ICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIAorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIC8vIEluaXRpYWxpemUgdGhlIE1vY2tDRE0uIEl0IHN1cHBvcnRzIHRoZSBrZXkgc3lzdGVt
ICdjb20uYXBwbGUubW9jaycsIHRoZSAKKyAgICAgICAgICAgICAgICAvLyBtaW1lIHR5cGUgJ3Zp
ZGVvL21vY2snLiBJdCByZXF1aXJlcyBpbml0IGRhdGEgdG8gYmVnaW4gd2l0aCAnbW9jaycsIGFu
ZAorICAgICAgICAgICAgICAgIC8vIGtleXMgdG8gYmVnaW4gd2l0aCAna2V5Jy4KKyAgICAgICAg
ICAgICAgICBpZiAoaW50ZXJuYWxzKQorICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbHMuaW5p
dGlhbGl6ZU1vY2tDRE0oKTsKKworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCBN
ZWRpYUtleXMuIik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd0eXBlb2Ygd2luZG93
Lk1lZGlhS2V5cycsICdvYmplY3QnKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhjZXB0aW9uKCdu
ZXcgTWVkaWFLZXlzKCIiKScsICJET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1NfRVJSIik7Cisg
ICAgICAgICAgICAgICAgdGVzdEV4Y2VwdGlvbignbmV3IE1lZGlhS2V5cygidW5zdXBwb3J0ZWQi
KScsICJET01FeGNlcHRpb24uTk9UX1NVUFBPUlRFRF9FUlIiKTsKKyAgICAgICAgICAgICAgICBy
dW4oJ21lZGlhS2V5cyA9IG5ldyBNZWRpYUtleXMoImNvbS53ZWJjb3JlLm1vY2siKScpOworICAg
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnbWVkaWFLZXlzLmtleVN5c3RlbScsICdjb20ud2Vi
Y29yZS5tb2NrJyk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd0eXBlb2YgbWVkaWFL
ZXlzLmNyZWF0ZVNlc3Npb24nLCAnZnVuY3Rpb24nKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhj
ZXB0aW9uKCdtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigiIiwgbmV3IFVpbnQ4QXJyYXkoMSkpJywg
IkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIiKTsKKyAgICAgICAgICAgICAgICB0ZXN0
RXhjZXB0aW9uKCdtZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigidW5zdXBwb3J0ZWQvdHlwZSIpJywg
IkRPTUV4Y2VwdGlvbi5OT1RfU1VQUE9SVEVEX0VSUiIpOworICAgICAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgiIik7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRlc3QgTWVkaWFL
ZXlTZXNzaW9uLiIpOworICAgICAgICAgICAgICAgIHJ1bignbWVkaWFLZXlTZXNzaW9uID0gbWVk
aWFLZXlzLmNyZWF0ZVNlc3Npb24oInZpZGVvL21vY2siLCBpbml0RGF0YSknKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3R5cGVvZiBtZWRpYUtleVNlc3Npb24nLCAnb2JqZWN0Jyk7
CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCd0eXBlb2YgbWVkaWFLZXlTZXNzaW9uLmFk
ZEV2ZW50TGlzdGVuZXInLCAnZnVuY3Rpb24nKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoJ3R5cGVvZiBtZWRpYUtleVNlc3Npb24uYWRkS2V5JywgJ2Z1bmN0aW9uJyk7CisgICAgICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleVNlc3Npb24uZXJyb3InLCBudWxsKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ21lZGlhS2V5U2Vzc2lvbi5rZXlTeXN0ZW0nLCAn
Y29tLndlYmNvcmUubW9jaycpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnbWVkaWFL
ZXlTZXNzaW9uLnNlc3Npb25JZCcsIG51bGwsICchPScpOworICAgICAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgnbWVkaWFLZXlTZXNzaW9uLm9ud2Via2l0a2V5YWRkZWQnLCBudWxsKTsKKyAgICAg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ21lZGlhS2V5U2Vzc2lvbi5vbndlYmtpdGtleWVycm9y
JywgbnVsbCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdtZWRpYUtleVNlc3Npb24u
b253ZWJraXRrZXltZXNzYWdlJywgbnVsbCk7CisgICAgICAgICAgICAgICAgdGVzdEV4Y2VwdGlv
bignbWVkaWFLZXlTZXNzaW9uLmFkZEtleShudWxsKScsICJET01FeGNlcHRpb24uSU5WQUxJRF9B
Q0NFU1NfRVJSIik7CisgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgfQor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorICAgICAgICA8cD5UaGlzIHRlc3RzIHRoZSBiYXNpYyBBUEkgb2YgTWVkaWFLZXlzIGFu
ZCBNZWRpYUtleVNlc3Npb24uPC9wPgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4
cGVjdGF0aW9ucwppbmRleCAyYjU0ZWZiM2U3YzljNmI4OWM2NTdhZGI4MGY1YTYzMDY1NzRkZjky
Li43OWMwZTU4ODE3YTI5YTkxOTlhOTZjYWQwYTAyY2RhNTk1MDY4YWI5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTUwNjQsMyArNTA2
NCw1IEBAIEJ1ZyhzY2hlbm5leSkgdHJhbnNmb3Jtcy8yZC96b29tLW1lbnVsaXN0Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIEJ1ZyhzY2hlbm5leSkgdHJhbnNpdGlvbnMvZGVmYXVsdC10aW1p
bmctZnVuY3Rpb24uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogQnVnKHNjaGVubmV5KSB0cmFu
c2l0aW9ucy9zdXNwZW5kLXRyYW5zZm9ybS10cmFuc2l0aW9uLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KIAord2Via2l0Lm9yZy9iLzk3MDM3IG1lZGlhL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0
ZWQtbWVkaWEtdjItZXZlbnRzLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi85NzAzNyBt
ZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLXYyLXN5bnRheC5odG1sIFsgRmFp
bHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEvZW5jcnlw
dGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS1jYW4tcGxheS10eXBlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9tZWRpYS9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1l
ZGlhLWNhbi1wbGF5LXR5cGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhY2M3N2E0NjU4OTA2
YjIxNWRjZWU2M2QwNjNhOGI3NzhjNGEzMzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvbWVkaWEvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS1jYW4t
cGxheS10eXBlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDc1IEBACitUZXN0IEVuY3J5cHRlZCBN
ZWRpYSBleHRlbnNpb24gb2YgSFRNTE1lZGlhRWxlbWVudCBjYW5QbGF5VHlwZSgpIG1ldGhvZC4K
KworVGhlIHRlc3QgaXMgZGVzaWduZWQgdG8gcGFzcyB3aXRoIGFueSBpbXBsZW1lbnRhdGlvbiBy
ZWdhcmRsZXNzIG9mIHN1cHBvcnRlZCBtZWRpYSB0eXBlcyBhbmQgcmVsaWVzIG9uIHRoZSBleHBl
Y3RlZCBsb2cgdG8gZGV0ZWN0IHRoZSBleHBlY3RlZCByZXN1bHRzIGZvciBzb21lIHR5cGVzLiBU
byBnZXQgc3VmZmljaWVudCBjb3ZlcmFnZSwgaXQgaXMgaW1wb3J0YW50IHRoYXQgYW4gaW1wbGVt
ZW50YXRpb24gc3VwcG9ydCBjbGVhcmtleSBlbmNyeXB0aW9uIG9mIGF0IGxlYXN0IG9uZSBvZiB0
aGUgdHlwZXMgYmVsb3cuCisKK0Fsd2F5cyByZXR1cm4gdGhlIGVtcHR5IHN0cmluZyBmb3Igbm8g
dHlwZS4KK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgpID09ICcnKSBPSworCitBbHdheXMg
cmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgZm9yIGFuIGVtcHR5IHR5cGUuCitFWFBFQ1RFRCAodmlk
ZW8uY2FuUGxheVR5cGUoJycpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBl
KCcnLCAnJykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJycsIG51bGwp
ID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCcnLCB1bmRlZmluZWQpID09
ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCcnLCAnd2Via2l0LW9yZy53My5j
bGVhcmtleScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCcnLCAnV2VC
a0l0LU9yRy5XMy5DbEVhUmtFeScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlU
eXBlKCcnLCAnY29tLmV4YW1wbGUuaW52YWxpZCcpID09ICcnKSBPSworCitBbHdheXMgcmV0dXJu
IHRoZSBlbXB0eSBzdHJpbmcgZm9yIHdoZW4gbm8gY29udGFpbmVyIGlzIHNwZWNpZmllZC4KK0VY
UEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vJykgPT0gJycpIE9LCitFWFBFQ1RFRCAo
dmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvLycsICcnKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRl
by5jYW5QbGF5VHlwZSgndmlkZW8vJywgbnVsbCkgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8u
Y2FuUGxheVR5cGUoJ3ZpZGVvLycsIHVuZGVmaW5lZCkgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlk
ZW8uY2FuUGxheVR5cGUoJ3ZpZGVvLycsICd3ZWJraXQtb3JnLnczLmNsZWFya2V5JykgPT0gJycp
IE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvLycsICdXZUJrSXQtT3JHLlcz
LkNsRWFSa0V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVv
LycsICdjb20uZXhhbXBsZS5pbnZhbGlkJykgPT0gJycpIE9LCisKK0Fsd2F5cyByZXR1cm4gdGhl
IGVtcHR5IHN0cmluZyBmb3IgYW4gdW5zdXBwb3J0ZWQgY29udGFpbmVyLgorRVhQRUNURUQgKHZp
ZGVvLmNhblBsYXlUeXBlKCd2aWRlby9ibGFoYmxhaCcpID09ICcnKSBPSworRVhQRUNURUQgKHZp
ZGVvLmNhblBsYXlUeXBlKCd2aWRlby9ibGFoYmxhaCcsICcnKSA9PSAnJykgT0sKK0VYUEVDVEVE
ICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vYmxhaGJsYWgnLCBudWxsKSA9PSAnJykgT0sKK0VY
UEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vYmxhaGJsYWgnLCB1bmRlZmluZWQpID09
ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9ibGFoYmxhaCcsICd3
ZWJraXQtb3JnLnczLmNsZWFya2V5JykgPT0gJycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxh
eVR5cGUoJ3ZpZGVvL2JsYWhibGFoJywgJ1dlQmtJdC1PckcuVzMuQ2xFYVJrRXknKSA9PSAnJykg
T0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vYmxhaGJsYWgnLCAnY29tLmV4
YW1wbGUuaW52YWxpZCcpID09ICcnKSBPSworCitFbXB0eSBrZXkgc3lzdGVtIHBhcmFtZXRlcnMg
c2hvdWxkIG5vdCBhZmZlY3QgdGhlIHJlc3VsdCBvZiB2aWRlby9tcDQgdHlwZXMuCitSZXN1bHQg
b2YgdmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL21wNDsgQ29kZWNzPSJhdmMxLjRENDAwQyInKTog
J3Byb2JhYmx5JworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9tcDQ7IENvZGVj
cz0iYXZjMS40RDQwMEMiJywgJycpID09ICdwcm9iYWJseScpIE9LCitFWFBFQ1RFRCAodmlkZW8u
Y2FuUGxheVR5cGUoJ3ZpZGVvL21wNDsgQ29kZWNzPSJhdmMxLjRENDAwQyInLCBudWxsKSA9PSAn
cHJvYmFibHknKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby9tcDQ7IENv
ZGVjcz0iYXZjMS40RDQwMEMiJywgdW5kZWZpbmVkKSA9PSAncHJvYmFibHknKSBPSworVGhlcmUg
YXJlIGN1cnJlbnRseSBubyBpbXBsZW1lbnRhdGlvbnMgc3VwcG9ydGluZyBlbmNyeXB0aW9uIG9m
IHZpZGVvL21wNC4KK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vbXA0OyBDb2Rl
Y3M9ImF2YzEuNEQ0MDBDIicsICd3ZWJraXQtb3JnLnczLmNsZWFya2V5JykgPT0gJycpIE9LCitF
WFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL21wNDsgQ29kZWNzPSJhdmMxLjRENDAw
QyInLCAnV2VCa0l0LU9yRy5XMy5DbEVhUmtFeScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVv
LmNhblBsYXlUeXBlKCd2aWRlby9tcDQ7IENvZGVjcz0iYXZjMS40RDQwMEMiJywgJ2NvbS5leGFt
cGxlLmludmFsaWQnKSA9PSAnJykgT0sKKworRW1wdHkga2V5IHN5c3RlbSBwYXJhbWV0ZXJzIHNo
b3VsZCBub3QgYWZmZWN0IHRoZSByZXN1bHQgb2YgYXVkaW8vbXBlZyB0eXBlcy4KK1Jlc3VsdCBv
ZiB2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vbXBlZycpOiAnbWF5YmUnCitFWFBFQ1RFRCAodmlk
ZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL21wZWcnLCAnJykgPT0gJ21heWJlJykgT0sKK0VYUEVDVEVE
ICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vbXBlZycsIG51bGwpID09ICdtYXliZScpIE9LCitF
WFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL21wZWcnLCB1bmRlZmluZWQpID09ICdt
YXliZScpIE9LCitUaGVyZSBhcmUgY3VycmVudGx5IG5vIGltcGxlbWVudGF0aW9ucyBzdXBwb3J0
aW5nIGVuY3J5cHRpb24gb2YgYXVkaW8vbXBlZy4KK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlw
ZSgnYXVkaW8vbXBlZycsICd3ZWJraXQtb3JnLnczLmNsZWFya2V5JykgPT0gJycpIE9LCitFWFBF
Q1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ2F1ZGlvL21wZWcnLCAnV2VCa0l0LU9yRy5XMy5DbEVh
UmtFeScpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby9tcGVn
JywgJ2NvbS5leGFtcGxlLmludmFsaWQnKSA9PSAnJykgT0sKKworRW1wdHkga2V5IHN5c3RlbSBw
YXJhbWV0ZXJzIHNob3VsZCBub3QgYWZmZWN0IHRoZSByZXN1bHQgb2YgYXVkaW8vd2F2IHR5cGVz
LgorUmVzdWx0IG9mIHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby93YXYnKTogJ21heWJlJworRVhQ
RUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCdhdWRpby93YXYnLCAnJykgPT0gJ21heWJlJykgT0sK
K0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vd2F2JywgbnVsbCkgPT0gJ21heWJl
JykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vd2F2JywgdW5kZWZpbmVk
KSA9PSAnbWF5YmUnKSBPSworVGhlcmUgYXJlIGN1cnJlbnRseSBubyBpbXBsZW1lbnRhdGlvbnMg
c3VwcG9ydGluZyBlbmNyeXB0aW9uIG9mIGF1ZGlvL3dhdi4KK0VYUEVDVEVEICh2aWRlby5jYW5Q
bGF5VHlwZSgnYXVkaW8vd2F2JywgJ3dlYmtpdC1vcmcudzMuY2xlYXJrZXknKSA9PSAnJykgT0sK
K0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8vd2F2JywgJ1dlQmtJdC1PckcuVzMu
Q2xFYVJrRXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgnYXVkaW8v
d2F2JywgJ2NvbS5leGFtcGxlLmludmFsaWQnKSA9PSAnJykgT0sKKworRW1wdHkga2V5IHN5c3Rl
bSBwYXJhbWV0ZXJzIHNob3VsZCBub3QgYWZmZWN0IHRoZSByZXN1bHQgb2YgdmlkZW8vd2VibSB0
eXBlcy4KK1Jlc3VsdCBvZiB2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vd2VibScpOiAnJworRVhQ
RUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby93ZWJtJywgJycpID09ICcnKSBPSworRVhQ
RUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby93ZWJtJywgbnVsbCkgPT0gJycpIE9LCitF
WFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL3dlYm0nLCB1bmRlZmluZWQpID09ICcn
KSBPSworQWxsIGltcGxlbWVudGF0aW9ucyB0aGF0IHN1cHBvcnQgV2ViTSBhbmQgRW5jcnlwdGVk
IE1lZGlhIHN1cHBvcnQgZW5jcnlwdGVkIFdlYk0uCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5
cGUoJ3ZpZGVvL3dlYm0nLCAnd2Via2l0LW9yZy53My5jbGVhcmtleScpID09ICcnKSBPSworRVhQ
RUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2aWRlby93ZWJtJywgJ1dlQmtJdC1PckcuVzMuQ2xF
YVJrRXknKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jYW5QbGF5VHlwZSgndmlkZW8vd2Vi
bScsICdjb20uZXhhbXBsZS5pbnZhbGlkJykgPT0gJycpIE9LCitFTkQgT0YgVEVTVAorCg==
</data>
<flag name="review"
          id="207132"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>