<?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>125590</bug_id>
          
          <creation_ts>2013-12-11 11:21:46 -0800</creation_ts>
          <short_desc>WebCrypto keys should support structured clone</short_desc>
          <delta_ts>2013-12-11 14:11:09 -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>alecflett</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jsbell</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rakuco</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>958811</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-12-11 11:21:46 -0800</bug_when>
    <thetext>WebCrypto keys should support structured clone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958832</commentid>
    <comment_count>1</comment_count>
      <attachid>218987</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-12-11 11:39:39 -0800</bug_when>
    <thetext>Created attachment 218987
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958834</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-11 11:41:35 -0800</bug_when>
    <thetext>Attachment 218987 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/aes-postMessage-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/aes-postMessage.html&apos;, u&apos;LayoutTests/crypto/subtle/hmac-postMessage-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/hmac-postMessage.html&apos;, u&apos;LayoutTests/crypto/subtle/postMessage-worker-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/postMessage-worker.html&apos;, u&apos;LayoutTests/crypto/subtle/resources/postMessage-worker.js&apos;, u&apos;LayoutTests/crypto/subtle/rsa-postMessage-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/rsa-postMessage.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp&apos;, u&apos;Source/WebCore/bindings/js/SerializedScriptValue.cpp&apos;, u&apos;Source/WebCore/crypto/CryptoAlgorithmIdentifier.h&apos;, u&apos;Source/WebCore/crypto/CryptoAlgorithmRegistry.cpp&apos;, u&apos;Source/WebCore/crypto/CryptoKey.idl&apos;, u&apos;Source/WebCore/crypto/keys/CryptoKeyAES.cpp&apos;, u&apos;Source/WebCore/crypto/keys/CryptoKeyAES.h&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:171:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:172:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:173:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:198:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:199:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:200:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:201:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:202:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:203:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:204:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:205:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:206:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:207:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:208:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:209:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:210:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:211:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:212:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:213:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:214:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:215:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:216:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:217:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/crypto/CryptoAlgorithmIdentifier.h:45:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/crypto/CryptoAlgorithmIdentifier.h:55:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 25 in 18 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>958838</commentid>
    <comment_count>3</comment_count>
      <attachid>218987</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-11 11:44:38 -0800</bug_when>
    <thetext>Comment on attachment 218987
proposed patch

Attachment 218987 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/48018016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958839</commentid>
    <comment_count>4</comment_count>
      <attachid>218987</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-11 11:45:44 -0800</bug_when>
    <thetext>Comment on attachment 218987
proposed patch

Attachment 218987 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/48028020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958849</commentid>
    <comment_count>5</comment_count>
      <attachid>218992</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-12-11 11:59:30 -0800</bug_when>
    <thetext>Created attachment 218992
with build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958850</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-11 12:01:54 -0800</bug_when>
    <thetext>Attachment 218992 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/aes-postMessage-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/aes-postMessage.html&apos;, u&apos;LayoutTests/crypto/subtle/hmac-postMessage-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/hmac-postMessage.html&apos;, u&apos;LayoutTests/crypto/subtle/postMessage-worker-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/postMessage-worker.html&apos;, u&apos;LayoutTests/crypto/subtle/resources/postMessage-worker.js&apos;, u&apos;LayoutTests/crypto/subtle/rsa-postMessage-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/rsa-postMessage.html&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.am&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp&apos;, u&apos;Source/WebCore/bindings/js/SerializedScriptValue.cpp&apos;, u&apos;Source/WebCore/crypto/CryptoAlgorithmIdentifier.h&apos;, u&apos;Source/WebCore/crypto/CryptoAlgorithmRegistry.cpp&apos;, u&apos;Source/WebCore/crypto/CryptoKey.idl&apos;, u&apos;Source/WebCore/crypto/keys/CryptoKeyAES.cpp&apos;, u&apos;Source/WebCore/crypto/keys/CryptoKeyAES.h&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:171:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:172:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:173:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:198:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:199:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:200:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:201:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:202:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:203:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:204:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:205:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:206:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:207:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:208:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:209:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:210:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:211:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:212:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:213:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:214:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:215:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:216:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/js/SerializedScriptValue.cpp:217:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/crypto/CryptoAlgorithmIdentifier.h:45:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/crypto/CryptoAlgorithmIdentifier.h:55:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 25 in 21 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>958861</commentid>
    <comment_count>7</comment_count>
      <attachid>218992</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-11 12:29:53 -0800</bug_when>
    <thetext>Comment on attachment 218992
with build fixes

Attachment 218992 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/48098006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958897</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-12-11 14:11:09 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r160455&gt; with ab additional Windows build fix.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218987</attachid>
            <date>2013-12-11 11:39:39 -0800</date>
            <delta_ts>2013-12-11 11:59:30 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>StructuredClone.txt</filename>
            <type>text/plain</type>
            <size>55054</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MDQ0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDEzLTEyLTExICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFdlYkNyeXB0byBrZXlzIHNo
b3VsZCBzdXBwb3J0IHN0cnVjdHVyZWQgY2xvbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTU5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBjcnlwdG8vc3VidGxlL2Flcy1wb3N0TWVzc2Fn
ZS5odG1sCisgICAgICAgICAgICAgICBjcnlwdG8vc3VidGxlL2htYWMtcG9zdE1lc3NhZ2UuaHRt
bAorICAgICAgICAgICAgICAgY3J5cHRvL3N1YnRsZS9wb3N0TWVzc2FnZS13b3JrZXIuaHRtbAor
ICAgICAgICAgICAgICAgY3J5cHRvL3N1YnRsZS9yc2EtcG9zdE1lc3NhZ2UuaHRtbAorCisgICAg
ICAgICogY3J5cHRvL0NyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
Q3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0
b0FsZ29yaXRobURpY3Rpb25hcnk6OmNyZWF0ZVBhcmFtZXRlcnNGb3JFbmNyeXB0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Y3JlYXRlUGFyYW1ldGVy
c0ZvckRlY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9BbGdvcml0aG1EaWN0aW9u
YXJ5OjpjcmVhdGVQYXJhbWV0ZXJzRm9yU2lnbik6CisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0
b0FsZ29yaXRobURpY3Rpb25hcnk6OmNyZWF0ZVBhcmFtZXRlcnNGb3JWZXJpZnkpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpjcmVhdGVQYXJhbWV0ZXJz
Rm9yRGlnZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFy
eTo6Y3JlYXRlUGFyYW1ldGVyc0ZvckdlbmVyYXRlS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
Q3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Y3JlYXRlUGFyYW1ldGVyc0ZvckRlcml2ZUtleSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnk6OmNyZWF0ZVBh
cmFtZXRlcnNGb3JEZXJpdmVCaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvQWxnb3Jp
dGhtRGljdGlvbmFyeTo6Y3JlYXRlUGFyYW1ldGVyc0ZvckltcG9ydEtleSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnk6OmNyZWF0ZVBhcmFtZXRlcnNGb3JF
eHBvcnRLZXkpOgorICAgICAgICBBRVNfS1cgd2FzIGFkZGVkIHRvIFdlYkNyeXB0byBzcGVjIGVk
aXRvcidzIGRyYWZ0IHllc3RlcmRheSBuaWdodC4gTm93IHRoYXQgd2UncmUKKyAgICAgICAgYWRk
aW5nIGEgbWF0Y2hpbmcgZW51bSBmb3Igc3RydWN0aXJlZCBjbG9uZSBzZXJpYWxpemF0aW9uLCBp
dCdzIGFzIGdvb2QgYSB0aW1lIGFzCisgICAgICAgIGFueSB0byB1cGRhdGUgdGhlIG9yZGVyIG9m
IHZhbHVlcyB0byBtYXRjaC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3VudFVzYWdlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNsb25lU2VyaWFsaXplcjo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNl
cmlhbGl6ZXI6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJl
YWRITUFDS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkQUVT
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkUlNBS2V5KToK
KyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkQ3J5cHRvS2V5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWluYWwpOgorICAgICAg
ICBBZGRlZCBzZXJpYWxpemF0aW9uL2Rlc2VyaWFsaXphdGlvbiBmb3IgQ3J5cHRvS2V5LiBUaGlz
IGRvZXNuJ3QgdXBkYXRlIHZlcnNpb24KKyAgICAgICAgbnVtYmVyLCBiZWNhdXNlIHdlIGRvbid0
IGN1cnJlbnRseSBzdG9yZSBzdHJ1Y3R1cmVkIGNsb25lcyBpbiBwZXJzaXN0ZW50IHN0b3JhZ2Ug
LQorICAgICAgICBhbmQgZXZlbiBpZiB3ZSBkaWQsIHdlIHdvdWxkbid0IHdhbnQgdG8gaW52YWxp
ZGF0ZSBldmVyeXRoaW5nIHVzZXJzIGFscmVhZHkgc3RvcmVkLgorCisgICAgICAgICogY3J5cHRv
L0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5OjpzaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0cnlNdXRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6Z2V0SWRlbnRp
ZmllckZvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6
Om5hbWVGb3JJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJl
Z2lzdHJ5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUmVnaXN0
cnk6OnJlZ2lzdGVyQWxnb3JpdGhtKToKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvS2V5LmlkbDoK
KyAgICAgICAgV2l0aCBzdHJ1Y3R1cmVkIGNsb25lLCBpdCBpcyBub3cgcG9zc2libGUgdG8gc2Vu
ZCBhIEtleSB0byBhIHdlYiB3b3JrZXIuIFRoYXQncworICAgICAgICBvZiBubyBwcmFjdGljYWwg
dXNlIGJlY2F1c2UgdGhlIGNyeXB0byBBUEkgaXMgbm90IGV4cG9zZWQgaW4gd29ya2VycywgYnV0
IHdlCisgICAgICAgIHNob3VsZG4ndCBjcmFzaCBhbnl3YXkuCisKKyAgICAgICAgKiBjcnlwdG8v
a2V5cy9DcnlwdG9LZXlBRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5QUVTOjpD
cnlwdG9LZXlBRVMpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5QUVTOjppc1ZhbGlkQUVT
QWxnb3JpdGhtKToKKyAgICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuaDoKKyAgICAg
ICAgRXhwb3NlZCBpc1ZhbGlkQUVTQWxnb3JpdGhtLCBzbyB0aGF0IGEgY2FsbGVyIGNvdWxkIGtu
b3cgd2hldGhlciB0aGUgY29uc3RydWN0b3IKKyAgICAgICAgd2lsbCBhc3NlcnQuCisKIDIwMTMt
MTItMTEgIEpvc8OpIERhcGVuYSBQYXogIDxqZGFwZW5hQGlnYWxpYS5jb20+IGFuZCBaYW4gRG9i
ZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgYSBVUG93
ZXItYmFzZWQgQmF0dGVyeVByb3ZpZGVyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAJKHJldmlz
aW9uIDE2MDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3Jp
dGhtRGljdGlvbmFyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNyw2ICszMTcsMTAgQEAgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcgogICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6QUVTX0NNQUM6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpBRVNfR0NNOgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVT
X0NGQjoKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIE5PVF9TVVBQT1JURURfRVJSKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpBRVNfS1c6CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+KCk7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpI
TUFDOgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6REg6CiAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKQEAgLTMyOSw4ICszMzMsNiBAQCBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyCiAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpQQktERjI6CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBO
T1RfU1VQUE9SVEVEX0VSUik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNhc2UgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOgotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPigpOwogICAgIH0KIH0KIApAQCAtMzU0
LDYgKzM1NiwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyCiAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ01BQzoKICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19HQ006CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpBRVNfQ0ZCOgorICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgTk9U
X1NVUFBPUlRFRF9FUlIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVzoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4oKTsKICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkhNQUM6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpESDoKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgpAQCAtMzY2
LDggKzM3Miw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXIKICAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjoKICAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KCk7CiAg
ICAgfQogfQogCkBAIC0zODgsNiArMzkyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NN
QUM6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfR0NNOgogICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NGQjoKKyAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OkFFU19LVzoKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMs
IE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOgpAQCAtNDAxLDcgKzQwNiw2IEBAIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXIKICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkNPTkNBVDoKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OkhLREZfQ1RSOgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UEJLREYy
OgotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOgogICAgICAgICBz
ZXRET01FeGNlcHRpb24oZXhlYywgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CkBAIC00MjQsNiArNDI4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
QUVTX0NNQUM6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfR0NNOgog
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NGQjoKKyAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVzoKICAgICAgICAgc2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOgpAQCAtNDM3LDcgKzQ0Miw2IEBA
IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXIKICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OkNPTkNBVDoKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OkhLREZfQ1RSOgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
UEJLREYyOgotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOgogICAg
ICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC00NTcsNiArNDYxLDcgQEAgc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6QUVTX0NNQUM6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNf
R0NNOgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NGQjoKKyAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVzoKICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OkhNQUM6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpESDoKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIE5PVF9TVVBQT1JURURfRVJS
KTsKQEAgLTQ3MCw3ICs0NzUsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyCiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpDT05DQVQ6CiAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpIS0RGX0NUUjoKICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjoKLSAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OkFFU19LVzoKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIE5PVF9TVVBQ
T1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtNDkzLDYgKzQ5
Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXIKICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DTUFDOgogICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6QUVTX0dDTToKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OkFFU19DRkI6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNf
S1c6CiAgICAgICAgIHJldHVybiBjcmVhdGVBZXNLZXlHZW5QYXJhbXMoZXhlYywgdmFsdWUpOwog
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzoKICAgICAgICAgcmV0dXJu
IGNyZWF0ZUhtYWNLZXlQYXJhbXMoZXhlYywgdmFsdWUpOwpAQCAtNTA3LDggKzUxMiw2IEBAIHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXIKICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjoKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMs
IE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6Ci0gICAgICAgIHJldHVybiBjcmVhdGVB
ZXNLZXlHZW5QYXJhbXMoZXhlYywgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtNTI2LDYgKzUyOSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXIKICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DTUFDOgogICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6QUVTX0dDTToKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OkFFU19DRkI6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6
CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOgogICAgIGNhc2UgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6REg6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpTSEFfMToKQEAgLTUzNiw3ICs1NDAsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVyCiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpD
T05DQVQ6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpIS0RGX0NUUjoKICAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjoKLSAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVzoKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpA
QCAtNTU2LDYgKzU1OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXIKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DTUFDOgogICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0dDTToKICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OkFFU19DRkI6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpBRVNfS1c6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFD
OgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6REg6CiAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKQEAgLTU2Niw3ICs1NzAsNiBAQCBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyCiAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpDT05DQVQ6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpIS0RGX0NUUjoKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjoK
LSAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVzoKICAgICAgICAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQpAQCAtNTkwLDYgKzU5Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXIKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFF
U19DTUFDOgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0dDTToKICAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DRkI6CisgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KCk7CiAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpITUFDOgogICAgICAgICByZXR1cm4gY3JlYXRlSG1hY1BhcmFtcyhl
eGVjLCB2YWx1ZSk7CkBAIC02MDUsOCArNjA5LDYgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UEJL
REYyOgogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgTk9UX1NVUFBPUlRFRF9FUlIpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OkFFU19LVzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4oKTsKICAgICB9CiB9CiAKQEAgLTYyNCw2ICs2MjYsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyCiAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpBRVNfQ01BQzoKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OkFFU19HQ006CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0ZC
OgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOgogICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzoKICAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OkRIOgogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzPigpOwpAQCAtNjM3LDggKzY0MCw2IEBAIHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXIKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OlBCS0RGMjoKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIE5PVF9TVVBQT1JU
RURfRVJSKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpBRVNfS1c6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KCk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHJl
dmlzaW9uIDE2MDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDExICsyOCwxNyBAQAogI2luY2x1
ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiAjaW5jbHVkZSAiQmxvYi5oIgorI2luY2x1
ZGUgIkNyeXB0b0tleUFFUy5oIgorI2luY2x1ZGUgIkNyeXB0b0tleURhdGFPY3RldFNlcXVlbmNl
LmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuaCIKKyNpbmNsdWRlICJD
cnlwdG9LZXlITUFDLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgog
I2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIkpTQmxvYi5oIgorI2luY2x1ZGUgIkpT
Q3J5cHRvS2V5LmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJK
U0ZpbGUuaCIKICNpbmNsdWRlICJKU0ZpbGVMaXN0LmgiCkBAIC0xMTcsNiArMTIzLDkgQEAgZW51
bSBTZXJpYWxpemF0aW9uVGFnIHsKICAgICBTZXRPYmplY3RUYWcgPSAyOSwKICAgICBNYXBPYmpl
Y3RUYWcgPSAzMCwKICAgICBOb25NYXBQcm9wZXJ0aWVzVGFnID0gMzEsCisjaWYgRU5BQkxFKFNV
QlRMRV9DUllQVE8pCisgICAgQ3J5cHRvS2V5VGFnID0gMzIsCisjZW5kaWYKICAgICBFcnJvclRh
ZyA9IDI1NQogfTsKIApAQCAtMTU2LDYgKzE2NSw3MiBAQCBzdGF0aWMgdW5zaWduZWQgdHlwZWRB
cnJheUVsZW1lbnRTaXplKEFyCiAKIH0KIAorI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorCitF
TlVNX0NMQVNTKENyeXB0b0tleUNsYXNzU3VidGFnKSB7CisgICAgSE1BQyA9IDAsCisgICAgQUVT
ID0gMSwKKyAgICBSU0EgPSAyCit9OworY29uc3QgdWludDhfdCBjcnlwdG9LZXlDbGFzc1N1YnRh
Z01heGltdW1WYWx1ZSA9IDI7CisKK0VOVU1fQ0xBU1MoQ3J5cHRvS2V5QXN5bW1ldHJpY1R5cGVT
dWJ0YWcpIHsKKyAgICBQdWJsaWMgPSAwLAorICAgIFByaXZhdGUgPSAxCit9OworY29uc3QgdWlu
dDhfdCBjcnlwdG9LZXlBc3ltbWV0cmljVHlwZVN1YnRhZ01heGltdW1WYWx1ZSA9IDE7CisKK0VO
VU1fQ0xBU1MoQ3J5cHRvS2V5VXNhZ2VUYWcpIHsKKyAgICBFbmNyeXB0ID0gMCwKKyAgICBEZWNy
eXB0ID0gMSwKKyAgICBTaWduID0gMiwKKyAgICBWZXJpZnkgPSAzLAorICAgIERlcml2ZUtleSA9
IDQsCisgICAgRGVyaXZlQml0cyA9IDUsCisgICAgV3JhcEtleSA9IDYsCisgICAgVW53cmFwS2V5
ID0gNworfTsKK2NvbnN0IHVpbnQ4X3QgY3J5cHRvS2V5VXNhZ2VUYWdNYXhpbXVtVmFsdWUgPSA3
OworCitFTlVNX0NMQVNTKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXJUYWcpIHsKKyAgICBSU0FF
U19QS0NTMV92MV81ID0gMCwKKyAgICBSU0FTU0FfUEtDUzFfdjFfNSA9IDEsCisgICAgUlNBX1BT
UyA9IDIsCisgICAgUlNBX09BRVAgPSAzLAorICAgIEVDRFNBID0gNCwKKyAgICBFQ0RIID0gNSwK
KyAgICBBRVNfQ1RSID0gNiwKKyAgICBBRVNfQ0JDID0gNywKKyAgICBBRVNfQ01BQyA9IDgsCisg
ICAgQUVTX0dDTSA9IDksCisgICAgQUVTX0NGQiA9IDEwLAorICAgIEFFU19LVyA9IDExLAorICAg
IEhNQUMgPSAxMiwKKyAgICBESCA9IDEzLAorICAgIFNIQV8xID0gMTQsCisgICAgU0hBXzIyNCA9
IDE1LAorICAgIFNIQV8yNTYgPSAxNiwKKyAgICBTSEFfMzg0ID0gMTcsCisgICAgU0hBXzUxMiA9
IDE4LAorICAgIENPTkNBVCA9IDE5LAorICAgIEhLREZfQ1RSID0gMjAsCisgICAgUEJLREYyID0g
MjEsCit9OworY29uc3QgdWludDhfdCBjcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyVGFnTWF4aW11
bVZhbHVlID0gMjE7CisKK3N0YXRpYyB1bnNpZ25lZCBjb3VudFVzYWdlcyhDcnlwdG9LZXlVc2Fn
ZSB1c2FnZXMpCit7CisgICAgLy8gRmFzdCBiaXQgY291bnQgYWxnb3JpdGhtIGZvciBzcGFyc2Ug
Yml0IG1hcHMuCisgICAgdW5zaWduZWQgY291bnQgPSAwOworICAgIHdoaWxlICh1c2FnZXMpIHsK
KyAgICAgICAgdXNhZ2VzID0gdXNhZ2VzICYgKHVzYWdlcyAtIDEpOworICAgICAgICArK2NvdW50
OworICAgIH0KKyAgICByZXR1cm4gY291bnQ7Cit9CisKKyNlbmRpZgorCiAvKiBDdXJyZW50VmVy
c2lvbiB0cmFja3MgdGhlIHNlcmlhbGl6YXRpb24gdmVyc2lvbiBzbyB0aGF0IHBlcnNpc3RlbnQg
c3RvcmVzCiAgKiBhcmUgYWJsZSB0byBjb3JyZWN0bHkgYmFpbCBvdXQgaW4gdGhlIGNhc2Ugb2Yg
ZW5jb3VudGVyaW5nIG5ld2VyIGZvcm1hdHMuCiAgKgpAQCAtMjE3LDggKzI5Miw5IEBAIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBOb25JbmRleFByb3BlcnRpZXMKICAqICAgIHwgT2JqZWN0UmVmZXJl
bmNlCiAgKiAgICB8IE1lc3NhZ2VQb3J0UmVmZXJlbmNlVGFnIDx2YWx1ZTp1aW50MzJfdD4KICAq
ICAgIHwgQXJyYXlCdWZmZXIKLSAqICAgIHwgQXJyYXlCdWZmZXJWaWV3VGFnIEFycmF5QnVmZmVy
Vmlld1N1YnRhZyA8Ynl0ZU9mZnNldDp1aW50MzJfdD4gPGJ5dGVMZW5naHQ6dWludDMyX3Q+IChB
cnJheUJ1ZmZlciB8IE9iamVjdFJlZmVyZW5jZSkKKyAqICAgIHwgQXJyYXlCdWZmZXJWaWV3VGFn
IEFycmF5QnVmZmVyVmlld1N1YnRhZyA8Ynl0ZU9mZnNldDp1aW50MzJfdD4gPGJ5dGVMZW5ndGg6
dWludDMyX3Q+IChBcnJheUJ1ZmZlciB8IE9iamVjdFJlZmVyZW5jZSkKICAqICAgIHwgQXJyYXlC
dWZmZXJUcmFuc2ZlclRhZyA8dmFsdWU6dWludDMyX3Q+CisgKiAgICB8IENyeXB0b0tleVRhZyA8
ZXh0cmFjdGFibGU6aW50MzJfdD4gPHVzYWdlc0NvdW50OnVpbnQzMl90PiA8dXNhZ2VzOmJ5dGV7
dXNhZ2VzQ291bnR9PiBDcnlwdG9LZXlDbGFzc1N1YnRhZyAoQ3J5cHRvS2V5SE1BQyB8IENyeXB0
b0tleUFFUyB8IENyeXB0b0tleVJTQSkKICAqCiAgKiBTdHJpbmcgOi0KICAqICAgICAgRW1wdHlT
dHJpbmdUYWcKQEAgLTI1NSw2ICszMzEsMjggQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5vbklu
ZGV4UHJvcGVydGllcwogICoKICAqIEFycmF5QnVmZmVyIDotCiAgKiAgICBBcnJheUJ1ZmZlclRh
ZyA8bGVuZ3RoOnVpbnQzMl90PiA8Y29udGVudHM6Ynl0ZXtsZW5ndGh9PgorICoKKyAqIENyeXB0
b0tleUhNQUMgOi0KKyAqICAgIDxrZXlTaXplOnVpbnQzMl90PiA8a2V5RGF0YTpieXRle2tleVNp
emV9PiBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyVGFnIC8vIEFsZ29yaXRobSB0YWcgaW5uZXIg
aGFzaCBmdW5jdGlvbi4KKyAqCisgKiBDcnlwdG9LZXlBRVMgOi0KKyAqICAgIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXJUYWcgPGtleVNpemU6dWludDMyX3Q+IDxrZXlEYXRhOmJ5dGV7a2V5U2l6
ZX0+CisgKgorICogQ3J5cHRvS2V5UlNBIDotCisgKiAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyVGFnIDxpc1Jlc3RyaWN0ZWRUb0hhc2g6aW50MzJfdD4gQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
ZmllclRhZz8gQ3J5cHRvS2V5QXN5bW1ldHJpY1R5cGVTdWJ0YWcgQ3J5cHRvS2V5UlNBUHVibGlj
Q29tcG9uZW50cyBDcnlwdG9LZXlSU0FQcml2YXRlQ29tcG9uZW50cz8KKyAqCisgKiBDcnlwdG9L
ZXlSU0FQdWJsaWNDb21wb25lbnRzIDotCisgKiAgICA8bW9kdWx1c1NpemU6dWludDMyX3Q+IDxt
b2R1bHVzOmJ5dGV7bW9kdWx1c1NpemV9PiA8ZXhwb25lbnRTaXplOnVpbnQzMl90PiA8ZXhwb25l
bnQ6Ynl0ZXtleHBvbmVudFNpemV9PgorICoKKyAqIENyeXB0b0tleVJTQVByaXZhdGVDb21wb25l
bnRzIDotCisgKiAgICA8cHJpdmF0ZUV4cG9uZW50U2l6ZTp1aW50MzJfdD4gPHByaXZhdGVFeHBv
bmVudDpieXRle3ByaXZhdGVFeHBvbmVudFNpemV9PiA8cHJpbWVDb3VudDp1aW50MzJfdD4gRmly
c3RQcmltZUluZm8/IFByaW1lSW5mb3twcmltZUNvdW50IC0gMX0KKyAqCisgKiAvLyBDUlQgZGF0
YSBjb3VsZCBiZSBjb21wdXRlZCBmcm9tIHByaW1lIGZhY3RvcnMuIEl0IGlzIG9ubHkgc2VyaWFs
aXplZCB0byByZXVzZSBhIGNvZGUgcGF0aCB0aGF0J3MgbmVlZGVkIGZvciBKV0suCisgKiBGaXJz
dFByaW1lSW5mbyA6LQorICogICAgPGZhY3RvclNpemU6dWludDMyX3Q+IDxmYWN0b3I6Ynl0ZXtm
YWN0b3JTaXplfT4gPGNydEV4cG9uZW50U2l6ZTp1aW50MzJfdD4gPGNydEV4cG9uZW50OmJ5dGV7
Y3J0RXhwb25lbnRTaXplfT4KKyAqCisgKiBQcmltZUluZm8gOi0KKyAqICAgIDxmYWN0b3JTaXpl
OnVpbnQzMl90PiA8ZmFjdG9yOmJ5dGV7ZmFjdG9yU2l6ZX0+IDxjcnRFeHBvbmVudFNpemU6dWlu
dDMyX3Q+IDxjcnRFeHBvbmVudDpieXRle2NydEV4cG9uZW50U2l6ZX0+IDxjcnRDb2VmZmljaWVu
dFNpemU6dWludDMyX3Q+IDxjcnRDb2VmZmljaWVudDpieXRle2NydENvZWZmaWNpZW50U2l6ZX0+
CiAgKi8KIAogdHlwZWRlZiBwYWlyPEpTQzo6SlNWYWx1ZSwgU2VyaWFsaXphdGlvblJldHVybkNv
ZGU+IERlc2VyaWFsaXphdGlvblJlc3VsdDsKQEAgLTcyNCw2ICs4MjIsMTMgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICByZWNvcmRPYmplY3Qob2JqKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gc3VjY2VzczsKICAgICAgICAgICAgIH0KKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKyAg
ICAgICAgICAgIGlmIChDcnlwdG9LZXkqIGtleSA9IHRvQ3J5cHRvS2V5KG9iaikpIHsKKyAgICAg
ICAgICAgICAgICB3cml0ZShDcnlwdG9LZXlUYWcpOworICAgICAgICAgICAgICAgIHdyaXRlKGtl
eSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisjZW5kaWYK
IAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC03NDIsNiArODQ3LDI4
IEBAIHByaXZhdGU6CiAgICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuPHVpbnQ4X3Q+KG1fYnVmZmVy
LCBzdGF0aWNfY2FzdDx1aW50OF90Pih0YWcpKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoU1VCVExF
X0NSWVBUTykKKyAgICB2b2lkIHdyaXRlKENyeXB0b0tleUNsYXNzU3VidGFnIHRhZykKKyAgICB7
CisgICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuPHVpbnQ4X3Q+KG1fYnVmZmVyLCBzdGF0aWNfY2Fz
dDx1aW50OF90Pih0YWcpKTsKKyAgICB9CisKKyAgICB2b2lkIHdyaXRlKENyeXB0b0tleUFzeW1t
ZXRyaWNUeXBlU3VidGFnIHRhZykKKyAgICB7CisgICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuPHVp
bnQ4X3Q+KG1fYnVmZmVyLCBzdGF0aWNfY2FzdDx1aW50OF90Pih0YWcpKTsKKyAgICB9CisKKyAg
ICB2b2lkIHdyaXRlKENyeXB0b0tleVVzYWdlVGFnIHRhZykKKyAgICB7CisgICAgICAgIHdyaXRl
TGl0dGxlRW5kaWFuPHVpbnQ4X3Q+KG1fYnVmZmVyLCBzdGF0aWNfY2FzdDx1aW50OF90Pih0YWcp
KTsKKyAgICB9CisKKyAgICB2b2lkIHdyaXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXJUYWcg
dGFnKQorICAgIHsKKyAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW48dWludDhfdD4obV9idWZmZXIs
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHRhZykpOworICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCB3
cml0ZSh1aW50OF90IGMpCiAgICAgewogICAgICAgICB3cml0ZUxpdHRsZUVuZGlhbihtX2J1ZmZl
ciwgYyk7CkBAIC04MzQsNiArOTYxLDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3cml0ZShJ
ZGVudGlmaWVyKG1fZXhlYywgc3RyKSk7CiAgICAgfQogCisgICAgdm9pZCB3cml0ZShjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHZlY3RvcikKKyAgICB7CisgICAgICAgIHVpbnQzMl90IHNpemUgPSB2
ZWN0b3Iuc2l6ZSgpOworICAgICAgICB3cml0ZShzaXplKTsKKyAgICAgICAgd3JpdGVMaXR0bGVF
bmRpYW4obV9idWZmZXIsIHZlY3Rvci5kYXRhKCksIHNpemUpOworICAgIH0KKwogICAgIHZvaWQg
d3JpdGUoY29uc3QgRmlsZSogZmlsZSkKICAgICB7CiAgICAgICAgIG1fYmxvYlVSTHMuYXBwZW5k
KGZpbGUtPnVybCgpKTsKQEAgLTg0Miw2ICs5NzYsMTY2IEBAIHByaXZhdGU6CiAgICAgICAgIHdy
aXRlKGZpbGUtPnR5cGUoKSk7CiAgICAgfQogCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCisg
ICAgdm9pZCB3cml0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSkKKyAgICB7
CisgICAgICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CisgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNToKKyAgICAgICAgICAgIHdyaXRlKENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXJUYWc6OlJTQUVTX1BLQ1MxX3YxXzUpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBU1NBX1BL
Q1MxX3YxXzU6CisgICAgICAgICAgICB3cml0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyVGFn
OjpSU0FTU0FfUEtDUzFfdjFfNSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfUFNTOgorICAgICAgICAgICAgd3JpdGUoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZzo6UlNBX1BTUyk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfT0FFUDoKKyAgICAg
ICAgICAgIHdyaXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXJUYWc6OlJTQV9PQUVQKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkVDRFNBOgorICAgICAgICAgICAgd3JpdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZzo6
RUNEU0EpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6RUNESDoKKyAgICAgICAgICAgIHdyaXRlKENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXJUYWc6OkVDREgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NUUjoKKyAgICAgICAgICAgIHdyaXRlKENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXJUYWc6OkFFU19DVFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NCQzoKKyAgICAgICAgICAg
IHdyaXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXJUYWc6OkFFU19DQkMpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NN
QUM6CisgICAgICAgICAgICB3cml0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyVGFnOjpBRVNf
Q01BQyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpBRVNfR0NNOgorICAgICAgICAgICAgd3JpdGUoQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllclRhZzo6QUVTX0dDTSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0ZCOgorICAgICAgICAgICAgd3JpdGUoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZzo6QUVTX0NGQik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6CisgICAgICAg
ICAgICB3cml0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyVGFnOjpBRVNfS1cpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1B
QzoKKyAgICAgICAgICAgIHdyaXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXJUYWc6OkhNQUMp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6REg6CisgICAgICAgICAgICB3cml0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyVGFn
OjpESCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpTSEFfMToKKyAgICAgICAgICAgIHdyaXRlKENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXJUYWc6OlNIQV8xKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yMjQ6CisgICAgICAgICAgICB3cml0ZShDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyVGFnOjpTSEFfMjI0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY6CisgICAgICAgICAg
ICB3cml0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyVGFnOjpTSEFfMjU2KTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8z
ODQ6CisgICAgICAgICAgICB3cml0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyVGFnOjpTSEFf
Mzg0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OlNIQV81MTI6CisgICAgICAgICAgICB3cml0ZShDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyVGFnOjpTSEFfNTEyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkNPTkNBVDoKKyAgICAgICAgICAgIHdyaXRlKENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXJUYWc6OkNPTkNBVCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpIS0RGX0NUUjoKKyAgICAgICAg
ICAgIHdyaXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXJUYWc6OkhLREZfQ1RSKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlBC
S0RGMjoKKyAgICAgICAgICAgIHdyaXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXJUYWc6OlBC
S0RGMik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQg
d3JpdGUoQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OlR5cGUgdHlwZSkKKyAgICB7CisgICAg
ICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIENyeXB0b0tleURhdGFSU0FDb21wb25l
bnRzOjpUeXBlOjpQdWJsaWM6CisgICAgICAgICAgICB3cml0ZShDcnlwdG9LZXlBc3ltbWV0cmlj
VHlwZVN1YnRhZzo6UHVibGljKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBD
cnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6VHlwZTo6UHJpdmF0ZToKKyAgICAgICAgICAgIHdy
aXRlKENyeXB0b0tleUFzeW1tZXRyaWNUeXBlU3VidGFnOjpQcml2YXRlKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgd3JpdGUoY29uc3QgQ3J5cHRv
S2V5RGF0YVJTQUNvbXBvbmVudHMmIGtleSkKKyAgICB7CisgICAgICAgIHdyaXRlKGtleS50eXBl
KCkpOworICAgICAgICB3cml0ZShrZXkubW9kdWx1cygpKTsKKyAgICAgICAgd3JpdGUoa2V5LmV4
cG9uZW50KCkpOworICAgICAgICBpZiAoa2V5LnR5cGUoKSA9PSBDcnlwdG9LZXlEYXRhUlNBQ29t
cG9uZW50czo6VHlwZTo6UHVibGljKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHdy
aXRlKGtleS5wcml2YXRlRXhwb25lbnQoKSk7CisKKyAgICAgICAgdW5zaWduZWQgcHJpbWVDb3Vu
dCA9IGtleS5oYXNBZGRpdGlvbmFsUHJpdmF0ZUtleVBhcmFtZXRlcnMoKSA/IGtleS5vdGhlclBy
aW1lSW5mb3MoKS5zaXplKCkgKyAyIDogMDsKKyAgICAgICAgd3JpdGUocHJpbWVDb3VudCk7Cisg
ICAgICAgIGlmICghcHJpbWVDb3VudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB3
cml0ZShrZXkuZmlyc3RQcmltZUluZm8oKS5wcmltZUZhY3Rvcik7CisgICAgICAgIHdyaXRlKGtl
eS5maXJzdFByaW1lSW5mbygpLmZhY3RvckNSVEV4cG9uZW50KTsKKyAgICAgICAgd3JpdGUoa2V5
LnNlY29uZFByaW1lSW5mbygpLnByaW1lRmFjdG9yKTsKKyAgICAgICAgd3JpdGUoa2V5LnNlY29u
ZFByaW1lSW5mbygpLmZhY3RvckNSVEV4cG9uZW50KTsKKyAgICAgICAgd3JpdGUoa2V5LnNlY29u
ZFByaW1lSW5mbygpLmZhY3RvckNSVENvZWZmaWNpZW50KTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMjsgaSA8IHByaW1lQ291bnQ7ICsraSkgeworICAgICAgICAgICAgd3JpdGUoa2V5Lm90
aGVyUHJpbWVJbmZvcygpW2ldLnByaW1lRmFjdG9yKTsKKyAgICAgICAgICAgIHdyaXRlKGtleS5v
dGhlclByaW1lSW5mb3MoKVtpXS5mYWN0b3JDUlRFeHBvbmVudCk7CisgICAgICAgICAgICB3cml0
ZShrZXkub3RoZXJQcmltZUluZm9zKClbaV0uZmFjdG9yQ1JUQ29lZmZpY2llbnQpOworICAgICAg
ICB9CisgICAgfQorCisgICAgdm9pZCB3cml0ZShjb25zdCBDcnlwdG9LZXkqIGtleSkKKyAgICB7
CisgICAgICAgIHdyaXRlKGtleS0+ZXh0cmFjdGFibGUoKSk7CisKKyAgICAgICAgQ3J5cHRvS2V5
VXNhZ2UgdXNhZ2VzID0ga2V5LT51c2FnZXNCaXRtYXAoKTsKKyAgICAgICAgd3JpdGUoY291bnRV
c2FnZXModXNhZ2VzKSk7CisgICAgICAgIGlmICh1c2FnZXMgJiBDcnlwdG9LZXlVc2FnZUVuY3J5
cHQpCisgICAgICAgICAgICB3cml0ZShDcnlwdG9LZXlVc2FnZVRhZzo6RW5jcnlwdCk7CisgICAg
ICAgIGlmICh1c2FnZXMgJiBDcnlwdG9LZXlVc2FnZURlY3J5cHQpCisgICAgICAgICAgICB3cml0
ZShDcnlwdG9LZXlVc2FnZVRhZzo6RGVjcnlwdCk7CisgICAgICAgIGlmICh1c2FnZXMgJiBDcnlw
dG9LZXlVc2FnZVNpZ24pCisgICAgICAgICAgICB3cml0ZShDcnlwdG9LZXlVc2FnZVRhZzo6U2ln
bik7CisgICAgICAgIGlmICh1c2FnZXMgJiBDcnlwdG9LZXlVc2FnZVZlcmlmeSkKKyAgICAgICAg
ICAgIHdyaXRlKENyeXB0b0tleVVzYWdlVGFnOjpWZXJpZnkpOworICAgICAgICBpZiAodXNhZ2Vz
ICYgQ3J5cHRvS2V5VXNhZ2VEZXJpdmVLZXkpCisgICAgICAgICAgICB3cml0ZShDcnlwdG9LZXlV
c2FnZVRhZzo6RGVyaXZlS2V5KTsKKyAgICAgICAgaWYgKHVzYWdlcyAmIENyeXB0b0tleVVzYWdl
RGVyaXZlQml0cykKKyAgICAgICAgICAgIHdyaXRlKENyeXB0b0tleVVzYWdlVGFnOjpEZXJpdmVC
aXRzKTsKKyAgICAgICAgaWYgKHVzYWdlcyAmIENyeXB0b0tleVVzYWdlV3JhcEtleSkKKyAgICAg
ICAgICAgIHdyaXRlKENyeXB0b0tleVVzYWdlVGFnOjpXcmFwS2V5KTsKKyAgICAgICAgaWYgKHVz
YWdlcyAmIENyeXB0b0tleVVzYWdlVW53cmFwS2V5KQorICAgICAgICAgICAgd3JpdGUoQ3J5cHRv
S2V5VXNhZ2VUYWc6OlVud3JhcEtleSk7CisKKyAgICAgICAgc3dpdGNoIChrZXktPmtleUNsYXNz
KCkpIHsKKyAgICAgICAgY2FzZSBDcnlwdG9LZXlDbGFzczo6SE1BQzoKKyAgICAgICAgICAgIHdy
aXRlKENyeXB0b0tleUNsYXNzU3VidGFnOjpITUFDKTsKKyAgICAgICAgICAgIHdyaXRlKHRvQ3J5
cHRvS2V5SE1BQyhrZXkpLT5rZXkoKSk7CisgICAgICAgICAgICB3cml0ZSh0b0NyeXB0b0tleUhN
QUMoa2V5KS0+aGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDcnlwdG9LZXlDbGFzczo6QUVTOgorICAgICAgICAgICAgd3JpdGUoQ3J5
cHRvS2V5Q2xhc3NTdWJ0YWc6OkFFUyk7CisgICAgICAgICAgICB3cml0ZShrZXktPmFsZ29yaXRo
bUlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICB3cml0ZSh0b0NyeXB0b0tleUFFUyhrZXkpLT5r
ZXkoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcnlwdG9LZXlDbGFzczo6
UlNBOgorICAgICAgICAgICAgd3JpdGUoQ3J5cHRvS2V5Q2xhc3NTdWJ0YWc6OlJTQSk7CisgICAg
ICAgICAgICB3cml0ZShrZXktPmFsZ29yaXRobUlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2g7CisgICAgICAgICAgICBib29sIGlzUmVzdHJp
Y3RlZFRvSGFzaCA9IHRvQ3J5cHRvS2V5UlNBKGtleSktPmlzUmVzdHJpY3RlZFRvSGFzaChoYXNo
KTsKKyAgICAgICAgICAgIHdyaXRlKGlzUmVzdHJpY3RlZFRvSGFzaCk7CisgICAgICAgICAgICBp
ZiAoaXNSZXN0cmljdGVkVG9IYXNoKQorICAgICAgICAgICAgICAgIHdyaXRlKGhhc2gpOworICAg
ICAgICAgICAgd3JpdGUodG9DcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cygqa2V5LT5leHBvcnRE
YXRhKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisK
ICAgICB2b2lkIHdyaXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAg
ICB7CiAgICAgICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBsZW5ndGgpOwpAQCAtMTQ1Myw2ICsx
NzQ3LDMwNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogCisgICAgYm9vbCByZWFkKFZl
Y3Rvcjx1aW50OF90PiYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5pc0Vt
cHR5KCkpOworICAgICAgICB1aW50MzJfdCBzaXplOworICAgICAgICBpZiAoIXJlYWQoc2l6ZSkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChtX3B0ciArIHNpemUgPiBt
X2VuZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCht
X3B0ciwgc2l6ZSk7CisgICAgICAgIG1fcHRyICs9IHNpemU7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorICAgIGJvb2wgcmVhZChDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyJiByZXN1bHQpCisgICAgeworICAgICAgICB1aW50OF90IGFs
Z29yaXRobVRhZzsKKyAgICAgICAgaWYgKCFyZWFkKGFsZ29yaXRobVRhZykpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChhbGdvcml0aG1UYWcgPiBjcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyVGFnTWF4aW11bVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXJUYWc+
KGFsZ29yaXRobVRhZykpIHsKKyAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
VGFnOjpSU0FFU19QS0NTMV92MV81OgorICAgICAgICAgICAgcmVzdWx0ID0gQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXJUYWc6OlJTQVNTQV9QS0NTMV92MV81
OgorICAgICAgICAgICAgcmVzdWx0ID0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBU1NB
X1BLQ1MxX3YxXzU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyVGFnOjpSU0FfUFNTOgorICAgICAgICAgICAgcmVzdWx0ID0gQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX1BTUzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXJUYWc6OlJTQV9PQUVQOgorICAgICAgICAg
ICAgcmVzdWx0ID0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX09BRVA7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyVGFnOjpF
Q0RTQToKKyAgICAgICAgICAgIHJlc3VsdCA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVD
RFNBOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllclRhZzo6RUNESDoKKyAgICAgICAgICAgIHJlc3VsdCA9IENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OkVDREg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyVGFnOjpBRVNfQ1RSOgorICAgICAgICAgICAgcmVzdWx0ID0gQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NUUjsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXJUYWc6OkFFU19DQkM6CisgICAgICAg
ICAgICByZXN1bHQgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0JDOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZzo6
QUVTX0NNQUM6CisgICAgICAgICAgICByZXN1bHQgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpBRVNfQ01BQzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXJUYWc6OkFFU19HQ006CisgICAgICAgICAgICByZXN1bHQgPSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpBRVNfR0NNOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZzo6QUVTX0NGQjoKKyAgICAgICAgICAg
IHJlc3VsdCA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DRkI7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyVGFnOjpBRVNf
S1c6CisgICAgICAgICAgICByZXN1bHQgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNf
S1c7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyVGFnOjpITUFDOgorICAgICAgICAgICAgcmVzdWx0ID0gQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6SE1BQzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXJUYWc6OkRIOgorICAgICAgICAgICAgcmVzdWx0ID0gQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6REg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyVGFnOjpTSEFfMToKKyAgICAgICAgICAgIHJlc3VsdCA9
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZzo6U0hBXzIyNDoKKyAgICAg
ICAgICAgIHJlc3VsdCA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yMjQ7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyVGFn
OjpTSEFfMjU2OgorICAgICAgICAgICAgcmVzdWx0ID0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6U0hBXzI1NjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXJUYWc6OlNIQV8zODQ6CisgICAgICAgICAgICByZXN1bHQgPSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZzo6U0hBXzUxMjoKKyAgICAgICAgICAg
IHJlc3VsdCA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyVGFnOjpDT05D
QVQ6CisgICAgICAgICAgICByZXN1bHQgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpDT05D
QVQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyVGFnOjpIS0RGX0NUUjoKKyAgICAgICAgICAgIHJlc3VsdCA9IENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OkhLREZfQ1RSOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZzo6UEJLREYyOgorICAgICAgICAgICAgcmVzdWx0
ID0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UEJLREYyOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCByZWFk
KENyeXB0b0tleUNsYXNzU3VidGFnJiByZXN1bHQpCisgICAgeworICAgICAgICB1aW50OF90IHRh
ZzsKKyAgICAgICAgaWYgKCFyZWFkKHRhZykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGlmICh0YWcgPiBjcnlwdG9LZXlDbGFzc1N1YnRhZ01heGltdW1WYWx1ZSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8Q3J5cHRv
S2V5Q2xhc3NTdWJ0YWc+KHRhZyk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IGJvb2wgcmVhZChDcnlwdG9LZXlVc2FnZVRhZyYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgdWlu
dDhfdCB0YWc7CisgICAgICAgIGlmICghcmVhZCh0YWcpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBpZiAodGFnID4gY3J5cHRvS2V5VXNhZ2VUYWdNYXhpbXVtVmFsdWUpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PENy
eXB0b0tleVVzYWdlVGFnPih0YWcpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICBib29sIHJlYWQoQ3J5cHRvS2V5QXN5bW1ldHJpY1R5cGVTdWJ0YWcmIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIHVpbnQ4X3QgdGFnOworICAgICAgICBpZiAoIXJlYWQodGFnKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHRhZyA+IGNyeXB0b0tleUFzeW1tZXRyaWNU
eXBlU3VidGFnTWF4aW11bVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXN1bHQgPSBzdGF0aWNfY2FzdDxDcnlwdG9LZXlBc3ltbWV0cmljVHlwZVN1YnRhZz4odGFn
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCByZWFkSE1BQ0tleShi
b29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZXMsIFJlZlB0cjxDcnlwdG9LZXk+
JiByZXN1bHQpCisgICAgeworICAgICAgICBWZWN0b3I8dWludDhfdD4ga2V5RGF0YTsKKyAgICAg
ICAgaWYgKCFyZWFkKGtleURhdGEpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2g7CisgICAgICAgIGlmICghcmVhZChoYXNo
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5
SE1BQzo6Y3JlYXRlKGtleURhdGEsIGhhc2gsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIHJlYWRBRVNLZXkoYm9vbCBleHRyYWN0
YWJsZSwgQ3J5cHRvS2V5VXNhZ2UgdXNhZ2VzLCBSZWZQdHI8Q3J5cHRvS2V5PiYgcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG07CisgICAg
ICAgIGlmICghcmVhZChhbGdvcml0aG0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBpZiAoIUNyeXB0b0tleUFFUzo6aXNWYWxpZEFFU0FsZ29yaXRobShhbGdvcml0aG0pKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBWZWN0b3I8dWludDhfdD4ga2V5RGF0
YTsKKyAgICAgICAgaWYgKCFyZWFkKGtleURhdGEpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmNyZWF0ZShhbGdvcml0aG0sIGtleURh
dGEsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICBib29sIHJlYWRSU0FLZXkoYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UgdXNh
Z2VzLCBSZWZQdHI8Q3J5cHRvS2V5PiYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG07CisgICAgICAgIGlmICghcmVhZChhbGdvcml0aG0p
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGludDMyX3QgaXNSZXN0cmlj
dGVkVG9IYXNoOworICAgICAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2g7CisgICAg
ICAgIGlmICghcmVhZChpc1Jlc3RyaWN0ZWRUb0hhc2gpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBpZiAoaXNSZXN0cmljdGVkVG9IYXNoICYmICFyZWFkKGhhc2gpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIENyeXB0b0tleUFzeW1tZXRyaWNUeXBl
U3VidGFnIHR5cGU7CisgICAgICAgIGlmICghcmVhZCh0eXBlKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBWZWN0b3I8dWludDhfdD4gbW9kdWx1czsKKyAgICAgICAgaWYg
KCFyZWFkKG1vZHVsdXMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBWZWN0
b3I8dWludDhfdD4gZXhwb25lbnQ7CisgICAgICAgIGlmICghcmVhZChleHBvbmVudCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKHR5cGUgPT0gQ3J5cHRvS2V5QXN5
bW1ldHJpY1R5cGVTdWJ0YWc6OlB1YmxpYykgeworICAgICAgICAgICAgYXV0byBrZXlEYXRhID0g
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OmNyZWF0ZVB1YmxpYyhtb2R1bHVzLCBleHBvbmVu
dCk7CisgICAgICAgICAgICBhdXRvIGtleSA9IENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRo
bSwgKmtleURhdGEsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAgICAgICAgaWYgKGlzUmVz
dHJpY3RlZFRvSGFzaCkKKyAgICAgICAgICAgICAgICBrZXktPnJlc3RyaWN0VG9IYXNoKGhhc2gp
OworICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptb3ZlKGtleSk7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBwcml2YXRlRXhw
b25lbnQ7CisgICAgICAgIGlmICghcmVhZChwcml2YXRlRXhwb25lbnQpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIHVpbnQzMl90IHByaW1lQ291bnQ7CisgICAgICAgIGlm
ICghcmVhZChwcmltZUNvdW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICBpZiAoIXByaW1lQ291bnQpIHsKKyAgICAgICAgICAgIGF1dG8ga2V5RGF0YSA9IENyeXB0b0tl
eURhdGFSU0FDb21wb25lbnRzOjpjcmVhdGVQcml2YXRlKG1vZHVsdXMsIGV4cG9uZW50LCBwcml2
YXRlRXhwb25lbnQpOworICAgICAgICAgICAgYXV0byBrZXkgPSBDcnlwdG9LZXlSU0E6OmNyZWF0
ZShhbGdvcml0aG0sICprZXlEYXRhLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKKyAgICAgICAgICAg
IGlmIChpc1Jlc3RyaWN0ZWRUb0hhc2gpCisgICAgICAgICAgICAgICAga2V5LT5yZXN0cmljdFRv
SGFzaChoYXNoKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bW92ZShrZXkpOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJpbWVDb3VudCA8
IDIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgQ3J5cHRvS2V5RGF0YVJT
QUNvbXBvbmVudHM6OlByaW1lSW5mbyBmaXJzdFByaW1lSW5mbzsKKyAgICAgICAgQ3J5cHRvS2V5
RGF0YVJTQUNvbXBvbmVudHM6OlByaW1lSW5mbyBzZWNvbmRQcmltZUluZm87CisgICAgICAgIFZl
Y3RvcjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6UHJpbWVJbmZvPiBvdGhlclByaW1lSW5m
b3MocHJpbWVDb3VudCAtIDIpOworCisgICAgICAgIGlmICghcmVhZChmaXJzdFByaW1lSW5mby5w
cmltZUZhY3RvcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghcmVh
ZChmaXJzdFByaW1lSW5mby5mYWN0b3JDUlRFeHBvbmVudCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGlmICghcmVhZChzZWNvbmRQcmltZUluZm8ucHJpbWVGYWN0b3IpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXJlYWQoc2Vjb25kUHJpbWVJ
bmZvLmZhY3RvckNSVEV4cG9uZW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgaWYgKCFyZWFkKHNlY29uZFByaW1lSW5mby5mYWN0b3JDUlRDb2VmZmljaWVudCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDI7IGkgPCBw
cmltZUNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIGlmICghcmVhZChvdGhlclByaW1lSW5mb3Nb
aV0ucHJpbWVGYWN0b3IpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIGlmICghcmVhZChvdGhlclByaW1lSW5mb3NbaV0uZmFjdG9yQ1JURXhwb25lbnQpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghcmVhZChvdGhlclBy
aW1lSW5mb3NbaV0uZmFjdG9yQ1JUQ29lZmZpY2llbnQpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8ga2V5RGF0YSA9IENyeXB0b0tleURh
dGFSU0FDb21wb25lbnRzOjpjcmVhdGVQcml2YXRlV2l0aEFkZGl0aW9uYWxEYXRhKG1vZHVsdXMs
IGV4cG9uZW50LCBwcml2YXRlRXhwb25lbnQsIGZpcnN0UHJpbWVJbmZvLCBzZWNvbmRQcmltZUlu
Zm8sIG90aGVyUHJpbWVJbmZvcyk7CisgICAgICAgIGF1dG8ga2V5ID0gQ3J5cHRvS2V5UlNBOjpj
cmVhdGUoYWxnb3JpdGhtLCAqa2V5RGF0YSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgICAg
IGlmIChpc1Jlc3RyaWN0ZWRUb0hhc2gpCisgICAgICAgICAgICBrZXktPnJlc3RyaWN0VG9IYXNo
KGhhc2gpOworICAgICAgICByZXN1bHQgPSBzdGQ6Om1vdmUoa2V5KTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgYm9vbCByZWFkQ3J5cHRvS2V5KEpTVmFsdWUmIGNyeXB0b0tl
eSkKKyAgICB7CisgICAgICAgIGludDMyX3QgZXh0cmFjdGFibGU7CisgICAgICAgIGlmICghcmVh
ZChleHRyYWN0YWJsZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdWlu
dDMyX3QgdXNhZ2VzQ291bnQ7CisgICAgICAgIGlmICghcmVhZCh1c2FnZXNDb3VudCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgQ3J5cHRvS2V5VXNhZ2UgdXNhZ2VzID0g
MDsKKyAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHVzYWdlc0NvdW50OyArK2kpIHsK
KyAgICAgICAgICAgIENyeXB0b0tleVVzYWdlVGFnIHVzYWdlOworICAgICAgICAgICAgaWYgKCFy
ZWFkKHVzYWdlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBz
d2l0Y2ggKHVzYWdlKSB7CisgICAgICAgICAgICBjYXNlIENyeXB0b0tleVVzYWdlVGFnOjpFbmNy
eXB0OgorICAgICAgICAgICAgICAgIHVzYWdlcyB8PSBDcnlwdG9LZXlVc2FnZUVuY3J5cHQ7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENyeXB0b0tleVVzYWdlVGFn
OjpEZWNyeXB0OgorICAgICAgICAgICAgICAgIHVzYWdlcyB8PSBDcnlwdG9LZXlVc2FnZURlY3J5
cHQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENyeXB0b0tleVVz
YWdlVGFnOjpTaWduOgorICAgICAgICAgICAgICAgIHVzYWdlcyB8PSBDcnlwdG9LZXlVc2FnZVNp
Z247CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENyeXB0b0tleVVz
YWdlVGFnOjpWZXJpZnk6CisgICAgICAgICAgICAgICAgdXNhZ2VzIHw9IENyeXB0b0tleVVzYWdl
VmVyaWZ5OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDcnlwdG9L
ZXlVc2FnZVRhZzo6RGVyaXZlS2V5OgorICAgICAgICAgICAgICAgIHVzYWdlcyB8PSBDcnlwdG9L
ZXlVc2FnZURlcml2ZUtleTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgQ3J5cHRvS2V5VXNhZ2VUYWc6OkRlcml2ZUJpdHM6CisgICAgICAgICAgICAgICAgdXNhZ2Vz
IHw9IENyeXB0b0tleVVzYWdlRGVyaXZlQml0czsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgQ3J5cHRvS2V5VXNhZ2VUYWc6OldyYXBLZXk6CisgICAgICAgICAgICAg
ICAgdXNhZ2VzIHw9IENyeXB0b0tleVVzYWdlV3JhcEtleTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgQ3J5cHRvS2V5VXNhZ2VUYWc6OlVud3JhcEtleToKKyAgICAg
ICAgICAgICAgICB1c2FnZXMgfD0gQ3J5cHRvS2V5VXNhZ2VVbndyYXBLZXk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBDcnlwdG9L
ZXlDbGFzc1N1YnRhZyBjcnlwdG9LZXlDbGFzczsKKyAgICAgICAgaWYgKCFyZWFkKGNyeXB0b0tl
eUNsYXNzKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgUmVmUHRyPENyeXB0
b0tleT4gcmVzdWx0OworICAgICAgICBzd2l0Y2ggKGNyeXB0b0tleUNsYXNzKSB7CisgICAgICAg
IGNhc2UgQ3J5cHRvS2V5Q2xhc3NTdWJ0YWc6OkhNQUM6CisgICAgICAgICAgICBpZiAoIXJlYWRI
TUFDS2V5KGV4dHJhY3RhYmxlLCB1c2FnZXMsIHJlc3VsdCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3J5cHRvS2V5Q2xh
c3NTdWJ0YWc6OkFFUzoKKyAgICAgICAgICAgIGlmICghcmVhZEFFU0tleShleHRyYWN0YWJsZSwg
dXNhZ2VzLCByZXN1bHQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0b0tleUNsYXNzU3VidGFnOjpSU0E6CisgICAg
ICAgICAgICBpZiAoIXJlYWRSU0FLZXkoZXh0cmFjdGFibGUsIHVzYWdlcywgcmVzdWx0KSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjcnlwdG9LZXkgPSBnZXRKU1ZhbHVlKHJlc3VsdC5nZXQoKSk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgorCiAgICAgdGVtcGxhdGU8Y2xhc3MgVD4KICAg
ICBKU1ZhbHVlIGdldEpTVmFsdWUoVCogbmF0aXZlT2JqKQogICAgIHsKQEAgLTE2NTgsNiArMjI1
MywxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmQoYXJyYXlCdWZm
ZXJWaWV3KTsKICAgICAgICAgICAgIHJldHVybiBhcnJheUJ1ZmZlclZpZXc7CiAgICAgICAgIH0K
KyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKyAgICAgICAgY2FzZSBDcnlwdG9LZXlUYWc6IHsK
KyAgICAgICAgICAgIEpTVmFsdWUgY3J5cHRvS2V5OworICAgICAgICAgICAgaWYgKCFyZWFkQ3J5
cHRvS2V5KGNyeXB0b0tleSkpIHsKKyAgICAgICAgICAgICAgICBmYWlsKCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fZ2NC
dWZmZXIuYXBwZW5kKGNyeXB0b0tleSk7CisgICAgICAgICAgICByZXR1cm4gY3J5cHRvS2V5Owor
ICAgICAgICB9CisjZW5kaWYKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIG1fcHRyLS07
IC8vIFB1c2ggdGhlIHRhZyBiYWNrCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ci5oCShyZXZpc2lvbiAxNjAzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIEVOVU1f
Q0xBU1MoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcikgewogICAgIEFFU19DTUFDLAogICAgIEFF
U19HQ00sCiAgICAgQUVTX0NGQiwKKyAgICBBRVNfS1csCiAgICAgSE1BQywKICAgICBESCwKICAg
ICBTSEFfMSwKQEAgLTUxLDggKzUyLDcgQEAgRU5VTV9DTEFTUyhDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyKSB7CiAgICAgU0hBXzUxMiwKICAgICBDT05DQVQsCiAgICAgSEtERl9DVFIsCi0gICAg
UEJLREYyLAotICAgIEFFU19LVyAvLyBOb3QgeWV0IHN0YW5kYXJkaXplZC4KKyAgICBQQktERjIK
IH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdp
c3RyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5LmNwcAkocmV2aXNpb24gMTYwMzc1KQorKysgU291cmNlL1dlYkNvcmUvY3J5
cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEg
KzM1LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkm
IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpzaGFyZWQoKQogewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDcnlwdG9BbGdvcml0aG1SZWdpc3Ry
eSwgcmVnaXN0cnksICgpKTsKICAgICByZXR1cm4gcmVnaXN0cnk7CiB9CiAKK3N0YXRpYyBNdXRl
eCYgcmVnaXN0cnlNdXRleCgpCit7CisgICAgQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljKE11
dGV4JiwgbXV0ZXggPSAqbmV3IE11dGV4KTsKKyAgICByZXR1cm4gbXV0ZXg7Cit9CisKIENyeXB0
b0FsZ29yaXRobVJlZ2lzdHJ5OjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeSgpCiB7CiAgICAgcGxh
dGZvcm1SZWdpc3RlckFsZ29yaXRobXMoKTsKQEAgLTUwLDcgKzU1LDkgQEAgYm9vbCBDcnlwdG9B
bGdvcml0aG1SZWdpc3RyeTo6Z2V0SWRlbnRpZgogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBpdGVyID0gbV9uYW1lVG9JZGVudGlmaWVy
TWFwLmZpbmQobmFtZS5sb3dlcigpKTsKKyAgICBNdXRleExvY2tlciBsb2NrKHJlZ2lzdHJ5TXV0
ZXgoKSk7CisKKyAgICBhdXRvIGl0ZXIgPSBtX25hbWVUb0lkZW50aWZpZXJNYXAuZmluZChuYW1l
Lmlzb2xhdGVkQ29weSgpLmxvd2VyKCkpOwogICAgIGlmIChpdGVyID09IG1fbmFtZVRvSWRlbnRp
Zmllck1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC02MCwxMSArNjcsMTUg
QEAgYm9vbCBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6Z2V0SWRlbnRpZgogCiBTdHJpbmcgQ3J5
cHRvQWxnb3JpdGhtUmVnaXN0cnk6Om5hbWVGb3JJZGVudGlmaWVyKENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICByZXR1cm4gbV9pZGVudGlmaWVyVG9OYW1lTWFw
LmdldChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaWRlbnRpZmllcikpOworICAgIE11dGV4TG9ja2Vy
IGxvY2socmVnaXN0cnlNdXRleCgpKTsKKworICAgIHJldHVybiBtX2lkZW50aWZpZXJUb05hbWVN
YXAuZ2V0KHN0YXRpY19jYXN0PHVuc2lnbmVkPihpZGVudGlmaWVyKSkuaXNvbGF0ZWRDb3B5KCk7
CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG0+IENyeXB0b0FsZ29yaXRobVJl
Z2lzdHJ5OjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogewor
ICAgIE11dGV4TG9ja2VyIGxvY2socmVnaXN0cnlNdXRleCgpKTsKKwogICAgIGF1dG8gaXRlciA9
IG1faWRlbnRpZmllclRvQ29uc3RydWN0b3JNYXAuZmluZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
aWRlbnRpZmllcikpOwogICAgIGlmIChpdGVyID09IG1faWRlbnRpZmllclRvQ29uc3RydWN0b3JN
YXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzYsNiArODcsOCBAQCB2b2lk
IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpyZWdpc3RlckFsCiB7CiAgICAgQVNTRVJUKG5hbWUg
PT0gbmFtZS5sb3dlcigpKTsKIAorICAgIE11dGV4TG9ja2VyIGxvY2socmVnaXN0cnlNdXRleCgp
KTsKKwogICAgIGJvb2wgYWRkZWQgPSBtX25hbWVUb0lkZW50aWZpZXJNYXAuYWRkKG5hbWUsIGlk
ZW50aWZpZXIpLmlzTmV3RW50cnk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRlZCwgYWRkZWQpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmlkbAkocmV2aXNpb24gMTYwMzc1KQor
KysgU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDYgKzQ0LDcgQEAgZW51bSBLZXlVc2FnZSB7CiAgICAgQ29uZGl0aW9uYWw9U1VCVExFX0NS
WVBUTywKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGwsCiAgICAgSW50ZXJmYWNlTmFtZT1L
ZXksCisgICAgSlNOb1N0YXRpY1RhYmxlcywKICAgICBOb0ludGVyZmFjZU9iamVjdCwKICAgICBT
a2lwVlRhYmxlVmFsaWRhdGlvbgogXSBpbnRlcmZhY2UgQ3J5cHRvS2V5IHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUFFUy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5QUVTLmNwcAkocmV2aXNpb24gMTYwMzc1
KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5QUVTLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksMTggKzM5LDIzIEBAIENyeXB0b0tleUFFUzo6Q3J5cHRvS2V5QUVTKENy
eXB0b0FsZ29yaXQKICAgICA6IENyeXB0b0tleShhbGdvcml0aG0sIENyeXB0b0tleVR5cGU6OlNl
Y3JldCwgZXh0cmFjdGFibGUsIHVzYWdlKQogICAgICwgbV9rZXkoa2V5KQogewotICAgIEFTU0VS
VChhbGdvcml0aG0gPT0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NUUgotICAgICAg
ICB8fCBhbGdvcml0aG0gPT0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NCQwotICAg
ICAgICB8fCBhbGdvcml0aG0gPT0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NNQUMK
LSAgICAgICAgfHwgYWxnb3JpdGhtID09IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19H
Q00KLSAgICAgICAgfHwgYWxnb3JpdGhtID09IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFF
U19DRkIKLSAgICAgICAgfHwgYWxnb3JpdGhtID09IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkFFU19LVyk7CisgICAgQVNTRVJUKGlzVmFsaWRBRVNBbGdvcml0aG0oYWxnb3JpdGhtKSk7CiB9
CiAKIENyeXB0b0tleUFFUzo6fkNyeXB0b0tleUFFUygpCiB7CiB9CiAKK2Jvb2wgQ3J5cHRvS2V5
QUVTOjppc1ZhbGlkQUVTQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3Jp
dGhtKQoreworICAgIHJldHVybiBhbGdvcml0aG0gPT0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6QUVTX0NUUgorICAgICAgICB8fCBhbGdvcml0aG0gPT0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6QUVTX0NCQworICAgICAgICB8fCBhbGdvcml0aG0gPT0gQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6QUVTX0NNQUMKKyAgICAgICAgfHwgYWxnb3JpdGhtID09IENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OkFFU19HQ00KKyAgICAgICAgfHwgYWxnb3JpdGhtID09IENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkFFU19DRkIKKyAgICAgICAgfHwgYWxnb3JpdGhtID09IENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OkFFU19LVzsKK30KKwogUGFzc1JlZlB0cjxDcnlwdG9LZXlBRVM+
IENyeXB0b0tleUFFUzo6Z2VuZXJhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0
aG0sIHNpemVfdCBsZW5ndGhCaXRzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSB1
c2FnZXMpCiB7CiAgICAgaWYgKGxlbmd0aEJpdHMgJSA4KQpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2tleXMvQ3J5cHRvS2V5QUVTLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2tleXMvQ3J5cHRvS2V5QUVTLmgJKHJldmlzaW9uIDE2MDM3NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUFFUy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2
ICs0Miw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+Q3J5cHRvS2V5QUVTKCk7CiAK
KyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkQUVTQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIpOworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q3J5cHRvS2V5QUVTPiBnZW5lcmF0ZShD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBzaXplX3QgbGVuZ3RoQml0cywgYm9vbCBleHRyYWN0
YWJsZSwgQ3J5cHRvS2V5VXNhZ2UpOwogCiAgICAgdmlydHVhbCBDcnlwdG9LZXlDbGFzcyBrZXlD
bGFzcygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIENyeXB0b0tleUNsYXNzOjpBRVM7IH0KSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE2MDQ0OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEzLTEyLTExICBBbGV4ZXkgUHJvc2t1cnlha292
ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFdlYkNyeXB0byBrZXlzIHNob3VsZCBzdXBwb3J0
IHN0cnVjdHVyZWQgY2xvbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNTU5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogY3J5cHRvL3N1YnRsZS9hZXMtcG9zdE1lc3NhZ2UtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL2Flcy1wb3N0TWVzc2FnZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL2htYWMtcG9zdE1lc3NhZ2UtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL2htYWMtcG9zdE1lc3NhZ2UuaHRtbDog
QWRkZWQuCisgICAgICAgICogY3J5cHRvL3N1YnRsZS9wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL3Bvc3RNZXNzYWdlLXdvcmtl
ci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL3JzYS1wb3N0TWVzc2FnZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvcnNhLXBvc3RNZXNz
YWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvcmVzb3VyY2VzL3Bvc3RN
ZXNzYWdlLXdvcmtlci5qczogQWRkZWQuCisKIDIwMTMtMTItMTEgIE1hcmlvIFNhbmNoZXogUHJh
ZGEgIDxtYXJpby5wcmFkYUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbQVRLXSBBZGQgbmV3IGxh
eW91dCB0ZXN0IHRvIGNoZWNrIEFUSyByb2xlcyBpbiBhIGNlbnRyYWwgcGxhY2UKSW5kZXg6IExh
eW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLXBvc3RNZXNzYWdlLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1wb3N0TWVzc2FnZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1w
b3N0TWVzc2FnZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAor
VGVzdCBzZW5kaW5nIGNyeXB0byBrZXlzIHZpYSBwb3N0TWVzc2FnZS4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1Mga2V5LnR5cGUgaXMgJ3NlY3JldCcKK1BBU1Mga2V5LmV4
dHJhY3RhYmxlIGlzIHRydWUKK1BBU1Mga2V5LmFsZ29yaXRobS5uYW1lIGlzICdhZXMtY2JjJwor
UEFTUyBrZXkuYWxnb3JpdGhtLmxlbmd0aCBpcyAxMjgKK1BBU1Mga2V5LnVzYWdlcyBpcyBbImVu
Y3J5cHQiLCAiZGVjcnlwdCIsICJzaWduIiwgInZlcmlmeSJdCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5
b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtcG9zdE1lc3NhZ2UtZXhwZWN0ZWQudHh0Cl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAjIwordGV4dC9wbGFpbgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAg
KzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlv
dXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1wb3N0TWVzc2FnZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLXBvc3RNZXNzYWdlLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1wb3N0TWVzc2FnZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jb21t
b24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlv
bigiVGVzdCBzZW5kaW5nIGNyeXB0byBrZXlzIHZpYSBwb3N0TWVzc2FnZS4iKTsKKworanNUZXN0
SXNBc3luYyA9IHRydWU7CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVu
Y3Rpb24oZXZ0KSB7CisgICAga2V5ID0gZXZ0LmRhdGE7CisgICAgc2hvdWxkQmUoImtleS50eXBl
IiwgIidzZWNyZXQnIik7CisgICAgc2hvdWxkQmUoImtleS5leHRyYWN0YWJsZSIsICJ0cnVlIik7
CisgICAgc2hvdWxkQmUoImtleS5hbGdvcml0aG0ubmFtZSIsICInYWVzLWNiYyciKTsKKyAgICBz
aG91bGRCZSgia2V5LmFsZ29yaXRobS5sZW5ndGgiLCAiMTI4Iik7CisgICAgc2hvdWxkQmUoImtl
eS51c2FnZXMiLCAnWyJlbmNyeXB0IiwgImRlY3J5cHQiLCAic2lnbiIsICJ2ZXJpZnkiXScpOwor
CisgICAgZmluaXNoSlNUZXN0KCk7Cit9LCBmYWxzZSk7CisKK2ltcG9ydFRlc3RLZXlzKCkudGhl
bihmdW5jdGlvbihrZXlzKSB7CisgICAgcG9zdE1lc3NhZ2Uoa2V5cy5hZXNDYmMsICIqIik7Cit9
KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5
b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtcG9zdE1lc3NhZ2UuaHRtbApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAgKzEgIyMKK3RleHQvaHRtbApcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2htYWMt
cG9zdE1lc3NhZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NyeXB0
by9zdWJ0bGUvaG1hYy1wb3N0TWVzc2FnZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2htYWMtcG9zdE1lc3NhZ2UtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Qgc2VuZGluZyBjcnlwdG8ga2V5cyB2
aWEgcG9zdE1lc3NhZ2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGtl
eS50eXBlIGlzICdzZWNyZXQnCitQQVNTIGtleS5leHRyYWN0YWJsZSBpcyB0cnVlCitQQVNTIGtl
eS5hbGdvcml0aG0ubmFtZSBpcyAnaG1hYycKK1BBU1Mga2V5LmFsZ29yaXRobS5sZW5ndGggaXMg
MTYKK1BBU1Mga2V5LnVzYWdlcyBpcyBbImVuY3J5cHQiLCAiZGVjcnlwdCIsICJzaWduIiwgInZl
cmlmeSJdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9obWFjLXBv
c3RNZXNzYWdlLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMj
IC0wLDAgKzEgIyMKK3RleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpB
ZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9obWFjLXBv
c3RNZXNzYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9o
bWFjLXBvc3RNZXNzYWdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8v
c3VidGxlL2htYWMtcG9zdE1lc3NhZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMy
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3Qgc2VuZGluZyBjcnlwdG8ga2V5
cyB2aWEgcG9zdE1lc3NhZ2UuIik7CisKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCit3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2dCkgeworICAgIGtleSA9IGV2
dC5kYXRhOworICAgIHNob3VsZEJlKCJrZXkudHlwZSIsICInc2VjcmV0JyIpOworICAgIHNob3Vs
ZEJlKCJrZXkuZXh0cmFjdGFibGUiLCAidHJ1ZSIpOworICAgIHNob3VsZEJlKCJrZXkuYWxnb3Jp
dGhtLm5hbWUiLCAiJ2htYWMnIik7CisgICAgc2hvdWxkQmUoImtleS5hbGdvcml0aG0ubGVuZ3Ro
IiwgIjE2Iik7CisgICAgc2hvdWxkQmUoImtleS51c2FnZXMiLCAnWyJlbmNyeXB0IiwgImRlY3J5
cHQiLCAic2lnbiIsICJ2ZXJpZnkiXScpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9LCBmYWxz
ZSk7CisKK2ltcG9ydFRlc3RLZXlzKCkudGhlbihmdW5jdGlvbihrZXlzKSB7CisgICAgcG9zdE1l
c3NhZ2Uoa2V5cy5obWFjU2hhMSwgIioiKTsKK30pOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2htYWMt
cG9zdE1lc3NhZ2UuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAg
KzEgIyMKK3RleHQvaHRtbApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBM
YXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3Bvc3RNZXNzYWdlLXdvcmtlci1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9wb3N0TWVzc2FnZS13b3Jr
ZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRs
ZS9wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTUgQEAKK1Rlc3Qgc2VuZGluZyBjcnlwdG8ga2V5cyB2aWEgcG9zdE1lc3NhZ2UgdG8gYSB3
b3JrZXIuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEFsbCBjaGVja3Mg
cGFzc2VkIGluIHdvcmtlcgorUEFTUyBrZXkudHlwZSBpcyAnc2VjcmV0JworUEFTUyBrZXkuZXh0
cmFjdGFibGUgaXMgdHJ1ZQorUEFTUyBrZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ2htYWMnCitQQVNT
IGtleS5hbGdvcml0aG0ubGVuZ3RoIGlzIDE2CitQQVNTIGtleS51c2FnZXMgaXMgWyJlbmNyeXB0
IiwgImRlY3J5cHQiLCAic2lnbiIsICJ2ZXJpZnkiXQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRl
c3RzL2NyeXB0by9zdWJ0bGUvcG9zdE1lc3NhZ2Utd29ya2VyLWV4cGVjdGVkLnR4dApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAgKzEgIyMKK3RleHQvcGxhaW4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpBZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMCwwICsx
ICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0
VGVzdHMvY3J5cHRvL3N1YnRsZS9wb3N0TWVzc2FnZS13b3JrZXIuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3Bvc3RNZXNzYWdlLXdvcmtlci5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9wb3N0TWVzc2FnZS13b3JrZXIu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvY29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKworZGVz
Y3JpcHRpb24oIlRlc3Qgc2VuZGluZyBjcnlwdG8ga2V5cyB2aWEgcG9zdE1lc3NhZ2UgdG8gYSB3
b3JrZXIuIik7CisKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCitpbXBvcnRUZXN0S2V5cygpLnRo
ZW4oZnVuY3Rpb24oa2V5cykgeworICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCJyZXNvdXJj
ZXMvcG9zdE1lc3NhZ2Utd29ya2VyLmpzIik7CisgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0
aW9uKGV2dCkgeworICAgICAgICBpZiAoIWV2dC5kYXRhLnJlc3VsdCkgeworICAgICAgICAgICAg
dGVzdEZhaWxlZCgiQ2hlY2sgZmFpbGVkIGluIHdvcmtlcjogIiArIGV2dC5kYXRhLm1lc3NhZ2Up
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgiQWxsIGNoZWNrcyBw
YXNzZWQgaW4gd29ya2VyIik7CisgICAgICAgICAgICBrZXkgPSBldnQuZGF0YS5rZXk7CisgICAg
ICAgICAgICBzaG91bGRCZSgia2V5LnR5cGUiLCAiJ3NlY3JldCciKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJrZXkuZXh0cmFjdGFibGUiLCAidHJ1ZSIpOworICAgICAgICAgICAgc2hvdWxkQmUo
ImtleS5hbGdvcml0aG0ubmFtZSIsICInaG1hYyciKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJr
ZXkuYWxnb3JpdGhtLmxlbmd0aCIsICIxNiIpOworICAgICAgICAgICAgc2hvdWxkQmUoImtleS51
c2FnZXMiLCAnWyJlbmNyeXB0IiwgImRlY3J5cHQiLCAic2lnbiIsICJ2ZXJpZnkiXScpOworICAg
ICAgICB9CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKyAgICB3b3JrZXIucG9zdE1l
c3NhZ2Uoa2V5cy5obWFjU2hhMSk7Cit9KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoK
UHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9wb3N0TWVzc2Fn
ZS13b3JrZXIuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAgKzEg
IyMKK3RleHQvaHRtbApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlv
dXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYS1wb3N0TWVzc2FnZS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9yc2EtcG9zdE1lc3NhZ2UtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9yc2EtcG9z
dE1lc3NhZ2UtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKK1Rl
c3Qgc2VuZGluZyBjcnlwdG8ga2V5cyB2aWEgcG9zdE1lc3NhZ2UuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitLZXkgcmVjZWl2ZWQgaW4gYSBtZXNzYWdlOgorUEFTUyBrZXkudHlw
ZSBpcyAncHJpdmF0ZScKK1BBU1Mga2V5LmV4dHJhY3RhYmxlIGlzIHRydWUKK1BBU1Mga2V5LmFs
Z29yaXRobS5uYW1lIGlzICdyc2Fzc2EtcGtjczEtdjFfNScKK1BBU1Mga2V5LmFsZ29yaXRobS5t
b2R1bHVzTGVuZ3RoIGlzIDIwNDgKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhrZXkuYWxnb3JpdGht
LnB1YmxpY0V4cG9uZW50KSBpcyAnMDEwMDAxJworUEFTUyBrZXkudXNhZ2VzIGlzIFsic2lnbiIs
ICJ2ZXJpZnkiXQorCitFeHBvcnRlZCBiYWNrIHRvIEpXSzoKK1BBU1MgZXhwb3J0ZWRKV0sua3R5
IGlzICdSU0EnCitQQVNTIGV4cG9ydGVkSldLLmFsZyBpcyAnUlMyNTYnCitQQVNTIGV4cG9ydGVk
SldLLmV4dCBpcyB0cnVlCitQQVNTIGV4cG9ydGVkSldLLnVzZSBpcyAnc2lnJworUEFTUyBleHBv
cnRlZEpXSy5uIGlzIHByaXZhdGVLZXlKU09OLm4KK1BBU1MgZXhwb3J0ZWRKV0suZSBpcyBwcml2
YXRlS2V5SlNPTi5lCitQQVNTIGV4cG9ydGVkSldLLmQgaXMgcHJpdmF0ZUtleUpTT04uZAorUEFT
UyBleHBvcnRlZEpXSy5wIGlzIHByaXZhdGVLZXlKU09OLnAKK1BBU1MgZXhwb3J0ZWRKV0sucSBp
cyBwcml2YXRlS2V5SlNPTi5xCitQQVNTIGV4cG9ydGVkSldLLmRwIGlzIHByaXZhdGVLZXlKU09O
LmRwCitQQVNTIGV4cG9ydGVkSldLLmRxIGlzIHByaXZhdGVLZXlKU09OLmRxCitQQVNTIGV4cG9y
dGVkSldLLnFpIGlzIHByaXZhdGVLZXlKU09OLnFpCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRU
ZXN0cy9jcnlwdG8vc3VidGxlL3JzYS1wb3N0TWVzc2FnZS1leHBlY3RlZC50eHQKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCit0ZXh0L3BsYWluClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAj
IworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExheW91dFRl
c3RzL2NyeXB0by9zdWJ0bGUvcnNhLXBvc3RNZXNzYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9yc2EtcG9zdE1lc3NhZ2UuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvcnNhLXBvc3RNZXNzYWdlLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NvbW1vbi5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJU
ZXN0IHNlbmRpbmcgY3J5cHRvIGtleXMgdmlhIHBvc3RNZXNzYWdlLiIpOworCitqc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKwordmFyIHByaXZhdGVLZXlKU09OID0geworICAgIGt0eTogIlJTQSIsCisg
ICAgYWxnOiAiUlMyNTYiLAorICAgIG46ICJyY0NVQ3Y3T2MxSFZhbTFESWhDenFrblRoV2F3T3A4
UUxrOFppeTJwMTBCeWpRRkNham9GaXl1QVdsLVIxV1haYWY0eGl0TFJyYWNUOWFncHpJemMtTWJM
U0hJR2dXUUdPMjFsR2lJbXk1ZnRaLUQ4YkhBcVJ6MnkxNXB6RDRjNENFb3U3WFNTTERvUm5SMFFH
NU1zRGhENnMyZ1Y5bXdIa3J0a0N4dE1XZEJpLTc3YXM4d0dtbE5SbGRjT1NnWkRMSzhVbkNTZ0Ex
T2d1Wjk4OWJGeWM4dE9PRUliMHhVU2ZQU3ozTFBTQ255WXo2OGFEam1LVmVOSC1pZzg1N09TY3lX
Ykd5RXkzQml3NjRxdW4zanVVbE5Xc0ozem5na09kdGVZV3l0eDVRcjRYS05zNlItTXl5cTcyS1Vw
MDJtSkRaaWl5aWdseE1MX2kzLV9DZWVjQ3ciLAorICAgIGU6ICJBUUFCIiwKKyAgICBkOiAiZU5M
UzM3YUN6N1JYU05QRF9EdExCSjZqNVQ4Y1N4ZHpSQkNqUGFJNldjR3FKcDE2bHEzVVR3dW9ETEFx
bEE5b0dZbTIzOGRzSVdwdXVjUF9sUXRiV2UtN1NweG9JNl92bVlHZjdZVlVIdjEtREY5cWlPbVNy
TW1keE1uVk96WVhZOFJhVDZ0aFBqbl9KNWNmTFYyeElfTHdzck10bXBkU3lObGdYMHpUVWh3dHVh
aGdBS01FQ2hZakgyRW5qSGRIdzZzWTItd0FwZGNRSTdVTEUwb281UnpiUVpwbXVoY045aGlCYzBM
M2hoRjBxbzUwbWJsMDJfNjVfR1E3RHBWa1hCeE5nUkJMemxQYWJtenpHMm9BaGZlZkxnWW1TQzFv
cGFDa1hFNnZSV1FOV05MNDVSWk5aRllNM3VvSmdoT01xR2VvY00wQnBqZENoSHJQT2xGdlNRIiwK
KyAgICBwOiAiNG1pVHVBaktNZUg1dUo1S0IzOTdRVXdoYmtZRWdTYmNBMm1pZm1Ta3ZFMjAxOGdi
NTVxa0JISzFlVnJ5ZjFfbTQzTE5sYzZPX2FrNmdmemRaSVp2UzVOQ0dqUGwwcTA5cGxVcHU4cUZP
U3NwQndBNjdxR0g3NmxGbFpMbl9kNHlnbFM3d2ZMcnU0XzVZczhxTExzLURxVkx2aXdwb3NPbnl5
V3F3TTVBWHAwIiwKKyAgICBxOiAieEhZcnpraXZ0bW56X3NHY2huV0djMHEtcERPa0tpY3B0UnB2
MnBNRklJWHhuRlg1YU1lRVhJWmpWdWpYdHdVeTFVbEZJTjJHWkpTdnk1S0o3OW11X1h5Tm5GSE16
ZWRILUEzZWUzdThoMVVVclpGLXZVdTFfZTRVX3g2N05OMWRlZHpVU0t5bk43cEZsM09rdVNoTUJX
R1YtY3d6T1BkY1ZBZlZ1Wmx4VU1jIiwKKyAgICBkcDogImZCekR6WURVQm1CUUdvcDdIbjBkdmZf
VDI3VjZScXBjdFdvMDc0Q1FaY0ZiUDJhdEZWdEtTajN2aVdUM3hpZDJWSHpjZ2lESGRmcE0zbkVW
bEVPMXd3SW9uR0NTdmRqR0VPWmlpRlZPanJaQU9WeEE4Z3VPanl5RnZxYlhrZTA2VndQSUlWdmZL
ZVNVMnp1aGJQX18xdHQ2Rl9meG93NEtiMnhvbkdUMEdHayIsCisgICAgZHE6ICJqbUUyRGlJUGRo
d0RnTFhBUXBJYUJxUTgxYk8zWGZWVF9MUlVMQXd3d3dsUHVRVjE0OEgwNHpsaDlUSjZZMkdaSFlv
a1YxVTBlT0JwSnhma2I3ZExZdHBKcHVpQmpSZjR5SVVFb0dsa2tJX1FsSm5GU0ZyLVlqR1JkZk5I
cVdCa3hsU01aTDc3MFI5bUlBVG5kR2tIN3o1eC1yOUt3QlpGQzRGQ0cyaGdfekUiLAorICAgIHFp
OiAiWUNYX3BMd2JNQkExVGhWSDBXY3dtbnl0cU5jck1DRXdUbTdCeUEyZVU2bldiUXJVTHZmN205
X2t6ZkxVY2pzbnBBVmxCUUc1Sk1YTXkwU3E0cHR3Ynl3c2E1LUc4S0FPT09SMkwzdjRoQy1FeXM5
ZnRnRk1fM2kwbzQwZWVRSDRiM2hhUGJudHJJZU1nOEl6bE91VllLZjktMlF1S0RvV2VSZGQ3TnNk
eFRrIgorfTsKKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihl
dnQpIHsKKyAgICBkZWJ1ZygiS2V5IHJlY2VpdmVkIGluIGEgbWVzc2FnZToiKTsKKyAgICBrZXkg
PSBldnQuZGF0YTsKKyAgICBzaG91bGRCZSgia2V5LnR5cGUiLCAiJ3ByaXZhdGUnIik7CisgICAg
c2hvdWxkQmUoImtleS5leHRyYWN0YWJsZSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoImtleS5h
bGdvcml0aG0ubmFtZSIsICIncnNhc3NhLXBrY3MxLXYxXzUnIik7CisgICAgc2hvdWxkQmUoImtl
eS5hbGdvcml0aG0ubW9kdWx1c0xlbmd0aCIsICIyMDQ4Iik7CisgICAgc2hvdWxkQmUoImJ5dGVz
VG9IZXhTdHJpbmcoa2V5LmFsZ29yaXRobS5wdWJsaWNFeHBvbmVudCkiLCAiJzAxMDAwMSciKTsK
KyAgICBzaG91bGRCZSgia2V5LnVzYWdlcyIsICdbInNpZ24iLCAidmVyaWZ5Il0nKTsKKworICAg
IGNyeXB0by5zdWJ0bGUuZXhwb3J0S2V5KCJqd2siLCBrZXkpLnRoZW4oZnVuY3Rpb24ocmVzdWx0
KSB7CisgICAgICAgIGV4cG9ydGVkSldLID0gSlNPTi5wYXJzZShieXRlc1RvQVNDSUlTdHJpbmco
cmVzdWx0KSk7CisgICAgICAgIGRlYnVnKCJcbkV4cG9ydGVkIGJhY2sgdG8gSldLOiIpOworICAg
ICAgICBzaG91bGRCZSgiZXhwb3J0ZWRKV0sua3R5IiwgIidSU0EnIik7CisgICAgICAgIHNob3Vs
ZEJlKCJleHBvcnRlZEpXSy5hbGciLCAiJ1JTMjU2JyIpOworICAgICAgICBzaG91bGRCZSgiZXhw
b3J0ZWRKV0suZXh0IiwgInRydWUiKTsKKyAgICAgICAgc2hvdWxkQmUoImV4cG9ydGVkSldLLnVz
ZSIsICInc2lnJyIpOworICAgICAgICBzaG91bGRCZSgiZXhwb3J0ZWRKV0subiIsICJwcml2YXRl
S2V5SlNPTi5uIik7CisgICAgICAgIHNob3VsZEJlKCJleHBvcnRlZEpXSy5lIiwgInByaXZhdGVL
ZXlKU09OLmUiKTsKKyAgICAgICAgc2hvdWxkQmUoImV4cG9ydGVkSldLLmQiLCAicHJpdmF0ZUtl
eUpTT04uZCIpOworICAgICAgICBzaG91bGRCZSgiZXhwb3J0ZWRKV0sucCIsICJwcml2YXRlS2V5
SlNPTi5wIik7CisgICAgICAgIHNob3VsZEJlKCJleHBvcnRlZEpXSy5xIiwgInByaXZhdGVLZXlK
U09OLnEiKTsKKyAgICAgICAgc2hvdWxkQmUoImV4cG9ydGVkSldLLmRwIiwgInByaXZhdGVLZXlK
U09OLmRwIik7CisgICAgICAgIHNob3VsZEJlKCJleHBvcnRlZEpXSy5kcSIsICJwcml2YXRlS2V5
SlNPTi5kcSIpOworICAgICAgICBzaG91bGRCZSgiZXhwb3J0ZWRKV0sucWkiLCAicHJpdmF0ZUtl
eUpTT04ucWkiKTsKKyAgICAgICAgZGVidWcoIiIpOworCisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgIH0pOworfSwgZmFsc2UpOworCitjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwg
YXNjaWlUb1VpbnQ4QXJyYXkoSlNPTi5zdHJpbmdpZnkocHJpdmF0ZUtleUpTT04pKSwgbnVsbCwg
dHJ1ZSwgWyJzaWduIiwgInZlcmlmeSJdKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIHBv
c3RNZXNzYWdlKHJlc3VsdCwgIioiKTsKK30pOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYS1wb3N0
TWVzc2FnZS5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAj
IwordGV4dC9odG1sClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExheW91
dFRlc3RzL2NyeXB0by9zdWJ0bGUvcmVzb3VyY2VzL3Bvc3RNZXNzYWdlLXdvcmtlci5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3Jlc291cmNlcy9wb3N0TWVzc2Fn
ZS13b3JrZXIuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3Jl
c291cmNlcy9wb3N0TWVzc2FnZS13b3JrZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NCBAQAorb25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KQoreworICAgIHZhciBrZXkgPSBldnQuZGF0
YTsKKyAgICBpZiAoa2V5LnR5cGUgIT0gJ3NlY3JldCcpCisgICAgICAgIHBvc3RNZXNzYWdlKHsg
cmVzdWx0OmZhbHNlLCBtZXNzYWdlOidrZXkudHlwZSBzaG91bGQgYmUgInNlY3JldCInIH0pOwor
ICAgIGVsc2UgaWYgKCFrZXkuZXh0cmFjdGFibGUpCisgICAgICAgIHBvc3RNZXNzYWdlKHsgcmVz
dWx0OmZhbHNlLCBtZXNzYWdlOidrZXkuZXh0cmFjdGFibGUgc2hvdWxkIGJlIHRydWUnIH0pOwor
ICAgIGVsc2UgaWYgKGtleS5hbGdvcml0aG0ubmFtZSAhPSAiaG1hYyIpCisgICAgICAgIHBvc3RN
ZXNzYWdlKHsgcmVzdWx0OmZhbHNlLCBtZXNzYWdlOidrZXkuYWxnb3JpdGhtLm5hbWUgc2hvdWxk
IGJlICJobWFjIicgfSk7CisgICAgZWxzZSBpZiAoa2V5LnVzYWdlcy50b1N0cmluZygpICE9ICJl
bmNyeXB0LGRlY3J5cHQsc2lnbix2ZXJpZnkiKQorICAgICAgICBwb3N0TWVzc2FnZSh7IHJlc3Vs
dDpmYWxzZSwgbWVzc2FnZTona2V5LnVzYWdlcyBzaG91bGQgYmUgWyJlbmNyeXB0IiwgImRlY3J5
cHQiLCAic2lnbiIsICJ2ZXJpZnkiXScgfSk7CisgICAgZWxzZQorICAgICAgICBwb3N0TWVzc2Fn
ZSh7IHJlc3VsdDp0cnVlLCBrZXk6a2V5IH0pOworfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5
b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9yZXNvdXJjZXMvcG9zdE1lc3NhZ2Utd29ya2VyLmpzCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAjIwordGV4dC9wbGFpbgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0w
LDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cg==
</data>
<flag name="review"
          id="242568"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="242571"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218992</attachid>
            <date>2013-12-11 11:59:30 -0800</date>
            <delta_ts>2013-12-11 12:29:53 -0800</delta_ts>
            <desc>with build fixes</desc>
            <filename>StructuredClone.txt</filename>
            <type>text/plain</type>
            <size>56886</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MDQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDEzLTEyLTExICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFdlYkNyeXB0byBrZXlzIHNo
b3VsZCBzdXBwb3J0IHN0cnVjdHVyZWQgY2xvbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTU5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE9saXZl
ciBIdW50LgorCisgICAgICAgIFRlc3RzOiBjcnlwdG8vc3VidGxlL2Flcy1wb3N0TWVzc2FnZS5o
dG1sCisgICAgICAgICAgICAgICBjcnlwdG8vc3VidGxlL2htYWMtcG9zdE1lc3NhZ2UuaHRtbAor
ICAgICAgICAgICAgICAgY3J5cHRvL3N1YnRsZS9wb3N0TWVzc2FnZS13b3JrZXIuaHRtbAorICAg
ICAgICAgICAgICAgY3J5cHRvL3N1YnRsZS9yc2EtcG9zdE1lc3NhZ2UuaHRtbAorCisgICAgICAg
ICogY3J5cHRvL0NyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3J5
cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0b0Fs
Z29yaXRobURpY3Rpb25hcnk6OmNyZWF0ZVBhcmFtZXRlcnNGb3JFbmNyeXB0KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Y3JlYXRlUGFyYW1ldGVyc0Zv
ckRlY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5
OjpjcmVhdGVQYXJhbWV0ZXJzRm9yU2lnbik6CisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0b0Fs
Z29yaXRobURpY3Rpb25hcnk6OmNyZWF0ZVBhcmFtZXRlcnNGb3JWZXJpZnkpOgorICAgICAgICAo
V2ViQ29yZTo6SlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpjcmVhdGVQYXJhbWV0ZXJzRm9y
RGlnZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6
Y3JlYXRlUGFyYW1ldGVyc0ZvckdlbmVyYXRlS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5
cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Y3JlYXRlUGFyYW1ldGVyc0ZvckRlcml2ZUtleSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnk6OmNyZWF0ZVBhcmFt
ZXRlcnNGb3JEZXJpdmVCaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvQWxnb3JpdGht
RGljdGlvbmFyeTo6Y3JlYXRlUGFyYW1ldGVyc0ZvckltcG9ydEtleSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnk6OmNyZWF0ZVBhcmFtZXRlcnNGb3JFeHBv
cnRLZXkpOgorICAgICAgICBBRVNfS1cgd2FzIGFkZGVkIHRvIFdlYkNyeXB0byBzcGVjIGVkaXRv
cidzIGRyYWZ0IHllc3RlcmRheSBuaWdodC4gTm93IHRoYXQgd2UncmUKKyAgICAgICAgYWRkaW5n
IGEgbWF0Y2hpbmcgZW51bSBmb3Igc3RydWN0aXJlZCBjbG9uZSBzZXJpYWxpemF0aW9uLCBpdCdz
IGFzIGdvb2QgYSB0aW1lIGFzCisgICAgICAgIGFueSB0byB1cGRhdGUgdGhlIG9yZGVyIG9mIHZh
bHVlcyB0byBtYXRjaC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3VudFVzYWdlcyk6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OkNsb25lU2VyaWFsaXplcjo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlh
bGl6ZXI6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRI
TUFDS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkQUVTS2V5
KToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkUlNBS2V5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkQ3J5cHRvS2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWluYWwpOgorICAgICAgICBB
ZGRlZCBzZXJpYWxpemF0aW9uL2Rlc2VyaWFsaXphdGlvbiBmb3IgQ3J5cHRvS2V5LiBUaGlzIGRv
ZXNuJ3QgdXBkYXRlIHZlcnNpb24KKyAgICAgICAgbnVtYmVyLCBiZWNhdXNlIHdlIGRvbid0IGN1
cnJlbnRseSBzdG9yZSBzdHJ1Y3R1cmVkIGNsb25lcyBpbiBwZXJzaXN0ZW50IHN0b3JhZ2UgLQor
ICAgICAgICBhbmQgZXZlbiBpZiB3ZSBkaWQsIHdlIHdvdWxkbid0IHdhbnQgdG8gaW52YWxpZGF0
ZSBldmVyeXRoaW5nIHVzZXJzIGFscmVhZHkgc3RvcmVkLgorCisgICAgICAgICogY3J5cHRvL0Ny
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5OjpzaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0cnlNdXRleCk6
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6Z2V0SWRlbnRpZmll
ckZvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6Om5h
bWVGb3JJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJlZ2lz
dHJ5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6
OnJlZ2lzdGVyQWxnb3JpdGhtKToKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvS2V5LmlkbDoKKyAg
ICAgICAgV2l0aCBzdHJ1Y3R1cmVkIGNsb25lLCBpdCBpcyBub3cgcG9zc2libGUgdG8gc2VuZCBh
IEtleSB0byBhIHdlYiB3b3JrZXIuIFRoYXQncworICAgICAgICBvZiBubyBwcmFjdGljYWwgdXNl
IGJlY2F1c2UgdGhlIGNyeXB0byBBUEkgaXMgbm90IGV4cG9zZWQgaW4gd29ya2VycywgYnV0IHdl
CisgICAgICAgIHNob3VsZG4ndCBjcmFzaCBhbnl3YXkuCisKKyAgICAgICAgKiBjcnlwdG8va2V5
cy9DcnlwdG9LZXlBRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5QUVTOjpDcnlw
dG9LZXlBRVMpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5QUVTOjppc1ZhbGlkQUVTQWxn
b3JpdGhtKToKKyAgICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuaDoKKyAgICAgICAg
RXhwb3NlZCBpc1ZhbGlkQUVTQWxnb3JpdGhtLCBzbyB0aGF0IGEgY2FsbGVyIGNvdWxkIGtub3cg
d2hldGhlciB0aGUgY29uc3RydWN0b3IKKyAgICAgICAgd2lsbCBhc3NlcnQuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBX
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgIEFkZGVkIGNy
eXB0by9rZXlzIHRvIHNlYXJjaCBwYXRocyB0byBhdm9pZCBidWlsZCBicmVha2FnZS4KKwogMjAx
My0xMi0xMSAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1hcmlvLnByYWRhQHNhbXN1bmcuY29tPgog
CiAgICAgICAgIFtBVEtdIEV4cG9zZSBhY2Nlc3NpYmlsaXR5IG9iamVjdHMgV0FJLUFSSUEgbGFu
ZG1hcmsgcm9sZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNjAzNzUpCisr
KyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiAr
MjQsNyBAQCBzZXQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L2JyaWRnZSIKICAgICAiJHtXRUJDT1JFX0RJUn0vYnJpZGdlL2MiCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L2NyeXB0byIKKyAgICAiJHtXRUJDT1JFX0RJUn0vY3J5cHRvL2tleXMiCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L2NzcyIKICAgICAiJHtXRUJDT1JFX0RJUn0vZG9tIgogICAgICIke1dFQkNP
UkVfRElSfS9kb20vZGVmYXVsdCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAx
NjAzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpA
QCAtMzMsNiArMzMsNyBAQCB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvYyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2pzYyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvY3J5cHRvIFwKKwktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNv
cmUvY3NzIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9kb20gXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJDb3JlL2RvbS9kZWZhdWx0IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9u
IDE2MDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMTc1LDYgKzE3NSw5IEBACiAgICAgPEZpbHRl
ciBJbmNsdWRlPSJjcnlwdG8iPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezAyMzM0NDI3LTE5
ZDYtNDRjOC1hNWQxLWUxYTY3YTljNDk5N308L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0
ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJjcnlwdG9ca2V5cyI+CisgICAgICA8VW5pcXVlSWRl
bnRpZmllcj57ZWRkMGZhYTYtYmI4Yy00YzBlLWIyOGEtMDY0YmRlN2UxZWJhfTwvVW5pcXVlSWRl
bnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9ImNzcyI+CiAgICAg
ICA8VW5pcXVlSWRlbnRpZmllcj57MzUzYjc2Y2EtYzQ5YS00MWRhLTg4ZGEtMzNkYzQyMjMyNWVm
fTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5
LmNwcAkocmV2aXNpb24gMTYwMzc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
cnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDYgKzMx
NywxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyCiAgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ01BQzoKICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OkFFU19HQ006CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpBRVNfQ0ZCOgorICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgTk9UX1NVUFBP
UlRFRF9FUlIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkFFU19LVzoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4oKTsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OkhNQUM6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpESDoK
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgpAQCAtMzI5LDggKzMz
Myw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXIKICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjoKICAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KCk7CiAgICAgfQog
fQogCkBAIC0zNTQsNiArMzU2LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXIKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DTUFDOgog
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0dDTToKICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DRkI6CisgICAgICAgIHNldERPTUV4Y2VwdGlv
bihleGVjLCBOT1RfU1VQUE9SVEVEX0VSUik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOgorICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPigpOwogICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzoKICAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OkRIOgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hB
XzE6CkBAIC0zNjYsOCArMzcyLDYgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UEJLREYyOgogICAg
ICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19L
VzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4oKTsKICAgICB9CiB9CiAKQEAgLTM4OCw2ICszOTIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyCiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpBRVNfQ01BQzoKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19H
Q006CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0ZCOgorICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOgogICAgICAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6CkBAIC00MDEsNyArNDA2
LDYgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcgogICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6Q09OQ0FUOgogICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6SEtERl9DVFI6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpQQktERjI6Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6
CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBOT1RfU1VQUE9SVEVEX0VSUik7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTQyNCw2ICs0MjgsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyCiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpBRVNfQ01BQzoKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkFFU19HQ006CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0ZCOgor
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOgogICAgICAgICBzZXRE
T01FeGNlcHRpb24oZXhlYywgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6CkBAIC00Mzcs
NyArNDQyLDYgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcgogICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6Q09OQ0FUOgogICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6SEtERl9DVFI6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpQQktERjI6Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpB
RVNfS1c6CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBOT1RfU1VQUE9SVEVEX0VSUik7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTQ1Nyw2ICs0NjEsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyCiAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpBRVNfQ01BQzoKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OkFFU19HQ006CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNf
Q0ZCOgorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOgogICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzoKICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkRIOgogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgTk9UX1NV
UFBPUlRFRF9FUlIpOwpAQCAtNDcwLDcgKzQ3NSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXIKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkNP
TkNBVDoKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhLREZfQ1RSOgogICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UEJLREYyOgotICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOgogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBA
IC00OTMsNiArNDk3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NNQUM6CiAgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfR0NNOgogICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6QUVTX0NGQjoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OkFFU19LVzoKICAgICAgICAgcmV0dXJuIGNyZWF0ZUFlc0tleUdlblBhcmFtcyhleGVj
LCB2YWx1ZSk7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOgogICAg
ICAgICByZXR1cm4gY3JlYXRlSG1hY0tleVBhcmFtcyhleGVjLCB2YWx1ZSk7CkBAIC01MDcsOCAr
NTEyLDYgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcgogICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UEJLREYyOgogICAgICAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVzoKLSAgICAgICAgcmV0
dXJuIGNyZWF0ZUFlc0tleUdlblBhcmFtcyhleGVjLCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC01
MjYsNiArNTI5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcgog
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NNQUM6CiAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfR0NNOgogICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6QUVTX0NGQjoKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OkFFU19LVzoKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6CiAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpESDoKICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgpAQCAtNTM2LDcgKzU0MCw2IEBAIHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXIKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OkNPTkNBVDoKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhL
REZfQ1RSOgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UEJLREYyOgotICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOgogICAgICAgICBzZXRET01F
eGNlcHRpb24oZXhlYywgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CkBAIC01NTYsNiArNTU5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NN
QUM6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfR0NNOgogICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NGQjoKKyAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OkFFU19LVzoKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OkhNQUM6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpESDoKICAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgpAQCAtNTY2LDcgKzU3MCw2
IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXIKICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkNPTkNBVDoKICAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OkhLREZfQ1RSOgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6UEJLREYyOgotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOgog
ICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC01OTAsNiArNTkzLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6QUVTX0NNQUM6CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpB
RVNfR0NNOgogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NGQjoKKyAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVzoKICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4oKTsKICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6CiAgICAgICAgIHJldHVybiBjcmVhdGVI
bWFjUGFyYW1zKGV4ZWMsIHZhbHVlKTsKQEAgLTYwNSw4ICs2MDksNiBAQCBzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyCiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpQQktERjI6CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBOT1RfU1VQUE9S
VEVEX0VSUik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6QUVTX0tXOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPigpOwogICAgIH0KIH0KIApAQCAtNjI0LDYgKzYyNiw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXIKICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DTUFDOgogICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6QUVTX0dDTToKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OkFFU19DRkI6CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6
CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOgogICAgIGNhc2UgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6REg6CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KCk7CkBAIC02MzcsOCArNjQwLDYgQEAgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcgogICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6UEJLREYyOgogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
Tk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4oKTsKICAgICB9CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAkocmV2aXNpb24gMTYwMzc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTEgKzI4LDE3
IEBACiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKICNpbmNsdWRlICJCbG9i
LmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5QUVTLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YU9j
dGV0U2VxdWVuY2UuaCIKKyNpbmNsdWRlICJDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5oIgor
I2luY2x1ZGUgIkNyeXB0b0tleUhNQUMuaCIKKyNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUgIkZp
bGVMaXN0LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCisj
aW5jbHVkZSAiSlNDcnlwdG9LZXkuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgog
I2luY2x1ZGUgIkpTRmlsZS5oIgogI2luY2x1ZGUgIkpTRmlsZUxpc3QuaCIKQEAgLTExNyw2ICsx
MjMsOSBAQCBlbnVtIFNlcmlhbGl6YXRpb25UYWcgewogICAgIFNldE9iamVjdFRhZyA9IDI5LAog
ICAgIE1hcE9iamVjdFRhZyA9IDMwLAogICAgIE5vbk1hcFByb3BlcnRpZXNUYWcgPSAzMSwKKyNp
ZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKyAgICBDcnlwdG9LZXlUYWcgPSAzMiwKKyNlbmRpZgog
ICAgIEVycm9yVGFnID0gMjU1CiB9OwogCkBAIC0xNTYsNiArMTY1LDcyIEBAIHN0YXRpYyB1bnNp
Z25lZCB0eXBlZEFycmF5RWxlbWVudFNpemUoQXIKIAogfQogCisjaWYgRU5BQkxFKFNVQlRMRV9D
UllQVE8pCisKK0VOVU1fQ0xBU1MoQ3J5cHRvS2V5Q2xhc3NTdWJ0YWcpIHsKKyAgICBITUFDID0g
MCwKKyAgICBBRVMgPSAxLAorICAgIFJTQSA9IDIKK307Citjb25zdCB1aW50OF90IGNyeXB0b0tl
eUNsYXNzU3VidGFnTWF4aW11bVZhbHVlID0gMjsKKworRU5VTV9DTEFTUyhDcnlwdG9LZXlBc3lt
bWV0cmljVHlwZVN1YnRhZykgeworICAgIFB1YmxpYyA9IDAsCisgICAgUHJpdmF0ZSA9IDEKK307
Citjb25zdCB1aW50OF90IGNyeXB0b0tleUFzeW1tZXRyaWNUeXBlU3VidGFnTWF4aW11bVZhbHVl
ID0gMTsKKworRU5VTV9DTEFTUyhDcnlwdG9LZXlVc2FnZVRhZykgeworICAgIEVuY3J5cHQgPSAw
LAorICAgIERlY3J5cHQgPSAxLAorICAgIFNpZ24gPSAyLAorICAgIFZlcmlmeSA9IDMsCisgICAg
RGVyaXZlS2V5ID0gNCwKKyAgICBEZXJpdmVCaXRzID0gNSwKKyAgICBXcmFwS2V5ID0gNiwKKyAg
ICBVbndyYXBLZXkgPSA3Cit9OworY29uc3QgdWludDhfdCBjcnlwdG9LZXlVc2FnZVRhZ01heGlt
dW1WYWx1ZSA9IDc7CisKK0VOVU1fQ0xBU1MoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZykg
eworICAgIFJTQUVTX1BLQ1MxX3YxXzUgPSAwLAorICAgIFJTQVNTQV9QS0NTMV92MV81ID0gMSwK
KyAgICBSU0FfUFNTID0gMiwKKyAgICBSU0FfT0FFUCA9IDMsCisgICAgRUNEU0EgPSA0LAorICAg
IEVDREggPSA1LAorICAgIEFFU19DVFIgPSA2LAorICAgIEFFU19DQkMgPSA3LAorICAgIEFFU19D
TUFDID0gOCwKKyAgICBBRVNfR0NNID0gOSwKKyAgICBBRVNfQ0ZCID0gMTAsCisgICAgQUVTX0tX
ID0gMTEsCisgICAgSE1BQyA9IDEyLAorICAgIERIID0gMTMsCisgICAgU0hBXzEgPSAxNCwKKyAg
ICBTSEFfMjI0ID0gMTUsCisgICAgU0hBXzI1NiA9IDE2LAorICAgIFNIQV8zODQgPSAxNywKKyAg
ICBTSEFfNTEyID0gMTgsCisgICAgQ09OQ0FUID0gMTksCisgICAgSEtERl9DVFIgPSAyMCwKKyAg
ICBQQktERjIgPSAyMSwKK307Citjb25zdCB1aW50OF90IGNyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXJUYWdNYXhpbXVtVmFsdWUgPSAyMTsKKworc3RhdGljIHVuc2lnbmVkIGNvdW50VXNhZ2VzKENy
eXB0b0tleVVzYWdlIHVzYWdlcykKK3sKKyAgICAvLyBGYXN0IGJpdCBjb3VudCBhbGdvcml0aG0g
Zm9yIHNwYXJzZSBiaXQgbWFwcy4KKyAgICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAgd2hpbGUg
KHVzYWdlcykgeworICAgICAgICB1c2FnZXMgPSB1c2FnZXMgJiAodXNhZ2VzIC0gMSk7CisgICAg
ICAgICsrY291bnQ7CisgICAgfQorICAgIHJldHVybiBjb3VudDsKK30KKworI2VuZGlmCisKIC8q
IEN1cnJlbnRWZXJzaW9uIHRyYWNrcyB0aGUgc2VyaWFsaXphdGlvbiB2ZXJzaW9uIHNvIHRoYXQg
cGVyc2lzdGVudCBzdG9yZXMKICAqIGFyZSBhYmxlIHRvIGNvcnJlY3RseSBiYWlsIG91dCBpbiB0
aGUgY2FzZSBvZiBlbmNvdW50ZXJpbmcgbmV3ZXIgZm9ybWF0cy4KICAqCkBAIC0yMTcsOCArMjky
LDkgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5vbkluZGV4UHJvcGVydGllcwogICogICAgfCBP
YmplY3RSZWZlcmVuY2UKICAqICAgIHwgTWVzc2FnZVBvcnRSZWZlcmVuY2VUYWcgPHZhbHVlOnVp
bnQzMl90PgogICogICAgfCBBcnJheUJ1ZmZlcgotICogICAgfCBBcnJheUJ1ZmZlclZpZXdUYWcg
QXJyYXlCdWZmZXJWaWV3U3VidGFnIDxieXRlT2Zmc2V0OnVpbnQzMl90PiA8Ynl0ZUxlbmdodDp1
aW50MzJfdD4gKEFycmF5QnVmZmVyIHwgT2JqZWN0UmVmZXJlbmNlKQorICogICAgfCBBcnJheUJ1
ZmZlclZpZXdUYWcgQXJyYXlCdWZmZXJWaWV3U3VidGFnIDxieXRlT2Zmc2V0OnVpbnQzMl90PiA8
Ynl0ZUxlbmd0aDp1aW50MzJfdD4gKEFycmF5QnVmZmVyIHwgT2JqZWN0UmVmZXJlbmNlKQogICog
ICAgfCBBcnJheUJ1ZmZlclRyYW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KKyAqICAgIHwgQ3J5
cHRvS2V5VGFnIDxleHRyYWN0YWJsZTppbnQzMl90PiA8dXNhZ2VzQ291bnQ6dWludDMyX3Q+IDx1
c2FnZXM6Ynl0ZXt1c2FnZXNDb3VudH0+IENyeXB0b0tleUNsYXNzU3VidGFnIChDcnlwdG9LZXlI
TUFDIHwgQ3J5cHRvS2V5QUVTIHwgQ3J5cHRvS2V5UlNBKQogICoKICAqIFN0cmluZyA6LQogICog
ICAgICBFbXB0eVN0cmluZ1RhZwpAQCAtMjU1LDYgKzMzMSwyOCBAQCBzdGF0aWMgY29uc3QgdW5z
aWduZWQgTm9uSW5kZXhQcm9wZXJ0aWVzCiAgKgogICogQXJyYXlCdWZmZXIgOi0KICAqICAgIEFy
cmF5QnVmZmVyVGFnIDxsZW5ndGg6dWludDMyX3Q+IDxjb250ZW50czpieXRle2xlbmd0aH0+Cisg
KgorICogQ3J5cHRvS2V5SE1BQyA6LQorICogICAgPGtleVNpemU6dWludDMyX3Q+IDxrZXlEYXRh
OmJ5dGV7a2V5U2l6ZX0+IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXJUYWcgLy8gQWxnb3JpdGht
IHRhZyBpbm5lciBoYXNoIGZ1bmN0aW9uLgorICoKKyAqIENyeXB0b0tleUFFUyA6LQorICogICAg
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZyA8a2V5U2l6ZTp1aW50MzJfdD4gPGtleURhdGE6
Ynl0ZXtrZXlTaXplfT4KKyAqCisgKiBDcnlwdG9LZXlSU0EgOi0KKyAqICAgIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXJUYWcgPGlzUmVzdHJpY3RlZFRvSGFzaDppbnQzMl90PiBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyVGFnPyBDcnlwdG9LZXlBc3ltbWV0cmljVHlwZVN1YnRhZyBDcnlwdG9L
ZXlSU0FQdWJsaWNDb21wb25lbnRzIENyeXB0b0tleVJTQVByaXZhdGVDb21wb25lbnRzPworICoK
KyAqIENyeXB0b0tleVJTQVB1YmxpY0NvbXBvbmVudHMgOi0KKyAqICAgIDxtb2R1bHVzU2l6ZTp1
aW50MzJfdD4gPG1vZHVsdXM6Ynl0ZXttb2R1bHVzU2l6ZX0+IDxleHBvbmVudFNpemU6dWludDMy
X3Q+IDxleHBvbmVudDpieXRle2V4cG9uZW50U2l6ZX0+CisgKgorICogQ3J5cHRvS2V5UlNBUHJp
dmF0ZUNvbXBvbmVudHMgOi0KKyAqICAgIDxwcml2YXRlRXhwb25lbnRTaXplOnVpbnQzMl90PiA8
cHJpdmF0ZUV4cG9uZW50OmJ5dGV7cHJpdmF0ZUV4cG9uZW50U2l6ZX0+IDxwcmltZUNvdW50OnVp
bnQzMl90PiBGaXJzdFByaW1lSW5mbz8gUHJpbWVJbmZve3ByaW1lQ291bnQgLSAxfQorICoKKyAq
IC8vIENSVCBkYXRhIGNvdWxkIGJlIGNvbXB1dGVkIGZyb20gcHJpbWUgZmFjdG9ycy4gSXQgaXMg
b25seSBzZXJpYWxpemVkIHRvIHJldXNlIGEgY29kZSBwYXRoIHRoYXQncyBuZWVkZWQgZm9yIEpX
Sy4KKyAqIEZpcnN0UHJpbWVJbmZvIDotCisgKiAgICA8ZmFjdG9yU2l6ZTp1aW50MzJfdD4gPGZh
Y3RvcjpieXRle2ZhY3RvclNpemV9PiA8Y3J0RXhwb25lbnRTaXplOnVpbnQzMl90PiA8Y3J0RXhw
b25lbnQ6Ynl0ZXtjcnRFeHBvbmVudFNpemV9PgorICoKKyAqIFByaW1lSW5mbyA6LQorICogICAg
PGZhY3RvclNpemU6dWludDMyX3Q+IDxmYWN0b3I6Ynl0ZXtmYWN0b3JTaXplfT4gPGNydEV4cG9u
ZW50U2l6ZTp1aW50MzJfdD4gPGNydEV4cG9uZW50OmJ5dGV7Y3J0RXhwb25lbnRTaXplfT4gPGNy
dENvZWZmaWNpZW50U2l6ZTp1aW50MzJfdD4gPGNydENvZWZmaWNpZW50OmJ5dGV7Y3J0Q29lZmZp
Y2llbnRTaXplfT4KICAqLwogCiB0eXBlZGVmIHBhaXI8SlNDOjpKU1ZhbHVlLCBTZXJpYWxpemF0
aW9uUmV0dXJuQ29kZT4gRGVzZXJpYWxpemF0aW9uUmVzdWx0OwpAQCAtNzI0LDYgKzgyMiwxMyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJlY29yZE9iamVjdChvYmopOwogICAgICAgICAg
ICAgICAgIHJldHVybiBzdWNjZXNzOwogICAgICAgICAgICAgfQorI2lmIEVOQUJMRShTVUJUTEVf
Q1JZUFRPKQorICAgICAgICAgICAgaWYgKENyeXB0b0tleSoga2V5ID0gdG9DcnlwdG9LZXkob2Jq
KSkgeworICAgICAgICAgICAgICAgIHdyaXRlKENyeXB0b0tleVRhZyk7CisgICAgICAgICAgICAg
ICAgd3JpdGUoa2V5KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IH0KKyNlbmRpZgogCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTc0
Miw2ICs4NDcsMjggQEAgcHJpdmF0ZToKICAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW48dWludDhf
dD4obV9idWZmZXIsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHRhZykpOwogICAgIH0KIAorI2lmIEVO
QUJMRShTVUJUTEVfQ1JZUFRPKQorICAgIHZvaWQgd3JpdGUoQ3J5cHRvS2V5Q2xhc3NTdWJ0YWcg
dGFnKQorICAgIHsKKyAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW48dWludDhfdD4obV9idWZmZXIs
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHRhZykpOworICAgIH0KKworICAgIHZvaWQgd3JpdGUoQ3J5
cHRvS2V5QXN5bW1ldHJpY1R5cGVTdWJ0YWcgdGFnKQorICAgIHsKKyAgICAgICAgd3JpdGVMaXR0
bGVFbmRpYW48dWludDhfdD4obV9idWZmZXIsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHRhZykpOwor
ICAgIH0KKworICAgIHZvaWQgd3JpdGUoQ3J5cHRvS2V5VXNhZ2VUYWcgdGFnKQorICAgIHsKKyAg
ICAgICAgd3JpdGVMaXR0bGVFbmRpYW48dWludDhfdD4obV9idWZmZXIsIHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHRhZykpOworICAgIH0KKworICAgIHZvaWQgd3JpdGUoQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllclRhZyB0YWcpCisgICAgeworICAgICAgICB3cml0ZUxpdHRsZUVuZGlhbjx1aW50OF90
PihtX2J1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDhfdD4odGFnKSk7CisgICAgfQorI2VuZGlmCisK
ICAgICB2b2lkIHdyaXRlKHVpbnQ4X3QgYykKICAgICB7CiAgICAgICAgIHdyaXRlTGl0dGxlRW5k
aWFuKG1fYnVmZmVyLCBjKTsKQEAgLTgzNCw2ICs5NjEsMTMgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHdyaXRlKElkZW50aWZpZXIobV9leGVjLCBzdHIpKTsKICAgICB9CiAKKyAgICB2b2lkIHdy
aXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKQorICAgIHsKKyAgICAgICAgdWludDMy
X3Qgc2l6ZSA9IHZlY3Rvci5zaXplKCk7CisgICAgICAgIHdyaXRlKHNpemUpOworICAgICAgICB3
cml0ZUxpdHRsZUVuZGlhbihtX2J1ZmZlciwgdmVjdG9yLmRhdGEoKSwgc2l6ZSk7CisgICAgfQor
CiAgICAgdm9pZCB3cml0ZShjb25zdCBGaWxlKiBmaWxlKQogICAgIHsKICAgICAgICAgbV9ibG9i
VVJMcy5hcHBlbmQoZmlsZS0+dXJsKCkpOwpAQCAtODQyLDYgKzk3NiwxNjYgQEAgcHJpdmF0ZToK
ICAgICAgICAgd3JpdGUoZmlsZS0+dHlwZSgpKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoU1VCVExF
X0NSWVBUTykKKyAgICB2b2lkIHdyaXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3Jp
dGhtKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChhbGdvcml0aG0pIHsKKyAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81OgorICAgICAgICAgICAg
d3JpdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZzo6UlNBRVNfUEtDUzFfdjFfNSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpSU0FTU0FfUEtDUzFfdjFfNToKKyAgICAgICAgICAgIHdyaXRlKENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXJUYWc6OlJTQVNTQV9QS0NTMV92MV81KTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9QU1M6CisgICAgICAgICAg
ICB3cml0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyVGFnOjpSU0FfUFNTKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9P
QUVQOgorICAgICAgICAgICAgd3JpdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZzo6UlNB
X09BRVApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6RUNEU0E6CisgICAgICAgICAgICB3cml0ZShDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyVGFnOjpFQ0RTQSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RIOgorICAgICAgICAgICAgd3JpdGUoQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllclRhZzo6RUNESCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ1RSOgorICAgICAgICAgICAgd3Jp
dGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZzo6QUVTX0NUUik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0JDOgor
ICAgICAgICAgICAgd3JpdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZzo6QUVTX0NCQyk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpBRVNfQ01BQzoKKyAgICAgICAgICAgIHdyaXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXJUYWc6OkFFU19DTUFDKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19HQ006CisgICAgICAgICAgICB3cml0ZShDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyVGFnOjpBRVNfR0NNKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DRkI6CisgICAgICAgICAg
ICB3cml0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyVGFnOjpBRVNfQ0ZCKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19L
VzoKKyAgICAgICAgICAgIHdyaXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXJUYWc6OkFFU19L
Vyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpITUFDOgorICAgICAgICAgICAgd3JpdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
clRhZzo6SE1BQyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpESDoKKyAgICAgICAgICAgIHdyaXRlKENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXJUYWc6OkRIKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgorICAgICAgICAgICAgd3JpdGUoQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllclRhZzo6U0hBXzEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoKKyAgICAgICAgICAgIHdy
aXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXJUYWc6OlNIQV8yMjQpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NjoK
KyAgICAgICAgICAgIHdyaXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXJUYWc6OlNIQV8yNTYp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6U0hBXzM4NDoKKyAgICAgICAgICAgIHdyaXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXJUYWc6OlNIQV8zODQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKKyAgICAgICAgICAgIHdyaXRlKENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXJUYWc6OlNIQV81MTIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6Q09OQ0FUOgorICAgICAgICAgICAg
d3JpdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZzo6Q09OQ0FUKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhLREZfQ1RS
OgorICAgICAgICAgICAgd3JpdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZzo6SEtERl9D
VFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6UEJLREYyOgorICAgICAgICAgICAgd3JpdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
ZmllclRhZzo6UEJLREYyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
CisgICAgdm9pZCB3cml0ZShDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6VHlwZSB0eXBlKQor
ICAgIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgQ3J5cHRvS2V5RGF0
YVJTQUNvbXBvbmVudHM6OlR5cGU6OlB1YmxpYzoKKyAgICAgICAgICAgIHdyaXRlKENyeXB0b0tl
eUFzeW1tZXRyaWNUeXBlU3VidGFnOjpQdWJsaWMpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBjYXNlIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpUeXBlOjpQcml2YXRlOgorICAg
ICAgICAgICAgd3JpdGUoQ3J5cHRvS2V5QXN5bW1ldHJpY1R5cGVTdWJ0YWc6OlByaXZhdGUpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCB3cml0ZShj
b25zdCBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyYga2V5KQorICAgIHsKKyAgICAgICAgd3Jp
dGUoa2V5LnR5cGUoKSk7CisgICAgICAgIHdyaXRlKGtleS5tb2R1bHVzKCkpOworICAgICAgICB3
cml0ZShrZXkuZXhwb25lbnQoKSk7CisgICAgICAgIGlmIChrZXkudHlwZSgpID09IENyeXB0b0tl
eURhdGFSU0FDb21wb25lbnRzOjpUeXBlOjpQdWJsaWMpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgd3JpdGUoa2V5LnByaXZhdGVFeHBvbmVudCgpKTsKKworICAgICAgICB1bnNpZ25l
ZCBwcmltZUNvdW50ID0ga2V5Lmhhc0FkZGl0aW9uYWxQcml2YXRlS2V5UGFyYW1ldGVycygpID8g
a2V5Lm90aGVyUHJpbWVJbmZvcygpLnNpemUoKSArIDIgOiAwOworICAgICAgICB3cml0ZShwcmlt
ZUNvdW50KTsKKyAgICAgICAgaWYgKCFwcmltZUNvdW50KQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHdyaXRlKGtleS5maXJzdFByaW1lSW5mbygpLnByaW1lRmFjdG9yKTsKKyAgICAg
ICAgd3JpdGUoa2V5LmZpcnN0UHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25lbnQpOworICAgICAg
ICB3cml0ZShrZXkuc2Vjb25kUHJpbWVJbmZvKCkucHJpbWVGYWN0b3IpOworICAgICAgICB3cml0
ZShrZXkuc2Vjb25kUHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25lbnQpOworICAgICAgICB3cml0
ZShrZXkuc2Vjb25kUHJpbWVJbmZvKCkuZmFjdG9yQ1JUQ29lZmZpY2llbnQpOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAyOyBpIDwgcHJpbWVDb3VudDsgKytpKSB7CisgICAgICAgICAgICB3
cml0ZShrZXkub3RoZXJQcmltZUluZm9zKClbaV0ucHJpbWVGYWN0b3IpOworICAgICAgICAgICAg
d3JpdGUoa2V5Lm90aGVyUHJpbWVJbmZvcygpW2ldLmZhY3RvckNSVEV4cG9uZW50KTsKKyAgICAg
ICAgICAgIHdyaXRlKGtleS5vdGhlclByaW1lSW5mb3MoKVtpXS5mYWN0b3JDUlRDb2VmZmljaWVu
dCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHdyaXRlKGNvbnN0IENyeXB0b0tleSog
a2V5KQorICAgIHsKKyAgICAgICAgd3JpdGUoa2V5LT5leHRyYWN0YWJsZSgpKTsKKworICAgICAg
ICBDcnlwdG9LZXlVc2FnZSB1c2FnZXMgPSBrZXktPnVzYWdlc0JpdG1hcCgpOworICAgICAgICB3
cml0ZShjb3VudFVzYWdlcyh1c2FnZXMpKTsKKyAgICAgICAgaWYgKHVzYWdlcyAmIENyeXB0b0tl
eVVzYWdlRW5jcnlwdCkKKyAgICAgICAgICAgIHdyaXRlKENyeXB0b0tleVVzYWdlVGFnOjpFbmNy
eXB0KTsKKyAgICAgICAgaWYgKHVzYWdlcyAmIENyeXB0b0tleVVzYWdlRGVjcnlwdCkKKyAgICAg
ICAgICAgIHdyaXRlKENyeXB0b0tleVVzYWdlVGFnOjpEZWNyeXB0KTsKKyAgICAgICAgaWYgKHVz
YWdlcyAmIENyeXB0b0tleVVzYWdlU2lnbikKKyAgICAgICAgICAgIHdyaXRlKENyeXB0b0tleVVz
YWdlVGFnOjpTaWduKTsKKyAgICAgICAgaWYgKHVzYWdlcyAmIENyeXB0b0tleVVzYWdlVmVyaWZ5
KQorICAgICAgICAgICAgd3JpdGUoQ3J5cHRvS2V5VXNhZ2VUYWc6OlZlcmlmeSk7CisgICAgICAg
IGlmICh1c2FnZXMgJiBDcnlwdG9LZXlVc2FnZURlcml2ZUtleSkKKyAgICAgICAgICAgIHdyaXRl
KENyeXB0b0tleVVzYWdlVGFnOjpEZXJpdmVLZXkpOworICAgICAgICBpZiAodXNhZ2VzICYgQ3J5
cHRvS2V5VXNhZ2VEZXJpdmVCaXRzKQorICAgICAgICAgICAgd3JpdGUoQ3J5cHRvS2V5VXNhZ2VU
YWc6OkRlcml2ZUJpdHMpOworICAgICAgICBpZiAodXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VXcmFw
S2V5KQorICAgICAgICAgICAgd3JpdGUoQ3J5cHRvS2V5VXNhZ2VUYWc6OldyYXBLZXkpOworICAg
ICAgICBpZiAodXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VVbndyYXBLZXkpCisgICAgICAgICAgICB3
cml0ZShDcnlwdG9LZXlVc2FnZVRhZzo6VW53cmFwS2V5KTsKKworICAgICAgICBzd2l0Y2ggKGtl
eS0+a2V5Q2xhc3MoKSkgeworICAgICAgICBjYXNlIENyeXB0b0tleUNsYXNzOjpITUFDOgorICAg
ICAgICAgICAgd3JpdGUoQ3J5cHRvS2V5Q2xhc3NTdWJ0YWc6OkhNQUMpOworICAgICAgICAgICAg
d3JpdGUodG9DcnlwdG9LZXlITUFDKGtleSktPmtleSgpKTsKKyAgICAgICAgICAgIHdyaXRlKHRv
Q3J5cHRvS2V5SE1BQyhrZXkpLT5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0b0tleUNsYXNzOjpBRVM6CisgICAgICAgICAg
ICB3cml0ZShDcnlwdG9LZXlDbGFzc1N1YnRhZzo6QUVTKTsKKyAgICAgICAgICAgIHdyaXRlKGtl
eS0+YWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIHdyaXRlKHRvQ3J5cHRvS2V5
QUVTKGtleSktPmtleSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0
b0tleUNsYXNzOjpSU0E6CisgICAgICAgICAgICB3cml0ZShDcnlwdG9LZXlDbGFzc1N1YnRhZzo6
UlNBKTsKKyAgICAgICAgICAgIHdyaXRlKGtleS0+YWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAg
ICAgICAgICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaDsKKyAgICAgICAgICAgIGJv
b2wgaXNSZXN0cmljdGVkVG9IYXNoID0gdG9DcnlwdG9LZXlSU0Eoa2V5KS0+aXNSZXN0cmljdGVk
VG9IYXNoKGhhc2gpOworICAgICAgICAgICAgd3JpdGUoaXNSZXN0cmljdGVkVG9IYXNoKTsKKyAg
ICAgICAgICAgIGlmIChpc1Jlc3RyaWN0ZWRUb0hhc2gpCisgICAgICAgICAgICAgICAgd3JpdGUo
aGFzaCk7CisgICAgICAgICAgICB3cml0ZSh0b0NyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKCpr
ZXktPmV4cG9ydERhdGEoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
CisjZW5kaWYKKwogICAgIHZvaWQgd3JpdGUoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKQogICAgIHsKICAgICAgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CkBA
IC0xNDUzLDYgKzE3NDcsMzA3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBi
b29sIHJlYWQoVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bHQpCisgICAgeworICAgICAgICBBU1NFUlQo
cmVzdWx0LmlzRW1wdHkoKSk7CisgICAgICAgIHVpbnQzMl90IHNpemU7CisgICAgICAgIGlmICgh
cmVhZChzaXplKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKG1fcHRy
ICsgc2l6ZSA+IG1fZW5kKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXN1
bHQuYXBwZW5kKG1fcHRyLCBzaXplKTsKKyAgICAgICAgbV9wdHIgKz0gc2l6ZTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCisgICAgYm9v
bCByZWFkKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXImIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IHVpbnQ4X3QgYWxnb3JpdGhtVGFnOworICAgICAgICBpZiAoIXJlYWQoYWxnb3JpdGhtVGFnKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGFsZ29yaXRobVRhZyA+IGNy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXJUYWdNYXhpbXVtVmFsdWUpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8Q3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllclRhZz4oYWxnb3JpdGhtVGFnKSkgeworICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXJUYWc6OlJTQUVTX1BLQ1MxX3YxXzU6CisgICAgICAgICAgICByZXN1bHQgPSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81OworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZzo6UlNBU1NB
X1BLQ1MxX3YxXzU6CisgICAgICAgICAgICByZXN1bHQgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpSU0FTU0FfUEtDUzFfdjFfNTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXJUYWc6OlJTQV9QU1M6CisgICAgICAgICAgICByZXN1
bHQgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfUFNTOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZzo6UlNBX09BRVA6
CisgICAgICAgICAgICByZXN1bHQgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfT0FF
UDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXJUYWc6OkVDRFNBOgorICAgICAgICAgICAgcmVzdWx0ID0gQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6RUNEU0E7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyVGFnOjpFQ0RIOgorICAgICAgICAgICAgcmVzdWx0ID0gQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXJUYWc6OkFFU19DVFI6CisgICAgICAgICAgICBy
ZXN1bHQgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ1RSOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZzo6QUVTX0NC
QzoKKyAgICAgICAgICAgIHJlc3VsdCA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19D
QkM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyVGFnOjpBRVNfQ01BQzoKKyAgICAgICAgICAgIHJlc3VsdCA9IENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OkFFU19DTUFDOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZzo6QUVTX0dDTToKKyAgICAgICAgICAgIHJlc3Vs
dCA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19HQ007CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyVGFnOjpBRVNfQ0ZCOgor
ICAgICAgICAgICAgcmVzdWx0ID0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NGQjsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXJUYWc6OkFFU19LVzoKKyAgICAgICAgICAgIHJlc3VsdCA9IENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OkFFU19LVzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXJUYWc6OkhNQUM6CisgICAgICAgICAgICByZXN1bHQgPSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpITUFDOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZzo6REg6CisgICAgICAgICAgICByZXN1bHQg
PSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpESDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXJUYWc6OlNIQV8xOgorICAgICAgICAg
ICAgcmVzdWx0ID0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyVGFnOjpTSEFf
MjI0OgorICAgICAgICAgICAgcmVzdWx0ID0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hB
XzIyNDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXJUYWc6OlNIQV8yNTY6CisgICAgICAgICAgICByZXN1bHQgPSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpTSEFfMjU2OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllclRhZzo6U0hBXzM4NDoKKyAgICAgICAgICAgIHJlc3Vs
dCA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQ7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyVGFnOjpTSEFfNTEyOgor
ICAgICAgICAgICAgcmVzdWx0ID0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXJUYWc6OkNPTkNBVDoKKyAgICAgICAgICAgIHJlc3VsdCA9IENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OkNPTkNBVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXJUYWc6OkhLREZfQ1RSOgorICAgICAgICAgICAgcmVzdWx0ID0gQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SEtERl9DVFI7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyVGFnOjpQQktERjI6CisgICAgICAg
ICAgICByZXN1bHQgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpQQktERjI7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICBib29sIHJlYWQoQ3J5cHRvS2V5Q2xhc3NTdWJ0YWcmIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IHVpbnQ4X3QgdGFnOworICAgICAgICBpZiAoIXJlYWQodGFnKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgaWYgKHRhZyA+IGNyeXB0b0tleUNsYXNzU3VidGFnTWF4aW11bVZh
bHVlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXN1bHQgPSBzdGF0aWNf
Y2FzdDxDcnlwdG9LZXlDbGFzc1N1YnRhZz4odGFnKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgYm9vbCByZWFkKENyeXB0b0tleVVzYWdlVGFnJiByZXN1bHQpCisgICAgewor
ICAgICAgICB1aW50OF90IHRhZzsKKyAgICAgICAgaWYgKCFyZWFkKHRhZykpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICh0YWcgPiBjcnlwdG9LZXlVc2FnZVRhZ01heGlt
dW1WYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVzdWx0ID0gc3Rh
dGljX2Nhc3Q8Q3J5cHRvS2V5VXNhZ2VUYWc+KHRhZyk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIGJvb2wgcmVhZChDcnlwdG9LZXlBc3ltbWV0cmljVHlwZVN1YnRhZyYgcmVz
dWx0KQorICAgIHsKKyAgICAgICAgdWludDhfdCB0YWc7CisgICAgICAgIGlmICghcmVhZCh0YWcp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAodGFnID4gY3J5cHRvS2V5
QXN5bW1ldHJpY1R5cGVTdWJ0YWdNYXhpbXVtVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PENyeXB0b0tleUFzeW1tZXRyaWNUeXBl
U3VidGFnPih0YWcpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIHJl
YWRITUFDS2V5KGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlIHVzYWdlcywgUmVmUHRy
PENyeXB0b0tleT4mIHJlc3VsdCkKKyAgICB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBrZXlE
YXRhOworICAgICAgICBpZiAoIXJlYWQoa2V5RGF0YSkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaDsKKyAgICAgICAgaWYg
KCFyZWFkKGhhc2gpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXN1bHQg
PSBDcnlwdG9LZXlITUFDOjpjcmVhdGUoa2V5RGF0YSwgaGFzaCwgZXh0cmFjdGFibGUsIHVzYWdl
cyk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJvb2wgcmVhZEFFU0tleShi
b29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZXMsIFJlZlB0cjxDcnlwdG9LZXk+
JiByZXN1bHQpCisgICAgeworICAgICAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29y
aXRobTsKKyAgICAgICAgaWYgKCFyZWFkKGFsZ29yaXRobSkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGlmICghQ3J5cHRvS2V5QUVTOjppc1ZhbGlkQUVTQWxnb3JpdGhtKGFs
Z29yaXRobSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIFZlY3Rvcjx1aW50
OF90PiBrZXlEYXRhOworICAgICAgICBpZiAoIXJlYWQoa2V5RGF0YSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUFFUzo6Y3JlYXRlKGFsZ29y
aXRobSwga2V5RGF0YSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIGJvb2wgcmVhZFJTQUtleShib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9L
ZXlVc2FnZSB1c2FnZXMsIFJlZlB0cjxDcnlwdG9LZXk+JiByZXN1bHQpCisgICAgeworICAgICAg
ICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobTsKKyAgICAgICAgaWYgKCFyZWFk
KGFsZ29yaXRobSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaW50MzJf
dCBpc1Jlc3RyaWN0ZWRUb0hhc2g7CisgICAgICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aGFzaDsKKyAgICAgICAgaWYgKCFyZWFkKGlzUmVzdHJpY3RlZFRvSGFzaCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChpc1Jlc3RyaWN0ZWRUb0hhc2ggJiYgIXJlYWQo
aGFzaCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgQ3J5cHRvS2V5QXN5
bW1ldHJpY1R5cGVTdWJ0YWcgdHlwZTsKKyAgICAgICAgaWYgKCFyZWFkKHR5cGUpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBtb2R1bHVzOwor
ICAgICAgICBpZiAoIXJlYWQobW9kdWx1cykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBleHBvbmVudDsKKyAgICAgICAgaWYgKCFyZWFkKGV4cG9u
ZW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAodHlwZSA9PSBD
cnlwdG9LZXlBc3ltbWV0cmljVHlwZVN1YnRhZzo6UHVibGljKSB7CisgICAgICAgICAgICBhdXRv
IGtleURhdGEgPSBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6Y3JlYXRlUHVibGljKG1vZHVs
dXMsIGV4cG9uZW50KTsKKyAgICAgICAgICAgIGF1dG8ga2V5ID0gQ3J5cHRvS2V5UlNBOjpjcmVh
dGUoYWxnb3JpdGhtLCAqa2V5RGF0YSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgICAgICAg
ICBpZiAoaXNSZXN0cmljdGVkVG9IYXNoKQorICAgICAgICAgICAgICAgIGtleS0+cmVzdHJpY3RU
b0hhc2goaGFzaCk7CisgICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1vdmUoa2V5KTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHByaXZhdGVFeHBvbmVudDsKKyAgICAgICAgaWYgKCFyZWFkKHByaXZhdGVFeHBvbmVudCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdWludDMyX3QgcHJpbWVDb3VudDsK
KyAgICAgICAgaWYgKCFyZWFkKHByaW1lQ291bnQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIGlmICghcHJpbWVDb3VudCkgeworICAgICAgICAgICAgYXV0byBrZXlEYXRh
ID0gQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGUobW9kdWx1cywgZXhw
b25lbnQsIHByaXZhdGVFeHBvbmVudCk7CisgICAgICAgICAgICBhdXRvIGtleSA9IENyeXB0b0tl
eVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgKmtleURhdGEsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwor
ICAgICAgICAgICAgaWYgKGlzUmVzdHJpY3RlZFRvSGFzaCkKKyAgICAgICAgICAgICAgICBrZXkt
PnJlc3RyaWN0VG9IYXNoKGhhc2gpOworICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptb3ZlKGtl
eSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChw
cmltZUNvdW50IDwgMikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBDcnlw
dG9LZXlEYXRhUlNBQ29tcG9uZW50czo6UHJpbWVJbmZvIGZpcnN0UHJpbWVJbmZvOworICAgICAg
ICBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6UHJpbWVJbmZvIHNlY29uZFByaW1lSW5mbzsK
KyAgICAgICAgVmVjdG9yPENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpQcmltZUluZm8+IG90
aGVyUHJpbWVJbmZvcyhwcmltZUNvdW50IC0gMik7CisKKyAgICAgICAgaWYgKCFyZWFkKGZpcnN0
UHJpbWVJbmZvLnByaW1lRmFjdG9yKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgaWYgKCFyZWFkKGZpcnN0UHJpbWVJbmZvLmZhY3RvckNSVEV4cG9uZW50KSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFyZWFkKHNlY29uZFByaW1lSW5mby5wcmlt
ZUZhY3RvcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghcmVhZChz
ZWNvbmRQcmltZUluZm8uZmFjdG9yQ1JURXhwb25lbnQpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBpZiAoIXJlYWQoc2Vjb25kUHJpbWVJbmZvLmZhY3RvckNSVENvZWZmaWNp
ZW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMjsgaSA8IHByaW1lQ291bnQ7ICsraSkgeworICAgICAgICAgICAgaWYgKCFyZWFkKG90aGVy
UHJpbWVJbmZvc1tpXS5wcmltZUZhY3RvcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgaWYgKCFyZWFkKG90aGVyUHJpbWVJbmZvc1tpXS5mYWN0b3JDUlRFeHBv
bmVudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFy
ZWFkKG90aGVyUHJpbWVJbmZvc1tpXS5mYWN0b3JDUlRDb2VmZmljaWVudCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBrZXlEYXRhID0g
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGVXaXRoQWRkaXRpb25hbERh
dGEobW9kdWx1cywgZXhwb25lbnQsIHByaXZhdGVFeHBvbmVudCwgZmlyc3RQcmltZUluZm8sIHNl
Y29uZFByaW1lSW5mbywgb3RoZXJQcmltZUluZm9zKTsKKyAgICAgICAgYXV0byBrZXkgPSBDcnlw
dG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sICprZXlEYXRhLCBleHRyYWN0YWJsZSwgdXNhZ2Vz
KTsKKyAgICAgICAgaWYgKGlzUmVzdHJpY3RlZFRvSGFzaCkKKyAgICAgICAgICAgIGtleS0+cmVz
dHJpY3RUb0hhc2goaGFzaCk7CisgICAgICAgIHJlc3VsdCA9IHN0ZDo6bW92ZShrZXkpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIHJlYWRDcnlwdG9LZXkoSlNWYWx1
ZSYgY3J5cHRvS2V5KQorICAgIHsKKyAgICAgICAgaW50MzJfdCBleHRyYWN0YWJsZTsKKyAgICAg
ICAgaWYgKCFyZWFkKGV4dHJhY3RhYmxlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICB1aW50MzJfdCB1c2FnZXNDb3VudDsKKyAgICAgICAgaWYgKCFyZWFkKHVzYWdlc0Nv
dW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBDcnlwdG9LZXlVc2Fn
ZSB1c2FnZXMgPSAwOworICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgdXNhZ2VzQ291
bnQ7ICsraSkgeworICAgICAgICAgICAgQ3J5cHRvS2V5VXNhZ2VUYWcgdXNhZ2U7CisgICAgICAg
ICAgICBpZiAoIXJlYWQodXNhZ2UpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIHN3aXRjaCAodXNhZ2UpIHsKKyAgICAgICAgICAgIGNhc2UgQ3J5cHRvS2V5VXNh
Z2VUYWc6OkVuY3J5cHQ6CisgICAgICAgICAgICAgICAgdXNhZ2VzIHw9IENyeXB0b0tleVVzYWdl
RW5jcnlwdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ3J5cHRv
S2V5VXNhZ2VUYWc6OkRlY3J5cHQ6CisgICAgICAgICAgICAgICAgdXNhZ2VzIHw9IENyeXB0b0tl
eVVzYWdlRGVjcnlwdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Q3J5cHRvS2V5VXNhZ2VUYWc6OlNpZ246CisgICAgICAgICAgICAgICAgdXNhZ2VzIHw9IENyeXB0
b0tleVVzYWdlU2lnbjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Q3J5cHRvS2V5VXNhZ2VUYWc6OlZlcmlmeToKKyAgICAgICAgICAgICAgICB1c2FnZXMgfD0gQ3J5
cHRvS2V5VXNhZ2VWZXJpZnk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIENyeXB0b0tleVVzYWdlVGFnOjpEZXJpdmVLZXk6CisgICAgICAgICAgICAgICAgdXNhZ2Vz
IHw9IENyeXB0b0tleVVzYWdlRGVyaXZlS2V5OworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBDcnlwdG9LZXlVc2FnZVRhZzo6RGVyaXZlQml0czoKKyAgICAgICAgICAg
ICAgICB1c2FnZXMgfD0gQ3J5cHRvS2V5VXNhZ2VEZXJpdmVCaXRzOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBDcnlwdG9LZXlVc2FnZVRhZzo6V3JhcEtleToKKyAg
ICAgICAgICAgICAgICB1c2FnZXMgfD0gQ3J5cHRvS2V5VXNhZ2VXcmFwS2V5OworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDcnlwdG9LZXlVc2FnZVRhZzo6VW53cmFw
S2V5OgorICAgICAgICAgICAgICAgIHVzYWdlcyB8PSBDcnlwdG9LZXlVc2FnZVVud3JhcEtleTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIENyeXB0b0tleUNsYXNzU3VidGFnIGNyeXB0b0tleUNsYXNzOworICAgICAgICBpZiAoIXJl
YWQoY3J5cHRvS2V5Q2xhc3MpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBS
ZWZQdHI8Q3J5cHRvS2V5PiByZXN1bHQ7CisgICAgICAgIHN3aXRjaCAoY3J5cHRvS2V5Q2xhc3Mp
IHsKKyAgICAgICAgY2FzZSBDcnlwdG9LZXlDbGFzc1N1YnRhZzo6SE1BQzoKKyAgICAgICAgICAg
IGlmICghcmVhZEhNQUNLZXkoZXh0cmFjdGFibGUsIHVzYWdlcywgcmVzdWx0KSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBD
cnlwdG9LZXlDbGFzc1N1YnRhZzo6QUVTOgorICAgICAgICAgICAgaWYgKCFyZWFkQUVTS2V5KGV4
dHJhY3RhYmxlLCB1c2FnZXMsIHJlc3VsdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3J5cHRvS2V5Q2xhc3NTdWJ0YWc6
OlJTQToKKyAgICAgICAgICAgIGlmICghcmVhZFJTQUtleShleHRyYWN0YWJsZSwgdXNhZ2VzLCBy
ZXN1bHQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNyeXB0b0tleSA9IGdldEpTVmFsdWUocmVzdWx0LmdldCgp
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisKICAgICB0ZW1wbGF0ZTxj
bGFzcyBUPgogICAgIEpTVmFsdWUgZ2V0SlNWYWx1ZShUKiBuYXRpdmVPYmopCiAgICAgewpAQCAt
MTY1OCw2ICsyMjUzLDE3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVu
ZChhcnJheUJ1ZmZlclZpZXcpOwogICAgICAgICAgICAgcmV0dXJuIGFycmF5QnVmZmVyVmlldzsK
ICAgICAgICAgfQorI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorICAgICAgICBjYXNlIENyeXB0
b0tleVRhZzogeworICAgICAgICAgICAgSlNWYWx1ZSBjcnlwdG9LZXk7CisgICAgICAgICAgICBp
ZiAoIXJlYWRDcnlwdG9LZXkoY3J5cHRvS2V5KSkgeworICAgICAgICAgICAgICAgIGZhaWwoKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgbV9nY0J1ZmZlci5hcHBlbmQoY3J5cHRvS2V5KTsKKyAgICAgICAgICAgIHJldHVybiBj
cnlwdG9LZXk7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgbV9wdHItLTsgLy8gUHVzaCB0aGUgdGFnIGJhY2sKICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyLmgJKHJldmlzaW9uIDE2MDM3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9DcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQy
LDcgQEAgRU5VTV9DTEFTUyhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyKSB7CiAgICAgQUVTX0NN
QUMsCiAgICAgQUVTX0dDTSwKICAgICBBRVNfQ0ZCLAorICAgIEFFU19LVywKICAgICBITUFDLAog
ICAgIERILAogICAgIFNIQV8xLApAQCAtNTEsOCArNTIsNyBAQCBFTlVNX0NMQVNTKENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIpIHsKICAgICBTSEFfNTEyLAogICAgIENPTkNBVCwKICAgICBIS0RG
X0NUUiwKLSAgICBQQktERjIsCi0gICAgQUVTX0tXIC8vIE5vdCB5ZXQgc3RhbmRhcmRpemVkLgor
ICAgIFBCS0RGMgogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAxNjAzNzUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSwxMSArMzUsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDcnlwdG9BbGdvcml0
aG1SZWdpc3RyeSYgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNoYXJlZCgpCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5LCByZWdpc3RyeSwgKCkpOwogICAgIHJldHVybiByZWdpc3RyeTsKIH0KIAor
c3RhdGljIE11dGV4JiByZWdpc3RyeU11dGV4KCkKK3sKKyAgICBBdG9taWNhbGx5SW5pdGlhbGl6
ZWRTdGF0aWMoTXV0ZXgmLCBtdXRleCA9ICpuZXcgTXV0ZXgpOworICAgIHJldHVybiBtdXRleDsK
K30KKwogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5KCkK
IHsKICAgICBwbGF0Zm9ybVJlZ2lzdGVyQWxnb3JpdGhtcygpOwpAQCAtNTAsNyArNTUsOSBAQCBi
b29sIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpnZXRJZGVudGlmCiAgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGl0ZXIgPSBtX25hbWVU
b0lkZW50aWZpZXJNYXAuZmluZChuYW1lLmxvd2VyKCkpOworICAgIE11dGV4TG9ja2VyIGxvY2so
cmVnaXN0cnlNdXRleCgpKTsKKworICAgIGF1dG8gaXRlciA9IG1fbmFtZVRvSWRlbnRpZmllck1h
cC5maW5kKG5hbWUuaXNvbGF0ZWRDb3B5KCkubG93ZXIoKSk7CiAgICAgaWYgKGl0ZXIgPT0gbV9u
YW1lVG9JZGVudGlmaWVyTWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTYw
LDExICs2NywxNSBAQCBib29sIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpnZXRJZGVudGlmCiAK
IFN0cmluZyBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6bmFtZUZvcklkZW50aWZpZXIoQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIHJldHVybiBtX2lkZW50aWZp
ZXJUb05hbWVNYXAuZ2V0KHN0YXRpY19jYXN0PHVuc2lnbmVkPihpZGVudGlmaWVyKSk7CisgICAg
TXV0ZXhMb2NrZXIgbG9jayhyZWdpc3RyeU11dGV4KCkpOworCisgICAgcmV0dXJuIG1faWRlbnRp
ZmllclRvTmFtZU1hcC5nZXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlkZW50aWZpZXIpKS5pc29s
YXRlZENvcHkoKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobT4gQ3J5cHRv
QWxnb3JpdGhtUmVnaXN0cnk6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50
aWZpZXIpCiB7CisgICAgTXV0ZXhMb2NrZXIgbG9jayhyZWdpc3RyeU11dGV4KCkpOworCiAgICAg
YXV0byBpdGVyID0gbV9pZGVudGlmaWVyVG9Db25zdHJ1Y3Rvck1hcC5maW5kKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpZGVudGlmaWVyKSk7CiAgICAgaWYgKGl0ZXIgPT0gbV9pZGVudGlmaWVyVG9D
b25zdHJ1Y3Rvck1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03Niw2ICs4
Nyw4IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnJlZ2lzdGVyQWwKIHsKICAgICBB
U1NFUlQobmFtZSA9PSBuYW1lLmxvd2VyKCkpOwogCisgICAgTXV0ZXhMb2NrZXIgbG9jayhyZWdp
c3RyeU11dGV4KCkpOworCiAgICAgYm9vbCBhZGRlZCA9IG1fbmFtZVRvSWRlbnRpZmllck1hcC5h
ZGQobmFtZSwgaWRlbnRpZmllcikuaXNOZXdFbnRyeTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZGVk
LCBhZGRlZCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuaWRsCShyZXZpc2lv
biAxNjAzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBlbnVtIEtleVVzYWdlIHsKICAgICBDb25kaXRpb25h
bD1TVUJUTEVfQ1JZUFRPLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbCwKICAgICBJbnRl
cmZhY2VOYW1lPUtleSwKKyAgICBKU05vU3RhdGljVGFibGVzLAogICAgIE5vSW50ZXJmYWNlT2Jq
ZWN0LAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uCiBdIGludGVyZmFjZSBDcnlwdG9LZXkgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5QUVTLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuY3BwCShyZXZp
c2lvbiAxNjAzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxOCArMzksMjMgQEAgQ3J5cHRvS2V5QUVTOjpDcnlw
dG9LZXlBRVMoQ3J5cHRvQWxnb3JpdAogICAgIDogQ3J5cHRvS2V5KGFsZ29yaXRobSwgQ3J5cHRv
S2V5VHlwZTo6U2VjcmV0LCBleHRyYWN0YWJsZSwgdXNhZ2UpCiAgICAgLCBtX2tleShrZXkpCiB7
Ci0gICAgQVNTRVJUKGFsZ29yaXRobSA9PSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNf
Q1RSCi0gICAgICAgIHx8IGFsZ29yaXRobSA9PSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpB
RVNfQ0JDCi0gICAgICAgIHx8IGFsZ29yaXRobSA9PSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpBRVNfQ01BQwotICAgICAgICB8fCBhbGdvcml0aG0gPT0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6QUVTX0dDTQotICAgICAgICB8fCBhbGdvcml0aG0gPT0gQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6QUVTX0NGQgotICAgICAgICB8fCBhbGdvcml0aG0gPT0gQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6QUVTX0tXKTsKKyAgICBBU1NFUlQoaXNWYWxpZEFFU0FsZ29yaXRobShhbGdv
cml0aG0pKTsKIH0KIAogQ3J5cHRvS2V5QUVTOjp+Q3J5cHRvS2V5QUVTKCkKIHsKIH0KIAorYm9v
bCBDcnlwdG9LZXlBRVM6OmlzVmFsaWRBRVNBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
ZmllciBhbGdvcml0aG0pCit7CisgICAgcmV0dXJuIGFsZ29yaXRobSA9PSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpBRVNfQ1RSCisgICAgICAgIHx8IGFsZ29yaXRobSA9PSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpBRVNfQ0JDCisgICAgICAgIHx8IGFsZ29yaXRobSA9PSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ01BQworICAgICAgICB8fCBhbGdvcml0aG0gPT0gQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0dDTQorICAgICAgICB8fCBhbGdvcml0aG0gPT0g
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NGQgorICAgICAgICB8fCBhbGdvcml0aG0g
PT0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOworfQorCiBQYXNzUmVmUHRyPENy
eXB0b0tleUFFUz4gQ3J5cHRvS2V5QUVTOjpnZW5lcmF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyIGFsZ29yaXRobSwgc2l6ZV90IGxlbmd0aEJpdHMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlIHVzYWdlcykKIHsKICAgICBpZiAobGVuZ3RoQml0cyAlIDgpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuaAkocmV2aXNpb24gMTYwMzc1KQor
KysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5QUVTLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDYgKzQyLDggQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5DcnlwdG9L
ZXlBRVMoKTsKIAorICAgIHN0YXRpYyBib29sIGlzVmFsaWRBRVNBbGdvcml0aG0oQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcik7CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDcnlwdG9LZXlBRVM+
IGdlbmVyYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBsZW5ndGhCaXRzLCBi
b29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSk7CiAKICAgICB2aXJ0dWFsIENyeXB0b0tl
eUNsYXNzIGtleUNsYXNzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gQ3J5cHRvS2V5Q2xhc3M6
OkFFUzsgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwNDQ5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTMtMTItMTEgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQ3J5cHRvIGtleXMgc2hv
dWxkIHN1cHBvcnQgc3RydWN0dXJlZCBjbG9uZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1NTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVy
IEh1bnQuCisKKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL2Flcy1wb3N0TWVzc2FnZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvYWVzLXBvc3RNZXNzYWdlLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvaG1hYy1wb3N0TWVzc2FnZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvaG1hYy1wb3N0TWVzc2Fn
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL3Bvc3RNZXNzYWdlLXdvcmtl
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvcG9zdE1lc3Nh
Z2Utd29ya2VyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvcnNhLXBvc3RN
ZXNzYWdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3J5cHRvL3N1YnRsZS9yc2Et
cG9zdE1lc3NhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogY3J5cHRvL3N1YnRsZS9yZXNvdXJj
ZXMvcG9zdE1lc3NhZ2Utd29ya2VyLmpzOiBBZGRlZC4KKwogMjAxMy0xMi0xMSAgTWFyaW8gU2Fu
Y2hleiBQcmFkYSAgPG1hcmlvLnByYWRhQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtBVEtdIEFk
ZCBuZXcgbGF5b3V0IHRlc3QgdG8gY2hlY2sgQVRLIHJvbGVzIGluIGEgY2VudHJhbCBwbGFjZQpJ
bmRleDogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtcG9zdE1lc3NhZ2UtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLXBvc3RNZXNz
YWdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2NyeXB0by9zdWJ0
bGUvYWVzLXBvc3RNZXNzYWdlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE0IEBACitUZXN0IHNlbmRpbmcgY3J5cHRvIGtleXMgdmlhIHBvc3RNZXNzYWdlLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBrZXkudHlwZSBpcyAnc2VjcmV0JworUEFT
UyBrZXkuZXh0cmFjdGFibGUgaXMgdHJ1ZQorUEFTUyBrZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ2Fl
cy1jYmMnCitQQVNTIGtleS5hbGdvcml0aG0ubGVuZ3RoIGlzIDEyOAorUEFTUyBrZXkudXNhZ2Vz
IGlzIFsiZW5jcnlwdCIsICJkZWNyeXB0IiwgInNpZ24iLCAidmVyaWZ5Il0KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1wb3N0TWVzc2FnZS1leHBlY3RlZC50
eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCit0ZXh0L3Bs
YWluClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKQWRkZWQ6IHN2bjplb2wtc3R5bGUK
IyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5k
ZXg6IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLXBvc3RNZXNzYWdlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtcG9zdE1lc3NhZ2UuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLXBvc3RNZXNzYWdl
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2NvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IHNlbmRpbmcgY3J5cHRvIGtleXMgdmlhIHBvc3RNZXNzYWdlLiIpOwor
Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3Nh
Z2UiLCBmdW5jdGlvbihldnQpIHsKKyAgICBrZXkgPSBldnQuZGF0YTsKKyAgICBzaG91bGRCZSgi
a2V5LnR5cGUiLCAiJ3NlY3JldCciKTsKKyAgICBzaG91bGRCZSgia2V5LmV4dHJhY3RhYmxlIiwg
InRydWUiKTsKKyAgICBzaG91bGRCZSgia2V5LmFsZ29yaXRobS5uYW1lIiwgIidhZXMtY2JjJyIp
OworICAgIHNob3VsZEJlKCJrZXkuYWxnb3JpdGhtLmxlbmd0aCIsICIxMjgiKTsKKyAgICBzaG91
bGRCZSgia2V5LnVzYWdlcyIsICdbImVuY3J5cHQiLCAiZGVjcnlwdCIsICJzaWduIiwgInZlcmlm
eSJdJyk7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZhbHNlKTsKKworaW1wb3J0VGVzdEtl
eXMoKS50aGVuKGZ1bmN0aW9uKGtleXMpIHsKKyAgICBwb3N0TWVzc2FnZShrZXlzLmFlc0NiYywg
IioiKTsKK30pOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1wb3N0TWVzc2FnZS5odG1sCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAjIwordGV4dC9odG1sClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExheW91dFRlc3RzL2NyeXB0by9zdWJ0
bGUvaG1hYy1wb3N0TWVzc2FnZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvY3J5cHRvL3N1YnRsZS9obWFjLXBvc3RNZXNzYWdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvaG1hYy1wb3N0TWVzc2FnZS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorVGVzdCBzZW5kaW5nIGNyeXB0
byBrZXlzIHZpYSBwb3N0TWVzc2FnZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1Mga2V5LnR5cGUgaXMgJ3NlY3JldCcKK1BBU1Mga2V5LmV4dHJhY3RhYmxlIGlzIHRydWUK
K1BBU1Mga2V5LmFsZ29yaXRobS5uYW1lIGlzICdobWFjJworUEFTUyBrZXkuYWxnb3JpdGhtLmxl
bmd0aCBpcyAxNgorUEFTUyBrZXkudXNhZ2VzIGlzIFsiZW5jcnlwdCIsICJkZWNyeXB0IiwgInNp
Z24iLCAidmVyaWZ5Il0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxl
L2htYWMtcG9zdE1lc3NhZ2UtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1l
LXR5cGUKIyMgLTAsMCArMSAjIwordGV4dC9wbGFpbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHBy
b3BlcnR5CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxl
L2htYWMtcG9zdE1lc3NhZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8v
c3VidGxlL2htYWMtcG9zdE1lc3NhZ2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2NyeXB0by9zdWJ0bGUvaG1hYy1wb3N0TWVzc2FnZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBzZW5kaW5nIGNy
eXB0byBrZXlzIHZpYSBwb3N0TWVzc2FnZS4iKTsKKworanNUZXN0SXNBc3luYyA9IHRydWU7CisK
K3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZ0KSB7CisgICAg
a2V5ID0gZXZ0LmRhdGE7CisgICAgc2hvdWxkQmUoImtleS50eXBlIiwgIidzZWNyZXQnIik7Cisg
ICAgc2hvdWxkQmUoImtleS5leHRyYWN0YWJsZSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoImtl
eS5hbGdvcml0aG0ubmFtZSIsICInaG1hYyciKTsKKyAgICBzaG91bGRCZSgia2V5LmFsZ29yaXRo
bS5sZW5ndGgiLCAiMTYiKTsKKyAgICBzaG91bGRCZSgia2V5LnVzYWdlcyIsICdbImVuY3J5cHQi
LCAiZGVjcnlwdCIsICJzaWduIiwgInZlcmlmeSJdJyk7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsK
K30sIGZhbHNlKTsKKworaW1wb3J0VGVzdEtleXMoKS50aGVuKGZ1bmN0aW9uKGtleXMpIHsKKyAg
ICBwb3N0TWVzc2FnZShrZXlzLmhtYWNTaGExLCAiKiIpOworfSk7Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2NyeXB0by9zdWJ0
bGUvaG1hYy1wb3N0TWVzc2FnZS5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUK
IyMgLTAsMCArMSAjIwordGV4dC9odG1sClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
SW5kZXg6IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvcG9zdE1lc3NhZ2Utd29ya2VyLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3Bvc3RNZXNz
YWdlLXdvcmtlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9jcnlw
dG8vc3VidGxlL3Bvc3RNZXNzYWdlLXdvcmtlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxNSBAQAorVGVzdCBzZW5kaW5nIGNyeXB0byBrZXlzIHZpYSBwb3N0TWVzc2Fn
ZSB0byBhIHdvcmtlci4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgQWxs
IGNoZWNrcyBwYXNzZWQgaW4gd29ya2VyCitQQVNTIGtleS50eXBlIGlzICdzZWNyZXQnCitQQVNT
IGtleS5leHRyYWN0YWJsZSBpcyB0cnVlCitQQVNTIGtleS5hbGdvcml0aG0ubmFtZSBpcyAnaG1h
YycKK1BBU1Mga2V5LmFsZ29yaXRobS5sZW5ndGggaXMgMTYKK1BBU1Mga2V5LnVzYWdlcyBpcyBb
ImVuY3J5cHQiLCAiZGVjcnlwdCIsICJzaWduIiwgInZlcmlmeSJdCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjog
TGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAjIwordGV4dC9wbGFp
bgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMj
IC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4
OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3Bvc3RNZXNzYWdlLXdvcmtlci5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvcG9zdE1lc3NhZ2Utd29ya2VyLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3Bvc3RNZXNzYWdl
LXdvcmtlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
PgorCitkZXNjcmlwdGlvbigiVGVzdCBzZW5kaW5nIGNyeXB0byBrZXlzIHZpYSBwb3N0TWVzc2Fn
ZSB0byBhIHdvcmtlci4iKTsKKworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2ltcG9ydFRlc3RL
ZXlzKCkudGhlbihmdW5jdGlvbihrZXlzKSB7CisgICAgdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIo
InJlc291cmNlcy9wb3N0TWVzc2FnZS13b3JrZXIuanMiKTsKKyAgICB3b3JrZXIub25tZXNzYWdl
ID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIGlmICghZXZ0LmRhdGEucmVzdWx0KSB7CisgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJDaGVjayBmYWlsZWQgaW4gd29ya2VyOiAiICsgZXZ0LmRhdGEu
bWVzc2FnZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJBbGwg
Y2hlY2tzIHBhc3NlZCBpbiB3b3JrZXIiKTsKKyAgICAgICAgICAgIGtleSA9IGV2dC5kYXRhLmtl
eTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXkudHlwZSIsICInc2VjcmV0JyIpOworICAgICAg
ICAgICAgc2hvdWxkQmUoImtleS5leHRyYWN0YWJsZSIsICJ0cnVlIik7CisgICAgICAgICAgICBz
aG91bGRCZSgia2V5LmFsZ29yaXRobS5uYW1lIiwgIidobWFjJyIpOworICAgICAgICAgICAgc2hv
dWxkQmUoImtleS5hbGdvcml0aG0ubGVuZ3RoIiwgIjE2Iik7CisgICAgICAgICAgICBzaG91bGRC
ZSgia2V5LnVzYWdlcyIsICdbImVuY3J5cHQiLCAiZGVjcnlwdCIsICJzaWduIiwgInZlcmlmeSJd
Jyk7CisgICAgICAgIH0KKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorICAgIHdvcmtl
ci5wb3N0TWVzc2FnZShrZXlzLmhtYWNTaGExKTsKK30pOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3Bv
c3RNZXNzYWdlLXdvcmtlci5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMg
LTAsMCArMSAjIwordGV4dC9odG1sClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5k
ZXg6IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvcnNhLXBvc3RNZXNzYWdlLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYS1wb3N0TWVzc2Fn
ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxl
L3JzYS1wb3N0TWVzc2FnZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
MSBAQAorVGVzdCBzZW5kaW5nIGNyeXB0byBrZXlzIHZpYSBwb3N0TWVzc2FnZS4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0tleSByZWNlaXZlZCBpbiBhIG1lc3NhZ2U6CitQQVNT
IGtleS50eXBlIGlzICdwcml2YXRlJworUEFTUyBrZXkuZXh0cmFjdGFibGUgaXMgdHJ1ZQorUEFT
UyBrZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ3JzYXNzYS1wa2NzMS12MV81JworUEFTUyBrZXkuYWxn
b3JpdGhtLm1vZHVsdXNMZW5ndGggaXMgMjA0OAorUEFTUyBieXRlc1RvSGV4U3RyaW5nKGtleS5h
bGdvcml0aG0ucHVibGljRXhwb25lbnQpIGlzICcwMTAwMDEnCitQQVNTIGtleS51c2FnZXMgaXMg
WyJzaWduIiwgInZlcmlmeSJdCisKK0V4cG9ydGVkIGJhY2sgdG8gSldLOgorUEFTUyBleHBvcnRl
ZEpXSy5rdHkgaXMgJ1JTQScKK1BBU1MgZXhwb3J0ZWRKV0suYWxnIGlzICdSUzI1NicKK1BBU1Mg
ZXhwb3J0ZWRKV0suZXh0IGlzIHRydWUKK1BBU1MgZXhwb3J0ZWRKV0sudXNlIGlzICdzaWcnCitQ
QVNTIGV4cG9ydGVkSldLLm4gaXMgcHJpdmF0ZUtleUpTT04ubgorUEFTUyBleHBvcnRlZEpXSy5l
IGlzIHByaXZhdGVLZXlKU09OLmUKK1BBU1MgZXhwb3J0ZWRKV0suZCBpcyBwcml2YXRlS2V5SlNP
Ti5kCitQQVNTIGV4cG9ydGVkSldLLnAgaXMgcHJpdmF0ZUtleUpTT04ucAorUEFTUyBleHBvcnRl
ZEpXSy5xIGlzIHByaXZhdGVLZXlKU09OLnEKK1BBU1MgZXhwb3J0ZWRKV0suZHAgaXMgcHJpdmF0
ZUtleUpTT04uZHAKK1BBU1MgZXhwb3J0ZWRKV0suZHEgaXMgcHJpdmF0ZUtleUpTT04uZHEKK1BB
U1MgZXhwb3J0ZWRKV0sucWkgaXMgcHJpdmF0ZUtleUpTT04ucWkKKworUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246
IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvcnNhLXBvc3RNZXNzYWdlLWV4cGVjdGVkLnR4dApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAgKzEgIyMKK3RleHQvcGxhaW4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpBZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAt
MCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDog
TGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9yc2EtcG9zdE1lc3NhZ2UuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYS1wb3N0TWVzc2FnZS5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9yc2EtcG9zdE1lc3NhZ2UuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
Y29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKworZGVzY3Jp
cHRpb24oIlRlc3Qgc2VuZGluZyBjcnlwdG8ga2V5cyB2aWEgcG9zdE1lc3NhZ2UuIik7CisKK2pz
VGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgcHJpdmF0ZUtleUpTT04gPSB7CisgICAga3R5OiAi
UlNBIiwKKyAgICBhbGc6ICJSUzI1NiIsCisgICAgbjogInJjQ1VDdjdPYzFIVmFtMURJaEN6cWtu
VGhXYXdPcDhRTGs4Wml5MnAxMEJ5alFGQ2Fqb0ZpeXVBV2wtUjFXWFphZjR4aXRMUnJhY1Q5YWdw
ekl6Yy1NYkxTSElHZ1dRR08yMWxHaUlteTVmdFotRDhiSEFxUnoyeTE1cHpENGM0Q0VvdTdYU1NM
RG9SblIwUUc1TXNEaEQ2czJnVjltd0hrcnRrQ3h0TVdkQmktNzdhczh3R21sTlJsZGNPU2daRExL
OFVuQ1NnQTFPZ3VaOTg5YkZ5Yzh0T09FSWIweFVTZlBTejNMUFNDbnlZejY4YURqbUtWZU5ILWln
ODU3T1NjeVdiR3lFeTNCaXc2NHF1bjNqdVVsTldzSjN6bmdrT2R0ZVlXeXR4NVFyNFhLTnM2Ui1N
eXlxNzJLVXAwMm1KRFppaXlpZ2x4TUxfaTMtX0NlZWNDdyIsCisgICAgZTogIkFRQUIiLAorICAg
IGQ6ICJlTkxTMzdhQ3o3UlhTTlBEX0R0TEJKNmo1VDhjU3hkelJCQ2pQYUk2V2NHcUpwMTZscTNV
VHd1b0RMQXFsQTlvR1ltMjM4ZHNJV3B1dWNQX2xRdGJXZS03U3B4b0k2X3ZtWUdmN1lWVUh2MS1E
RjlxaU9tU3JNbWR4TW5WT3pZWFk4UmFUNnRoUGpuX0o1Y2ZMVjJ4SV9Md3NyTXRtcGRTeU5sZ1gw
elRVaHd0dWFoZ0FLTUVDaFlqSDJFbmpIZEh3NnNZMi13QXBkY1FJN1VMRTBvbzVSemJRWnBtdWhj
TjloaUJjMEwzaGhGMHFvNTBtYmwwMl82NV9HUTdEcFZrWEJ4TmdSQkx6bFBhYm16ekcyb0FoZmVm
TGdZbVNDMW9wYUNrWEU2dlJXUU5XTkw0NVJaTlpGWU0zdW9KZ2hPTXFHZW9jTTBCcGpkQ2hIclBP
bEZ2U1EiLAorICAgIHA6ICI0bWlUdUFqS01lSDV1SjVLQjM5N1FVd2hia1lFZ1NiY0EybWlmbVNr
dkUyMDE4Z2I1NXFrQkhLMWVWcnlmMV9tNDNMTmxjNk9fYWs2Z2Z6ZFpJWnZTNU5DR2pQbDBxMDlw
bFVwdThxRk9Tc3BCd0E2N3FHSDc2bEZsWkxuX2Q0eWdsUzd3ZkxydTRfNVlzOHFMTHMtRHFWTHZp
d3Bvc09ueXlXcXdNNUFYcDAiLAorICAgIHE6ICJ4SFlyemtpdnRtbnpfc0djaG5XR2MwcS1wRE9r
S2ljcHRScHYycE1GSUlYeG5GWDVhTWVFWElaalZ1alh0d1V5MVVsRklOMkdaSlN2eTVLSjc5bXVf
WHlObkZITXplZEgtQTNlZTN1OGgxVVVyWkYtdlV1MV9lNFVfeDY3Tk4xZGVkelVTS3luTjdwRmwz
T2t1U2hNQldHVi1jd3pPUGRjVkFmVnVabHhVTWMiLAorICAgIGRwOiAiZkJ6RHpZRFVCbUJRR29w
N0huMGR2Zl9UMjdWNlJxcGN0V28wNzRDUVpjRmJQMmF0RlZ0S1NqM3ZpV1QzeGlkMlZIemNnaURI
ZGZwTTNuRVZsRU8xd3dJb25HQ1N2ZGpHRU9aaWlGVk9qclpBT1Z4QThndU9qeXlGdnFiWGtlMDZW
d1BJSVZ2ZktlU1UyenVoYlBfXzF0dDZGX2Z4b3c0S2IyeG9uR1QwR0drIiwKKyAgICBkcTogImpt
RTJEaUlQZGh3RGdMWEFRcElhQnFRODFiTzNYZlZUX0xSVUxBd3d3d2xQdVFWMTQ4SDA0emxoOVRK
NlkyR1pIWW9rVjFVMGVPQnBKeGZrYjdkTFl0cEpwdWlCalJmNHlJVUVvR2xra0lfUWxKbkZTRnIt
WWpHUmRmTkhxV0JreGxTTVpMNzcwUjltSUFUbmRHa0g3ejV4LXI5S3dCWkZDNEZDRzJoZ196RSIs
CisgICAgcWk6ICJZQ1hfcEx3Yk1CQTFUaFZIMFdjd21ueXRxTmNyTUNFd1RtN0J5QTJlVTZuV2JR
clVMdmY3bTlfa3pmTFVjanNucEFWbEJRRzVKTVhNeTBTcTRwdHdieXdzYTUtRzhLQU9PT1IyTDN2
NGhDLUV5czlmdGdGTV8zaTBvNDBlZVFINGIzaGFQYm50ckllTWc4SXpsT3VWWUtmOS0yUXVLRG9X
ZVJkZDdOc2R4VGsiCit9OworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1
bmN0aW9uKGV2dCkgeworICAgIGRlYnVnKCJLZXkgcmVjZWl2ZWQgaW4gYSBtZXNzYWdlOiIpOwor
ICAgIGtleSA9IGV2dC5kYXRhOworICAgIHNob3VsZEJlKCJrZXkudHlwZSIsICIncHJpdmF0ZSci
KTsKKyAgICBzaG91bGRCZSgia2V5LmV4dHJhY3RhYmxlIiwgInRydWUiKTsKKyAgICBzaG91bGRC
ZSgia2V5LmFsZ29yaXRobS5uYW1lIiwgIidyc2Fzc2EtcGtjczEtdjFfNSciKTsKKyAgICBzaG91
bGRCZSgia2V5LmFsZ29yaXRobS5tb2R1bHVzTGVuZ3RoIiwgIjIwNDgiKTsKKyAgICBzaG91bGRC
ZSgiYnl0ZXNUb0hleFN0cmluZyhrZXkuYWxnb3JpdGhtLnB1YmxpY0V4cG9uZW50KSIsICInMDEw
MDAxJyIpOworICAgIHNob3VsZEJlKCJrZXkudXNhZ2VzIiwgJ1sic2lnbiIsICJ2ZXJpZnkiXScp
OworCisgICAgY3J5cHRvLnN1YnRsZS5leHBvcnRLZXkoImp3ayIsIGtleSkudGhlbihmdW5jdGlv
bihyZXN1bHQpIHsKKyAgICAgICAgZXhwb3J0ZWRKV0sgPSBKU09OLnBhcnNlKGJ5dGVzVG9BU0NJ
SVN0cmluZyhyZXN1bHQpKTsKKyAgICAgICAgZGVidWcoIlxuRXhwb3J0ZWQgYmFjayB0byBKV0s6
Iik7CisgICAgICAgIHNob3VsZEJlKCJleHBvcnRlZEpXSy5rdHkiLCAiJ1JTQSciKTsKKyAgICAg
ICAgc2hvdWxkQmUoImV4cG9ydGVkSldLLmFsZyIsICInUlMyNTYnIik7CisgICAgICAgIHNob3Vs
ZEJlKCJleHBvcnRlZEpXSy5leHQiLCAidHJ1ZSIpOworICAgICAgICBzaG91bGRCZSgiZXhwb3J0
ZWRKV0sudXNlIiwgIidzaWcnIik7CisgICAgICAgIHNob3VsZEJlKCJleHBvcnRlZEpXSy5uIiwg
InByaXZhdGVLZXlKU09OLm4iKTsKKyAgICAgICAgc2hvdWxkQmUoImV4cG9ydGVkSldLLmUiLCAi
cHJpdmF0ZUtleUpTT04uZSIpOworICAgICAgICBzaG91bGRCZSgiZXhwb3J0ZWRKV0suZCIsICJw
cml2YXRlS2V5SlNPTi5kIik7CisgICAgICAgIHNob3VsZEJlKCJleHBvcnRlZEpXSy5wIiwgInBy
aXZhdGVLZXlKU09OLnAiKTsKKyAgICAgICAgc2hvdWxkQmUoImV4cG9ydGVkSldLLnEiLCAicHJp
dmF0ZUtleUpTT04ucSIpOworICAgICAgICBzaG91bGRCZSgiZXhwb3J0ZWRKV0suZHAiLCAicHJp
dmF0ZUtleUpTT04uZHAiKTsKKyAgICAgICAgc2hvdWxkQmUoImV4cG9ydGVkSldLLmRxIiwgInBy
aXZhdGVLZXlKU09OLmRxIik7CisgICAgICAgIHNob3VsZEJlKCJleHBvcnRlZEpXSy5xaSIsICJw
cml2YXRlS2V5SlNPTi5xaSIpOworICAgICAgICBkZWJ1ZygiIik7CisKKyAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgfSk7Cit9LCBmYWxzZSk7CisKK2NyeXB0by5zdWJ0bGUuaW1wb3J0S2V5
KCJqd2siLCBhc2NpaVRvVWludDhBcnJheShKU09OLnN0cmluZ2lmeShwcml2YXRlS2V5SlNPTikp
LCBudWxsLCB0cnVlLCBbInNpZ24iLCAidmVyaWZ5Il0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7
CisgICAgcG9zdE1lc3NhZ2UocmVzdWx0LCAiKiIpOworfSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUv
cnNhLXBvc3RNZXNzYWdlLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAt
MCwwICsxICMjCit0ZXh0L2h0bWwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9yZXNvdXJjZXMvcG9zdE1lc3NhZ2Utd29ya2Vy
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvcmVzb3VyY2VzL3Bv
c3RNZXNzYWdlLXdvcmtlci5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2NyeXB0by9z
dWJ0bGUvcmVzb3VyY2VzL3Bvc3RNZXNzYWdlLXdvcmtlci5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE0IEBACitvbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpCit7CisgICAgdmFyIGtleSA9
IGV2dC5kYXRhOworICAgIGlmIChrZXkudHlwZSAhPSAnc2VjcmV0JykKKyAgICAgICAgcG9zdE1l
c3NhZ2UoeyByZXN1bHQ6ZmFsc2UsIG1lc3NhZ2U6J2tleS50eXBlIHNob3VsZCBiZSAic2VjcmV0
IicgfSk7CisgICAgZWxzZSBpZiAoIWtleS5leHRyYWN0YWJsZSkKKyAgICAgICAgcG9zdE1lc3Nh
Z2UoeyByZXN1bHQ6ZmFsc2UsIG1lc3NhZ2U6J2tleS5leHRyYWN0YWJsZSBzaG91bGQgYmUgdHJ1
ZScgfSk7CisgICAgZWxzZSBpZiAoa2V5LmFsZ29yaXRobS5uYW1lICE9ICJobWFjIikKKyAgICAg
ICAgcG9zdE1lc3NhZ2UoeyByZXN1bHQ6ZmFsc2UsIG1lc3NhZ2U6J2tleS5hbGdvcml0aG0ubmFt
ZSBzaG91bGQgYmUgImhtYWMiJyB9KTsKKyAgICBlbHNlIGlmIChrZXkudXNhZ2VzLnRvU3RyaW5n
KCkgIT0gImVuY3J5cHQsZGVjcnlwdCxzaWduLHZlcmlmeSIpCisgICAgICAgIHBvc3RNZXNzYWdl
KHsgcmVzdWx0OmZhbHNlLCBtZXNzYWdlOidrZXkudXNhZ2VzIHNob3VsZCBiZSBbImVuY3J5cHQi
LCAiZGVjcnlwdCIsICJzaWduIiwgInZlcmlmeSJdJyB9KTsKKyAgICBlbHNlCisgICAgICAgIHBv
c3RNZXNzYWdlKHsgcmVzdWx0OnRydWUsIGtleTprZXkgfSk7Cit9CgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3Jlc291cmNlcy9wb3N0TWVzc2FnZS13b3Jr
ZXIuanMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCit0ZXh0
L3BsYWluClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKQWRkZWQ6IHN2bjplb2wtc3R5
bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
</data>
<flag name="commit-queue"
          id="242578"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>