<?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>223742</bug_id>
          
          <creation_ts>2021-03-25 04:01:15 -0700</creation_ts>
          <short_desc>[EME][GStreamer] Abort decryptor operations immediately and without errors on flush</short_desc>
          <delta_ts>2021-04-07 02:53:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrique Ocaña">eocanha</reporter>
          <assigned_to name="Enrique Ocaña">eocanha</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1743727</commentid>
    <comment_count>0</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2021-03-25 04:01:15 -0700</bug_when>
    <thetext>A decryptor transformInPlace() operation can cause potentially long waits in two situations:

- transformInPlace() is waiting to get the cdmProxy.
- The CDMProxy::decrypt() method is internally waiting for a specific key to become available.

If a seek operation is performed during those long waits, the main thread will be blocked until the seek finishes the conditions those long waits are waiting for will never be fulfilled (because the operations that complete them happen in the main thread, which is blocked), the internal wait timeouts will trigger and the decoder will trigger an unrecoverable error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744248</commentid>
    <comment_count>1</comment_count>
      <attachid>424378</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2021-03-26 11:24:53 -0700</bug_when>
    <thetext>Created attachment 424378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747372</commentid>
    <comment_count>2</comment_count>
      <attachid>424378</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2021-04-06 05:01:39 -0700</bug_when>
    <thetext>Comment on attachment 424378
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:62
&gt; +    bool isFlushing = false;

Nit: bool isFlushing { false }

&gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:205
&gt; +            return priv-&gt;cdmProxy || priv-&gt;isFlushing;

Nit: I would change the order, I think shortcircuiting on a boolean here can prevent calling the smart pointer methods to see if the cdmProxy instance is valid.

&gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:207
&gt; +        // Note that waitFor() releases the mutex lock internally while it waits, so isFlushing may have been changed.

I don&apos;t see this comment as needed but I don&apos;t have a strong opinion about removing it either.

&gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:220
&gt; +    // Temporarily release the lock while we don&apos;t need to access priv. The lower level API is used
&gt; +    // in order to avoid creating several scopes with different LockHolder instances in each one.
&gt; +    priv-&gt;mutex.unlock();

I know we are not using any priv members from there till the moment we really decrypt but I think if we unlock and lock manually, both calls should be very close to each other to avoid any possible future problems in case somebody forgets we&apos;re not locked from here on. Please, move this down to just where it is needed.

&gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:392
&gt; +            if (!isCdmProxyAttached)
&gt; +                priv-&gt;condition.notifyOne();
&gt; +            locker.unlockEarly();
&gt; +            if (isCdmProxyAttached)
&gt; +                priv-&gt;cdmProxy-&gt;abortWaitingForKey();

This piece of code looks a bit weird to me, can&apos;t we just do an if/else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747460</commentid>
    <comment_count>3</comment_count>
      <attachid>425287</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2021-04-06 09:21:50 -0700</bug_when>
    <thetext>Created attachment 425287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747801</commentid>
    <comment_count>4</comment_count>
      <attachid>425287</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2021-04-07 00:44:39 -0700</bug_when>
    <thetext>Comment on attachment 425287
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:393
&gt; +                locker.unlockEarly();

This line is not needed, the lock is going to be released at the end of the scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747826</commentid>
    <comment_count>5</comment_count>
      <attachid>425370</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2021-04-07 02:23:52 -0700</bug_when>
    <thetext>Created attachment 425370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747834</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-07 02:53:17 -0700</bug_when>
    <thetext>Committed r275599: &lt;https://commits.webkit.org/r275599&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425370.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424378</attachid>
            <date>2021-03-26 11:24:53 -0700</date>
            <delta_ts>2021-04-06 09:21:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223742-20210326192451.patch</filename>
            <type>text/plain</type>
            <size>29292</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0ODc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdlMzAwYTVkZmJiOGYw
OWFkNjc3OTlkMzMyMGZkYmVhZTI5YmM0Yi4uMDJkMGI1NTI1NzEwZjM3YzlmYjY1OTFiMmY2MDAx
MDRiYmMyNjczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDIxLTAzLTI1ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0VN
RV1bR1N0cmVhbWVyXSBBYm9ydCBkZWNyeXB0b3Igb3BlcmF0aW9ucyBpbW1lZGlhdGVseSBhbmQg
d2l0aG91dCBlcnJvcnMgb24gZmx1c2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMzc0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEEgZGVjcnlwdG9yIHRyYW5zZm9ybUluUGxhY2UoKSBvcGVyYXRpb24g
Y2FuIGNhdXNlIHBvdGVudGlhbGx5IGxvbmcgd2FpdHMgaW4KKyAgICAgICAgdHdvIHNpdHVhdGlv
bnM6CisKKyAgICAgICAgLSB0cmFuc2Zvcm1JblBsYWNlKCkgaXMgd2FpdGluZyB0byBnZXQgdGhl
IGNkbVByb3h5LgorICAgICAgICAtIFRoZSBDRE1Qcm94eTo6ZGVjcnlwdCgpIG1ldGhvZCBpcyBp
bnRlcm5hbGx5IHdhaXRpbmcgZm9yIGEgc3BlY2lmaWMga2V5IHRvCisgICAgICAgICAgYmVjb21l
IGF2YWlsYWJsZS4KKworICAgICAgICBJZiBhIHNlZWsgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBk
dXJpbmcgdGhvc2UgbG9uZyB3YWl0cywgdGhlIG1haW4gdGhyZWFkIHdpbGwKKyAgICAgICAgYmUg
YmxvY2tlZCB1bnRpbCB0aGUgc2VlayBmaW5pc2hlcyB0aGUgY29uZGl0aW9ucyB0aG9zZSBsb25n
IHdhaXRzIGFyZSB3YWl0aW5nCisgICAgICAgIGZvciB3aWxsIG5ldmVyIGJlIGZ1bGZpbGxlZCAo
YmVjYXVzZSB0aGUgb3BlcmF0aW9ucyB0aGF0IGNvbXBsZXRlIHRoZW0gaGFwcGVuCisgICAgICAg
IGluIHRoZSBtYWluIHRocmVhZCwgd2hpY2ggaXMgYmxvY2tlZCksIHRoZSBpbnRlcm5hbCB3YWl0
IHRpbWVvdXRzIHdpbGwgdHJpZ2dlcgorICAgICAgICBhbmQgdGhlIGRlY29kZXIgd2lsbCB0cmln
Z2VyIGFuIHVucmVjb3ZlcmFibGUgZXJyb3IuCisKKyAgICAgICAgVGhlIHNvbHV0aW9uIGZvciB0
aGlzIGlzIHRvIGJyZWFrIHRoZSB3YWl0cyBieSBpc3N1aW5nIHRoZSByaWdodCBub3RpZmljYXRp
b25zLAorICAgICAgICBhbmQgdG8gZGV0ZWN0IHRoZSBmbHVzaGVzIHBlcmZvcm1lZCBieSB0aGUg
c2VlaywgZGlzdGluZ3Vpc2luZyB0aGlzIHNwZWNpYWwKKyAgICAgICAgImFib3J0IiBjYXNlIGZy
b20gYSByZWd1bGFyIGVycm9yLCBzbyB0aGF0IHRoZSBzaXR1YXRpb24gaXMgbm8gbG9uZ2VyCisg
ICAgICAgIHVucmVjb3ZlcmFibGUuCisKKyAgICAgICAgVGhpcyBzb2x1dGlvbiBpbnZvbHZlcyBj
aGFuZ2VzIGluIHNldmVyYWwgbGF5ZXJzLiBBIHB1YmxpYworICAgICAgICBDRE1Qcm94eTo6YWJv
cnRXYWl0aW5nRm9yS2V5KCkgbWV0aG9kIGlzIGV4cG9zZWQgdG8gYWxsb3cgdGhlIGRlY3J5cHRv
ciB0bworICAgICAgICBhd2FrZSB0aGUgaW5uZXIgd2FpdEZvcigpIHRoYXQgY2hlY2tzIGZvciB0
aGUga2V5LiBUaGUgY2RtUHJveHkgd2FpdCBpcyBhbHNvCisgICAgICAgIGF3YWtlbiBpbiBjYXNl
IHRoZXJlJ3Mgbm8gY2RtUHJveHkgYXZhaWxhYmxlIHlldC4KKworICAgICAgICBJbiBvcmRlciB0
byBkaXN0aW5ndWlzaCBpZiB0aGUgYXdha2VuaW5ncyBhcmUgY2F1c2VkIGJ5IHJlYWwgZXJyb3Jz
IChubworICAgICAgICBjZG1Qcm94eSwgbm8ga2V5IGF2YWlsYWJsZSkgb3IgYnkgYSBmbHVzaCBv
cGVyYXRpb24gKGNhdXNlZCBieSB0aGUgc2VlayksIHRoZQorICAgICAgICBkZWNyeXB0b3IgZmly
c3QgbmVlZHMgdG8ga2VlcCB0cmFjayBvZiB0aGUgImZsdXNoaW5nIiBzdGF0ZSBhbmQgYWxsb3cg
b3RoZXIKKyAgICAgICAgb2JqZWN0cyB0byBrbm93IGFib3V0IGl0LiBDRE1Qcm94eSBpcyBvbmUg
b2YgdGhvc2Ugb2JqZWN0cywgYnV0IGR1ZSB0byBsYXllcgorICAgICAgICBsaW1pdGF0aW9ucyBp
dCBjYW4ndCBkaXJlY3RseSBhc2sgYWJvdXQgaXQgdG8gdGhlIGRlY3J5cHRvciAoaXQgY2FuJ3Qg
InNlZSIKKyAgICAgICAgaXQpLgorCisgICAgICAgIEEgbmV3IENETVByb3h5RGVjcnlwdGlvbkNs
aWVudCBpbnRlcmZhY2UgaXMgY3JlYXRlZCwgYW5kIHRoZSBkZWNyeXB0b3Igd2lsbAorICAgICAg
ICBob2xkIGFuIGltcGxlbWVudGF0aW9uIG9mIGl0IChhcyBDRE1Qcm94eURlY3J5cHRvckNsaWVu
dEltcGxlbWVudGF0aW9uKS4KKyAgICAgICAgQ0RNUHJveHkgY2FuIHRoZW4ga25vdyB0aGUgY2xp
ZW50IGlzQWJvcnRpbmcoKSwgYW5kIHRoZSBjbGllbnQgd2lsbCBrbm93IHRoZQorICAgICAgICBk
ZWNyeXB0b3IgYW5kIHdpbGwgYXNrIGFib3V0IGl0LgorCisgICAgICAgIEFzIHRoZSBwaXBlbGlu
ZSwgYW5kIHRodXMgdGhlIGRlY3J5cHRvciwgY2FuIGJlIGRlc3Ryb3llZCBhdCBhbnkgbW9tZW50
LAorICAgICAgICB0aGUgY2xpZW50IGhvbGRzIGEgV2Vha1B0ciB0byB0aGUgZGVjcnlwdG9yIGFu
ZCB3aWxsIG9ubHkgYXNrIGlmIGlzQWJvcnRpbmcoKQorICAgICAgICBpZiB0aGUgcG9pbnRlciBp
cyBzdGlsbCBhbGl2ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByb3h5OjphYm9ydFdhaXRpbmdGb3JLZXkg
Y29uc3QpOiBOb3RpZnkgd2FpdGluZyB0aHJlYWRzLgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJv
eHk6OnRyeVdhaXRGb3JLZXlIYW5kbGUgY29uc3QpOiBUYWtlIGEgY2xpZW50IGFuZCBhc2sgaXQg
aWYgaXQncyBhYm9ydGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkNETVByb3h5OjpnZXRPcldhaXRG
b3JLZXlIYW5kbGUgY29uc3QpOiBQYXNzIHRoZSBjbGllbnQgYWxvbmcuCisgICAgICAgIChXZWJD
b3JlOjpDRE1Qcm94eTo6Z2V0T3JXYWl0Rm9yS2V5VmFsdWUgY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oOiBEZWNsYXJhdGlvbiBhbmQg
dXNhZ2Ugb2YgdGhlIENETVByb3h5RGVjcnlwdGlvbkNsaWVudCBpbnRlcmZhY2UuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNETVByb3h5Q2xlYXJLZXk6OmNlbmNTZXREZWNyeXB0aW9uS2V5
KTogUGFzcyB0aGUgY2xpZW50IGFsb25nIGZyb20gdGhlIGNvbnRleHQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5Lmg6IFN0b3JlIGNs
aWVudCBpbiB0aGUgY2VuY0RlY3J5cHRDb250ZXh0LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlUaHVuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNETVByb3h5VGh1bmRlcjo6Z2V0RGVjcnlwdGlvblNlc3Npb24gY29uc3QpOiBQYXNzIHRoZSBj
bGllbnQgYWxvbmcgZnJvbSB0aGUgY29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OkNETVByb3h5
VGh1bmRlcjo6ZGVjcnlwdCk6IEFib3J0IG9wZXJhdGlvbnMgYXJlbid0IGFuIGVycm9yLCBzbyBq
dXN0IHRyaWdnZXIgYSB3YXJuaW5nIGlmIHRoZXJlJ3Mgbm8gc2Vzc2lvbi4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5VGh1bmRlci5oOiBTdG9yZSBj
bGllbnQgaW4gRGVjcnlwdGlvbkNvbnRleHQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9XZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5jcHA6CisgICAg
ICAgIChkZWNyeXB0KTogQXNrIGZvciBjbGllbnQgdG8gdGhlIHN1cGVyY2xhc3MgYW5kIHN0b3Jl
IGl0IGluIHRoZSBjb250ZXh0LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHA6CisgICAg
ICAgIChDRE1Qcm94eURlY3J5cHRpb25DbGllbnRJbXBsZW1lbnRhdGlvbjo6Q0RNUHJveHlEZWNy
eXB0aW9uQ2xpZW50SW1wbGVtZW50YXRpb24pOiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgQ0RNUHJv
eHlEZWNyeXB0aW9uQ2xpZW50IGludGVyZmFjZS4KKyAgICAgICAgKENETVByb3h5RGVjcnlwdGlv
bkNsaWVudEltcGxlbWVudGF0aW9uOjppc0Fib3J0aW5nKTogQXNrIGlmIHRoZSBkZWNyeXB0b3Ig
aXMgZmx1c2hpbmcuCisgICAgICAgIChjb25zdHJ1Y3RlZCk6IEluaXRpYWxpemUgdGhlIGNsaWVu
dC4KKyAgICAgICAgKHRyYW5zZm9ybUluUGxhY2UpOiBDaGVjayB0aGUgZmx1c2ggc3RhdHVzIGFm
dGVyIHdhaXRpbmcgZm9yIHRoZSBDRE1Qcm94eSBhbmQgZm9yIHRoZSBkZWNyeXB0aW9uIHBlcmZv
cm1lZCBieSB0aGUgc3ViY2xhc3Nlcy4gUmVsZWFzZSB0aGUgbG9jayB3aGVuIG5vdCBuZWVkZWQu
CisgICAgICAgIChpc0NETVByb3h5QXZhaWxhYmxlKTogUmVuYW1lZCBtdXRleCB0byBiZSBtb3Jl
IGdlbmVyaWMuCisgICAgICAgIChhdHRhY2hDRE1Qcm94eSk6IERpdHRvLiBBbHNvIHJlbmFtZWQg
Y29uZGl0aW9uIGZvciB0aGUgc2FtZSByZWFzb24uCisgICAgICAgIChzaW5rRXZlbnRIYW5kbGVy
KTogTWFuYWdlIGlzRmx1c2hpbmcgc3RhdHVzIGFuZCBhd2FrZSB3YWl0cyBmb3IgY2RtUHJveHkg
b3IgZm9yIHNlc3Npb24gZGVwZW5kaW5nIG9uIHRoZSBsaWZlY3ljbGUgc3RhZ2UuIAorICAgICAg
ICAod2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdElzRmx1c2hpbmcpOiBFeHBvc2Ug
aXNGbHVzaGluZyBzdGF0dXMuCisgICAgICAgICh3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25E
ZWNyeXB0R2V0Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50KTogUmV0dXJuIFdlYWsgcmVmZXJlbmNl
IHRvIHRoZSBjbGllbnQuCisgICAgICAgIChjaGFuZ2VTdGF0ZSk6IFJlbmFtZWQgY29uZGl0aW9u
LgorICAgICAgICAoc2V0Q29udGV4dCk6IFJlbmFtZWQgbXV0ZXguCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9y
R1N0cmVhbWVyLmg6IE5ldyBnZXR0ZXJzIGZvciBpc0ZsdXNoaW5nIGFuZCB0aGUgY2xpZW50Lgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0VGh1bmRlckRl
Y3J5cHRvckdTdHJlYW1lci5jcHA6CisgICAgICAgIChkZWNyeXB0KTogQXNrIGZvciBjbGllbnQg
dG8gdGhlIHN1cGVyY2xhc3MgYW5kIHN0b3JlIGl0IGluIHRoZSBjb250ZXh0LgorCiAyMDIxLTAz
LTIzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgT25seSBz
ZW5kIGltYWdlIGFjcm9zcyBYUEMgdG8gR1BVIHByb2Nlc3MgaWYgaXQgY2hhbmdlcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcApp
bmRleCA1YjFiNWRmZGJkNTE0ZGUyN2Q2NmU1NDVlNzA0Y2VmZjkwNGQyZmM3Li5iNzcxMjc1OTcy
OTEyZmUxMGJhMTlhYTI5MzkyZWY5YWQzMjU5OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCkBAIC0yNzEsNyArMjcxLDEz
IEBAIHZvaWQgQ0RNUHJveHk6OnN0b3BwZWRXYWl0aW5nRm9yS2V5KCkgY29uc3QKICAgICBtX2lu
c3RhbmNlLT5zdG9wcGVkV2FpdGluZ0ZvcktleSgpOwogfQogCi1PcHRpb25hbDxSZWY8S2V5SGFu
ZGxlPj4gQ0RNUHJveHk6OnRyeVdhaXRGb3JLZXlIYW5kbGUoY29uc3QgS2V5SURUeXBlJiBrZXlJ
RCkgY29uc3QKK3ZvaWQgQ0RNUHJveHk6OmFib3J0V2FpdGluZ0ZvcktleSgpIGNvbnN0Cit7Cisg
ICAgTE9HKEVNRSwgIkVNRSAtIENETVByb3h5IC0gYWJvcnQgd2FpdGluZyBmb3Iga2V5IElEIik7
CisgICAgbV9rZXlzQ29uZGl0aW9uLm5vdGlmeUFsbCgpOworfQorCitPcHRpb25hbDxSZWY8S2V5
SGFuZGxlPj4gQ0RNUHJveHk6OnRyeVdhaXRGb3JLZXlIYW5kbGUoY29uc3QgS2V5SURUeXBlJiBr
ZXlJRCwgV2Vha1B0cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnQ+JiYgY2xpZW50KSBjb25zdAog
ewogICAgIHN0YXJ0ZWRXYWl0aW5nRm9yS2V5KCk7CiAgICAgLy8gVW5jb25kaXRpb25hbGx5IHNh
eWluZyB3ZSBoYXZlIHN0b3BwZWQgd2FpdGluZyBmb3IgYSBrZXkgbWVhbnMgdGhhdCBkZWNyeXB0
b3JzIG9ubHkgZ2V0CkBAIC0yODEsMjEgKzI4NywyNSBAQCBPcHRpb25hbDxSZWY8S2V5SGFuZGxl
Pj4gQ0RNUHJveHk6OnRyeVdhaXRGb3JLZXlIYW5kbGUoY29uc3QgS2V5SURUeXBlJiBrZXlJRCkg
YwogICAgICAgICBzdG9wcGVkV2FpdGluZ0ZvcktleSgpOwogICAgIH0pOwogICAgIExPRyhFTUUs
ICJFTUUgLSBDRE1Qcm94eSAtIHRyeWluZyB0byB3YWl0IGZvciBrZXkgSUQgJXMiLCB2ZWN0b3JU
b0hleFN0cmluZyhrZXlJRCkuYXNjaWkoKS5kYXRhKCkpOwotICAgIGJvb2wgd2FzS2V5UmVjZWl2
ZWQgPSBmYWxzZTsKKyAgICBib29sIHdhc0tleUF2YWlsYWJsZSA9IGZhbHNlOwogICAgIHsKICAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2tleXNNdXRleCk7Ci0gICAgICAgIHdhc0tl
eVJlY2VpdmVkID0gbV9rZXlzQ29uZGl0aW9uLndhaXRGb3IobV9rZXlzTXV0ZXgsIENETVByb3h5
OjpNYXhLZXlXYWl0VGltZVNlY29uZHMsIFsmLCB0aGlzLCBrZXlJRF0oKSB7Ci0gICAgICAgICAg
ICByZXR1cm4ga2V5QXZhaWxhYmxlVW5sb2NrZWQoa2V5SUQpOworCisgICAgICAgIG1fa2V5c0Nv
bmRpdGlvbi53YWl0Rm9yKG1fa2V5c011dGV4LCBDRE1Qcm94eTo6TWF4S2V5V2FpdFRpbWVTZWNv
bmRzLCBbdGhpcywga2V5SUQsIGNsaWVudCA9IFdURk1vdmUoY2xpZW50KSwgJndhc0tleUF2YWls
YWJsZV0oKSB7CisgICAgICAgICAgICBpZiAoIWNsaWVudCB8fCBjbGllbnQtPmlzQWJvcnRpbmco
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHdhc0tleUF2YWls
YWJsZSA9IGtleUF2YWlsYWJsZVVubG9ja2VkKGtleUlEKTsKKyAgICAgICAgICAgIHJldHVybiB3
YXNLZXlBdmFpbGFibGU7CiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIGlmICh3YXNLZXlSZWNl
aXZlZCkgewotICAgICAgICBMT0coRU1FLCAiRU1FIC0gQ0RNUHJveHkgLSBzdWNjZXNzZnVsbHkg
d2FpdGVkIGZvciBrZXkgSUQgJXMiLCB2ZWN0b3JUb0hleFN0cmluZyhrZXlJRCkuYXNjaWkoKS5k
YXRhKCkpOworICAgIGlmICh3YXNLZXlBdmFpbGFibGUpIHsKICAgICAgICAgUmVmUHRyPEtleUhh
bmRsZT4gaGFuZGxlID0ga2V5SGFuZGxlKGtleUlEKTsKKyAgICAgICAgTE9HKEVNRSwgIkVNRSAt
IENETVByb3h5IC0gc3VjY2Vzc2Z1bGx5IHdhaXRlZCBmb3Iga2V5IElEICVzIiwgdmVjdG9yVG9I
ZXhTdHJpbmcoa2V5SUQpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIG1ha2VPcHRp
b25hbChoYW5kbGUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQotICAgIAotICAgIExPRyhFTUUs
ICJFTUUgLSBDRE1Qcm94eSAtIGtleSBJRCAlcyBub3QgYXZhaWxhYmxlIiwgdmVjdG9yVG9IZXhT
dHJpbmcoa2V5SUQpLmFzY2lpKCkuZGF0YSgpKTsKKworICAgIExPRyhFTUUsICJFTUUgLSBDRE1Q
cm94eSAtIGtleSBJRCAlcyBub3QgYXZhaWxhYmxlIG9yIG9wZXJhdGlvbiBhYm9ydGVkIiwgdmVj
dG9yVG9IZXhTdHJpbmcoa2V5SUQpLmFzY2lpKCkuZGF0YSgpKTsKICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogfQogCkBAIC0zMTAsMjAgKzMyMCwyMCBAQCBib29sIENETVByb3h5OjprZXlBdmFp
bGFibGUoY29uc3QgS2V5SURUeXBlJiBrZXlJRCkgY29uc3QKICAgICByZXR1cm4ga2V5QXZhaWxh
YmxlVW5sb2NrZWQoa2V5SUQpOwogfQogCi1PcHRpb25hbDxSZWY8S2V5SGFuZGxlPj4gQ0RNUHJv
eHk6OmdldE9yV2FpdEZvcktleUhhbmRsZShjb25zdCBLZXlJRFR5cGUmIGtleUlEKSBjb25zdAor
T3B0aW9uYWw8UmVmPEtleUhhbmRsZT4+IENETVByb3h5OjpnZXRPcldhaXRGb3JLZXlIYW5kbGUo
Y29uc3QgS2V5SURUeXBlJiBrZXlJRCwgV2Vha1B0cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnQ+
JiYgY2xpZW50KSBjb25zdAogewogICAgIGlmICgha2V5QXZhaWxhYmxlKGtleUlEKSkgewogICAg
ICAgICBMT0coRU1FLCAiRU1FIC0gQ0RNUHJveHkga2V5IGNhY2hlIGRvZXMgbm90IGNvbnRhaW4g
a2V5IElEICVzIiwgdmVjdG9yVG9IZXhTdHJpbmcoa2V5SUQpLmFzY2lpKCkuZGF0YSgpKTsKLSAg
ICAgICAgcmV0dXJuIHRyeVdhaXRGb3JLZXlIYW5kbGUoa2V5SUQpOworICAgICAgICByZXR1cm4g
dHJ5V2FpdEZvcktleUhhbmRsZShrZXlJRCwgV1RGTW92ZShjbGllbnQpKTsKICAgICB9CiAKICAg
ICBSZWZQdHI8S2V5SGFuZGxlPiBoYW5kbGUgPSBrZXlIYW5kbGUoa2V5SUQpOwogICAgIHJldHVy
biBtYWtlT3B0aW9uYWwoaGFuZGxlLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCi1PcHRpb25hbDxL
ZXlIYW5kbGVWYWx1ZVZhcmlhbnQ+IENETVByb3h5OjpnZXRPcldhaXRGb3JLZXlWYWx1ZShjb25z
dCBLZXlJRFR5cGUmIGtleUlEKSBjb25zdAorT3B0aW9uYWw8S2V5SGFuZGxlVmFsdWVWYXJpYW50
PiBDRE1Qcm94eTo6Z2V0T3JXYWl0Rm9yS2V5VmFsdWUoY29uc3QgS2V5SURUeXBlJiBrZXlJRCwg
V2Vha1B0cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnQ+JiYgY2xpZW50KSBjb25zdAogewotICAg
IGlmIChhdXRvIGtleUhhbmRsZSA9IGdldE9yV2FpdEZvcktleUhhbmRsZShrZXlJRCkpCisgICAg
aWYgKGF1dG8ga2V5SGFuZGxlID0gZ2V0T3JXYWl0Rm9yS2V5SGFuZGxlKGtleUlELCBXVEZNb3Zl
KGNsaWVudCkpKQogICAgICAgICByZXR1cm4gbWFrZU9wdGlvbmFsKCgqa2V5SGFuZGxlKS0+dmFs
dWUoKSk7CiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCmluZGV4IDgzZWRkOWU5MjU0OWZh
YWVmMTI1MDVlMTUzZWNmNzJmZWI5MzFmYTguLjllYmUzMjNhZmE2MzNjMTgzODUyMThiYmFkNDgz
OGVlNTljNmNhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUHJveHkuaApAQCAtMTQ2LDYgKzE0Niw3IEBAIHByaXZhdGU6CiB9OwogCiBjbGFz
cyBDRE1JbnN0YW5jZVByb3h5OworY2xhc3MgQ0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50OwogCiAv
LyBIYW5kbGUgdG8gYSAicmVhbCIgQ0RNLCBub3QgdGhlIEphdmFTY3JpcHQgZmFjYWRlLiBUaGlz
IGNhbiBiZSB1c2VkCiAvLyBmcm9tIGJhY2tncm91bmQgdGhyZWFkcyAoaS5lLiBkZWNyeXB0b3Jz
KS4KQEAgLTE1NywxNCArMTU4LDE1IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlS2V5U3Rv
cmUoY29uc3QgS2V5U3RvcmUmIG5ld0tleVN0b3JlKTsKICAgICB2b2lkIHNldEluc3RhbmNlKENE
TUluc3RhbmNlUHJveHkqKTsKKyAgICB2b2lkIGFib3J0V2FpdGluZ0ZvcktleSgpIGNvbnN0Owog
CiBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPEtleUhhbmRsZT4ga2V5SGFuZGxlKGNvbnN0IEtleUlE
VHlwZSYpIGNvbnN0OwogICAgIGJvb2wga2V5QXZhaWxhYmxlKGNvbnN0IEtleUlEVHlwZSYpIGNv
bnN0OwogICAgIGJvb2wga2V5QXZhaWxhYmxlVW5sb2NrZWQoY29uc3QgS2V5SURUeXBlJikgY29u
c3Q7Ci0gICAgT3B0aW9uYWw8UmVmPEtleUhhbmRsZT4+IHRyeVdhaXRGb3JLZXlIYW5kbGUoY29u
c3QgS2V5SURUeXBlJikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8UmVmPEtleUhhbmRsZT4+IGdldE9y
V2FpdEZvcktleUhhbmRsZShjb25zdCBLZXlJRFR5cGUmKSBjb25zdDsKLSAgICBPcHRpb25hbDxL
ZXlIYW5kbGVWYWx1ZVZhcmlhbnQ+IGdldE9yV2FpdEZvcktleVZhbHVlKGNvbnN0IEtleUlEVHlw
ZSYpIGNvbnN0OworICAgIE9wdGlvbmFsPFJlZjxLZXlIYW5kbGU+PiB0cnlXYWl0Rm9yS2V5SGFu
ZGxlKGNvbnN0IEtleUlEVHlwZSYsIFdlYWtQdHI8Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50PiYm
KSBjb25zdDsKKyAgICBPcHRpb25hbDxSZWY8S2V5SGFuZGxlPj4gZ2V0T3JXYWl0Rm9yS2V5SGFu
ZGxlKGNvbnN0IEtleUlEVHlwZSYsIFdlYWtQdHI8Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50PiYm
KSBjb25zdDsKKyAgICBPcHRpb25hbDxLZXlIYW5kbGVWYWx1ZVZhcmlhbnQ+IGdldE9yV2FpdEZv
cktleVZhbHVlKGNvbnN0IEtleUlEVHlwZSYsIFdlYWtQdHI8Q0RNUHJveHlEZWNyeXB0aW9uQ2xp
ZW50PiYmKSBjb25zdDsKICAgICB2b2lkIHN0YXJ0ZWRXYWl0aW5nRm9yS2V5KCkgY29uc3Q7CiAg
ICAgdm9pZCBzdG9wcGVkV2FpdGluZ0ZvcktleSgpIGNvbnN0OwogICAgIGNvbnN0IENETUluc3Rh
bmNlUHJveHkqIGluc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YW5jZTsgfQpAQCAtMjUz
LDYgKzI1NSwxMiBAQCBwcml2YXRlOgogICAgIEtleVN0b3JlIG1fa2V5U3RvcmU7CiB9OwogCitj
bGFzcyBDRE1Qcm94eURlY3J5cHRpb25DbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RN
UHJveHlEZWNyeXB0aW9uQ2xpZW50LCBXZWFrUHRyRmFjdG9yeUluaXRpYWxpemF0aW9uOjpFYWdl
cj4geworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBpc0Fib3J0aW5nKCkgPSAwOworICAgIHZp
cnR1YWwgfkNETVByb3h5RGVjcnlwdGlvbkNsaWVudCgpID0gZGVmYXVsdDsKK307CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0NETVByb3h5Q2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmNwcAppbmRleCBjYWE5NzJkYzZiNzc3ZDVk
ZGRmZTRkYzVjNzk0YzMwMmEzMTQ2MTA0Li5iZTE1NDI1NWYzZDc2ODMxNWUzNTY4NzY5MDQ3NmY3
ZjhhZTNiYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5jcHAKQEAgLTEx
Myw3ICsxMTMsNyBAQCBib29sIENETVByb3h5Q2xlYXJLZXk6OmNlbmNTZXRDb3VudGVyVmVjdG9y
KGNvbnN0IGNlbmNEZWNyeXB0Q29udGV4dCYgaW5wdXQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgQ0RNUHJveHlDbGVhcktleTo6Y2VuY1NldERlY3J5cHRpb25LZXkoY29uc3QgY2VuY0Rl
Y3J5cHRDb250ZXh0JiBpbikKK2Jvb2wgQ0RNUHJveHlDbGVhcktleTo6Y2VuY1NldERlY3J5cHRp
b25LZXkoY2VuY0RlY3J5cHRDb250ZXh0JiBpbikKIHsKICAgICAvLyBGSVhNRTogVW5uZWNlc3Nh
cnkgY29weSwgY2FuIHdlIGF2b2lkIHRoaXMgd2hpbGUgc3RpbGwgZXhwb3NpbmcKICAgICAvLyBh
IG5vbi1HU3RyZWFtZXItc3BlY2lmaWMgRGVjcnlwdElucHV0IEFQST8gVGhlc2UgYnVmZmVycyBh
cmUKQEAgLTEyMSw3ICsxMjEsNyBAQCBib29sIENETVByb3h5Q2xlYXJLZXk6OmNlbmNTZXREZWNy
eXB0aW9uS2V5KGNvbnN0IGNlbmNEZWNyeXB0Q29udGV4dCYgaW4pCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGtleUlEVmVjOwogICAgIGtleUlEVmVjLmFwcGVuZChpbi5rZXlJRCwgaW4ua2V5SURTaXpl
SW5CeXRlcyk7CiAKLSAgICBhdXRvIGtleURhdGEgPSBnZXRPcldhaXRGb3JLZXlWYWx1ZShrZXlJ
RFZlYyk7CisgICAgYXV0byBrZXlEYXRhID0gZ2V0T3JXYWl0Rm9yS2V5VmFsdWUoa2V5SURWZWMs
IFdURk1vdmUoaW4uY2RtUHJveHlEZWNyeXB0aW9uQ2xpZW50KSk7CiAgICAgaWYgKCFrZXlEYXRh
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5
LmgKaW5kZXggZmY5NmJmYWMxMjlkNmRkM2FlN2M1ZGQwNzc0YmUxYWIyNTQxN2NlMC4uODk2YWJk
YmQ2NTY1NTkyMGEwODFkODUwNTkxYWJmM2ZmZGYxOGY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Q
cm94eUNsZWFyS2V5LmgKQEAgLTkxLDYgKzkxLDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCB1
aW50OF90KiBzdWJzYW1wbGVzQnVmZmVyOwogICAgICAgICBzaXplX3Qgc3Vic2FtcGxlc0J1ZmZl
clNpemVJbkJ5dGVzOwogICAgICAgICBzaXplX3QgbnVtU3Vic2FtcGxlczsKKyAgICAgICAgV2Vh
a1B0cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnQ+IGNkbVByb3h5RGVjcnlwdGlvbkNsaWVudDsK
IAogICAgICAgICBib29sIGlzU3Vic2FtcGxlZCgpIGNvbnN0IHsgcmV0dXJuIG51bVN1YnNhbXBs
ZXM7IH0KICAgICB9OwpAQCAtMTA3LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgLy8gd2Ugd2ls
bCBzdXJlbHkgaGF2ZSB0byBzdXBwb3J0IG1vcmUgcHJvdGVjdGlvbiBzY2hlbWVzLiBDYW4gd2UK
ICAgICAvLyByZXVzZSBzb21lIENyeXB0byBBUElzIGluIFdlYkNvcmU/CiAgICAgYm9vbCBjZW5j
U2V0Q291bnRlclZlY3Rvcihjb25zdCBjZW5jRGVjcnlwdENvbnRleHQmKTsKLSAgICBib29sIGNl
bmNTZXREZWNyeXB0aW9uS2V5KGNvbnN0IGNlbmNEZWNyeXB0Q29udGV4dCYpOworICAgIGJvb2wg
Y2VuY1NldERlY3J5cHRpb25LZXkoY2VuY0RlY3J5cHRDb250ZXh0Jik7CiAgICAgYm9vbCBjZW5j
RGVjcnlwdEZ1bGxTYW1wbGUoY2VuY0RlY3J5cHRDb250ZXh0Jik7CiAgICAgYm9vbCBjZW5jRGVj
cnlwdFN1YnNhbXBsZWQoY2VuY0RlY3J5cHRDb250ZXh0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlUaHVuZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
UHJveHlUaHVuZGVyLmNwcAppbmRleCAxMWY2ZDdhZTExMzY3ZDdmOTQ2YTZmNThmNzU1ZmYwMDRk
ODRlYjNjLi43ZDgzNTJmMTczMjg5NDZjNGFhODExZWY5MDkxOThkYzQ2YmIzNjZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVBy
b3h5VGh1bmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9DRE1Qcm94eVRodW5kZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIC8vIE5PVEU6IFlvdVR1YmUgMjAxOSBFTUUgY29uZm9ybWFuY2UgdGVzdHMg
ZXhwZWN0IHRoaXMgdG8gYmUgPj01cy4KIGNvbnN0IFdURjo6U2Vjb25kcyBzX2xpY2Vuc2VLZXlS
ZXNwb25zZVRpbWVvdXQgPSBXVEY6OlNlY29uZHMoNik7CiAKLUJveFB0cjxPcGVuQ0RNU2Vzc2lv
bj4gQ0RNUHJveHlUaHVuZGVyOjpnZXREZWNyeXB0aW9uU2Vzc2lvbihjb25zdCBEZWNyeXB0aW9u
Q29udGV4dCYgaW4pIGNvbnN0CitCb3hQdHI8T3BlbkNETVNlc3Npb24+IENETVByb3h5VGh1bmRl
cjo6Z2V0RGVjcnlwdGlvblNlc3Npb24oRGVjcnlwdGlvbkNvbnRleHQmIGluKSBjb25zdAogewog
ICAgIEdzdE1hcHBlZEJ1ZmZlciBtYXBwZWRLZXlJRChpbi5rZXlJREJ1ZmZlciwgR1NUX01BUF9S
RUFEKTsKICAgICBpZiAoIW1hcHBlZEtleUlEKSB7CkBAIC01NCw3ICs1NCw3IEBAIEJveFB0cjxP
cGVuQ0RNU2Vzc2lvbj4gQ0RNUHJveHlUaHVuZGVyOjpnZXREZWNyeXB0aW9uU2Vzc2lvbihjb25z
dCBEZWNyeXB0aW9uQ29uCiAKICAgICBhdXRvIGtleUlEID0gbWFwcGVkS2V5SUQuY3JlYXRlVmVj
dG9yKCk7CiAKLSAgICBhdXRvIGtleUhhbmRsZSA9IGdldE9yV2FpdEZvcktleUhhbmRsZShrZXlJ
RCk7CisgICAgYXV0byBrZXlIYW5kbGUgPSBnZXRPcldhaXRGb3JLZXlIYW5kbGUoa2V5SUQsIFdU
Rk1vdmUoaW4uY2RtUHJveHlEZWNyeXB0aW9uQ2xpZW50KSk7CiAgICAgaWYgKCFrZXlIYW5kbGUu
aGFzVmFsdWUoKSB8fCAha2V5SGFuZGxlLnZhbHVlKCktPmlzU3RhdHVzQ3VycmVudGx5VmFsaWQo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBDRE1Q
cm94eVRodW5kZXI6OmRlY3J5cHQoQ0RNUHJveHlUaHVuZGVyOjpEZWNyeXB0aW9uQ29udGV4dCYg
aW5wdXQpCiB7CiAgICAgQm94UHRyPE9wZW5DRE1TZXNzaW9uPiBzZXNzaW9uID0gZ2V0RGVjcnlw
dGlvblNlc3Npb24oaW5wdXQpOwogICAgIGlmICghc2Vzc2lvbikgewotICAgICAgICBHU1RfRVJS
T1IoInRoZXJlIGlzIG5vIHZhbGlkIHNlc3Npb24gdG8gZGVjcnlwdCBmb3IgdGhlIHByb3ZpZGVk
IGtleSBJRCIpOworICAgICAgICBHU1RfV0FSTklORygidGhlcmUgaXMgbm8gdmFsaWQgc2Vzc2lv
biB0byBkZWNyeXB0IGZvciB0aGUgcHJvdmlkZWQga2V5IElEIChvciB0aGUgb3BlcmF0aW9uIHdh
cyBhYm9ydGVkKSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5
VGh1bmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9DRE1Qcm94eVRodW5kZXIuaAppbmRleCAwZGU2MzU1NTRkNDMxNjZmYWI1ZDJiZmIyYTBlMjA2
ZmRiZGViZmMxLi5hZDU0NDM2NGE0ODNiZWJjMzA5NGQ0YWNiN2Y0ZDYyZjg2NDhjZDBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVByb3h5VGh1bmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNUHJveHlUaHVuZGVyLmgKQEAgLTUzLDEzICs1MywxNCBAQCBwdWJsaWM6
CiAgICAgICAgIEdzdEJ1ZmZlciogZGF0YUJ1ZmZlcjsKICAgICAgICAgR3N0QnVmZmVyKiBzdWJz
YW1wbGVzQnVmZmVyOwogICAgICAgICBzaXplX3QgbnVtU3Vic2FtcGxlczsKKyAgICAgICAgV2Vh
a1B0cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnQ+IGNkbVByb3h5RGVjcnlwdGlvbkNsaWVudDsK
ICAgICB9OwogCiAgICAgYm9vbCBkZWNyeXB0KERlY3J5cHRpb25Db250ZXh0Jik7CiAgICAgY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSB7IHJldHVybiBtX2tleVN5c3RlbTsgfQogCiBwcml2YXRl
OgotICAgIEJveFB0cjxPcGVuQ0RNU2Vzc2lvbj4gZ2V0RGVjcnlwdGlvblNlc3Npb24oY29uc3Qg
RGVjcnlwdGlvbkNvbnRleHQmKSBjb25zdDsKKyAgICBCb3hQdHI8T3BlbkNETVNlc3Npb24+IGdl
dERlY3J5cHRpb25TZXNzaW9uKERlY3J5cHRpb25Db250ZXh0JikgY29uc3Q7CiAgICAgU3RyaW5n
IG1fa2V5U3lzdGVtOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktp
dENsZWFyS2V5RGVjcnlwdG9yR1N0cmVhbWVyLmNwcAppbmRleCAxYWI5N2JiM2I5MzU2MzE3ODFk
OTRlNTc1MGM2YzQ1ZDc1OGJlYzUyLi5kYzliNWEzYTRmYWM1OTdjY2FlYWRlNzVmM2VkYzFjZTFk
NzM3MThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL1dlYktpdENsZWFyS2V5RGVjcnlwdG9yR1N0cmVhbWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENsZWFyS2V5
RGVjcnlwdG9yR1N0cmVhbWVyLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHN0YXRpYyBib29sIGRl
Y3J5cHQoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZiwgR3N0QnVmZmVy
KiBpdkJ1ZmZlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBDRE1Qcm94eUNs
ZWFyS2V5OjpjZW5jRGVjcnlwdENvbnRleHQgY29udGV4dDsKKyAgICBDRE1Qcm94eUNsZWFyS2V5
OjpjZW5jRGVjcnlwdENvbnRleHQgY29udGV4dCA9IHsgfTsKICAgICBjb250ZXh0LmtleUlEID0g
bWFwcGVkS2V5SWRCdWZmZXIuZGF0YSgpOwogICAgIGNvbnRleHQua2V5SURTaXplSW5CeXRlcyA9
IG1hcHBlZEtleUlkQnVmZmVyLnNpemUoKTsKICAgICBjb250ZXh0Lml2ID0gbWFwcGVkSVZCdWZm
ZXIuZGF0YSgpOwpAQCAtMTQ1LDYgKzE0NSw3IEBAIHN0YXRpYyBib29sIGRlY3J5cHQoV2ViS2l0
TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZiwgR3N0QnVmZmVyKiBpdkJ1ZmZlCiAg
ICAgICAgIGNvbnRleHQuc3Vic2FtcGxlc0J1ZmZlciA9IG1hcHBlZFN1YnNhbXBsZXNCdWZmZXIu
ZGF0YSgpOwogICAgICAgICBjb250ZXh0LnN1YnNhbXBsZXNCdWZmZXJTaXplSW5CeXRlcyA9IG1h
cHBlZFN1YnNhbXBsZXNCdWZmZXIuc2l6ZSgpOwogICAgIH0KKyAgICBjb250ZXh0LmNkbVByb3h5
RGVjcnlwdGlvbkNsaWVudCA9IHdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRHZXRD
RE1Qcm94eURlY3J5cHRpb25DbGllbnQoc2VsZik7CiAKICAgICByZXR1cm4gcHJpdi0+Y2RtUHJv
eHktPmNlbmNEZWNyeXB0KGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVj
cnlwdG9yR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAK
aW5kZXggNWNkOTIxMzE1OWE1N2M0YWFmNzFmMzM5MDVkYWE4M2M2YWExODllZC4uZjVlZDVhODJm
NTVkYWE2MWViOTcyMDk5N2JhZWZlMzg0YmYyNjIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9u
RGVjcnlwdG9yR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFt
ZXIuY3BwCkBAIC0zNiwxMiArMzYsMzEgQEAKIAogdXNpbmcgV2ViQ29yZTo6Q0RNUHJveHk7CiAK
Ky8vIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGFyZSB0aWVkIHRvIHRoZSBkZWNyeXB0b3IgbGlm
ZWN5Y2xlLiBUaGV5IGNhbid0IGJlIGFsaXZlIGFmdGVyIHRoZSBkZWNyeXB0b3IgaGFzIGJlZW4g
ZGVzdHJveWVkLgorY2xhc3MgQ0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50SW1wbGVtZW50YXRpb24g
OiBwdWJsaWMgV2ViQ29yZTo6Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBDRE1Qcm94eURlY3J5cHRpb25DbGllbnRJ
bXBsZW1lbnRhdGlvbihXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiBkZWNyeXB0
b3IpCisgICAgICAgIDogbV9kZWNyeXB0b3IoZGVjcnlwdG9yKSB7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNBYm9ydGluZygpCisgICAgeworICAgICAgICByZXR1cm4gd2ViS2l0TWVkaWFDb21tb25F
bmNyeXB0aW9uRGVjcnlwdElzRmx1c2hpbmcobV9kZWNyeXB0b3IpOworICAgIH0KKyAgICB2aXJ0
dWFsIH5DRE1Qcm94eURlY3J5cHRpb25DbGllbnRJbXBsZW1lbnRhdGlvbigpID0gZGVmYXVsdDsK
K3ByaXZhdGU6CisgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogbV9kZWNy
eXB0b3I7Cit9OworCiAjZGVmaW5lIFdFQktJVF9NRURJQV9DRU5DX0RFQ1JZUFRfR0VUX1BSSVZB
VEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9N
RURJQV9DRU5DX0RFQ1JZUFQsIFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRQcml2
YXRlKSkKIHN0cnVjdCBfV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFByaXZhdGUg
ewogICAgIFJlZlB0cjxDRE1Qcm94eT4gY2RtUHJveHk7CiAKLSAgICBMb2NrIGNkbUF0dGFjaG1l
bnRNdXRleDsKLSAgICBDb25kaXRpb24gY2RtQXR0YWNobWVudENvbmRpdGlvbjsKKyAgICAvLyBQ
cm90ZWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHN0cnVjdHVyZSBtZW1iZXJzLgorICAgIExvY2sgbXV0
ZXg7CisgICAgQ29uZGl0aW9uIGNvbmRpdGlvbjsKKworICAgIGJvb2wgaXNGbHVzaGluZyA9IGZh
bHNlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnRJbXBsZW1l
bnRhdGlvbj4gY2RtUHJveHlEZWNyeXB0aW9uQ2xpZW50SW1wbGVtZW50YXRpb247CiB9OwogCiBz
dGF0aWMgY29uc3RleHByIFNlY29uZHMgTWF4U2Vjb25kc1RvV2FpdEZvckNETVByb3h5ID0gNV9z
OwpAQCAtODUsNiArMTA0LDEwIEBAIHN0YXRpYyB2b2lkIGNvbnN0cnVjdGVkKEdPYmplY3QqIG9i
amVjdCkKICAgICBnc3RfYmFzZV90cmFuc2Zvcm1fc2V0X2luX3BsYWNlKGJhc2UsIFRSVUUpOwog
ICAgIGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRfcGFzc3Rocm91Z2goYmFzZSwgRkFMU0UpOwogICAg
IGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRfZ2FwX2F3YXJlKGJhc2UsIEZBTFNFKTsKKworICAgIFdl
YktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYgPSBXRUJLSVRfTUVESUFfQ0VO
Q19ERUNSWVBUKGJhc2UpOworICAgIFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRQ
cml2YXRlKiBwcml2ID0gV0VCS0lUX01FRElBX0NFTkNfREVDUllQVF9HRVRfUFJJVkFURShzZWxm
KTsKKyAgICBwcml2LT5jZG1Qcm94eURlY3J5cHRpb25DbGllbnRJbXBsZW1lbnRhdGlvbiA9IFdU
Rjo6bWFrZVVuaXF1ZTxDRE1Qcm94eURlY3J5cHRpb25DbGllbnRJbXBsZW1lbnRhdGlvbj4oc2Vs
Zik7CiB9CiAKIHN0YXRpYyBHc3RDYXBzKiB0cmFuc2Zvcm1DYXBzKEdzdEJhc2VUcmFuc2Zvcm0q
IGJhc2UsIEdzdFBhZERpcmVjdGlvbiBkaXJlY3Rpb24sIEdzdENhcHMqIGNhcHMsIEdzdENhcHMq
IGZpbHRlcikKQEAgLTE2OCwyMCArMTkxLDM0IEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHRyYW5z
Zm9ybUluUGxhY2UoR3N0QmFzZVRyYW5zZm9ybSogYmFzZSwgR3N0QnVmZmVyKiBidWZmZXIpCiAg
ICAgICAgIHJldHVybiBHU1RfRkxPV19PSzsKICAgICB9CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihwcml2LT5jZG1BdHRhY2htZW50TXV0ZXgpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKHByaXYt
Pm11dGV4KTsKKworICAgIGlmIChwcml2LT5pc0ZsdXNoaW5nKSB7CisgICAgICAgIEdTVF9ERUJV
R19PQkpFQ1Qoc2VsZiwgIkRlY3J5cHRpb24gYWJvcnRlZCBiZWNhdXNlIG9mIGZsdXNoIik7Cisg
ICAgICAgIHJldHVybiBHU1RfRkxPV19GTFVTSElORzsKKyAgICB9CiAKICAgICAvLyBUaGUgQ0RN
IGluc3RhbmNlIG5lZWRzIHRvIGJlIG5lZ290aWF0ZWQgYmVmb3JlIHdlIGNhbiBiZWdpbiBkZWNy
eXB0aW9uLgogICAgIGlmICghcHJpdi0+Y2RtUHJveHkpIHsKICAgICAgICAgR1NUX0RFQlVHX09C
SkVDVChzZWxmLCAiQ0RNIG5vdCBhdmFpbGFibGUsIGdvaW5nIHRvIHdhaXQgZm9yIGl0Iik7Ci0g
ICAgICAgIHByaXYtPmNkbUF0dGFjaG1lbnRDb25kaXRpb24ud2FpdEZvcihwcml2LT5jZG1BdHRh
Y2htZW50TXV0ZXgsIE1heFNlY29uZHNUb1dhaXRGb3JDRE1Qcm94eSwgW3ByaXZdIHsKLSAgICAg
ICAgICAgIHJldHVybiBwcml2LT5jZG1Qcm94eTsKKyAgICAgICAgcHJpdi0+Y29uZGl0aW9uLndh
aXRGb3IocHJpdi0+bXV0ZXgsIE1heFNlY29uZHNUb1dhaXRGb3JDRE1Qcm94eSwgW3ByaXZdIHsK
KyAgICAgICAgICAgIHJldHVybiBwcml2LT5jZG1Qcm94eSB8fCBwcml2LT5pc0ZsdXNoaW5nOwog
ICAgICAgICB9KTsKKyAgICAgICAgLy8gTm90ZSB0aGF0IHdhaXRGb3IoKSByZWxlYXNlcyB0aGUg
bXV0ZXggbG9jayBpbnRlcm5hbGx5IHdoaWxlIGl0IHdhaXRzLCBzbyBpc0ZsdXNoaW5nIG1heSBo
YXZlIGJlZW4gY2hhbmdlZC4KKyAgICAgICAgaWYgKHByaXYtPmlzRmx1c2hpbmcpIHsKKyAgICAg
ICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc2VsZiwgIkRlY3J5cHRpb24gYWJvcnRlZCBiZWNhdXNl
IG9mIGZsdXNoIik7CisgICAgICAgICAgICByZXR1cm4gR1NUX0ZMT1dfRkxVU0hJTkc7CisgICAg
ICAgIH0KICAgICAgICAgaWYgKCFwcml2LT5jZG1Qcm94eSkgewogICAgICAgICAgICAgR1NUX0VS
Uk9SX09CSkVDVChzZWxmLCAiQ0RNUHJveHkgd2FzIG5vdCByZXRyaWV2ZWQgaW4gdGltZSIpOwog
ICAgICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX05PVF9TVVBQT1JURUQ7CiAgICAgICAgIH0KICAg
ICAgICAgR1NUX0RFQlVHX09CSkVDVChzZWxmLCAiQ0RNIG5vdyBhdmFpbGFibGUgd2l0aCBhZGRy
ZXNzICVwIiwgcHJpdi0+Y2RtUHJveHkuZ2V0KCkpOwogICAgIH0KKyAgICAvLyBUZW1wb3Jhcmls
eSByZWxlYXNlIHRoZSBsb2NrIHdoaWxlIHdlIGRvbid0IG5lZWQgdG8gYWNjZXNzIHByaXYuIFRo
ZSBsb3dlciBsZXZlbCBBUEkgaXMgdXNlZAorICAgIC8vIGluIG9yZGVyIHRvIGF2b2lkIGNyZWF0
aW5nIHNldmVyYWwgc2NvcGVzIHdpdGggZGlmZmVyZW50IExvY2tIb2xkZXIgaW5zdGFuY2VzIGlu
IGVhY2ggb25lLgorICAgIHByaXYtPm11dGV4LnVubG9jaygpOworCiAgICAgYXV0byByZW1vdmVQ
cm90ZWN0aW9uTWV0YU9uUmV0dXJuID0gbWFrZVNjb3BlRXhpdChbYnVmZmVyLCBwcm90ZWN0aW9u
TWV0YV0gewogICAgICAgICBnc3RfYnVmZmVyX3JlbW92ZV9tZXRhKGJ1ZmZlciwgcmVpbnRlcnBy
ZXRfY2FzdDxHc3RNZXRhKj4ocHJvdGVjdGlvbk1ldGEpKTsKICAgICB9KTsKQEAgLTI0NSw3ICsy
ODIsMTUgQEAgc3RhdGljIEdzdEZsb3dSZXR1cm4gdHJhbnNmb3JtSW5QbGFjZShHc3RCYXNlVHJh
bnNmb3JtKiBiYXNlLCBHc3RCdWZmZXIqIGJ1ZmZlcikKICAgICBXZWJLaXRNZWRpYUNvbW1vbkVu
Y3J5cHRpb25EZWNyeXB0Q2xhc3MqIGtsYXNzID0gV0VCS0lUX01FRElBX0NFTkNfREVDUllQVF9H
RVRfQ0xBU1Moc2VsZik7CiAKICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNlbGYsICJkZWNyeXB0aW5n
Iik7Ci0gICAgaWYgKCFrbGFzcy0+ZGVjcnlwdChzZWxmLCBpdkJ1ZmZlciwga2V5SURCdWZmZXIs
IGJ1ZmZlciwgc3ViU2FtcGxlQ291bnQsIHN1YlNhbXBsZXNCdWZmZXIpKSB7CisgICAgYm9vbCBk
aWREZWNyeXB0aW9uU3VjY2VlZCA9IGtsYXNzLT5kZWNyeXB0KHNlbGYsIGl2QnVmZmVyLCBrZXlJ
REJ1ZmZlciwgYnVmZmVyLCBzdWJTYW1wbGVDb3VudCwgc3ViU2FtcGxlc0J1ZmZlcik7CisKKyAg
ICAvLyBBY2Nlc3NpbmcgcHJpdiBtZW1iZXJzIGFnYWluLgorICAgIHByaXYtPm11dGV4LmxvY2so
KTsKKyAgICBpZiAoIWRpZERlY3J5cHRpb25TdWNjZWVkKSB7CisgICAgICAgIGlmIChwcml2LT5p
c0ZsdXNoaW5nKSB7CisgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJEZWNyeXB0
aW9uIGFib3J0ZWQgYmVjYXVzZSBvZiBmbHVzaCIpOworICAgICAgICAgICAgcmV0dXJuIEdTVF9G
TE9XX0ZMVVNISU5HOworICAgICAgICB9CiAgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc2VsZiwg
IkRlY3J5cHRpb24gZmFpbGVkIik7CiAgICAgICAgIHJldHVybiBHU1RfRkxPV19OT1RfU1VQUE9S
VEVEOwogICAgIH0KQEAgLTI1Niw3ICszMDEsNyBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB0cmFu
c2Zvcm1JblBsYWNlKEdzdEJhc2VUcmFuc2Zvcm0qIGJhc2UsIEdzdEJ1ZmZlciogYnVmZmVyKQog
c3RhdGljIGJvb2wgaXNDRE1Qcm94eUF2YWlsYWJsZShXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRp
b25EZWNyeXB0KiBzZWxmKQogewogICAgIFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5
cHRQcml2YXRlKiBwcml2ID0gV0VCS0lUX01FRElBX0NFTkNfREVDUllQVF9HRVRfUFJJVkFURShz
ZWxmKTsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHByaXYtPmNkbUF0dGFjaG1lbnRNdXRl
eCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhwcml2LT5tdXRleCk7CiAgICAgcmV0dXJu
IHByaXYtPmNkbVByb3h5OwogfQogCkBAIC0yODksMTEgKzMzNCwxMSBAQCBzdGF0aWMgdm9pZCBh
dHRhY2hDRE1Qcm94eShXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiBzZWxmLCBD
RE1Qcm94eSogcAogICAgIFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRQcml2YXRl
KiBwcml2ID0gV0VCS0lUX01FRElBX0NFTkNfREVDUllQVF9HRVRfUFJJVkFURShzZWxmKTsKICAg
ICBXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0Q2xhc3MqIGtsYXNzID0gV0VCS0lU
X01FRElBX0NFTkNfREVDUllQVF9HRVRfQ0xBU1Moc2VsZik7CiAKLSAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKHByaXYtPmNkbUF0dGFjaG1lbnRNdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhwcml2LT5tdXRleCk7CiAgICAgR1NUX0VSUk9SX09CSkVDVChzZWxmLCAiQXR0YWNo
aW5nIENETVByb3h5ICVwIiwgcHJveHkpOwogICAgIHByaXYtPmNkbVByb3h5ID0gcHJveHk7CiAg
ICAga2xhc3MtPmNkbVByb3h5QXR0YWNoZWQoc2VsZiwgcHJpdi0+Y2RtUHJveHkpOwotICAgIHBy
aXYtPmNkbUF0dGFjaG1lbnRDb25kaXRpb24ubm90aWZ5T25lKCk7CisgICAgcHJpdi0+Y29uZGl0
aW9uLm5vdGlmeU9uZSgpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gaW5zdGFsbENETVByb3h5SWZO
b3RBdmFpbGFibGUoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZikKQEAg
LTMxOCw3ICszNjMsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gaW5zdGFsbENETVByb3h5SWZOb3RBdmFp
bGFibGUoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdAogc3RhdGljIGdib29sZWFu
IHNpbmtFdmVudEhhbmRsZXIoR3N0QmFzZVRyYW5zZm9ybSogdHJhbnMsIEdzdEV2ZW50KiBldmVu
dCkKIHsKICAgICBXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiBzZWxmID0gV0VC
S0lUX01FRElBX0NFTkNfREVDUllQVCh0cmFucyk7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gRkFM
U0U7CisgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFByaXZhdGUqIHByaXYg
PSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9QUklWQVRFKHNlbGYpOwogCiAgICAgLy8g
RklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEzNTUKICAg
ICAvLyBXZSBzaG91bGQgYmUgaGFuZGxpbmcgcHJvdGVjdGlvbiBldmVudHMgaW4gdGhpcyBjbGFz
cyBpbgpAQCAtMzMwLDE2ICszNzUsNDggQEAgc3RhdGljIGdib29sZWFuIHNpbmtFdmVudEhhbmRs
ZXIoR3N0QmFzZVRyYW5zZm9ybSogdHJhbnMsIEdzdEV2ZW50KiBldmVudCkKICAgICBjYXNlIEdT
VF9FVkVOVF9DVVNUT01fRE9XTlNUUkVBTV9PT0I6IHsKICAgICAgICAgQVNTRVJUKGdzdF9ldmVu
dF9oYXNfbmFtZShldmVudCwgImF0dGVtcHQtdG8tZGVjcnlwdCIpKTsKICAgICAgICAgR1NUX0RF
QlVHX09CSkVDVChzZWxmLCAiSGFuZGxpbmcgYXR0ZW1wdC10by1kZWNyeXB0Iik7Ci0gICAgICAg
IHJlc3VsdCA9IGluc3RhbGxDRE1Qcm94eUlmTm90QXZhaWxhYmxlKHNlbGYpOworICAgICAgICBn
Ym9vbGVhbiByZXN1bHQgPSBpbnN0YWxsQ0RNUHJveHlJZk5vdEF2YWlsYWJsZShzZWxmKTsKICAg
ICAgICAgZ3N0X2V2ZW50X3VucmVmKGV2ZW50KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQorICAgIGNhc2UgR1NUX0VWRU5UX0ZMVVNIX1NUQVJUOgorICAg
ICAgICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJGbHVzaC1zdGFydCIpOworICAgICAgICB7Cisg
ICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihwcml2LT5tdXRleCk7CisgICAgICAgICAgICBi
b29sIGlzQ2RtUHJveHlBdHRhY2hlZCA9IHByaXYtPmNkbVByb3h5OworICAgICAgICAgICAgcHJp
di0+aXNGbHVzaGluZyA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWlzQ2RtUHJveHlBdHRhY2hl
ZCkKKyAgICAgICAgICAgICAgICBwcml2LT5jb25kaXRpb24ubm90aWZ5T25lKCk7CisgICAgICAg
ICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKKyAgICAgICAgICAgIGlmIChpc0NkbVByb3h5QXR0
YWNoZWQpCisgICAgICAgICAgICAgICAgcHJpdi0+Y2RtUHJveHktPmFib3J0V2FpdGluZ0Zvcktl
eSgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX0VWRU5UX0ZMVVNI
X1NUT1A6CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc2VsZiwgIkZsdXNoLXN0b3AiKTsKKyAg
ICAgICAgeworICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIocHJpdi0+bXV0ZXgpOworICAg
ICAgICAgICAgcHJpdi0+aXNGbHVzaGluZyA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIGJy
ZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJlc3VsdCA9IEdTVF9CQVNFX1RSQU5TRk9STV9D
TEFTUyhwYXJlbnRfY2xhc3MpLT5zaW5rX2V2ZW50KHRyYW5zLCBldmVudCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIEdTVF9CQVNFX1RS
QU5TRk9STV9DTEFTUyhwYXJlbnRfY2xhc3MpLT5zaW5rX2V2ZW50KHRyYW5zLCBldmVudCk7Cit9
CisKK2Jvb2wgd2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdElzRmx1c2hpbmcoV2Vi
S2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZikKK3sKKyAgICBXZWJLaXRNZWRp
YUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9NRURJQV9DRU5D
X0RFQ1JZUFRfR0VUX1BSSVZBVEUoc2VsZik7CisgICAgTG9ja0hvbGRlciBsb2NrZXIocHJpdi0+
bXV0ZXgpOworICAgIHJldHVybiBwcml2LT5pc0ZsdXNoaW5nOworfQorCitXZWFrUHRyPFdlYkNv
cmU6OkNETVByb3h5RGVjcnlwdGlvbkNsaWVudD4gd2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9u
RGVjcnlwdEdldENETVByb3h5RGVjcnlwdGlvbkNsaWVudChXZWJLaXRNZWRpYUNvbW1vbkVuY3J5
cHRpb25EZWNyeXB0KiBzZWxmKQoreworICAgIFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRl
Y3J5cHRQcml2YXRlKiBwcml2ID0gV0VCS0lUX01FRElBX0NFTkNfREVDUllQVF9HRVRfUFJJVkFU
RShzZWxmKTsKKyAgICByZXR1cm4gbWFrZVdlYWtQdHIoKnByaXYtPmNkbVByb3h5RGVjcnlwdGlv
bkNsaWVudEltcGxlbWVudGF0aW9uKTsKIH0KIAogc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJu
IGNoYW5nZVN0YXRlKEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRp
b24pCkBAIC0zNTAsNyArNDI3LDcgQEAgc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIGNoYW5n
ZVN0YXRlKEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW4KICAgICBzd2l0
Y2ggKHRyYW5zaXRpb24pIHsKICAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1JF
QURZOgogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJQQVVTRUQtPlJFQURZIik7Ci0g
ICAgICAgIHByaXYtPmNkbUF0dGFjaG1lbnRDb25kaXRpb24ubm90aWZ5T25lKCk7CisgICAgICAg
IHByaXYtPmNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgYnJlYWs7CkBAIC0zNzEsNyArNDQ4LDcgQEAgc3RhdGljIHZvaWQgc2V0Q29u
dGV4dChHc3RFbGVtZW50KiBlbGVtZW50LCBHc3RDb250ZXh0KiBjb250ZXh0KQogCiAgICAgaWYg
KGdzdF9jb250ZXh0X2hhc19jb250ZXh0X3R5cGUoY29udGV4dCwgImRybS1jZG0tcHJveHkiKSkg
ewogICAgICAgICBjb25zdCBHVmFsdWUqIHZhbHVlID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUo
Z3N0X2NvbnRleHRfZ2V0X3N0cnVjdHVyZShjb250ZXh0KSwgImNkbS1wcm94eSIpOwotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihwcml2LT5jZG1BdHRhY2htZW50TXV0ZXgpOworICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihwcml2LT5tdXRleCk7CiAgICAgICAgIHByaXYtPmNkbVByb3h5ID0g
dmFsdWUgPyByZWludGVycHJldF9jYXN0PENETVByb3h5Kj4oZ192YWx1ZV9nZXRfcG9pbnRlcih2
YWx1ZSkpIDogbnVsbHB0cjsKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzZWxmLCAicmVjZWl2
ZWQgbmV3IENETUluc3RhbmNlICVwIiwgcHJpdi0+Y2RtUHJveHkuZ2V0KCkpOwogICAgICAgICBr
bGFzcy0+Y2RtUHJveHlBdHRhY2hlZChzZWxmLCBwcml2LT5jZG1Qcm94eSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENv
bW1vbkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRv
ckdTdHJlYW1lci5oCmluZGV4IGEwNDY1ZmY1M2QwMDAwN2MyM2Y3YTkwNThhYzliMzQ3ZjZiOGQ1
ZGQuLjk1NTQ2MDlmNzQ0YWFkNzc1MTVhMGZlZTI2MzI5OTlkNDIxZjMxMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29t
bW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5
cHRvckdTdHJlYW1lci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0
YmFzZXRyYW5zZm9ybS5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogR19CRUdJTl9ERUNMUwogCkBAIC00
NSw2ICs0Niw5IEBAIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25E
ZWNyeXB0UHJpdmF0ZSBXZWJLaXRNZWRpYUNvbW1vbkVuY3J5CiAKIEdUeXBlIHdlYmtpdF9tZWRp
YV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2dldF90eXBlKHZvaWQpOwogCitib29sIHdlYktp
dE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRJc0ZsdXNoaW5nKFdlYktpdE1lZGlhQ29tbW9u
RW5jcnlwdGlvbkRlY3J5cHQqKTsKK1dlYWtQdHI8V2ViQ29yZTo6Q0RNUHJveHlEZWNyeXB0aW9u
Q2xpZW50PiB3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0R2V0Q0RNUHJveHlEZWNy
eXB0aW9uQ2xpZW50KFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqKTsKKwogc3Ry
dWN0IF9XZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0IHsKICAgICBHc3RCYXNlVHJh
bnNmb3JtIHBhcmVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRUaHVuZGVyRGVjcnlwdG9yR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0VGh1
bmRlckRlY3J5cHRvckdTdHJlYW1lci5jcHAKaW5kZXggYTIyNjcwZDkxMDVkMGY0NjVmOTNhNmE4
ZjZhYzY1ZGNlMDI0ZDVkYi4uNTgzYmQzYmJjODBkNzJhMzZjMTU1NDkyNWJjYzkwYjg0MDc4Zjky
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9XZWJLaXRUaHVuZGVyRGVjcnlwdG9yR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdFRodW5kZXJEZWNyeXB0
b3JHU3RyZWFtZXIuY3BwCkBAIC0xNTYsMTQgKzE1NiwxNiBAQCBzdGF0aWMgYm9vbCBkZWNyeXB0
KFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqIGRlY3J5cHRvciwgR3N0QnVmZmVy
KiBpdgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgQ0RNUHJveHlUaHVuZGVy
OjpEZWNyeXB0aW9uQ29udGV4dCBjb250ZXh0OworICAgIENETVByb3h5VGh1bmRlcjo6RGVjcnlw
dGlvbkNvbnRleHQgY29udGV4dCA9IHsgfTsKICAgICBjb250ZXh0LmtleUlEQnVmZmVyID0ga2V5
SURCdWZmZXI7CiAgICAgY29udGV4dC5pdkJ1ZmZlciA9IGl2QnVmZmVyOwogICAgIGNvbnRleHQu
ZGF0YUJ1ZmZlciA9IGJ1ZmZlcjsKICAgICBjb250ZXh0Lm51bVN1YnNhbXBsZXMgPSBzdWJzYW1w
bGVDb3VudDsKICAgICBjb250ZXh0LnN1YnNhbXBsZXNCdWZmZXIgPSBzdWJzYW1wbGVDb3VudCA/
IHN1YnNhbXBsZXNCdWZmZXIgOiBudWxscHRyOworICAgIGNvbnRleHQuY2RtUHJveHlEZWNyeXB0
aW9uQ2xpZW50ID0gd2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdEdldENETVByb3h5
RGVjcnlwdGlvbkNsaWVudChzZWxmKTsKKyAgICBib29sIHJlc3VsdCA9IHByaXYtPmNkbVByb3h5
LT5kZWNyeXB0KGNvbnRleHQpOwogCi0gICAgcmV0dXJuIHByaXYtPmNkbVByb3h5LT5kZWNyeXB0
KGNvbnRleHQpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoRU5D
UllQVEVEX01FRElBKSAmJiBFTkFCTEUoVEhVTkRFUikgJiYgVVNFKEdTVFJFQU1FUikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425287</attachid>
            <date>2021-04-06 09:21:50 -0700</date>
            <delta_ts>2021-04-07 02:23:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223742-20210406182149.patch</filename>
            <type>text/plain</type>
            <size>29345</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0ODc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdlMzAwYTVkZmJiOGYw
OWFkNjc3OTlkMzMyMGZkYmVhZTI5YmM0Yi4uMDJkMGI1NTI1NzEwZjM3YzlmYjY1OTFiMmY2MDAx
MDRiYmMyNjczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDIxLTAzLTI1ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0VN
RV1bR1N0cmVhbWVyXSBBYm9ydCBkZWNyeXB0b3Igb3BlcmF0aW9ucyBpbW1lZGlhdGVseSBhbmQg
d2l0aG91dCBlcnJvcnMgb24gZmx1c2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMzc0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEEgZGVjcnlwdG9yIHRyYW5zZm9ybUluUGxhY2UoKSBvcGVyYXRpb24g
Y2FuIGNhdXNlIHBvdGVudGlhbGx5IGxvbmcgd2FpdHMgaW4KKyAgICAgICAgdHdvIHNpdHVhdGlv
bnM6CisKKyAgICAgICAgLSB0cmFuc2Zvcm1JblBsYWNlKCkgaXMgd2FpdGluZyB0byBnZXQgdGhl
IGNkbVByb3h5LgorICAgICAgICAtIFRoZSBDRE1Qcm94eTo6ZGVjcnlwdCgpIG1ldGhvZCBpcyBp
bnRlcm5hbGx5IHdhaXRpbmcgZm9yIGEgc3BlY2lmaWMga2V5IHRvCisgICAgICAgICAgYmVjb21l
IGF2YWlsYWJsZS4KKworICAgICAgICBJZiBhIHNlZWsgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBk
dXJpbmcgdGhvc2UgbG9uZyB3YWl0cywgdGhlIG1haW4gdGhyZWFkIHdpbGwKKyAgICAgICAgYmUg
YmxvY2tlZCB1bnRpbCB0aGUgc2VlayBmaW5pc2hlcyB0aGUgY29uZGl0aW9ucyB0aG9zZSBsb25n
IHdhaXRzIGFyZSB3YWl0aW5nCisgICAgICAgIGZvciB3aWxsIG5ldmVyIGJlIGZ1bGZpbGxlZCAo
YmVjYXVzZSB0aGUgb3BlcmF0aW9ucyB0aGF0IGNvbXBsZXRlIHRoZW0gaGFwcGVuCisgICAgICAg
IGluIHRoZSBtYWluIHRocmVhZCwgd2hpY2ggaXMgYmxvY2tlZCksIHRoZSBpbnRlcm5hbCB3YWl0
IHRpbWVvdXRzIHdpbGwgdHJpZ2dlcgorICAgICAgICBhbmQgdGhlIGRlY29kZXIgd2lsbCB0cmln
Z2VyIGFuIHVucmVjb3ZlcmFibGUgZXJyb3IuCisKKyAgICAgICAgVGhlIHNvbHV0aW9uIGZvciB0
aGlzIGlzIHRvIGJyZWFrIHRoZSB3YWl0cyBieSBpc3N1aW5nIHRoZSByaWdodCBub3RpZmljYXRp
b25zLAorICAgICAgICBhbmQgdG8gZGV0ZWN0IHRoZSBmbHVzaGVzIHBlcmZvcm1lZCBieSB0aGUg
c2VlaywgZGlzdGluZ3Vpc2luZyB0aGlzIHNwZWNpYWwKKyAgICAgICAgImFib3J0IiBjYXNlIGZy
b20gYSByZWd1bGFyIGVycm9yLCBzbyB0aGF0IHRoZSBzaXR1YXRpb24gaXMgbm8gbG9uZ2VyCisg
ICAgICAgIHVucmVjb3ZlcmFibGUuCisKKyAgICAgICAgVGhpcyBzb2x1dGlvbiBpbnZvbHZlcyBj
aGFuZ2VzIGluIHNldmVyYWwgbGF5ZXJzLiBBIHB1YmxpYworICAgICAgICBDRE1Qcm94eTo6YWJv
cnRXYWl0aW5nRm9yS2V5KCkgbWV0aG9kIGlzIGV4cG9zZWQgdG8gYWxsb3cgdGhlIGRlY3J5cHRv
ciB0bworICAgICAgICBhd2FrZSB0aGUgaW5uZXIgd2FpdEZvcigpIHRoYXQgY2hlY2tzIGZvciB0
aGUga2V5LiBUaGUgY2RtUHJveHkgd2FpdCBpcyBhbHNvCisgICAgICAgIGF3YWtlbiBpbiBjYXNl
IHRoZXJlJ3Mgbm8gY2RtUHJveHkgYXZhaWxhYmxlIHlldC4KKworICAgICAgICBJbiBvcmRlciB0
byBkaXN0aW5ndWlzaCBpZiB0aGUgYXdha2VuaW5ncyBhcmUgY2F1c2VkIGJ5IHJlYWwgZXJyb3Jz
IChubworICAgICAgICBjZG1Qcm94eSwgbm8ga2V5IGF2YWlsYWJsZSkgb3IgYnkgYSBmbHVzaCBv
cGVyYXRpb24gKGNhdXNlZCBieSB0aGUgc2VlayksIHRoZQorICAgICAgICBkZWNyeXB0b3IgZmly
c3QgbmVlZHMgdG8ga2VlcCB0cmFjayBvZiB0aGUgImZsdXNoaW5nIiBzdGF0ZSBhbmQgYWxsb3cg
b3RoZXIKKyAgICAgICAgb2JqZWN0cyB0byBrbm93IGFib3V0IGl0LiBDRE1Qcm94eSBpcyBvbmUg
b2YgdGhvc2Ugb2JqZWN0cywgYnV0IGR1ZSB0byBsYXllcgorICAgICAgICBsaW1pdGF0aW9ucyBp
dCBjYW4ndCBkaXJlY3RseSBhc2sgYWJvdXQgaXQgdG8gdGhlIGRlY3J5cHRvciAoaXQgY2FuJ3Qg
InNlZSIKKyAgICAgICAgaXQpLgorCisgICAgICAgIEEgbmV3IENETVByb3h5RGVjcnlwdGlvbkNs
aWVudCBpbnRlcmZhY2UgaXMgY3JlYXRlZCwgYW5kIHRoZSBkZWNyeXB0b3Igd2lsbAorICAgICAg
ICBob2xkIGFuIGltcGxlbWVudGF0aW9uIG9mIGl0IChhcyBDRE1Qcm94eURlY3J5cHRvckNsaWVu
dEltcGxlbWVudGF0aW9uKS4KKyAgICAgICAgQ0RNUHJveHkgY2FuIHRoZW4ga25vdyB0aGUgY2xp
ZW50IGlzQWJvcnRpbmcoKSwgYW5kIHRoZSBjbGllbnQgd2lsbCBrbm93IHRoZQorICAgICAgICBk
ZWNyeXB0b3IgYW5kIHdpbGwgYXNrIGFib3V0IGl0LgorCisgICAgICAgIEFzIHRoZSBwaXBlbGlu
ZSwgYW5kIHRodXMgdGhlIGRlY3J5cHRvciwgY2FuIGJlIGRlc3Ryb3llZCBhdCBhbnkgbW9tZW50
LAorICAgICAgICB0aGUgY2xpZW50IGhvbGRzIGEgV2Vha1B0ciB0byB0aGUgZGVjcnlwdG9yIGFu
ZCB3aWxsIG9ubHkgYXNrIGlmIGlzQWJvcnRpbmcoKQorICAgICAgICBpZiB0aGUgcG9pbnRlciBp
cyBzdGlsbCBhbGl2ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByb3h5OjphYm9ydFdhaXRpbmdGb3JLZXkg
Y29uc3QpOiBOb3RpZnkgd2FpdGluZyB0aHJlYWRzLgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJv
eHk6OnRyeVdhaXRGb3JLZXlIYW5kbGUgY29uc3QpOiBUYWtlIGEgY2xpZW50IGFuZCBhc2sgaXQg
aWYgaXQncyBhYm9ydGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkNETVByb3h5OjpnZXRPcldhaXRG
b3JLZXlIYW5kbGUgY29uc3QpOiBQYXNzIHRoZSBjbGllbnQgYWxvbmcuCisgICAgICAgIChXZWJD
b3JlOjpDRE1Qcm94eTo6Z2V0T3JXYWl0Rm9yS2V5VmFsdWUgY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oOiBEZWNsYXJhdGlvbiBhbmQg
dXNhZ2Ugb2YgdGhlIENETVByb3h5RGVjcnlwdGlvbkNsaWVudCBpbnRlcmZhY2UuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNETVByb3h5Q2xlYXJLZXk6OmNlbmNTZXREZWNyeXB0aW9uS2V5
KTogUGFzcyB0aGUgY2xpZW50IGFsb25nIGZyb20gdGhlIGNvbnRleHQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5Lmg6IFN0b3JlIGNs
aWVudCBpbiB0aGUgY2VuY0RlY3J5cHRDb250ZXh0LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlUaHVuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNETVByb3h5VGh1bmRlcjo6Z2V0RGVjcnlwdGlvblNlc3Npb24gY29uc3QpOiBQYXNzIHRoZSBj
bGllbnQgYWxvbmcgZnJvbSB0aGUgY29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OkNETVByb3h5
VGh1bmRlcjo6ZGVjcnlwdCk6IEFib3J0IG9wZXJhdGlvbnMgYXJlbid0IGFuIGVycm9yLCBzbyBq
dXN0IHRyaWdnZXIgYSB3YXJuaW5nIGlmIHRoZXJlJ3Mgbm8gc2Vzc2lvbi4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5VGh1bmRlci5oOiBTdG9yZSBj
bGllbnQgaW4gRGVjcnlwdGlvbkNvbnRleHQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9XZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5jcHA6CisgICAg
ICAgIChkZWNyeXB0KTogQXNrIGZvciBjbGllbnQgdG8gdGhlIHN1cGVyY2xhc3MgYW5kIHN0b3Jl
IGl0IGluIHRoZSBjb250ZXh0LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHA6CisgICAg
ICAgIChDRE1Qcm94eURlY3J5cHRpb25DbGllbnRJbXBsZW1lbnRhdGlvbjo6Q0RNUHJveHlEZWNy
eXB0aW9uQ2xpZW50SW1wbGVtZW50YXRpb24pOiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgQ0RNUHJv
eHlEZWNyeXB0aW9uQ2xpZW50IGludGVyZmFjZS4KKyAgICAgICAgKENETVByb3h5RGVjcnlwdGlv
bkNsaWVudEltcGxlbWVudGF0aW9uOjppc0Fib3J0aW5nKTogQXNrIGlmIHRoZSBkZWNyeXB0b3Ig
aXMgZmx1c2hpbmcuCisgICAgICAgIChjb25zdHJ1Y3RlZCk6IEluaXRpYWxpemUgdGhlIGNsaWVu
dC4KKyAgICAgICAgKHRyYW5zZm9ybUluUGxhY2UpOiBDaGVjayB0aGUgZmx1c2ggc3RhdHVzIGFm
dGVyIHdhaXRpbmcgZm9yIHRoZSBDRE1Qcm94eSBhbmQgZm9yIHRoZSBkZWNyeXB0aW9uIHBlcmZv
cm1lZCBieSB0aGUgc3ViY2xhc3Nlcy4gUmVsZWFzZSB0aGUgbG9jayB3aGVuIG5vdCBuZWVkZWQu
CisgICAgICAgIChpc0NETVByb3h5QXZhaWxhYmxlKTogUmVuYW1lZCBtdXRleCB0byBiZSBtb3Jl
IGdlbmVyaWMuCisgICAgICAgIChhdHRhY2hDRE1Qcm94eSk6IERpdHRvLiBBbHNvIHJlbmFtZWQg
Y29uZGl0aW9uIGZvciB0aGUgc2FtZSByZWFzb24uCisgICAgICAgIChzaW5rRXZlbnRIYW5kbGVy
KTogTWFuYWdlIGlzRmx1c2hpbmcgc3RhdHVzIGFuZCBhd2FrZSB3YWl0cyBmb3IgY2RtUHJveHkg
b3IgZm9yIHNlc3Npb24gZGVwZW5kaW5nIG9uIHRoZSBsaWZlY3ljbGUgc3RhZ2UuIAorICAgICAg
ICAod2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdElzRmx1c2hpbmcpOiBFeHBvc2Ug
aXNGbHVzaGluZyBzdGF0dXMuCisgICAgICAgICh3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25E
ZWNyeXB0R2V0Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50KTogUmV0dXJuIFdlYWsgcmVmZXJlbmNl
IHRvIHRoZSBjbGllbnQuCisgICAgICAgIChjaGFuZ2VTdGF0ZSk6IFJlbmFtZWQgY29uZGl0aW9u
LgorICAgICAgICAoc2V0Q29udGV4dCk6IFJlbmFtZWQgbXV0ZXguCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9y
R1N0cmVhbWVyLmg6IE5ldyBnZXR0ZXJzIGZvciBpc0ZsdXNoaW5nIGFuZCB0aGUgY2xpZW50Lgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0VGh1bmRlckRl
Y3J5cHRvckdTdHJlYW1lci5jcHA6CisgICAgICAgIChkZWNyeXB0KTogQXNrIGZvciBjbGllbnQg
dG8gdGhlIHN1cGVyY2xhc3MgYW5kIHN0b3JlIGl0IGluIHRoZSBjb250ZXh0LgorCiAyMDIxLTAz
LTIzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgT25seSBz
ZW5kIGltYWdlIGFjcm9zcyBYUEMgdG8gR1BVIHByb2Nlc3MgaWYgaXQgY2hhbmdlcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcApp
bmRleCA1YjFiNWRmZGJkNTE0ZGUyN2Q2NmU1NDVlNzA0Y2VmZjkwNGQyZmM3Li5iNzcxMjc1OTcy
OTEyZmUxMGJhMTlhYTI5MzkyZWY5YWQzMjU5OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCkBAIC0yNzEsNyArMjcxLDEz
IEBAIHZvaWQgQ0RNUHJveHk6OnN0b3BwZWRXYWl0aW5nRm9yS2V5KCkgY29uc3QKICAgICBtX2lu
c3RhbmNlLT5zdG9wcGVkV2FpdGluZ0ZvcktleSgpOwogfQogCi1PcHRpb25hbDxSZWY8S2V5SGFu
ZGxlPj4gQ0RNUHJveHk6OnRyeVdhaXRGb3JLZXlIYW5kbGUoY29uc3QgS2V5SURUeXBlJiBrZXlJ
RCkgY29uc3QKK3ZvaWQgQ0RNUHJveHk6OmFib3J0V2FpdGluZ0ZvcktleSgpIGNvbnN0Cit7Cisg
ICAgTE9HKEVNRSwgIkVNRSAtIENETVByb3h5IC0gYWJvcnQgd2FpdGluZyBmb3Iga2V5IElEIik7
CisgICAgbV9rZXlzQ29uZGl0aW9uLm5vdGlmeUFsbCgpOworfQorCitPcHRpb25hbDxSZWY8S2V5
SGFuZGxlPj4gQ0RNUHJveHk6OnRyeVdhaXRGb3JLZXlIYW5kbGUoY29uc3QgS2V5SURUeXBlJiBr
ZXlJRCwgV2Vha1B0cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnQ+JiYgY2xpZW50KSBjb25zdAog
ewogICAgIHN0YXJ0ZWRXYWl0aW5nRm9yS2V5KCk7CiAgICAgLy8gVW5jb25kaXRpb25hbGx5IHNh
eWluZyB3ZSBoYXZlIHN0b3BwZWQgd2FpdGluZyBmb3IgYSBrZXkgbWVhbnMgdGhhdCBkZWNyeXB0
b3JzIG9ubHkgZ2V0CkBAIC0yODEsMjEgKzI4NywyNSBAQCBPcHRpb25hbDxSZWY8S2V5SGFuZGxl
Pj4gQ0RNUHJveHk6OnRyeVdhaXRGb3JLZXlIYW5kbGUoY29uc3QgS2V5SURUeXBlJiBrZXlJRCkg
YwogICAgICAgICBzdG9wcGVkV2FpdGluZ0ZvcktleSgpOwogICAgIH0pOwogICAgIExPRyhFTUUs
ICJFTUUgLSBDRE1Qcm94eSAtIHRyeWluZyB0byB3YWl0IGZvciBrZXkgSUQgJXMiLCB2ZWN0b3JU
b0hleFN0cmluZyhrZXlJRCkuYXNjaWkoKS5kYXRhKCkpOwotICAgIGJvb2wgd2FzS2V5UmVjZWl2
ZWQgPSBmYWxzZTsKKyAgICBib29sIHdhc0tleUF2YWlsYWJsZSA9IGZhbHNlOwogICAgIHsKICAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2tleXNNdXRleCk7Ci0gICAgICAgIHdhc0tl
eVJlY2VpdmVkID0gbV9rZXlzQ29uZGl0aW9uLndhaXRGb3IobV9rZXlzTXV0ZXgsIENETVByb3h5
OjpNYXhLZXlXYWl0VGltZVNlY29uZHMsIFsmLCB0aGlzLCBrZXlJRF0oKSB7Ci0gICAgICAgICAg
ICByZXR1cm4ga2V5QXZhaWxhYmxlVW5sb2NrZWQoa2V5SUQpOworCisgICAgICAgIG1fa2V5c0Nv
bmRpdGlvbi53YWl0Rm9yKG1fa2V5c011dGV4LCBDRE1Qcm94eTo6TWF4S2V5V2FpdFRpbWVTZWNv
bmRzLCBbdGhpcywga2V5SUQsIGNsaWVudCA9IFdURk1vdmUoY2xpZW50KSwgJndhc0tleUF2YWls
YWJsZV0oKSB7CisgICAgICAgICAgICBpZiAoIWNsaWVudCB8fCBjbGllbnQtPmlzQWJvcnRpbmco
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHdhc0tleUF2YWls
YWJsZSA9IGtleUF2YWlsYWJsZVVubG9ja2VkKGtleUlEKTsKKyAgICAgICAgICAgIHJldHVybiB3
YXNLZXlBdmFpbGFibGU7CiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIGlmICh3YXNLZXlSZWNl
aXZlZCkgewotICAgICAgICBMT0coRU1FLCAiRU1FIC0gQ0RNUHJveHkgLSBzdWNjZXNzZnVsbHkg
d2FpdGVkIGZvciBrZXkgSUQgJXMiLCB2ZWN0b3JUb0hleFN0cmluZyhrZXlJRCkuYXNjaWkoKS5k
YXRhKCkpOworICAgIGlmICh3YXNLZXlBdmFpbGFibGUpIHsKICAgICAgICAgUmVmUHRyPEtleUhh
bmRsZT4gaGFuZGxlID0ga2V5SGFuZGxlKGtleUlEKTsKKyAgICAgICAgTE9HKEVNRSwgIkVNRSAt
IENETVByb3h5IC0gc3VjY2Vzc2Z1bGx5IHdhaXRlZCBmb3Iga2V5IElEICVzIiwgdmVjdG9yVG9I
ZXhTdHJpbmcoa2V5SUQpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIG1ha2VPcHRp
b25hbChoYW5kbGUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQotICAgIAotICAgIExPRyhFTUUs
ICJFTUUgLSBDRE1Qcm94eSAtIGtleSBJRCAlcyBub3QgYXZhaWxhYmxlIiwgdmVjdG9yVG9IZXhT
dHJpbmcoa2V5SUQpLmFzY2lpKCkuZGF0YSgpKTsKKworICAgIExPRyhFTUUsICJFTUUgLSBDRE1Q
cm94eSAtIGtleSBJRCAlcyBub3QgYXZhaWxhYmxlIG9yIG9wZXJhdGlvbiBhYm9ydGVkIiwgdmVj
dG9yVG9IZXhTdHJpbmcoa2V5SUQpLmFzY2lpKCkuZGF0YSgpKTsKICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogfQogCkBAIC0zMTAsMjAgKzMyMCwyMCBAQCBib29sIENETVByb3h5OjprZXlBdmFp
bGFibGUoY29uc3QgS2V5SURUeXBlJiBrZXlJRCkgY29uc3QKICAgICByZXR1cm4ga2V5QXZhaWxh
YmxlVW5sb2NrZWQoa2V5SUQpOwogfQogCi1PcHRpb25hbDxSZWY8S2V5SGFuZGxlPj4gQ0RNUHJv
eHk6OmdldE9yV2FpdEZvcktleUhhbmRsZShjb25zdCBLZXlJRFR5cGUmIGtleUlEKSBjb25zdAor
T3B0aW9uYWw8UmVmPEtleUhhbmRsZT4+IENETVByb3h5OjpnZXRPcldhaXRGb3JLZXlIYW5kbGUo
Y29uc3QgS2V5SURUeXBlJiBrZXlJRCwgV2Vha1B0cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnQ+
JiYgY2xpZW50KSBjb25zdAogewogICAgIGlmICgha2V5QXZhaWxhYmxlKGtleUlEKSkgewogICAg
ICAgICBMT0coRU1FLCAiRU1FIC0gQ0RNUHJveHkga2V5IGNhY2hlIGRvZXMgbm90IGNvbnRhaW4g
a2V5IElEICVzIiwgdmVjdG9yVG9IZXhTdHJpbmcoa2V5SUQpLmFzY2lpKCkuZGF0YSgpKTsKLSAg
ICAgICAgcmV0dXJuIHRyeVdhaXRGb3JLZXlIYW5kbGUoa2V5SUQpOworICAgICAgICByZXR1cm4g
dHJ5V2FpdEZvcktleUhhbmRsZShrZXlJRCwgV1RGTW92ZShjbGllbnQpKTsKICAgICB9CiAKICAg
ICBSZWZQdHI8S2V5SGFuZGxlPiBoYW5kbGUgPSBrZXlIYW5kbGUoa2V5SUQpOwogICAgIHJldHVy
biBtYWtlT3B0aW9uYWwoaGFuZGxlLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCi1PcHRpb25hbDxL
ZXlIYW5kbGVWYWx1ZVZhcmlhbnQ+IENETVByb3h5OjpnZXRPcldhaXRGb3JLZXlWYWx1ZShjb25z
dCBLZXlJRFR5cGUmIGtleUlEKSBjb25zdAorT3B0aW9uYWw8S2V5SGFuZGxlVmFsdWVWYXJpYW50
PiBDRE1Qcm94eTo6Z2V0T3JXYWl0Rm9yS2V5VmFsdWUoY29uc3QgS2V5SURUeXBlJiBrZXlJRCwg
V2Vha1B0cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnQ+JiYgY2xpZW50KSBjb25zdAogewotICAg
IGlmIChhdXRvIGtleUhhbmRsZSA9IGdldE9yV2FpdEZvcktleUhhbmRsZShrZXlJRCkpCisgICAg
aWYgKGF1dG8ga2V5SGFuZGxlID0gZ2V0T3JXYWl0Rm9yS2V5SGFuZGxlKGtleUlELCBXVEZNb3Zl
KGNsaWVudCkpKQogICAgICAgICByZXR1cm4gbWFrZU9wdGlvbmFsKCgqa2V5SGFuZGxlKS0+dmFs
dWUoKSk7CiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCmluZGV4IDgzZWRkOWU5MjU0OWZh
YWVmMTI1MDVlMTUzZWNmNzJmZWI5MzFmYTguLjllYmUzMjNhZmE2MzNjMTgzODUyMThiYmFkNDgz
OGVlNTljNmNhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUHJveHkuaApAQCAtMTQ2LDYgKzE0Niw3IEBAIHByaXZhdGU6CiB9OwogCiBjbGFz
cyBDRE1JbnN0YW5jZVByb3h5OworY2xhc3MgQ0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50OwogCiAv
LyBIYW5kbGUgdG8gYSAicmVhbCIgQ0RNLCBub3QgdGhlIEphdmFTY3JpcHQgZmFjYWRlLiBUaGlz
IGNhbiBiZSB1c2VkCiAvLyBmcm9tIGJhY2tncm91bmQgdGhyZWFkcyAoaS5lLiBkZWNyeXB0b3Jz
KS4KQEAgLTE1NywxNCArMTU4LDE1IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlS2V5U3Rv
cmUoY29uc3QgS2V5U3RvcmUmIG5ld0tleVN0b3JlKTsKICAgICB2b2lkIHNldEluc3RhbmNlKENE
TUluc3RhbmNlUHJveHkqKTsKKyAgICB2b2lkIGFib3J0V2FpdGluZ0ZvcktleSgpIGNvbnN0Owog
CiBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPEtleUhhbmRsZT4ga2V5SGFuZGxlKGNvbnN0IEtleUlE
VHlwZSYpIGNvbnN0OwogICAgIGJvb2wga2V5QXZhaWxhYmxlKGNvbnN0IEtleUlEVHlwZSYpIGNv
bnN0OwogICAgIGJvb2wga2V5QXZhaWxhYmxlVW5sb2NrZWQoY29uc3QgS2V5SURUeXBlJikgY29u
c3Q7Ci0gICAgT3B0aW9uYWw8UmVmPEtleUhhbmRsZT4+IHRyeVdhaXRGb3JLZXlIYW5kbGUoY29u
c3QgS2V5SURUeXBlJikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8UmVmPEtleUhhbmRsZT4+IGdldE9y
V2FpdEZvcktleUhhbmRsZShjb25zdCBLZXlJRFR5cGUmKSBjb25zdDsKLSAgICBPcHRpb25hbDxL
ZXlIYW5kbGVWYWx1ZVZhcmlhbnQ+IGdldE9yV2FpdEZvcktleVZhbHVlKGNvbnN0IEtleUlEVHlw
ZSYpIGNvbnN0OworICAgIE9wdGlvbmFsPFJlZjxLZXlIYW5kbGU+PiB0cnlXYWl0Rm9yS2V5SGFu
ZGxlKGNvbnN0IEtleUlEVHlwZSYsIFdlYWtQdHI8Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50PiYm
KSBjb25zdDsKKyAgICBPcHRpb25hbDxSZWY8S2V5SGFuZGxlPj4gZ2V0T3JXYWl0Rm9yS2V5SGFu
ZGxlKGNvbnN0IEtleUlEVHlwZSYsIFdlYWtQdHI8Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50PiYm
KSBjb25zdDsKKyAgICBPcHRpb25hbDxLZXlIYW5kbGVWYWx1ZVZhcmlhbnQ+IGdldE9yV2FpdEZv
cktleVZhbHVlKGNvbnN0IEtleUlEVHlwZSYsIFdlYWtQdHI8Q0RNUHJveHlEZWNyeXB0aW9uQ2xp
ZW50PiYmKSBjb25zdDsKICAgICB2b2lkIHN0YXJ0ZWRXYWl0aW5nRm9yS2V5KCkgY29uc3Q7CiAg
ICAgdm9pZCBzdG9wcGVkV2FpdGluZ0ZvcktleSgpIGNvbnN0OwogICAgIGNvbnN0IENETUluc3Rh
bmNlUHJveHkqIGluc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YW5jZTsgfQpAQCAtMjUz
LDYgKzI1NSwxMiBAQCBwcml2YXRlOgogICAgIEtleVN0b3JlIG1fa2V5U3RvcmU7CiB9OwogCitj
bGFzcyBDRE1Qcm94eURlY3J5cHRpb25DbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RN
UHJveHlEZWNyeXB0aW9uQ2xpZW50LCBXZWFrUHRyRmFjdG9yeUluaXRpYWxpemF0aW9uOjpFYWdl
cj4geworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBpc0Fib3J0aW5nKCkgPSAwOworICAgIHZp
cnR1YWwgfkNETVByb3h5RGVjcnlwdGlvbkNsaWVudCgpID0gZGVmYXVsdDsKK307CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0NETVByb3h5Q2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmNwcAppbmRleCBjYWE5NzJkYzZiNzc3ZDVk
ZGRmZTRkYzVjNzk0YzMwMmEzMTQ2MTA0Li5iZTE1NDI1NWYzZDc2ODMxNWUzNTY4NzY5MDQ3NmY3
ZjhhZTNiYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5jcHAKQEAgLTEx
Myw3ICsxMTMsNyBAQCBib29sIENETVByb3h5Q2xlYXJLZXk6OmNlbmNTZXRDb3VudGVyVmVjdG9y
KGNvbnN0IGNlbmNEZWNyeXB0Q29udGV4dCYgaW5wdXQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgQ0RNUHJveHlDbGVhcktleTo6Y2VuY1NldERlY3J5cHRpb25LZXkoY29uc3QgY2VuY0Rl
Y3J5cHRDb250ZXh0JiBpbikKK2Jvb2wgQ0RNUHJveHlDbGVhcktleTo6Y2VuY1NldERlY3J5cHRp
b25LZXkoY2VuY0RlY3J5cHRDb250ZXh0JiBpbikKIHsKICAgICAvLyBGSVhNRTogVW5uZWNlc3Nh
cnkgY29weSwgY2FuIHdlIGF2b2lkIHRoaXMgd2hpbGUgc3RpbGwgZXhwb3NpbmcKICAgICAvLyBh
IG5vbi1HU3RyZWFtZXItc3BlY2lmaWMgRGVjcnlwdElucHV0IEFQST8gVGhlc2UgYnVmZmVycyBh
cmUKQEAgLTEyMSw3ICsxMjEsNyBAQCBib29sIENETVByb3h5Q2xlYXJLZXk6OmNlbmNTZXREZWNy
eXB0aW9uS2V5KGNvbnN0IGNlbmNEZWNyeXB0Q29udGV4dCYgaW4pCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGtleUlEVmVjOwogICAgIGtleUlEVmVjLmFwcGVuZChpbi5rZXlJRCwgaW4ua2V5SURTaXpl
SW5CeXRlcyk7CiAKLSAgICBhdXRvIGtleURhdGEgPSBnZXRPcldhaXRGb3JLZXlWYWx1ZShrZXlJ
RFZlYyk7CisgICAgYXV0byBrZXlEYXRhID0gZ2V0T3JXYWl0Rm9yS2V5VmFsdWUoa2V5SURWZWMs
IFdURk1vdmUoaW4uY2RtUHJveHlEZWNyeXB0aW9uQ2xpZW50KSk7CiAgICAgaWYgKCFrZXlEYXRh
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5
LmgKaW5kZXggZmY5NmJmYWMxMjlkNmRkM2FlN2M1ZGQwNzc0YmUxYWIyNTQxN2NlMC4uODk2YWJk
YmQ2NTY1NTkyMGEwODFkODUwNTkxYWJmM2ZmZGYxOGY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Q
cm94eUNsZWFyS2V5LmgKQEAgLTkxLDYgKzkxLDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCB1
aW50OF90KiBzdWJzYW1wbGVzQnVmZmVyOwogICAgICAgICBzaXplX3Qgc3Vic2FtcGxlc0J1ZmZl
clNpemVJbkJ5dGVzOwogICAgICAgICBzaXplX3QgbnVtU3Vic2FtcGxlczsKKyAgICAgICAgV2Vh
a1B0cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnQ+IGNkbVByb3h5RGVjcnlwdGlvbkNsaWVudDsK
IAogICAgICAgICBib29sIGlzU3Vic2FtcGxlZCgpIGNvbnN0IHsgcmV0dXJuIG51bVN1YnNhbXBs
ZXM7IH0KICAgICB9OwpAQCAtMTA3LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgLy8gd2Ugd2ls
bCBzdXJlbHkgaGF2ZSB0byBzdXBwb3J0IG1vcmUgcHJvdGVjdGlvbiBzY2hlbWVzLiBDYW4gd2UK
ICAgICAvLyByZXVzZSBzb21lIENyeXB0byBBUElzIGluIFdlYkNvcmU/CiAgICAgYm9vbCBjZW5j
U2V0Q291bnRlclZlY3Rvcihjb25zdCBjZW5jRGVjcnlwdENvbnRleHQmKTsKLSAgICBib29sIGNl
bmNTZXREZWNyeXB0aW9uS2V5KGNvbnN0IGNlbmNEZWNyeXB0Q29udGV4dCYpOworICAgIGJvb2wg
Y2VuY1NldERlY3J5cHRpb25LZXkoY2VuY0RlY3J5cHRDb250ZXh0Jik7CiAgICAgYm9vbCBjZW5j
RGVjcnlwdEZ1bGxTYW1wbGUoY2VuY0RlY3J5cHRDb250ZXh0Jik7CiAgICAgYm9vbCBjZW5jRGVj
cnlwdFN1YnNhbXBsZWQoY2VuY0RlY3J5cHRDb250ZXh0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlUaHVuZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
UHJveHlUaHVuZGVyLmNwcAppbmRleCAxMWY2ZDdhZTExMzY3ZDdmOTQ2YTZmNThmNzU1ZmYwMDRk
ODRlYjNjLi43ZDgzNTJmMTczMjg5NDZjNGFhODExZWY5MDkxOThkYzQ2YmIzNjZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVBy
b3h5VGh1bmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9DRE1Qcm94eVRodW5kZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIC8vIE5PVEU6IFlvdVR1YmUgMjAxOSBFTUUgY29uZm9ybWFuY2UgdGVzdHMg
ZXhwZWN0IHRoaXMgdG8gYmUgPj01cy4KIGNvbnN0IFdURjo6U2Vjb25kcyBzX2xpY2Vuc2VLZXlS
ZXNwb25zZVRpbWVvdXQgPSBXVEY6OlNlY29uZHMoNik7CiAKLUJveFB0cjxPcGVuQ0RNU2Vzc2lv
bj4gQ0RNUHJveHlUaHVuZGVyOjpnZXREZWNyeXB0aW9uU2Vzc2lvbihjb25zdCBEZWNyeXB0aW9u
Q29udGV4dCYgaW4pIGNvbnN0CitCb3hQdHI8T3BlbkNETVNlc3Npb24+IENETVByb3h5VGh1bmRl
cjo6Z2V0RGVjcnlwdGlvblNlc3Npb24oRGVjcnlwdGlvbkNvbnRleHQmIGluKSBjb25zdAogewog
ICAgIEdzdE1hcHBlZEJ1ZmZlciBtYXBwZWRLZXlJRChpbi5rZXlJREJ1ZmZlciwgR1NUX01BUF9S
RUFEKTsKICAgICBpZiAoIW1hcHBlZEtleUlEKSB7CkBAIC01NCw3ICs1NCw3IEBAIEJveFB0cjxP
cGVuQ0RNU2Vzc2lvbj4gQ0RNUHJveHlUaHVuZGVyOjpnZXREZWNyeXB0aW9uU2Vzc2lvbihjb25z
dCBEZWNyeXB0aW9uQ29uCiAKICAgICBhdXRvIGtleUlEID0gbWFwcGVkS2V5SUQuY3JlYXRlVmVj
dG9yKCk7CiAKLSAgICBhdXRvIGtleUhhbmRsZSA9IGdldE9yV2FpdEZvcktleUhhbmRsZShrZXlJ
RCk7CisgICAgYXV0byBrZXlIYW5kbGUgPSBnZXRPcldhaXRGb3JLZXlIYW5kbGUoa2V5SUQsIFdU
Rk1vdmUoaW4uY2RtUHJveHlEZWNyeXB0aW9uQ2xpZW50KSk7CiAgICAgaWYgKCFrZXlIYW5kbGUu
aGFzVmFsdWUoKSB8fCAha2V5SGFuZGxlLnZhbHVlKCktPmlzU3RhdHVzQ3VycmVudGx5VmFsaWQo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBDRE1Q
cm94eVRodW5kZXI6OmRlY3J5cHQoQ0RNUHJveHlUaHVuZGVyOjpEZWNyeXB0aW9uQ29udGV4dCYg
aW5wdXQpCiB7CiAgICAgQm94UHRyPE9wZW5DRE1TZXNzaW9uPiBzZXNzaW9uID0gZ2V0RGVjcnlw
dGlvblNlc3Npb24oaW5wdXQpOwogICAgIGlmICghc2Vzc2lvbikgewotICAgICAgICBHU1RfRVJS
T1IoInRoZXJlIGlzIG5vIHZhbGlkIHNlc3Npb24gdG8gZGVjcnlwdCBmb3IgdGhlIHByb3ZpZGVk
IGtleSBJRCIpOworICAgICAgICBHU1RfV0FSTklORygidGhlcmUgaXMgbm8gdmFsaWQgc2Vzc2lv
biB0byBkZWNyeXB0IGZvciB0aGUgcHJvdmlkZWQga2V5IElEIChvciB0aGUgb3BlcmF0aW9uIHdh
cyBhYm9ydGVkKSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5
VGh1bmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9DRE1Qcm94eVRodW5kZXIuaAppbmRleCAwZGU2MzU1NTRkNDMxNjZmYWI1ZDJiZmIyYTBlMjA2
ZmRiZGViZmMxLi5hZDU0NDM2NGE0ODNiZWJjMzA5NGQ0YWNiN2Y0ZDYyZjg2NDhjZDBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVByb3h5VGh1bmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNUHJveHlUaHVuZGVyLmgKQEAgLTUzLDEzICs1MywxNCBAQCBwdWJsaWM6
CiAgICAgICAgIEdzdEJ1ZmZlciogZGF0YUJ1ZmZlcjsKICAgICAgICAgR3N0QnVmZmVyKiBzdWJz
YW1wbGVzQnVmZmVyOwogICAgICAgICBzaXplX3QgbnVtU3Vic2FtcGxlczsKKyAgICAgICAgV2Vh
a1B0cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnQ+IGNkbVByb3h5RGVjcnlwdGlvbkNsaWVudDsK
ICAgICB9OwogCiAgICAgYm9vbCBkZWNyeXB0KERlY3J5cHRpb25Db250ZXh0Jik7CiAgICAgY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSB7IHJldHVybiBtX2tleVN5c3RlbTsgfQogCiBwcml2YXRl
OgotICAgIEJveFB0cjxPcGVuQ0RNU2Vzc2lvbj4gZ2V0RGVjcnlwdGlvblNlc3Npb24oY29uc3Qg
RGVjcnlwdGlvbkNvbnRleHQmKSBjb25zdDsKKyAgICBCb3hQdHI8T3BlbkNETVNlc3Npb24+IGdl
dERlY3J5cHRpb25TZXNzaW9uKERlY3J5cHRpb25Db250ZXh0JikgY29uc3Q7CiAgICAgU3RyaW5n
IG1fa2V5U3lzdGVtOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktp
dENsZWFyS2V5RGVjcnlwdG9yR1N0cmVhbWVyLmNwcAppbmRleCAxYWI5N2JiM2I5MzU2MzE3ODFk
OTRlNTc1MGM2YzQ1ZDc1OGJlYzUyLi5kYzliNWEzYTRmYWM1OTdjY2FlYWRlNzVmM2VkYzFjZTFk
NzM3MThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL1dlYktpdENsZWFyS2V5RGVjcnlwdG9yR1N0cmVhbWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENsZWFyS2V5
RGVjcnlwdG9yR1N0cmVhbWVyLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHN0YXRpYyBib29sIGRl
Y3J5cHQoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZiwgR3N0QnVmZmVy
KiBpdkJ1ZmZlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBDRE1Qcm94eUNs
ZWFyS2V5OjpjZW5jRGVjcnlwdENvbnRleHQgY29udGV4dDsKKyAgICBDRE1Qcm94eUNsZWFyS2V5
OjpjZW5jRGVjcnlwdENvbnRleHQgY29udGV4dCA9IHsgfTsKICAgICBjb250ZXh0LmtleUlEID0g
bWFwcGVkS2V5SWRCdWZmZXIuZGF0YSgpOwogICAgIGNvbnRleHQua2V5SURTaXplSW5CeXRlcyA9
IG1hcHBlZEtleUlkQnVmZmVyLnNpemUoKTsKICAgICBjb250ZXh0Lml2ID0gbWFwcGVkSVZCdWZm
ZXIuZGF0YSgpOwpAQCAtMTQ1LDYgKzE0NSw3IEBAIHN0YXRpYyBib29sIGRlY3J5cHQoV2ViS2l0
TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZiwgR3N0QnVmZmVyKiBpdkJ1ZmZlCiAg
ICAgICAgIGNvbnRleHQuc3Vic2FtcGxlc0J1ZmZlciA9IG1hcHBlZFN1YnNhbXBsZXNCdWZmZXIu
ZGF0YSgpOwogICAgICAgICBjb250ZXh0LnN1YnNhbXBsZXNCdWZmZXJTaXplSW5CeXRlcyA9IG1h
cHBlZFN1YnNhbXBsZXNCdWZmZXIuc2l6ZSgpOwogICAgIH0KKyAgICBjb250ZXh0LmNkbVByb3h5
RGVjcnlwdGlvbkNsaWVudCA9IHdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRHZXRD
RE1Qcm94eURlY3J5cHRpb25DbGllbnQoc2VsZik7CiAKICAgICByZXR1cm4gcHJpdi0+Y2RtUHJv
eHktPmNlbmNEZWNyeXB0KGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVj
cnlwdG9yR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAK
aW5kZXggNWNkOTIxMzE1OWE1N2M0YWFmNzFmMzM5MDVkYWE4M2M2YWExODllZC4uMjJkOGEwNWRh
MmJiMjk4OWI5YjhkYWY2ZmJhMGQxYTA5YzBkMzIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9u
RGVjcnlwdG9yR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFt
ZXIuY3BwCkBAIC0zNiwxMiArMzYsMzEgQEAKIAogdXNpbmcgV2ViQ29yZTo6Q0RNUHJveHk7CiAK
Ky8vIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGFyZSB0aWVkIHRvIHRoZSBkZWNyeXB0b3IgbGlm
ZWN5Y2xlLiBUaGV5IGNhbid0IGJlIGFsaXZlIGFmdGVyIHRoZSBkZWNyeXB0b3IgaGFzIGJlZW4g
ZGVzdHJveWVkLgorY2xhc3MgQ0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50SW1wbGVtZW50YXRpb24g
OiBwdWJsaWMgV2ViQ29yZTo6Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBDRE1Qcm94eURlY3J5cHRpb25DbGllbnRJ
bXBsZW1lbnRhdGlvbihXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiBkZWNyeXB0
b3IpCisgICAgICAgIDogbV9kZWNyeXB0b3IoZGVjcnlwdG9yKSB7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNBYm9ydGluZygpCisgICAgeworICAgICAgICByZXR1cm4gd2ViS2l0TWVkaWFDb21tb25F
bmNyeXB0aW9uRGVjcnlwdElzRmx1c2hpbmcobV9kZWNyeXB0b3IpOworICAgIH0KKyAgICB2aXJ0
dWFsIH5DRE1Qcm94eURlY3J5cHRpb25DbGllbnRJbXBsZW1lbnRhdGlvbigpID0gZGVmYXVsdDsK
K3ByaXZhdGU6CisgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogbV9kZWNy
eXB0b3I7Cit9OworCiAjZGVmaW5lIFdFQktJVF9NRURJQV9DRU5DX0RFQ1JZUFRfR0VUX1BSSVZB
VEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9N
RURJQV9DRU5DX0RFQ1JZUFQsIFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRQcml2
YXRlKSkKIHN0cnVjdCBfV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFByaXZhdGUg
ewogICAgIFJlZlB0cjxDRE1Qcm94eT4gY2RtUHJveHk7CiAKLSAgICBMb2NrIGNkbUF0dGFjaG1l
bnRNdXRleDsKLSAgICBDb25kaXRpb24gY2RtQXR0YWNobWVudENvbmRpdGlvbjsKKyAgICAvLyBQ
cm90ZWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHN0cnVjdHVyZSBtZW1iZXJzLgorICAgIExvY2sgbXV0
ZXg7CisgICAgQ29uZGl0aW9uIGNvbmRpdGlvbjsKKworICAgIGJvb2wgaXNGbHVzaGluZyB7IGZh
bHNlIH07CisgICAgc3RkOjp1bmlxdWVfcHRyPENETVByb3h5RGVjcnlwdGlvbkNsaWVudEltcGxl
bWVudGF0aW9uPiBjZG1Qcm94eURlY3J5cHRpb25DbGllbnRJbXBsZW1lbnRhdGlvbjsKIH07CiAK
IHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBNYXhTZWNvbmRzVG9XYWl0Rm9yQ0RNUHJveHkgPSA1
X3M7CkBAIC04NSw2ICsxMDQsMTAgQEAgc3RhdGljIHZvaWQgY29uc3RydWN0ZWQoR09iamVjdCog
b2JqZWN0KQogICAgIGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRfaW5fcGxhY2UoYmFzZSwgVFJVRSk7
CiAgICAgZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldF9wYXNzdGhyb3VnaChiYXNlLCBGQUxTRSk7CiAg
ICAgZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldF9nYXBfYXdhcmUoYmFzZSwgRkFMU0UpOworCisgICAg
V2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZiA9IFdFQktJVF9NRURJQV9D
RU5DX0RFQ1JZUFQoYmFzZSk7CisgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlw
dFByaXZhdGUqIHByaXYgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9QUklWQVRFKHNl
bGYpOworICAgIHByaXYtPmNkbVByb3h5RGVjcnlwdGlvbkNsaWVudEltcGxlbWVudGF0aW9uID0g
V1RGOjptYWtlVW5pcXVlPENETVByb3h5RGVjcnlwdGlvbkNsaWVudEltcGxlbWVudGF0aW9uPihz
ZWxmKTsKIH0KIAogc3RhdGljIEdzdENhcHMqIHRyYW5zZm9ybUNhcHMoR3N0QmFzZVRyYW5zZm9y
bSogYmFzZSwgR3N0UGFkRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3N0Q2FwcyogY2FwcywgR3N0Q2Fw
cyogZmlsdGVyKQpAQCAtMTY4LDIwICsxOTEsMzEgQEAgc3RhdGljIEdzdEZsb3dSZXR1cm4gdHJh
bnNmb3JtSW5QbGFjZShHc3RCYXNlVHJhbnNmb3JtKiBiYXNlLCBHc3RCdWZmZXIqIGJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwogICAgIH0KIAotICAgIExvY2tIb2xkZXIgbG9j
a2VyKHByaXYtPmNkbUF0dGFjaG1lbnRNdXRleCk7CisgICAgTG9ja0hvbGRlciBsb2NrZXIocHJp
di0+bXV0ZXgpOworCisgICAgaWYgKHByaXYtPmlzRmx1c2hpbmcpIHsKKyAgICAgICAgR1NUX0RF
QlVHX09CSkVDVChzZWxmLCAiRGVjcnlwdGlvbiBhYm9ydGVkIGJlY2F1c2Ugb2YgZmx1c2giKTsK
KyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0ZMVVNISU5HOworICAgIH0KIAogICAgIC8vIFRoZSBD
RE0gaW5zdGFuY2UgbmVlZHMgdG8gYmUgbmVnb3RpYXRlZCBiZWZvcmUgd2UgY2FuIGJlZ2luIGRl
Y3J5cHRpb24uCiAgICAgaWYgKCFwcml2LT5jZG1Qcm94eSkgewogICAgICAgICBHU1RfREVCVUdf
T0JKRUNUKHNlbGYsICJDRE0gbm90IGF2YWlsYWJsZSwgZ29pbmcgdG8gd2FpdCBmb3IgaXQiKTsK
LSAgICAgICAgcHJpdi0+Y2RtQXR0YWNobWVudENvbmRpdGlvbi53YWl0Rm9yKHByaXYtPmNkbUF0
dGFjaG1lbnRNdXRleCwgTWF4U2Vjb25kc1RvV2FpdEZvckNETVByb3h5LCBbcHJpdl0gewotICAg
ICAgICAgICAgcmV0dXJuIHByaXYtPmNkbVByb3h5OworICAgICAgICBwcml2LT5jb25kaXRpb24u
d2FpdEZvcihwcml2LT5tdXRleCwgTWF4U2Vjb25kc1RvV2FpdEZvckNETVByb3h5LCBbcHJpdl0g
eworICAgICAgICAgICAgcmV0dXJuIHByaXYtPmlzRmx1c2hpbmcgfHwgcHJpdi0+Y2RtUHJveHk7
CiAgICAgICAgIH0pOworICAgICAgICAvLyBOb3RlIHRoYXQgd2FpdEZvcigpIHJlbGVhc2VzIHRo
ZSBtdXRleCBsb2NrIGludGVybmFsbHkgd2hpbGUgaXQgd2FpdHMsIHNvIGlzRmx1c2hpbmcgbWF5
IGhhdmUgYmVlbiBjaGFuZ2VkLgorICAgICAgICBpZiAocHJpdi0+aXNGbHVzaGluZykgeworICAg
ICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzZWxmLCAiRGVjcnlwdGlvbiBhYm9ydGVkIGJlY2F1
c2Ugb2YgZmx1c2giKTsKKyAgICAgICAgICAgIHJldHVybiBHU1RfRkxPV19GTFVTSElORzsKKyAg
ICAgICAgfQogICAgICAgICBpZiAoIXByaXYtPmNkbVByb3h5KSB7CiAgICAgICAgICAgICBHU1Rf
RVJST1JfT0JKRUNUKHNlbGYsICJDRE1Qcm94eSB3YXMgbm90IHJldHJpZXZlZCBpbiB0aW1lIik7
CiAgICAgICAgICAgICByZXR1cm4gR1NUX0ZMT1dfTk9UX1NVUFBPUlRFRDsKICAgICAgICAgfQog
ICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJDRE0gbm93IGF2YWlsYWJsZSB3aXRoIGFk
ZHJlc3MgJXAiLCBwcml2LT5jZG1Qcm94eS5nZXQoKSk7CiAgICAgfQorCiAgICAgYXV0byByZW1v
dmVQcm90ZWN0aW9uTWV0YU9uUmV0dXJuID0gbWFrZVNjb3BlRXhpdChbYnVmZmVyLCBwcm90ZWN0
aW9uTWV0YV0gewogICAgICAgICBnc3RfYnVmZmVyX3JlbW92ZV9tZXRhKGJ1ZmZlciwgcmVpbnRl
cnByZXRfY2FzdDxHc3RNZXRhKj4ocHJvdGVjdGlvbk1ldGEpKTsKICAgICB9KTsKQEAgLTI0NSw3
ICsyNzksMjEgQEAgc3RhdGljIEdzdEZsb3dSZXR1cm4gdHJhbnNmb3JtSW5QbGFjZShHc3RCYXNl
VHJhbnNmb3JtKiBiYXNlLCBHc3RCdWZmZXIqIGJ1ZmZlcikKICAgICBXZWJLaXRNZWRpYUNvbW1v
bkVuY3J5cHRpb25EZWNyeXB0Q2xhc3MqIGtsYXNzID0gV0VCS0lUX01FRElBX0NFTkNfREVDUllQ
VF9HRVRfQ0xBU1Moc2VsZik7CiAKICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNlbGYsICJkZWNyeXB0
aW5nIik7Ci0gICAgaWYgKCFrbGFzcy0+ZGVjcnlwdChzZWxmLCBpdkJ1ZmZlciwga2V5SURCdWZm
ZXIsIGJ1ZmZlciwgc3ViU2FtcGxlQ291bnQsIHN1YlNhbXBsZXNCdWZmZXIpKSB7CisKKyAgICAv
LyBUZW1wb3JhcmlseSByZWxlYXNlIHRoZSBsb2NrIHdoaWxlIHdlIGRvbid0IG5lZWQgdG8gYWNj
ZXNzIHByaXYuIFRoZSBsb3dlciBsZXZlbCBBUEkgaXMgdXNlZAorICAgIC8vIGluIG9yZGVyIHRv
IGF2b2lkIGNyZWF0aW5nIHNldmVyYWwgc2NvcGVzIHdpdGggZGlmZmVyZW50IExvY2tIb2xkZXIg
aW5zdGFuY2VzIGluIGVhY2ggb25lLgorICAgIHByaXYtPm11dGV4LnVubG9jaygpOworCisgICAg
Ym9vbCBkaWREZWNyeXB0aW9uU3VjY2VlZCA9IGtsYXNzLT5kZWNyeXB0KHNlbGYsIGl2QnVmZmVy
LCBrZXlJREJ1ZmZlciwgYnVmZmVyLCBzdWJTYW1wbGVDb3VudCwgc3ViU2FtcGxlc0J1ZmZlcik7
CisKKyAgICAvLyBBY2Nlc3NpbmcgcHJpdiBtZW1iZXJzIGFnYWluLgorICAgIHByaXYtPm11dGV4
LmxvY2soKTsKKworICAgIGlmICghZGlkRGVjcnlwdGlvblN1Y2NlZWQpIHsKKyAgICAgICAgaWYg
KHByaXYtPmlzRmx1c2hpbmcpIHsKKyAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc2VsZiwg
IkRlY3J5cHRpb24gYWJvcnRlZCBiZWNhdXNlIG9mIGZsdXNoIik7CisgICAgICAgICAgICByZXR1
cm4gR1NUX0ZMT1dfRkxVU0hJTkc7CisgICAgICAgIH0KICAgICAgICAgR1NUX0VSUk9SX09CSkVD
VChzZWxmLCAiRGVjcnlwdGlvbiBmYWlsZWQiKTsKICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX05P
VF9TVVBQT1JURUQ7CiAgICAgfQpAQCAtMjU2LDcgKzMwNCw3IEBAIHN0YXRpYyBHc3RGbG93UmV0
dXJuIHRyYW5zZm9ybUluUGxhY2UoR3N0QmFzZVRyYW5zZm9ybSogYmFzZSwgR3N0QnVmZmVyKiBi
dWZmZXIpCiBzdGF0aWMgYm9vbCBpc0NETVByb3h5QXZhaWxhYmxlKFdlYktpdE1lZGlhQ29tbW9u
RW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYpCiB7CiAgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0
aW9uRGVjcnlwdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9Q
UklWQVRFKHNlbGYpOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socHJpdi0+Y2RtQXR0YWNo
bWVudE11dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHByaXYtPm11dGV4KTsKICAg
ICByZXR1cm4gcHJpdi0+Y2RtUHJveHk7CiB9CiAKQEAgLTI4OSwxMSArMzM3LDExIEBAIHN0YXRp
YyB2b2lkIGF0dGFjaENETVByb3h5KFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQq
IHNlbGYsIENETVByb3h5KiBwCiAgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlw
dFByaXZhdGUqIHByaXYgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9QUklWQVRFKHNl
bGYpOwogICAgIFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRDbGFzcyoga2xhc3Mg
PSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9DTEFTUyhzZWxmKTsKIAotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2socHJpdi0+Y2RtQXR0YWNobWVudE11dGV4KTsKKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKHByaXYtPm11dGV4KTsKICAgICBHU1RfRVJST1JfT0JKRUNUKHNlbGYs
ICJBdHRhY2hpbmcgQ0RNUHJveHkgJXAiLCBwcm94eSk7CiAgICAgcHJpdi0+Y2RtUHJveHkgPSBw
cm94eTsKICAgICBrbGFzcy0+Y2RtUHJveHlBdHRhY2hlZChzZWxmLCBwcml2LT5jZG1Qcm94eSk7
Ci0gICAgcHJpdi0+Y2RtQXR0YWNobWVudENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICBwcml2
LT5jb25kaXRpb24ubm90aWZ5T25lKCk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiBpbnN0YWxsQ0RN
UHJveHlJZk5vdEF2YWlsYWJsZShXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiBz
ZWxmKQpAQCAtMzE4LDcgKzM2Niw3IEBAIHN0YXRpYyBnYm9vbGVhbiBpbnN0YWxsQ0RNUHJveHlJ
Zk5vdEF2YWlsYWJsZShXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0CiBzdGF0aWMg
Z2Jvb2xlYW4gc2lua0V2ZW50SGFuZGxlcihHc3RCYXNlVHJhbnNmb3JtKiB0cmFucywgR3N0RXZl
bnQqIGV2ZW50KQogewogICAgIFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqIHNl
bGYgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUKHRyYW5zKTsKLSAgICBnYm9vbGVhbiByZXN1
bHQgPSBGQUxTRTsKKyAgICBXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0UHJpdmF0
ZSogcHJpdiA9IFdFQktJVF9NRURJQV9DRU5DX0RFQ1JZUFRfR0VUX1BSSVZBVEUoc2VsZik7CiAK
ICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MTM1NQogICAgIC8vIFdlIHNob3VsZCBiZSBoYW5kbGluZyBwcm90ZWN0aW9uIGV2ZW50cyBpbiB0
aGlzIGNsYXNzIGluCkBAIC0zMzAsMTYgKzM3OCw1MCBAQCBzdGF0aWMgZ2Jvb2xlYW4gc2lua0V2
ZW50SGFuZGxlcihHc3RCYXNlVHJhbnNmb3JtKiB0cmFucywgR3N0RXZlbnQqIGV2ZW50KQogICAg
IGNhc2UgR1NUX0VWRU5UX0NVU1RPTV9ET1dOU1RSRUFNX09PQjogewogICAgICAgICBBU1NFUlQo
Z3N0X2V2ZW50X2hhc19uYW1lKGV2ZW50LCAiYXR0ZW1wdC10by1kZWNyeXB0IikpOwogICAgICAg
ICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJIYW5kbGluZyBhdHRlbXB0LXRvLWRlY3J5cHQiKTsK
LSAgICAgICAgcmVzdWx0ID0gaW5zdGFsbENETVByb3h5SWZOb3RBdmFpbGFibGUoc2VsZik7Cisg
ICAgICAgIGdib29sZWFuIHJlc3VsdCA9IGluc3RhbGxDRE1Qcm94eUlmTm90QXZhaWxhYmxlKHNl
bGYpOwogICAgICAgICBnc3RfZXZlbnRfdW5yZWYoZXZlbnQpOwotICAgICAgICBicmVhazsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisgICAgY2FzZSBHU1RfRVZFTlRfRkxVU0hfU1RB
UlQ6CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc2VsZiwgIkZsdXNoLXN0YXJ0Iik7CisgICAg
ICAgIHsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHByaXYtPm11dGV4KTsKKyAgICAg
ICAgICAgIGJvb2wgaXNDZG1Qcm94eUF0dGFjaGVkID0gcHJpdi0+Y2RtUHJveHk7CisgICAgICAg
ICAgICBwcml2LT5pc0ZsdXNoaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghaXNDZG1Qcm94
eUF0dGFjaGVkKSB7CisgICAgICAgICAgICAgICAgcHJpdi0+Y29uZGl0aW9uLm5vdGlmeU9uZSgp
OworICAgICAgICAgICAgICAgIGxvY2tlci51bmxvY2tFYXJseSgpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKKyAgICAgICAgICAg
ICAgICBwcml2LT5jZG1Qcm94eS0+YWJvcnRXYWl0aW5nRm9yS2V5KCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfRVZFTlRfRkxVU0hfU1RP
UDoKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzZWxmLCAiRmx1c2gtc3RvcCIpOworICAgICAg
ICB7CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihwcml2LT5tdXRleCk7CisgICAgICAg
ICAgICBwcml2LT5pc0ZsdXNoaW5nID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7
CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmVzdWx0ID0gR1NUX0JBU0VfVFJBTlNGT1JNX0NMQVNT
KHBhcmVudF9jbGFzcyktPnNpbmtfZXZlbnQodHJhbnMsIGV2ZW50KTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gR1NUX0JBU0VfVFJBTlNG
T1JNX0NMQVNTKHBhcmVudF9jbGFzcyktPnNpbmtfZXZlbnQodHJhbnMsIGV2ZW50KTsKK30KKwor
Ym9vbCB3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0SXNGbHVzaGluZyhXZWJLaXRN
ZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiBzZWxmKQoreworICAgIFdlYktpdE1lZGlhQ29t
bW9uRW5jcnlwdGlvbkRlY3J5cHRQcml2YXRlKiBwcml2ID0gV0VCS0lUX01FRElBX0NFTkNfREVD
UllQVF9HRVRfUFJJVkFURShzZWxmKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihwcml2LT5tdXRl
eCk7CisgICAgcmV0dXJuIHByaXYtPmlzRmx1c2hpbmc7Cit9CisKK1dlYWtQdHI8V2ViQ29yZTo6
Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50PiB3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNy
eXB0R2V0Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50KFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlv
bkRlY3J5cHQqIHNlbGYpCit7CisgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlw
dFByaXZhdGUqIHByaXYgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9QUklWQVRFKHNl
bGYpOworICAgIHJldHVybiBtYWtlV2Vha1B0cigqcHJpdi0+Y2RtUHJveHlEZWNyeXB0aW9uQ2xp
ZW50SW1wbGVtZW50YXRpb24pOwogfQogCiBzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gY2hh
bmdlU3RhdGUoR3N0RWxlbWVudCogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikK
QEAgLTM1MCw3ICs0MzIsNyBAQCBzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gY2hhbmdlU3Rh
dGUoR3N0RWxlbWVudCogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbgogICAgIHN3aXRjaCAo
dHJhbnNpdGlvbikgewogICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUkVBRFk6
CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc2VsZiwgIlBBVVNFRC0+UkVBRFkiKTsKLSAgICAg
ICAgcHJpdi0+Y2RtQXR0YWNobWVudENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICAgICAgcHJp
di0+Y29uZGl0aW9uLm5vdGlmeU9uZSgpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBicmVhazsKQEAgLTM3MSw3ICs0NTMsNyBAQCBzdGF0aWMgdm9pZCBzZXRDb250ZXh0
KEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdENvbnRleHQqIGNvbnRleHQpCiAKICAgICBpZiAoZ3N0
X2NvbnRleHRfaGFzX2NvbnRleHRfdHlwZShjb250ZXh0LCAiZHJtLWNkbS1wcm94eSIpKSB7CiAg
ICAgICAgIGNvbnN0IEdWYWx1ZSogdmFsdWUgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZShnc3Rf
Y29udGV4dF9nZXRfc3RydWN0dXJlKGNvbnRleHQpLCAiY2RtLXByb3h5Iik7Ci0gICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKHByaXYtPmNkbUF0dGFjaG1lbnRNdXRleCk7CisgICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKHByaXYtPm11dGV4KTsKICAgICAgICAgcHJpdi0+Y2RtUHJveHkgPSB2YWx1
ZSA/IHJlaW50ZXJwcmV0X2Nhc3Q8Q0RNUHJveHkqPihnX3ZhbHVlX2dldF9wb2ludGVyKHZhbHVl
KSkgOiBudWxscHRyOwogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJyZWNlaXZlZCBu
ZXcgQ0RNSW5zdGFuY2UgJXAiLCBwcml2LT5jZG1Qcm94eS5nZXQoKSk7CiAgICAgICAgIGtsYXNz
LT5jZG1Qcm94eUF0dGFjaGVkKHNlbGYsIHByaXYtPmNkbVByb3h5KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9u
RW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0
cmVhbWVyLmgKaW5kZXggYTA0NjVmZjUzZDAwMDA3YzIzZjdhOTA1OGFjOWIzNDdmNmI4ZDVkZC4u
OTU1NDYwOWY3NDRhYWQ3NzUxNWEwZmVlMjYzMjk5OWQ0MjFmMzEwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25F
bmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9y
R1N0cmVhbWVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxnc3QvYmFzZS9nc3RiYXNl
dHJhbnNmb3JtLmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBHX0JFR0lOX0RFQ0xTCiAKQEAgLTQ1LDYg
KzQ2LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5
cHRQcml2YXRlIFdlYktpdE1lZGlhQ29tbW9uRW5jcnkKIAogR1R5cGUgd2Via2l0X21lZGlhX2Nv
bW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZ2V0X3R5cGUodm9pZCk7CiAKK2Jvb2wgd2ViS2l0TWVk
aWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdElzRmx1c2hpbmcoV2ViS2l0TWVkaWFDb21tb25FbmNy
eXB0aW9uRGVjcnlwdCopOworV2Vha1B0cjxXZWJDb3JlOjpDRE1Qcm94eURlY3J5cHRpb25DbGll
bnQ+IHdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRHZXRDRE1Qcm94eURlY3J5cHRp
b25DbGllbnQoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCopOworCiBzdHJ1Y3Qg
X1dlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQgewogICAgIEdzdEJhc2VUcmFuc2Zv
cm0gcGFyZW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL1dlYktpdFRodW5kZXJEZWNyeXB0b3JHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRUaHVuZGVy
RGVjcnlwdG9yR1N0cmVhbWVyLmNwcAppbmRleCBhMjI2NzBkOTEwNWQwZjQ2NWY5M2E2YThmNmFj
NjVkY2UwMjRkNWRiLi41ODNiZDNiYmM4MGQ3MmEzNmMxNTU0OTI1YmNjOTBiODQwNzhmOTJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L1dlYktpdFRodW5kZXJEZWNyeXB0b3JHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0VGh1bmRlckRlY3J5cHRvckdT
dHJlYW1lci5jcHAKQEAgLTE1NiwxNCArMTU2LDE2IEBAIHN0YXRpYyBib29sIGRlY3J5cHQoV2Vi
S2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogZGVjcnlwdG9yLCBHc3RCdWZmZXIqIGl2
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBDRE1Qcm94eVRodW5kZXI6OkRl
Y3J5cHRpb25Db250ZXh0IGNvbnRleHQ7CisgICAgQ0RNUHJveHlUaHVuZGVyOjpEZWNyeXB0aW9u
Q29udGV4dCBjb250ZXh0ID0geyB9OwogICAgIGNvbnRleHQua2V5SURCdWZmZXIgPSBrZXlJREJ1
ZmZlcjsKICAgICBjb250ZXh0Lml2QnVmZmVyID0gaXZCdWZmZXI7CiAgICAgY29udGV4dC5kYXRh
QnVmZmVyID0gYnVmZmVyOwogICAgIGNvbnRleHQubnVtU3Vic2FtcGxlcyA9IHN1YnNhbXBsZUNv
dW50OwogICAgIGNvbnRleHQuc3Vic2FtcGxlc0J1ZmZlciA9IHN1YnNhbXBsZUNvdW50ID8gc3Vi
c2FtcGxlc0J1ZmZlciA6IG51bGxwdHI7CisgICAgY29udGV4dC5jZG1Qcm94eURlY3J5cHRpb25D
bGllbnQgPSB3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0R2V0Q0RNUHJveHlEZWNy
eXB0aW9uQ2xpZW50KHNlbGYpOworICAgIGJvb2wgcmVzdWx0ID0gcHJpdi0+Y2RtUHJveHktPmRl
Y3J5cHQoY29udGV4dCk7CiAKLSAgICByZXR1cm4gcHJpdi0+Y2RtUHJveHktPmRlY3J5cHQoY29u
dGV4dCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpICYmIEVOQUJMRShUSFVOREVSKSAmJiBVU0UoR1NUUkVBTUVSKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425370</attachid>
            <date>2021-04-07 02:23:52 -0700</date>
            <delta_ts>2021-04-07 02:53:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223742-20210407112351.patch</filename>
            <type>text/plain</type>
            <size>29297</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0ODc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdlMzAwYTVkZmJiOGYw
OWFkNjc3OTlkMzMyMGZkYmVhZTI5YmM0Yi4uMDVmM2JiOWY3MzNhMTJkMGUxZmRmMzVlMmNhYjRi
Mzc5Mzk1ZjQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDIxLTAzLTI1ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0VN
RV1bR1N0cmVhbWVyXSBBYm9ydCBkZWNyeXB0b3Igb3BlcmF0aW9ucyBpbW1lZGlhdGVseSBhbmQg
d2l0aG91dCBlcnJvcnMgb24gZmx1c2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMzc0MgorCisgICAgICAgIFJldmlld2VkIGJ5IFhhYmllciBSb2Ry
aWd1ZXotQ2FsdmFyLgorCisgICAgICAgIEEgZGVjcnlwdG9yIHRyYW5zZm9ybUluUGxhY2UoKSBv
cGVyYXRpb24gY2FuIGNhdXNlIHBvdGVudGlhbGx5IGxvbmcgd2FpdHMgaW4KKyAgICAgICAgdHdv
IHNpdHVhdGlvbnM6CisKKyAgICAgICAgLSB0cmFuc2Zvcm1JblBsYWNlKCkgaXMgd2FpdGluZyB0
byBnZXQgdGhlIGNkbVByb3h5LgorICAgICAgICAtIFRoZSBDRE1Qcm94eTo6ZGVjcnlwdCgpIG1l
dGhvZCBpcyBpbnRlcm5hbGx5IHdhaXRpbmcgZm9yIGEgc3BlY2lmaWMga2V5IHRvCisgICAgICAg
ICAgYmVjb21lIGF2YWlsYWJsZS4KKworICAgICAgICBJZiBhIHNlZWsgb3BlcmF0aW9uIGlzIHBl
cmZvcm1lZCBkdXJpbmcgdGhvc2UgbG9uZyB3YWl0cywgdGhlIG1haW4gdGhyZWFkIHdpbGwKKyAg
ICAgICAgYmUgYmxvY2tlZCB1bnRpbCB0aGUgc2VlayBmaW5pc2hlcyB0aGUgY29uZGl0aW9ucyB0
aG9zZSBsb25nIHdhaXRzIGFyZSB3YWl0aW5nCisgICAgICAgIGZvciB3aWxsIG5ldmVyIGJlIGZ1
bGZpbGxlZCAoYmVjYXVzZSB0aGUgb3BlcmF0aW9ucyB0aGF0IGNvbXBsZXRlIHRoZW0gaGFwcGVu
CisgICAgICAgIGluIHRoZSBtYWluIHRocmVhZCwgd2hpY2ggaXMgYmxvY2tlZCksIHRoZSBpbnRl
cm5hbCB3YWl0IHRpbWVvdXRzIHdpbGwgdHJpZ2dlcgorICAgICAgICBhbmQgdGhlIGRlY29kZXIg
d2lsbCB0cmlnZ2VyIGFuIHVucmVjb3ZlcmFibGUgZXJyb3IuCisKKyAgICAgICAgVGhlIHNvbHV0
aW9uIGZvciB0aGlzIGlzIHRvIGJyZWFrIHRoZSB3YWl0cyBieSBpc3N1aW5nIHRoZSByaWdodCBu
b3RpZmljYXRpb25zLAorICAgICAgICBhbmQgdG8gZGV0ZWN0IHRoZSBmbHVzaGVzIHBlcmZvcm1l
ZCBieSB0aGUgc2VlaywgZGlzdGluZ3Vpc2luZyB0aGlzIHNwZWNpYWwKKyAgICAgICAgImFib3J0
IiBjYXNlIGZyb20gYSByZWd1bGFyIGVycm9yLCBzbyB0aGF0IHRoZSBzaXR1YXRpb24gaXMgbm8g
bG9uZ2VyCisgICAgICAgIHVucmVjb3ZlcmFibGUuCisKKyAgICAgICAgVGhpcyBzb2x1dGlvbiBp
bnZvbHZlcyBjaGFuZ2VzIGluIHNldmVyYWwgbGF5ZXJzLiBBIHB1YmxpYworICAgICAgICBDRE1Q
cm94eTo6YWJvcnRXYWl0aW5nRm9yS2V5KCkgbWV0aG9kIGlzIGV4cG9zZWQgdG8gYWxsb3cgdGhl
IGRlY3J5cHRvciB0bworICAgICAgICBhd2FrZSB0aGUgaW5uZXIgd2FpdEZvcigpIHRoYXQgY2hl
Y2tzIGZvciB0aGUga2V5LiBUaGUgY2RtUHJveHkgd2FpdCBpcyBhbHNvCisgICAgICAgIGF3YWtl
biBpbiBjYXNlIHRoZXJlJ3Mgbm8gY2RtUHJveHkgYXZhaWxhYmxlIHlldC4KKworICAgICAgICBJ
biBvcmRlciB0byBkaXN0aW5ndWlzaCBpZiB0aGUgYXdha2VuaW5ncyBhcmUgY2F1c2VkIGJ5IHJl
YWwgZXJyb3JzIChubworICAgICAgICBjZG1Qcm94eSwgbm8ga2V5IGF2YWlsYWJsZSkgb3IgYnkg
YSBmbHVzaCBvcGVyYXRpb24gKGNhdXNlZCBieSB0aGUgc2VlayksIHRoZQorICAgICAgICBkZWNy
eXB0b3IgZmlyc3QgbmVlZHMgdG8ga2VlcCB0cmFjayBvZiB0aGUgImZsdXNoaW5nIiBzdGF0ZSBh
bmQgYWxsb3cgb3RoZXIKKyAgICAgICAgb2JqZWN0cyB0byBrbm93IGFib3V0IGl0LiBDRE1Qcm94
eSBpcyBvbmUgb2YgdGhvc2Ugb2JqZWN0cywgYnV0IGR1ZSB0byBsYXllcgorICAgICAgICBsaW1p
dGF0aW9ucyBpdCBjYW4ndCBkaXJlY3RseSBhc2sgYWJvdXQgaXQgdG8gdGhlIGRlY3J5cHRvciAo
aXQgY2FuJ3QgInNlZSIKKyAgICAgICAgaXQpLgorCisgICAgICAgIEEgbmV3IENETVByb3h5RGVj
cnlwdGlvbkNsaWVudCBpbnRlcmZhY2UgaXMgY3JlYXRlZCwgYW5kIHRoZSBkZWNyeXB0b3Igd2ls
bAorICAgICAgICBob2xkIGFuIGltcGxlbWVudGF0aW9uIG9mIGl0IChhcyBDRE1Qcm94eURlY3J5
cHRvckNsaWVudEltcGxlbWVudGF0aW9uKS4KKyAgICAgICAgQ0RNUHJveHkgY2FuIHRoZW4ga25v
dyB0aGUgY2xpZW50IGlzQWJvcnRpbmcoKSwgYW5kIHRoZSBjbGllbnQgd2lsbCBrbm93IHRoZQor
ICAgICAgICBkZWNyeXB0b3IgYW5kIHdpbGwgYXNrIGFib3V0IGl0LgorCisgICAgICAgIEFzIHRo
ZSBwaXBlbGluZSwgYW5kIHRodXMgdGhlIGRlY3J5cHRvciwgY2FuIGJlIGRlc3Ryb3llZCBhdCBh
bnkgbW9tZW50LAorICAgICAgICB0aGUgY2xpZW50IGhvbGRzIGEgV2Vha1B0ciB0byB0aGUgZGVj
cnlwdG9yIGFuZCB3aWxsIG9ubHkgYXNrIGlmIGlzQWJvcnRpbmcoKQorICAgICAgICBpZiB0aGUg
cG9pbnRlciBpcyBzdGlsbCBhbGl2ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByb3h5OjphYm9ydFdhaXRp
bmdGb3JLZXkgY29uc3QpOiBOb3RpZnkgd2FpdGluZyB0aHJlYWRzLgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNUHJveHk6OnRyeVdhaXRGb3JLZXlIYW5kbGUgY29uc3QpOiBUYWtlIGEgY2xpZW50IGFu
ZCBhc2sgaXQgaWYgaXQncyBhYm9ydGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkNETVByb3h5Ojpn
ZXRPcldhaXRGb3JLZXlIYW5kbGUgY29uc3QpOiBQYXNzIHRoZSBjbGllbnQgYWxvbmcuCisgICAg
ICAgIChXZWJDb3JlOjpDRE1Qcm94eTo6Z2V0T3JXYWl0Rm9yS2V5VmFsdWUgY29uc3QpOiBEaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oOiBEZWNsYXJh
dGlvbiBhbmQgdXNhZ2Ugb2YgdGhlIENETVByb3h5RGVjcnlwdGlvbkNsaWVudCBpbnRlcmZhY2Uu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFy
S2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByb3h5Q2xlYXJLZXk6OmNlbmNTZXREZWNy
eXB0aW9uS2V5KTogUGFzcyB0aGUgY2xpZW50IGFsb25nIGZyb20gdGhlIGNvbnRleHQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5Lmg6
IFN0b3JlIGNsaWVudCBpbiB0aGUgY2VuY0RlY3J5cHRDb250ZXh0LgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlUaHVuZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNETVByb3h5VGh1bmRlcjo6Z2V0RGVjcnlwdGlvblNlc3Npb24gY29uc3QpOiBQ
YXNzIHRoZSBjbGllbnQgYWxvbmcgZnJvbSB0aGUgY29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6
OkNETVByb3h5VGh1bmRlcjo6ZGVjcnlwdCk6IEFib3J0IG9wZXJhdGlvbnMgYXJlbid0IGFuIGVy
cm9yLCBzbyBqdXN0IHRyaWdnZXIgYSB3YXJuaW5nIGlmIHRoZXJlJ3Mgbm8gc2Vzc2lvbi4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5VGh1bmRlci5o
OiBTdG9yZSBjbGllbnQgaW4gRGVjcnlwdGlvbkNvbnRleHQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5j
cHA6CisgICAgICAgIChkZWNyeXB0KTogQXNrIGZvciBjbGllbnQgdG8gdGhlIHN1cGVyY2xhc3Mg
YW5kIHN0b3JlIGl0IGluIHRoZSBjb250ZXh0LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5j
cHA6CisgICAgICAgIChDRE1Qcm94eURlY3J5cHRpb25DbGllbnRJbXBsZW1lbnRhdGlvbjo6Q0RN
UHJveHlEZWNyeXB0aW9uQ2xpZW50SW1wbGVtZW50YXRpb24pOiBJbXBsZW1lbnRhdGlvbiBvZiB0
aGUgQ0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50IGludGVyZmFjZS4KKyAgICAgICAgKENETVByb3h5
RGVjcnlwdGlvbkNsaWVudEltcGxlbWVudGF0aW9uOjppc0Fib3J0aW5nKTogQXNrIGlmIHRoZSBk
ZWNyeXB0b3IgaXMgZmx1c2hpbmcuCisgICAgICAgIChjb25zdHJ1Y3RlZCk6IEluaXRpYWxpemUg
dGhlIGNsaWVudC4KKyAgICAgICAgKHRyYW5zZm9ybUluUGxhY2UpOiBDaGVjayB0aGUgZmx1c2gg
c3RhdHVzIGFmdGVyIHdhaXRpbmcgZm9yIHRoZSBDRE1Qcm94eSBhbmQgZm9yIHRoZSBkZWNyeXB0
aW9uIHBlcmZvcm1lZCBieSB0aGUgc3ViY2xhc3Nlcy4gUmVsZWFzZSB0aGUgbG9jayB3aGVuIG5v
dCBuZWVkZWQuCisgICAgICAgIChpc0NETVByb3h5QXZhaWxhYmxlKTogUmVuYW1lZCBtdXRleCB0
byBiZSBtb3JlIGdlbmVyaWMuCisgICAgICAgIChhdHRhY2hDRE1Qcm94eSk6IERpdHRvLiBBbHNv
IHJlbmFtZWQgY29uZGl0aW9uIGZvciB0aGUgc2FtZSByZWFzb24uCisgICAgICAgIChzaW5rRXZl
bnRIYW5kbGVyKTogTWFuYWdlIGlzRmx1c2hpbmcgc3RhdHVzIGFuZCBhd2FrZSB3YWl0cyBmb3Ig
Y2RtUHJveHkgb3IgZm9yIHNlc3Npb24gZGVwZW5kaW5nIG9uIHRoZSBsaWZlY3ljbGUgc3RhZ2Uu
IAorICAgICAgICAod2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdElzRmx1c2hpbmcp
OiBFeHBvc2UgaXNGbHVzaGluZyBzdGF0dXMuCisgICAgICAgICh3ZWJLaXRNZWRpYUNvbW1vbkVu
Y3J5cHRpb25EZWNyeXB0R2V0Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50KTogUmV0dXJuIFdlYWsg
cmVmZXJlbmNlIHRvIHRoZSBjbGllbnQuCisgICAgICAgIChjaGFuZ2VTdGF0ZSk6IFJlbmFtZWQg
Y29uZGl0aW9uLgorICAgICAgICAoc2V0Q29udGV4dCk6IFJlbmFtZWQgbXV0ZXguCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9u
RGVjcnlwdG9yR1N0cmVhbWVyLmg6IE5ldyBnZXR0ZXJzIGZvciBpc0ZsdXNoaW5nIGFuZCB0aGUg
Y2xpZW50LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0
VGh1bmRlckRlY3J5cHRvckdTdHJlYW1lci5jcHA6CisgICAgICAgIChkZWNyeXB0KTogQXNrIGZv
ciBjbGllbnQgdG8gdGhlIHN1cGVyY2xhc3MgYW5kIHN0b3JlIGl0IGluIHRoZSBjb250ZXh0Lgor
CiAyMDIxLTAzLTIzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAg
ICAgT25seSBzZW5kIGltYWdlIGFjcm9zcyBYUEMgdG8gR1BVIHByb2Nlc3MgaWYgaXQgY2hhbmdl
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVBy
b3h5LmNwcAppbmRleCA1YjFiNWRmZGJkNTE0ZGUyN2Q2NmU1NDVlNzA0Y2VmZjkwNGQyZmM3Li5i
NzcxMjc1OTcyOTEyZmUxMGJhMTlhYTI5MzkyZWY5YWQzMjU5OTk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCkBAIC0yNzEs
NyArMjcxLDEzIEBAIHZvaWQgQ0RNUHJveHk6OnN0b3BwZWRXYWl0aW5nRm9yS2V5KCkgY29uc3QK
ICAgICBtX2luc3RhbmNlLT5zdG9wcGVkV2FpdGluZ0ZvcktleSgpOwogfQogCi1PcHRpb25hbDxS
ZWY8S2V5SGFuZGxlPj4gQ0RNUHJveHk6OnRyeVdhaXRGb3JLZXlIYW5kbGUoY29uc3QgS2V5SURU
eXBlJiBrZXlJRCkgY29uc3QKK3ZvaWQgQ0RNUHJveHk6OmFib3J0V2FpdGluZ0ZvcktleSgpIGNv
bnN0Cit7CisgICAgTE9HKEVNRSwgIkVNRSAtIENETVByb3h5IC0gYWJvcnQgd2FpdGluZyBmb3Ig
a2V5IElEIik7CisgICAgbV9rZXlzQ29uZGl0aW9uLm5vdGlmeUFsbCgpOworfQorCitPcHRpb25h
bDxSZWY8S2V5SGFuZGxlPj4gQ0RNUHJveHk6OnRyeVdhaXRGb3JLZXlIYW5kbGUoY29uc3QgS2V5
SURUeXBlJiBrZXlJRCwgV2Vha1B0cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnQ+JiYgY2xpZW50
KSBjb25zdAogewogICAgIHN0YXJ0ZWRXYWl0aW5nRm9yS2V5KCk7CiAgICAgLy8gVW5jb25kaXRp
b25hbGx5IHNheWluZyB3ZSBoYXZlIHN0b3BwZWQgd2FpdGluZyBmb3IgYSBrZXkgbWVhbnMgdGhh
dCBkZWNyeXB0b3JzIG9ubHkgZ2V0CkBAIC0yODEsMjEgKzI4NywyNSBAQCBPcHRpb25hbDxSZWY8
S2V5SGFuZGxlPj4gQ0RNUHJveHk6OnRyeVdhaXRGb3JLZXlIYW5kbGUoY29uc3QgS2V5SURUeXBl
JiBrZXlJRCkgYwogICAgICAgICBzdG9wcGVkV2FpdGluZ0ZvcktleSgpOwogICAgIH0pOwogICAg
IExPRyhFTUUsICJFTUUgLSBDRE1Qcm94eSAtIHRyeWluZyB0byB3YWl0IGZvciBrZXkgSUQgJXMi
LCB2ZWN0b3JUb0hleFN0cmluZyhrZXlJRCkuYXNjaWkoKS5kYXRhKCkpOwotICAgIGJvb2wgd2Fz
S2V5UmVjZWl2ZWQgPSBmYWxzZTsKKyAgICBib29sIHdhc0tleUF2YWlsYWJsZSA9IGZhbHNlOwog
ICAgIHsKICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2tleXNNdXRleCk7Ci0gICAg
ICAgIHdhc0tleVJlY2VpdmVkID0gbV9rZXlzQ29uZGl0aW9uLndhaXRGb3IobV9rZXlzTXV0ZXgs
IENETVByb3h5OjpNYXhLZXlXYWl0VGltZVNlY29uZHMsIFsmLCB0aGlzLCBrZXlJRF0oKSB7Ci0g
ICAgICAgICAgICByZXR1cm4ga2V5QXZhaWxhYmxlVW5sb2NrZWQoa2V5SUQpOworCisgICAgICAg
IG1fa2V5c0NvbmRpdGlvbi53YWl0Rm9yKG1fa2V5c011dGV4LCBDRE1Qcm94eTo6TWF4S2V5V2Fp
dFRpbWVTZWNvbmRzLCBbdGhpcywga2V5SUQsIGNsaWVudCA9IFdURk1vdmUoY2xpZW50KSwgJndh
c0tleUF2YWlsYWJsZV0oKSB7CisgICAgICAgICAgICBpZiAoIWNsaWVudCB8fCBjbGllbnQtPmlz
QWJvcnRpbmcoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHdh
c0tleUF2YWlsYWJsZSA9IGtleUF2YWlsYWJsZVVubG9ja2VkKGtleUlEKTsKKyAgICAgICAgICAg
IHJldHVybiB3YXNLZXlBdmFpbGFibGU7CiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIGlmICh3
YXNLZXlSZWNlaXZlZCkgewotICAgICAgICBMT0coRU1FLCAiRU1FIC0gQ0RNUHJveHkgLSBzdWNj
ZXNzZnVsbHkgd2FpdGVkIGZvciBrZXkgSUQgJXMiLCB2ZWN0b3JUb0hleFN0cmluZyhrZXlJRCku
YXNjaWkoKS5kYXRhKCkpOworICAgIGlmICh3YXNLZXlBdmFpbGFibGUpIHsKICAgICAgICAgUmVm
UHRyPEtleUhhbmRsZT4gaGFuZGxlID0ga2V5SGFuZGxlKGtleUlEKTsKKyAgICAgICAgTE9HKEVN
RSwgIkVNRSAtIENETVByb3h5IC0gc3VjY2Vzc2Z1bGx5IHdhaXRlZCBmb3Iga2V5IElEICVzIiwg
dmVjdG9yVG9IZXhTdHJpbmcoa2V5SUQpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJu
IG1ha2VPcHRpb25hbChoYW5kbGUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQotICAgIAotICAg
IExPRyhFTUUsICJFTUUgLSBDRE1Qcm94eSAtIGtleSBJRCAlcyBub3QgYXZhaWxhYmxlIiwgdmVj
dG9yVG9IZXhTdHJpbmcoa2V5SUQpLmFzY2lpKCkuZGF0YSgpKTsKKworICAgIExPRyhFTUUsICJF
TUUgLSBDRE1Qcm94eSAtIGtleSBJRCAlcyBub3QgYXZhaWxhYmxlIG9yIG9wZXJhdGlvbiBhYm9y
dGVkIiwgdmVjdG9yVG9IZXhTdHJpbmcoa2V5SUQpLmFzY2lpKCkuZGF0YSgpKTsKICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogfQogCkBAIC0zMTAsMjAgKzMyMCwyMCBAQCBib29sIENETVByb3h5
OjprZXlBdmFpbGFibGUoY29uc3QgS2V5SURUeXBlJiBrZXlJRCkgY29uc3QKICAgICByZXR1cm4g
a2V5QXZhaWxhYmxlVW5sb2NrZWQoa2V5SUQpOwogfQogCi1PcHRpb25hbDxSZWY8S2V5SGFuZGxl
Pj4gQ0RNUHJveHk6OmdldE9yV2FpdEZvcktleUhhbmRsZShjb25zdCBLZXlJRFR5cGUmIGtleUlE
KSBjb25zdAorT3B0aW9uYWw8UmVmPEtleUhhbmRsZT4+IENETVByb3h5OjpnZXRPcldhaXRGb3JL
ZXlIYW5kbGUoY29uc3QgS2V5SURUeXBlJiBrZXlJRCwgV2Vha1B0cjxDRE1Qcm94eURlY3J5cHRp
b25DbGllbnQ+JiYgY2xpZW50KSBjb25zdAogewogICAgIGlmICgha2V5QXZhaWxhYmxlKGtleUlE
KSkgewogICAgICAgICBMT0coRU1FLCAiRU1FIC0gQ0RNUHJveHkga2V5IGNhY2hlIGRvZXMgbm90
IGNvbnRhaW4ga2V5IElEICVzIiwgdmVjdG9yVG9IZXhTdHJpbmcoa2V5SUQpLmFzY2lpKCkuZGF0
YSgpKTsKLSAgICAgICAgcmV0dXJuIHRyeVdhaXRGb3JLZXlIYW5kbGUoa2V5SUQpOworICAgICAg
ICByZXR1cm4gdHJ5V2FpdEZvcktleUhhbmRsZShrZXlJRCwgV1RGTW92ZShjbGllbnQpKTsKICAg
ICB9CiAKICAgICBSZWZQdHI8S2V5SGFuZGxlPiBoYW5kbGUgPSBrZXlIYW5kbGUoa2V5SUQpOwog
ICAgIHJldHVybiBtYWtlT3B0aW9uYWwoaGFuZGxlLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCi1P
cHRpb25hbDxLZXlIYW5kbGVWYWx1ZVZhcmlhbnQ+IENETVByb3h5OjpnZXRPcldhaXRGb3JLZXlW
YWx1ZShjb25zdCBLZXlJRFR5cGUmIGtleUlEKSBjb25zdAorT3B0aW9uYWw8S2V5SGFuZGxlVmFs
dWVWYXJpYW50PiBDRE1Qcm94eTo6Z2V0T3JXYWl0Rm9yS2V5VmFsdWUoY29uc3QgS2V5SURUeXBl
JiBrZXlJRCwgV2Vha1B0cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnQ+JiYgY2xpZW50KSBjb25z
dAogewotICAgIGlmIChhdXRvIGtleUhhbmRsZSA9IGdldE9yV2FpdEZvcktleUhhbmRsZShrZXlJ
RCkpCisgICAgaWYgKGF1dG8ga2V5SGFuZGxlID0gZ2V0T3JXYWl0Rm9yS2V5SGFuZGxlKGtleUlE
LCBXVEZNb3ZlKGNsaWVudCkpKQogICAgICAgICByZXR1cm4gbWFrZU9wdGlvbmFsKCgqa2V5SGFu
ZGxlKS0+dmFsdWUoKSk7CiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCmluZGV4IDgzZWRk
OWU5MjU0OWZhYWVmMTI1MDVlMTUzZWNmNzJmZWI5MzFmYTguLjllYmUzMjNhZmE2MzNjMTgzODUy
MThiYmFkNDgzOGVlNTljNmNhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaApAQCAtMTQ2LDYgKzE0Niw3IEBAIHByaXZhdGU6CiB9
OwogCiBjbGFzcyBDRE1JbnN0YW5jZVByb3h5OworY2xhc3MgQ0RNUHJveHlEZWNyeXB0aW9uQ2xp
ZW50OwogCiAvLyBIYW5kbGUgdG8gYSAicmVhbCIgQ0RNLCBub3QgdGhlIEphdmFTY3JpcHQgZmFj
YWRlLiBUaGlzIGNhbiBiZSB1c2VkCiAvLyBmcm9tIGJhY2tncm91bmQgdGhyZWFkcyAoaS5lLiBk
ZWNyeXB0b3JzKS4KQEAgLTE1NywxNCArMTU4LDE1IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBk
YXRlS2V5U3RvcmUoY29uc3QgS2V5U3RvcmUmIG5ld0tleVN0b3JlKTsKICAgICB2b2lkIHNldElu
c3RhbmNlKENETUluc3RhbmNlUHJveHkqKTsKKyAgICB2b2lkIGFib3J0V2FpdGluZ0ZvcktleSgp
IGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPEtleUhhbmRsZT4ga2V5SGFuZGxlKGNv
bnN0IEtleUlEVHlwZSYpIGNvbnN0OwogICAgIGJvb2wga2V5QXZhaWxhYmxlKGNvbnN0IEtleUlE
VHlwZSYpIGNvbnN0OwogICAgIGJvb2wga2V5QXZhaWxhYmxlVW5sb2NrZWQoY29uc3QgS2V5SURU
eXBlJikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8UmVmPEtleUhhbmRsZT4+IHRyeVdhaXRGb3JLZXlI
YW5kbGUoY29uc3QgS2V5SURUeXBlJikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8UmVmPEtleUhhbmRs
ZT4+IGdldE9yV2FpdEZvcktleUhhbmRsZShjb25zdCBLZXlJRFR5cGUmKSBjb25zdDsKLSAgICBP
cHRpb25hbDxLZXlIYW5kbGVWYWx1ZVZhcmlhbnQ+IGdldE9yV2FpdEZvcktleVZhbHVlKGNvbnN0
IEtleUlEVHlwZSYpIGNvbnN0OworICAgIE9wdGlvbmFsPFJlZjxLZXlIYW5kbGU+PiB0cnlXYWl0
Rm9yS2V5SGFuZGxlKGNvbnN0IEtleUlEVHlwZSYsIFdlYWtQdHI8Q0RNUHJveHlEZWNyeXB0aW9u
Q2xpZW50PiYmKSBjb25zdDsKKyAgICBPcHRpb25hbDxSZWY8S2V5SGFuZGxlPj4gZ2V0T3JXYWl0
Rm9yS2V5SGFuZGxlKGNvbnN0IEtleUlEVHlwZSYsIFdlYWtQdHI8Q0RNUHJveHlEZWNyeXB0aW9u
Q2xpZW50PiYmKSBjb25zdDsKKyAgICBPcHRpb25hbDxLZXlIYW5kbGVWYWx1ZVZhcmlhbnQ+IGdl
dE9yV2FpdEZvcktleVZhbHVlKGNvbnN0IEtleUlEVHlwZSYsIFdlYWtQdHI8Q0RNUHJveHlEZWNy
eXB0aW9uQ2xpZW50PiYmKSBjb25zdDsKICAgICB2b2lkIHN0YXJ0ZWRXYWl0aW5nRm9yS2V5KCkg
Y29uc3Q7CiAgICAgdm9pZCBzdG9wcGVkV2FpdGluZ0ZvcktleSgpIGNvbnN0OwogICAgIGNvbnN0
IENETUluc3RhbmNlUHJveHkqIGluc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YW5jZTsg
fQpAQCAtMjUzLDYgKzI1NSwxMiBAQCBwcml2YXRlOgogICAgIEtleVN0b3JlIG1fa2V5U3RvcmU7
CiB9OwogCitjbGFzcyBDRE1Qcm94eURlY3J5cHRpb25DbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50LCBXZWFrUHRyRmFjdG9yeUluaXRpYWxpemF0
aW9uOjpFYWdlcj4geworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBpc0Fib3J0aW5nKCkgPSAw
OworICAgIHZpcnR1YWwgfkNETVByb3h5RGVjcnlwdGlvbkNsaWVudCgpID0gZGVmYXVsdDsKK307
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmNwcAppbmRleCBjYWE5NzJk
YzZiNzc3ZDVkZGRmZTRkYzVjNzk0YzMwMmEzMTQ2MTA0Li5iZTE1NDI1NWYzZDc2ODMxNWUzNTY4
NzY5MDQ3NmY3ZjhhZTNiYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5j
cHAKQEAgLTExMyw3ICsxMTMsNyBAQCBib29sIENETVByb3h5Q2xlYXJLZXk6OmNlbmNTZXRDb3Vu
dGVyVmVjdG9yKGNvbnN0IGNlbmNEZWNyeXB0Q29udGV4dCYgaW5wdXQpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgQ0RNUHJveHlDbGVhcktleTo6Y2VuY1NldERlY3J5cHRpb25LZXkoY29u
c3QgY2VuY0RlY3J5cHRDb250ZXh0JiBpbikKK2Jvb2wgQ0RNUHJveHlDbGVhcktleTo6Y2VuY1Nl
dERlY3J5cHRpb25LZXkoY2VuY0RlY3J5cHRDb250ZXh0JiBpbikKIHsKICAgICAvLyBGSVhNRTog
VW5uZWNlc3NhcnkgY29weSwgY2FuIHdlIGF2b2lkIHRoaXMgd2hpbGUgc3RpbGwgZXhwb3NpbmcK
ICAgICAvLyBhIG5vbi1HU3RyZWFtZXItc3BlY2lmaWMgRGVjcnlwdElucHV0IEFQST8gVGhlc2Ug
YnVmZmVycyBhcmUKQEAgLTEyMSw3ICsxMjEsNyBAQCBib29sIENETVByb3h5Q2xlYXJLZXk6OmNl
bmNTZXREZWNyeXB0aW9uS2V5KGNvbnN0IGNlbmNEZWNyeXB0Q29udGV4dCYgaW4pCiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGtleUlEVmVjOwogICAgIGtleUlEVmVjLmFwcGVuZChpbi5rZXlJRCwgaW4u
a2V5SURTaXplSW5CeXRlcyk7CiAKLSAgICBhdXRvIGtleURhdGEgPSBnZXRPcldhaXRGb3JLZXlW
YWx1ZShrZXlJRFZlYyk7CisgICAgYXV0byBrZXlEYXRhID0gZ2V0T3JXYWl0Rm9yS2V5VmFsdWUo
a2V5SURWZWMsIFdURk1vdmUoaW4uY2RtUHJveHlEZWNyeXB0aW9uQ2xpZW50KSk7CiAgICAgaWYg
KCFrZXlEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94
eUNsZWFyS2V5LmgKaW5kZXggZmY5NmJmYWMxMjlkNmRkM2FlN2M1ZGQwNzc0YmUxYWIyNTQxN2Nl
MC4uODk2YWJkYmQ2NTY1NTkyMGEwODFkODUwNTkxYWJmM2ZmZGYxOGY1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNs
ZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9DRE1Qcm94eUNsZWFyS2V5LmgKQEAgLTkxLDYgKzkxLDcgQEAgcHVibGljOgogICAgICAg
ICBjb25zdCB1aW50OF90KiBzdWJzYW1wbGVzQnVmZmVyOwogICAgICAgICBzaXplX3Qgc3Vic2Ft
cGxlc0J1ZmZlclNpemVJbkJ5dGVzOwogICAgICAgICBzaXplX3QgbnVtU3Vic2FtcGxlczsKKyAg
ICAgICAgV2Vha1B0cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnQ+IGNkbVByb3h5RGVjcnlwdGlv
bkNsaWVudDsKIAogICAgICAgICBib29sIGlzU3Vic2FtcGxlZCgpIGNvbnN0IHsgcmV0dXJuIG51
bVN1YnNhbXBsZXM7IH0KICAgICB9OwpAQCAtMTA3LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAg
Ly8gd2Ugd2lsbCBzdXJlbHkgaGF2ZSB0byBzdXBwb3J0IG1vcmUgcHJvdGVjdGlvbiBzY2hlbWVz
LiBDYW4gd2UKICAgICAvLyByZXVzZSBzb21lIENyeXB0byBBUElzIGluIFdlYkNvcmU/CiAgICAg
Ym9vbCBjZW5jU2V0Q291bnRlclZlY3Rvcihjb25zdCBjZW5jRGVjcnlwdENvbnRleHQmKTsKLSAg
ICBib29sIGNlbmNTZXREZWNyeXB0aW9uS2V5KGNvbnN0IGNlbmNEZWNyeXB0Q29udGV4dCYpOwor
ICAgIGJvb2wgY2VuY1NldERlY3J5cHRpb25LZXkoY2VuY0RlY3J5cHRDb250ZXh0Jik7CiAgICAg
Ym9vbCBjZW5jRGVjcnlwdEZ1bGxTYW1wbGUoY2VuY0RlY3J5cHRDb250ZXh0Jik7CiAgICAgYm9v
bCBjZW5jRGVjcnlwdFN1YnNhbXBsZWQoY2VuY0RlY3J5cHRDb250ZXh0Jik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJv
eHlUaHVuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvQ0RNUHJveHlUaHVuZGVyLmNwcAppbmRleCAxMWY2ZDdhZTExMzY3ZDdmOTQ2YTZmNThm
NzU1ZmYwMDRkODRlYjNjLi43ZDgzNTJmMTczMjg5NDZjNGFhODExZWY5MDkxOThkYzQ2YmIzNjZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0NETVByb3h5VGh1bmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eVRodW5kZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIE5PVEU6IFlvdVR1YmUgMjAxOSBFTUUgY29uZm9ybWFu
Y2UgdGVzdHMgZXhwZWN0IHRoaXMgdG8gYmUgPj01cy4KIGNvbnN0IFdURjo6U2Vjb25kcyBzX2xp
Y2Vuc2VLZXlSZXNwb25zZVRpbWVvdXQgPSBXVEY6OlNlY29uZHMoNik7CiAKLUJveFB0cjxPcGVu
Q0RNU2Vzc2lvbj4gQ0RNUHJveHlUaHVuZGVyOjpnZXREZWNyeXB0aW9uU2Vzc2lvbihjb25zdCBE
ZWNyeXB0aW9uQ29udGV4dCYgaW4pIGNvbnN0CitCb3hQdHI8T3BlbkNETVNlc3Npb24+IENETVBy
b3h5VGh1bmRlcjo6Z2V0RGVjcnlwdGlvblNlc3Npb24oRGVjcnlwdGlvbkNvbnRleHQmIGluKSBj
b25zdAogewogICAgIEdzdE1hcHBlZEJ1ZmZlciBtYXBwZWRLZXlJRChpbi5rZXlJREJ1ZmZlciwg
R1NUX01BUF9SRUFEKTsKICAgICBpZiAoIW1hcHBlZEtleUlEKSB7CkBAIC01NCw3ICs1NCw3IEBA
IEJveFB0cjxPcGVuQ0RNU2Vzc2lvbj4gQ0RNUHJveHlUaHVuZGVyOjpnZXREZWNyeXB0aW9uU2Vz
c2lvbihjb25zdCBEZWNyeXB0aW9uQ29uCiAKICAgICBhdXRvIGtleUlEID0gbWFwcGVkS2V5SUQu
Y3JlYXRlVmVjdG9yKCk7CiAKLSAgICBhdXRvIGtleUhhbmRsZSA9IGdldE9yV2FpdEZvcktleUhh
bmRsZShrZXlJRCk7CisgICAgYXV0byBrZXlIYW5kbGUgPSBnZXRPcldhaXRGb3JLZXlIYW5kbGUo
a2V5SUQsIFdURk1vdmUoaW4uY2RtUHJveHlEZWNyeXB0aW9uQ2xpZW50KSk7CiAgICAgaWYgKCFr
ZXlIYW5kbGUuaGFzVmFsdWUoKSB8fCAha2V5SGFuZGxlLnZhbHVlKCktPmlzU3RhdHVzQ3VycmVu
dGx5VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTg0LDcgKzg0LDcgQEAg
Ym9vbCBDRE1Qcm94eVRodW5kZXI6OmRlY3J5cHQoQ0RNUHJveHlUaHVuZGVyOjpEZWNyeXB0aW9u
Q29udGV4dCYgaW5wdXQpCiB7CiAgICAgQm94UHRyPE9wZW5DRE1TZXNzaW9uPiBzZXNzaW9uID0g
Z2V0RGVjcnlwdGlvblNlc3Npb24oaW5wdXQpOwogICAgIGlmICghc2Vzc2lvbikgewotICAgICAg
ICBHU1RfRVJST1IoInRoZXJlIGlzIG5vIHZhbGlkIHNlc3Npb24gdG8gZGVjcnlwdCBmb3IgdGhl
IHByb3ZpZGVkIGtleSBJRCIpOworICAgICAgICBHU1RfV0FSTklORygidGhlcmUgaXMgbm8gdmFs
aWQgc2Vzc2lvbiB0byBkZWNyeXB0IGZvciB0aGUgcHJvdmlkZWQga2V5IElEIChvciB0aGUgb3Bl
cmF0aW9uIHdhcyBhYm9ydGVkKSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0NETVByb3h5VGh1bmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9DRE1Qcm94eVRodW5kZXIuaAppbmRleCAwZGU2MzU1NTRkNDMxNjZmYWI1ZDJi
ZmIyYTBlMjA2ZmRiZGViZmMxLi5hZDU0NDM2NGE0ODNiZWJjMzA5NGQ0YWNiN2Y0ZDYyZjg2NDhj
ZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0NETVByb3h5VGh1bmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlUaHVuZGVyLmgKQEAgLTUzLDEzICs1MywxNCBA
QCBwdWJsaWM6CiAgICAgICAgIEdzdEJ1ZmZlciogZGF0YUJ1ZmZlcjsKICAgICAgICAgR3N0QnVm
ZmVyKiBzdWJzYW1wbGVzQnVmZmVyOwogICAgICAgICBzaXplX3QgbnVtU3Vic2FtcGxlczsKKyAg
ICAgICAgV2Vha1B0cjxDRE1Qcm94eURlY3J5cHRpb25DbGllbnQ+IGNkbVByb3h5RGVjcnlwdGlv
bkNsaWVudDsKICAgICB9OwogCiAgICAgYm9vbCBkZWNyeXB0KERlY3J5cHRpb25Db250ZXh0Jik7
CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSB7IHJldHVybiBtX2tleVN5c3RlbTsgfQog
CiBwcml2YXRlOgotICAgIEJveFB0cjxPcGVuQ0RNU2Vzc2lvbj4gZ2V0RGVjcnlwdGlvblNlc3Np
b24oY29uc3QgRGVjcnlwdGlvbkNvbnRleHQmKSBjb25zdDsKKyAgICBCb3hQdHI8T3BlbkNETVNl
c3Npb24+IGdldERlY3J5cHRpb25TZXNzaW9uKERlY3J5cHRpb25Db250ZXh0JikgY29uc3Q7CiAg
ICAgU3RyaW5nIG1fa2V5U3lzdGVtOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDbGVhcktleURlY3J5cHRvckdT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL1dlYktpdENsZWFyS2V5RGVjcnlwdG9yR1N0cmVhbWVyLmNwcAppbmRleCAxYWI5N2JiM2I5
MzU2MzE3ODFkOTRlNTc1MGM2YzQ1ZDc1OGJlYzUyLi5kYzliNWEzYTRmYWM1OTdjY2FlYWRlNzVm
M2VkYzFjZTFkNzM3MThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENsZWFyS2V5RGVjcnlwdG9yR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktp
dENsZWFyS2V5RGVjcnlwdG9yR1N0cmVhbWVyLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHN0YXRp
YyBib29sIGRlY3J5cHQoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZiwg
R3N0QnVmZmVyKiBpdkJ1ZmZlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBD
RE1Qcm94eUNsZWFyS2V5OjpjZW5jRGVjcnlwdENvbnRleHQgY29udGV4dDsKKyAgICBDRE1Qcm94
eUNsZWFyS2V5OjpjZW5jRGVjcnlwdENvbnRleHQgY29udGV4dCA9IHsgfTsKICAgICBjb250ZXh0
LmtleUlEID0gbWFwcGVkS2V5SWRCdWZmZXIuZGF0YSgpOwogICAgIGNvbnRleHQua2V5SURTaXpl
SW5CeXRlcyA9IG1hcHBlZEtleUlkQnVmZmVyLnNpemUoKTsKICAgICBjb250ZXh0Lml2ID0gbWFw
cGVkSVZCdWZmZXIuZGF0YSgpOwpAQCAtMTQ1LDYgKzE0NSw3IEBAIHN0YXRpYyBib29sIGRlY3J5
cHQoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZiwgR3N0QnVmZmVyKiBp
dkJ1ZmZlCiAgICAgICAgIGNvbnRleHQuc3Vic2FtcGxlc0J1ZmZlciA9IG1hcHBlZFN1YnNhbXBs
ZXNCdWZmZXIuZGF0YSgpOwogICAgICAgICBjb250ZXh0LnN1YnNhbXBsZXNCdWZmZXJTaXplSW5C
eXRlcyA9IG1hcHBlZFN1YnNhbXBsZXNCdWZmZXIuc2l6ZSgpOwogICAgIH0KKyAgICBjb250ZXh0
LmNkbVByb3h5RGVjcnlwdGlvbkNsaWVudCA9IHdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRl
Y3J5cHRHZXRDRE1Qcm94eURlY3J5cHRpb25DbGllbnQoc2VsZik7CiAKICAgICByZXR1cm4gcHJp
di0+Y2RtUHJveHktPmNlbmNEZWNyeXB0KGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNy
eXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJl
YW1lci5jcHAKaW5kZXggNWNkOTIxMzE1OWE1N2M0YWFmNzFmMzM5MDVkYWE4M2M2YWExODllZC4u
NWNjNjdmOTg1MjhlMzNiZjAxNzVjNGFiZmQ2MjkzOGY0OWFkM2JmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25F
bmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0
b3JHU3RyZWFtZXIuY3BwCkBAIC0zNiwxMiArMzYsMzEgQEAKIAogdXNpbmcgV2ViQ29yZTo6Q0RN
UHJveHk7CiAKKy8vIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGFyZSB0aWVkIHRvIHRoZSBkZWNy
eXB0b3IgbGlmZWN5Y2xlLiBUaGV5IGNhbid0IGJlIGFsaXZlIGFmdGVyIHRoZSBkZWNyeXB0b3Ig
aGFzIGJlZW4gZGVzdHJveWVkLgorY2xhc3MgQ0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50SW1wbGVt
ZW50YXRpb24gOiBwdWJsaWMgV2ViQ29yZTo6Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBDRE1Qcm94eURlY3J5cHRp
b25DbGllbnRJbXBsZW1lbnRhdGlvbihXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0
KiBkZWNyeXB0b3IpCisgICAgICAgIDogbV9kZWNyeXB0b3IoZGVjcnlwdG9yKSB7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNBYm9ydGluZygpCisgICAgeworICAgICAgICByZXR1cm4gd2ViS2l0TWVk
aWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdElzRmx1c2hpbmcobV9kZWNyeXB0b3IpOworICAgIH0K
KyAgICB2aXJ0dWFsIH5DRE1Qcm94eURlY3J5cHRpb25DbGllbnRJbXBsZW1lbnRhdGlvbigpID0g
ZGVmYXVsdDsKK3ByaXZhdGU6CisgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlw
dCogbV9kZWNyeXB0b3I7Cit9OworCiAjZGVmaW5lIFdFQktJVF9NRURJQV9DRU5DX0RFQ1JZUFRf
R0VUX1BSSVZBVEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJL
SVRfVFlQRV9NRURJQV9DRU5DX0RFQ1JZUFQsIFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRl
Y3J5cHRQcml2YXRlKSkKIHN0cnVjdCBfV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlw
dFByaXZhdGUgewogICAgIFJlZlB0cjxDRE1Qcm94eT4gY2RtUHJveHk7CiAKLSAgICBMb2NrIGNk
bUF0dGFjaG1lbnRNdXRleDsKLSAgICBDb25kaXRpb24gY2RtQXR0YWNobWVudENvbmRpdGlvbjsK
KyAgICAvLyBQcm90ZWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHN0cnVjdHVyZSBtZW1iZXJzLgorICAg
IExvY2sgbXV0ZXg7CisgICAgQ29uZGl0aW9uIGNvbmRpdGlvbjsKKworICAgIGJvb2wgaXNGbHVz
aGluZyB7IGZhbHNlIH07CisgICAgc3RkOjp1bmlxdWVfcHRyPENETVByb3h5RGVjcnlwdGlvbkNs
aWVudEltcGxlbWVudGF0aW9uPiBjZG1Qcm94eURlY3J5cHRpb25DbGllbnRJbXBsZW1lbnRhdGlv
bjsKIH07CiAKIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBNYXhTZWNvbmRzVG9XYWl0Rm9yQ0RN
UHJveHkgPSA1X3M7CkBAIC04NSw2ICsxMDQsMTAgQEAgc3RhdGljIHZvaWQgY29uc3RydWN0ZWQo
R09iamVjdCogb2JqZWN0KQogICAgIGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRfaW5fcGxhY2UoYmFz
ZSwgVFJVRSk7CiAgICAgZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldF9wYXNzdGhyb3VnaChiYXNlLCBG
QUxTRSk7CiAgICAgZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldF9nYXBfYXdhcmUoYmFzZSwgRkFMU0Up
OworCisgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZiA9IFdFQktJ
VF9NRURJQV9DRU5DX0RFQ1JZUFQoYmFzZSk7CisgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0
aW9uRGVjcnlwdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9Q
UklWQVRFKHNlbGYpOworICAgIHByaXYtPmNkbVByb3h5RGVjcnlwdGlvbkNsaWVudEltcGxlbWVu
dGF0aW9uID0gV1RGOjptYWtlVW5pcXVlPENETVByb3h5RGVjcnlwdGlvbkNsaWVudEltcGxlbWVu
dGF0aW9uPihzZWxmKTsKIH0KIAogc3RhdGljIEdzdENhcHMqIHRyYW5zZm9ybUNhcHMoR3N0QmFz
ZVRyYW5zZm9ybSogYmFzZSwgR3N0UGFkRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3N0Q2FwcyogY2Fw
cywgR3N0Q2FwcyogZmlsdGVyKQpAQCAtMTY4LDIwICsxOTEsMzEgQEAgc3RhdGljIEdzdEZsb3dS
ZXR1cm4gdHJhbnNmb3JtSW5QbGFjZShHc3RCYXNlVHJhbnNmb3JtKiBiYXNlLCBHc3RCdWZmZXIq
IGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwogICAgIH0KIAotICAgIExvY2tI
b2xkZXIgbG9ja2VyKHByaXYtPmNkbUF0dGFjaG1lbnRNdXRleCk7CisgICAgTG9ja0hvbGRlciBs
b2NrZXIocHJpdi0+bXV0ZXgpOworCisgICAgaWYgKHByaXYtPmlzRmx1c2hpbmcpIHsKKyAgICAg
ICAgR1NUX0RFQlVHX09CSkVDVChzZWxmLCAiRGVjcnlwdGlvbiBhYm9ydGVkIGJlY2F1c2Ugb2Yg
Zmx1c2giKTsKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0ZMVVNISU5HOworICAgIH0KIAogICAg
IC8vIFRoZSBDRE0gaW5zdGFuY2UgbmVlZHMgdG8gYmUgbmVnb3RpYXRlZCBiZWZvcmUgd2UgY2Fu
IGJlZ2luIGRlY3J5cHRpb24uCiAgICAgaWYgKCFwcml2LT5jZG1Qcm94eSkgewogICAgICAgICBH
U1RfREVCVUdfT0JKRUNUKHNlbGYsICJDRE0gbm90IGF2YWlsYWJsZSwgZ29pbmcgdG8gd2FpdCBm
b3IgaXQiKTsKLSAgICAgICAgcHJpdi0+Y2RtQXR0YWNobWVudENvbmRpdGlvbi53YWl0Rm9yKHBy
aXYtPmNkbUF0dGFjaG1lbnRNdXRleCwgTWF4U2Vjb25kc1RvV2FpdEZvckNETVByb3h5LCBbcHJp
dl0gewotICAgICAgICAgICAgcmV0dXJuIHByaXYtPmNkbVByb3h5OworICAgICAgICBwcml2LT5j
b25kaXRpb24ud2FpdEZvcihwcml2LT5tdXRleCwgTWF4U2Vjb25kc1RvV2FpdEZvckNETVByb3h5
LCBbcHJpdl0geworICAgICAgICAgICAgcmV0dXJuIHByaXYtPmlzRmx1c2hpbmcgfHwgcHJpdi0+
Y2RtUHJveHk7CiAgICAgICAgIH0pOworICAgICAgICAvLyBOb3RlIHRoYXQgd2FpdEZvcigpIHJl
bGVhc2VzIHRoZSBtdXRleCBsb2NrIGludGVybmFsbHkgd2hpbGUgaXQgd2FpdHMsIHNvIGlzRmx1
c2hpbmcgbWF5IGhhdmUgYmVlbiBjaGFuZ2VkLgorICAgICAgICBpZiAocHJpdi0+aXNGbHVzaGlu
ZykgeworICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzZWxmLCAiRGVjcnlwdGlvbiBhYm9y
dGVkIGJlY2F1c2Ugb2YgZmx1c2giKTsKKyAgICAgICAgICAgIHJldHVybiBHU1RfRkxPV19GTFVT
SElORzsKKyAgICAgICAgfQogICAgICAgICBpZiAoIXByaXYtPmNkbVByb3h5KSB7CiAgICAgICAg
ICAgICBHU1RfRVJST1JfT0JKRUNUKHNlbGYsICJDRE1Qcm94eSB3YXMgbm90IHJldHJpZXZlZCBp
biB0aW1lIik7CiAgICAgICAgICAgICByZXR1cm4gR1NUX0ZMT1dfTk9UX1NVUFBPUlRFRDsKICAg
ICAgICAgfQogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJDRE0gbm93IGF2YWlsYWJs
ZSB3aXRoIGFkZHJlc3MgJXAiLCBwcml2LT5jZG1Qcm94eS5nZXQoKSk7CiAgICAgfQorCiAgICAg
YXV0byByZW1vdmVQcm90ZWN0aW9uTWV0YU9uUmV0dXJuID0gbWFrZVNjb3BlRXhpdChbYnVmZmVy
LCBwcm90ZWN0aW9uTWV0YV0gewogICAgICAgICBnc3RfYnVmZmVyX3JlbW92ZV9tZXRhKGJ1ZmZl
ciwgcmVpbnRlcnByZXRfY2FzdDxHc3RNZXRhKj4ocHJvdGVjdGlvbk1ldGEpKTsKICAgICB9KTsK
QEAgLTI0NSw3ICsyNzksMjEgQEAgc3RhdGljIEdzdEZsb3dSZXR1cm4gdHJhbnNmb3JtSW5QbGFj
ZShHc3RCYXNlVHJhbnNmb3JtKiBiYXNlLCBHc3RCdWZmZXIqIGJ1ZmZlcikKICAgICBXZWJLaXRN
ZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0Q2xhc3MqIGtsYXNzID0gV0VCS0lUX01FRElBX0NF
TkNfREVDUllQVF9HRVRfQ0xBU1Moc2VsZik7CiAKICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNlbGYs
ICJkZWNyeXB0aW5nIik7Ci0gICAgaWYgKCFrbGFzcy0+ZGVjcnlwdChzZWxmLCBpdkJ1ZmZlciwg
a2V5SURCdWZmZXIsIGJ1ZmZlciwgc3ViU2FtcGxlQ291bnQsIHN1YlNhbXBsZXNCdWZmZXIpKSB7
CisKKyAgICAvLyBUZW1wb3JhcmlseSByZWxlYXNlIHRoZSBsb2NrIHdoaWxlIHdlIGRvbid0IG5l
ZWQgdG8gYWNjZXNzIHByaXYuIFRoZSBsb3dlciBsZXZlbCBBUEkgaXMgdXNlZAorICAgIC8vIGlu
IG9yZGVyIHRvIGF2b2lkIGNyZWF0aW5nIHNldmVyYWwgc2NvcGVzIHdpdGggZGlmZmVyZW50IExv
Y2tIb2xkZXIgaW5zdGFuY2VzIGluIGVhY2ggb25lLgorICAgIHByaXYtPm11dGV4LnVubG9jaygp
OworCisgICAgYm9vbCBkaWREZWNyeXB0aW9uU3VjY2VlZCA9IGtsYXNzLT5kZWNyeXB0KHNlbGYs
IGl2QnVmZmVyLCBrZXlJREJ1ZmZlciwgYnVmZmVyLCBzdWJTYW1wbGVDb3VudCwgc3ViU2FtcGxl
c0J1ZmZlcik7CisKKyAgICAvLyBBY2Nlc3NpbmcgcHJpdiBtZW1iZXJzIGFnYWluLgorICAgIHBy
aXYtPm11dGV4LmxvY2soKTsKKworICAgIGlmICghZGlkRGVjcnlwdGlvblN1Y2NlZWQpIHsKKyAg
ICAgICAgaWYgKHByaXYtPmlzRmx1c2hpbmcpIHsKKyAgICAgICAgICAgIEdTVF9ERUJVR19PQkpF
Q1Qoc2VsZiwgIkRlY3J5cHRpb24gYWJvcnRlZCBiZWNhdXNlIG9mIGZsdXNoIik7CisgICAgICAg
ICAgICByZXR1cm4gR1NUX0ZMT1dfRkxVU0hJTkc7CisgICAgICAgIH0KICAgICAgICAgR1NUX0VS
Uk9SX09CSkVDVChzZWxmLCAiRGVjcnlwdGlvbiBmYWlsZWQiKTsKICAgICAgICAgcmV0dXJuIEdT
VF9GTE9XX05PVF9TVVBQT1JURUQ7CiAgICAgfQpAQCAtMjU2LDcgKzMwNCw3IEBAIHN0YXRpYyBH
c3RGbG93UmV0dXJuIHRyYW5zZm9ybUluUGxhY2UoR3N0QmFzZVRyYW5zZm9ybSogYmFzZSwgR3N0
QnVmZmVyKiBidWZmZXIpCiBzdGF0aWMgYm9vbCBpc0NETVByb3h5QXZhaWxhYmxlKFdlYktpdE1l
ZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYpCiB7CiAgICAgV2ViS2l0TWVkaWFDb21t
b25FbmNyeXB0aW9uRGVjcnlwdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNS
WVBUX0dFVF9QUklWQVRFKHNlbGYpOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socHJpdi0+
Y2RtQXR0YWNobWVudE11dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHByaXYtPm11
dGV4KTsKICAgICByZXR1cm4gcHJpdi0+Y2RtUHJveHk7CiB9CiAKQEAgLTI4OSwxMSArMzM3LDEx
IEBAIHN0YXRpYyB2b2lkIGF0dGFjaENETVByb3h5KFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlv
bkRlY3J5cHQqIHNlbGYsIENETVByb3h5KiBwCiAgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0
aW9uRGVjcnlwdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9Q
UklWQVRFKHNlbGYpOwogICAgIFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRDbGFz
cyoga2xhc3MgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9DTEFTUyhzZWxmKTsKIAot
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socHJpdi0+Y2RtQXR0YWNobWVudE11dGV4KTsKKyAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHByaXYtPm11dGV4KTsKICAgICBHU1RfRVJST1JfT0JK
RUNUKHNlbGYsICJBdHRhY2hpbmcgQ0RNUHJveHkgJXAiLCBwcm94eSk7CiAgICAgcHJpdi0+Y2Rt
UHJveHkgPSBwcm94eTsKICAgICBrbGFzcy0+Y2RtUHJveHlBdHRhY2hlZChzZWxmLCBwcml2LT5j
ZG1Qcm94eSk7Ci0gICAgcHJpdi0+Y2RtQXR0YWNobWVudENvbmRpdGlvbi5ub3RpZnlPbmUoKTsK
KyAgICBwcml2LT5jb25kaXRpb24ubm90aWZ5T25lKCk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiBp
bnN0YWxsQ0RNUHJveHlJZk5vdEF2YWlsYWJsZShXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25E
ZWNyeXB0KiBzZWxmKQpAQCAtMzE4LDcgKzM2Niw3IEBAIHN0YXRpYyBnYm9vbGVhbiBpbnN0YWxs
Q0RNUHJveHlJZk5vdEF2YWlsYWJsZShXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0
CiBzdGF0aWMgZ2Jvb2xlYW4gc2lua0V2ZW50SGFuZGxlcihHc3RCYXNlVHJhbnNmb3JtKiB0cmFu
cywgR3N0RXZlbnQqIGV2ZW50KQogewogICAgIFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRl
Y3J5cHQqIHNlbGYgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUKHRyYW5zKTsKLSAgICBnYm9v
bGVhbiByZXN1bHQgPSBGQUxTRTsKKyAgICBXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNy
eXB0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9NRURJQV9DRU5DX0RFQ1JZUFRfR0VUX1BSSVZBVEUo
c2VsZik7CiAKICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MTM1NQogICAgIC8vIFdlIHNob3VsZCBiZSBoYW5kbGluZyBwcm90ZWN0aW9uIGV2
ZW50cyBpbiB0aGlzIGNsYXNzIGluCkBAIC0zMzAsMTYgKzM3OCw0OCBAQCBzdGF0aWMgZ2Jvb2xl
YW4gc2lua0V2ZW50SGFuZGxlcihHc3RCYXNlVHJhbnNmb3JtKiB0cmFucywgR3N0RXZlbnQqIGV2
ZW50KQogICAgIGNhc2UgR1NUX0VWRU5UX0NVU1RPTV9ET1dOU1RSRUFNX09PQjogewogICAgICAg
ICBBU1NFUlQoZ3N0X2V2ZW50X2hhc19uYW1lKGV2ZW50LCAiYXR0ZW1wdC10by1kZWNyeXB0Iikp
OwogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJIYW5kbGluZyBhdHRlbXB0LXRvLWRl
Y3J5cHQiKTsKLSAgICAgICAgcmVzdWx0ID0gaW5zdGFsbENETVByb3h5SWZOb3RBdmFpbGFibGUo
c2VsZik7CisgICAgICAgIGdib29sZWFuIHJlc3VsdCA9IGluc3RhbGxDRE1Qcm94eUlmTm90QXZh
aWxhYmxlKHNlbGYpOwogICAgICAgICBnc3RfZXZlbnRfdW5yZWYoZXZlbnQpOwotICAgICAgICBi
cmVhazsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisgICAgY2FzZSBHU1RfRVZFTlRf
RkxVU0hfU1RBUlQ6CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc2VsZiwgIkZsdXNoLXN0YXJ0
Iik7CisgICAgICAgIHsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHByaXYtPm11dGV4
KTsKKyAgICAgICAgICAgIGJvb2wgaXNDZG1Qcm94eUF0dGFjaGVkID0gcHJpdi0+Y2RtUHJveHk7
CisgICAgICAgICAgICBwcml2LT5pc0ZsdXNoaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChp
c0NkbVByb3h5QXR0YWNoZWQpIHsKKyAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHko
KTsKKyAgICAgICAgICAgICAgICBwcml2LT5jZG1Qcm94eS0+YWJvcnRXYWl0aW5nRm9yS2V5KCk7
CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBwcml2LT5jb25kaXRpb24ubm90
aWZ5T25lKCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfRVZFTlRf
RkxVU0hfU1RPUDoKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzZWxmLCAiRmx1c2gtc3RvcCIp
OworICAgICAgICB7CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihwcml2LT5tdXRleCk7
CisgICAgICAgICAgICBwcml2LT5pc0ZsdXNoaW5nID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmVzdWx0ID0gR1NUX0JBU0VfVFJBTlNG
T1JNX0NMQVNTKHBhcmVudF9jbGFzcyktPnNpbmtfZXZlbnQodHJhbnMsIGV2ZW50KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gR1NUX0JB
U0VfVFJBTlNGT1JNX0NMQVNTKHBhcmVudF9jbGFzcyktPnNpbmtfZXZlbnQodHJhbnMsIGV2ZW50
KTsKK30KKworYm9vbCB3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0SXNGbHVzaGlu
ZyhXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiBzZWxmKQoreworICAgIFdlYktp
dE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRQcml2YXRlKiBwcml2ID0gV0VCS0lUX01FRElB
X0NFTkNfREVDUllQVF9HRVRfUFJJVkFURShzZWxmKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihw
cml2LT5tdXRleCk7CisgICAgcmV0dXJuIHByaXYtPmlzRmx1c2hpbmc7Cit9CisKK1dlYWtQdHI8
V2ViQ29yZTo6Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50PiB3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5
cHRpb25EZWNyeXB0R2V0Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50KFdlYktpdE1lZGlhQ29tbW9u
RW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYpCit7CisgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0
aW9uRGVjcnlwdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9Q
UklWQVRFKHNlbGYpOworICAgIHJldHVybiBtYWtlV2Vha1B0cigqcHJpdi0+Y2RtUHJveHlEZWNy
eXB0aW9uQ2xpZW50SW1wbGVtZW50YXRpb24pOwogfQogCiBzdGF0aWMgR3N0U3RhdGVDaGFuZ2VS
ZXR1cm4gY2hhbmdlU3RhdGUoR3N0RWxlbWVudCogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJh
bnNpdGlvbikKQEAgLTM1MCw3ICs0MzAsNyBAQCBzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4g
Y2hhbmdlU3RhdGUoR3N0RWxlbWVudCogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbgogICAg
IHN3aXRjaCAodHJhbnNpdGlvbikgewogICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURf
VE9fUkVBRFk6CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc2VsZiwgIlBBVVNFRC0+UkVBRFki
KTsKLSAgICAgICAgcHJpdi0+Y2RtQXR0YWNobWVudENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAg
ICAgICAgcHJpdi0+Y29uZGl0aW9uLm5vdGlmeU9uZSgpOwogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTM3MSw3ICs0NTEsNyBAQCBzdGF0aWMgdm9pZCBz
ZXRDb250ZXh0KEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdENvbnRleHQqIGNvbnRleHQpCiAKICAg
ICBpZiAoZ3N0X2NvbnRleHRfaGFzX2NvbnRleHRfdHlwZShjb250ZXh0LCAiZHJtLWNkbS1wcm94
eSIpKSB7CiAgICAgICAgIGNvbnN0IEdWYWx1ZSogdmFsdWUgPSBnc3Rfc3RydWN0dXJlX2dldF92
YWx1ZShnc3RfY29udGV4dF9nZXRfc3RydWN0dXJlKGNvbnRleHQpLCAiY2RtLXByb3h5Iik7Ci0g
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHByaXYtPmNkbUF0dGFjaG1lbnRNdXRleCk7CisgICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKHByaXYtPm11dGV4KTsKICAgICAgICAgcHJpdi0+Y2RtUHJv
eHkgPSB2YWx1ZSA/IHJlaW50ZXJwcmV0X2Nhc3Q8Q0RNUHJveHkqPihnX3ZhbHVlX2dldF9wb2lu
dGVyKHZhbHVlKSkgOiBudWxscHRyOwogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJy
ZWNlaXZlZCBuZXcgQ0RNSW5zdGFuY2UgJXAiLCBwcml2LT5jZG1Qcm94eS5nZXQoKSk7CiAgICAg
ICAgIGtsYXNzLT5jZG1Qcm94eUF0dGFjaGVkKHNlbGYsIHByaXYtPmNkbVByb3h5KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2Vi
S2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVj
cnlwdG9yR1N0cmVhbWVyLmgKaW5kZXggYTA0NjVmZjUzZDAwMDA3YzIzZjdhOTA1OGFjOWIzNDdm
NmI4ZDVkZC4uOTU1NDYwOWY3NDRhYWQ3NzUxNWEwZmVlMjYzMjk5OWQ0MjFmMzEwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJL
aXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9u
RGVjcnlwdG9yR1N0cmVhbWVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxnc3QvYmFz
ZS9nc3RiYXNldHJhbnNmb3JtLmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBHX0JFR0lOX0RFQ0xTCiAK
QEAgLTQ1LDYgKzQ2LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdE1lZGlhQ29tbW9uRW5jcnlw
dGlvbkRlY3J5cHRQcml2YXRlIFdlYktpdE1lZGlhQ29tbW9uRW5jcnkKIAogR1R5cGUgd2Via2l0
X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZ2V0X3R5cGUodm9pZCk7CiAKK2Jvb2wg
d2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdElzRmx1c2hpbmcoV2ViS2l0TWVkaWFD
b21tb25FbmNyeXB0aW9uRGVjcnlwdCopOworV2Vha1B0cjxXZWJDb3JlOjpDRE1Qcm94eURlY3J5
cHRpb25DbGllbnQ+IHdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRHZXRDRE1Qcm94
eURlY3J5cHRpb25DbGllbnQoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCopOwor
CiBzdHJ1Y3QgX1dlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQgewogICAgIEdzdEJh
c2VUcmFuc2Zvcm0gcGFyZW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdFRodW5kZXJEZWNyeXB0b3JHU3RyZWFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJL
aXRUaHVuZGVyRGVjcnlwdG9yR1N0cmVhbWVyLmNwcAppbmRleCBhMjI2NzBkOTEwNWQwZjQ2NWY5
M2E2YThmNmFjNjVkY2UwMjRkNWRiLi41ODNiZDNiYmM4MGQ3MmEzNmMxNTU0OTI1YmNjOTBiODQw
NzhmOTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL1dlYktpdFRodW5kZXJEZWNyeXB0b3JHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0VGh1bmRlckRl
Y3J5cHRvckdTdHJlYW1lci5jcHAKQEAgLTE1NiwxNCArMTU2LDE2IEBAIHN0YXRpYyBib29sIGRl
Y3J5cHQoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogZGVjcnlwdG9yLCBHc3RC
dWZmZXIqIGl2CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBDRE1Qcm94eVRo
dW5kZXI6OkRlY3J5cHRpb25Db250ZXh0IGNvbnRleHQ7CisgICAgQ0RNUHJveHlUaHVuZGVyOjpE
ZWNyeXB0aW9uQ29udGV4dCBjb250ZXh0ID0geyB9OwogICAgIGNvbnRleHQua2V5SURCdWZmZXIg
PSBrZXlJREJ1ZmZlcjsKICAgICBjb250ZXh0Lml2QnVmZmVyID0gaXZCdWZmZXI7CiAgICAgY29u
dGV4dC5kYXRhQnVmZmVyID0gYnVmZmVyOwogICAgIGNvbnRleHQubnVtU3Vic2FtcGxlcyA9IHN1
YnNhbXBsZUNvdW50OwogICAgIGNvbnRleHQuc3Vic2FtcGxlc0J1ZmZlciA9IHN1YnNhbXBsZUNv
dW50ID8gc3Vic2FtcGxlc0J1ZmZlciA6IG51bGxwdHI7CisgICAgY29udGV4dC5jZG1Qcm94eURl
Y3J5cHRpb25DbGllbnQgPSB3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0R2V0Q0RN
UHJveHlEZWNyeXB0aW9uQ2xpZW50KHNlbGYpOworICAgIGJvb2wgcmVzdWx0ID0gcHJpdi0+Y2Rt
UHJveHktPmRlY3J5cHQoY29udGV4dCk7CiAKLSAgICByZXR1cm4gcHJpdi0+Y2RtUHJveHktPmRl
Y3J5cHQoY29udGV4dCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShFTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShUSFVOREVSKSAmJiBVU0UoR1NUUkVBTUVSKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>