<?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>125647</bug_id>
          
          <creation_ts>2013-12-12 11:58:53 -0800</creation_ts>
          <short_desc>Add support for RSAES-PKCS1-v1_5</short_desc>
          <delta_ts>2013-12-12 12:15:58 -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>WebCore Misc.</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>
          
          <blocked>122679</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>959280</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-12-12 11:58:53 -0800</bug_when>
    <thetext>Add support for RSAES-PKCS1-v1_5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959284</commentid>
    <comment_count>1</comment_count>
      <attachid>219106</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-12-12 12:05:57 -0800</bug_when>
    <thetext>Created attachment 219106
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959286</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-12 12:08:18 -0800</bug_when>
    <thetext>Attachment 219106 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-decrypt-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-decrypt.html&apos;, u&apos;LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-wrap-unwrap-aes-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-wrap-unwrap-aes.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.cpp&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.h&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h&apos;, u&apos;Source/WebCore/crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp&apos;, u&apos;Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp:36:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp:50:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:38:  CryptoAlgorithmRSAES_PKCS1_v1_5::s_name is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:48:  CryptoAlgorithmRSAES_PKCS1_v1_5::create is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:53:  CryptoAlgorithmRSAES_PKCS1_v1_5::identifier is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:58:  CryptoAlgorithmRSAES_PKCS1_v1_5::keyAlgorithmMatches is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:67:  CryptoAlgorithmRSAES_PKCS1_v1_5::encrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:77:  CryptoAlgorithmRSAES_PKCS1_v1_5::decrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:87:  CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:91:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:98:  CryptoAlgorithmRSAES_PKCS1_v1_5::importKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:58:  CryptoAlgorithmAES_KW::keyAlgorithmMatches is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:67:  CryptoAlgorithmAES_KW::encryptForWrapKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:77:  CryptoAlgorithmAES_KW::decryptForUnwrapKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 14 in 15 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>959287</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-12-12 12:09:16 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r160502&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959290</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-12-12 12:15:58 -0800</bug_when>
    <thetext>Build fix in &lt;http://trac.webkit.org/r160503&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219106</attachid>
            <date>2013-12-12 12:05:57 -0800</date>
            <delta_ts>2013-12-12 12:08:11 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>RSAES.txt</filename>
            <type>text/plain</type>
            <size>43710</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MDUwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTEyLTEyICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBS
U0FFUy1QS0NTMS12MV81CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjU2NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUZXN0czogY3J5cHRvL3N1YnRsZS9yc2Flcy1wa2NzMS12MV81LWRlY3J5cHQuaHRt
bAorICAgICAgICAgICAgICAgY3J5cHRvL3N1YnRsZS9yc2Flcy1wa2NzMS12MV81LXdyYXAtdW53
cmFwLWFlcy5odG1sCisKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1BRVNfS1cuY3BwOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bUFFU19LVy5oOgorICAgICAgICBSZW1vdmVkIG1lYW5pbmdsZXNzIHBhcmFtZXRlcnMgYXJndW1l
bnRzIGZyb20gcHJpdmF0ZSBmdW5jdGlvbnMuIFRoZSBiYXNlIGFyZ3VtZW50cworICAgICAgICBj
bGFzcyBpcyBhbHdheXMgZW1wdHkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0
aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFy
eTo6Y3JlYXRlUGFyYW1ldGVyc0ZvckVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlw
dG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpjcmVhdGVQYXJhbWV0ZXJzRm9yRGVjcnlwdCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jaWxlQWxnb3Jp
dGhtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6a2V5
U2l6ZUlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9u
SldLOjphZGRKV0tBbGdvcml0aG1Ub0pTT04pOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OkNyeXB0b0FsZ29yaXRobVJT
QUVTX1BLQ1MxX3YxXzUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNf
UEtDUzFfdjFfNTo6fkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUpOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmlkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6a2V5
QWxnb3JpdGhtTWF0Y2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FF
U19QS0NTMV92MV81OjplbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bVJTQUVTX1BLQ1MxX3YxXzU6OmRlY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6aW1wb3J0S2V5KToKKyAgICAgICAgKiBj
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81Lmg6IEFkZGVk
LgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1h
Yy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAgICogY3J5cHRv
L21hYy9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeU1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6cGxhdGZvcm1SZWdpc3RlckFsZ29yaXRobXMpOgorICAg
ICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGlzIGFsZ29yaXRobS4KKwogMjAxMy0xMi0xMiAgQW5k
cmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gU3RvcCBub3Qg
Y2FjaGluZyBIVFRQIHJlc291cmNlcyB3aXRoICJWYXJ5IiBoZWFkZXIgaW4gcmVzcG9uc2UuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxNjA0OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU1NTUsNiArNTU1NSw5IEBACiAJ
CUUxMUFGMTUxMTFCOUExQTMwMDgwNTEwMyAvKiBDdXJzb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTExQUYxNTAxMUI5QTFBMzAwODA1MTAzIC8q
IEN1cnNvci5jcHAgKi87IH07CiAJCUUxMUM5RDlCMEVCMzY4MTIwMEU0MDlEQiAvKiBTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMTFDOUQ5QTBFQjM2ODEyMDBFNDA5REIgLyogU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUx
MUM5REIwMEVCMzY5OTUwMEU0MDlEQiAvKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMUM5REFGMEVCMzY5
OTUwMEU0MDlEQiAvKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCAqLzsgfTsKKwkJRTEyMzNG
MEMxODVBM0UzQjAwOERGQUY1IC8qIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyMzNGMEEx
ODVBM0UzQjAwOERGQUY1IC8qIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwICov
OyB9OworCQlFMTIzM0YwRDE4NUEzRTNCMDA4REZBRjUgLyogQ3J5cHRvQWxnb3JpdGhtUlNBRVNf
UEtDUzFfdjFfNS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTEyMzNGMEIxODVBM0UzQjAwOERGQUY1IC8qIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1Mx
X3YxXzUuaCAqLzsgfTsKKwkJRTEyMzNGMTAxODVBNDEzMDAwOERGQUY1IC8qIENyeXB0b0FsZ29y
aXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTEyMzNGMEUxODVBNDEzMDAwOERGQUY1IC8qIENyeXB0b0FsZ29y
aXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwICovOyB9OwogCQlFMTI0NzQ4NDEwQUExNjFEMDBC
Nzk0OTMgLyogQXV0aGVudGljYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjQ3NDgzMTBBQTE2MUQwMEI3OTQ5MyAvKiBBdXRoZW50
aWNhdGlvbkNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUUxMjVGODJCMTgyMkNGRUMwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1TSEEx
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVG
ODI5MTgyMkNGRUMwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1TSEExLmNwcCAqLzsgfTsKIAkJ
RTEyNUY4MkMxODIyQ0ZFQzAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobVNIQTEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODJBMTgyMkNGRUMw
MEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1TSEExLmggKi87IH07CkBAIC0xMjY5Nyw2ICsxMjcw
MCw5IEBACiAJCUUxMUFGMTUwMTFCOUExQTMwMDgwNTEwMyAvKiBDdXJzb3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3Vyc29yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTExQzlEOUEwRUIzNjgxMjAwRTQwOURCIC8qIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTFDOURBRjBFQjM2
OTk1MDBFNDA5REIgLyogU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTEyMzNGMEExODVBM0UzQjAwOERGQUY1IC8qIENyeXB0
b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxMjMzRjBCMTg1QTNFM0IwMDhERkFGNSAvKiBDcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTEyMzNGMEUxODVBNDEzMDAwOERGQUY1IC8qIENyeXB0b0FsZ29yaXRobVJT
QUVTX1BLQ1MxX3YxXzVNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHA7IHBhdGggPSBtYWMvQ3J5
cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxMjQ3NDgzMTBBQTE2MUQwMEI3OTQ5MyAvKiBBdXRoZW50aWNhdGlvbkNsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdGlvbkNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTI1RjgyOTE4MjJDRkVDMDBEODRD
RDkgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1TSEExLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTEyNUY4MkExODIyQ0ZFQzAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobVNIQTEu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtU0hBMS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA1MDIsNiArMjA1MDgsNyBAQAogCQkJ
CUUxMjVGODM3MTgyMkYxRUIwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcCAq
LywKIAkJCQlFMUJCODRBQzE4MjJDQTc0MDA1MjUwNDMgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0
cnlNYWMuY3BwICovLAogCQkJCUUxQzI2NkQ2MTgzMTdBQjQwMDNGOEIzMyAvKiBDcnlwdG9BbGdv
cml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAgKi8sCisJCQkJRTEyMzNGMEUxODVBNDEzMDAw
OERGQUY1IC8qIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwICovLAogCQkJ
CUUxRkUxMzZFMTgzRkVDRjAwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5j
cHAgKi8sCiAJCQkJRTE5QUMzRjgxODI1NjZGNzAwMzQ5NDI2IC8qIENyeXB0b0tleU1hYy5jcHAg
Ki8sCiAJCQkJRTE2NEZBQTQxODMxNUUxQTAwREI0RTYxIC8qIENyeXB0b0tleVJTQU1hYy5jcHAg
Ki8sCkBAIC0yMDUyMSw2ICsyMDUyOCw4IEBACiAJCQkJRTEyNUY4MzAxODIyRjExQjAwRDg0Q0Q5
IC8qIENyeXB0b0FsZ29yaXRobUhNQUMuaCAqLywKIAkJCQlFMUZFMTM2ODE4M0ZFMUFCMDA4OTJG
MTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwICovLAogCQkJCUUxRkUxMzY5MTgzRkUx
QUIwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oICovLAorCQkJCUUxMjMzRjBB
MTg1QTNFM0IwMDhERkFGNSAvKiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcCAq
LywKKwkJCQlFMTIzM0YwQjE4NUEzRTNCMDA4REZBRjUgLyogQ3J5cHRvQWxnb3JpdGhtUlNBRVNf
UEtDUzFfdjFfNS5oICovLAogCQkJCUUxQkQzMzE3MTgyRDhEREQwMEMwNUQ5RiAvKiBDcnlwdG9B
bGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAgKi8sCiAJCQkJRTFCRDMzMTgxODJEOERERDAw
QzA1RDlGIC8qIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmggKi8sCiAJCQkJRTEy
NUY4MjkxODIyQ0ZFQzAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobVNIQTEuY3BwICovLApAQCAt
MjQ0MjEsNiArMjQ0MzAsNyBAQAogCQkJCUJDODVGMjNEMTUxOTE1RTAwMEJDMTdCRSAvKiBSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODgwMDk3RDkzMDIw
MDk0QzlFNCAvKiBSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkE5MzA4MTAz
MzMxOTMwMDdCMjVEMSAvKiBSZW5kZXJPdmVyZmxvdy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEy
MzNGMEQxODVBM0UzQjAwOERGQUY1IC8qIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE0M0JGNTlEMTE0OTI5MjgwMEM2NDNDQSAvKiBSZW5kZXJQ
cm9ncmVzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUE1NzRGMjUxMzFEQjkzOTAwNDcxQjg4IC8q
IFJlbmRlclF1b3RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlENzBBRDY1ODEzRTEzNDJCMDA1QjUw
QjQgLyogUmVuZGVyUmVnaW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI3ODUyLDYgKzI3ODYyLDcg
QEAKIAkJCQlCOERCREI0QjEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEM5QTVFQTBCM0QxMDVGMDA1QTAyMzIgLyogU2V0dGlu
Z3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFDMkYyNEExNTMzQTIxMjAwODNGOTc0IC8qIFNl
dHRpbmdzTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTEyMzNGMEMxODVBM0UzQjAwOERGQUY1
IC8qIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYzREQ0NEYxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM1RUI4QzMwRTgyMDMxQjAwQjI1OTY1IC8qIFNoYWRvd0RhdGEuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTZEMTY5NjIxMzQ2QjQ5QjAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0yODIwNyw2ICsyODIxOCw3IEBACiAJCQkJQjJDM0RBM0QwRDAw
NkMxRDAwRUY2RjI2IC8qIFRleHRDb2RlY0xhdGluMS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MkFGRkM5OTBEMDBBNURGMDAzMDA3NEQgLyogVGV4dENvZGVjTWFjLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyQzNEQTNGMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWNVc2VyRGVmaW5lZC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlFMTIzM0YxMDE4NUE0MTMwMDA4REZBRjUgLyogQ3J5cHRv
QWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkMz
REE0MTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTFGRjhGNkMxODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNDNDQjgxMTJGMjVFNTEwMDMzQzVFRSAvKiBUZXh0
Q29kZWNVVEY4LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCShy
ZXZpc2lvbiAxNjA0OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0Fs
Z29yaXRobURpY3Rpb25hcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEsNiArMzAxLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcgogewogICAgIHN3aXRjaCAo
YWxnb3JpdGhtKSB7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19Q
S0NTMV92MV81OgorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPigpOwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNB
U1NBX1BLQ1MxX3YxXzU6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0Ff
UFNTOgogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgTk9UX1NVUFBPUlRFRF9FUlIpOwpA
QCAtMzQwLDYgKzM0MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXIKIHsKICAgICBzd2l0Y2ggKGFsZ29yaXRobSkgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNToKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4oKTsKICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OlJTQVNTQV9QS0NTMV92MV81OgogICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6UlNBX1BTUzoKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIE5P
VF9TVVBQT1JURURfRVJSKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5
cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcAkocmV2aXNpb24gMTYw
NDk2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0
aW9uSldLLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkwLDYgKzE5MCw5IEBAIGJvb2wgSlNDcnlw
dG9LZXlTZXJpYWxpemF0aW9uSldLOjpyZWNvbmMKICAgICB9IGVsc2UgaWYgKG1fandrQWxnb3Jp
dGhtTmFtZSA9PSAiUlM1MTIiKSB7CiAgICAgICAgIGFsZ29yaXRobSA9IENyeXB0b0FsZ29yaXRo
bVJlZ2lzdHJ5OjpzaGFyZWQoKS5jcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNB
U1NBX1BLQ1MxX3YxXzUpOwogICAgICAgICBwYXJhbWV0ZXJzID0gY3JlYXRlUlNBS2V5UGFyYW1l
dGVyc1dpdGhIYXNoKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTIpOworICAgIH0g
ZWxzZSBpZiAobV9qd2tBbGdvcml0aG1OYW1lID09ICJSU0ExXzUiKSB7CisgICAgICAgIGFsZ29y
aXRobSA9IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpzaGFyZWQoKS5jcmVhdGUoQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNSk7CisgICAgICAgIHBhcmFtZXRlcnMg
PSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KCk7CiAgICAgfSBl
bHNlIGlmIChtX2p3a0FsZ29yaXRobU5hbWUgPT0gIlJTQS1PQUVQIikgewogICAgICAgICBhbGdv
cml0aG0gPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2hhcmVkKCkuY3JlYXRlKENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlJTQV9PQUVQKTsKICAgICAgICAgcGFyYW1ldGVycyA9IGNyZWF0
ZVJTQUtleVBhcmFtZXRlcnNXaXRoSGFzaChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFf
MSk7CkBAIC0zMjEsNiArMzI0LDggQEAgYm9vbCBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6
OmtleVNpegogICAgICAgICByZXR1cm4gc2l6ZUluQml0cyA+PSAyMDQ4OwogICAgIGlmIChtX2p3
a0FsZ29yaXRobU5hbWUgPT0gIlJTNTEyIikKICAgICAgICAgcmV0dXJuIHNpemVJbkJpdHMgPj0g
MjA0ODsKKyAgICBpZiAobV9qd2tBbGdvcml0aG1OYW1lID09ICJSU0ExXzUiKQorICAgICAgICBy
ZXR1cm4gc2l6ZUluQml0cyA+PSAyMDQ4OwogICAgIGlmIChtX2p3a0FsZ29yaXRobU5hbWUgPT0g
IlJTQV9PQUVQIikKICAgICAgICAgcmV0dXJuIHNpemVJbkJpdHMgPj0gMjA0ODsKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTU5MSw2ICs1OTYsMTMgQEAgdm9pZCBKU0NyeXB0b0tleVNlcmlhbGl6YXRp
b25KV0s6OmFkZEpXSwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzU6IHsKKyAgICAgICAg
Y29uc3QgQ3J5cHRvS2V5UlNBJiByc2FLZXkgPSB0b0NyeXB0b0tleVJTQShrZXkpOworICAgICAg
ICBpZiAocnNhS2V5LmtleVNpemVJbkJpdHMoKSA8IDIwNDgpCisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgandrQWxnb3JpdGhtID0gIlJTQTFfNSI7CisgICAgICAgIGJyZWFrOworICAgIH0K
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9PQUVQOiB7CiAgICAgICAg
IGNvbnN0IENyeXB0b0tleVJTQSYgcnNhS2V5ID0gdG9DcnlwdG9LZXlSU0Eoa2V5KTsKICAgICAg
ICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoOwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cu
Y3BwCShyZXZpc2lvbiAxNjA0OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3
IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGgKICAgICByZXR1cm4g
c19pZGVudGlmaWVyOwogfQogCi1ib29sIENyeXB0b0FsZ29yaXRobUFFU19LVzo6a2V5QWxnb3Jp
dGhtTWF0Y2hlcyhjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRv
S2V5JiBrZXkpIGNvbnN0Citib29sIENyeXB0b0FsZ29yaXRobUFFU19LVzo6a2V5QWxnb3JpdGht
TWF0Y2hlcyhjb25zdCBDcnlwdG9LZXkmIGtleSkgY29uc3QKIHsKICAgICBpZiAoa2V5LmFsZ29y
aXRobUlkZW50aWZpZXIoKSAhPSBzX2lkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTY0LDkgKzY0LDkgQEAgYm9vbCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmtleUFsZ29yaXRo
bQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6ZW5j
cnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVy
cywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEs
IFZlY3RvckNhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjplbmNyeXB0Rm9y
V3JhcEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5
JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrIGNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKLSAgICBpZiAoIWtleUFsZ29yaXRobU1hdGNoZXMocGFyYW1ldGVycywga2V5KSkgeworICAg
IGlmICgha2V5QWxnb3JpdGhtTWF0Y2hlcyhrZXkpKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBP
UlRFRF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03NCw5ICs3NCw5IEBAIHZvaWQg
Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjplbmNyeXB0Rm9yV3IKICAgICBwbGF0Zm9ybUVuY3J5cHQo
dG9DcnlwdG9LZXlBRVMoa2V5KSwgZGF0YSwgc3RkOjptb3ZlKGNhbGxiYWNrKSwgc3RkOjptb3Zl
KGZhaWx1cmVDYWxsYmFjayksIGVjKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6
OmRlY3J5cHRGb3JVbndyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
IGRhdGEsIFZlY3RvckNhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxi
YWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpkZWNy
eXB0Rm9yVW53cmFwS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBD
cnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2Fs
bGJhY2sgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewotICAgIGlmICgha2V5QWxnb3JpdGhtTWF0Y2hlcyhwYXJhbWV0ZXJzLCBrZXkp
KSB7CisgICAgaWYgKCFrZXlBbGdvcml0aG1NYXRjaGVzKGtleSkpIHsKICAgICAgICAgZWMgPSBO
T1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFF
U19LVy5oCShyZXZpc2lvbiAxNjA0OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIs
NyBAQCBwcml2YXRlOgogICAgIENyeXB0b0FsZ29yaXRobUFFU19LVygpOwogICAgIHZpcnR1YWwg
fkNyeXB0b0FsZ29yaXRobUFFU19LVygpOwogCi0gICAgYm9vbCBrZXlBbGdvcml0aG1NYXRjaGVz
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmKSBjb25z
dDsKKyAgICBib29sIGtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvS2V5JikgY29uc3Q7
CiAgICAgdm9pZCBwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBwbGF0Zm9ybURlY3J5cHQoY29uc3Qg
Q3J5cHRvS2V5QUVTJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNr
LCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CiB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNf
UEtDUzFfdjFfNS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19Q
S0NTMV92MV81LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1SU0FFU19Q
S0NTMV92MV81LmgiCisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKworI2luY2x1ZGUgIkNy
eXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtcy5oIgorI2luY2x1ZGUgIkNyeXB0b0tleURhdGFS
U0FDb21wb25lbnRzLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCisjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IGNoYXIqIGNvbnN0
IENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnNfbmFtZSA9ICJSU0FFUy1QS0NTMS12
MV81IjsKKworQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6Q3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNSgpCit7Cit9CisKK0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3Yx
XzU6On5DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81KCkKK3sKK30KKworc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobT4gQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6
Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobT4o
bmV3IENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUpOworfQorCitDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmlkZW50aWZpZXIo
KSBjb25zdAoreworICAgIHJldHVybiBzX2lkZW50aWZpZXI7Cit9CisKK2Jvb2wgQ3J5cHRvQWxn
b3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6a2V5QWxnb3JpdGhtTWF0Y2hlcyhjb25zdCBDcnlwdG9L
ZXkmIGtleSkgY29uc3QKK3sKKyAgICBpZiAoa2V5LmFsZ29yaXRobUlkZW50aWZpZXIoKSAhPSBz
X2lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQoaXNDcnlwdG9L
ZXlSU0Eoa2V5KSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDcnlwdG9BbGdvcml0
aG1SU0FFU19QS0NTMV92MV81OjplbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnMmLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0
YSwgVmVjdG9yQ2FsbGJhY2sgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICgha2V5QWxnb3JpdGhtTWF0Y2hlcyhrZXkp
KSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBwbGF0Zm9ybUVuY3J5cHQodG9DcnlwdG9LZXlSU0Eoa2V5KSwgZGF0YSwgc3Rk
Ojptb3ZlKGNhbGxiYWNrKSwgc3RkOjptb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKK30KKwor
dm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpkZWNyeXB0KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2sgY2FsbGJhY2ssIFZvaWRDYWxsYmFj
ayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICgha2V5QWxn
b3JpdGhtTWF0Y2hlcyhrZXkpKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwbGF0Zm9ybURlY3J5cHQodG9DcnlwdG9LZXlS
U0Eoa2V5KSwgZGF0YSwgc3RkOjptb3ZlKGNhbGxiYWNrKSwgc3RkOjptb3ZlKGZhaWx1cmVDYWxs
YmFjayksIGVjKTsKK30KKwordm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81Ojpn
ZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBi
b29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxi
YWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
JikKK3sKKyAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXMmIHJzYVBhcmFt
ZXRlcnMgPSB0b0NyeXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtcyhwYXJhbWV0ZXJzKTsKKwor
ICAgIGF1dG8ga2V5UGFpckNhbGxiYWNrID0gW2NhbGxiYWNrXShDcnlwdG9LZXlQYWlyJiBwYWly
KSB7CisgICAgICAgIGNhbGxiYWNrKG51bGxwdHIsICZwYWlyKTsKKyAgICB9OworCisgICAgQ3J5
cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNf
UEtDUzFfdjFfNSwgcnNhUGFyYW1ldGVycy5tb2R1bHVzTGVuZ3RoLCByc2FQYXJhbWV0ZXJzLnB1
YmxpY0V4cG9uZW50LCBleHRyYWN0YWJsZSwgdXNhZ2VzLCBzdGQ6Om1vdmUoa2V5UGFpckNhbGxi
YWNrKSwgc3RkOjptb3ZlKGZhaWx1cmVDYWxsYmFjaykpOworfQorCit2b2lkIENyeXB0b0FsZ29y
aXRobVJTQUVTX1BLQ1MxX3YxXzU6OmltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwg
Q3J5cHRvS2V5VXNhZ2UgdXNhZ2UsIEtleUNhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sg
ZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKK3sKKyAgICBjb25zdCBDcnlwdG9LZXlE
YXRhUlNBQ29tcG9uZW50cyYgcnNhQ29tcG9uZW50cyA9IHRvQ3J5cHRvS2V5RGF0YVJTQUNvbXBv
bmVudHMoa2V5RGF0YSk7CisKKyAgICBSZWZQdHI8Q3J5cHRvS2V5UlNBPiByZXN1bHQgPSBDcnlw
dG9LZXlSU0E6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92
MV81LCByc2FDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNhZ2UpOworICAgIGlmICghcmVzdWx0
KSB7CisgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgY2FsbGJhY2soKnJlc3VsdCk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShTVUJU
TEVfQ1JZUFRPKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpB
ZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81
X2gKKyNkZWZpbmUgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNV9oCisKKyNpbmNsdWRl
ICJDcnlwdG9BbGdvcml0aG0uaCIKKworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENyeXB0b0FsZ29yaXRobVJTQUVTUGFyYW1zOworY2xh
c3MgQ3J5cHRvS2V5UlNBOworCitjbGFzcyBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81
IEZJTkFMIDogcHVibGljIENyeXB0b0FsZ29yaXRobSB7CitwdWJsaWM6CisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnN0IHNfbmFtZTsKKyAgICBzdGF0aWMgY29uc3QgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBzX2lkZW50aWZpZXIgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FF
U19QS0NTMV92MV81OworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG0+IGNyZWF0ZSgpOworCisgICAgdmlydHVhbCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlk
ZW50aWZpZXIoKSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBlbmNyeXB0KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVj
cnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5Jiwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sg
ZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5T3JLZXlQYWlyQ2FsbGJhY2ssIFZvaWRDYWxs
YmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgaW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25z
dCBDcnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIEtleUNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgT1ZF
UlJJREU7CisKK3ByaXZhdGU6CisgICAgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNSgp
OworICAgIHZpcnR1YWwgfkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUoKTsKKworICAg
IGJvb2wga2V5QWxnb3JpdGhtTWF0Y2hlcyhjb25zdCBDcnlwdG9LZXkmKSBjb25zdDsKKyAgICB2
b2lkIHBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVy
YXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9L
ZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2ssIFZvaWRD
YWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKK307CisKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorI2VuZGlmIC8vIENyeXB0b0FsZ29yaXRobVJT
QUVTX1BLQ1MxX3YxXzVfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5oCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81TWFjLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdv
cml0aG1SU0FFU19QS0NTMV92MV81LmgiCisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKwor
I2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgorI2luY2x1ZGUgIkNyeXB0b0tleVJT
QS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNf
UEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25z
dCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayBjYWxsYmFjaywgVm9p
ZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCit7CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IGNpcGhlclRleHQoMTAyNCk7CisgICAgc2l6ZV90IGNpcGhlclRleHRMZW5ndGgg
PSBjaXBoZXJUZXh0LnNpemUoKTsKKyAgICBDQ0NyeXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NSU0FD
cnlwdG9yRW5jcnlwdChrZXkucGxhdGZvcm1LZXkoKSwgY2NQS0NTMVBhZGRpbmcsIGRhdGEuZmly
c3QsIGRhdGEuc2Vjb25kLCBjaXBoZXJUZXh0LmRhdGEoKSwgJmNpcGhlclRleHRMZW5ndGgsIDAs
IDAsIGtDQ0RpZ2VzdE5vbmUpOworICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgZmFpbHVyZUNh
bGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjaXBoZXJUZXh0LnJlc2l6
ZShjaXBoZXJUZXh0TGVuZ3RoKTsKKyAgICBjYWxsYmFjayhjaXBoZXJUZXh0KTsKK30KKwordm9p
ZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybURlY3J5cHQoY29uc3Qg
Q3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3Rv
ckNhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJikKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gcGxhaW5UZXh0KDEwMjQpOworICAgIHNp
emVfdCBwbGFpblRleHRMZW5ndGggPSBwbGFpblRleHQuc2l6ZSgpOworICAgIENDQ3J5cHRvclN0
YXR1cyBzdGF0dXMgPSBDQ1JTQUNyeXB0b3JEZWNyeXB0KGtleS5wbGF0Zm9ybUtleSgpLCBjY1BL
Q1MxUGFkZGluZywgZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQsIHBsYWluVGV4dC5kYXRhKCksICZw
bGFpblRleHRMZW5ndGgsIDAsIDAsIGtDQ0RpZ2VzdE5vbmUpOworICAgIGlmIChzdGF0dXMpIHsK
KyAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBwbGFpblRleHQucmVzaXplKHBsYWluVGV4dExlbmd0aCk7CisgICAgY2FsbGJhY2socGxhaW5U
ZXh0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNV
QlRMRV9DUllQVE8pCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRk
ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxn
b3JpdGhtUmVnaXN0cnlNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnlNYWMuY3BwCShyZXZpc2lvbiAxNjA0OTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5TWFjLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNyeXB0b0FsZ29y
aXRobUFFU19DQkMuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BRVNfS1cuaCIKICNpbmNs
dWRlICJDcnlwdG9BbGdvcml0aG1ITUFDLmgiCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUlNB
RVNfUEtDUzFfdjFfNS5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92
MV81LmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaCIKICNpbmNsdWRlICJD
cnlwdG9BbGdvcml0aG1TSEExLmgiCkBAIC00Niw2ICs0Nyw3IEBAIHZvaWQgQ3J5cHRvQWxnb3Jp
dGhtUmVnaXN0cnk6OnBsYXRmb3JtUmUKICAgICByZWdpc3RlckFsZ29yaXRobTxDcnlwdG9BbGdv
cml0aG1BRVNfQ0JDPigpOwogICAgIHJlZ2lzdGVyQWxnb3JpdGhtPENyeXB0b0FsZ29yaXRobUFF
U19LVz4oKTsKICAgICByZWdpc3RlckFsZ29yaXRobTxDcnlwdG9BbGdvcml0aG1ITUFDPigpOwor
ICAgIHJlZ2lzdGVyQWxnb3JpdGhtPENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU+KCk7
CiAgICAgcmVnaXN0ZXJBbGdvcml0aG08Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU+
KCk7CiAgICAgcmVnaXN0ZXJBbGdvcml0aG08Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA+KCk7CiAg
ICAgcmVnaXN0ZXJBbGdvcml0aG08Q3J5cHRvQWxnb3JpdGhtU0hBMT4oKTsKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE2MDUwMSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDEzLTEyLTEyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBSU0FFUy1QS0NTMS12MV81CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU2NDcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNyeXB0by9zdWJ0
bGUvcnNhZXMtcGtjczEtdjFfNS1kZWNyeXB0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogY3J5cHRvL3N1YnRsZS9yc2Flcy1wa2NzMS12MV81LWRlY3J5cHQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogY3J5cHRvL3N1YnRsZS9yc2Flcy1wa2NzMS12MV81LXdyYXAtdW53cmFwLWFlcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvcnNhZXMtcGtjczEt
djFfNS13cmFwLXVud3JhcC1hZXMuaHRtbDogQWRkZWQuCisKIDIwMTMtMTItMTIgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUHVibGljIGtleSBpbiBhIGdl
bmVyYXRlZCBLZXlQYWlyIHNob3VsZCBhbHdheXMgYmUgZXh0cmFjdGFibGUKSW5kZXg6IExheW91
dFRlc3RzL2NyeXB0by9zdWJ0bGUvcnNhZXMtcGtjczEtdjFfNS1kZWNyeXB0LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYWVzLXBrY3MxLXYx
XzUtZGVjcnlwdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9jcnlw
dG8vc3VidGxlL3JzYWVzLXBrY3MxLXYxXzUtZGVjcnlwdC1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMiBAQAorVGVzdCBkZWNyeXB0aW5nIGEga25vd24gbWVzc2FnZSB3
aXRoIFJTQUVTLVBLQ1MxLXYxXzUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitJ
bXBvcnRpbmcgYW4gUlNBIGtleS4uLgorRGVjcnlwdGluZy4uLgorUEFTUyBieXRlc1RvSGV4U3Ry
aW5nKG5ldyBVaW50OEFycmF5KG1lc3NhZ2UpKSBpcyAnMmFhY2VjODZmNDIzZGQ5MjVlYzE1ODgy
MmE3NDhjYmU2YzMxYTAnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRs
ZS9yc2Flcy1wa2NzMS12MV81LWRlY3J5cHQtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6
IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAjIwordGV4dC9wbGFpbgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIHByb3BlcnR5CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2
ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy9jcnlw
dG8vc3VidGxlL3JzYWVzLXBrY3MxLXYxXzUtZGVjcnlwdC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvcnNhZXMtcGtjczEtdjFfNS1kZWNyeXB0Lmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYWVzLXBrY3MxLXYxXzUt
ZGVjcnlwdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jb21tb24uanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgZGVjcnlw
dGluZyBhIGtub3duIG1lc3NhZ2Ugd2l0aCBSU0FFUy1QS0NTMS12MV81LiIpOworCitqc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKwordmFyIHByaXZhdGVLZXlKU09OID0geworICAgIGt0eTogIlJTQSIs
CisgICAgYWxnOiAiUlNBMV81IiwKKyAgICBuOiBCYXNlNjRVUkwuc3RyaW5naWZ5KGhleFN0cmlu
Z1RvVWludDhBcnJheSgiZGNmYTEwZmZhNzQ2NjVhZWVmODcwOTc0ZWE5OWIyY2U1NDU0N2M2N2Y0
MmFhYTZkZDAxYTJlZDMxZmQyYzI0MmFmNWQ5NjBiMWY4OTZlZmJhMzU0M2Q2NTU0YjdiMTI2ODdh
NWM2ODg1NjhmMzJlMDI2YzUzMmQyNTk5M2I5N2E3YzI4NDJlYzJiOGUxMjM1ZWVlMjQxNGQyNTgw
NmM2ZmJhZTQzODk1NGViYTlkMjc1NWRmZmVlYjFiNDc3MDA5NTc4MTVhOGEyMzNmOTdiMWEyYzcx
NGIzZTJiZTJlNDJkOGJlMzBiMTk2MTU4MmVhOTk0ODkxMGUwYzc5N2M1MGZjNGJiNDU1ZjBmYzQ1
ZTVlMzRlNjM5NmFjNWIyZDQ2MjM5MzY1YzdmM2RhYWYwOTA5NDAwZDYxY2Y5ZTBjYTgwODNlYWYz
MzVhNmZjZWI2ODYzYzFjYzBjZjVhMTcxYWZmMzVkOTdlY2I2MGVmMjUxYzdlYzJjOGE1ODgzNjFk
YzQxMjY2YTRiN2VkMzhiMDI2Y2UwZDUzNzg2NDQ5ZGJiMTFhMDZlYTMzY2NmMWVjYTU3NTIwMWVk
MWFhNDczZWQxMTg3ZWMxZDhhNzQ0ZWEzNDViZWQ3ZWEwMGVlNGU4MWJiYTQ2NDg2MDFkZDUzN2Rj
OTEwMTVkMzFmMGMyYzEiKSksCisgICAgZTogQmFzZTY0VVJMLnN0cmluZ2lmeShoZXhTdHJpbmdU
b1VpbnQ4QXJyYXkoIjAxMDAwMSIpKSwKKyAgICBkOiBCYXNlNjRVUkwuc3RyaW5naWZ5KGhleFN0
cmluZ1RvVWludDhBcnJheSgiMjE5NTA4NTFjZGYyNTMyMDMxOGIzMDVhZmEwZjM3MWYwN2FlNWE0
NGIzMTRlYmQ3MjlmNWRjYjE1ZGE3ZmEzOTQ3YWNkZDkxNWRhZWQ1NzRiZDE2ZGY4OGJmODVmNjEw
NjBiMzg3MTcyZmFlNmUwMTI2MmIzODY0YzJkM2MyMmY5NGUwNGE4MTU5NDIyYjRlZDI3OWM0OGE0
YzlkNzY3ZDQ5NjYwNzFhNWJiZjVkMDQzZTE2ZmY0NmVjMWJhMDcxNmYwMGJiYzk3YmZmNWQ1Njkz
ZTIxNGU5OWM5NzIxZjEyYjNlYzYyODJhZTJhNDg1NzIxYjk2ZGRjZjc0MDNmYTAzN2QwYzU3YWI0
NjNjNDQ4ZGU1Y2MxMjI2NWFkZDg4NmQzMTFlYThkOGE1OTAzZmE1NmM1ZjFjOWNmMmViMTFjYjY1
N2ExYTdkM2U0MTM1MmRjM2U2ODY4OThjNGNlNDMwNWU4YjYzOGUxYjA4YTJhODZjYzllYjk4NjZm
MzQ5OWFjNzdiNjEzNmI4MWNiMjc2ZDYxNGNmZWI3YjZlZDNmM2JjNzc1ZTQ2YzAwMDY2ZWJlZWUy
Y2ZmNzE2NmI1NzUyMDU5ODk0N2ZmNjIxMDMyMGIyODhmYjRmMmMzZjhmZTk3YjI3OTQxNGViZjcy
MDMwMDBhMTlmYzA0MjQ4NzUiKSksCisgICAgcDogQmFzZTY0VVJMLnN0cmluZ2lmeShoZXhTdHJp
bmdUb1VpbnQ4QXJyYXkoImYxMjNiZmU1M2RlOTdhNTY5ZDkxYWRjZjU1NmZhNjI1YWQzMGYzZmQz
ZDgxMWY5ZTkxZTZhZjQ0YjZlNzgwY2IwZjMyNzgyOWZiMjExOTBhZTI4MDY2NDZkNzI4Y2Q5YjY1
MzExMzJiMWViZmVmMTI3Mjk5MzA2MGYxY2U3MGIxMjQzOTMwOTFlZTg1OTNiNzI3MzY3ZWRiYmEw
MDllYzViZTE3YzRhY2VlMTIwYzg0MTI2N2Q0NzYzMWExNmMzNmE2ZDFjOTk5NzNjMWIwYjVhODM1
YmYzOWZlYWZlOGY2NDIxZmQ5YzJhOTBiYzI3OTc2NjU5ZTY3YmM4MzEyNGQiKSksCisgICAgcTog
QmFzZTY0VVJMLnN0cmluZ2lmeShoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoImVhOTgzOWI3ZTM3ZWE4
OWJiZGEyN2U0YzkzNDcxY2I0ZmQ5MjE4OWEwYTk2YmNiNGQ3NTY5M2YxOGE1YzJmNzQyYWY5ZTM2
ZmRlNjc5ZmJkOWVhZTM0NWZhMjY5NTI3YjY5NjUwMjFjNGJkZjU0ZDY4NWJmMDg5NjBjYzk3NmY2
OGRjYTIxY2ViZjQ0ZjI2OGE1OWRhYjhkMWEyNWU1MTlmNTE0N2UxZjQ1ZmUyODdkNzRjZjcyNWJl
YzEzMjZkMzQyMTJjNTZjZjRmZmZhMjAyZjU3YjY4ZWU4Y2NhOTQzZjNjMTM4YzRjZGUzM2JkZjJj
OTQ0MGRmNjUzMjI0NDUiKSksCisgICAgZHA6IEJhc2U2NFVSTC5zdHJpbmdpZnkoaGV4U3RyaW5n
VG9VaW50OEFycmF5KCJjYTBjOWI2MGI4ZTRhNjA2Njc1NmM2NWQyMDg4NDE5ZGY2MjUzYjdiNjg4
YTg1ZjRmNmU5NjRkODVkYWQ1MmE0NTI2Mjg2N2YxZTk2MTgwNjlmY2NkODY1ZTkyODllNDZlMzll
MjAyMjk0NGM1YzQ0ODdkMzQ1Y2YyNTJkNDYwZDk3N2Q3N2VkZmVmZWRiY2JhZTQ2YTIzYWY3ZmE0
NzBmMDc3ZGEwZTUwOTQyMDQ0Y2IxYTM2MDQ5N2NjMjc2MGFjMGYyYWQ0YTJmY2QwZTg0ZDdhMWQ5
NGRmZGQyNjU4ZmQ5Y2UxODQ3NWMxZmE3NWVlMGNlYmFkMGNmMGFjMDRkIikpLAorICAgIGRxOiBC
YXNlNjRVUkwuc3RyaW5naWZ5KGhleFN0cmluZ1RvVWludDhBcnJheSgiNTI4MTcxMjMzYzRlNGE2
YzYzYjg2NzY0ZjUxMzM4ODQ2YWZkZGJjYjI5NTgzNDRjMDFjNDAwNGExZGQ4MjgxNDVhMWQwMmEx
NTA3ZGVmNGY1ODI0N2E2NGZjMTBjMGEyODhjMWFlODk1NzIxZDc4YjhmMDQ0ZGI3YzAwZDg2ZGE1
NWE5YjY1NDI5MmVjZDc2ODI3MGJlNjllNGJkNTkyMmQ0ZWZmZDFmNzA5NTVmOTYyN2UzZTE5Yjc0
OWU5M2I0MGVmM2RkMWQ2MWQ5MzkxNWUyYjA5ZDkzMGI0YjE3NjhiZmFjYzAxMzZmMzliMGNmZGZi
NGQwNTAwMTFlMmU2NSIpKSwKKyAgICBxaTogQmFzZTY0VVJMLnN0cmluZ2lmeShoZXhTdHJpbmdU
b1VpbnQ4QXJyYXkoImRmMmViMjMyMmNjMmRhYWJmNGQxNDY1NTA4ZjQxNTIxY2RhN2NlZmYyM2Vi
ZTYxZDAwZDQ0MWVlNzI4ZGRhNWQxNmM3YmY5MjBjZDk1ZjM0YmViNGZlMzJlZTgxN2VmMzM2MmUw
YmNkMWQxMjQ1ZjdiMDc3OTNlYWExOTBkYzVhMzdmZGFmNGM2OGUyY2ExMzk3MmQ3ZjUxNDhiNzk2
YjZmYjZkN2FkZGEwN2JkMmNkMTNiZTk4Y2ViZWQxZWRjNmNhNDEyZTM5NTM1MGM1OWExZDg0MmJj
NGFhMmYzYzBiMjQzZmRlN2RmZDk1MzU2ZjI0MzkyNTFhMTE3MmM0NWUiKSkKK307CisKK3ZhciBl
eHRyYWN0YWJsZSA9IHRydWU7Cit2YXIgbm9uRXh0cmFjdGFibGUgPSBmYWxzZTsKKworZGVidWco
IkltcG9ydGluZyBhbiBSU0Ega2V5Li4uIik7CitjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandr
IiwgYXNjaWlUb1VpbnQ4QXJyYXkoSlNPTi5zdHJpbmdpZnkocHJpdmF0ZUtleUpTT04pKSwgbnVs
bCwgZXh0cmFjdGFibGUsIFsiZGVjcnlwdCJdKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAg
IHByaXZhdGVLZXkgPSByZXN1bHQ7CisKKyAgICBkZWJ1ZygiRGVjcnlwdGluZy4uLiIpOworICAg
IGVuY3J5cHRlZE1lc3NhZ2UgPSBoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjYwNDJlNzQ1NTg5YWYw
M2FmODc1MjBmOTNjNDVkOGMzNTk4NWFkYTExNjFhMzdkODIyZTlmOTQ2MGZjNzVmY2YwMTc5ZDg0
OTFiOGY1ZDFlNGRlOGNlYjMxZTA3YzQ4NjVjNWEzZWZkYmJiNjlhODgwM2I4OWVlNjVhNDMwYTU4
MDljNzA3NTY5MTUwYjU4MGJiNjg2YTk0YzU1NDFjNDZhZGNkODI3OTYwY2UyNDRmZjY4ODM4N2Qx
NjE2ZTg1YjRkMTc4MGM2NDgzNjA2Y2Y5MjRiNTRmMDgwY2Y0MTU0ZTY2ODI5YmY2ZTUzMjQ4MTA0
OGVjNDFmYWRjMDdkNzU1YmIzNGJiMjgxNDUyMTljYjMwZDQ3ZDBkNjE4NzA5MTgwZTkwMzAzZmY5
ZWYwOTAxOGJlZDNkYTc1NzYxZGE3OTQ4MTFmOTZiYzllOGQ3YzRiYTFiNTk0NmJkYTBiZDMxM2Zh
ZWM0Yzk5M2VkMjc0OGVlZDhjY2U0YmRiNTIwYmE3ZGIxNjVmOWZlNTZhYTg0NTRkNmZmMzM4NzRm
ZWVlYmYyOWRlMmRmNWI3ZjAwYWExZDlmYjA3M2ZjNDA2N2I1OGRjNTA2MjRlMTI3ZjcxMWRkZTJj
YzJjZmRhYjQ5MTljY2YyOGM4MzY2MGRmYzIyN2IwZjUwMGVjMWY5MDRmIik7CisgICAgcmV0dXJu
IGNyeXB0by5zdWJ0bGUuZGVjcnlwdCgiUlNBRVMtUEtDUzEtdjFfNSIsIHByaXZhdGVLZXksIGVu
Y3J5cHRlZE1lc3NhZ2UpOworfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICBtZXNzYWdl
ID0gcmVzdWx0OworICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKG5ldyBVaW50OEFycmF5
KG1lc3NhZ2UpKSIsICInMmFhY2VjODZmNDIzZGQ5MjVlYzE1ODgyMmE3NDhjYmU2YzMxYTAnIik7
CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvcnNhZXMt
cGtjczEtdjFfNS1kZWNyeXB0Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQoj
IyAtMCwwICsxICMjCit0ZXh0L2h0bWwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJ
bmRleDogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9yc2Flcy1wa2NzMS12MV81LXdyYXAtdW53
cmFwLWFlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1
YnRsZS9yc2Flcy1wa2NzMS12MV81LXdyYXAtdW53cmFwLWFlcy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYWVzLXBrY3MxLXYxXzUtd3Jh
cC11bndyYXAtYWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBA
CitUZXN0IHdyYXBwaW5nIGFuZCB1bndyYXBwaW5nIGFuIEFFUyBrZXkgd2l0aCBSU0FFUy1QS0NT
MS12MV81LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworSW1wb3J0aW5nIFJTQSBr
ZXlzLi4uCitJbXBvcnRpbmcgYW4gQUVTIGtleS4uLgorV3JhcHBpbmcgaXQuLi4KK1BBU1Mgd3Jh
cHBlZEtleS50b1N0cmluZygpIGlzICdbb2JqZWN0IEFycmF5QnVmZmVyXScKK1Vud3JhcHBpbmcg
aXQuLi4KK1BBU1MgdW53cmFwcGVkS2V5LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgS2V5XScKK1BB
U1MgdW53cmFwcGVkS2V5LnR5cGUgaXMgJ3NlY3JldCcKK1BBU1MgdW53cmFwcGVkS2V5LmV4dHJh
Y3RhYmxlIGlzIHRydWUKK1BBU1MgdW53cmFwcGVkS2V5LmFsZ29yaXRobS5uYW1lIGlzICdBRVMt
Q0JDJworUEFTUyB1bndyYXBwZWRLZXkuYWxnb3JpdGhtLmxlbmd0aCBpcyAyNTYKK1BBU1MgdW53
cmFwcGVkS2V5LnVzYWdlcyBpcyBbJ2VuY3J5cHQnLCAnZGVjcnlwdCddCitFeHBvcnRpbmcgaXQu
Li4KK1BBU1MgYnl0ZXNUb0hleFN0cmluZyh1bndyYXBwZWRLZXlEYXRhKSBpcyBieXRlc1RvSGV4
U3RyaW5nKGFlc0tleURhdGEpCisKK1dyYXBwaW5nIHRoZSBzYW1lIGtleSBhcyBKV0suLi4KK1BB
U1Mgd3JhcHBlZEtleS50b1N0cmluZygpIGlzICdbb2JqZWN0IEFycmF5QnVmZmVyXScKK1Vud3Jh
cHBpbmcgaXQuLi4KK1BBU1MgdW53cmFwcGVkS2V5LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgS2V5
XScKK1BBU1MgdW53cmFwcGVkS2V5LnR5cGUgaXMgJ3NlY3JldCcKK1BBU1MgdW53cmFwcGVkS2V5
LmV4dHJhY3RhYmxlIGlzIHRydWUKK1BBU1MgdW53cmFwcGVkS2V5LmFsZ29yaXRobS5uYW1lIGlz
ICdBRVMtQ0JDJworUEFTUyB1bndyYXBwZWRLZXkuYWxnb3JpdGhtLmxlbmd0aCBpcyAyNTYKK1BB
U1MgdW53cmFwcGVkS2V5LnVzYWdlcyBpcyBbJ2VuY3J5cHQnLCAnZGVjcnlwdCddCitFeHBvcnRp
bmcgaXQuLi4KK1BBU1MgYnl0ZXNUb0hleFN0cmluZyh1bndyYXBwZWRLZXlEYXRhKSBpcyBieXRl
c1RvSGV4U3RyaW5nKGFlc0tleURhdGEpCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvY3J5
cHRvL3N1YnRsZS9yc2Flcy1wa2NzMS12MV81LXdyYXAtdW53cmFwLWFlcy1leHBlY3RlZC50eHQK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCit0ZXh0L3BsYWlu
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMg
LTAsMCArMSAjIworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6
IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvcnNhZXMtcGtjczEtdjFfNS13cmFwLXVud3JhcC1h
ZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYWVzLXBr
Y3MxLXYxXzUtd3JhcC11bndyYXAtYWVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9jcnlwdG8vc3VidGxlL3JzYWVzLXBrY3MxLXYxXzUtd3JhcC11bndyYXAtYWVzLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Qgd3JhcHBpbmcgYW5kIHVud3JhcHBp
bmcgYW4gQUVTIGtleSB3aXRoIFJTQUVTLVBLQ1MxLXYxXzUuIik7CisKK2pzVGVzdElzQXN5bmMg
PSB0cnVlOworCit2YXIgcHVibGljS2V5SlNPTiA9IHsKKyAgICBrdHk6ICJSU0EiLAorICAgIGFs
ZzogIlJTQTFfNSIsCisgICAgbjogQmFzZTY0VVJMLnN0cmluZ2lmeShoZXhTdHJpbmdUb1VpbnQ4
QXJyYXkoImRjZmExMGZmYTc0NjY1YWVlZjg3MDk3NGVhOTliMmNlNTQ1NDdjNjdmNDJhYWE2ZGQw
MWEyZWQzMWZkMmMyNDJhZjVkOTYwYjFmODk2ZWZiYTM1NDNkNjU1NGI3YjEyNjg3YTVjNjg4NTY4
ZjMyZTAyNmM1MzJkMjU5OTNiOTdhN2MyODQyZWMyYjhlMTIzNWVlZTI0MTRkMjU4MDZjNmZiYWU0
Mzg5NTRlYmE5ZDI3NTVkZmZlZWIxYjQ3NzAwOTU3ODE1YThhMjMzZjk3YjFhMmM3MTRiM2UyYmUy
ZTQyZDhiZTMwYjE5NjE1ODJlYTk5NDg5MTBlMGM3OTdjNTBmYzRiYjQ1NWYwZmM0NWU1ZTM0ZTYz
OTZhYzViMmQ0NjIzOTM2NWM3ZjNkYWFmMDkwOTQwMGQ2MWNmOWUwY2E4MDgzZWFmMzM1YTZmY2Vi
Njg2M2MxY2MwY2Y1YTE3MWFmZjM1ZDk3ZWNiNjBlZjI1MWM3ZWMyYzhhNTg4MzYxZGM0MTI2NmE0
YjdlZDM4YjAyNmNlMGQ1Mzc4NjQ0OWRiYjExYTA2ZWEzM2NjZjFlY2E1NzUyMDFlZDFhYTQ3M2Vk
MTE4N2VjMWQ4YTc0NGVhMzQ1YmVkN2VhMDBlZTRlODFiYmE0NjQ4NjAxZGQ1MzdkYzkxMDE1ZDMx
ZjBjMmMxIikpLAorICAgIGU6IEJhc2U2NFVSTC5zdHJpbmdpZnkoaGV4U3RyaW5nVG9VaW50OEFy
cmF5KCIwMTAwMDEiKSkKK307CisKK3ZhciBwcml2YXRlS2V5SlNPTiA9IHsKKyAgICBrdHk6ICJS
U0EiLAorICAgIGFsZzogIlJTQTFfNSIsCisgICAgbjogQmFzZTY0VVJMLnN0cmluZ2lmeShoZXhT
dHJpbmdUb1VpbnQ4QXJyYXkoImRjZmExMGZmYTc0NjY1YWVlZjg3MDk3NGVhOTliMmNlNTQ1NDdj
NjdmNDJhYWE2ZGQwMWEyZWQzMWZkMmMyNDJhZjVkOTYwYjFmODk2ZWZiYTM1NDNkNjU1NGI3YjEy
Njg3YTVjNjg4NTY4ZjMyZTAyNmM1MzJkMjU5OTNiOTdhN2MyODQyZWMyYjhlMTIzNWVlZTI0MTRk
MjU4MDZjNmZiYWU0Mzg5NTRlYmE5ZDI3NTVkZmZlZWIxYjQ3NzAwOTU3ODE1YThhMjMzZjk3YjFh
MmM3MTRiM2UyYmUyZTQyZDhiZTMwYjE5NjE1ODJlYTk5NDg5MTBlMGM3OTdjNTBmYzRiYjQ1NWYw
ZmM0NWU1ZTM0ZTYzOTZhYzViMmQ0NjIzOTM2NWM3ZjNkYWFmMDkwOTQwMGQ2MWNmOWUwY2E4MDgz
ZWFmMzM1YTZmY2ViNjg2M2MxY2MwY2Y1YTE3MWFmZjM1ZDk3ZWNiNjBlZjI1MWM3ZWMyYzhhNTg4
MzYxZGM0MTI2NmE0YjdlZDM4YjAyNmNlMGQ1Mzc4NjQ0OWRiYjExYTA2ZWEzM2NjZjFlY2E1NzUy
MDFlZDFhYTQ3M2VkMTE4N2VjMWQ4YTc0NGVhMzQ1YmVkN2VhMDBlZTRlODFiYmE0NjQ4NjAxZGQ1
MzdkYzkxMDE1ZDMxZjBjMmMxIikpLAorICAgIGU6IEJhc2U2NFVSTC5zdHJpbmdpZnkoaGV4U3Ry
aW5nVG9VaW50OEFycmF5KCIwMTAwMDEiKSksCisgICAgZDogQmFzZTY0VVJMLnN0cmluZ2lmeSho
ZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjIxOTUwODUxY2RmMjUzMjAzMThiMzA1YWZhMGYzNzFmMDdh
ZTVhNDRiMzE0ZWJkNzI5ZjVkY2IxNWRhN2ZhMzk0N2FjZGQ5MTVkYWVkNTc0YmQxNmRmODhiZjg1
ZjYxMDYwYjM4NzE3MmZhZTZlMDEyNjJiMzg2NGMyZDNjMjJmOTRlMDRhODE1OTQyMmI0ZWQyNzlj
NDhhNGM5ZDc2N2Q0OTY2MDcxYTViYmY1ZDA0M2UxNmZmNDZlYzFiYTA3MTZmMDBiYmM5N2JmZjVk
NTY5M2UyMTRlOTljOTcyMWYxMmIzZWM2MjgyYWUyYTQ4NTcyMWI5NmRkY2Y3NDAzZmEwMzdkMGM1
N2FiNDYzYzQ0OGRlNWNjMTIyNjVhZGQ4ODZkMzExZWE4ZDhhNTkwM2ZhNTZjNWYxYzljZjJlYjEx
Y2I2NTdhMWE3ZDNlNDEzNTJkYzNlNjg2ODk4YzRjZTQzMDVlOGI2MzhlMWIwOGEyYTg2Y2M5ZWI5
ODY2ZjM0OTlhYzc3YjYxMzZiODFjYjI3NmQ2MTRjZmViN2I2ZWQzZjNiYzc3NWU0NmMwMDA2NmVi
ZWVlMmNmZjcxNjZiNTc1MjA1OTg5NDdmZjYyMTAzMjBiMjg4ZmI0ZjJjM2Y4ZmU5N2IyNzk0MTRl
YmY3MjAzMDAwYTE5ZmMwNDI0ODc1IikpLAorICAgIHA6IEJhc2U2NFVSTC5zdHJpbmdpZnkoaGV4
U3RyaW5nVG9VaW50OEFycmF5KCJmMTIzYmZlNTNkZTk3YTU2OWQ5MWFkY2Y1NTZmYTYyNWFkMzBm
M2ZkM2Q4MTFmOWU5MWU2YWY0NGI2ZTc4MGNiMGYzMjc4MjlmYjIxMTkwYWUyODA2NjQ2ZDcyOGNk
OWI2NTMxMTMyYjFlYmZlZjEyNzI5OTMwNjBmMWNlNzBiMTI0MzkzMDkxZWU4NTkzYjcyNzM2N2Vk
YmJhMDA5ZWM1YmUxN2M0YWNlZTEyMGM4NDEyNjdkNDc2MzFhMTZjMzZhNmQxYzk5OTczYzFiMGI1
YTgzNWJmMzlmZWFmZThmNjQyMWZkOWMyYTkwYmMyNzk3NjY1OWU2N2JjODMxMjRkIikpLAorICAg
IHE6IEJhc2U2NFVSTC5zdHJpbmdpZnkoaGV4U3RyaW5nVG9VaW50OEFycmF5KCJlYTk4MzliN2Uz
N2VhODliYmRhMjdlNGM5MzQ3MWNiNGZkOTIxODlhMGE5NmJjYjRkNzU2OTNmMThhNWMyZjc0MmFm
OWUzNmZkZTY3OWZiZDllYWUzNDVmYTI2OTUyN2I2OTY1MDIxYzRiZGY1NGQ2ODViZjA4OTYwY2M5
NzZmNjhkY2EyMWNlYmY0NGYyNjhhNTlkYWI4ZDFhMjVlNTE5ZjUxNDdlMWY0NWZlMjg3ZDc0Y2Y3
MjViZWMxMzI2ZDM0MjEyYzU2Y2Y0ZmZmYTIwMmY1N2I2OGVlOGNjYTk0M2YzYzEzOGM0Y2RlMzNi
ZGYyYzk0NDBkZjY1MzIyNDQ1IikpLAorICAgIGRwOiBCYXNlNjRVUkwuc3RyaW5naWZ5KGhleFN0
cmluZ1RvVWludDhBcnJheSgiY2EwYzliNjBiOGU0YTYwNjY3NTZjNjVkMjA4ODQxOWRmNjI1M2I3
YjY4OGE4NWY0ZjZlOTY0ZDg1ZGFkNTJhNDUyNjI4NjdmMWU5NjE4MDY5ZmNjZDg2NWU5Mjg5ZTQ2
ZTM5ZTIwMjI5NDRjNWM0NDg3ZDM0NWNmMjUyZDQ2MGQ5NzdkNzdlZGZlZmVkYmNiYWU0NmEyM2Fm
N2ZhNDcwZjA3N2RhMGU1MDk0MjA0NGNiMWEzNjA0OTdjYzI3NjBhYzBmMmFkNGEyZmNkMGU4NGQ3
YTFkOTRkZmRkMjY1OGZkOWNlMTg0NzVjMWZhNzVlZTBjZWJhZDBjZjBhYzA0ZCIpKSwKKyAgICBk
cTogQmFzZTY0VVJMLnN0cmluZ2lmeShoZXhTdHJpbmdUb1VpbnQ4QXJyYXkoIjUyODE3MTIzM2M0
ZTRhNmM2M2I4Njc2NGY1MTMzODg0NmFmZGRiY2IyOTU4MzQ0YzAxYzQwMDRhMWRkODI4MTQ1YTFk
MDJhMTUwN2RlZjRmNTgyNDdhNjRmYzEwYzBhMjg4YzFhZTg5NTcyMWQ3OGI4ZjA0NGRiN2MwMGQ4
NmRhNTVhOWI2NTQyOTJlY2Q3NjgyNzBiZTY5ZTRiZDU5MjJkNGVmZmQxZjcwOTU1Zjk2MjdlM2Ux
OWI3NDllOTNiNDBlZjNkZDFkNjFkOTM5MTVlMmIwOWQ5MzBiNGIxNzY4YmZhY2MwMTM2ZjM5YjBj
ZmRmYjRkMDUwMDExZTJlNjUiKSksCisgICAgcWk6IEJhc2U2NFVSTC5zdHJpbmdpZnkoaGV4U3Ry
aW5nVG9VaW50OEFycmF5KCJkZjJlYjIzMjJjYzJkYWFiZjRkMTQ2NTUwOGY0MTUyMWNkYTdjZWZm
MjNlYmU2MWQwMGQ0NDFlZTcyOGRkYTVkMTZjN2JmOTIwY2Q5NWYzNGJlYjRmZTMyZWU4MTdlZjMz
NjJlMGJjZDFkMTI0NWY3YjA3NzkzZWFhMTkwZGM1YTM3ZmRhZjRjNjhlMmNhMTM5NzJkN2Y1MTQ4
Yjc5NmI2ZmI2ZDdhZGRhMDdiZDJjZDEzYmU5OGNlYmVkMWVkYzZjYTQxMmUzOTUzNTBjNTlhMWQ4
NDJiYzRhYTJmM2MwYjI0M2ZkZTdkZmQ5NTM1NmYyNDM5MjUxYTExNzJjNDVlIikpCit9OwordmFy
IHdyYXBBbGdvcml0aG0gPSB7bmFtZTogIlJTQUVTLVBLQ1MxLXYxXzUifTsKK3ZhciBleHRyYWN0
YWJsZSA9IHRydWU7Cit2YXIgbm9uRXh0cmFjdGFibGUgPSBmYWxzZTsKKworZGVidWcoIkltcG9y
dGluZyBSU0Ega2V5cy4uLiIpOworY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIGFzY2lp
VG9VaW50OEFycmF5KEpTT04uc3RyaW5naWZ5KHB1YmxpY0tleUpTT04pKSwgbnVsbCwgZXh0cmFj
dGFibGUsIFsid3JhcEtleSIsICJ1bndyYXBLZXkiXSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsK
KyAgICBwdWJsaWNLZXkgPSByZXN1bHQ7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuaW1wb3J0
S2V5KCJqd2siLCBhc2NpaVRvVWludDhBcnJheShKU09OLnN0cmluZ2lmeShwcml2YXRlS2V5SlNP
TikpLCBudWxsLCBleHRyYWN0YWJsZSwgWyJ3cmFwS2V5IiwgInVud3JhcEtleSJdKTsKK30pLnRo
ZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgcHJpdmF0ZUtleSA9IHJlc3VsdDsKKworICAgIGRl
YnVnKCJJbXBvcnRpbmcgYW4gQUVTIGtleS4uLiIpOworICAgIGFlc0tleURhdGEgPSBoZXhTdHJp
bmdUb1VpbnQ4QXJyYXkoIjYwM2RlYjEwMTVjYTcxYmUyYjczYWVmMDg1N2Q3NzgxMWYzNTJjMDcz
YjYxMDhkNzJkOTgxMGEzMDkxNGRmZjQiKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5pbXBv
cnRLZXkoInJhdyIsIGFlc0tleURhdGEsICJhZXMtY2JjIiwgZXh0cmFjdGFibGUsIFsiZW5jcnlw
dCIsICJkZWNyeXB0IiwgIndyYXBLZXkiLCAidW53cmFwS2V5Il0pCit9KS50aGVuKGZ1bmN0aW9u
KHJlc3VsdCkgeworICAgIGFlc0tleSA9IHJlc3VsdDsKKyAgICBkZWJ1ZygiV3JhcHBpbmcgaXQu
Li4iKTsKKworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLndyYXBLZXkoInJhdyIsIGFlc0tleSwg
cHVibGljS2V5LCB3cmFwQWxnb3JpdGhtKTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7Cisg
ICAgd3JhcHBlZEtleSA9IHJlc3VsdDsKKyAgICBzaG91bGRCZSgid3JhcHBlZEtleS50b1N0cmlu
ZygpIiwgIidbb2JqZWN0IEFycmF5QnVmZmVyXSciKTsKKworICAgIGRlYnVnKCJVbndyYXBwaW5n
IGl0Li4uIik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUudW53cmFwS2V5KCJyYXciLCB3cmFw
cGVkS2V5LCBwcml2YXRlS2V5LCB3cmFwQWxnb3JpdGhtLCAiYWVzLWNiYyIsIGV4dHJhY3RhYmxl
LCBbImVuY3J5cHQiLCAiZGVjcnlwdCJdKTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7Cisg
ICAgdW53cmFwcGVkS2V5ID0gcmVzdWx0OworICAgIHNob3VsZEJlKCJ1bndyYXBwZWRLZXkudG9T
dHJpbmcoKSIsICInW29iamVjdCBLZXldJyIpOworICAgIHNob3VsZEJlKCJ1bndyYXBwZWRLZXku
dHlwZSIsICInc2VjcmV0JyIpOworICAgIHNob3VsZEJlKCJ1bndyYXBwZWRLZXkuZXh0cmFjdGFi
bGUiLCAidHJ1ZSIpOworICAgIHNob3VsZEJlKCJ1bndyYXBwZWRLZXkuYWxnb3JpdGhtLm5hbWUi
LCAiJ0FFUy1DQkMnIik7CisgICAgc2hvdWxkQmUoInVud3JhcHBlZEtleS5hbGdvcml0aG0ubGVu
Z3RoIiwgIjI1NiIpOworICAgIHNob3VsZEJlKCJ1bndyYXBwZWRLZXkudXNhZ2VzIiwgIlsnZW5j
cnlwdCcsICdkZWNyeXB0J10iKTsKKworICAgIGRlYnVnKCJFeHBvcnRpbmcgaXQuLi4iKTsKKyAg
ICByZXR1cm4gY3J5cHRvLnN1YnRsZS5leHBvcnRLZXkoInJhdyIsIHVud3JhcHBlZEtleSk7Cit9
KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIHVud3JhcHBlZEtleURhdGEgPSByZXN1bHQ7
CisgICAgc2hvdWxkQmUoImJ5dGVzVG9IZXhTdHJpbmcodW53cmFwcGVkS2V5RGF0YSkiLCAiYnl0
ZXNUb0hleFN0cmluZyhhZXNLZXlEYXRhKSIpOworCisgICAgZGVidWcoIlxuV3JhcHBpbmcgdGhl
IHNhbWUga2V5IGFzIEpXSy4uLiIpOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLndyYXBLZXko
Imp3ayIsIGFlc0tleSwgcHVibGljS2V5LCB3cmFwQWxnb3JpdGhtKTsKK30pLnRoZW4oZnVuY3Rp
b24ocmVzdWx0KSB7CisgICAgd3JhcHBlZEtleSA9IHJlc3VsdDsKKyAgICBzaG91bGRCZSgid3Jh
cHBlZEtleS50b1N0cmluZygpIiwgIidbb2JqZWN0IEFycmF5QnVmZmVyXSciKTsKKworICAgIGRl
YnVnKCJVbndyYXBwaW5nIGl0Li4uIik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUudW53cmFw
S2V5KCJqd2siLCB3cmFwcGVkS2V5LCBwcml2YXRlS2V5LCB3cmFwQWxnb3JpdGhtLCAiYWVzLWNi
YyIsIGV4dHJhY3RhYmxlLCBbImVuY3J5cHQiLCAiZGVjcnlwdCJdKTsKK30pLnRoZW4oZnVuY3Rp
b24ocmVzdWx0KSB7CisgICAgdW53cmFwcGVkS2V5ID0gcmVzdWx0OworICAgIHNob3VsZEJlKCJ1
bndyYXBwZWRLZXkudG9TdHJpbmcoKSIsICInW29iamVjdCBLZXldJyIpOworICAgIHNob3VsZEJl
KCJ1bndyYXBwZWRLZXkudHlwZSIsICInc2VjcmV0JyIpOworICAgIHNob3VsZEJlKCJ1bndyYXBw
ZWRLZXkuZXh0cmFjdGFibGUiLCAidHJ1ZSIpOworICAgIHNob3VsZEJlKCJ1bndyYXBwZWRLZXku
YWxnb3JpdGhtLm5hbWUiLCAiJ0FFUy1DQkMnIik7CisgICAgc2hvdWxkQmUoInVud3JhcHBlZEtl
eS5hbGdvcml0aG0ubGVuZ3RoIiwgIjI1NiIpOworICAgIHNob3VsZEJlKCJ1bndyYXBwZWRLZXku
dXNhZ2VzIiwgIlsnZW5jcnlwdCcsICdkZWNyeXB0J10iKTsKKworICAgIGRlYnVnKCJFeHBvcnRp
bmcgaXQuLi4iKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5leHBvcnRLZXkoInJhdyIsIHVu
d3JhcHBlZEtleSk7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIHVud3JhcHBlZEtl
eURhdGEgPSByZXN1bHQ7CisgICAgc2hvdWxkQmUoImJ5dGVzVG9IZXhTdHJpbmcodW53cmFwcGVk
S2V5RGF0YSkiLCAiYnl0ZXNUb0hleFN0cmluZyhhZXNLZXlEYXRhKSIpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfSk7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hh
bmdlcyBvbjogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9yc2Flcy1wa2NzMS12MV81LXdyYXAt
dW53cmFwLWFlcy5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCAr
MSAjIwordGV4dC9odG1sClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
</data>
<flag name="review"
          id="242696"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>