<?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>129164</bug_id>
          
          <creation_ts>2014-02-21 12:56:29 -0800</creation_ts>
          <short_desc>Make a generic CDMPrivateMediaPlayer and move its CDMSession into platform/.</short_desc>
          <delta_ts>2014-02-21 16:09:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>983304</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-02-21 12:56:29 -0800</bug_when>
    <thetext>Make a generic CDMPrivateMediaPlayer and move its CDMSession into platform/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983310</commentid>
    <comment_count>1</comment_count>
      <attachid>224895</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-02-21 13:10:08 -0800</bug_when>
    <thetext>Created attachment 224895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983311</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-21 13:12:28 -0800</bug_when>
    <thetext>Attachment 224895 did not pass style-queue:


ERROR: Source/WebCore/Modules/encryptedmedia/CDMPrivateMediaPlayer.h:54:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983314</commentid>
    <comment_count>3</comment_count>
      <attachid>224896</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-02-21 13:17:30 -0800</bug_when>
    <thetext>Created attachment 224896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983316</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-21 13:19:20 -0800</bug_when>
    <thetext>Attachment 224896 did not pass style-queue:


ERROR: Source/WebCore/Modules/encryptedmedia/CDMPrivateMediaPlayer.h:54:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983317</commentid>
    <comment_count>5</comment_count>
      <attachid>224897</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-02-21 13:20:26 -0800</bug_when>
    <thetext>Created attachment 224897
Patch

More PassRefPtr -&gt; std::unique_ptr changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983320</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-21 13:22:19 -0800</bug_when>
    <thetext>Attachment 224897 did not pass style-queue:


ERROR: Source/WebCore/Modules/encryptedmedia/CDMPrivateMediaPlayer.h:54:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983325</commentid>
    <comment_count>7</comment_count>
      <attachid>224897</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-02-21 13:43:51 -0800</bug_when>
    <thetext>Comment on attachment 224897
Patch

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

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

Nit: you might as well update this.

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

Ditto.

&gt; Source/WebCore/Modules/encryptedmedia/CDMPrivateMediaPlayer.h:41
&gt; +    // CDMFactory support:

Nit: this isn&apos;t terribly informative.

&gt; Source/WebCore/Modules/encryptedmedia/CDMPrivateMediaPlayer.h:42
&gt; +    static PassOwnPtr&lt;CDMPrivateInterface&gt; create(CDM* cdm) { return adoptPtr(new CDMPrivateMediaPlayer(cdm)); }

Can be converted to std::unique_ptr as well?

&gt; Source/WebCore/platform/graphics/CDMSession.h:2
&gt; + * Copyright (C) 2013]4 Apple Inc. All rights reserved.

2013]4 - when was/is :-) ?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:49
&gt; +
&gt; +

Nit: extra blank line.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:66
&gt; +        return 0;

nullptr.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:84
&gt; +        return 0;

Ditto.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:89
&gt; +    errorCode = MediaPlayer::NoError;
&gt; +    systemCode = 0;
&gt; +    destinationURL = String();

These don&apos;t seem to be used.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:106
&gt; +    errorCode = MediaPlayer::NoError;
&gt; +    systemCode = 0;
&gt; +    nextMessage = nullptr;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983378</commentid>
    <comment_count>8</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-02-21 14:52:08 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 224897 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=224897&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/encryptedmedia/CDMPrivateMediaPlayer.cpp:2
&gt; &gt; + * Copyright (C) 2012 Apple Inc. All rights reserved.
&gt; 
&gt; Nit: you might as well update this.

Ok.

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

Ok.

&gt; &gt; Source/WebCore/Modules/encryptedmedia/CDMPrivateMediaPlayer.h:41
&gt; &gt; +    // CDMFactory support:
&gt; 
&gt; Nit: this isn&apos;t terribly informative.

Removed.

&gt; &gt; Source/WebCore/Modules/encryptedmedia/CDMPrivateMediaPlayer.h:42
&gt; &gt; +    static PassOwnPtr&lt;CDMPrivateInterface&gt; create(CDM* cdm) { return adoptPtr(new CDMPrivateMediaPlayer(cdm)); }
&gt; 
&gt; Can be converted to std::unique_ptr as well?

Yep!

&gt; &gt; Source/WebCore/platform/graphics/CDMSession.h:2
&gt; &gt; + * Copyright (C) 2013]4 Apple Inc. All rights reserved.
&gt; 
&gt; 2013]4 - when was/is :-) ?

The future!

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:49
&gt; &gt; +
&gt; &gt; +
&gt; 
&gt; Nit: extra blank line.

Deleted.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:66
&gt; &gt; +        return 0;
&gt; 
&gt; nullptr.

Changed.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:84
&gt; &gt; +        return 0;
&gt; 
&gt; Ditto.

Ditto.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:89
&gt; &gt; +    errorCode = MediaPlayer::NoError;
&gt; &gt; +    systemCode = 0;
&gt; &gt; +    destinationURL = String();
&gt; 
&gt; These don&apos;t seem to be used.

These are out parameters.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:106
&gt; &gt; +    errorCode = MediaPlayer::NoError;
&gt; &gt; +    systemCode = 0;
&gt; &gt; +    nextMessage = nullptr;
&gt; 
&gt; Ditto.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983431</commentid>
    <comment_count>9</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-02-21 16:09:30 -0800</bug_when>
    <thetext>Committed r164514: &lt;http://trac.webkit.org/changeset/164514&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224895</attachid>
            <date>2014-02-21 13:10:08 -0800</date>
            <delta_ts>2014-02-21 13:17:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129164-20140221131008.patch</filename>
            <type>text/plain</type>
            <size>48864</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0MzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc4ZTVhYWQ3MjE0ZmNm
Y2IyMmNiNDg3NGI3MWYzZGFmYWMwYmUzNS4uNmQyNDNjYTg5ZmU2MmQyY2I5OTY0ZWVhODliMGRi
YTFhYjhmMGU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ5IEBACiAyMDE0LTAyLTIxICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIE1ha2UgYSBnZW5lcmljIENE
TVByaXZhdGVNZWRpYVBsYXllciBhbmQgbW92ZSBpdHMgQ0RNU2Vzc2lvbiBpbnRvIHBsYXRmb3Jt
Ly4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTE2
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
dGhlIHNlc3Npb24gY3JlYXRlZCBieSBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uIGludG8gcGxhdGZv
cm0sIGFuZCByZW5hbWUKKyAgICAgICAgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbiB0byBDRE1Qcml2
YXRlTWVkaWFQbGF5ZXIuIEZ1dHVyZSBtZWRpYSBlbmdpbmVzIHdobyB3YW50CisgICAgICAgIHRv
IHN1cHBvcnQgYSBrZXlzeXN0ZW0gZnJvbSB3aXRoaW4gdGhlIG1lZGlhIGVuZ2luZSBjYW4gY3Jl
YXRlIHRoZWlyIG93bgorICAgICAgICBDRE1TZXNzaW9uIGFzIHBhcnQgb2YgdGhlIE1lZGlhUGxh
eWVyUHJpdmF0ZSBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETVByaXZhdGVBVkZvdW5kYXRpb24ubW06IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlTWVkaWFQbGF5ZXIuY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlQVZGb3VuZGF0aW9u
LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVNZWRpYVBsYXllcjo6c3VwcG9ydHNL
ZXlTeXN0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBw
b3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVN
ZWRpYVBsYXllcjo6c3VwcG9ydHNNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlTWVkaWFQbGF5ZXI6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNUHJpdmF0ZU1lZGlhUGxheWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24uaC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVNZWRpYVBsYXllcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNETVByaXZhdGVNZWRpYVBsYXllcjo6fkNETVByaXZhdGVNZWRpYVBsYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlTWVkaWFQbGF5ZXI6OmNkbSk6CisgICAgICAg
IChXZWJDb3JlOjpDRE1Qcml2YXRlTWVkaWFQbGF5ZXI6OkNETVByaXZhdGVNZWRpYVBsYXllcik6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NETVNlc3Npb24uaDogRXh0cmFjdGVkIGZyb20gQ0RNUHJpdmF0
ZUFWRm91bmRhdGlvbi5oLgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkNsaWVudDo6fkNE
TVNlc3Npb25DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbjo6Q0RNU2Vzc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uOjp+Q0RNU2Vzc2lvbik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXI6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6
OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24uaC4K
KyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjp+Q0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlQVZGb3VuZGF0aW9u
Lm1tLgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OkNETVNl
c3Npb25BVkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZv
dW5kYXRpb25PYmpDOjpnZW5lcmF0ZUtleVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
U2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OnJlbGVhc2VLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjp1cGRhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlU2Vzc2lvbik6CisKKzIw
MTQtMDItMjEgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKICAgICAgICAgQWRk
IGEgc3VwcG9ydHNLZXlTeXN0ZW0gbWVkaWEgZW5naW5lIGZhY3RvcnkgcGFyYW1ldGVyLgogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5MTYxCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0
ZUFWRm91bmRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9D
RE1Qcml2YXRlQVZGb3VuZGF0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZi
MDZiZmQ5ZTliOGIzOWFjOTI0NDk5NzA2NGI2MzMzMTkyZWY3NzMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9DRE1Qcml2YXRlQVZGb3VuZGF0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uX2gK
LSNkZWZpbmUgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbl9oCi0KLSNpbmNsdWRlICJDRE1Qcml2YXRl
LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+Ci0KLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwOTAKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBD
RE07Ci0KLWNsYXNzIENETVByaXZhdGVBVkZvdW5kYXRpb24gOiBwdWJsaWMgQ0RNUHJpdmF0ZUlu
dGVyZmFjZSB7Ci1wdWJsaWM6Ci0gICAgLy8gQ0RNRmFjdG9yeSBzdXBwb3J0OgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPENETVByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShDRE0qIGNkbSkgeyByZXR1
cm4gYWRvcHRQdHIobmV3IENETVByaXZhdGVBVkZvdW5kYXRpb24oY2RtKSk7IH0KLSAgICBzdGF0
aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgYm9v
bCBzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKLQotICAgIHZpcnR1YWwgfkNETVByaXZhdGVBVkZvdW5k
YXRpb24oKSB7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxDRE1TZXNz
aW9uPiBjcmVhdGVTZXNzaW9uKCkgb3ZlcnJpZGU7Ci0KLSAgICBDRE0qIGNkbSgpIGNvbnN0IHsg
cmV0dXJuIG1fY2RtOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBDRE1Qcml2YXRlQVZGb3VuZGF0aW9u
KENETSogY2RtKSA6IG1fY2RtKGNkbSkgeyB9Ci0gICAgQ0RNKiBtX2NkbTsKLX07Ci0KLX0KLQot
I2VuZGlmCi0KLSNlbmRpZiAvLyBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZUFWRm91bmRh
dGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0
ZUFWRm91bmRhdGlvbi5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JmY2I4ZDEx
YzVmYTZkNGJhZWQ3ZDBjN2NiYzk2ZWQzNDMxOWY4Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24ubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNTQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiQ0RNUHJpdmF0
ZUFWRm91bmRhdGlvbi5oIgotCi0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi0KLSNpbXBvcnQgIkNETS5oIgot
I2ltcG9ydCAiRXhjZXB0aW9uQ29kZS5oIgotI2ltcG9ydCAiTWVkaWFQbGF5ZXIuaCIKLSNpbXBv
cnQgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCIKLSNpbXBvcnQgIlNvZnRM
aW5raW5nLmgiCi0jaW1wb3J0ICJVVUlELmgiCi0jaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZGb3Vu
ZGF0aW9uLmg+Ci0jaW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIENETVNlc3Npb25BVkZvdW5kYXRpb24gOiBwdWJsaWMgQ0RNU2Vzc2lv
biB7Ci1wdWJsaWM6Ci0gICAgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbihDRE1Qcml2YXRlQVZGb3Vu
ZGF0aW9uKiBwYXJlbnQpOwotICAgIHZpcnR1YWwgfkNETVNlc3Npb25BVkZvdW5kYXRpb24oKSB7
IH0KLQotICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxVaW50OEFy
cmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJh
eSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJv
ckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCByZWxlYXNlS2V5cygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCB1cGRhdGUoVWlu
dDhBcnJheSosIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0
JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpIG92ZXJyaWRlOwotCi1wcm90
ZWN0ZWQ6Ci0gICAgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbiogbV9wYXJlbnQ7Ci0gICAgU3RyaW5n
IG1fc2Vzc2lvbklkOwotICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVz
dD4gbV9yZXF1ZXN0OwotfTsKLQotU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5k
YXRpb24pCi1TT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0KQotU09GVF9M
SU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QpCi0j
ZGVmaW5lIEFWVVJMQXNzZXQgZ2V0QVZVUkxBc3NldENsYXNzKCkKLSNkZWZpbmUgQVZBc3NldFJl
c291cmNlTG9hZGluZ1JlcXVlc3QgZ2V0QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QoKQot
Ci0KLWJvb2wgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0pCi17Ci0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGtleVN5
c3RlbSwgImNvbS5hcHBsZS5mcHMiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShrZXlTeXN0ZW0sICJj
b20uYXBwbGUuZnBzLjFfMCIpOwotfQotCi1ib29sIENETVByaXZhdGVBVkZvdW5kYXRpb246OnN1
cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAgaWYgKCFzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0
ZW0pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIFtBVlVSTEFzc2V0IGlzUGxh
eWFibGVFeHRlbmRlZE1JTUVUeXBlOm1pbWVUeXBlXTsKLX0KLQotYm9vbCBDRE1Qcml2YXRlQVZG
b3VuZGF0aW9uOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0g
ICAgcmV0dXJuIFtBVlVSTEFzc2V0IGlzUGxheWFibGVFeHRlbmRlZE1JTUVUeXBlOm1pbWVUeXBl
XTsKLX0KLQotUGFzc093blB0cjxDRE1TZXNzaW9uPiBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uOjpj
cmVhdGVTZXNzaW9uKCkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENETVNlc3Npb25BVkZv
dW5kYXRpb24odGhpcykpOwotfQotCi1DRE1TZXNzaW9uQVZGb3VuZGF0aW9uOjpDRE1TZXNzaW9u
QVZGb3VuZGF0aW9uKENETVByaXZhdGVBVkZvdW5kYXRpb24qIHBhcmVudCkKLSAgICA6IG1fcGFy
ZW50KHBhcmVudCkKLSAgICAsIG1fc2Vzc2lvbklkKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmco
KSkKLXsKLX0KLQotc3RhdGljIHVuc2lnbmVkIHNob3J0IE1lZGlhS2V5RXhjZXB0aW9uVG9FcnJv
ckNvZGUoTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIGVycm9yKQotewotICAgIHN3aXRj
aCAoZXJyb3IpIHsKLSAgICBjYXNlIE1lZGlhUGxheWVyOjpOb0Vycm9yOgotICAgICAgICByZXR1
cm4gMDsKLSAgICBjYXNlIE1lZGlhUGxheWVyOjpJbnZhbGlkUGxheWVyU3RhdGU6Ci0gICAgICAg
IHJldHVybiBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICBjYXNlIE1lZGlhUGxheWVyOjpLZXlTeXN0
ZW1Ob3RTdXBwb3J0ZWQ6Ci0gICAgICAgIHJldHVybiBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICBk
ZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotfQotCi1QYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVkZvdW5kYXRp
b246OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5
KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9y
Q29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkKLXsKLSAgICBVTlVTRURfUEFSQU0obWlt
ZVR5cGUpOwotCi0gICAgTWVkaWFQbGF5ZXIqIG1lZGlhUGxheWVyID0gbV9wYXJlbnQtPmNkbSgp
LT5tZWRpYVBsYXllcigpOwotICAgIGlmICghbWVkaWFQbGF5ZXIpIHsKLSAgICAgICAgZXJyb3JD
b2RlID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
LQotICAgIG1fc2Vzc2lvbklkID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwotCi0gICAg
TWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIGVycm9yOwotICAgIFJlZlB0cjxVaW50OEFy
cmF5PiByZXF1ZXN0ID0gbWVkaWFQbGF5ZXItPmdlbmVyYXRlS2V5UmVxdWVzdChtX3Nlc3Npb25J
ZCwgbWltZVR5cGUsIGluaXREYXRhLCBkZXN0aW5hdGlvblVSTCwgZXJyb3IsIHN5c3RlbUNvZGUp
OwotICAgIGVycm9yQ29kZSA9IE1lZGlhS2V5RXhjZXB0aW9uVG9FcnJvckNvZGUoZXJyb3IpOwot
ICAgIHJldHVybiByZXF1ZXN0OwotfQotCi12b2lkIENETVNlc3Npb25BVkZvdW5kYXRpb246OnJl
bGVhc2VLZXlzKCkKLXsKLSAgICBNZWRpYVBsYXllciogbWVkaWFQbGF5ZXIgPSBtX3BhcmVudC0+
Y2RtKCktPm1lZGlhUGxheWVyKCk7Ci0gICAgaWYgKCFtZWRpYVBsYXllcikKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbWVkaWFQbGF5ZXItPnJlbGVhc2VLZXlzKG1fc2Vzc2lvbklkKTsKLX0KLQot
Ym9vbCBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQ
dHI8VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1
bnNpZ25lZCBsb25nJiBzeXN0ZW1Db2RlKQotewotICAgIGlmICgha2V5KQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBNZWRpYVBsYXllciogbWVkaWFQbGF5ZXIgPSBtX3BhcmVudC0+Y2Rt
KCktPm1lZGlhUGxheWVyKCk7Ci0gICAgaWYgKCFtZWRpYVBsYXllcikgewotICAgICAgICBlcnJv
ckNvZGUgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
fQotCi0gICAgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIGVycm9yOwotICAgIGJvb2wg
c3VjY2VlZGVkID0gbWVkaWFQbGF5ZXItPnVwZGF0ZShtX3Nlc3Npb25JZCwga2V5LCBuZXh0TWVz
c2FnZSwgZXJyb3IsIHN5c3RlbUNvZGUpOwotICAgIGVycm9yQ29kZSA9IE1lZGlhS2V5RXhjZXB0
aW9uVG9FcnJvckNvZGUoZXJyb3IpOwotICAgIHJldHVybiBzdWNjZWVkZWQ7Ci19Ci0KLX0KLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETVByaXZhdGVNZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETVByaXZhdGVNZWRpYVBsYXllci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2UyNGMzOGEx
NTNlMmQxOWFlMTBkNTZmMDgzOGYyMGIwMDYwOTI0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZU1lZGlhUGxheWVyLmNw
cApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuaCIKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUFfVjIpCisKKyNpbXBvcnQgIkNETS5oIgorI2ltcG9ydCAiQ0RNU2Vzc2lvbi5oIgorI2ltcG9y
dCAiQ29udGVudFR5cGUuaCIKKyNpbXBvcnQgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbXBvcnQgIk1l
ZGlhUGxheWVyLmgiCisjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2Jvb2wgQ0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbShjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSkKK3sKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OnN1cHBvcnRz
S2V5U3lzdGVtKGtleVN5c3RlbSwgZW1wdHlTdHJpbmcoKSk7Cit9CisKK2Jvb2wgQ0RNUHJpdmF0
ZU1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIHJldHVybiBNZWRpYVBs
YXllcjo6c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBtaW1lVHlwZSk7Cit9CisKK2Jvb2wg
Q0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCit7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbShtX2Nk
bS0+a2V5U3lzdGVtKCksIG1pbWVUeXBlKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPENETVNlc3Np
b24+IENETVByaXZhdGVNZWRpYVBsYXllcjo6Y3JlYXRlU2Vzc2lvbigpCit7CisgICAgTWVkaWFQ
bGF5ZXIqIG1lZGlhUGxheWVyID0gbV9jZG0tPm1lZGlhUGxheWVyKCk7CisgICAgaWYgKCFtZWRp
YVBsYXllcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gbWVkaWFQbGF5
ZXItPmNyZWF0ZVNlc3Npb24obV9jZG0tPmtleVN5c3RlbSgpKTsKK30KKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJp
dmF0ZU1lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETVByaXZhdGVNZWRpYVBsYXllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxMDk2ODkxNGM5ZmM5MTI2NDQz
MjRkYTAzYmE2N2E1YzFjYjkwZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVNZWRpYVBsYXllci5oCkBAIC0wLDAgKzEs
NjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENETVByaXZhdGVNZWRpYVBsYXllcl9oCisjZGVm
aW5lIENETVByaXZhdGVNZWRpYVBsYXllcl9oCisKKyNpbmNsdWRlICJDRE1Qcml2YXRlLmgiCisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisK
KyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIENETTsKKworY2xhc3MgQ0RNUHJpdmF0ZU1lZGlhUGxheWVyIDogcHVibGljIENETVBy
aXZhdGVJbnRlcmZhY2UgeworcHVibGljOgorICAgIC8vIENETUZhY3Rvcnkgc3VwcG9ydDoKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxDRE1Qcml2YXRlSW50ZXJmYWNlPiBjcmVhdGUoQ0RNKiBjZG0p
IHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDRE1Qcml2YXRlTWVkaWFQbGF5ZXIoY2RtKSk7IH0KKyAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0
aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKworICAgIHZpcnR1YWwgfkNETVByaXZhdGVN
ZWRpYVBsYXllcigpIHsgfQorCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9w
dHI8Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIG92ZXJyaWRlOworCisgICAgQ0RNKiBjZG0o
KSBjb25zdCB7IHJldHVybiBtX2NkbTsgfQorCitwcm90ZWN0ZWQ6CisgICAgQ0RNUHJpdmF0ZU1l
ZGlhUGxheWVyKENETSogY2RtKSA6IG1fY2RtKGNkbSkgeyB9CisgICAgQ0RNKiBtX2NkbTsKK307
CisKK30KKworI2VuZGlmCisKKyNlbmRpZiAvLyBDRE1QcmlhdmF0ZU1lZGlhUGxheWVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBmNmNlNTU2ZWQyNDVhNTQyZTBkYjBhMDY5ZGFkZDBhMjAyNDEzZmZmLi4wNWI0NTZhNzMzNGY5
NDE4MWM3ZjY0MWQwNzIwZDVhMDgzYTI3NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NDU2LDcgKzU0NTYsNiBAQAogCQlD
RDNFMjUxQzE4MDQ2QjA2MDBFMjdGNTYgLyogR3JpZENvb3JkaW5hdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTFCMTgwNDZCMDYwMEUyN0Y1
NiAvKiBHcmlkQ29vcmRpbmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUNEM0UyNTIzMTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxh
dGVBcmVhc1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEM0UyNTIxMTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1Zh
bHVlLmNwcCAqLzsgfTsKIAkJQ0QzRTI1MjQxODA0NkJDRDAwRTI3RjU2IC8qIENTU0dyaWRUZW1w
bGF0ZUFyZWFzVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEM0UyNTIyMTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1Zh
bHVlLmggKi87IH07Ci0JCUNENDdCM0ZDMTZDQzM0RjgwMEEyMUVDOCAvKiBDRE1Qcml2YXRlQVZG
b3VuZGF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0Q0N0IzRkExNkNDMzRGODAwQTIxRUM4IC8qIENETVByaXZhdGVBVkZvdW5kYXRpb24ubW0g
Ki87IH07CiAJCUNENEFDNTJBMTQ5NkFFOUEwMDg3QzRFRiAvKiBDb21wb3NpdGUud2F2IGluIENv
cHkgQXVkaW8gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
NEFDNTI4MTQ5NkFFMkYwMDg3QzRFRiAvKiBDb21wb3NpdGUud2F2ICovOyB9OwogCQlDRDUzOTNE
MzE3NUUwMTg2MDBDMDcxMjMgLyogSlNNZW1vcnlJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTM5M0QxMTc1RTAxODYwMEMwNzEyMyAvKiBK
U01lbW9yeUluZm8uY3BwICovOyB9OwogCQlDRDUzOTNENDE3NUUwMTg2MDBDMDcxMjMgLyogSlNN
ZW1vcnlJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDUzOTNEMjE3NUUwMTg2MDBDMDcxMjMgLyogSlNNZW1vcnlJbmZvLmggKi87IH07CkBAIC01
NTI5LDEwICs1NTI4LDEzIEBACiAJCUNEQzhCNUFCMTgwNDdGRjEwMDE2RTY4NSAvKiBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RDOEI1QTkxODA0N0ZGMTAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLmggKi87IH07CiAJCUNEQzhCNUFEMTgwNEFFNUQwMDE2RTY4NSAvKiBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREM4QjVBQzE4MDRBRTVEMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudC5oICovOyB9OwogCQlDRENBODI5NjE2NzkxMDBGMDA4NzU3MTQgLyogVGV4dFRyYWNr
UmVwcmVzZW50YXRpb25JT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRENBODI5NDE2NzkxMDBGMDA4NzU3MTQgLyogVGV4dFRyYWNrUmVwcmVzZW50
YXRpb25JT1MubW0gKi87IH07CisJCUNEQ0E5OEVCMThCMkM4RUIwMEMxMkZGOSAvKiBDRE1Qcml2
YXRlTWVkaWFQbGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RDQTk4RUExOEIyQzhFQjAwQzEyRkY5IC8qIENETVByaXZhdGVNZWRpYVBsYXll
ci5jcHAgKi87IH07CiAJCUNERDUyNUQ3MTQ1QjZERDAwMDhEMjA0RCAvKiBKU0hUTUxNZWRpYUVs
ZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RGNjVDQ0MxNDVCNkFGRTAwQzRDN0FBIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3Rv
bS5jcHAgKi87IH07CiAJCUNERDcwODk2MTgzNTlGNkYwMDJCM0RDNiAvKiBTYW1wbGVNYXAuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RENzA4OTQx
ODM1OUY2RTAwMkIzREM2IC8qIFNhbXBsZU1hcC5jcHAgKi87IH07CiAJCUNERDcwODk3MTgzNTlG
NkYwMDJCM0RDNiAvKiBTYW1wbGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENERDcwODk1MTgzNTlGNkYwMDJCM0RDNiAvKiBTYW1wbGVNYXAuaCAq
LzsgfTsKIAkJQ0REQzFFN0ExOEE5NTJGMzAwMjdBOUQ0IC8qIE1lZGlhU291cmNlUHJpdmF0ZUNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RE
QzFFNzkxOEE5NTJGMzAwMjdBOUQ0IC8qIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oICovOyB9
OworCQlDRERENTcxNTE4QjU3QTgyMDBBOTRGQ0IgLyogQ0RNU2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RERTAyRTkxOEIzREZDNzAwQ0Y3
RkYxIC8qIENETVNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlDRERFMDJFRDE4QjNFRDZEMDBDRjdGRjEgLyogQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRERFMDJFQjE4QjNFRDZEMDBDRjdGRjEgLyogQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9i
akMubW0gKi87IH07CiAJCUNERTNBODU0MTdGNUZDRTYwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJp
dmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RFM0E4NTIxN0Y1RkNFNjAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGLmggKi87IH07
CiAJCUNERTNBODU3MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREUzQTg1
NTE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tICovOyB9Owog
CQlDREUzQTg1ODE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREUzQTg1NjE3
RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmggKi87IH07CkBAIC0x
MjY3OCw4ICsxMjY4MCw2IEBACiAJCUNEM0UyNTFCMTgwNDZCMDYwMEUyN0Y1NiAvKiBHcmlkQ29v
cmRpbmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHcmlkQ29vcmRpbmF0
ZS5oOyBwYXRoID0gc3R5bGUvR3JpZENvb3JkaW5hdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0QzRTI1MjExODA0NkJDRDAwRTI3RjU2IC8qIENTU0dyaWRUZW1wbGF0ZUFyZWFz
VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTR3JpZFRl
bXBsYXRlQXJlYXNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0Uy
NTIyMTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0Q0N0IzRjkxNkNDMzRGODAwQTIxRUM4IC8q
IENETVByaXZhdGVBVkZvdW5kYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDRDQ3QjNGQTE2Q0MzNEY4MDBBMjFFQzggLyogQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENETVByaXZhdGVBVkZvdW5k
YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENEFDNTI4MTQ5NkFFMkYw
MDg3QzRFRiAvKiBDb21wb3NpdGUud2F2ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gYXVkaW8ud2F2OyBuYW1lID0gQ29tcG9zaXRlLndhdjsgcGF0aCA9
IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNlcy9Db21wb3NpdGUud2F2OyBzb3VyY2VUcmVlID0gU09V
UkNFX1JPT1Q7IH07CiAJCUNENEUwQUZBMTFGN0JDMjcwMDlEMzgxMSAvKiBmdWxsc2NyZWVuLmNz
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlbi5jc3M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNENTM5M0NCMTc1RENDRTYwMEMwNzEyMyAvKiBNZW1vcnlJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeUluZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzg3LDExICsxMjc4NywxNiBAQAogCQlDREM4QjVB
OTE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDsg
cGF0aCA9IG9iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0RDOEI1QUMxODA0QUU1RDAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlQnVm
ZmVyUHJpdmF0ZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRENBODI5
NDE2NzkxMDBGMDA4NzU3MTQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JT1MubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDQTk4RTkxOEIyQzhEMDAw
QzEyRkY5IC8qIENETVByaXZhdGVNZWRpYVBsYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RDQTk4RUExOEIyQzhFQjAwQzEyRkY5IC8qIENETVByaXZhdGVNZWRpYVBsYXll
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDRE1Qcml2YXRlTWVk
aWFQbGF5ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRENFNUNEMDE0NjMz
QkM5MDBENDdDQ0EgLyogRXZlbnRUYXJnZXRGYWN0b3J5LmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IEV2ZW50VGFyZ2V0RmFjdG9yeS5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0REMUU1MjUxNjdCQTU2NDAwQ0U4MjBCIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRUcmFja1JlcHJlc2VudGF0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERDcwODk0MTgzNTlGNkUwMDJCM0RDNiAv
KiBTYW1wbGVNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Ft
cGxlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RENzA4OTUxODM1OUY2
RjAwMkIzREM2IC8qIFNhbXBsZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTYW1wbGVNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0REQzFFNzkxOEE5
NTJGMzAwMjdBOUQ0IC8qIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RERTAyRTkxOEIzREZDNzAwQ0Y3RkYxIC8qIENETVNlc3Np
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ0RNU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDRERFMDJFQTE4QjNFRDZEMDBDRjdGRjEgLyogQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakMuaDsgcGF0aCA9IG9iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RERTAyRUIxOEIzRUQ2RDAwQ0Y3RkYxIC8q
IENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW07IHBhdGggPSBvYmpj
L0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDREUzQTg1MjE3RjVGQ0U2MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkYuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9UcmFja1ByaXZhdGVBVkYuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFM0E4NTUxN0Y2MDIwNDAwQzVCRTIwIC8q
IEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbTsgcGF0aCA9IG9iamMvQXVk
aW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
REUzQTg1NjE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5o
OyBwYXRoID0gb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE5NzU5LDYgKzE5NzY0LDcgQEAKIAkJCQlCRUYyOUVFOTE3MTVERDA5
MDBDNEI0QzkgLyogQXVkaW9UcmFja1ByaXZhdGUuaCAqLywKIAkJCQlBODk5NDMyNzBCNDIzMzg3
MDBEN0M4MDIgLyogQml0bWFwSW1hZ2UuY3BwICovLAogCQkJCUE4OTk0MzI2MEI0MjMzODcwMEQ3
QzgwMiAvKiBCaXRtYXBJbWFnZS5oICovLAorCQkJCUNEREUwMkU5MThCM0RGQzcwMENGN0ZGMSAv
KiBDRE1TZXNzaW9uLmggKi8sCiAJCQkJQjI3NTM1MzgwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9y
LmNwcCAqLywKIAkJCQlCMjc1MzUzOTBCMDUzODE0MDAyQ0U2NEYgLyogQ29sb3IuaCAqLywKIAkJ
CQk5MzgyREY1NzEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFjZS5oICovLApAQCAtMjA4NzIs
OCArMjA4NzgsOCBAQAogCQkJCUNEQTk4RTA5MTYwM0NENTkwMEZFQTNCMSAvKiBDRE0uY3BwICov
LAogCQkJCUNEQTk4RTBBMTYwM0NENTkwMEZFQTNCMSAvKiBDRE0uaCAqLywKIAkJCQlDREE5OEUw
QzE2MDNDRjNDMDBGRUEzQjEgLyogQ0RNUHJpdmF0ZS5oICovLAotCQkJCUNENDdCM0Y5MTZDQzM0
RjgwMEEyMUVDOCAvKiBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLmggKi8sCi0JCQkJQ0Q0N0IzRkEx
NkNDMzRGODAwQTIxRUM4IC8qIENETVByaXZhdGVBVkZvdW5kYXRpb24ubW0gKi8sCisJCQkJQ0RD
QTk4RTkxOEIyQzhEMDAwQzEyRkY5IC8qIENETVByaXZhdGVNZWRpYVBsYXllci5oICovLAorCQkJ
CUNEQ0E5OEVBMThCMkM4RUIwMEMxMkZGOSAvKiBDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuY3BwICov
LAogCQkJCUNEQTk4REQ1MTYwMjVCRUQwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5j
cHAgKi8sCiAJCQkJQ0RBOThERDYxNjAyNUJFRDAwRkVBM0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2
ZW50LmggKi8sCiAJCQkJQ0RBOThERDcxNjAyNUJFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TWVzc2Fn
ZUV2ZW50LmlkbCAqLywKQEAgLTIwOTc4LDYgKzIwOTg0LDggQEAKIAkJCQlDRDU0QTc2MTE4MEY5
RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCAqLywK
IAkJCQlDRDMzNkY2MDE3RjlGNjQ3MDBERERDRDAgLyogQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1w
bC5oICovLAogCQkJCUNEMzM2RjVGMTdGOUY2NDcwMERERENEMCAvKiBBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsLm1tICovLAorCQkJCUNEREUwMkVBMThCM0VENkQwMENGN0ZGMSAvKiBDRE1TZXNz
aW9uQVZGb3VuZGF0aW9uT2JqQy5oICovLAorCQkJCUNEREUwMkVCMThCM0VENkQwMENGN0ZGMSAv
KiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbSAqLywKIAkJCQkwN0FBNkI2OTE2NkQwMTk1
MDBENDU2NzEgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaCAqLywKIAkJCQkwN0FB
NkI2QTE2NkQwMTk1MDBENDU2NzEgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0g
Ki8sCiAJCQkJMDczNjdEREQxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFuZFRleHRUcmFja1ByaXZh
dGVMZWdhY3lBVkZPYmpDLmggKi8sCkBAIC0yNDA0MCw2ICsyNDA0OCw3IEBACiAJCQkJMUFCQTgw
MDAxODk3MzQxMjAwRENFOUQ2IC8qIFZpc2l0ZWRMaW5rUHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJFMDg4OEQ1MTE0ODg0OEEwMEFGNDI2NSAvKiBKU0RPTUZvcm1EYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMUMzNkMwMzBFQjA3NkQ2MDA3NDEwQkMgLyogSlNET01HbG9iYWxPYmpl
Y3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEREQ1NzE1MThCNTdBODIwMEE5NEZDQiAvKiBDRE1T
ZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGODA5RDFDQzYwMDAwQkUzMjUgLyog
SlNET01JbXBsZW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTlEMjQ4MDcwRDc1N0U3
RDAwRkRGOTU5IC8qIEpTRE9NTWltZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE5RDI0ODA5
MEQ3NTdFN0QwMEZERjk1OSAvKiBKU0RPTU1pbWVUeXBlQXJyYXkuaCBpbiBIZWFkZXJzICovLApA
QCAtMjY0MTgsNyArMjY0MjcsNiBAQAogCQkJCTY1NTBCNjlEMDk5REYwMjcwMDkwRDc4MSAvKiBD
REFUQVNlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA5MDkxN0QxNENFRTAwNDIw
QUExIC8qIFJUQ0ljZUNhbmRpZGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE5OEUwQjE2
MDNDRDYwMDBGRUEzQjEgLyogQ0RNLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUNENDdCM0ZDMTZD
QzM0RjgwMEEyMUVDOCAvKiBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTkwQTFBMDQxOEFEQTQ4NDAwMTgzRkQxIC8qIFJlcGxheUlucHV0VHlwZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTFBOEU1NjYxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QkM2OURDMTUwNUYwNzYwMDFCNzRBQyAvKiBDaGFu
Z2VWZXJzaW9uV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3MDgyLDYgKzI3MDkwLDcg
QEAKIAkJCQk5NzdCMzg2NjEyMjg4M0U5MDBCODFGRjggLyogSFRNTERvY3VtZW50UGFyc2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5REU3MDk5RTY0OTIwMDU2RTU4MSAvKiBodG1sZWRp
dGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTE2RThCODEzNkUwNERCMDA3NkMzQzAgLyog
TG9jYWxpemVkRGF0ZUNhY2hlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RERTAyRUQxOEIzRUQ2
RDAwQ0Y3RkYxIC8qIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTNGMTlBOTIwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxNTdBOEYwMTgxODU0MjUwMDlGODIxRCAvKiBKU0NyeXB0b0FsZ29yaXRo
bUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE3QzgxMjIwRjJBNUNGNzAwNURBQUVC
IC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3Nzc1LDYgKzI3
Nzg0LDcgQEAKIAkJCQlCMjdCMjgyNzBDRUYwQzA3MDBEMzlENTQgLyogSlNTVkdHbHlwaEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzYzRTExODFBMUNEQzAwQzA3NEE1IC8qIEFW
QXVkaW9DYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjREOTEyOTgxM0NBOTZE
RTAwRDIxOTE1IC8qIEpTU1ZHR2x5cGhSZWZFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUNEQ0E5OEVCMThCMkM4RUIwMEMxMkZGOSAvKiBDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNEOUMwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHR3JhZGll
bnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MTc0RUMyQkNDQUYxN0VBRTNGNDZG
OCAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDg1MjI3
QjExOTAxNjJDMDA2RURDN0YgLyogSlNTVkdIS2VybkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DRE1TZXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DRE1TZXNzaW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTRlMjEwNWIwNWU2MjU3NWU2ZGRmNTUwNGE0NDgzMThmMGNhOWZkYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NETVNlc3Npb24uaApA
QCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzXTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENETVNlc3Npb25faAorI2Rl
ZmluZSBDRE1TZXNzaW9uX2gKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNp
bmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0RNU2Vzc2lvbkNsaWVudCB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbkNsaWVudCgpIHsgfTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2VuZE1lc3NhZ2UoVWludDhBcnJheSosIFN0cmluZyBkZXN0aW5hdGlvblVSTCkgPSAw
OworfTsKKworY2xhc3MgQ0RNU2Vzc2lvbiB7CitwdWJsaWM6CisgICAgQ0RNU2Vzc2lvbigpIHsg
fQorICAgIHZpcnR1YWwgfkNETVNlc3Npb24oKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRD
bGllbnQoQ0RNU2Vzc2lvbkNsaWVudCopID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxVaW50OEFycmF5
PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSog
aW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNv
ZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVs
ZWFzZUtleXMoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHVwZGF0ZShVaW50OEFycmF5KiwgUmVm
UHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwg
dW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkgPSAwOworfTsKKworfQorCisjZW5kaWYgLy8gRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2VuZGlmIC8vIENETVNlc3Npb25faApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGEw
Y2ZjMTk1YzhlNjBiZTJiYTBhNzI3ZWE3NjIyYTRmNDI5MzRmMWIuLjlhZWZmNjM2ZjliZmQ3OGQy
ODRjZjg3MDI5NGM3YjE0MzAyZWYxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTUyNiwxOSArNTI2LDkgQEAgTWVkaWFQbGF5
ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIE1lZGlhUGxheWVyOjpjYW5jZWxLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluZyYga2V5U3kKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikK
LVBhc3NSZWZQdHI8VWludDhBcnJheT4gTWVkaWFQbGF5ZXI6OmdlbmVyYXRlS2V5UmVxdWVzdChj
b25zdCBTdHJpbmcmIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJh
eSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIE1lZGlhS2V5RXhjZXB0aW9uJiBl
cnJvciwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkKK3N0ZDo6dW5pcXVlX3B0cjxDRE1TZXNz
aW9uPiBNZWRpYVBsYXllcjo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkK
IHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5nZW5lcmF0ZUtleVJlcXVlc3Qoc2Vzc2lvbklELCBt
aW1lVHlwZSwgaW5pdERhdGEsIGRlc3RpbmF0aW9uVVJMLCBlcnJvciwgc3lzdGVtQ29kZSk7Ci19
Ci0KLXZvaWQgTWVkaWFQbGF5ZXI6OnJlbGVhc2VLZXlzKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklE
KQotewotICAgIG1fcHJpdmF0ZS0+cmVsZWFzZUtleXMoc2Vzc2lvbklEKTsKLX0KLQotYm9vbCBN
ZWRpYVBsYXllcjo6dXBkYXRlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBVaW50OEFycmF5KiBr
ZXksIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIE1lZGlhS2V5RXhjZXB0aW9uJiBl
cnJvciwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkKLXsKLSAgICByZXR1cm4gbV9wcml2YXRl
LT51cGRhdGUoc2Vzc2lvbklELCBrZXksIG5leHRNZXNzYWdlLCBlcnJvciwgc3lzdGVtQ29kZSk7
CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y3JlYXRlU2Vzc2lvbihrZXlTeXN0ZW0pOwogfQogI2Vu
ZGlmCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaAppbmRleCAxZDQ3Y2MyMWQzZmU3NDk4ZDM5YTFhM2VkYWJlNWE5NTUzYTljYTRiLi5mNzE2
YmYxNDRjN2RjNmM0OWE5NTY5NTZjNGRkMzE0YTBmMzg0ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNl
bmRpZgogCiAjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJDRE1TZXNz
aW9uLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKICNpbmNsdWRlICJVUkwuaCIKQEAgLTMyOSw5ICszMzAsNyBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCi0gICAgUGFzc1JlZlB0cjxV
aW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3Rp
bmF0aW9uVVJMLCBNZWRpYUtleUV4Y2VwdGlvbiYgZXJyb3IsIHVuc2lnbmVkIGxvbmcmIHN5c3Rl
bUNvZGUpOwotICAgIHZvaWQgcmVsZWFzZUtleXMoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQpOwot
ICAgIGJvb2wgdXBkYXRlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBVaW50OEFycmF5KiBrZXks
IFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIE1lZGlhS2V5RXhjZXB0aW9uJiBlcnJv
ciwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPENETVNl
c3Npb24+IGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOwogI2VuZGlmCiAK
ICAgICBib29sIHBhdXNlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCBjY2NmYjRlNTZjNzYzYjE1
NWIzMWViNzEwYTI1NjE1ZjU3ZTJjMTgxLi4xNzhjN2VlOTY4ZDdhOTIyNWZiYTIzMTI4MDk4ODcz
YzExNDJiZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMjA4LDkgKzIwOCw3IEBAIHB1YmxpYzoKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIFVpbnQ4QXJyYXkqLCBTdHJpbmcmLCBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRp
b24mLCB1bnNpZ25lZCBsb25nJikgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9p
ZCByZWxlYXNlS2V5cyhjb25zdCBTdHJpbmcmKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgdXBkYXRl
KGNvbnN0IFN0cmluZyYsIFVpbnQ4QXJyYXkqLCBSZWZQdHI8VWludDhBcnJheT4mLCBNZWRpYVBs
YXllcjo6TWVkaWFLZXlFeGNlcHRpb24mLCB1bnNpZ25lZCBsb25nJikgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9u
KGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VkZvdW5kYXRpb25PYmpDLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTc2MDEwN2E2ZTkyYWZiNTdmYmM1MzI0ZjUz
YmI4YThkMjY3MTcxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgK
QEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0RNU2Vzc2lvbkFWRm91bmRh
dGlvbk9iakNfaAorI2RlZmluZSBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQ19oCisKKyNpbmNs
dWRlICJDRE1TZXNzaW9uLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKworT0JKQ19DTEFTUyBBVkFz
c2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOworCitjbGFzcyBDRE1TZXNzaW9u
QVZGb3VuZGF0aW9uT2JqQyA6IHB1YmxpYyBDRE1TZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyhNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
KiBwYXJlbnQpOworICAgIHZpcnR1YWwgfkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDKCkgeyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KENETVNlc3Npb25DbGllbnQqIGNsaWVudCkg
b3ZlcnJpZGUgeyBtX2NsaWVudCA9IGNsaWVudDsgfQorICAgIHZpcnR1YWwgY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQorICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRp
b25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNv
ZGUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlS2V5cygpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgYm9vbCB1cGRhdGUoVWludDhBcnJheSosIFJlZlB0cjxVaW50OEFycmF5PiYg
bmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5
c3RlbUNvZGUpIG92ZXJyaWRlOworCitwcm90ZWN0ZWQ6CisgICAgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQyogbV9wYXJlbnQ7CisgICAgQ0RNU2Vzc2lvbkNsaWVudCogbV9jbGll
bnQ7CisgICAgU3RyaW5nIG1fc2Vzc2lvbklkOworICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3Vy
Y2VMb2FkaW5nUmVxdWVzdD4gbV9yZXF1ZXN0OworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlm
IC8vIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5k
YXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTZjM2Zm
NTVhNjNhMjk1ZjhiOGQ0OWIxYzA5OGI3NmI1ODhhYWZiYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oIgor
CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDkwCisKKyNpbXBvcnQgIkNETS5oIgorI2ltcG9ydCAiQ0RNU2Vzc2lv
bi5oIgorI2ltcG9ydCAiRXhjZXB0aW9uQ29kZS5oIgorI2ltcG9ydCAiTWVkaWFQbGF5ZXIuaCIK
KyNpbXBvcnQgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCIKKyNpbXBvcnQg
IlNvZnRMaW5raW5nLmgiCisjaW1wb3J0ICJVVUlELmgiCisjaW1wb3J0IDxBVkZvdW5kYXRpb24v
QVZGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9u
KQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldCkKK1NPRlRfTElOS19D
TEFTUyhBVkZvdW5kYXRpb24sIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0KQorI2RlZmlu
ZSBBVlVSTEFzc2V0IGdldEFWVVJMQXNzZXRDbGFzcygpCisjZGVmaW5lIEFWQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0IGdldEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0KCkKKworCitD
RE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMoTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50KQorICAgIDogbV9wYXJlbnQo
cGFyZW50KQorICAgICwgbV9jbGllbnQobnVsbHB0cikKKyAgICAsIG1fc2Vzc2lvbklkKGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkKK3sKK30KKworUGFzc1JlZlB0cjxVaW50OEFycmF5PiBD
RE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJM
LCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNpZ25lZCBsb25nJiBzeXN0ZW1Db2RlKQor
eworICAgIFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7CisKKyAgICBTdHJpbmcga2V5VVJJOworICAg
IFN0cmluZyBrZXlJRDsKKyAgICBSZWZQdHI8VWludDhBcnJheT4gY2VydGlmaWNhdGU7CisgICAg
aWYgKCFNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpleHRyYWN0S2V5VVJJS2V5
SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0YShpbml0RGF0YSwga2V5VVJJLCBrZXlJRCwgY2Vy
dGlmaWNhdGUpKSB7CisgICAgICAgIGVycm9yQ29kZSA9IE1lZGlhUGxheWVyOjpJbnZhbGlkUGxh
eWVyU3RhdGU7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1fcmVxdWVzdCA9IG1f
cGFyZW50LT50YWtlUmVxdWVzdEZvcktleVVSSShrZXlVUkkpOworICAgIGlmICghbV9yZXF1ZXN0
KSB7CisgICAgICAgIGVycm9yQ29kZSA9IE1lZGlhUGxheWVyOjpJbnZhbGlkUGxheWVyU3RhdGU7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFJldGFpblB0cjxOU0RhdGE+
IGNlcnRpZmljYXRlRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6
Y2VydGlmaWNhdGUtPmJhc2VBZGRyZXNzKCkgbGVuZ3RoOmNlcnRpZmljYXRlLT5ieXRlTGVuZ3Ro
KCldKTsKKyAgICBOU1N0cmluZyogYXNzZXRTdHIgPSBrZXlJRDsKKyAgICBSZXRhaW5QdHI8TlNE
YXRhPiBhc3NldElEID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiBbYXNzZXRTdHIgY1N0cmluZ1Vz
aW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIGxlbmd0aDpbYXNzZXRTdHIgbGVuZ3Ro
T2ZCeXRlc1VzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKKyAgICBOU0Vycm9y
KiBuc0Vycm9yID0gMDsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBrZXlSZXF1ZXN0ID0gW21fcmVx
dWVzdCBzdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6Y2VydGlmaWNhdGVEYXRh
LmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmFzc2V0SUQuZ2V0KCkgb3B0aW9uczpuaWwgZXJyb3I6
Jm5zRXJyb3JdOworCisgICAgaWYgKCFrZXlSZXF1ZXN0KSB7CisgICAgICAgIE5TRXJyb3IqIHVu
ZGVybHlpbmdFcnJvciA9IFtbbnNFcnJvciB1c2VySW5mb10gb2JqZWN0Rm9yS2V5Ok5TVW5kZXJs
eWluZ0Vycm9yS2V5XTsKKyAgICAgICAgc3lzdGVtQ29kZSA9IFt1bmRlcmx5aW5nRXJyb3IgY29k
ZV07CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGVycm9yQ29kZSA9IE1lZGlhUGxh
eWVyOjpOb0Vycm9yOworICAgIHN5c3RlbUNvZGUgPSAwOworICAgIGRlc3RpbmF0aW9uVVJMID0g
U3RyaW5nKCk7CisKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGtleVJlcXVlc3RCdWZmZXIgPSBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKFtrZXlSZXF1ZXN0LmdldCgpIGJ5dGVzXSwgW2tleVJlcXVlc3Qu
Z2V0KCkgbGVuZ3RoXSk7CisgICAgcmV0dXJuIFVpbnQ4QXJyYXk6OmNyZWF0ZShrZXlSZXF1ZXN0
QnVmZmVyLCAwLCBrZXlSZXF1ZXN0QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworfQorCit2b2lkIENE
TVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpyZWxlYXNlS2V5cygpCit7Cit9CisKK2Jvb2wgQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxV
aW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2ln
bmVkIGxvbmcmIHN5c3RlbUNvZGUpCit7CisgICAgUmV0YWluUHRyPE5TRGF0YT4ga2V5RGF0YSA9
IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6a2V5LT5iYXNlQWRkcmVzcygp
IGxlbmd0aDprZXktPmJ5dGVMZW5ndGgoKV0pOworICAgIFtbbV9yZXF1ZXN0IGRhdGFSZXF1ZXN0
XSByZXNwb25kV2l0aERhdGE6a2V5RGF0YS5nZXQoKV07CisgICAgW21fcmVxdWVzdCBmaW5pc2hM
b2FkaW5nXTsKKyAgICBlcnJvckNvZGUgPSBNZWRpYVBsYXllcjo6Tm9FcnJvcjsKKyAgICBzeXN0
ZW1Db2RlID0gMDsKKyAgICBuZXh0TWVzc2FnZSA9IG51bGxwdHI7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCBlMzc0Njk2M2Ux
YWU5NGYwMzIyOWQxMzk2MDg2Zjk1NWQ4ZGU0YzM0Li42ODY3MDUzYmYzYTUzOTgzMGVhMTI1YWU5
MWI4ZmU5MmNmYjA3YmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC05MSw3ICs5MSw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKLSAgICBz
dGF0aWMgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiB0YWtlUmVxdWVz
dEZvclBsYXllckFuZEtleVVSSShNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYpOworICAgIFJl
dGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gdGFrZVJlcXVlc3RGb3JLZXlV
UkkoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHZvaWQgcGxheWVySXRlbVN0YXR1c0Rp
ZENoYW5nZShpbnQpOwpAQCAtMjAwLDkgKzIwMCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCi0gICAgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBn
ZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCBN
ZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24mIGVycm9yLCB1bnNpZ25lZCBsb25nJiBzeXN0
ZW1Db2RlKTsKLSAgICB2b2lkIHJlbGVhc2VLZXlzKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsK
LSAgICBib29sIHVwZGF0ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgVWludDhBcnJheSoga2V5
LCBSZWZQdHI8VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCBNZWRpYVBsYXllcjo6TWVkaWFLZXlF
eGNlcHRpb24mIGVycm9yLCB1bnNpZ25lZCBsb25nJiBzeXN0ZW1Db2RlKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSk7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgU3RyaW5nIGxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9U
cmFjaygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggM2Q1ZThj
MWFjOTNkNDE4YThlYjBjM2MzMDgxMWRmYzhlZWYyMGFiYS4uZWUzY2MyMTUwOTM1Mjk3NmIxNTE3
MzBhMDg1ODRiZWI2Yjc4YWViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW1wb3J0ICJBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCIKICNpbXBvcnQgIkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKKyNp
bXBvcnQgIkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgiCiAjaW1wb3J0ICJFeGNlcHRpb25D
b2RlUGxhY2Vob2xkZXIuaCIKICNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgogI2ltcG9ydCAi
RmxvYXRDb252ZXJzaW9uLmgiCkBAIC0xNjE4LDY5ICsxNjE5LDE3IEBAIE1lZGlhUGxheWVyOjpN
ZWRpYUtleUV4Y2VwdGlvbiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjYW5j
ZWxLZXlSZXF1CiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCi1QYXNz
UmVmUHRyPFVpbnQ4QXJyYXk+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omdl
bmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIE1l
ZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiYgZXJyb3IsIHVuc2lnbmVkIGxvbmcmIHN5c3Rl
bUNvZGUpCitSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnRha2VSZXF1ZXN0Rm9yS2V5VVJJKGNvbnN0IFN0
cmluZyYga2V5VVJJKQogewotICAgIFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7Ci0KLSAgICBTdHJp
bmcga2V5VVJJOwotICAgIFN0cmluZyBrZXlJRDsKLSAgICBSZWZQdHI8VWludDhBcnJheT4gY2Vy
dGlmaWNhdGU7Ci0gICAgaWYgKCFNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpl
eHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0YShpbml0RGF0YSwga2V5
VVJJLCBrZXlJRCwgY2VydGlmaWNhdGUpKSB7Ci0gICAgICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6
OkludmFsaWRQbGF5ZXJTdGF0ZTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgUmV0
YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiByZXF1ZXN0ID0gbV9rZXlVUklU
b1JlcXVlc3RNYXAudGFrZShrZXlVUkkpOwotICAgIGlmICghcmVxdWVzdCkgewotICAgICAgICBl
cnJvciA9IE1lZGlhUGxheWVyOjpJbnZhbGlkUGxheWVyU3RhdGU7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KLQotICAgIG1fc2Vzc2lvbklEVG9SZXF1ZXN0TWFwLmFkZChzZXNzaW9uSWQsIHJl
cXVlc3QpOwotCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY2VydGlmaWNhdGVEYXRhID0gYWRvcHRO
UyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpjZXJ0aWZpY2F0ZS0+YmFzZUFkZHJlc3Mo
KSBsZW5ndGg6Y2VydGlmaWNhdGUtPmJ5dGVMZW5ndGgoKV0pOwotICAgIE5TU3RyaW5nKiBhc3Nl
dFN0ciA9IGtleUlEOwotICAgIFJldGFpblB0cjxOU0RhdGE+IGFzc2V0SUQgPSBbTlNEYXRhIGRh
dGFXaXRoQnl0ZXM6IFthc3NldFN0ciBjU3RyaW5nVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ10gbGVuZ3RoOlthc3NldFN0ciBsZW5ndGhPZkJ5dGVzVXNpbmdFbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ11dOwotICAgIE5TRXJyb3IqIG5zRXJyb3IgPSAwOwotICAgIFJldGFp
blB0cjxOU0RhdGE+IGtleVJlcXVlc3QgPSBbcmVxdWVzdCBzdHJlYW1pbmdDb250ZW50S2V5UmVx
dWVzdERhdGFGb3JBcHA6Y2VydGlmaWNhdGVEYXRhLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmFz
c2V0SUQuZ2V0KCkgb3B0aW9uczpuaWwgZXJyb3I6Jm5zRXJyb3JdOwotCi0gICAgaWYgKCFrZXlS
ZXF1ZXN0KSB7Ci0gICAgICAgIE5TRXJyb3IqIHVuZGVybHlpbmdFcnJvciA9IFtbbnNFcnJvciB1
c2VySW5mb10gb2JqZWN0Rm9yS2V5Ok5TVW5kZXJseWluZ0Vycm9yS2V5XTsKLSAgICAgICAgc3lz
dGVtQ29kZSA9IFt1bmRlcmx5aW5nRXJyb3IgY29kZV07Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLQotICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6Ok5vRXJyb3I7Ci0gICAgc3lzdGVtQ29kZSA9
IDA7Ci0gICAgZGVzdGluYXRpb25VUkwgPSBTdHJpbmcoKTsKLQotICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4ga2V5UmVxdWVzdEJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoW2tleVJlcXVlc3Qu
Z2V0KCkgYnl0ZXNdLCBba2V5UmVxdWVzdC5nZXQoKSBsZW5ndGhdKTsKLSAgICByZXR1cm4gVWlu
dDhBcnJheTo6Y3JlYXRlKGtleVJlcXVlc3RCdWZmZXIsIDAsIGtleVJlcXVlc3RCdWZmZXItPmJ5
dGVMZW5ndGgoKSk7CisgICAgcmV0dXJuIG1fa2V5VVJJVG9SZXF1ZXN0TWFwLnRha2Uoa2V5VVJJ
KTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWxlYXNl
S2V5cyhjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKK3N0ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9u
PiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVTZXNzaW9uKGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtKQogewotICAgIFVOVVNFRF9QQVJBTShzZXNzaW9uSWQpOwotfQot
Ci1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZShjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgVWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mIG5l
eHRNZXNzYWdlLCBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24mIGVycm9yLCB1bnNpZ25l
ZCBsb25nJiBzeXN0ZW1Db2RlKQotewotICAgIEFTU0VSVChrZXkpOwotCi0gICAgUmV0YWluUHRy
PEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiByZXF1ZXN0ID0gbV9zZXNzaW9uSURUb1Jl
cXVlc3RNYXAuZ2V0KHNlc3Npb25JZCk7Ci0gICAgaWYgKCFyZXF1ZXN0KSB7Ci0gICAgICAgIGVy
cm9yID0gTWVkaWFQbGF5ZXI6OkludmFsaWRQbGF5ZXJTdGF0ZTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIFJldGFpblB0cjxOU0RhdGE+IGtleURhdGEgPSBhZG9wdE5TKFtb
TlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmtleS0+YmFzZUFkZHJlc3MoKSBsZW5ndGg6a2V5
LT5ieXRlTGVuZ3RoKCldKTsKLSAgICBbW3JlcXVlc3QgZGF0YVJlcXVlc3RdIHJlc3BvbmRXaXRo
RGF0YTprZXlEYXRhLmdldCgpXTsKLSAgICBbcmVxdWVzdCBmaW5pc2hMb2FkaW5nXTsKLSAgICBl
cnJvciA9IE1lZGlhUGxheWVyOjpOb0Vycm9yOwotICAgIHN5c3RlbUNvZGUgPSAwOwotICAgIG5l
eHRNZXNzYWdlID0gbnVsbHB0cjsKKyAgICBpZiAoIWtleVN5c3RlbUlzU3VwcG9ydGVkKGtleVN5
c3RlbSkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM+KHRoaXMp
OwogfQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224896</attachid>
            <date>2014-02-21 13:17:30 -0800</date>
            <delta_ts>2014-02-21 13:20:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129164-20140221131730.patch</filename>
            <type>text/plain</type>
            <size>54027</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0MzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc4ZTVhYWQ3MjE0ZmNm
Y2IyMmNiNDg3NGI3MWYzZGFmYWMwYmUzNS4uYjMxY2Y2YmJlNDk4OWIyNTZkZTU1MDAxNDJlYjc0
NWJmNWUzNDlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU2IEBACiAyMDE0LTAyLTIxICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIE1ha2UgYSBnZW5lcmljIENE
TVByaXZhdGVNZWRpYVBsYXllciBhbmQgbW92ZSBpdHMgQ0RNU2Vzc2lvbiBpbnRvIHBsYXRmb3Jt
Ly4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTE2
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
dGhlIHNlc3Npb24gY3JlYXRlZCBieSBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uIGludG8gcGxhdGZv
cm0sIGFuZCByZW5hbWUKKyAgICAgICAgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbiB0byBDRE1Qcml2
YXRlTWVkaWFQbGF5ZXIuIEZ1dHVyZSBtZWRpYSBlbmdpbmVzIHdobyB3YW50CisgICAgICAgIHRv
IHN1cHBvcnQgYSBrZXlzeXN0ZW0gZnJvbSB3aXRoaW4gdGhlIG1lZGlhIGVuZ2luZSBjYW4gY3Jl
YXRlIHRoZWlyIG93bgorICAgICAgICBDRE1TZXNzaW9uIGFzIHBhcnQgb2YgdGhlIE1lZGlhUGxh
eWVyUHJpdmF0ZSBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnN0YWxsZWRDRE1GYWN0b3JpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
UHJpdmF0ZS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNz
aW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lv
bi5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZUFWRm91bmRh
dGlvbi5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVBy
aXZhdGVNZWRpYVBsYXllci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24uY3BwLgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAg
IChXZWJDb3JlOjpDRE1Qcml2YXRlTWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWlt
ZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0
c01JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVNZWRpYVBsYXllcjo6Y3Jl
YXRlU2Vzc2lvbik6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRl
TWVkaWFQbGF5ZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5oLgorICAgICAgICAoV2ViQ29yZTo6Q0RN
UHJpdmF0ZU1lZGlhUGxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0
ZU1lZGlhUGxheWVyOjp+Q0RNUHJpdmF0ZU1lZGlhUGxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETVByaXZhdGVNZWRpYVBsYXllcjo6Y2RtKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZh
dGVNZWRpYVBsYXllcjo6Q0RNUHJpdmF0ZU1lZGlhUGxheWVyKToKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q0RNU2Vzc2lvbi5oOiBFeHRyYWN0ZWQgZnJvbSBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLmguCisg
ICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQ2xpZW50Ojp+Q0RNU2Vzc2lvbkNsaWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uOjpDRE1TZXNzaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETVNlc3Npb246On5DRE1TZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y3JlYXRl
U2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6Y3JlYXRlU2Vzc2lvbik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbk9iakMuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5oLgorICAgICAgICAoV2ViQ29yZTo6
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6On5DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakMubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24ubW0uCisgICAgICAgIChXZWJD
b3JlOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9i
akMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OmdlbmVy
YXRlS2V5UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9u
T2JqQzo6cmVsZWFzZUtleXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRh
dGlvbk9iakM6OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpjcmVhdGVTZXNzaW9uKToKKworMjAxNC0wMi0yMSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKwogICAgICAgICBBZGQgYSBzdXBwb3J0c0tleVN5c3Rl
bSBtZWRpYSBlbmdpbmUgZmFjdG9yeSBwYXJhbWV0ZXIuCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkxNjEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDc4MjA4N2NmNDVmNDY1YzY4NDg1NjJl
NTJmOGMyZGY0Nzk1YzI0Y2YuLmM0Y2Y0ZWUxZGMxNDg1MWFiZDI0ZDcwYzcxOTRlZTgxZWY5YWMx
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAK
QEAgLTI5LDE1ICsyOSwxMiBAQAogCiAjaW5jbHVkZSAiQ0RNLmgiCiAKLSNpbmNsdWRlICJDRE1Q
cml2YXRlLmgiCisjaW5jbHVkZSAiQ0RNUHJpdmF0ZU1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAi
Q0RNU2Vzc2lvbi5oIgogI2luY2x1ZGUgIk1lZGlhS2V5RXJyb3IuaCIKICNpbmNsdWRlICJNZWRp
YUtleXMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAotI2luY2x1ZGUgIkNETVByaXZhdGVBVkZv
dW5kYXRpb24uaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBDRE1G
YWN0b3J5IHsKQEAgLTYzLDEwICs2MCw3IEBAIHN0YXRpYyBWZWN0b3I8Q0RNRmFjdG9yeSo+JiBp
bnN0YWxsZWRDRE1GYWN0b3JpZXMoKQogICAgICAgICBxdWVyaWVkQ0RNcyA9IHRydWU7CiAKICAg
ICAgICAgLy8gRklYTUU6IGluaXRpYWxpemUgc3BlY2lmaWMgVUEgQ0RNcy4gaHR0cDovL3dlYmtp
dC5vcmcvYi8xMDkzMTgsIGh0dHA6Ly93ZWJraXQub3JnL2IvMTA5MzIwCi0jaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi0gICAgICAgIGNkbXMuYXBwZW5kKG5ldyBD
RE1GYWN0b3J5KENETVByaXZhdGVBVkZvdW5kYXRpb246OmNyZWF0ZSwgQ0RNUHJpdmF0ZUFWRm91
bmRhdGlvbjo6c3VwcG9ydHNLZXlTeXN0ZW0sIENETVByaXZhdGVBVkZvdW5kYXRpb246OnN1cHBv
cnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpKTsKLSNlbmRpZgotCisgICAgICAgIGNkbXMuYXBwZW5k
KG5ldyBDRE1GYWN0b3J5KENETVByaXZhdGVNZWRpYVBsYXllcjo6Y3JlYXRlLCBDRE1Qcml2YXRl
TWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtLCBDRE1Qcml2YXRlTWVkaWFQbGF5ZXI6OnN1
cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpKTsKICAgICB9CiAKICAgICByZXR1cm4gY2RtczsK
QEAgLTEyMyw3ICsxMTcsNyBAQCBib29sIENETTo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUtPnN1cHBvcnRzTUlNRVR5
cGUobWltZVR5cGUpOwogfQogCi1QYXNzT3duUHRyPENETVNlc3Npb24+IENETTo6Y3JlYXRlU2Vz
c2lvbigpCitzdGQ6OnVuaXF1ZV9wdHI8Q0RNU2Vzc2lvbj4gQ0RNOjpjcmVhdGVTZXNzaW9uKCkK
IHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5jcmVhdGVTZXNzaW9uKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAppbmRleCAzNDRiMTE4MTJjZGE3ZjU1
MWQ0ZmVlZDU0OTQyYjgyNGI0Njc0MGNlLi5mMzBkNjRmOGQ0NjhlODZiNDg1MWU3YjdhY2Y0NzY5
NTVhMDg3YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAK
KyNpbmNsdWRlICJDRE1TZXNzaW9uLmgiCiAjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpA
QCAtMzcsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENETTsKIGNsYXNz
IENETVByaXZhdGVJbnRlcmZhY2U7Ci1jbGFzcyBDRE1TZXNzaW9uOwogY2xhc3MgTWVkaWFQbGF5
ZXI7CiAKIHR5cGVkZWYgUGFzc093blB0cjxDRE1Qcml2YXRlSW50ZXJmYWNlPiAoKkNyZWF0ZUNE
TSkoQ0RNKik7CkBAIC01MSwxNyArNTEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVBs
YXllciogY2RtTWVkaWFQbGF5ZXIoY29uc3QgQ0RNKikgY29uc3QgPSAwOwogfTsKIAotY2xhc3Mg
Q0RNU2Vzc2lvbiB7Ci1wdWJsaWM6Ci0gICAgQ0RNU2Vzc2lvbigpIHsgfQotICAgIHZpcnR1YWwg
fkNETVNlc3Npb24oKSB7IH0KLQotICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQo
KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRl
S2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwg
U3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWdu
ZWQgbG9uZyYgc3lzdGVtQ29kZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlS2V5cygp
ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlKFVpbnQ4QXJyYXkqLCBSZWZQdHI8VWludDhB
cnJheT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNpZ25lZCBs
b25nJiBzeXN0ZW1Db2RlKSA9IDA7Ci19OwotCiBjbGFzcyBDRE0gewogcHVibGljOgogCkBAIC03
Myw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB+Q0RNKCk7CiAKICAgICBib29sIHN1cHBvcnRzTUlN
RVR5cGUoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgUGFzc093blB0cjxDRE1TZXNzaW9uPiBj
cmVhdGVTZXNzaW9uKCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPENETVNlc3Npb24+IGNyZWF0ZVNl
c3Npb24oKTsKIAogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgeyByZXR1cm4g
bV9rZXlTeXN0ZW07IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETVByaXZhdGUuaAppbmRleCA4MmE1ODU3YmNjYjQxNDM1YzA4MTM1YzZiOGViN2Fi
NzE3NWY4NGIxLi44YmI4MDFmNGJmZDczNWNlYjIwNjZlY2VhMzI0NzkzOWM3OGRkOTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUu
aApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNN
SU1FVHlwZShjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0RN
U2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0
cjxDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlQVZGb3VuZGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVB
VkZvdW5kYXRpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmIwNmJmZDllOWI4
YjM5YWM5MjQ0OTk3MDY0YjYzMzMxOTJlZjc3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETVByaXZhdGVBVkZvdW5kYXRpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIENETVByaXZhdGVBVkZvdW5kYXRpb25faAotI2RlZmluZSBD
RE1Qcml2YXRlQVZGb3VuZGF0aW9uX2gKLQotI2luY2x1ZGUgIkNETVByaXZhdGUuaCIKLSNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTA5MAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENETTsKLQotY2xh
c3MgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbiA6IHB1YmxpYyBDRE1Qcml2YXRlSW50ZXJmYWNlIHsK
LXB1YmxpYzoKLSAgICAvLyBDRE1GYWN0b3J5IHN1cHBvcnQ6Ci0gICAgc3RhdGljIFBhc3NPd25Q
dHI8Q0RNUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKENETSogY2RtKSB7IHJldHVybiBhZG9wdFB0
cihuZXcgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbihjZG0pKTsgfQotICAgIHN0YXRpYyBib29sIHN1
cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBib29sIHN1cHBvcnRz
S2V5U3lzdGVtQW5kTWltZVR5cGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpOwotCi0gICAgdmlydHVhbCB+Q0RNUHJpdmF0ZUFWRm91bmRhdGlvbigpIHsg
fQotCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPENETVNlc3Npb24+IGNyZWF0
ZVNlc3Npb24oKSBvdmVycmlkZTsKLQotICAgIENETSogY2RtKCkgY29uc3QgeyByZXR1cm4gbV9j
ZG07IH0KLQotcHJvdGVjdGVkOgotICAgIENETVByaXZhdGVBVkZvdW5kYXRpb24oQ0RNKiBjZG0p
IDogbV9jZG0oY2RtKSB7IH0KLSAgICBDRE0qIG1fY2RtOwotfTsKLQotfQotCi0jZW5kaWYKLQot
I2VuZGlmIC8vIENETVByaXZhdGVBVkZvdW5kYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlQVZGb3VuZGF0
aW9uLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmZjYjhkMTFjNWZhNmQ0YmFl
ZDdkMGM3Y2JjOTZlZDM0MzE5Zjg3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJp
dmF0ZUFWRm91bmRhdGlvbi5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE1NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJDRE1Qcml2YXRlQVZGb3VuZGF0
aW9uLmgiCi0KLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLQotI2ltcG9ydCAiQ0RNLmgiCi0jaW1wb3J0ICJF
eGNlcHRpb25Db2RlLmgiCi0jaW1wb3J0ICJNZWRpYVBsYXllci5oIgotI2ltcG9ydCAiTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIgotI2ltcG9ydCAiU29mdExpbmtpbmcuaCIK
LSNpbXBvcnQgIlVVSUQuaCIKLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkZvdW5kYXRpb24uaD4K
LSNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1lLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbiA6IHB1YmxpYyBDRE1TZXNzaW9uIHsKLXB1Ymxp
YzoKLSAgICBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uKENETVByaXZhdGVBVkZvdW5kYXRpb24qIHBh
cmVudCk7Ci0gICAgdmlydHVhbCB+Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbigpIHsgfQotCi0gICAg
dmlydHVhbCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fc2Vzc2lvbklkOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVy
YXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0
YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5z
aWduZWQgbG9uZyYgc3lzdGVtQ29kZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbGVh
c2VLZXlzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHVwZGF0ZShVaW50OEFycmF5Kiwg
UmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29k
ZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkgb3ZlcnJpZGU7Ci0KLXByb3RlY3RlZDoKLSAg
ICBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uKiBtX3BhcmVudDsKLSAgICBTdHJpbmcgbV9zZXNzaW9u
SWQ7Ci0gICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBtX3JlcXVl
c3Q7Ci19OwotCi1TT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKLVNP
RlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXQpCi1TT0ZUX0xJTktfQ0xBU1Mo
QVZGb3VuZGF0aW9uLCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCkKLSNkZWZpbmUgQVZV
UkxBc3NldCBnZXRBVlVSTEFzc2V0Q2xhc3MoKQotI2RlZmluZSBBVkFzc2V0UmVzb3VyY2VMb2Fk
aW5nUmVxdWVzdCBnZXRBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCgpCi0KLQotYm9vbCBD
RE1Qcml2YXRlQVZGb3VuZGF0aW9uOjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSkKLXsKLSAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2Uoa2V5U3lzdGVtLCAiY29t
LmFwcGxlLmZwcyIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGtleVN5c3RlbSwgImNvbS5hcHBsZS5m
cHMuMV8wIik7Ci19Ci0KLWJvb2wgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9ydHNLZXlT
eXN0ZW1BbmRNaW1lVHlwZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKLXsKLSAgICBpZiAoIXN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gW0FWVVJMQXNzZXQgaXNQbGF5YWJsZUV4dGVu
ZGVkTUlNRVR5cGU6bWltZVR5cGVdOwotfQotCi1ib29sIENETVByaXZhdGVBVkZvdW5kYXRpb246
OnN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAgICByZXR1cm4g
W0FWVVJMQXNzZXQgaXNQbGF5YWJsZUV4dGVuZGVkTUlNRVR5cGU6bWltZVR5cGVdOwotfQotCi1Q
YXNzT3duUHRyPENETVNlc3Npb24+IENETVByaXZhdGVBVkZvdW5kYXRpb246OmNyZWF0ZVNlc3Np
b24oKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbih0
aGlzKSk7Ci19Ci0KLUNETVNlc3Npb25BVkZvdW5kYXRpb246OkNETVNlc3Npb25BVkZvdW5kYXRp
b24oQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbiogcGFyZW50KQotICAgIDogbV9wYXJlbnQocGFyZW50
KQotICAgICwgbV9zZXNzaW9uSWQoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKQotewotfQot
Ci1zdGF0aWMgdW5zaWduZWQgc2hvcnQgTWVkaWFLZXlFeGNlcHRpb25Ub0Vycm9yQ29kZShNZWRp
YVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gZXJyb3IpCi17Ci0gICAgc3dpdGNoIChlcnJvcikg
ewotICAgIGNhc2UgTWVkaWFQbGF5ZXI6Ok5vRXJyb3I6Ci0gICAgICAgIHJldHVybiAwOwotICAg
IGNhc2UgTWVkaWFQbGF5ZXI6OkludmFsaWRQbGF5ZXJTdGF0ZToKLSAgICAgICAgcmV0dXJuIElO
VkFMSURfU1RBVEVfRVJSOwotICAgIGNhc2UgTWVkaWFQbGF5ZXI6OktleVN5c3RlbU5vdFN1cHBv
cnRlZDoKLSAgICAgICAgcmV0dXJuIE5PVF9TVVBQT1JURURfRVJSOwotICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19
Ci0KLVBhc3NSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbjo6Z2VuZXJh
dGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRh
LCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNp
Z25lZCBsb25nJiBzeXN0ZW1Db2RlKQotewotICAgIFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7Ci0K
LSAgICBNZWRpYVBsYXllciogbWVkaWFQbGF5ZXIgPSBtX3BhcmVudC0+Y2RtKCktPm1lZGlhUGxh
eWVyKCk7Ci0gICAgaWYgKCFtZWRpYVBsYXllcikgewotICAgICAgICBlcnJvckNvZGUgPSBOT1Rf
U1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgbV9z
ZXNzaW9uSWQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7Ci0KLSAgICBNZWRpYVBsYXll
cjo6TWVkaWFLZXlFeGNlcHRpb24gZXJyb3I7Ci0gICAgUmVmUHRyPFVpbnQ4QXJyYXk+IHJlcXVl
c3QgPSBtZWRpYVBsYXllci0+Z2VuZXJhdGVLZXlSZXF1ZXN0KG1fc2Vzc2lvbklkLCBtaW1lVHlw
ZSwgaW5pdERhdGEsIGRlc3RpbmF0aW9uVVJMLCBlcnJvciwgc3lzdGVtQ29kZSk7Ci0gICAgZXJy
b3JDb2RlID0gTWVkaWFLZXlFeGNlcHRpb25Ub0Vycm9yQ29kZShlcnJvcik7Ci0gICAgcmV0dXJu
IHJlcXVlc3Q7Ci19Ci0KLXZvaWQgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbjo6cmVsZWFzZUtleXMo
KQotewotICAgIE1lZGlhUGxheWVyKiBtZWRpYVBsYXllciA9IG1fcGFyZW50LT5jZG0oKS0+bWVk
aWFQbGF5ZXIoKTsKLSAgICBpZiAoIW1lZGlhUGxheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtZWRpYVBsYXllci0+cmVsZWFzZUtleXMobV9zZXNzaW9uSWQpOwotfQotCi1ib29sIENETVNl
c3Npb25BVkZvdW5kYXRpb246OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFy
cmF5PiYgbmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxv
bmcmIHN5c3RlbUNvZGUpCi17Ci0gICAgaWYgKCFrZXkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIE1lZGlhUGxheWVyKiBtZWRpYVBsYXllciA9IG1fcGFyZW50LT5jZG0oKS0+bWVkaWFQ
bGF5ZXIoKTsKLSAgICBpZiAoIW1lZGlhUGxheWVyKSB7Ci0gICAgICAgIGVycm9yQ29kZSA9IE5P
VF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBN
ZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gZXJyb3I7Ci0gICAgYm9vbCBzdWNjZWVkZWQg
PSBtZWRpYVBsYXllci0+dXBkYXRlKG1fc2Vzc2lvbklkLCBrZXksIG5leHRNZXNzYWdlLCBlcnJv
ciwgc3lzdGVtQ29kZSk7Ci0gICAgZXJyb3JDb2RlID0gTWVkaWFLZXlFeGNlcHRpb25Ub0Vycm9y
Q29kZShlcnJvcik7Ci0gICAgcmV0dXJuIHN1Y2NlZWRlZDsKLX0KLQotfQotCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0
ZU1lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZU1lZGlhUGxheWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTI0YzM4YTE1M2UyZDE5YWUx
MGQ1NmYwODM4ZjIwYjAwNjA5MjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlTWVkaWFQbGF5ZXIuY3BwCkBAIC0wLDAg
KzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkNETVBy
aXZhdGVNZWRpYVBsYXllci5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKwor
I2ltcG9ydCAiQ0RNLmgiCisjaW1wb3J0ICJDRE1TZXNzaW9uLmgiCisjaW1wb3J0ICJDb250ZW50
VHlwZS5oIgorI2ltcG9ydCAiRXhjZXB0aW9uQ29kZS5oIgorI2ltcG9ydCAiTWVkaWFQbGF5ZXIu
aCIKKyNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9v
bCBDRE1Qcml2YXRlTWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtKQoreworICAgIHJldHVybiBNZWRpYVBsYXllcjo6c3VwcG9ydHNLZXlTeXN0ZW0o
a2V5U3lzdGVtLCBlbXB0eVN0cmluZygpKTsKK30KKworYm9vbCBDRE1Qcml2YXRlTWVkaWFQbGF5
ZXI6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpzdXBw
b3J0c0tleVN5c3RlbShrZXlTeXN0ZW0sIG1pbWVUeXBlKTsKK30KKworYm9vbCBDRE1Qcml2YXRl
TWVkaWFQbGF5ZXI6OnN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sK
KyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtKG1fY2RtLT5rZXlTeXN0
ZW0oKSwgbWltZVR5cGUpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q0RNU2Vzc2lvbj4gQ0RNUHJp
dmF0ZU1lZGlhUGxheWVyOjpjcmVhdGVTZXNzaW9uKCkKK3sKKyAgICBNZWRpYVBsYXllciogbWVk
aWFQbGF5ZXIgPSBtX2NkbS0+bWVkaWFQbGF5ZXIoKTsKKyAgICBpZiAoIW1lZGlhUGxheWVyKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBtZWRpYVBsYXllci0+Y3JlYXRl
U2Vzc2lvbihtX2NkbS0+a2V5U3lzdGVtKCkpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlTWVkaWFQ
bGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0
ZU1lZGlhUGxheWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDEwOTY4OTE0YzlmYzkxMjY0NDMyNGRhMDNiYTY3
YTVjMWNiOTBkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZU1lZGlhUGxheWVyLmgKQEAgLTAsMCArMSw2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQ0RNUHJpdmF0ZU1lZGlhUGxheWVyX2gKKyNkZWZpbmUgQ0RNUHJp
dmF0ZU1lZGlhUGxheWVyX2gKKworI2luY2x1ZGUgIkNETVByaXZhdGUuaCIKKyNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUFfVjIpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0RN
OworCitjbGFzcyBDRE1Qcml2YXRlTWVkaWFQbGF5ZXIgOiBwdWJsaWMgQ0RNUHJpdmF0ZUludGVy
ZmFjZSB7CitwdWJsaWM6CisgICAgLy8gQ0RNRmFjdG9yeSBzdXBwb3J0OgorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENETVByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShDRE0qIGNkbSkgeyByZXR1cm4g
YWRvcHRQdHIobmV3IENETVByaXZhdGVNZWRpYVBsYXllcihjZG0pKTsgfQorICAgIHN0YXRpYyBi
b29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBib29sIHN1
cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpOworCisgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZU1lZGlhUGxheWVy
KCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxDRE1TZXNz
aW9uPiBjcmVhdGVTZXNzaW9uKCkgb3ZlcnJpZGU7CisKKyAgICBDRE0qIGNkbSgpIGNvbnN0IHsg
cmV0dXJuIG1fY2RtOyB9CisKK3Byb3RlY3RlZDoKKyAgICBDRE1Qcml2YXRlTWVkaWFQbGF5ZXIo
Q0RNKiBjZG0pIDogbV9jZG0oY2RtKSB7IH0KKyAgICBDRE0qIG1fY2RtOworfTsKKworfQorCisj
ZW5kaWYKKworI2VuZGlmIC8vIENETVByaWF2YXRlTWVkaWFQbGF5ZXJfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24u
Y3BwCmluZGV4IGM1NDJhMGNmNjE5YTExMDgzYTJjMmFiYTVlNDc2NDY0M2Y4NWQzMDMuLjcwYTcz
Y2UwZDc5YmZmYmY2OGM2ZWJmOTE0MWQ3YTA2OTY4ZjU0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQogCiAjaW5j
bHVkZSAiQ0RNLmgiCisjaW5jbHVkZSAiQ0RNU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkV2ZW50Lmgi
CiAjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIKICNpbmNsdWRlICJNZWRpYUtleUVycm9y
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVNlc3Npb24uaAppbmRleCAwZDUzMmVhMGRmOTY3YTI3MTIwY2Y0YTdjNmIxYzk2ZWFl
MDQ3NjI4Li5jNWFmYmViYjlhOWM0M2ZmNWI2YjdkYTAzYzdjNTMzMTMxZTIwMjY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHJvdGVjdGVkOgogICAgIFN0cmluZyBtX3Nlc3Np
b25JZDsKICAgICBSZWZQdHI8TWVkaWFLZXlFcnJvcj4gbV9lcnJvcjsKICAgICBHZW5lcmljRXZl
bnRRdWV1ZSBtX2FzeW5jRXZlbnRRdWV1ZTsKLSAgICBPd25QdHI8Q0RNU2Vzc2lvbj4gbV9zZXNz
aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9uPiBtX3Nlc3Npb247CiAKICAgICBz
dHJ1Y3QgUGVuZGluZ0tleVJlcXVlc3QgewogICAgICAgICBQZW5kaW5nS2V5UmVxdWVzdChjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSkgOiBtaW1lVHlwZShtaW1l
VHlwZSksIGluaXREYXRhKGluaXREYXRhKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmNmNlNTU2ZWQyNDVhNTQyZTBkYjBh
MDY5ZGFkZDBhMjAyNDEzZmZmLi4wNWI0NTZhNzMzNGY5NDE4MWM3ZjY0MWQwNzIwZDVhMDgzYTI3
NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC01NDU2LDcgKzU0NTYsNiBAQAogCQlDRDNFMjUxQzE4MDQ2QjA2MDBFMjdGNTYg
LyogR3JpZENvb3JkaW5hdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEM0UyNTFCMTgwNDZCMDYwMEUyN0Y1NiAvKiBHcmlkQ29vcmRpbmF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEM0UyNTIz
MTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTIxMTgwNDZCQ0Qw
MEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmNwcCAqLzsgfTsKIAkJQ0QzRTI1
MjQxODA0NkJDRDAwRTI3RjU2IC8qIENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTIyMTgwNDZCQ0Qw
MEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmggKi87IH07Ci0JCUNENDdCM0ZD
MTZDQzM0RjgwMEEyMUVDOCAvKiBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0N0IzRkExNkNDMzRGODAwQTIx
RUM4IC8qIENETVByaXZhdGVBVkZvdW5kYXRpb24ubW0gKi87IH07CiAJCUNENEFDNTJBMTQ5NkFF
OUEwMDg3QzRFRiAvKiBDb21wb3NpdGUud2F2IGluIENvcHkgQXVkaW8gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENEFDNTI4MTQ5NkFFMkYwMDg3QzRFRiAv
KiBDb21wb3NpdGUud2F2ICovOyB9OwogCQlDRDUzOTNEMzE3NUUwMTg2MDBDMDcxMjMgLyogSlNN
ZW1vcnlJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENENTM5M0QxMTc1RTAxODYwMEMwNzEyMyAvKiBKU01lbW9yeUluZm8uY3BwICovOyB9Owog
CQlDRDUzOTNENDE3NUUwMTg2MDBDMDcxMjMgLyogSlNNZW1vcnlJbmZvLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDUzOTNEMjE3NUUwMTg2MDBDMDcx
MjMgLyogSlNNZW1vcnlJbmZvLmggKi87IH07CkBAIC01NTI5LDEwICs1NTI4LDEzIEBACiAJCUNE
QzhCNUFCMTgwNDdGRjEwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDOEI1QTkxODA0
N0ZGMTAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggKi87IH07CiAJCUNE
QzhCNUFEMTgwNEFFNUQwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREM4QjVBQzE4MDRB
RTVEMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oICovOyB9OwogCQlDRENB
ODI5NjE2NzkxMDBGMDA4NzU3MTQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JT1MubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODI5NDE2Nzkx
MDBGMDA4NzU3MTQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JT1MubW0gKi87IH07CisJCUNE
Q0E5OEVCMThCMkM4RUIwMEMxMkZGOSAvKiBDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTk4RUExOEIyQzhF
QjAwQzEyRkY5IC8qIENETVByaXZhdGVNZWRpYVBsYXllci5jcHAgKi87IH07CiAJCUNERDUyNUQ3
MTQ1QjZERDAwMDhEMjA0RCAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQ0MxNDVCNkFGRTAw
QzRDN0FBIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCUNERDcwODk2
MTgzNTlGNkYwMDJCM0RDNiAvKiBTYW1wbGVNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RENzA4OTQxODM1OUY2RTAwMkIzREM2IC8qIFNhbXBs
ZU1hcC5jcHAgKi87IH07CiAJCUNERDcwODk3MTgzNTlGNkYwMDJCM0RDNiAvKiBTYW1wbGVNYXAu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERDcwODk1
MTgzNTlGNkYwMDJCM0RDNiAvKiBTYW1wbGVNYXAuaCAqLzsgfTsKIAkJQ0REQzFFN0ExOEE5NTJG
MzAwMjdBOUQ0IC8qIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0REQzFFNzkxOEE5NTJGMzAwMjdBOUQ0IC8q
IE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oICovOyB9OworCQlDRERENTcxNTE4QjU3QTgyMDBB
OTRGQ0IgLyogQ0RNU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RERTAyRTkxOEIzREZDNzAwQ0Y3RkYxIC8qIENETVNlc3Npb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRERFMDJFRDE4
QjNFRDZEMDBDRjdGRjEgLyogQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRERFMDJFQjE4QjNFRDZEMDBD
RjdGRjEgLyogQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0gKi87IH07CiAJCUNERTNBODU0
MTdGNUZDRTYwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFM0E4NTIxN0Y1RkNFNjAwQzVCRTIw
IC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGLmggKi87IH07CiAJCUNERTNBODU3MTdGNjAyMDQwMEM1
QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREUzQTg1NTE3RjYwMjA0MDBDNUJFMjAgLyogQXVk
aW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tICovOyB9OwogCQlDREUzQTg1ODE3RjYwMjA0MDBDNUJF
MjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREUzQTg1NjE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9U
cmFja1ByaXZhdGVBVkZPYmpDLmggKi87IH07CkBAIC0xMjY3OCw4ICsxMjY4MCw2IEBACiAJCUNE
M0UyNTFCMTgwNDZCMDYwMEUyN0Y1NiAvKiBHcmlkQ29vcmRpbmF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBHcmlkQ29vcmRpbmF0ZS5oOyBwYXRoID0gc3R5bGUvR3JpZENv
b3JkaW5hdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzRTI1MjExODA0NkJD
RDAwRTI3RjU2IC8qIENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0UyNTIyMTgwNDZCQ0QwMEUyN0Y1NiAvKiBD
U1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQ0Q0N0IzRjkxNkNDMzRGODAwQTIxRUM4IC8qIENETVByaXZhdGVBVkZvdW5kYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0RNUHJpdmF0ZUFWRm91bmRhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRDQ3QjNGQTE2Q0MzNEY4MDBBMjFF
QzggLyogQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IENETVByaXZhdGVBVkZvdW5kYXRpb24ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNENEFDNTI4MTQ5NkFFMkYwMDg3QzRFRiAvKiBDb21wb3NpdGUud2F2
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXVkaW8u
d2F2OyBuYW1lID0gQ29tcG9zaXRlLndhdjsgcGF0aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNl
cy9Db21wb3NpdGUud2F2OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCUNENEUwQUZB
MTFGN0JDMjcwMDlEMzgxMSAvKiBmdWxsc2NyZWVuLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBw
YXRoID0gZnVsbHNjcmVlbi5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTM5
M0NCMTc1RENDRTYwMEMwNzEyMyAvKiBNZW1vcnlJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lbW9yeUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEyNzg3LDExICsxMjc4NywxNiBAQAogCQlDREM4QjVBOTE4MDQ3RkYxMDAxNkU2ODUgLyogU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDsgcGF0aCA9IG9iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDOEI1QUMx
ODA0QUU1RDAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRENBODI5NDE2NzkxMDBGMDA4NzU3MTQgLyogVGV4
dFRyYWNrUmVwcmVzZW50YXRpb25JT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbklPUy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RDQTk4RTkxOEIyQzhEMDAwQzEyRkY5IC8qIENETVByaXZhdGVNZWRp
YVBsYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRE1Qcml2YXRlTWVk
aWFQbGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDQTk4RUExOEIyQzhF
QjAwQzEyRkY5IC8qIENETVByaXZhdGVNZWRpYVBsYXllci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRENFNUNEMDE0NjMzQkM5MDBENDdDQ0EgLyogRXZlbnRUYXJn
ZXRGYWN0b3J5LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEV2ZW50VGFyZ2V0RmFjdG9yeS5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0REMUU1MjUxNjdCQTU2NDAwQ0U4MjBC
IC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRleHRUcmFja1JlcHJlc2VudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNERDcwODk0MTgzNTlGNkUwMDJCM0RDNiAvKiBTYW1wbGVNYXAuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2FtcGxlTWFwLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RENzA4OTUxODM1OUY2RjAwMkIzREM2IC8qIFNhbXBsZU1hcC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1wbGVNYXAuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0REQzFFNzkxOEE5NTJGMzAwMjdBOUQ0IC8qIE1lZGlhU291
cmNlUHJpdmF0ZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRp
YVNvdXJjZVByaXZhdGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RE
RTAyRTkxOEIzREZDNzAwQ0Y3RkYxIC8qIENETVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0RN
U2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRERFMDJFQTE4QjNFRDZE
MDBDRjdGRjEgLyogQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaDsgcGF0aCA9IG9i
amMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RERTAyRUIxOEIzRUQ2RDAwQ0Y3RkYxIC8qIENETVNlc3Npb25BVkZvdW5kYXRpb25P
YmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQ0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakMubW07IHBhdGggPSBvYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25P
YmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREUzQTg1MjE3RjVGQ0U2MDBD
NUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXVkaW9UcmFja1ByaXZhdGVBVkYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0RFM0E4NTUxN0Y2MDIwNDAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2Jq
Qy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEF1ZGlvVHJhY2tQ
cml2YXRlQVZGT2JqQy5tbTsgcGF0aCA9IG9iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREUzQTg1NjE3RjYwMjA0MDBDNUJFMjAg
LyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5oOyBwYXRoID0gb2JqYy9BdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NzU5LDYg
KzE5NzY0LDcgQEAKIAkJCQlCRUYyOUVFOTE3MTVERDA5MDBDNEI0QzkgLyogQXVkaW9UcmFja1By
aXZhdGUuaCAqLywKIAkJCQlBODk5NDMyNzBCNDIzMzg3MDBEN0M4MDIgLyogQml0bWFwSW1hZ2Uu
Y3BwICovLAogCQkJCUE4OTk0MzI2MEI0MjMzODcwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5oICov
LAorCQkJCUNEREUwMkU5MThCM0RGQzcwMENGN0ZGMSAvKiBDRE1TZXNzaW9uLmggKi8sCiAJCQkJ
QjI3NTM1MzgwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yLmNwcCAqLywKIAkJCQlCMjc1MzUzOTBC
MDUzODE0MDAyQ0U2NEYgLyogQ29sb3IuaCAqLywKIAkJCQk5MzgyREY1NzEwQThENUM5MDA5MjU2
NTIgLyogQ29sb3JTcGFjZS5oICovLApAQCAtMjA4NzIsOCArMjA4NzgsOCBAQAogCQkJCUNEQTk4
RTA5MTYwM0NENTkwMEZFQTNCMSAvKiBDRE0uY3BwICovLAogCQkJCUNEQTk4RTBBMTYwM0NENTkw
MEZFQTNCMSAvKiBDRE0uaCAqLywKIAkJCQlDREE5OEUwQzE2MDNDRjNDMDBGRUEzQjEgLyogQ0RN
UHJpdmF0ZS5oICovLAotCQkJCUNENDdCM0Y5MTZDQzM0RjgwMEEyMUVDOCAvKiBDRE1Qcml2YXRl
QVZGb3VuZGF0aW9uLmggKi8sCi0JCQkJQ0Q0N0IzRkExNkNDMzRGODAwQTIxRUM4IC8qIENETVBy
aXZhdGVBVkZvdW5kYXRpb24ubW0gKi8sCisJCQkJQ0RDQTk4RTkxOEIyQzhEMDAwQzEyRkY5IC8q
IENETVByaXZhdGVNZWRpYVBsYXllci5oICovLAorCQkJCUNEQ0E5OEVBMThCMkM4RUIwMEMxMkZG
OSAvKiBDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuY3BwICovLAogCQkJCUNEQTk4REQ1MTYwMjVCRUQw
MEZFQTNCMSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgKi8sCiAJCQkJQ0RBOThERDYxNjAy
NUJFRDAwRkVBM0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmggKi8sCiAJCQkJQ0RBOThERDcx
NjAyNUJFRTAwRkVBM0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbCAqLywKQEAgLTIwOTc4
LDYgKzIwOTg0LDggQEAKIAkJCQlDRDU0QTc2MTE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCAqLywKIAkJCQlDRDMzNkY2MDE3RjlGNjQ3MDBE
RERDRDAgLyogQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oICovLAogCQkJCUNEMzM2RjVGMTdG
OUY2NDcwMERERENEMCAvKiBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1tICovLAorCQkJCUNE
REUwMkVBMThCM0VENkQwMENGN0ZGMSAvKiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oICov
LAorCQkJCUNEREUwMkVCMThCM0VENkQwMENGN0ZGMSAvKiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9u
T2JqQy5tbSAqLywKIAkJCQkwN0FBNkI2OTE2NkQwMTk1MDBENDU2NzEgLyogSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRk9iakMuaCAqLywKIAkJCQkwN0FBNkI2QTE2NkQwMTk1MDBENDU2NzEgLyog
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gKi8sCiAJCQkJMDczNjdEREQxNzJDQTY3
RjAwRDg2MUI5IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmggKi8sCkBA
IC0yNDA0MCw2ICsyNDA0OCw3IEBACiAJCQkJMUFCQTgwMDAxODk3MzQxMjAwRENFOUQ2IC8qIFZp
c2l0ZWRMaW5rUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFMDg4OEQ1MTE0ODg0OEEw
MEFGNDI2NSAvKiBKU0RPTUZvcm1EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUMzNkMwMzBF
QjA3NkQ2MDA3NDEwQkMgLyogSlNET01HbG9iYWxPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUNEREQ1NzE1MThCNTdBODIwMEE5NEZDQiAvKiBDRE1TZXNzaW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2NURGMzFGODA5RDFDQzYwMDAwQkUzMjUgLyogSlNET01JbXBsZW1lbnRhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTlEMjQ4MDcwRDc1N0U3RDAwRkRGOTU5IC8qIEpTRE9NTWltZVR5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE5RDI0ODA5MEQ3NTdFN0QwMEZERjk1OSAvKiBKU0RP
TU1pbWVUeXBlQXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAtMjY0MTgsNyArMjY0MjcsNiBAQAog
CQkJCTY1NTBCNjlEMDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDc4RTA5MDkxN0QxNENFRTAwNDIwQUExIC8qIFJUQ0ljZUNhbmRpZGF0ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE5OEUwQjE2MDNDRDYwMDBGRUEzQjEgLyogQ0RNLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCUNENDdCM0ZDMTZDQzM0RjgwMEEyMUVDOCAvKiBDRE1Qcml2
YXRlQVZGb3VuZGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTkwQTFBMDQxOEFEQTQ4NDAw
MTgzRkQxIC8qIFJlcGxheUlucHV0VHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFBOEU1
NjYxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTk3QkM2OURDMTUwNUYwNzYwMDFCNzRBQyAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTI3MDgyLDYgKzI3MDkwLDcgQEAKIAkJCQk5NzdCMzg2NjEyMjg4M0U5
MDBCODFGRjggLyogSFRNTERvY3VtZW50UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkz
MzA5REU3MDk5RTY0OTIwMDU2RTU4MSAvKiBodG1sZWRpdGluZy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBNTE2RThCODEzNkUwNERCMDA3NkMzQzAgLyogTG9jYWxpemVkRGF0ZUNhY2hlLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJQ0RERTAyRUQxOEIzRUQ2RDAwQ0Y3RkYxIC8qIENETVNlc3Npb25B
VkZvdW5kYXRpb25PYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlBOTIwODI0NUU1OTAw
MUU5QUJDIC8qIEhUTUxFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTdBOEYwMTgx
ODU0MjUwMDlGODIxRCAvKiBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTE3QzgxMjIwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTI3Nzc1LDYgKzI3Nzg0LDcgQEAKIAkJCQlCMjdCMjgyNzBD
RUYwQzA3MDBEMzlENTQgLyogSlNTVkdHbHlwaEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMDcwMzYzRTExODFBMUNEQzAwQzA3NEE1IC8qIEFWQXVkaW9DYXB0dXJlU291cmNlLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMjREOTEyOTgxM0NBOTZERTAwRDIxOTE1IC8qIEpTU1ZHR2x5cGhS
ZWZFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQ0E5OEVCMThCMkM4RUIwMEMxMkZG
OSAvKiBDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNE
OUMwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHR3JhZGllbnRFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg1MTc0RUMyQkNDQUYxN0VBRTNGNDZGOCAvKiBKU1NWR0dyYXBoaWNzRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDg1MjI3QjExOTAxNjJDMDA2RURDN0YgLyogSlNT
VkdIS2VybkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DRE1TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9DRE1TZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRlMjEwNWIwNWU2MjU3NWU2
ZGRmNTUwNGE0NDgzMThmMGNhOWZkYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NETVNlc3Npb24uaApAQCAtMCwwICsxLDYwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzXTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIENETVNlc3Npb25faAorI2RlZmluZSBDRE1TZXNzaW9uX2gKKworI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJy
YXkuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgQ0RNU2Vzc2lvbkNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q0RN
U2Vzc2lvbkNsaWVudCgpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2UoVWludDhB
cnJheSosIFN0cmluZyBkZXN0aW5hdGlvblVSTCkgPSAwOworfTsKKworY2xhc3MgQ0RNU2Vzc2lv
biB7CitwdWJsaWM6CisgICAgQ0RNU2Vzc2lvbigpIHsgfQorICAgIHZpcnR1YWwgfkNETVNlc3Np
b24oKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoQ0RNU2Vzc2lvbkNsaWVudCop
ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGlu
YXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3Rl
bUNvZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUtleXMoKSA9IDA7CisgICAgdmly
dHVhbCBib29sIHVwZGF0ZShVaW50OEFycmF5KiwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVz
c2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29k
ZSkgPSAwOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikK
KworI2VuZGlmIC8vIENETVNlc3Npb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGEwY2ZjMTk1YzhlNjBiZTJiYTBhNzI3ZWE3
NjIyYTRmNDI5MzRmMWIuLjlhZWZmNjM2ZjliZmQ3OGQyODRjZjg3MDI5NGM3YjE0MzAyZWYxYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAKQEAgLTUyNiwxOSArNTI2LDkgQEAgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIE1l
ZGlhUGxheWVyOjpjYW5jZWxLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYga2V5U3kKICNlbmRpZgog
CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKLVBhc3NSZWZQdHI8VWludDhBcnJheT4g
TWVkaWFQbGF5ZXI6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVz
dGluYXRpb25VUkwsIE1lZGlhS2V5RXhjZXB0aW9uJiBlcnJvciwgdW5zaWduZWQgbG9uZyYgc3lz
dGVtQ29kZSkKK3N0ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9uPiBNZWRpYVBsYXllcjo6Y3JlYXRl
U2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKIHsKLSAgICByZXR1cm4gbV9wcml2YXRl
LT5nZW5lcmF0ZUtleVJlcXVlc3Qoc2Vzc2lvbklELCBtaW1lVHlwZSwgaW5pdERhdGEsIGRlc3Rp
bmF0aW9uVVJMLCBlcnJvciwgc3lzdGVtQ29kZSk7Ci19Ci0KLXZvaWQgTWVkaWFQbGF5ZXI6OnJl
bGVhc2VLZXlzKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklEKQotewotICAgIG1fcHJpdmF0ZS0+cmVs
ZWFzZUtleXMoc2Vzc2lvbklEKTsKLX0KLQotYm9vbCBNZWRpYVBsYXllcjo6dXBkYXRlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklELCBVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYg
bmV4dE1lc3NhZ2UsIE1lZGlhS2V5RXhjZXB0aW9uJiBlcnJvciwgdW5zaWduZWQgbG9uZyYgc3lz
dGVtQ29kZSkKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT51cGRhdGUoc2Vzc2lvbklELCBrZXks
IG5leHRNZXNzYWdlLCBlcnJvciwgc3lzdGVtQ29kZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+
Y3JlYXRlU2Vzc2lvbihrZXlTeXN0ZW0pOwogfQogI2VuZGlmCiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCAxZDQ3Y2MyMWQzZmU3
NDk4ZDM5YTFhM2VkYWJlNWE5NTUzYTljYTRiLi5mNzE2YmYxNDRjN2RjNmM0OWE5NTY5NTZjNGRk
MzE0YTBmMzg0ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNlbmRpZgogCiAjaW5jbHVkZSAiQXVkaW9U
cmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJDRE1TZXNzaW9uLmgiCiAjaW5jbHVkZSAiSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJVUkwu
aCIKQEAgLTMyOSw5ICszMzAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUFfVjIpCi0gICAgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJl
cXVlc3QoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVp
bnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCBNZWRpYUtleUV4Y2Vw
dGlvbiYgZXJyb3IsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpOwotICAgIHZvaWQgcmVsZWFz
ZUtleXMoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQpOwotICAgIGJvb2wgdXBkYXRlKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklELCBVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4
dE1lc3NhZ2UsIE1lZGlhS2V5RXhjZXB0aW9uJiBlcnJvciwgdW5zaWduZWQgbG9uZyYgc3lzdGVt
Q29kZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPENETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0pOwogI2VuZGlmCiAKICAgICBib29sIHBhdXNlZCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaAppbmRleCBjY2NmYjRlNTZjNzYzYjE1NWIzMWViNzEwYTI1NjE1ZjU3ZTJjMTgx
Li4xNzhjN2VlOTY4ZDdhOTIyNWZiYTIzMTI4MDk4ODczYzExNDJiZGI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApA
QCAtMjA4LDkgKzIwOCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQV9WMikKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVL
ZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFVpbnQ4QXJyYXkqLCBTdHJp
bmcmLCBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24mLCB1bnNpZ25lZCBsb25nJikgeyBy
ZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlS2V5cyhjb25zdCBTdHJp
bmcmKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlKGNvbnN0IFN0cmluZyYsIFVpbnQ4QXJy
YXkqLCBSZWZQdHI8VWludDhBcnJheT4mLCBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24m
LCB1bnNpZ25lZCBsb25nJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6dW5p
cXVlX3B0cjxDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYpIHsgcmV0dXJu
IG51bGxwdHI7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTc2MDEwN2E2ZTkyYWZiNTdmYmM1MzI0ZjUzYmI4YThkMjY3MTcxNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakNfaAorI2RlZmluZSBDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uT2JqQ19oCisKKyNpbmNsdWRlICJDRE1TZXNzaW9uLmgiCisjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwOTAKKworT0JKQ19DTEFTUyBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVz
dDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOworCitjbGFzcyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyA6IHB1Ymxp
YyBDRE1TZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyhN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQpOworICAgIHZpcnR1YWwg
fkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Q2xpZW50KENETVNlc3Npb25DbGllbnQqIGNsaWVudCkgb3ZlcnJpZGUgeyBtX2NsaWVudCA9IGNs
aWVudDsgfQorICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxVaW50
OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhB
cnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBl
cnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCByZWxlYXNlS2V5cygpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGUo
VWludDhBcnJheSosIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNo
b3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpIG92ZXJyaWRlOworCitw
cm90ZWN0ZWQ6CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogbV9wYXJl
bnQ7CisgICAgQ0RNU2Vzc2lvbkNsaWVudCogbV9jbGllbnQ7CisgICAgU3RyaW5nIG1fc2Vzc2lv
bklkOworICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9yZXF1
ZXN0OworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmIC8vIENETVNlc3Npb25BVkZvdW5kYXRp
b25PYmpDX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTZjM2ZmNTVhNjNhMjk1ZjhiOGQ0OWIxYzA5OGI3
NmI1ODhhYWZiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCkBA
IC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQV9WMikgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisKKyNp
bXBvcnQgIkNETS5oIgorI2ltcG9ydCAiQ0RNU2Vzc2lvbi5oIgorI2ltcG9ydCAiRXhjZXB0aW9u
Q29kZS5oIgorI2ltcG9ydCAiTWVkaWFQbGF5ZXIuaCIKKyNpbXBvcnQgIk1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaCIKKyNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCisjaW1wb3J0
ICJVVUlELmgiCisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZGb3VuZGF0aW9uLmg+CisjaW1wb3J0
IDxvYmpjL29iamMtcnVudGltZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NPRlRfTElO
S19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91
bmRhdGlvbiwgQVZVUkxBc3NldCkKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQXNz
ZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0KQorI2RlZmluZSBBVlVSTEFzc2V0IGdldEFWVVJMQXNz
ZXRDbGFzcygpCisjZGVmaW5lIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0IGdldEFWQXNz
ZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0KCkKKworCitDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2Jq
Qzo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQyogcGFyZW50KQorICAgIDogbV9wYXJlbnQocGFyZW50KQorICAgICwgbV9jbGllbnQo
bnVsbHB0cikKKyAgICAsIG1fc2Vzc2lvbklkKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkK
K3sKK30KKworUGFzc1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2Jq
Qzo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkq
IGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JD
b2RlLCB1bnNpZ25lZCBsb25nJiBzeXN0ZW1Db2RlKQoreworICAgIFVOVVNFRF9QQVJBTShtaW1l
VHlwZSk7CisKKyAgICBTdHJpbmcga2V5VVJJOworICAgIFN0cmluZyBrZXlJRDsKKyAgICBSZWZQ
dHI8VWludDhBcnJheT4gY2VydGlmaWNhdGU7CisgICAgaWYgKCFNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0
RGF0YShpbml0RGF0YSwga2V5VVJJLCBrZXlJRCwgY2VydGlmaWNhdGUpKSB7CisgICAgICAgIGVy
cm9yQ29kZSA9IE1lZGlhUGxheWVyOjpJbnZhbGlkUGxheWVyU3RhdGU7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKworICAgIG1fcmVxdWVzdCA9IG1fcGFyZW50LT50YWtlUmVxdWVzdEZvcktl
eVVSSShrZXlVUkkpOworICAgIGlmICghbV9yZXF1ZXN0KSB7CisgICAgICAgIGVycm9yQ29kZSA9
IE1lZGlhUGxheWVyOjpJbnZhbGlkUGxheWVyU3RhdGU7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIFJldGFpblB0cjxOU0RhdGE+IGNlcnRpZmljYXRlRGF0YSA9IGFkb3B0
TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6Y2VydGlmaWNhdGUtPmJhc2VBZGRyZXNz
KCkgbGVuZ3RoOmNlcnRpZmljYXRlLT5ieXRlTGVuZ3RoKCldKTsKKyAgICBOU1N0cmluZyogYXNz
ZXRTdHIgPSBrZXlJRDsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBhc3NldElEID0gW05TRGF0YSBk
YXRhV2l0aEJ5dGVzOiBbYXNzZXRTdHIgY1N0cmluZ1VzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddIGxlbmd0aDpbYXNzZXRTdHIgbGVuZ3RoT2ZCeXRlc1VzaW5nRW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddXTsKKyAgICBOU0Vycm9yKiBuc0Vycm9yID0gMDsKKyAgICBSZXRh
aW5QdHI8TlNEYXRhPiBrZXlSZXF1ZXN0ID0gW21fcmVxdWVzdCBzdHJlYW1pbmdDb250ZW50S2V5
UmVxdWVzdERhdGFGb3JBcHA6Y2VydGlmaWNhdGVEYXRhLmdldCgpIGNvbnRlbnRJZGVudGlmaWVy
OmFzc2V0SUQuZ2V0KCkgb3B0aW9uczpuaWwgZXJyb3I6Jm5zRXJyb3JdOworCisgICAgaWYgKCFr
ZXlSZXF1ZXN0KSB7CisgICAgICAgIE5TRXJyb3IqIHVuZGVybHlpbmdFcnJvciA9IFtbbnNFcnJv
ciB1c2VySW5mb10gb2JqZWN0Rm9yS2V5Ok5TVW5kZXJseWluZ0Vycm9yS2V5XTsKKyAgICAgICAg
c3lzdGVtQ29kZSA9IFt1bmRlcmx5aW5nRXJyb3IgY29kZV07CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKworICAgIGVycm9yQ29kZSA9IE1lZGlhUGxheWVyOjpOb0Vycm9yOworICAgIHN5c3Rl
bUNvZGUgPSAwOworICAgIGRlc3RpbmF0aW9uVVJMID0gU3RyaW5nKCk7CisKKyAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IGtleVJlcXVlc3RCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKFtrZXlS
ZXF1ZXN0LmdldCgpIGJ5dGVzXSwgW2tleVJlcXVlc3QuZ2V0KCkgbGVuZ3RoXSk7CisgICAgcmV0
dXJuIFVpbnQ4QXJyYXk6OmNyZWF0ZShrZXlSZXF1ZXN0QnVmZmVyLCAwLCBrZXlSZXF1ZXN0QnVm
ZmVyLT5ieXRlTGVuZ3RoKCkpOworfQorCit2b2lkIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpD
OjpyZWxlYXNlS2V5cygpCit7Cit9CisKK2Jvb2wgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6
OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2Us
IHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpCit7
CisgICAgUmV0YWluUHRyPE5TRGF0YT4ga2V5RGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2Nd
IGluaXRXaXRoQnl0ZXM6a2V5LT5iYXNlQWRkcmVzcygpIGxlbmd0aDprZXktPmJ5dGVMZW5ndGgo
KV0pOworICAgIFtbbV9yZXF1ZXN0IGRhdGFSZXF1ZXN0XSByZXNwb25kV2l0aERhdGE6a2V5RGF0
YS5nZXQoKV07CisgICAgW21fcmVxdWVzdCBmaW5pc2hMb2FkaW5nXTsKKyAgICBlcnJvckNvZGUg
PSBNZWRpYVBsYXllcjo6Tm9FcnJvcjsKKyAgICBzeXN0ZW1Db2RlID0gMDsKKyAgICBuZXh0TWVz
c2FnZSA9IG51bGxwdHI7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMuaAppbmRleCBlMzc0Njk2M2UxYWU5NGYwMzIyOWQxMzk2MDg2Zjk1NWQ4
ZGU0YzM0Li42ODY3MDUzYmYzYTUzOTgzMGVhMTI1YWU5MWI4ZmU5MmNmYjA3YmNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKLSAgICBzdGF0aWMgUmV0YWluUHRyPEFWQXNzZXRS
ZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiB0YWtlUmVxdWVzdEZvclBsYXllckFuZEtleVVSSShNZWRp
YVBsYXllciosIGNvbnN0IFN0cmluZyYpOworICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VM
b2FkaW5nUmVxdWVzdD4gdGFrZVJlcXVlc3RGb3JLZXlVUkkoY29uc3QgU3RyaW5nJik7CiAjZW5k
aWYKIAogICAgIHZvaWQgcGxheWVySXRlbVN0YXR1c0RpZENoYW5nZShpbnQpOwpAQCAtMjAwLDkg
KzIwMCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFf
VjIpCi0gICAgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGlu
aXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNl
cHRpb24mIGVycm9yLCB1bnNpZ25lZCBsb25nJiBzeXN0ZW1Db2RlKTsKLSAgICB2b2lkIHJlbGVh
c2VLZXlzKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKLSAgICBib29sIHVwZGF0ZShjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgVWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mIG5l
eHRNZXNzYWdlLCBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24mIGVycm9yLCB1bnNpZ25l
ZCBsb25nJiBzeXN0ZW1Db2RlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0RNU2Vzc2lvbj4gY3Jl
YXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CiAjZW5kaWYKIAogICAgIHZpcnR1
YWwgU3RyaW5nIGxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjaygpIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggM2Q1ZThjMWFjOTNkNDE4YThlYjBjM2MzMDgxMWRm
YzhlZWYyMGFiYS4uZWUzY2MyMTUwOTM1Mjk3NmIxNTE3MzBhMDg1ODRiZWI2Yjc4YWViOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJBdWRpb1Ry
YWNrUHJpdmF0ZUFWRk9iakMuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgi
CiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKKyNpbXBvcnQgIkNETVNlc3Npb25BVkZvdW5k
YXRpb25PYmpDLmgiCiAjaW1wb3J0ICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbXBv
cnQgIkZsb2F0Q29udmVyc2lvbi5oIgogI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCkBAIC0x
NjE4LDY5ICsxNjE5LDE3IEBAIE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjYW5jZWxLZXlSZXF1CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCi1QYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5p
dERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2Vw
dGlvbiYgZXJyb3IsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpCitSZXRhaW5QdHI8QVZBc3Nl
dFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnRha2VSZXF1ZXN0Rm9yS2V5VVJJKGNvbnN0IFN0cmluZyYga2V5VVJJKQogewotICAgIFVO
VVNFRF9QQVJBTShtaW1lVHlwZSk7Ci0KLSAgICBTdHJpbmcga2V5VVJJOwotICAgIFN0cmluZyBr
ZXlJRDsKLSAgICBSZWZQdHI8VWludDhBcnJheT4gY2VydGlmaWNhdGU7Ci0gICAgaWYgKCFNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0
aWZpY2F0ZUZyb21Jbml0RGF0YShpbml0RGF0YSwga2V5VVJJLCBrZXlJRCwgY2VydGlmaWNhdGUp
KSB7Ci0gICAgICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6OkludmFsaWRQbGF5ZXJTdGF0ZTsKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxv
YWRpbmdSZXF1ZXN0PiByZXF1ZXN0ID0gbV9rZXlVUklUb1JlcXVlc3RNYXAudGFrZShrZXlVUkkp
OwotICAgIGlmICghcmVxdWVzdCkgewotICAgICAgICBlcnJvciA9IE1lZGlhUGxheWVyOjpJbnZh
bGlkUGxheWVyU3RhdGU7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIG1fc2Vzc2lv
bklEVG9SZXF1ZXN0TWFwLmFkZChzZXNzaW9uSWQsIHJlcXVlc3QpOwotCi0gICAgUmV0YWluUHRy
PE5TRGF0YT4gY2VydGlmaWNhdGVEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdp
dGhCeXRlczpjZXJ0aWZpY2F0ZS0+YmFzZUFkZHJlc3MoKSBsZW5ndGg6Y2VydGlmaWNhdGUtPmJ5
dGVMZW5ndGgoKV0pOwotICAgIE5TU3RyaW5nKiBhc3NldFN0ciA9IGtleUlEOwotICAgIFJldGFp
blB0cjxOU0RhdGE+IGFzc2V0SUQgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IFthc3NldFN0ciBj
U3RyaW5nVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gbGVuZ3RoOlthc3NldFN0
ciBsZW5ndGhPZkJ5dGVzVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwotICAg
IE5TRXJyb3IqIG5zRXJyb3IgPSAwOwotICAgIFJldGFpblB0cjxOU0RhdGE+IGtleVJlcXVlc3Qg
PSBbcmVxdWVzdCBzdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6Y2VydGlmaWNh
dGVEYXRhLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmFzc2V0SUQuZ2V0KCkgb3B0aW9uczpuaWwg
ZXJyb3I6Jm5zRXJyb3JdOwotCi0gICAgaWYgKCFrZXlSZXF1ZXN0KSB7Ci0gICAgICAgIE5TRXJy
b3IqIHVuZGVybHlpbmdFcnJvciA9IFtbbnNFcnJvciB1c2VySW5mb10gb2JqZWN0Rm9yS2V5Ok5T
VW5kZXJseWluZ0Vycm9yS2V5XTsKLSAgICAgICAgc3lzdGVtQ29kZSA9IFt1bmRlcmx5aW5nRXJy
b3IgY29kZV07Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGVycm9yID0gTWVkaWFQ
bGF5ZXI6Ok5vRXJyb3I7Ci0gICAgc3lzdGVtQ29kZSA9IDA7Ci0gICAgZGVzdGluYXRpb25VUkwg
PSBTdHJpbmcoKTsKLQotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2V5UmVxdWVzdEJ1ZmZlciA9
IEFycmF5QnVmZmVyOjpjcmVhdGUoW2tleVJlcXVlc3QuZ2V0KCkgYnl0ZXNdLCBba2V5UmVxdWVz
dC5nZXQoKSBsZW5ndGhdKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKGtleVJlcXVl
c3RCdWZmZXIsIDAsIGtleVJlcXVlc3RCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgcmV0dXJu
IG1fa2V5VVJJVG9SZXF1ZXN0TWFwLnRha2Uoa2V5VVJJKTsKIH0KIAotdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWxlYXNlS2V5cyhjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCkKK3N0ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogewot
ICAgIFVOVVNFRF9QQVJBTShzZXNzaW9uSWQpOwotfQotCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgVWludDhB
cnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCBNZWRpYVBsYXllcjo6
TWVkaWFLZXlFeGNlcHRpb24mIGVycm9yLCB1bnNpZ25lZCBsb25nJiBzeXN0ZW1Db2RlKQotewot
ICAgIEFTU0VSVChrZXkpOwotCi0gICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdS
ZXF1ZXN0PiByZXF1ZXN0ID0gbV9zZXNzaW9uSURUb1JlcXVlc3RNYXAuZ2V0KHNlc3Npb25JZCk7
Ci0gICAgaWYgKCFyZXF1ZXN0KSB7Ci0gICAgICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6OkludmFs
aWRQbGF5ZXJTdGF0ZTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIFJldGFp
blB0cjxOU0RhdGE+IGtleURhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5
dGVzOmtleS0+YmFzZUFkZHJlc3MoKSBsZW5ndGg6a2V5LT5ieXRlTGVuZ3RoKCldKTsKLSAgICBb
W3JlcXVlc3QgZGF0YVJlcXVlc3RdIHJlc3BvbmRXaXRoRGF0YTprZXlEYXRhLmdldCgpXTsKLSAg
ICBbcmVxdWVzdCBmaW5pc2hMb2FkaW5nXTsKLSAgICBlcnJvciA9IE1lZGlhUGxheWVyOjpOb0Vy
cm9yOwotICAgIHN5c3RlbUNvZGUgPSAwOwotICAgIG5leHRNZXNzYWdlID0gbnVsbHB0cjsKKyAg
ICBpZiAoIWtleVN5c3RlbUlzU3VwcG9ydGVkKGtleVN5c3RlbSkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM+KHRoaXMpOwogfQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224897</attachid>
            <date>2014-02-21 13:20:26 -0800</date>
            <delta_ts>2014-02-21 13:43:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129164-20140221132025.patch</filename>
            <type>text/plain</type>
            <size>56439</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0MzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc4ZTVhYWQ3MjE0ZmNm
Y2IyMmNiNDg3NGI3MWYzZGFmYWMwYmUzNS4uNmRmZGM0ZGZhZDIyZGUyNTllNTY1YWJmMGJkYzcw
NjdiMDE3ZjdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYwIEBACiAyMDE0LTAyLTIxICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIE1ha2UgYSBnZW5lcmljIENE
TVByaXZhdGVNZWRpYVBsYXllciBhbmQgbW92ZSBpdHMgQ0RNU2Vzc2lvbiBpbnRvIHBsYXRmb3Jt
Ly4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTE2
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
dGhlIHNlc3Npb24gY3JlYXRlZCBieSBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uIGludG8gcGxhdGZv
cm0sIGFuZCByZW5hbWUKKyAgICAgICAgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbiB0byBDRE1Qcml2
YXRlTWVkaWFQbGF5ZXIuIEZ1dHVyZSBtZWRpYSBlbmdpbmVzIHdobyB3YW50CisgICAgICAgIHRv
IHN1cHBvcnQgYSBrZXlzeXN0ZW0gZnJvbSB3aXRoaW4gdGhlIG1lZGlhIGVuZ2luZSBjYW4gY3Jl
YXRlIHRoZWlyIG93bgorICAgICAgICBDRE1TZXNzaW9uIGFzIHBhcnQgb2YgdGhlIE1lZGlhUGxh
eWVyUHJpdmF0ZSBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnN0YWxsZWRDRE1GYWN0b3JpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
UHJpdmF0ZS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNz
aW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lv
bi5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZUFWRm91bmRh
dGlvbi5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVBy
aXZhdGVNZWRpYVBsYXllci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24uY3BwLgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAg
IChXZWJDb3JlOjpDRE1Qcml2YXRlTWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWlt
ZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0
c01JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVNZWRpYVBsYXllcjo6Y3Jl
YXRlU2Vzc2lvbik6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRl
TWVkaWFQbGF5ZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5oLgorICAgICAgICAoV2ViQ29yZTo6Q0RN
UHJpdmF0ZU1lZGlhUGxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0
ZU1lZGlhUGxheWVyOjp+Q0RNUHJpdmF0ZU1lZGlhUGxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETVByaXZhdGVNZWRpYVBsYXllcjo6Y2RtKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZh
dGVNZWRpYVBsYXllcjo6Q0RNUHJpdmF0ZU1lZGlhUGxheWVyKToKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q0RNU2Vzc2lvbi5oOiBFeHRyYWN0ZWQgZnJvbSBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLmguCisg
ICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQ2xpZW50Ojp+Q0RNU2Vzc2lvbkNsaWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uOjpDRE1TZXNzaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETVNlc3Npb246On5DRE1TZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y3JlYXRl
U2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6Y3JlYXRlU2Vzc2lvbik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbk9iakMuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5oLgorICAgICAgICAoV2ViQ29yZTo6
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6On5DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakMubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24ubW0uCisgICAgICAgIChXZWJD
b3JlOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9i
akMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OmdlbmVy
YXRlS2V5UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9u
T2JqQzo6cmVsZWFzZUtleXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRh
dGlvbk9iakM6OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
RE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETVNlc3Npb246OnNldENsaWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiB0ZXN0
aW5nL01vY2tDRE0uaDoKKworMjAxNC0wMi0yMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKwogICAgICAgICBBZGQgYSBzdXBwb3J0c0tleVN5c3RlbSBtZWRpYSBlbmdpbmUgZmFj
dG9yeSBwYXJhbWV0ZXIuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjkxNjEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE0uY3BwCmluZGV4IDc4MjA4N2NmNDVmNDY1YzY4NDg1NjJlNTJmOGMyZGY0Nzk1YzI0Y2Yu
LmM0Y2Y0ZWUxZGMxNDg1MWFiZDI0ZDcwYzcxOTRlZTgxZWY5YWMxOWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAgLTI5LDE1ICsyOSwxMiBA
QAogCiAjaW5jbHVkZSAiQ0RNLmgiCiAKLSNpbmNsdWRlICJDRE1Qcml2YXRlLmgiCisjaW5jbHVk
ZSAiQ0RNUHJpdmF0ZU1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiQ0RNU2Vzc2lvbi5oIgogI2lu
Y2x1ZGUgIk1lZGlhS2V5RXJyb3IuaCIKICNpbmNsdWRlICJNZWRpYUtleXMuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTA5MAotI2luY2x1ZGUgIkNETVByaXZhdGVBVkZvdW5kYXRpb24uaCIKLSNlbmRp
ZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBDRE1GYWN0b3J5IHsKQEAgLTYzLDEw
ICs2MCw3IEBAIHN0YXRpYyBWZWN0b3I8Q0RNRmFjdG9yeSo+JiBpbnN0YWxsZWRDRE1GYWN0b3Jp
ZXMoKQogICAgICAgICBxdWVyaWVkQ0RNcyA9IHRydWU7CiAKICAgICAgICAgLy8gRklYTUU6IGlu
aXRpYWxpemUgc3BlY2lmaWMgVUEgQ0RNcy4gaHR0cDovL3dlYmtpdC5vcmcvYi8xMDkzMTgsIGh0
dHA6Ly93ZWJraXQub3JnL2IvMTA5MzIwCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDkwCi0gICAgICAgIGNkbXMuYXBwZW5kKG5ldyBDRE1GYWN0b3J5KENETVByaXZh
dGVBVkZvdW5kYXRpb246OmNyZWF0ZSwgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9ydHNL
ZXlTeXN0ZW0sIENETVByaXZhdGVBVkZvdW5kYXRpb246OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWlt
ZVR5cGUpKTsKLSNlbmRpZgotCisgICAgICAgIGNkbXMuYXBwZW5kKG5ldyBDRE1GYWN0b3J5KENE
TVByaXZhdGVNZWRpYVBsYXllcjo6Y3JlYXRlLCBDRE1Qcml2YXRlTWVkaWFQbGF5ZXI6OnN1cHBv
cnRzS2V5U3lzdGVtLCBDRE1Qcml2YXRlTWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtQW5k
TWltZVR5cGUpKTsKICAgICB9CiAKICAgICByZXR1cm4gY2RtczsKQEAgLTEyMyw3ICsxMTcsNyBA
QCBib29sIENETTo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25z
dAogICAgIHJldHVybiBtX3ByaXZhdGUtPnN1cHBvcnRzTUlNRVR5cGUobWltZVR5cGUpOwogfQog
Ci1QYXNzT3duUHRyPENETVNlc3Npb24+IENETTo6Y3JlYXRlU2Vzc2lvbigpCitzdGQ6OnVuaXF1
ZV9wdHI8Q0RNU2Vzc2lvbj4gQ0RNOjpjcmVhdGVTZXNzaW9uKCkKIHsKICAgICByZXR1cm4gbV9w
cml2YXRlLT5jcmVhdGVTZXNzaW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9DRE0uaAppbmRleCAzNDRiMTE4MTJjZGE3ZjU1MWQ0ZmVlZDU0OTQyYjgyNGI0
Njc0MGNlLi5mMzBkNjRmOGQ0NjhlODZiNDg1MWU3YjdhY2Y0NzY5NTVhMDg3YmQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAKKyNpbmNsdWRlICJDRE1TZXNz
aW9uLmgiCiAjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMzcsNyArMzgsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENETTsKIGNsYXNzIENETVByaXZhdGVJbnRlcmZh
Y2U7Ci1jbGFzcyBDRE1TZXNzaW9uOwogY2xhc3MgTWVkaWFQbGF5ZXI7CiAKIHR5cGVkZWYgUGFz
c093blB0cjxDRE1Qcml2YXRlSW50ZXJmYWNlPiAoKkNyZWF0ZUNETSkoQ0RNKik7CkBAIC01MSwx
NyArNTEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVBsYXllciogY2RtTWVkaWFQbGF5
ZXIoY29uc3QgQ0RNKikgY29uc3QgPSAwOwogfTsKIAotY2xhc3MgQ0RNU2Vzc2lvbiB7Ci1wdWJs
aWM6Ci0gICAgQ0RNU2Vzc2lvbigpIHsgfQotICAgIHZpcnR1YWwgfkNETVNlc3Npb24oKSB7IH0K
LQotICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlv
blVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29k
ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlS2V5cygpID0gMDsKLSAgICB2aXJ0dWFs
IGJvb2wgdXBkYXRlKFVpbnQ4QXJyYXkqLCBSZWZQdHI8VWludDhBcnJheT4mIG5leHRNZXNzYWdl
LCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNpZ25lZCBsb25nJiBzeXN0ZW1Db2RlKSA9
IDA7Ci19OwotCiBjbGFzcyBDRE0gewogcHVibGljOgogCkBAIC03Myw3ICs2Miw3IEBAIHB1Ymxp
YzoKICAgICB+Q0RNKCk7CiAKICAgICBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5n
JikgY29uc3Q7Ci0gICAgUGFzc093blB0cjxDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPENETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKTsKIAogICAgIGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgeyByZXR1cm4gbV9rZXlTeXN0ZW07IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUu
aAppbmRleCA4MmE1ODU3YmNjYjQxNDM1YzA4MTM1YzZiOGViN2FiNzE3NWY4NGIxLi44YmI4MDFm
NGJmZDczNWNlYjIwNjZlY2VhMzI0NzkzOWM3OGRkOTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApAQCAtNDIsNyArNDIsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJp
bmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vz
c2lvbigpID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9uPiBjcmVh
dGVTZXNzaW9uKCkgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlQVZGb3VuZGF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24uaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmIwNmJmZDllOWI4YjM5YWM5MjQ0OTk3MDY0YjYz
MzMxOTJlZjc3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5k
YXRpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIENETVByaXZhdGVBVkZvdW5kYXRpb25faAotI2RlZmluZSBDRE1Qcml2YXRlQVZGb3VuZGF0
aW9uX2gKLQotI2luY2x1ZGUgIkNETVByaXZhdGUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUFfVjIpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENETTsKLQotY2xhc3MgQ0RNUHJpdmF0ZUFWRm91
bmRhdGlvbiA6IHB1YmxpYyBDRE1Qcml2YXRlSW50ZXJmYWNlIHsKLXB1YmxpYzoKLSAgICAvLyBD
RE1GYWN0b3J5IHN1cHBvcnQ6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0RNUHJpdmF0ZUludGVy
ZmFjZT4gY3JlYXRlKENETSogY2RtKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ0RNUHJpdmF0ZUFW
Rm91bmRhdGlvbihjZG0pKTsgfQotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNv
bnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5
cGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwotCi0g
ICAgdmlydHVhbCB+Q0RNUHJpdmF0ZUFWRm91bmRhdGlvbigpIHsgfQotCi0gICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBQYXNzT3duUHRyPENETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBvdmVycmlk
ZTsKLQotICAgIENETSogY2RtKCkgY29uc3QgeyByZXR1cm4gbV9jZG07IH0KLQotcHJvdGVjdGVk
OgotICAgIENETVByaXZhdGVBVkZvdW5kYXRpb24oQ0RNKiBjZG0pIDogbV9jZG0oY2RtKSB7IH0K
LSAgICBDRE0qIG1fY2RtOwotfTsKLQotfQotCi0jZW5kaWYKLQotI2VuZGlmIC8vIENETVByaXZh
dGVBVkZvdW5kYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9DRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjYmZjYjhkMTFjNWZhNmQ0YmFlZDdkMGM3Y2JjOTZlZDM0MzE5
Zjg3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5t
bQorKysgL2Rldi9udWxsCkBAIC0xLDE1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAi
Y29uZmlnLmgiCi0jaW1wb3J0ICJDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLmgiCi0KLSNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBX1YyKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwOTAKLQotI2ltcG9ydCAiQ0RNLmgiCi0jaW1wb3J0ICJFeGNlcHRpb25Db2RlLmgiCi0j
aW1wb3J0ICJNZWRpYVBsYXllci5oIgotI2ltcG9ydCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5oIgotI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKLSNpbXBvcnQgIlVVSUQuaCIK
LSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkZvdW5kYXRpb24uaD4KLSNpbXBvcnQgPG9iamMvb2Jq
Yy1ydW50aW1lLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbiA6IHB1YmxpYyBDRE1TZXNzaW9uIHsKLXB1YmxpYzoKLSAgICBDRE1TZXNzaW9u
QVZGb3VuZGF0aW9uKENETVByaXZhdGVBVkZvdW5kYXRpb24qIHBhcmVudCk7Ci0gICAgdmlydHVh
bCB+Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbigpIHsgfQotCi0gICAgdmlydHVhbCBjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2Vzc2lvbklkOyB9Ci0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVxdWVzdChjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5h
dGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVt
Q29kZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbGVhc2VLZXlzKCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIHVwZGF0ZShVaW50OEFycmF5KiwgUmVmUHRyPFVpbnQ4QXJyYXk+
JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYg
c3lzdGVtQ29kZSkgb3ZlcnJpZGU7Ci0KLXByb3RlY3RlZDoKLSAgICBDRE1Qcml2YXRlQVZGb3Vu
ZGF0aW9uKiBtX3BhcmVudDsKLSAgICBTdHJpbmcgbV9zZXNzaW9uSWQ7Ci0gICAgUmV0YWluUHRy
PEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBtX3JlcXVlc3Q7Ci19OwotCi1TT0ZUX0xJ
TktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKLVNPRlRfTElOS19DTEFTUyhBVkZv
dW5kYXRpb24sIEFWVVJMQXNzZXQpCi1TT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkFz
c2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCkKLSNkZWZpbmUgQVZVUkxBc3NldCBnZXRBVlVSTEFz
c2V0Q2xhc3MoKQotI2RlZmluZSBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCBnZXRBVkFz
c2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCgpCi0KLQotYm9vbCBDRE1Qcml2YXRlQVZGb3VuZGF0
aW9uOjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKLXsKLSAgICBy
ZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2Uoa2V5U3lzdGVtLCAiY29tLmFwcGxlLmZwcyIpIHx8IGVx
dWFsSWdub3JpbmdDYXNlKGtleVN5c3RlbSwgImNvbS5hcHBsZS5mcHMuMV8wIik7Ci19Ci0KLWJv
b2wgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZShj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAgICBp
ZiAoIXN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gW0FWVVJMQXNzZXQgaXNQbGF5YWJsZUV4dGVuZGVkTUlNRVR5cGU6bWltZVR5
cGVdOwotfQotCi1ib29sIENETVByaXZhdGVBVkZvdW5kYXRpb246OnN1cHBvcnRzTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAgICByZXR1cm4gW0FWVVJMQXNzZXQgaXNQbGF5
YWJsZUV4dGVuZGVkTUlNRVR5cGU6bWltZVR5cGVdOwotfQotCi1QYXNzT3duUHRyPENETVNlc3Np
b24+IENETVByaXZhdGVBVkZvdW5kYXRpb246OmNyZWF0ZVNlc3Npb24oKQotewotICAgIHJldHVy
biBhZG9wdFB0cihuZXcgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbih0aGlzKSk7Ci19Ci0KLUNETVNl
c3Npb25BVkZvdW5kYXRpb246OkNETVNlc3Npb25BVkZvdW5kYXRpb24oQ0RNUHJpdmF0ZUFWRm91
bmRhdGlvbiogcGFyZW50KQotICAgIDogbV9wYXJlbnQocGFyZW50KQotICAgICwgbV9zZXNzaW9u
SWQoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKQotewotfQotCi1zdGF0aWMgdW5zaWduZWQg
c2hvcnQgTWVkaWFLZXlFeGNlcHRpb25Ub0Vycm9yQ29kZShNZWRpYVBsYXllcjo6TWVkaWFLZXlF
eGNlcHRpb24gZXJyb3IpCi17Ci0gICAgc3dpdGNoIChlcnJvcikgewotICAgIGNhc2UgTWVkaWFQ
bGF5ZXI6Ok5vRXJyb3I6Ci0gICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgTWVkaWFQbGF5ZXI6
OkludmFsaWRQbGF5ZXJTdGF0ZToKLSAgICAgICAgcmV0dXJuIElOVkFMSURfU1RBVEVfRVJSOwot
ICAgIGNhc2UgTWVkaWFQbGF5ZXI6OktleVN5c3RlbU5vdFN1cHBvcnRlZDoKLSAgICAgICAgcmV0
dXJuIE5PVF9TVVBQT1JURURfRVJSOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19Ci0KLVBhc3NSZWZQdHI8VWlu
dDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0
aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNpZ25lZCBsb25nJiBzeXN0ZW1D
b2RlKQotewotICAgIFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7Ci0KLSAgICBNZWRpYVBsYXllciog
bWVkaWFQbGF5ZXIgPSBtX3BhcmVudC0+Y2RtKCktPm1lZGlhUGxheWVyKCk7Ci0gICAgaWYgKCFt
ZWRpYVBsYXllcikgewotICAgICAgICBlcnJvckNvZGUgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgbV9zZXNzaW9uSWQgPSBjcmVhdGVD
YW5vbmljYWxVVUlEU3RyaW5nKCk7Ci0KLSAgICBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRp
b24gZXJyb3I7Ci0gICAgUmVmUHRyPFVpbnQ4QXJyYXk+IHJlcXVlc3QgPSBtZWRpYVBsYXllci0+
Z2VuZXJhdGVLZXlSZXF1ZXN0KG1fc2Vzc2lvbklkLCBtaW1lVHlwZSwgaW5pdERhdGEsIGRlc3Rp
bmF0aW9uVVJMLCBlcnJvciwgc3lzdGVtQ29kZSk7Ci0gICAgZXJyb3JDb2RlID0gTWVkaWFLZXlF
eGNlcHRpb25Ub0Vycm9yQ29kZShlcnJvcik7Ci0gICAgcmV0dXJuIHJlcXVlc3Q7Ci19Ci0KLXZv
aWQgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbjo6cmVsZWFzZUtleXMoKQotewotICAgIE1lZGlhUGxh
eWVyKiBtZWRpYVBsYXllciA9IG1fcGFyZW50LT5jZG0oKS0+bWVkaWFQbGF5ZXIoKTsKLSAgICBp
ZiAoIW1lZGlhUGxheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtZWRpYVBsYXllci0+cmVs
ZWFzZUtleXMobV9zZXNzaW9uSWQpOwotfQotCi1ib29sIENETVNlc3Npb25BVkZvdW5kYXRpb246
OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2Us
IHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpCi17
Ci0gICAgaWYgKCFrZXkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIE1lZGlhUGxheWVy
KiBtZWRpYVBsYXllciA9IG1fcGFyZW50LT5jZG0oKS0+bWVkaWFQbGF5ZXIoKTsKLSAgICBpZiAo
IW1lZGlhUGxheWVyKSB7Ci0gICAgICAgIGVycm9yQ29kZSA9IE5PVF9TVVBQT1JURURfRVJSOwot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBNZWRpYVBsYXllcjo6TWVkaWFL
ZXlFeGNlcHRpb24gZXJyb3I7Ci0gICAgYm9vbCBzdWNjZWVkZWQgPSBtZWRpYVBsYXllci0+dXBk
YXRlKG1fc2Vzc2lvbklkLCBrZXksIG5leHRNZXNzYWdlLCBlcnJvciwgc3lzdGVtQ29kZSk7Ci0g
ICAgZXJyb3JDb2RlID0gTWVkaWFLZXlFeGNlcHRpb25Ub0Vycm9yQ29kZShlcnJvcik7Ci0gICAg
cmV0dXJuIHN1Y2NlZWRlZDsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZU1lZGlhUGxheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZU1lZGlhUGxh
eWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43ZTI0YzM4YTE1M2UyZDE5YWUxMGQ1NmYwODM4ZjIwYjAwNjA5
MjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE1Qcml2YXRlTWVkaWFQbGF5ZXIuY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkNETVByaXZhdGVNZWRpYVBsYXllci5o
IgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2ltcG9ydCAiQ0RNLmgiCisj
aW1wb3J0ICJDRE1TZXNzaW9uLmgiCisjaW1wb3J0ICJDb250ZW50VHlwZS5oIgorI2ltcG9ydCAi
RXhjZXB0aW9uQ29kZS5oIgorI2ltcG9ydCAiTWVkaWFQbGF5ZXIuaCIKKyNpbXBvcnQgIlNvZnRM
aW5raW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBDRE1Qcml2YXRlTWVkaWFQ
bGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAg
IHJldHVybiBNZWRpYVBsYXllcjo6c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBlbXB0eVN0
cmluZygpKTsKK30KKworYm9vbCBDRE1Qcml2YXRlTWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lz
dGVtQW5kTWltZVR5cGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCit7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbShrZXlT
eXN0ZW0sIG1pbWVUeXBlKTsKK30KKworYm9vbCBDRE1Qcml2YXRlTWVkaWFQbGF5ZXI6OnN1cHBv
cnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtKG1fY2RtLT5rZXlTeXN0ZW0oKSwgbWltZVR5cGUpOwor
fQorCitzdGQ6OnVuaXF1ZV9wdHI8Q0RNU2Vzc2lvbj4gQ0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpj
cmVhdGVTZXNzaW9uKCkKK3sKKyAgICBNZWRpYVBsYXllciogbWVkaWFQbGF5ZXIgPSBtX2NkbS0+
bWVkaWFQbGF5ZXIoKTsKKyAgICBpZiAoIW1lZGlhUGxheWVyKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHJldHVybiBtZWRpYVBsYXllci0+Y3JlYXRlU2Vzc2lvbihtX2NkbS0+a2V5
U3lzdGVtKCkpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZU1lZGlhUGxheWVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDEwOTY4OTE0YzlmYzkxMjY0NDMyNGRhMDNiYTY3YTVjMWNiOTBkOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJp
dmF0ZU1lZGlhUGxheWVyLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
Q0RNUHJpdmF0ZU1lZGlhUGxheWVyX2gKKyNkZWZpbmUgQ0RNUHJpdmF0ZU1lZGlhUGxheWVyX2gK
KworI2luY2x1ZGUgIkNETVByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFf
VjIpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0RNOworCitjbGFzcyBDRE1Qcml2
YXRlTWVkaWFQbGF5ZXIgOiBwdWJsaWMgQ0RNUHJpdmF0ZUludGVyZmFjZSB7CitwdWJsaWM6Cisg
ICAgLy8gQ0RNRmFjdG9yeSBzdXBwb3J0OgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENETVByaXZh
dGVJbnRlcmZhY2U+IGNyZWF0ZShDRE0qIGNkbSkgeyByZXR1cm4gYWRvcHRQdHIobmV3IENETVBy
aXZhdGVNZWRpYVBsYXllcihjZG0pKTsgfQorICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lz
dGVtKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtQW5k
TWltZVR5cGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
OworCisgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZU1lZGlhUGxheWVyKCkgeyB9CisKKyAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9u
KCkgb3ZlcnJpZGU7CisKKyAgICBDRE0qIGNkbSgpIGNvbnN0IHsgcmV0dXJuIG1fY2RtOyB9CisK
K3Byb3RlY3RlZDoKKyAgICBDRE1Qcml2YXRlTWVkaWFQbGF5ZXIoQ0RNKiBjZG0pIDogbV9jZG0o
Y2RtKSB7IH0KKyAgICBDRE0qIG1fY2RtOworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmIC8v
IENETVByaWF2YXRlTWVkaWFQbGF5ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IGM1NDJhMGNm
NjE5YTExMDgzYTJjMmFiYTVlNDc2NDY0M2Y4NWQzMDMuLjcwYTczY2UwZDc5YmZmYmY2OGM2ZWJm
OTE0MWQ3YTA2OTY4ZjU0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQogCiAjaW5jbHVkZSAiQ0RNLmgiCisjaW5j
bHVkZSAiQ0RNU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiR2VuZXJp
Y0V2ZW50UXVldWUuaCIKICNpbmNsdWRlICJNZWRpYUtleUVycm9yLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApp
bmRleCAwZDUzMmVhMGRmOTY3YTI3MTIwY2Y0YTdjNmIxYzk2ZWFlMDQ3NjI4Li5jNWFmYmViYjlh
OWM0M2ZmNWI2YjdkYTAzYzdjNTMzMTMxZTIwMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKQEAgLTg1LDcg
Kzg1LDcgQEAgcHJvdGVjdGVkOgogICAgIFN0cmluZyBtX3Nlc3Npb25JZDsKICAgICBSZWZQdHI8
TWVkaWFLZXlFcnJvcj4gbV9lcnJvcjsKICAgICBHZW5lcmljRXZlbnRRdWV1ZSBtX2FzeW5jRXZl
bnRRdWV1ZTsKLSAgICBPd25QdHI8Q0RNU2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxDRE1TZXNzaW9uPiBtX3Nlc3Npb247CiAKICAgICBzdHJ1Y3QgUGVuZGluZ0tleVJl
cXVlc3QgewogICAgICAgICBQZW5kaW5nS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBVaW50OEFycmF5KiBpbml0RGF0YSkgOiBtaW1lVHlwZShtaW1lVHlwZSksIGluaXREYXRhKGlu
aXREYXRhKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBmNmNlNTU2ZWQyNDVhNTQyZTBkYjBhMDY5ZGFkZDBhMjAyNDEzZmZm
Li4wNWI0NTZhNzMzNGY5NDE4MWM3ZjY0MWQwNzIwZDVhMDgzYTI3NGM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NDU2LDcg
KzU0NTYsNiBAQAogCQlDRDNFMjUxQzE4MDQ2QjA2MDBFMjdGNTYgLyogR3JpZENvb3JkaW5hdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTFC
MTgwNDZCMDYwMEUyN0Y1NiAvKiBHcmlkQ29vcmRpbmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEM0UyNTIzMTgwNDZCQ0QwMEUyN0Y1NiAv
KiBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTIxMTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlk
VGVtcGxhdGVBcmVhc1ZhbHVlLmNwcCAqLzsgfTsKIAkJQ0QzRTI1MjQxODA0NkJDRDAwRTI3RjU2
IC8qIENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0UyNTIyMTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlk
VGVtcGxhdGVBcmVhc1ZhbHVlLmggKi87IH07Ci0JCUNENDdCM0ZDMTZDQzM0RjgwMEEyMUVDOCAv
KiBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0Q0N0IzRkExNkNDMzRGODAwQTIxRUM4IC8qIENETVByaXZhdGVB
VkZvdW5kYXRpb24ubW0gKi87IH07CiAJCUNENEFDNTJBMTQ5NkFFOUEwMDg3QzRFRiAvKiBDb21w
b3NpdGUud2F2IGluIENvcHkgQXVkaW8gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENENEFDNTI4MTQ5NkFFMkYwMDg3QzRFRiAvKiBDb21wb3NpdGUud2F2ICov
OyB9OwogCQlDRDUzOTNEMzE3NUUwMTg2MDBDMDcxMjMgLyogSlNNZW1vcnlJbmZvLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTM5M0QxMTc1RTAx
ODYwMEMwNzEyMyAvKiBKU01lbW9yeUluZm8uY3BwICovOyB9OwogCQlDRDUzOTNENDE3NUUwMTg2
MDBDMDcxMjMgLyogSlNNZW1vcnlJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDUzOTNEMjE3NUUwMTg2MDBDMDcxMjMgLyogSlNNZW1vcnlJbmZv
LmggKi87IH07CkBAIC01NTI5LDEwICs1NTI4LDEzIEBACiAJCUNEQzhCNUFCMTgwNDdGRjEwMDE2
RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDOEI1QTkxODA0N0ZGMTAwMTZFNjg1IC8qIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggKi87IH07CiAJCUNEQzhCNUFEMTgwNEFFNUQwMDE2
RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREM4QjVBQzE4MDRBRTVEMDAxNkU2ODUgLyogU291
cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oICovOyB9OwogCQlDRENBODI5NjE2NzkxMDBGMDA4NzU3
MTQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODI5NDE2NzkxMDBGMDA4NzU3MTQgLyogVGV4
dFRyYWNrUmVwcmVzZW50YXRpb25JT1MubW0gKi87IH07CisJCUNEQ0E5OEVCMThCMkM4RUIwMEMx
MkZGOSAvKiBDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTk4RUExOEIyQzhFQjAwQzEyRkY5IC8qIENETVBy
aXZhdGVNZWRpYVBsYXllci5jcHAgKi87IH07CiAJCUNERDUyNUQ3MTQ1QjZERDAwMDhEMjA0RCAv
KiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQ0MxNDVCNkFGRTAwQzRDN0FBIC8qIEpTSFRNTE1l
ZGlhRWxlbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCUNERDcwODk2MTgzNTlGNkYwMDJCM0RDNiAv
KiBTYW1wbGVNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RENzA4OTQxODM1OUY2RTAwMkIzREM2IC8qIFNhbXBsZU1hcC5jcHAgKi87IH07CiAJ
CUNERDcwODk3MTgzNTlGNkYwMDJCM0RDNiAvKiBTYW1wbGVNYXAuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERDcwODk1MTgzNTlGNkYwMDJCM0RDNiAv
KiBTYW1wbGVNYXAuaCAqLzsgfTsKIAkJQ0REQzFFN0ExOEE5NTJGMzAwMjdBOUQ0IC8qIE1lZGlh
U291cmNlUHJpdmF0ZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0REQzFFNzkxOEE5NTJGMzAwMjdBOUQ0IC8qIE1lZGlhU291cmNlUHJpdmF0
ZUNsaWVudC5oICovOyB9OworCQlDRERENTcxNTE4QjU3QTgyMDBBOTRGQ0IgLyogQ0RNU2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RERTAy
RTkxOEIzREZDNzAwQ0Y3RkYxIC8qIENETVNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRERFMDJFRDE4QjNFRDZEMDBDRjdGRjEgLyog
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRERFMDJFQjE4QjNFRDZEMDBDRjdGRjEgLyogQ0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakMubW0gKi87IH07CiAJCUNERTNBODU0MTdGNUZDRTYwMEM1QkUyMCAv
KiBBdWRpb1RyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RFM0E4NTIxN0Y1RkNFNjAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2
YXRlQVZGLmggKi87IH07CiAJCUNERTNBODU3MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREUzQTg1NTE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZP
YmpDLm1tICovOyB9OwogCQlDREUzQTg1ODE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREUzQTg1NjE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpD
LmggKi87IH07CkBAIC0xMjY3OCw4ICsxMjY4MCw2IEBACiAJCUNEM0UyNTFCMTgwNDZCMDYwMEUy
N0Y1NiAvKiBHcmlkQ29vcmRpbmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBHcmlkQ29vcmRpbmF0ZS5oOyBwYXRoID0gc3R5bGUvR3JpZENvb3JkaW5hdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzRTI1MjExODA0NkJDRDAwRTI3RjU2IC8qIENTU0dy
aWRUZW1wbGF0ZUFyZWFzVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNEM0UyNTIyMTgwNDZCQ0QwMEUyN0Y1NiAvKiBDU1NHcmlkVGVtcGxhdGVBcmVh
c1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0dyaWRUZW1wbGF0
ZUFyZWFzVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0Q0N0IzRjkxNkND
MzRGODAwQTIxRUM4IC8qIENETVByaXZhdGVBVkZvdW5kYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlDRDQ3QjNGQTE2Q0MzNEY4MDBBMjFFQzggLyogQ0RNUHJpdmF0ZUFW
Rm91bmRhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENE
TVByaXZhdGVBVkZvdW5kYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
NEFDNTI4MTQ5NkFFMkYwMDg3QzRFRiAvKiBDb21wb3NpdGUud2F2ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXVkaW8ud2F2OyBuYW1lID0gQ29tcG9z
aXRlLndhdjsgcGF0aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNlcy9Db21wb3NpdGUud2F2OyBz
b3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCUNENEUwQUZBMTFGN0JDMjcwMDlEMzgxMSAv
KiBmdWxsc2NyZWVuLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlbi5j
c3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTM5M0NCMTc1RENDRTYwMEMwNzEy
MyAvKiBNZW1vcnlJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9y
eUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzg3LDExICsxMjc4Nywx
NiBAQAogCQlDREM4QjVBOTE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMuaDsgcGF0aCA9IG9iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDOEI1QUMxODA0QUU1RDAwMTZFNjg1IC8q
IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRENBODI5NDE2NzkxMDBGMDA4NzU3MTQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRp
b25JT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RD
QTk4RTkxOEIyQzhEMDAwQzEyRkY5IC8qIENETVByaXZhdGVNZWRpYVBsYXllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDQTk4RUExOEIyQzhFQjAwQzEyRkY5IC8qIENETVBy
aXZhdGVNZWRpYVBsYXllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRENFNUNEMDE0NjMzQkM5MDBENDdDQ0EgLyogRXZlbnRUYXJnZXRGYWN0b3J5LmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IEV2ZW50VGFyZ2V0RmFjdG9yeS5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0REMUU1MjUxNjdCQTU2NDAwQ0U4MjBCIC8qIFRleHRUcmFja1JlcHJl
c2VudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERDcwODk0MTgz
NTlGNkUwMDJCM0RDNiAvKiBTYW1wbGVNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2FtcGxlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0RENzA4OTUxODM1OUY2RjAwMkIzREM2IC8qIFNhbXBsZU1hcC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTYW1wbGVNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0REQzFFNzkxOEE5NTJGMzAwMjdBOUQ0IC8qIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNvdXJjZVByaXZhdGVDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RERTAyRTkxOEIzREZDNzAwQ0Y3
RkYxIC8qIENETVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0RNU2Vzc2lvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDRERFMDJFQTE4QjNFRDZEMDBDRjdGRjEgLyogQ0RNU2Vz
c2lvbkFWRm91bmRhdGlvbk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaDsgcGF0aCA9IG9iamMvQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RERTAyRUIxOEIz
RUQ2RDAwQ0Y3RkYxIC8qIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMu
bW07IHBhdGggPSBvYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREUzQTg1MjE3RjVGQ0U2MDBDNUJFMjAgLyogQXVkaW9UcmFj
a1ByaXZhdGVBVkYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9UcmFj
a1ByaXZhdGVBVkYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFM0E4NTUxN0Y2
MDIwNDAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbTsg
cGF0aCA9IG9iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDREUzQTg1NjE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZh
dGVBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEF1ZGlvVHJhY2tQ
cml2YXRlQVZGT2JqQy5oOyBwYXRoID0gb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NzU5LDYgKzE5NzY0LDcgQEAKIAkJCQlC
RUYyOUVFOTE3MTVERDA5MDBDNEI0QzkgLyogQXVkaW9UcmFja1ByaXZhdGUuaCAqLywKIAkJCQlB
ODk5NDMyNzBCNDIzMzg3MDBEN0M4MDIgLyogQml0bWFwSW1hZ2UuY3BwICovLAogCQkJCUE4OTk0
MzI2MEI0MjMzODcwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5oICovLAorCQkJCUNEREUwMkU5MThC
M0RGQzcwMENGN0ZGMSAvKiBDRE1TZXNzaW9uLmggKi8sCiAJCQkJQjI3NTM1MzgwQjA1MzgxNDAw
MkNFNjRGIC8qIENvbG9yLmNwcCAqLywKIAkJCQlCMjc1MzUzOTBCMDUzODE0MDAyQ0U2NEYgLyog
Q29sb3IuaCAqLywKIAkJCQk5MzgyREY1NzEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFjZS5o
ICovLApAQCAtMjA4NzIsOCArMjA4NzgsOCBAQAogCQkJCUNEQTk4RTA5MTYwM0NENTkwMEZFQTNC
MSAvKiBDRE0uY3BwICovLAogCQkJCUNEQTk4RTBBMTYwM0NENTkwMEZFQTNCMSAvKiBDRE0uaCAq
LywKIAkJCQlDREE5OEUwQzE2MDNDRjNDMDBGRUEzQjEgLyogQ0RNUHJpdmF0ZS5oICovLAotCQkJ
CUNENDdCM0Y5MTZDQzM0RjgwMEEyMUVDOCAvKiBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLmggKi8s
Ci0JCQkJQ0Q0N0IzRkExNkNDMzRGODAwQTIxRUM4IC8qIENETVByaXZhdGVBVkZvdW5kYXRpb24u
bW0gKi8sCisJCQkJQ0RDQTk4RTkxOEIyQzhEMDAwQzEyRkY5IC8qIENETVByaXZhdGVNZWRpYVBs
YXllci5oICovLAorCQkJCUNEQ0E5OEVBMThCMkM4RUIwMEMxMkZGOSAvKiBDRE1Qcml2YXRlTWVk
aWFQbGF5ZXIuY3BwICovLAogCQkJCUNEQTk4REQ1MTYwMjVCRUQwMEZFQTNCMSAvKiBNZWRpYUtl
eU1lc3NhZ2VFdmVudC5jcHAgKi8sCiAJCQkJQ0RBOThERDYxNjAyNUJFRDAwRkVBM0IxIC8qIE1l
ZGlhS2V5TWVzc2FnZUV2ZW50LmggKi8sCiAJCQkJQ0RBOThERDcxNjAyNUJFRTAwRkVBM0IxIC8q
IE1lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbCAqLywKQEAgLTIwOTc4LDYgKzIwOTg0LDggQEAKIAkJ
CQlDRDU0QTc2MTE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaCAqLywKIAkJCQlDRDMzNkY2MDE3RjlGNjQ3MDBERERDRDAgLyogQVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbC5oICovLAogCQkJCUNEMzM2RjVGMTdGOUY2NDcwMERERENEMCAvKiBB
VlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1tICovLAorCQkJCUNEREUwMkVBMThCM0VENkQwMENG
N0ZGMSAvKiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oICovLAorCQkJCUNEREUwMkVCMThC
M0VENkQwMENGN0ZGMSAvKiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbSAqLywKIAkJCQkw
N0FBNkI2OTE2NkQwMTk1MDBENDU2NzEgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMu
aCAqLywKIAkJCQkwN0FBNkI2QTE2NkQwMTk1MDBENDU2NzEgLyogSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRk9iakMubW0gKi8sCiAJCQkJMDczNjdEREQxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFu
ZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmggKi8sCkBAIC0yNDA0MCw2ICsyNDA0OCw3
IEBACiAJCQkJMUFCQTgwMDAxODk3MzQxMjAwRENFOUQ2IC8qIFZpc2l0ZWRMaW5rUHJvdmlkZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJFMDg4OEQ1MTE0ODg0OEEwMEFGNDI2NSAvKiBKU0RPTUZv
cm1EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUMzNkMwMzBFQjA3NkQ2MDA3NDEwQkMgLyog
SlNET01HbG9iYWxPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEREQ1NzE1MThCNTdBODIw
MEE5NEZDQiAvKiBDRE1TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGODA5RDFD
QzYwMDAwQkUzMjUgLyogSlNET01JbXBsZW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTlEMjQ4MDcwRDc1N0U3RDAwRkRGOTU5IC8qIEpTRE9NTWltZVR5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE5RDI0ODA5MEQ3NTdFN0QwMEZERjk1OSAvKiBKU0RPTU1pbWVUeXBlQXJyYXkuaCBp
biBIZWFkZXJzICovLApAQCAtMjY0MTgsNyArMjY0MjcsNiBAQAogCQkJCTY1NTBCNjlEMDk5REYw
MjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA5
MDkxN0QxNENFRTAwNDIwQUExIC8qIFJUQ0ljZUNhbmRpZGF0ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDREE5OEUwQjE2MDNDRDYwMDBGRUEzQjEgLyogQ0RNLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCUNENDdCM0ZDMTZDQzM0RjgwMEEyMUVDOCAvKiBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTkwQTFBMDQxOEFEQTQ4NDAwMTgzRkQxIC8qIFJlcGxheUlu
cHV0VHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFBOEU1NjYxNzU1MkIyQTAwNzQ4OEU3
IC8qIENGVVJMRXh0cmFzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QkM2OURDMTUwNUYwNzYw
MDFCNzRBQyAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3
MDgyLDYgKzI3MDkwLDcgQEAKIAkJCQk5NzdCMzg2NjEyMjg4M0U5MDBCODFGRjggLyogSFRNTERv
Y3VtZW50UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5REU3MDk5RTY0OTIwMDU2
RTU4MSAvKiBodG1sZWRpdGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTE2RThCODEzNkUw
NERCMDA3NkMzQzAgLyogTG9jYWxpemVkRGF0ZUNhY2hlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
Q0RERTAyRUQxOEIzRUQ2RDAwQ0Y3RkYxIC8qIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlBOTIwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTdBOEYwMTgxODU0MjUwMDlGODIxRCAvKiBK
U0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE3QzgxMjIw
RjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTI3Nzc1LDYgKzI3Nzg0LDcgQEAKIAkJCQlCMjdCMjgyNzBDRUYwQzA3MDBEMzlENTQgLyog
SlNTVkdHbHlwaEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzYzRTExODFBMUNE
QzAwQzA3NEE1IC8qIEFWQXVkaW9DYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MjREOTEyOTgxM0NBOTZERTAwRDIxOTE1IC8qIEpTU1ZHR2x5cGhSZWZFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUNEQ0E5OEVCMThCMkM4RUIwMEMxMkZGOSAvKiBDRE1Qcml2YXRlTWVk
aWFQbGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNEOUMwQUI3NUE2RjAwMEU1QUM0
IC8qIEpTU1ZHR3JhZGllbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MTc0RUMy
QkNDQUYxN0VBRTNGNDZGOCAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk4NDg1MjI3QjExOTAxNjJDMDA2RURDN0YgLyogSlNTVkdIS2VybkVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9DRE1TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DRE1T
ZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRlMjEwNWIwNWU2MjU3NWU2ZGRmNTUwNGE0NDgzMThmMGNh
OWZkYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NETVNlc3Npb24uaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
XTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENE
TVNlc3Npb25faAorI2RlZmluZSBDRE1TZXNzaW9uX2gKKworI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUFfVjIpCisKKyNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0RNU2Vz
c2lvbkNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbkNsaWVudCgpIHsg
fTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2UoVWludDhBcnJheSosIFN0cmluZyBkZXN0
aW5hdGlvblVSTCkgPSAwOworfTsKKworY2xhc3MgQ0RNU2Vzc2lvbiB7CitwdWJsaWM6CisgICAg
Q0RNU2Vzc2lvbigpIHsgfQorICAgIHZpcnR1YWwgfkNETVNlc3Npb24oKSB7IH0KKworICAgIHZp
cnR1YWwgdm9pZCBzZXRDbGllbnQoQ0RNU2Vzc2lvbkNsaWVudCopID0gMDsKKyAgICB2aXJ0dWFs
IGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVk
IHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVsZWFzZUtleXMoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHVwZGF0ZShV
aW50OEFycmF5KiwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hv
cnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkgPSAwOworfTsKKworfQor
CisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKworI2VuZGlmIC8vIENETVNl
c3Npb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCmluZGV4IGEwY2ZjMTk1YzhlNjBiZTJiYTBhNzI3ZWE3NjIyYTRmNDI5MzRmMWIuLjlh
ZWZmNjM2ZjliZmQ3OGQyODRjZjg3MDI5NGM3YjE0MzAyZWYxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTUyNiwxOSArNTI2
LDkgQEAgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIE1lZGlhUGxheWVyOjpjYW5jZWxL
ZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYga2V5U3kKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQV9WMikKLVBhc3NSZWZQdHI8VWludDhBcnJheT4gTWVkaWFQbGF5ZXI6OmdlbmVy
YXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIE1lZGlh
S2V5RXhjZXB0aW9uJiBlcnJvciwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkKK3N0ZDo6dW5p
cXVlX3B0cjxDRE1TZXNzaW9uPiBNZWRpYVBsYXllcjo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSkKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5nZW5lcmF0ZUtleVJlcXVl
c3Qoc2Vzc2lvbklELCBtaW1lVHlwZSwgaW5pdERhdGEsIGRlc3RpbmF0aW9uVVJMLCBlcnJvciwg
c3lzdGVtQ29kZSk7Ci19Ci0KLXZvaWQgTWVkaWFQbGF5ZXI6OnJlbGVhc2VLZXlzKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklEKQotewotICAgIG1fcHJpdmF0ZS0+cmVsZWFzZUtleXMoc2Vzc2lvbklE
KTsKLX0KLQotYm9vbCBNZWRpYVBsYXllcjo6dXBkYXRlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklE
LCBVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIE1lZGlh
S2V5RXhjZXB0aW9uJiBlcnJvciwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkKLXsKLSAgICBy
ZXR1cm4gbV9wcml2YXRlLT51cGRhdGUoc2Vzc2lvbklELCBrZXksIG5leHRNZXNzYWdlLCBlcnJv
ciwgc3lzdGVtQ29kZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y3JlYXRlU2Vzc2lvbihrZXlT
eXN0ZW0pOwogfQogI2VuZGlmCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCAxZDQ3Y2MyMWQzZmU3NDk4ZDM5YTFhM2VkYWJlNWE5
NTUzYTljYTRiLi5mNzE2YmYxNDRjN2RjNmM0OWE5NTY5NTZjNGRkMzE0YTBmMzg0ZTNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTMz
LDYgKzMzLDcgQEAKICNlbmRpZgogCiAjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGUuaCIKKyNp
bmNsdWRlICJDRE1TZXNzaW9uLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5o
IgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJVUkwuaCIKQEAgLTMyOSw5ICszMzAs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCi0g
ICAgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRh
LCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCBNZWRpYUtleUV4Y2VwdGlvbiYgZXJyb3IsIHVuc2ln
bmVkIGxvbmcmIHN5c3RlbUNvZGUpOwotICAgIHZvaWQgcmVsZWFzZUtleXMoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSUQpOwotICAgIGJvb2wgdXBkYXRlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBV
aW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIE1lZGlhS2V5
RXhjZXB0aW9uJiBlcnJvciwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPENETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0pOwogI2VuZGlmCiAKICAgICBib29sIHBhdXNlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCBj
Y2NmYjRlNTZjNzYzYjE1NWIzMWViNzEwYTI1NjE1ZjU3ZTJjMTgxLi4xNzhjN2VlOTY4ZDdhOTIy
NWZiYTIzMTI4MDk4ODczYzExNDJiZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMjA4LDkgKzIwOCw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIFVpbnQ4QXJyYXkqLCBTdHJpbmcmLCBNZWRpYVBsYXllcjo6
TWVkaWFLZXlFeGNlcHRpb24mLCB1bnNpZ25lZCBsb25nJikgeyByZXR1cm4gbnVsbHB0cjsgfQot
ICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlS2V5cyhjb25zdCBTdHJpbmcmKSB7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgdXBkYXRlKGNvbnN0IFN0cmluZyYsIFVpbnQ4QXJyYXkqLCBSZWZQdHI8VWludDhB
cnJheT4mLCBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24mLCB1bnNpZ25lZCBsb25nJikg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9u
PiBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTc2MDEwN2E2ZTky
YWZiNTdmYmM1MzI0ZjUzYmI4YThkMjY3MTcxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZv
dW5kYXRpb25PYmpDLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbk9iakNfaAorI2RlZmluZSBDRE1TZXNzaW9uQVZGb3VuZGF0aW9u
T2JqQ19oCisKKyNpbmNsdWRlICJDRE1TZXNzaW9uLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBX1YyKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKwor
T0JKQ19DTEFTUyBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdDsKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOworCitj
bGFzcyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyA6IHB1YmxpYyBDRE1TZXNzaW9uIHsKK3B1
YmxpYzoKKyAgICBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyhNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDKiBwYXJlbnQpOworICAgIHZpcnR1YWwgfkNETVNlc3Npb25BVkZvdW5k
YXRpb25PYmpDKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KENETVNlc3Npb25D
bGllbnQqIGNsaWVudCkgb3ZlcnJpZGUgeyBtX2NsaWVudCA9IGNsaWVudDsgfQorICAgIHZpcnR1
YWwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nl
c3Npb25JZDsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtl
eVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0
cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVk
IGxvbmcmIHN5c3RlbUNvZGUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlS2V5
cygpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGUoVWludDhBcnJheSosIFJlZlB0
cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVu
c2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpIG92ZXJyaWRlOworCitwcm90ZWN0ZWQ6CisgICAgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogbV9wYXJlbnQ7CisgICAgQ0RNU2Vzc2lv
bkNsaWVudCogbV9jbGllbnQ7CisgICAgU3RyaW5nIG1fc2Vzc2lvbklkOworICAgIFJldGFpblB0
cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9yZXF1ZXN0OworfTsKKworfQorCisj
ZW5kaWYKKworI2VuZGlmIC8vIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTZjM2ZmNTVhNjNhMjk1ZjhiOGQ0OWIxYzA5OGI3NmI1ODhhYWZiYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0wLDAgKzEsMTEzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJDRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uT2JqQy5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisKKyNpbXBvcnQgIkNETS5oIgorI2lt
cG9ydCAiQ0RNU2Vzc2lvbi5oIgorI2ltcG9ydCAiRXhjZXB0aW9uQ29kZS5oIgorI2ltcG9ydCAi
TWVkaWFQbGF5ZXIuaCIKKyNpbXBvcnQgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaCIKKyNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCisjaW1wb3J0ICJVVUlELmgiCisjaW1wb3J0
IDxBVkZvdW5kYXRpb24vQVZGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxvYmpjL29iamMtcnVudGlt
ZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9O
QUwoQVZGb3VuZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZVUkxBc3Nl
dCkKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdS
ZXF1ZXN0KQorI2RlZmluZSBBVlVSTEFzc2V0IGdldEFWVVJMQXNzZXRDbGFzcygpCisjZGVmaW5l
IEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0IGdldEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdS
ZXF1ZXN0KCkKKworCitDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6Q0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50KQor
ICAgIDogbV9wYXJlbnQocGFyZW50KQorICAgICwgbV9jbGllbnQobnVsbHB0cikKKyAgICAsIG1f
c2Vzc2lvbklkKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkKK3sKK30KKworUGFzc1JlZlB0
cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6Z2VuZXJhdGVLZXlSZXF1
ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcm
IGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNpZ25lZCBsb25n
JiBzeXN0ZW1Db2RlKQoreworICAgIFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7CisKKyAgICBTdHJp
bmcga2V5VVJJOworICAgIFN0cmluZyBrZXlJRDsKKyAgICBSZWZQdHI8VWludDhBcnJheT4gY2Vy
dGlmaWNhdGU7CisgICAgaWYgKCFNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpl
eHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0YShpbml0RGF0YSwga2V5
VVJJLCBrZXlJRCwgY2VydGlmaWNhdGUpKSB7CisgICAgICAgIGVycm9yQ29kZSA9IE1lZGlhUGxh
eWVyOjpJbnZhbGlkUGxheWVyU3RhdGU7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAg
IG1fcmVxdWVzdCA9IG1fcGFyZW50LT50YWtlUmVxdWVzdEZvcktleVVSSShrZXlVUkkpOworICAg
IGlmICghbV9yZXF1ZXN0KSB7CisgICAgICAgIGVycm9yQ29kZSA9IE1lZGlhUGxheWVyOjpJbnZh
bGlkUGxheWVyU3RhdGU7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFJl
dGFpblB0cjxOU0RhdGE+IGNlcnRpZmljYXRlRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2Nd
IGluaXRXaXRoQnl0ZXM6Y2VydGlmaWNhdGUtPmJhc2VBZGRyZXNzKCkgbGVuZ3RoOmNlcnRpZmlj
YXRlLT5ieXRlTGVuZ3RoKCldKTsKKyAgICBOU1N0cmluZyogYXNzZXRTdHIgPSBrZXlJRDsKKyAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBhc3NldElEID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiBbYXNz
ZXRTdHIgY1N0cmluZ1VzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIGxlbmd0aDpb
YXNzZXRTdHIgbGVuZ3RoT2ZCeXRlc1VzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmdd
XTsKKyAgICBOU0Vycm9yKiBuc0Vycm9yID0gMDsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBrZXlS
ZXF1ZXN0ID0gW21fcmVxdWVzdCBzdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6
Y2VydGlmaWNhdGVEYXRhLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmFzc2V0SUQuZ2V0KCkgb3B0
aW9uczpuaWwgZXJyb3I6Jm5zRXJyb3JdOworCisgICAgaWYgKCFrZXlSZXF1ZXN0KSB7CisgICAg
ICAgIE5TRXJyb3IqIHVuZGVybHlpbmdFcnJvciA9IFtbbnNFcnJvciB1c2VySW5mb10gb2JqZWN0
Rm9yS2V5Ok5TVW5kZXJseWluZ0Vycm9yS2V5XTsKKyAgICAgICAgc3lzdGVtQ29kZSA9IFt1bmRl
cmx5aW5nRXJyb3IgY29kZV07CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGVycm9y
Q29kZSA9IE1lZGlhUGxheWVyOjpOb0Vycm9yOworICAgIHN5c3RlbUNvZGUgPSAwOworICAgIGRl
c3RpbmF0aW9uVVJMID0gU3RyaW5nKCk7CisKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGtleVJl
cXVlc3RCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKFtrZXlSZXF1ZXN0LmdldCgpIGJ5dGVz
XSwgW2tleVJlcXVlc3QuZ2V0KCkgbGVuZ3RoXSk7CisgICAgcmV0dXJuIFVpbnQ4QXJyYXk6OmNy
ZWF0ZShrZXlSZXF1ZXN0QnVmZmVyLCAwLCBrZXlSZXF1ZXN0QnVmZmVyLT5ieXRlTGVuZ3RoKCkp
OworfQorCit2b2lkIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpyZWxlYXNlS2V5cygpCit7
Cit9CisKK2Jvb2wgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZShVaW50OEFycmF5
KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0JiBl
cnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpCit7CisgICAgUmV0YWluUHRyPE5T
RGF0YT4ga2V5RGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6a2V5
LT5iYXNlQWRkcmVzcygpIGxlbmd0aDprZXktPmJ5dGVMZW5ndGgoKV0pOworICAgIFtbbV9yZXF1
ZXN0IGRhdGFSZXF1ZXN0XSByZXNwb25kV2l0aERhdGE6a2V5RGF0YS5nZXQoKV07CisgICAgW21f
cmVxdWVzdCBmaW5pc2hMb2FkaW5nXTsKKyAgICBlcnJvckNvZGUgPSBNZWRpYVBsYXllcjo6Tm9F
cnJvcjsKKyAgICBzeXN0ZW1Db2RlID0gMDsKKyAgICBuZXh0TWVzc2FnZSA9IG51bGxwdHI7CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApp
bmRleCBlMzc0Njk2M2UxYWU5NGYwMzIyOWQxMzk2MDg2Zjk1NWQ4ZGU0YzM0Li42ODY3MDUzYmYz
YTUzOTgzMGVhMTI1YWU5MWI4ZmU5MmNmYjA3YmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBA
IC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQV9WMikKLSAgICBzdGF0aWMgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0PiB0YWtlUmVxdWVzdEZvclBsYXllckFuZEtleVVSSShNZWRpYVBsYXllciosIGNvbnN0IFN0
cmluZyYpOworICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gdGFr
ZVJlcXVlc3RGb3JLZXlVUkkoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHZvaWQgcGxh
eWVySXRlbVN0YXR1c0RpZENoYW5nZShpbnQpOwpAQCAtMjAwLDkgKzIwMCw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCi0gICAgUGFzc1JlZlB0
cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRl
c3RpbmF0aW9uVVJMLCBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24mIGVycm9yLCB1bnNp
Z25lZCBsb25nJiBzeXN0ZW1Db2RlKTsKLSAgICB2b2lkIHJlbGVhc2VLZXlzKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkKTsKLSAgICBib29sIHVwZGF0ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
VWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCBNZWRpYVBs
YXllcjo6TWVkaWFLZXlFeGNlcHRpb24mIGVycm9yLCB1bnNpZ25lZCBsb25nJiBzeXN0ZW1Db2Rl
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSk7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgU3RyaW5nIGxhbmd1YWdl
T2ZQcmltYXJ5QXVkaW9UcmFjaygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KaW5kZXggM2Q1ZThjMWFjOTNkNDE4YThlYjBjM2MzMDgxMWRmYzhlZWYyMGFiYS4uZWUzY2My
MTUwOTM1Mjk3NmIxNTE3MzBhMDg1ODRiZWI2Yjc4YWViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMu
aCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW1wb3J0ICJCbG9ja0V4
Y2VwdGlvbnMuaCIKKyNpbXBvcnQgIkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgiCiAjaW1w
b3J0ICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbXBvcnQgIkZsb2F0Q29udmVyc2lv
bi5oIgogI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCkBAIC0xNjE4LDY5ICsxNjE5LDE3IEBA
IE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpjYW5jZWxLZXlSZXF1CiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUFfVjIpCi1QYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVz
dGluYXRpb25VUkwsIE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiYgZXJyb3IsIHVuc2ln
bmVkIGxvbmcmIHN5c3RlbUNvZGUpCitSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3Q+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnRha2VSZXF1ZXN0Rm9y
S2V5VVJJKGNvbnN0IFN0cmluZyYga2V5VVJJKQogewotICAgIFVOVVNFRF9QQVJBTShtaW1lVHlw
ZSk7Ci0KLSAgICBTdHJpbmcga2V5VVJJOwotICAgIFN0cmluZyBrZXlJRDsKLSAgICBSZWZQdHI8
VWludDhBcnJheT4gY2VydGlmaWNhdGU7Ci0gICAgaWYgKCFNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0
YShpbml0RGF0YSwga2V5VVJJLCBrZXlJRCwgY2VydGlmaWNhdGUpKSB7Ci0gICAgICAgIGVycm9y
ID0gTWVkaWFQbGF5ZXI6OkludmFsaWRQbGF5ZXJTdGF0ZTsKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgfQotCi0gICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiByZXF1
ZXN0ID0gbV9rZXlVUklUb1JlcXVlc3RNYXAudGFrZShrZXlVUkkpOwotICAgIGlmICghcmVxdWVz
dCkgewotICAgICAgICBlcnJvciA9IE1lZGlhUGxheWVyOjpJbnZhbGlkUGxheWVyU3RhdGU7Ci0g
ICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIG1fc2Vzc2lvbklEVG9SZXF1ZXN0TWFwLmFk
ZChzZXNzaW9uSWQsIHJlcXVlc3QpOwotCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY2VydGlmaWNh
dGVEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpjZXJ0aWZpY2F0
ZS0+YmFzZUFkZHJlc3MoKSBsZW5ndGg6Y2VydGlmaWNhdGUtPmJ5dGVMZW5ndGgoKV0pOwotICAg
IE5TU3RyaW5nKiBhc3NldFN0ciA9IGtleUlEOwotICAgIFJldGFpblB0cjxOU0RhdGE+IGFzc2V0
SUQgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IFthc3NldFN0ciBjU3RyaW5nVXNpbmdFbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gbGVuZ3RoOlthc3NldFN0ciBsZW5ndGhPZkJ5dGVzVXNp
bmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwotICAgIE5TRXJyb3IqIG5zRXJyb3Ig
PSAwOwotICAgIFJldGFpblB0cjxOU0RhdGE+IGtleVJlcXVlc3QgPSBbcmVxdWVzdCBzdHJlYW1p
bmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6Y2VydGlmaWNhdGVEYXRhLmdldCgpIGNvbnRl
bnRJZGVudGlmaWVyOmFzc2V0SUQuZ2V0KCkgb3B0aW9uczpuaWwgZXJyb3I6Jm5zRXJyb3JdOwot
Ci0gICAgaWYgKCFrZXlSZXF1ZXN0KSB7Ci0gICAgICAgIE5TRXJyb3IqIHVuZGVybHlpbmdFcnJv
ciA9IFtbbnNFcnJvciB1c2VySW5mb10gb2JqZWN0Rm9yS2V5Ok5TVW5kZXJseWluZ0Vycm9yS2V5
XTsKLSAgICAgICAgc3lzdGVtQ29kZSA9IFt1bmRlcmx5aW5nRXJyb3IgY29kZV07Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KLQotICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6Ok5vRXJyb3I7Ci0g
ICAgc3lzdGVtQ29kZSA9IDA7Ci0gICAgZGVzdGluYXRpb25VUkwgPSBTdHJpbmcoKTsKLQotICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2V5UmVxdWVzdEJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVh
dGUoW2tleVJlcXVlc3QuZ2V0KCkgYnl0ZXNdLCBba2V5UmVxdWVzdC5nZXQoKSBsZW5ndGhdKTsK
LSAgICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKGtleVJlcXVlc3RCdWZmZXIsIDAsIGtleVJl
cXVlc3RCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgcmV0dXJuIG1fa2V5VVJJVG9SZXF1ZXN0
TWFwLnRha2Uoa2V5VVJJKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpyZWxlYXNlS2V5cyhjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKK3N0ZDo6dW5pcXVl
X3B0cjxDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVh
dGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogewotICAgIFVOVVNFRF9QQVJBTShz
ZXNzaW9uSWQpOwotfQotCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnVwZGF0ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgVWludDhBcnJheSoga2V5LCBSZWZQdHI8
VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24m
IGVycm9yLCB1bnNpZ25lZCBsb25nJiBzeXN0ZW1Db2RlKQotewotICAgIEFTU0VSVChrZXkpOwot
Ci0gICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiByZXF1ZXN0ID0g
bV9zZXNzaW9uSURUb1JlcXVlc3RNYXAuZ2V0KHNlc3Npb25JZCk7Ci0gICAgaWYgKCFyZXF1ZXN0
KSB7Ci0gICAgICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6OkludmFsaWRQbGF5ZXJTdGF0ZTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIFJldGFpblB0cjxOU0RhdGE+IGtleURh
dGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmtleS0+YmFzZUFkZHJl
c3MoKSBsZW5ndGg6a2V5LT5ieXRlTGVuZ3RoKCldKTsKLSAgICBbW3JlcXVlc3QgZGF0YVJlcXVl
c3RdIHJlc3BvbmRXaXRoRGF0YTprZXlEYXRhLmdldCgpXTsKLSAgICBbcmVxdWVzdCBmaW5pc2hM
b2FkaW5nXTsKLSAgICBlcnJvciA9IE1lZGlhUGxheWVyOjpOb0Vycm9yOwotICAgIHN5c3RlbUNv
ZGUgPSAwOwotICAgIG5leHRNZXNzYWdlID0gbnVsbHB0cjsKKyAgICBpZiAoIWtleVN5c3RlbUlz
U3VwcG9ydGVkKGtleVN5c3RlbSkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIHRydWU7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRh
dGlvbk9iakM+KHRoaXMpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uY3Bw
CmluZGV4IDM2ZjVjNmRmYWNmZWFkYTYxYWNkYmI3OTM0M2I0YmMwNTU2ZWQ3Y2IuLjgxMmIwYzZk
NGNiMDczNjgwOTA5ZGIwYjc2OTRjYzFmNzU5NzI3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIp
CiAKICNpbmNsdWRlICJDRE0uaCIKKyNpbmNsdWRlICJDRE1TZXNzaW9uLmgiCiAjaW5jbHVkZSAi
TWVkaWFLZXlFcnJvci5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvVHlwZWRBcnJheUlubGluZXMuaD4KQEAgLTM4LDE3ICszOSwxNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vY2tDRE1TZXNzaW9uIDogcHVibGljIENETVNlc3Np
b24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPE1vY2tDRE1TZXNzaW9uPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFB0cihuZXcgTW9ja0NETVNlc3Npb24oKSk7IH0KKyAgICBNb2Nr
Q0RNU2Vzc2lvbigpOwogICAgIHZpcnR1YWwgfk1vY2tDRE1TZXNzaW9uKCkgeyB9CiAKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KENETVNlc3Npb25DbGllbnQqIGNsaWVudCkgeyBtX2NsaWVu
dCA9IGNsaWVudDsgfQogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
VWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNo
b3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCByZWxlYXNlS2V5cygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCB1
cGRhdGUoVWludDhBcnJheSosIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVuc2ln
bmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpIG92ZXJyaWRl
OwogCiBwcm90ZWN0ZWQ6Ci0gICAgTW9ja0NETVNlc3Npb24oKTsKLQorICAgIENETVNlc3Npb25D
bGllbnQqIG1fY2xpZW50OwogICAgIFN0cmluZyBtX3Nlc3Npb25JZDsKIH07CiAKQEAgLTcwLDkg
KzcxLDkgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKG1pbWVUeXBlLCAidmlkZW8vbW9j
ayIpOwogfQogCi1QYXNzT3duUHRyPENETVNlc3Npb24+IE1vY2tDRE06OmNyZWF0ZVNlc3Npb24o
KQorc3RkOjp1bmlxdWVfcHRyPENETVNlc3Npb24+IE1vY2tDRE06OmNyZWF0ZVNlc3Npb24oKQog
ewotICAgIHJldHVybiBNb2NrQ0RNU2Vzc2lvbjo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8TW9ja0NETVNlc3Npb24+KCk7CiB9CiAKIHN0YXRpYyBVaW50OEFycmF5KiBp
bml0RGF0YVByZWZpeCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE0uaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5oCmluZGV4IDI4ODM4NzVlNmM0
NjBiZDk1MGY4NzIxZWYzNjRmMmM4ODIzNDIwZGYuLjk3ZDAyMDdjMDc2YjczZGE3OTcwZDAxMDBm
NTJmNTE2ZWY5YTYzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NE
TS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5oCkBAIC00NSw3ICs0NSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Nb2NrQ0RNKCkgeyB9CiAKICAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPENETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24o
KSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAgIE1vY2tDRE0oQ0RNKiBjZG0pIDogbV9jZG0o
Y2RtKSB7IH0K
</data>
<flag name="review"
          id="249011"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>