<?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>124597</bug_id>
          
          <creation_ts>2013-11-19 12:26:45 -0800</creation_ts>
          <short_desc>Consolidate IDBBackingStore*Interface and IDBBackingStore*LevelDB</short_desc>
          <delta_ts>2013-11-19 13:21:32 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>952180</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-19 12:26:45 -0800</bug_when>
    <thetext>Consolidate IDBBackingStore*Interface and IDBBackingStore*LevelDB

There&apos;s no longer a need for the Interface abstractions, as the LevelDB implementations will be the only ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952187</commentid>
    <comment_count>1</comment_count>
      <attachid>217319</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-19 12:39:01 -0800</bug_when>
    <thetext>Created attachment 217319
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952188</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-19 12:40:11 -0800</bug_when>
    <thetext>Attachment 217319 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBBackingStoreCursorInterface.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBBackingStoreInterface.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBBackingStoreTransactionInterface.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBServerConnection.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreCursorLevelDB.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreTransactionLevelDB.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/leveldb/IDBIndexWriterLevelDB.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/leveldb/IDBIndexWriterLevelDB.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/leveldb/IDBServerConnectionLevelDB.cpp&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;]&quot; exit_code: 1
Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.cpp:545:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.cpp:663:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.h:79:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.h:80:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 4 in 8 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>952190</commentid>
    <comment_count>3</comment_count>
      <attachid>217319</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-19 12:42:51 -0800</bug_when>
    <thetext>Comment on attachment 217319
Patch v1

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

&gt; Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreCursorLevelDB.h:60
&gt; +    virtual PassRefPtr&lt;IDBKey&gt; key() const { return m_currentKey; }

Why PassRefPtr?!

&gt; Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreCursorLevelDB.h:68
&gt; +    virtual PassRefPtr&lt;IDBKey&gt; primaryKey() const { return m_currentKey; }
&gt; +    virtual PassRefPtr&lt;SharedBuffer&gt; value() const = 0;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952195</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-19 12:54:01 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 217319 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=217319&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreCursorLevelDB.h:60
&gt; &gt; +    virtual PassRefPtr&lt;IDBKey&gt; key() const { return m_currentKey; }
&gt; 
&gt; Why PassRefPtr?!
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreCursorLevelDB.h:68
&gt; &gt; +    virtual PassRefPtr&lt;IDBKey&gt; primaryKey() const { return m_currentKey; }
&gt; &gt; +    virtual PassRefPtr&lt;SharedBuffer&gt; value() const = 0;
&gt; 
&gt; Ditto.

Great question - It always was from the original LevelDB implementors, and I think it was just wrong.  Not sure i should change it, though, without the ability to test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952207</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-19 13:21:32 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/159517</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217319</attachid>
            <date>2013-11-19 12:39:01 -0800</date>
            <delta_ts>2013-11-19 12:42:51 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>63226</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NjljMjU0Li5lOWUyYzE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY4
IEBACiAyMDEzLTExLTE5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAorICAg
ICAgICBDb25zb2xpZGF0ZSBJREJCYWNraW5nU3RvcmUqSW50ZXJmYWNlIGFuZCBJREJCYWNraW5n
U3RvcmUqTGV2ZWxEQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI0NTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhlIEludGVyZmFjZSBhYnN0cmFjdGlvbiBkb2VzbuKAmXQgbWFrZSBzZW5zZSBhbnlt
b3JlLCBhcyBMZXZlbERCIHdpbGwgYmUgdGhlIG9ubHkgaW1wbGVtZW50b3IuCisKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2UuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmVJbnRlcmZh
Y2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbkludGVyZmFjZS5oOiBSZW1vdmVkLgorCisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCU2VydmVyQ29ubmVjdGlvbi5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCOjprZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2ZWxEQjo6cHJpbWFyeUtleSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCOjpyZWNvcmRJZGVudGlmaWVy
KToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3Jl
TGV2ZWxEQi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmVMZXZlbERCOjpn
ZXRPckVzdGFibGlzaElEQkRhdGFiYXNlTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURC
QmFja2luZ1N0b3JlTGV2ZWxEQjo6dXBkYXRlSURCRGF0YWJhc2VWZXJzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZUxldmVsREI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZUxldmVsREI6OmNyZWF0ZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZUxldmVsREI6OmRlbGV0ZU9iamVjdFN0
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZUxldmVsREI6OmdldFJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmVMZXZlbERCOjpwdXRSZWNvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Y2xlYXJPYmplY3RT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmVMZXZlbERCOjpkZWxldGVS
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Z2V0S2V5
R2VuZXJhdG9yQ3VycmVudE51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3Rv
cmVMZXZlbERCOjptYXliZVVwZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6a2V5RXhpc3RzSW5PYmplY3RTdG9y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmVMZXZlbERCOjpjcmVhdGVJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmVMZXZlbERCOjpkZWxldGVJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmVMZXZlbERCOjpwdXRJbmRleERh
dGFGb3JSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6
ZmluZEtleUluSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlTGV2ZWxE
Qjo6Z2V0UHJpbWFyeUtleVZpYUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdT
dG9yZUxldmVsREI6OmtleUV4aXN0c0luSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFj
a2luZ1N0b3JlTGV2ZWxEQjo6bWFrZUluZGV4V3JpdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVuT2JqZWN0U3RvcmVDdXJzb3IpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6b3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29y
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9wZW5JbmRleEtl
eUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVu
SW5kZXhDdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFj
a2luZ1N0b3JlTGV2ZWxEQi5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxk
Yi9JREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJv
bSk6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkluZGV4V3JpdGVy
TGV2ZWxEQi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleFdyaXRlckxldmVsREI6Ondy
aXRlSW5kZXhLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4V3JpdGVyTGV2ZWxEQjo6
dmVyaWZ5SW5kZXhLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4V3JpdGVyTGV2ZWxE
Qjo6YWRkaW5nS2V5QWxsb3dlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxk
Yi9JREJJbmRleFdyaXRlckxldmVsREIuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L2xldmVsZGIvSURCU2VydmVyQ29ubmVjdGlvbkxldmVsREIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyQ29ubmVjdGlvbkxldmVsREI6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQjo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQjo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyQ29ubmVjdGlvbkxldmVsREI6OmRlbGV0ZVJhbmdlKToKKworICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworMjAxMy0xMS0xOSAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgQWRkIFdlYklEQlNlcnZlckNvbm5l
Y3Rpb24gYW5kIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24gc3R1YnMKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDU2MgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmVDdXJzb3JJ
bnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdT
dG9yZUN1cnNvckludGVyZmFjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDMy
NDM1Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJh
Y2tpbmdTdG9yZUN1cnNvckludGVyZmFjZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgSURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlX2gK
LSNkZWZpbmUgSURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlX2gKLQotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIElEQktl
eTsKLWNsYXNzIElEQlJlY29yZElkZW50aWZpZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Ci0KLWNs
YXNzIElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPElE
QkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4gewotcHVibGljOgotICAgIGVudW0gSXRlcmF0
b3JTdGF0ZSB7Ci0gICAgICAgIFJlYWR5ID0gMCwKLSAgICAgICAgU2VlawotICAgIH07Ci0KLSAg
ICB2aXJ0dWFsIH5JREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2UoKSB7IH0KLQotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJv
b2wgY29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqID0gMCwgSXRlcmF0b3JTdGF0ZSA9IFNl
ZWspID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgYWR2YW5jZSh1bnNpZ25lZCBsb25nKSA9IDA7Ci0K
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlKCkgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgY29uc3QgSURCUmVjb3JkSWRlbnRpZmllciYgcmVjb3JkSWRlbnRpZmllcigp
IGNvbnN0ID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQotI2VuZGlmIC8vIElEQkJhY2tpbmdTdG9yZUN1cnNvcklu
dGVyZmFjZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJCYWNraW5nU3RvcmVJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkJhY2tpbmdTdG9yZUludGVyZmFjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5ZjI1NTAzLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkJhY2tpbmdTdG9yZUludGVyZmFjZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZV9oCi0j
ZGVmaW5lIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZV9oCi0KLSNpbmNsdWRlICJJREJCYWNraW5n
U3RvcmVDdXJzb3JJbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJJREJCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbkludGVyZmFjZS5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZC5oIgotI2luY2x1
ZGUgIklEQk1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiSW5kZXhlZERCLmgiCi0KLSNpbmNsdWRlIDxm
dW5jdGlvbmFsPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi0jaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSURCSW5kZXhX
cml0ZXJMZXZlbERCOwotY2xhc3MgSURCS2V5OwotY2xhc3MgSURCS2V5UGF0aDsKLWNsYXNzIElE
QktleVJhbmdlOwotY2xhc3MgSURCUmVjb3JkSWRlbnRpZmllcjsKLWNsYXNzIElEQlRyYW5zYWN0
aW9uQmFja2VuZDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLQotY2xhc3MgSURCQmFja2luZ1N0b3Jl
SW50ZXJmYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlPiB7
Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKCkgeyB9Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgZXN0YWJsaXNoQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oaW50NjRf
dCB0cmFuc2FjdGlvbklEKSA9IDA7Ci0KLSAgICAvLyBOZXctc3R5bGUgYXN5bmNocm9ub3VzIGNh
bGxiYWNrcwotICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBJREJEYXRhYmFz
ZU1ldGFkYXRhJiwgYm9vbCBzdWNjZXNzKT4gR2V0SURCRGF0YWJhc2VNZXRhZGF0YUZ1bmN0aW9u
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRPckVzdGFibGlzaElEQkRhdGFiYXNlTWV0YWRhdGEoY29u
c3QgU3RyaW5nJiBuYW1lLCBHZXRJREJEYXRhYmFzZU1ldGFkYXRhRnVuY3Rpb24pID0gMDsKLQot
ICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sIHN1Y2Nlc3MpPiBCb29sQ2FsbGJh
Y2tGdW5jdGlvbjsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5n
JiBuYW1lLCBCb29sQ2FsbGJhY2tGdW5jdGlvbikgPSAwOwotCi0gICAgLy8gT2xkLXN0eWxlIHN5
bmNocm9ub3VzIGNhbGxiYWNrcwotICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlzdHNJbk9iamVjdFN0
b3JlKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIFJlZlB0cjxJREJSZWNv
cmRJZGVudGlmaWVyPiYgZm91bmRJREJSZWNvcmRJZGVudGlmaWVyKSA9IDA7Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
SW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgSURCUmVjb3JkSWRlbnRpZmllciop
ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wga2V5RXhpc3RzSW5JbmRleChJREJCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbkludGVyZmFjZSYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIFJlZlB0cjxJREJLZXk+JiBm
b3VuZFByaW1hcnlLZXksIGJvb2wmIGV4aXN0cykgPSAwOwotCi0gICAgdmlydHVhbCBib29sIHVw
ZGF0ZUlEQkRhdGFiYXNlVmVyc2lvbihJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFj
ZSYsIGludDY0X3Qgcm93SWQsIHVpbnQ2NF90IHZlcnNpb24pID0gMDsKLQotICAgIHZpcnR1YWwg
Ym9vbCBnZXRSZWNvcmQoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgVmVj
dG9yPGNoYXI+JiByZWNvcmQpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcHV0UmVjb3JkKElEQkJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiB2YWx1ZSwgSURCUmVjb3JkSWRlbnRpZmllciopID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZGVs
ZXRlUmVjb3JkKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQlJlY29yZElkZW50aWZp
ZXImKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoSURCQmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9v
bCBhdXRvSW5jcmVtZW50KSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGRlbGV0ZU9iamVjdFN0b3Jl
KElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgY2xlYXJPYmpl
Y3RTdG9yZShJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYsIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wg
Y3JlYXRlSW5kZXgoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGlzVW5pcXVlLCBib29sIGlz
TXVsdGlFbnRyeSkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJbmRleChJREJCYWNraW5n
U3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpID0gMDsKLQotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxJREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2U+IG9wZW5PYmplY3RTdG9yZUtleUN1
cnNvcihpbnQ2NF90IGN1cnNvcklELCBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFj
ZSYsIGludDY0X3QgZGF0YWJhc2VJRCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJL
ZXlSYW5nZSosIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uKSA9IDA7Ci0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4gb3Blbk9iamVjdFN0b3Jl
Q3Vyc29yKGludDY0X3QgY3Vyc29ySUQsIElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJm
YWNlJiwgaW50NjRfdCBkYXRhYmFzZUlELCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElE
QktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pID0gMDsKLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlPiBvcGVuSW5kZXhLZXlD
dXJzb3IoaW50NjRfdCBjdXJzb3JJRCwgSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZh
Y2UmLCBpbnQ2NF90IGRhdGFiYXNlSUQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBp
bmRleElkLCBjb25zdCBJREJLZXlSYW5nZSosIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uKSA9
IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFj
ZT4gb3BlbkluZGV4Q3Vyc29yKGludDY0X3QgY3Vyc29ySUQsIElEQkJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uSW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlELCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNv
ckRpcmVjdGlvbikgPSAwOwotCi0gICAgdmlydHVhbCBib29sIGdldFByaW1hcnlLZXlWaWFJbmRl
eChJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYsIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYs
IFJlZlB0cjxJREJLZXk+JiBwcmltYXJ5S2V5KSA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0
S2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVy
ZmFjZSYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
JiBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIG1heWJl
VXBkYXRlS2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bkludGVyZmFjZSYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IG5ld1N0YXRlLCBib29sIGNoZWNrQ3VycmVudCkgPSAwOwotCi0gICAgdmlydHVhbCBi
b29sIG1ha2VJbmRleFdyaXRlcnMoaW50NjRfdCB0cmFuc2FjdGlvbklELCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBJREJLZXkmIHByaW1hcnlLZXks
IGJvb2wga2V5V2FzR2VuZXJhdGVkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBj
b25zdCBWZWN0b3I8VmVjdG9yPFJlZlB0cjxJREJLZXk+Pj4mLCBWZWN0b3I8UmVmUHRyPElEQklu
ZGV4V3JpdGVyTGV2ZWxEQj4+JiBpbmRleFdyaXRlcnMsIFN0cmluZyogZXJyb3JNZXNzYWdlLCBi
b29sJiBjb21wbGV0ZWQpID0gMDsKLQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IGdl
bmVyYXRlS2V5KElEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHVwZGF0ZUtleUdlbmVy
YXRvcihJREJUcmFuc2FjdGlvbkJhY2tlbmQmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgYm9vbCBjaGVja0N1cnJlbnQpID0gMDsKLQot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCi0jZW5kaWYgLy8gSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1YmUzNWU5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBJREJCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbkludGVyZmFjZV9oCi0jZGVmaW5lIElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
SW50ZXJmYWNlX2gKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLSNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJREJCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+SURC
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9p
ZCBiZWdpbigpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgY29tbWl0KCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCByb2xsYmFjaygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXRUcmFuc2FjdGlv
bigpID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQotI2VuZGlmIC8vIElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
SW50ZXJmYWNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlNlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlNlcnZlckNvbm5lY3Rpb24uaAppbmRleCA0MzM5M2NiLi43MTMyZDY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJTZXJ2ZXJDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCU2VydmVyQ29ubmVjdGlv
bi5oCkBAIC0zOSw4ICszOSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSURC
QmFja2luZ1N0b3JlSW50ZXJmYWNlOwotY2xhc3MgSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25J
bnRlcmZhY2U7CiBjbGFzcyBJREJEYXRhYmFzZUVycm9yOwogY2xhc3MgSURCS2V5OwogY2xhc3Mg
SURCVHJhbnNhY3Rpb25CYWNrZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUN1cnNv
ckxldmVsREIuaAppbmRleCBiYzk0NmJlLi45NzIwODg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVs
REIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJh
Y2tpbmdTdG9yZUN1cnNvckxldmVsREIuaApAQCAtMjYsNyArMjYsNiBAQAogI2lmbmRlZiBJREJC
YWNraW5nU3RvcmVDdXJzb3JMZXZlbERCX2gKICNkZWZpbmUgSURCQmFja2luZ1N0b3JlQ3Vyc29y
TGV2ZWxEQl9oCiAKLSNpbmNsdWRlICJJREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2UuaCIK
ICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJSZWNvcmRJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiTGV2ZWxEQkl0ZXJhdG9yLmgiCkBAIC0zNiwxMSArMzUsMTYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U7CiBjbGFzcyBM
ZXZlbERCVHJhbnNhY3Rpb247CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKLWNsYXNzIElEQkJhY2tp
bmdTdG9yZUN1cnNvckxldmVsREIgOiBwdWJsaWMgSURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJm
YWNlIHsKK2NsYXNzIElEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREIgOiBwdWJsaWMgUmVmQ291
bnRlZDxJREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCPiB7CiBwdWJsaWM6CisgICAgZW51bSBJ
dGVyYXRvclN0YXRlIHsKKyAgICAgICAgUmVhZHkgPSAwLAorICAgICAgICBTZWVrCisgICAgfTsK
KwogICAgIHN0cnVjdCBDdXJzb3JPcHRpb25zIHsKICAgICAgICAgaW50NjRfdCBkYXRhYmFzZUlk
OwogICAgICAgICBpbnQ2NF90IG9iamVjdFN0b3JlSWQ7CkBAIC01MywxNiArNTcsMTYgQEAgcHVi
bGljOgogICAgICAgICBib29sIHVuaXF1ZTsKICAgICB9OwogCi0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPElEQktleT4ga2V5KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9jdXJyZW50S2V5OyB9
Ci0gICAgdmlydHVhbCBib29sIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5KiA9IDAsIEl0
ZXJhdG9yU3RhdGUgPSBTZWVrKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgYWR2YW5jZSh1
bnNpZ25lZCBsb25nKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBr
ZXkoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRLZXk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY29u
dGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqID0gMCwgSXRlcmF0b3JTdGF0ZSA9IFNlZWspOwor
ICAgIHZpcnR1YWwgYm9vbCBhZHZhbmNlKHVuc2lnbmVkIGxvbmcpOwogICAgIGJvb2wgZmlyc3RT
ZWVrKCk7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2
ZWxEQj4gY2xvbmUoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmlt
YXJ5S2V5KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9jdXJyZW50S2V5OyB9Ci0gICAgdmly
dHVhbCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUoKSBjb25zdCBPVkVSUklERSA9IDA7
Ci0gICAgdmlydHVhbCBjb25zdCBJREJSZWNvcmRJZGVudGlmaWVyJiByZWNvcmRJZGVudGlmaWVy
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gKm1fcmVjb3JkSWRlbnRpZmllcjsgfQorICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSBjb25zdCB7IHJldHVybiBtX2N1
cnJlbnRLZXk7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IElEQlJlY29yZElkZW50aWZpZXImIHJlY29y
ZElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiAqbV9yZWNvcmRJZGVudGlmaWVyOyB9CiAgICAg
dmlydHVhbCB+SURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2ZWxEQigpIHsgfQogICAgIHZpcnR1YWwg
Ym9vbCBsb2FkQ3VycmVudFJvdygpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVMZXZlbERCLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlTGV2
ZWxEQi5jcHAKaW5kZXggYmI3ZDdkNS4uMGRjYmVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVMZXZlbERCLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdT
dG9yZUxldmVsREIuY3BwCkBAIC0zMCw4ICszMCw2IEBACiAKICNpbmNsdWRlICJGaWxlU3lzdGVt
LmgiCiAjaW5jbHVkZSAiSGlzdG9ncmFtU3VwcG9ydC5oIgotI2luY2x1ZGUgIklEQkJhY2tpbmdT
dG9yZUN1cnNvckxldmVsREIuaCIKLSNpbmNsdWRlICJJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bkxldmVsREIuaCIKICNpbmNsdWRlICJJREJJbmRleFdyaXRlckxldmVsREIuaCIKICNpbmNsdWRl
ICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCkBAIC01NDQsNyArNTQyLDcgQEAg
Ym9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0
IFN0cmluZyYgbmFtZSwgSURCRGF0YWIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJREJC
YWNraW5nU3RvcmVMZXZlbERCOjpnZXRPckVzdGFibGlzaElEQkRhdGFiYXNlTWV0YWRhdGEoY29u
c3QgU3RyaW5nJiBuYW1lLCBHZXRJREJEYXRhYmFzZU1ldGFkYXRhRnVuY3Rpb24gbWV0YWRhdGFG
dW5jdGlvbikKK3ZvaWQgSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Z2V0T3JFc3RhYmxpc2hJREJE
YXRhYmFzZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChj
b25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiwgYm9vbCBzdWNjZXNzKT4gbWV0YWRhdGFGdW5jdGlv
bikKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5ID0gRGF0YWJhc2VOYW1lS2V5OjplbmNv
ZGUobV9pZGVudGlmaWVyLCBuYW1lKTsKICAgICBib29sIGZvdW5kID0gZmFsc2U7CkBAIC02NDcs
NyArNjQ1LDcgQEAgYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpjcmVhdGVJREJEYXRhYmFz
ZU1ldGFEYXRhKElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGEKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjp1cGRhdGVJREJEYXRhYmFzZVZlcnNpb24o
SURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmIHRyYW5zYWN0aW9uLCBpbnQ2NF90
IHJvd0lkLCB1aW50NjRfdCB2ZXJzaW9uKQorYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjp1
cGRhdGVJREJEYXRhYmFzZVZlcnNpb24oSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERC
JiB0cmFuc2FjdGlvbiwgaW50NjRfdCByb3dJZCwgdWludDY0X3QgdmVyc2lvbikKIHsKICAgICBp
ZiAodmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pCiAgICAgICAg
IHZlcnNpb24gPSBJREJEYXRhYmFzZU1ldGFkYXRhOjpEZWZhdWx0SW50VmVyc2lvbjsKQEAgLTY2
Miw3ICs2NjAsNyBAQCBzdGF0aWMgdm9pZCBkZWxldGVSYW5nZShMZXZlbERCVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGJlZwogICAgICAgICB0cmFuc2FjdGlv
bi0+cmVtb3ZlKGl0LT5rZXkoKSk7CiB9CiAKLXZvaWQgSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6
ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBCb29sQ2FsbGJhY2tGdW5jdGlvbiBi
b29sQ2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6ZGVsZXRl
RGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wgc3Vj
Y2Vzcyk+IGJvb2xDYWxsYmFja0Z1bmN0aW9uKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURC
QmFja2luZ1N0b3JlTGV2ZWxEQjo6ZGVsZXRlRGF0YWJhc2UiKTsKICAgICBPd25QdHI8TGV2ZWxE
QldyaXRlT25seVRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IExldmVsREJXcml0ZU9ubHlUcmFu
c2FjdGlvbjo6Y3JlYXRlKG1fZGIuZ2V0KCkpOwpAQCAtODI4LDcgKzgyNiw3IEBAIFdBUk5fVU5V
U0VEX1JFVFVSTiBzdGF0aWMgYm9vbCBzZXRNYXhPYmplY3RTdG9yZUlkKExldmVsREJUcmFuc2Fj
dGlvbiogdHJhbnNhY3RpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0
b3JlTGV2ZWxEQjo6Y3JlYXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25J
bnRlcmZhY2UmIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBi
b29sIGF1dG9JbmNyZW1lbnQpCitib29sIElEQkJhY2tpbmdTdG9yZUxldmVsREI6OmNyZWF0ZU9i
amVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQiYgdHJhbnNhY3Rpb24s
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKIHsK
ICAgICBMT0coU3RvcmFnZUFQSSwgIklEQkJhY2tpbmdTdG9yZUxldmVsREI6OmNyZWF0ZU9iamVj
dFN0b3JlIik7CiAgICAgaWYgKCFLZXlQcmVmaXg6OnZhbGlkSWRzKGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQpKQpAQCAtODU5LDcgKzg1Nyw3IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlTGV2ZWxE
Qjo6Y3JlYXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6ZGVsZXRl
T2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmIHRyYW5zYWN0
aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKK2Jvb2wgSURC
QmFja2luZ1N0b3JlTGV2ZWxEQjo6ZGVsZXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlVHJh
bnNhY3Rpb25MZXZlbERCJiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJCYWNraW5nU3RvcmVM
ZXZlbERCOjpkZWxldGVPYmplY3RTdG9yZSIpOwogICAgIGlmICghS2V5UHJlZml4Ojp2YWxpZElk
cyhkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKSkKQEAgLTg4OCw3ICs4ODYsNyBAQCBib29sIElE
QkJhY2tpbmdTdG9yZUxldmVsREI6OmRlbGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uSW50ZXJmYQogICAgIHJldHVybiBjbGVhck9iamVjdFN0b3JlKHRyYW5zYWN0aW9u
LCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKTsKIH0KIAotYm9vbCBJREJCYWNraW5nU3RvcmVM
ZXZlbERCOjpnZXRSZWNvcmQoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmIHRy
YW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29u
c3QgSURCS2V5JiBrZXksIFZlY3RvcjxjaGFyPiYgcmVjb3JkKQorYm9vbCBJREJCYWNraW5nU3Rv
cmVMZXZlbERCOjpnZXRSZWNvcmQoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCJiB0
cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IElEQktleSYga2V5LCBWZWN0b3I8Y2hhcj4mIHJlY29yZCkKIHsKICAgICBMT0coU3RvcmFn
ZUFQSSwgIklEQkJhY2tpbmdTdG9yZUxldmVsREI6OmdldFJlY29yZCIpOwogICAgIGlmICghS2V5
UHJlZml4Ojp2YWxpZElkcyhkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKSkKQEAgLTk0Niw3ICs5
NDQsNyBAQCBXQVJOX1VOVVNFRF9SRVRVUk4gc3RhdGljIGJvb2wgZ2V0TmV3VmVyc2lvbk51bWJl
cihMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIElEQkJhY2tpbmdTdG9yZUxldmVsREI6OnB1dFJlY29yZChJREJCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbkludGVyZmFjZSYgdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmIGtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IHBycFZhbHVlLCBJREJSZWNvcmRJZGVudGlmaWVyKiByZWNvcmRJZGVudGlmaWVyKQorYm9v
bCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpwdXRSZWNvcmQoSURCQmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb25MZXZlbERCJiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYga2V5LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cHJwVmFsdWUsIElEQlJlY29yZElkZW50aWZpZXIqIHJlY29yZElkZW50aWZpZXIpCiB7CiAgICAg
TE9HKFN0b3JhZ2VBUEksICJJREJCYWNraW5nU3RvcmVMZXZlbERCOjpwdXRSZWNvcmQiKTsKICAg
ICBpZiAoIUtleVByZWZpeDo6dmFsaWRJZHMoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkpCkBA
IC05NzYsNyArOTc0LDcgQEAgYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpwdXRSZWNvcmQo
SURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmIHRyYW4KICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpjbGVhck9iamVjdFN0b3JlKElE
QkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiB0cmFuc2FjdGlvbiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCitib29sIElEQkJhY2tpbmdTdG9yZUxl
dmVsREI6OmNsZWFyT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERC
JiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQp
CiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJCYWNraW5nU3RvcmVMZXZlbERCOjpjbGVhck9i
amVjdFN0b3JlIik7CiAgICAgaWYgKCFLZXlQcmVmaXg6OnZhbGlkSWRzKGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQpKQpAQCAtOTg5LDcgKzk4Nyw3IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlTGV2
ZWxEQjo6Y2xlYXJPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFj
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6ZGVs
ZXRlUmVjb3JkKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiB0cmFuc2FjdGlv
biwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQlJl
Y29yZElkZW50aWZpZXImIHJlY29yZElkZW50aWZpZXIpCitib29sIElEQkJhY2tpbmdTdG9yZUxl
dmVsREI6OmRlbGV0ZVJlY29yZChJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREImIHRy
YW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29u
c3QgSURCUmVjb3JkSWRlbnRpZmllciYgcmVjb3JkSWRlbnRpZmllcikKIHsKICAgICBMT0coU3Rv
cmFnZUFQSSwgIklEQkJhY2tpbmdTdG9yZUxldmVsREI6OmRlbGV0ZVJlY29yZCIpOwogCkBAIC0x
MDA2LDcgKzEwMDQsNyBAQCBib29sIElEQkJhY2tpbmdTdG9yZUxldmVsREI6OmRlbGV0ZVJlY29y
ZChJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYgdAogfQogCiAKLWJvb2wgSURC
QmFja2luZ1N0b3JlTGV2ZWxEQjo6Z2V0S2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihJREJCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYgdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90JiBrZXlHZW5lcmF0b3JDdXJyZW50
TnVtYmVyKQorYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpnZXRLZXlHZW5lcmF0b3JDdXJy
ZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQiYgdHJhbnNhY3Rpb24s
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90JiBrZXlH
ZW5lcmF0b3JDdXJyZW50TnVtYmVyKQogewogICAgIGlmICghS2V5UHJlZml4Ojp2YWxpZElkcyhk
YXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA1
Niw3ICsxMDU0LDcgQEAgYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpnZXRLZXlHZW5lcmF0
b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZVRyYW5zYWMKICAgICByZXR1cm4ga2V5R2Vu
ZXJhdG9yQ3VycmVudE51bWJlcjsKIH0KIAotYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpt
YXliZVVwZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb25JbnRlcmZhY2UmIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBuZXdOdW1iZXIsIGJvb2wgY2hlY2tDdXJyZW50KQorYm9v
bCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjptYXliZVVwZGF0ZUtleUdlbmVyYXRvckN1cnJlbnRO
dW1iZXIoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCJiB0cmFuc2FjdGlvbiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgbmV3TnVtYmVy
LCBib29sIGNoZWNrQ3VycmVudCkKIHsKICAgICBpZiAoIUtleVByZWZpeDo6dmFsaWRJZHMoZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwNzYs
NyArMTA3NCw3IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6bWF5YmVVcGRhdGVLZXlH
ZW5lcmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZShJ
REJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYgdHJhbnNhY3Rpb24sIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmIGtleSwgUmVm
UHRyPElEQlJlY29yZElkZW50aWZpZXI+JiBmb3VuZElEQlJlY29yZElkZW50aWZpZXIpCitib29s
IElEQkJhY2tpbmdTdG9yZUxldmVsREI6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoSURCQmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCJiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYga2V5LCBSZWZQdHI8SURCUmVj
b3JkSWRlbnRpZmllcj4mIGZvdW5kSURCUmVjb3JkSWRlbnRpZmllcikKIHsKICAgICBMT0coU3Rv
cmFnZUFQSSwgIklEQkJhY2tpbmdTdG9yZUxldmVsREI6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUi
KTsKICAgICBpZiAoIUtleVByZWZpeDo6dmFsaWRJZHMoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJ
ZCkpCkBAIC0xMTk3LDcgKzExOTUsNyBAQCBXQVJOX1VOVVNFRF9SRVRVUk4gc3RhdGljIGJvb2wg
c2V0TWF4SW5kZXhJZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbgogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIElEQkJhY2tpbmdTdG9yZUxldmVsREI6OmNyZWF0ZUluZGV4
KElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGlzVW5pcXVl
LCBib29sIGlzTXVsdGlFbnRyeSkKK2Jvb2wgSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Y3JlYXRl
SW5kZXgoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCJiB0cmFuc2FjdGlvbiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGlzVW5p
cXVlLCBib29sIGlzTXVsdGlFbnRyeSkKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQkJhY2tp
bmdTdG9yZUxldmVsREI6OmNyZWF0ZUluZGV4Iik7CiAgICAgaWYgKCFLZXlQcmVmaXg6OnZhbGlk
SWRzKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpKQpAQCAtMTIxOCw3ICsxMjE2
LDcgQEAgYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpjcmVhdGVJbmRleChJREJCYWNraW5n
U3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYgdHIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpkZWxldGVJbmRleChJREJCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbkludGVyZmFjZSYgdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpCitib29sIElEQkJhY2tpbmdTdG9yZUxl
dmVsREI6OmRlbGV0ZUluZGV4KElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQiYgdHJh
bnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IGluZGV4SWQpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJCYWNraW5nU3RvcmVMZXZl
bERCOjpkZWxldGVJbmRleCIpOwogICAgIGlmICghS2V5UHJlZml4Ojp2YWxpZElkcyhkYXRhYmFz
ZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKSkKQEAgLTEyMzUsNyArMTIzMyw3IEBAIGJvb2wg
SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6ZGVsZXRlSW5kZXgoSURCQmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb25JbnRlcmZhY2UmIHRyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSURCQmFja2lu
Z1N0b3JlTGV2ZWxEQjo6cHV0SW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uSW50ZXJmYWNlJiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBrZXksIGNvbnN0
IElEQlJlY29yZElkZW50aWZpZXIqIHJlY29yZElkZW50aWZpZXIpCitib29sIElEQkJhY2tpbmdT
dG9yZUxldmVsREI6OnB1dEluZGV4RGF0YUZvclJlY29yZChJREJCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbkxldmVsREImIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIGtleSwgY29uc3QgSURC
UmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRlbnRpZmllcikKIHsKICAgICBMT0coU3RvcmFnZUFQ
SSwgIklEQkJhY2tpbmdTdG9yZUxldmVsREI6OnB1dEluZGV4RGF0YUZvclJlY29yZCIpOwogICAg
IEFTU0VSVChrZXkuaXNWYWxpZCgpKTsKQEAgLTEyOTksNyArMTI5Nyw3IEBAIHN0YXRpYyBib29s
IHZlcnNpb25FeGlzdHMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3Jl
TGV2ZWxEQjo6ZmluZEtleUluSW5kZXgoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZh
Y2UmIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIGtleSwgVmVjdG9yPGNoYXI+JiBmb3Vu
ZEVuY29kZWRQcmltYXJ5S2V5LCBib29sJiBmb3VuZCkKK2Jvb2wgSURCQmFja2luZ1N0b3JlTGV2
ZWxEQjo6ZmluZEtleUluSW5kZXgoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCJiB0
cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBrZXksIFZlY3RvcjxjaGFyPiYgZm91bmRFbmNv
ZGVkUHJpbWFyeUtleSwgYm9vbCYgZm91bmQpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJC
YWNraW5nU3RvcmVMZXZlbERCOjpmaW5kS2V5SW5JbmRleCIpOwogICAgIEFTU0VSVChLZXlQcmVm
aXg6OnZhbGlkSWRzKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpKTsKQEAgLTEz
NDEsNyArMTMzOSw3IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6ZmluZEtleUluSW5k
ZXgoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmCiAgICAgfQogfQogCi1ib29s
IElEQkJhY2tpbmdTdG9yZUxldmVsREI6OmdldFByaW1hcnlLZXlWaWFJbmRleChJREJCYWNraW5n
U3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYgdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYg
a2V5LCBSZWZQdHI8SURCS2V5PiYgcHJpbWFyeUtleSkKK2Jvb2wgSURCQmFja2luZ1N0b3JlTGV2
ZWxEQjo6Z2V0UHJpbWFyeUtleVZpYUluZGV4KElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2
ZWxEQiYgdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYga2V5LCBSZWZQdHI8SURCS2V5PiYg
cHJpbWFyeUtleSkKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQkJhY2tpbmdTdG9yZUxldmVs
REI6OmdldFByaW1hcnlLZXlWaWFJbmRleCIpOwogICAgIGlmICghS2V5UHJlZml4Ojp2YWxpZElk
cyhkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKSkKQEAgLTEzNjIsNyArMTM2MCw3
IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Z2V0UHJpbWFyeUtleVZpYUluZGV4KElE
QkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6a2V5RXhpc3RzSW5JbmRleChJREJCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbkludGVyZmFjZSYgdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYgaW5kZXhL
ZXksIFJlZlB0cjxJREJLZXk+JiBmb3VuZFByaW1hcnlLZXksIGJvb2wmIGV4aXN0cykKK2Jvb2wg
SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6a2V5RXhpc3RzSW5JbmRleChJREJCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbkxldmVsREImIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIGluZGV4S2V5
LCBSZWZQdHI8SURCS2V5PiYgZm91bmRQcmltYXJ5S2V5LCBib29sJiBleGlzdHMpCiB7CiAgICAg
TE9HKFN0b3JhZ2VBUEksICJJREJCYWNraW5nU3RvcmVMZXZlbERCOjprZXlFeGlzdHNJbkluZGV4
Iik7CiAgICAgaWYgKCFLZXlQcmVmaXg6OnZhbGlkSWRzKGRhdGFiYXNlSWQsIG9iamVjdFN0b3Jl
SWQsIGluZGV4SWQpKQpAQCAtMTM4Myw3ICsxMzgxLDcgQEAgYm9vbCBJREJCYWNraW5nU3RvcmVM
ZXZlbERCOjprZXlFeGlzdHNJbkluZGV4KElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJm
YWMKIH0KIAogCi1ib29sIElEQkJhY2tpbmdTdG9yZUxldmVsREI6Om1ha2VJbmRleFdyaXRlcnMo
aW50NjRfdCB0cmFuc2FjdGlvbklELCBpbnQ2NF90IGRhdGFiYXNlSUQsIGNvbnN0IElEQk9iamVj
dFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlLCBJREJLZXkmIHByaW1hcnlLZXksIGJvb2wga2V5
V2FzR2VuZXJhdGVkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SURzLCBjb25zdCBWZWN0
b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlzLCBWZWN0b3I8UmVmUHRyPElEQkluZGV4V3JpdGVyTGV2
ZWxEQj4+JiBpbmRleFdyaXRlcnMsIFN0cmluZyogZXJyb3JNZXNzYWdlLCBib29sJiBjb21wbGV0
ZWQpCitib29sIElEQkJhY2tpbmdTdG9yZUxldmVsREI6Om1ha2VJbmRleFdyaXRlcnMoaW50NjRf
dCB0cmFuc2FjdGlvbklELCBpbnQ2NF90IGRhdGFiYXNlSUQsIGNvbnN0IElEQk9iamVjdFN0b3Jl
TWV0YWRhdGEmIG9iamVjdFN0b3JlLCBJREJLZXkmIHByaW1hcnlLZXksIGJvb2wga2V5V2FzR2Vu
ZXJhdGVkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SURzLCBjb25zdCBWZWN0b3I8VmVj
dG9yPFJlZlB0cjxJREJLZXk+Pj4mIGluZGV4S2V5cywgVmVjdG9yPFJlZlB0cjxJREJJbmRleFdy
aXRlckxldmVsREI+PiYgaW5kZXhXcml0ZXJzLCBTdHJpbmcqIGVycm9yTWVzc2FnZSwgYm9vbCYg
Y29tcGxldGVkKQogewogICAgIEFTU0VSVChpbmRleElEcy5zaXplKCkgPT0gaW5kZXhLZXlzLnNp
emUoKSk7CiAgICAgY29tcGxldGVkID0gZmFsc2U7CkBAIC0xODU5LDcgKzE4NTcsNyBAQCBzdGF0
aWMgYm9vbCBpbmRleEN1cnNvck9wdGlvbnMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlv
biwgaW50NjRfdCBkYXRhYmFzZQogCiAgICAgcmV0dXJuIHRydWU7CiB9Ci1QYXNzUmVmUHRyPElE
QkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6b3Bl
bk9iamVjdFN0b3JlQ3Vyc29yKGludDY0X3QgY3Vyc29ySUQsIElEQkJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uSW50ZXJmYWNlJiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlELCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSW5kZXhlZERCOjpDdXJz
b3JEaXJlY3Rpb24gZGlyZWN0aW9uKQorUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVDdXJzb3JM
ZXZlbERCPiBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVuT2JqZWN0U3RvcmVDdXJzb3IoaW50
NjRfdCBjdXJzb3JJRCwgSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCJiB0cmFuc2Fj
dGlvbiwgaW50NjRfdCBkYXRhYmFzZUlELCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElE
QktleVJhbmdlKiByYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQog
CiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVuT2Jq
ZWN0U3RvcmVDdXJzb3IiKTsKQEAgLTE4NzQsNyArMTg3Miw3IEBAIFBhc3NSZWZQdHI8SURCQmFj
a2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlPiBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVuT2Jq
ZWN0U3RvCiAgICAgcmV0dXJuIGN1cnNvci5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURC
QmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlPiBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVu
T2JqZWN0U3RvcmVLZXlDdXJzb3IoaW50NjRfdCBjdXJzb3JJRCwgSURCQmFja2luZ1N0b3JlVHJh
bnNhY3Rpb25JbnRlcmZhY2UmIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSUQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJbmRleGVkREI6OkN1
cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCitQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNv
ckxldmVsREI+IElEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9wZW5PYmplY3RTdG9yZUtleUN1cnNv
cihpbnQ2NF90IGN1cnNvcklELCBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREImIHRy
YW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSUQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29u
c3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rp
b24pCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVu
T2JqZWN0U3RvcmVLZXlDdXJzb3IiKTsKICAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJU
cmFuc2FjdGlvbiA9IElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQjo6bGV2ZWxEQlRy
YW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CkBAIC0xODg4LDcgKzE4ODYsNyBAQCBQYXNzUmVm
UHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4gSURCQmFja2luZ1N0b3JlTGV2ZWxE
Qjo6b3Blbk9iamVjdFN0bwogICAgIHJldHVybiBjdXJzb3IucmVsZWFzZSgpOwogfQogCi1QYXNz
UmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4gSURCQmFja2luZ1N0b3JlTGV2
ZWxEQjo6b3BlbkluZGV4S2V5Q3Vyc29yKGludDY0X3QgY3Vyc29ySUQsIElEQkJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlELCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2Uq
IHJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCitQYXNzUmVmUHRy
PElEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREI+IElEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9w
ZW5JbmRleEtleUN1cnNvcihpbnQ2NF90IGN1cnNvcklELCBJREJCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbkxldmVsREImIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSUQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElu
ZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBMT0coU3RvcmFnZUFQ
SSwgIklEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9wZW5JbmRleEtleUN1cnNvciIpOwogICAgIExl
dmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlVHJh
bnNhY3Rpb25MZXZlbERCOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKQEAg
LTE5MDIsNyArMTkwMCw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJm
YWNlPiBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVuSW5kZXhLZXlDCiAgICAgcmV0dXJuIGN1
cnNvci5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29ySW50
ZXJmYWNlPiBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVuSW5kZXhDdXJzb3IoaW50NjRfdCBj
dXJzb3JJRCwgSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmIHRyYW5zYWN0aW9u
LCBpbnQ2NF90IGRhdGFiYXNlSUQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9u
IGRpcmVjdGlvbikKK1Bhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2ZWxEQj4gSURC
QmFja2luZ1N0b3JlTGV2ZWxEQjo6b3BlbkluZGV4Q3Vyc29yKGludDY0X3QgY3Vyc29ySUQsIElE
QkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQiYgdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0
YWJhc2VJRCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElE
QktleVJhbmdlKiByYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQog
ewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6b3BlbkluZGV4
Q3Vyc29yIik7CiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJ
REJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREI6OmxldmVsREJUcmFuc2FjdGlvbkZyb20o
dHJhbnNhY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVMZXZlbERCLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuaAppbmRleCBiYjU2
YTY0Li43MWY4NzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuaApAQCAtMjgs
MTMgKzI4LDE1IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYgVVNFKExFVkVM
REIpCiAKLSNpbmNsdWRlICJJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJ
REJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCLmgiCisjaW5jbHVkZSAiSURCQmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb25MZXZlbERCLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURC
TWV0YWRhdGEuaCIKICNpbmNsdWRlICJJREJSZWNvcmRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
SW5kZXhlZERCLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGV2
ZWxEQlRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgpAQCAtNDQsOSArNDYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGV2
ZWxEQkNvbXBhcmF0b3I7CiBjbGFzcyBMZXZlbERCRGF0YWJhc2U7CiBjbGFzcyBMZXZlbERCVHJh
bnNhY3Rpb247Ci1jbGFzcyBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREI7CitjbGFz
cyBJREJJbmRleFdyaXRlckxldmVsREI7CiBjbGFzcyBJREJLZXk7CiBjbGFzcyBJREJLZXlSYW5n
ZTsKK2NsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwog
Y2xhc3MgU2hhcmVkQnVmZmVyOwogCkBAIC01Nyw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgZGVzdHJveUxldmVsREIoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkgPSAwOwogfTsK
IAotY2xhc3MgSURCQmFja2luZ1N0b3JlTGV2ZWxEQiBGSU5BTCA6IHB1YmxpYyBJREJCYWNraW5n
U3RvcmVJbnRlcmZhY2UgeworY2xhc3MgSURCQmFja2luZ1N0b3JlTGV2ZWxEQiA6IHB1YmxpYyBS
ZWZDb3VudGVkPElEQkJhY2tpbmdTdG9yZUxldmVsREI+IHsKIHB1YmxpYzoKICAgICBjbGFzcyBU
cmFuc2FjdGlvbjsKIApAQCAtNjgsNDMgKzcxLDQzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBvcGVuSW5NZW1vcnkoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBMZXZlbERCRmFjdG9yeSopOwogICAgIFdlYWtQdHI8SURCQmFja2luZ1N0
b3JlTGV2ZWxEQj4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha0ZhY3RvcnkuY3JlYXRl
V2Vha1B0cigpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZXN0YWJsaXNoQmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlvbklEKTsKKyAgICB2b2lkIGVzdGFibGlzaEJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JRCk7CiAKLSAgICB2aXJ0dWFs
IFZlY3RvcjxTdHJpbmc+IGdldERhdGFiYXNlTmFtZXMoKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBn
ZXREYXRhYmFzZU5hbWVzKCk7CiAKICAgICAvLyBOZXctc3R5bGUgYXN5bmNocm9ub3VzIGNhbGxi
YWNrcwotICAgIHZpcnR1YWwgdm9pZCBnZXRPckVzdGFibGlzaElEQkRhdGFiYXNlTWV0YWRhdGEo
Y29uc3QgU3RyaW5nJiBuYW1lLCBHZXRJREJEYXRhYmFzZU1ldGFkYXRhRnVuY3Rpb24pIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUs
IEJvb2xDYWxsYmFja0Z1bmN0aW9uKSBPVkVSUklERTsKKyAgICB2b2lkIGdldE9yRXN0YWJsaXNo
SURCRGF0YWJhc2VNZXRhZGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYsIGJvb2wgc3VjY2Vzcyk+IGNhbGxiYWNrRnVu
Y3Rpb24pOworICAgIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQgKGJvb2wgc3VjY2Vzcyk+IHN1Y2Nlc3NDYWxsYmFjayk7CiAKICAgICAv
LyBPbGQtc3R5bGUgc3luY2hyb25vdXMgY2FsbGJhY2tzCi0gICAgdmlydHVhbCBib29sIHVwZGF0
ZUlEQkRhdGFiYXNlVmVyc2lvbihJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYs
IGludDY0X3Qgcm93SWQsIHVpbnQ2NF90IHZlcnNpb24pIE9WRVJSSURFOworICAgIGJvb2wgdXBk
YXRlSURCRGF0YWJhc2VWZXJzaW9uKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQiYs
IGludDY0X3Qgcm93SWQsIHVpbnQ2NF90IHZlcnNpb24pOwogCi0gICAgdmlydHVhbCBib29sIGNy
ZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCkgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBib29sIGRlbGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
SW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9W
RVJSSURFIFdBUk5fVU5VU0VEX1JFVFVSTjsKKyAgICBib29sIGNyZWF0ZU9iamVjdFN0b3JlKElE
QkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQiYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgm
LCBib29sIGF1dG9JbmNyZW1lbnQpOworICAgIGJvb2wgZGVsZXRlT2JqZWN0U3RvcmUoSURCQmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQpIFdBUk5fVU5VU0VEX1JFVFVSTjsKIAotICAgIHZpcnR1YWwgYm9vbCBn
ZXRSZWNvcmQoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgVmVjdG9yPGNo
YXI+JiByZWNvcmQpIE9WRVJSSURFIFdBUk5fVU5VU0VEX1JFVFVSTjsKLSAgICB2aXJ0dWFsIGJv
b2wgcHV0UmVjb3JkKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgSURCUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURF
IFdBUk5fVU5VU0VEX1JFVFVSTjsKLSAgICB2aXJ0dWFsIGJvb2wgY2xlYXJPYmplY3RTdG9yZShJ
REJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYsIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklERSBXQVJOX1VOVVNFRF9SRVRVUk47Ci0gICAg
dmlydHVhbCBib29sIGRlbGV0ZVJlY29yZChJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVy
ZmFjZSYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJ
REJSZWNvcmRJZGVudGlmaWVyJikgT1ZFUlJJREUgV0FSTl9VTlVTRURfUkVUVVJOOwotICAgIHZp
cnR1YWwgYm9vbCBnZXRLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uSW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QmIGN1cnJlbnROdW1iZXIpIE9WRVJSSURFIFdBUk5fVU5VU0VEX1JFVFVS
TjsKLSAgICB2aXJ0dWFsIGJvb2wgbWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVy
KElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgbmV3U3RhdGUsIGJvb2wgY2hlY2tDdXJy
ZW50KSBPVkVSUklERSBXQVJOX1VOVVNFRF9SRVRVUk47Ci0gICAgdmlydHVhbCBib29sIGtleUV4
aXN0c0luT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5Jiwg
UmVmUHRyPElEQlJlY29yZElkZW50aWZpZXI+JiBmb3VuZElEQlJlY29yZElkZW50aWZpZXIpIE9W
RVJSSURFIFdBUk5fVU5VU0VEX1JFVFVSTjsKKyAgICBib29sIGdldFJlY29yZChJREJCYWNraW5n
U3RvcmVUcmFuc2FjdGlvbkxldmVsREImLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgVmVjdG9yPGNoYXI+JiByZWNvcmQpIFdBUk5fVU5V
U0VEX1JFVFVSTjsKKyAgICBib29sIHB1dFJlY29yZChJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bkxldmVsREImLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29u
c3QgSURCS2V5JiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCBJREJSZWNvcmRJZGVu
dGlmaWVyKikgV0FSTl9VTlVTRURfUkVUVVJOOworICAgIGJvb2wgY2xlYXJPYmplY3RTdG9yZShJ
REJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREImLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCkgV0FSTl9VTlVTRURfUkVUVVJOOworICAgIGJvb2wgZGVsZXRl
UmVjb3JkKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQiYsIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJSZWNvcmRJZGVudGlmaWVyJikg
V0FSTl9VTlVTRURfUkVUVVJOOworICAgIGJvb2wgZ2V0S2V5R2VuZXJhdG9yQ3VycmVudE51bWJl
cihJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREImLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCYgY3VycmVudE51bWJlcikgV0FSTl9VTlVT
RURfUkVUVVJOOworICAgIGJvb2wgbWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVy
KElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQiYsIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IG5ld1N0YXRlLCBib29sIGNoZWNrQ3VycmVu
dCkgV0FSTl9VTlVTRURfUkVUVVJOOworICAgIGJvb2wga2V5RXhpc3RzSW5PYmplY3RTdG9yZShJ
REJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREImLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgUmVmUHRyPElEQlJlY29yZElkZW50
aWZpZXI+JiBmb3VuZElEQlJlY29yZElkZW50aWZpZXIpIFdBUk5fVU5VU0VEX1JFVFVSTjsKIAot
ICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbklu
dGVyZmFjZSYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IGluZGV4SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wg
aXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5KSBPVkVSUklERSBXQVJOX1VOVVNFRF9SRVRVUk47
Ci0gICAgdmlydHVhbCBib29sIGRlbGV0ZUluZGV4KElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
SW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCkgT1ZFUlJJREUgV0FSTl9VTlVTRURfUkVUVVJOOwotICAgIHZpcnR1YWwg
Ym9vbCBwdXRJbmRleERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRl
cmZhY2UmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBjb25zdCBJREJSZWNvcmRJZGVudGlmaWVyKikgT1ZF
UlJJREUgV0FSTl9VTlVTRURfUkVUVVJOOwotICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltYXJ5S2V5
VmlhSW5kZXgoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJ
REJLZXkmLCBSZWZQdHI8SURCS2V5PiYgcHJpbWFyeUtleSkgT1ZFUlJJREUgV0FSTl9VTlVTRURf
UkVUVVJOOwotICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlzdHNJbkluZGV4KElEQkJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBpbmRleEtleSwgUmVmUHRy
PElEQktleT4mIGZvdW5kUHJpbWFyeUtleSwgYm9vbCYgZXhpc3RzKSBPVkVSUklERSBXQVJOX1VO
VVNFRF9SRVRVUk47CisgICAgYm9vbCBjcmVhdGVJbmRleChJREJCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbkxldmVsREImLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
aW50NjRfdCBpbmRleElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBi
b29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSkgV0FSTl9VTlVTRURfUkVUVVJOOworICAg
IGJvb2wgZGVsZXRlSW5kZXgoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCJiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkg
V0FSTl9VTlVTRURfUkVUVVJOOworICAgIGJvb2wgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKElEQkJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQiYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0IElE
QlJlY29yZElkZW50aWZpZXIqKSBXQVJOX1VOVVNFRF9SRVRVUk47CisgICAgYm9vbCBnZXRQcmlt
YXJ5S2V5VmlhSW5kZXgoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCJiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29u
c3QgSURCS2V5JiwgUmVmUHRyPElEQktleT4mIHByaW1hcnlLZXkpIFdBUk5fVU5VU0VEX1JFVFVS
TjsKKyAgICBib29sIGtleUV4aXN0c0luSW5kZXgoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25M
ZXZlbERCJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBpbmRleEtleSwgUmVmUHRyPElEQktleT4mIGZvdW5k
UHJpbWFyeUtleSwgYm9vbCYgZXhpc3RzKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlPiBvcGVuT2JqZWN0
U3RvcmVLZXlDdXJzb3IoaW50NjRfdCBjdXJzb3JJRCwgSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rp
b25JbnRlcmZhY2UmLCBpbnQ2NF90IGRhdGFiYXNlSUQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
Y29uc3QgSURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbikgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4g
b3Blbk9iamVjdFN0b3JlQ3Vyc29yKGludDY0X3QgY3Vyc29ySUQsIElEQkJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uSW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlELCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVDdXJzb3JJbnRl
cmZhY2U+IG9wZW5JbmRleEtleUN1cnNvcihpbnQ2NF90IGN1cnNvcklELCBJREJCYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbkludGVyZmFjZSYsIGludDY0X3QgZGF0YWJhc2VJRCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiwgSW5kZXhlZERC
OjpDdXJzb3JEaXJlY3Rpb24pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJC
YWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2U+IG9wZW5JbmRleEN1cnNvcihpbnQ2NF90IGN1cnNv
cklELCBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYsIGludDY0X3QgZGF0YWJh
c2VJRCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktl
eVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pIE9WRVJSSURFOworICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCPiBvcGVuT2JqZWN0U3Rv
cmVLZXlDdXJzb3IoaW50NjRfdCBjdXJzb3JJRCwgSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25M
ZXZlbERCJiwgaW50NjRfdCBkYXRhYmFzZUlELCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0
IElEQktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pOworICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCPiBvcGVuT2JqZWN0U3RvcmVD
dXJzb3IoaW50NjRfdCBjdXJzb3JJRCwgSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERC
JiwgaW50NjRfdCBkYXRhYmFzZUlELCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktl
eVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pOworICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxJREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCPiBvcGVuSW5kZXhLZXlDdXJzb3IoaW50
NjRfdCBjdXJzb3JJRCwgSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCJiwgaW50NjRf
dCBkYXRhYmFzZUlELCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29u
c3QgSURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbik7CisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREI+IG9wZW5JbmRleEN1cnNv
cihpbnQ2NF90IGN1cnNvcklELCBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREImLCBp
bnQ2NF90IGRhdGFiYXNlSUQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
LCBjb25zdCBJREJLZXlSYW5nZSosIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uKTsKIAotICAg
IHZpcnR1YWwgYm9vbCBtYWtlSW5kZXhXcml0ZXJzKGludDY0X3QgdHJhbnNhY3Rpb25JRCwgaW50
NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiwgSURCS2V5JiBw
cmltYXJ5S2V5LCBib29sIGtleVdhc0dlbmVyYXRlZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBp
bmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mLCBWZWN0b3I8UmVmUHRyPElEQkluZGV4
V3JpdGVyTGV2ZWxEQj4+JiBpbmRleFdyaXRlcnMsIFN0cmluZyogZXJyb3JNZXNzYWdlLCBib29s
JiBjb21wbGV0ZWQpIE9WRVJSSURFIFdBUk5fVU5VU0VEX1JFVFVSTjsKKyAgICBib29sIG1ha2VJ
bmRleFdyaXRlcnMoaW50NjRfdCB0cmFuc2FjdGlvbklELCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNv
bnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBJREJLZXkmIHByaW1hcnlLZXksIGJvb2wga2V5
V2FzR2VuZXJhdGVkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0
b3I8VmVjdG9yPFJlZlB0cjxJREJLZXk+Pj4mLCBWZWN0b3I8UmVmUHRyPElEQkluZGV4V3JpdGVy
TGV2ZWxEQj4+JiBpbmRleFdyaXRlcnMsIFN0cmluZyogZXJyb3JNZXNzYWdlLCBib29sJiBjb21w
bGV0ZWQpIFdBUk5fVU5VU0VEX1JFVFVSTjsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJL
ZXk+IGdlbmVyYXRlS2V5KElEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgdXBk
YXRlS2V5R2VuZXJhdG9yKElEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmLCBib29sIGNoZWNrQ3VycmVu
dCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gZ2VuZXJhdGVLZXko
SURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQpOworICAgIGJvb2wgdXBkYXRlS2V5R2VuZXJhdG9yKElEQlRyYW5zYWN0aW9uQmFj
a2VuZCYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJ
REJLZXkmLCBib29sIGNoZWNrQ3VycmVudCk7CiAKICAgICBMZXZlbERCRGF0YWJhc2UqIGxldmVs
REJEYXRhYmFzZSgpIHsgcmV0dXJuIG1fZGIuZ2V0KCk7IH0KIApAQCAtMTEyLDEwICsxMTUsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbW92ZUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKElEQkJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQiopOwogCi1wcm90ZWN0ZWQ6Ci0gICAgSURCQmFj
a2luZ1N0b3JlTGV2ZWxEQihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFBhc3NPd25QdHI8TGV2
ZWxEQkRhdGFiYXNlPiwgUGFzc093blB0cjxMZXZlbERCQ29tcGFyYXRvcj4pOwotCiBwcml2YXRl
OgorICAgIElEQkJhY2tpbmdTdG9yZUxldmVsREIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBQ
YXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4sIFBhc3NPd25QdHI8TGV2ZWxEQkNvbXBhcmF0b3I+
KTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4sIFBh
c3NPd25QdHI8TGV2ZWxEQkNvbXBhcmF0b3I+KTsKIAogICAgIC8vIEZJWE1FOiBMZXZlbERCIG5l
ZWRzIHRvIHN1cHBvcnQgdWludDY0X3QgYXMgdGhlIHZlcnNpb24gdHlwZS4KQEAgLTEyMyw3ICsx
MjQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBT
dHJpbmcmIG5hbWUsIElEQkRhdGFiYXNlTWV0YWRhdGEqLCBib29sJiBzdWNjZXNzKSBXQVJOX1VO
VVNFRF9SRVRVUk47CiAgICAgYm9vbCBnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlk
LCBJREJEYXRhYmFzZU1ldGFkYXRhOjpPYmplY3RTdG9yZU1hcCogb2JqZWN0U3RvcmVzKSBXQVJO
X1VOVVNFRF9SRVRVUk47CiAKLSAgICBib29sIGZpbmRLZXlJbkluZGV4KElEQkJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiwgVmVjdG9yPGNoYXI+JiBm
b3VuZEVuY29kZWRQcmltYXJ5S2V5LCBib29sJiBmb3VuZCk7CisgICAgYm9vbCBmaW5kS2V5SW5J
bmRleChJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREImLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkm
LCBWZWN0b3I8Y2hhcj4mIGZvdW5kRW5jb2RlZFByaW1hcnlLZXksIGJvb2wmIGZvdW5kKTsKICAg
ICBib29sIGdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIElEQk9iamVjdFN0b3JlTWV0YWRhdGE6OkluZGV4TWFwKikgV0FSTl9VTlVTRURfUkVUVVJO
OwogCiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZl
bERCLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQi5oCmluZGV4IDUwN2RiZGEuLmM3ZjdiYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREIuaApAQCAt
MjYsNyArMjYsNiBAQAogI2lmbmRlZiBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREJf
aAogI2RlZmluZSBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREJfaAogCi0jaW5jbHVk
ZSAiSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UuaCIKICNpbmNsdWRlICJMZXZl
bERCVHJhbnNhY3Rpb24uaCIKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpAQCAtMzYs
MjEgKzM1LDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCQmFja2luZ1N0b3Jl
TGV2ZWxEQjsKIAotY2xhc3MgSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCIEZJTkFM
IDogcHVibGljIElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlIHsKK2NsYXNzIElE
QkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQiA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQj4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQj4gY3JlYXRlKGludDY0X3Qg
dHJhbnNhY3Rpb25JRCwgSURCQmFja2luZ1N0b3JlTGV2ZWxEQiogYmFja2luZ1N0b3JlKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bkxldmVsREIodHJhbnNhY3Rpb25JRCwgYmFja2luZ1N0b3JlKSk7CiAgICAgfQogCi0gICAgdmly
dHVhbCB+SURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCKCk7CisgICAgfklEQkJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQigpOwogCi0gICAgdmlydHVhbCB2b2lkIGJlZ2luKCkg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGNvbW1pdCgpIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCByb2xsYmFjaygpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZXNldFRyYW5z
YWN0aW9uKCkgT1ZFUlJJREU7CisgICAgdm9pZCBiZWdpbigpOworICAgIGJvb2wgY29tbWl0KCk7
CisgICAgdm9pZCByb2xsYmFjaygpOworICAgIHZvaWQgcmVzZXRUcmFuc2FjdGlvbigpOwogCi0g
ICAgc3RhdGljIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uRnJvbShJREJC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYgdHJhbnNhY3Rpb24pCisgICAgc3RhdGlj
IExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uRnJvbShJREJCYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbkxldmVsREImIHRyYW5zYWN0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQiY+KHRyYW5zYWN0
aW9uKS5tX3RyYW5zYWN0aW9uLmdldCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCSW5kZXhXcml0ZXJMZXZlbERCLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCSW5kZXhXcml0ZXJM
ZXZlbERCLmNwcAppbmRleCAwNTA3NjNmLi43NWI4MjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkluZGV4V3JpdGVyTGV2ZWxEQi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJJbmRleFdy
aXRlckxldmVsREIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIElEQkluZGV4V3JpdGVyTGV2ZWxEQjo6
SURCSW5kZXhXcml0ZXJMZXZlbERCKGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIG1ldGFkYXRhLCBj
CiB7CiB9CiAKLXZvaWQgSURCSW5kZXhXcml0ZXJMZXZlbERCOjp3cml0ZUluZGV4S2V5cyhjb25z
dCBJREJSZWNvcmRJZGVudGlmaWVyKiByZWNvcmRJZGVudGlmaWVyLCBJREJCYWNraW5nU3RvcmVJ
bnRlcmZhY2UmIGJhY2tpbmdTdG9yZSwgSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZh
Y2UmIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCkgY29uc3QKK3ZvaWQgSURCSW5kZXhXcml0ZXJMZXZlbERCOjp3cml0ZUluZGV4S2V5cyhjb25z
dCBJREJSZWNvcmRJZGVudGlmaWVyKiByZWNvcmRJZGVudGlmaWVyLCBJREJCYWNraW5nU3RvcmVM
ZXZlbERCJiBiYWNraW5nU3RvcmUsIElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQiYg
dHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBj
b25zdAogewogICAgIEFTU0VSVChyZWNvcmRJZGVudGlmaWVyKTsKICAgICBpbnQ2NF90IGluZGV4
SWQgPSBtX2luZGV4TWV0YWRhdGEuaWQ7CkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgSURCSW5kZXhX
cml0ZXJMZXZlbERCOjp3cml0ZUluZGV4S2V5cyhjb25zdCBJREJSZWNvcmRJZGVudGlmaWVyKiBy
ZWNvcmRJZGVuCiAgICAgfQogfQogCi1ib29sIElEQkluZGV4V3JpdGVyTGV2ZWxEQjo6dmVyaWZ5
SW5kZXhLZXlzKElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSYgYmFja2luZ1N0b3JlLCBJREJCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYgdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGJvb2wmIGNhbkFk
ZEtleXMsIGNvbnN0IElEQktleSogcHJpbWFyeUtleSwgU3RyaW5nKiBlcnJvck1lc3NhZ2UpIGNv
bnN0Citib29sIElEQkluZGV4V3JpdGVyTGV2ZWxEQjo6dmVyaWZ5SW5kZXhLZXlzKElEQkJhY2tp
bmdTdG9yZUxldmVsREImIGJhY2tpbmdTdG9yZSwgSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25M
ZXZlbERCJiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgYm9vbCYgY2FuQWRkS2V5cywgY29uc3QgSURCS2V5KiBw
cmltYXJ5S2V5LCBTdHJpbmcqIGVycm9yTWVzc2FnZSkgY29uc3QKIHsKICAgICBjYW5BZGRLZXlz
ID0gZmFsc2U7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2luZGV4S2V5cy5zaXplKCk7
ICsraSkgewpAQCAtNjksNyArNjksNyBAQCBib29sIElEQkluZGV4V3JpdGVyTGV2ZWxEQjo6dmVy
aWZ5SW5kZXhLZXlzKElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSYgYmFja2luZ1N0bwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIElEQkluZGV4V3JpdGVyTGV2ZWxEQjo6YWRkaW5nS2V5QWxs
b3dlZChJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UmIGJhY2tpbmdTdG9yZSwgSURCQmFja2luZ1N0
b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkqIGlu
ZGV4S2V5LCBjb25zdCBJREJLZXkqIHByaW1hcnlLZXksIGJvb2wmIGFsbG93ZWQpIGNvbnN0Citi
b29sIElEQkluZGV4V3JpdGVyTGV2ZWxEQjo6YWRkaW5nS2V5QWxsb3dlZChJREJCYWNraW5nU3Rv
cmVMZXZlbERCJiBiYWNraW5nU3RvcmUsIElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxE
QiYgdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSogaW5kZXhLZXksIGNvbnN0IElEQktleSog
cHJpbWFyeUtleSwgYm9vbCYgYWxsb3dlZCkgY29uc3QKIHsKICAgICBhbGxvd2VkID0gZmFsc2U7
CiAgICAgaWYgKCFtX2luZGV4TWV0YWRhdGEudW5pcXVlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkluZGV4V3JpdGVyTGV2ZWxEQi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJJbmRleFdyaXRl
ckxldmVsREIuaAppbmRleCBiNzFlMjZiLi40YzM1MjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkluZGV4V3JpdGVyTGV2ZWxEQi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCSW5kZXhXcml0
ZXJMZXZlbERCLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNpZm5kZWYgSURCSW5kZXhXcml0ZXJMZXZl
bERCX2gKICNkZWZpbmUgSURCSW5kZXhXcml0ZXJMZXZlbERCX2gKIAotI2luY2x1ZGUgIklEQkJh
Y2tpbmdTdG9yZUludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZUxldmVsREIu
aCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmQuaCIKICNpbmNsdWRlICJJREJNZXRhZGF0
YS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00NiwxNCArNDYsMTQgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkluZGV4V3JpdGVyTGV2ZWxEQihp
bmRleE1ldGFkYXRhLCBpbmRleEtleXMpKTsKICAgICB9CiAKLSAgICBib29sIHZlcmlmeUluZGV4
S2V5cyhJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UmLCBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bkludGVyZmFjZSYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsIGJvb2wmIGNhbkFkZEtleXMsIGNvbnN0IElEQktleSogcHJpbWFyeUtl
eSA9IDAsIFN0cmluZyogZXJyb3JNZXNzYWdlID0gMCkgY29uc3QgV0FSTl9VTlVTRURfUkVUVVJO
OworICAgIGJvb2wgdmVyaWZ5SW5kZXhLZXlzKElEQkJhY2tpbmdTdG9yZUxldmVsREImLCBJREJC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREImLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBib29sJiBjYW5BZGRLZXlzLCBjb25z
dCBJREJLZXkqIHByaW1hcnlLZXkgPSAwLCBTdHJpbmcqIGVycm9yTWVzc2FnZSA9IDApIGNvbnN0
IFdBUk5fVU5VU0VEX1JFVFVSTjsKIAotICAgIHZvaWQgd3JpdGVJbmRleEtleXMoY29uc3QgSURC
UmVjb3JkSWRlbnRpZmllciosIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSYsIElEQkJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQpIGNvbnN0OworICAgIHZvaWQgd3JpdGVJbmRleEtleXMoY29uc3QgSURCUmVj
b3JkSWRlbnRpZmllciosIElEQkJhY2tpbmdTdG9yZUxldmVsREImLCBJREJCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbkxldmVsREImLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgSURCSW5kZXhXcml0ZXJMZXZlbERCKGNvbnN0
IElEQkluZGV4TWV0YWRhdGEmLCBjb25zdCBJbmRleEtleXMmKTsKIAotICAgIGJvb2wgYWRkaW5n
S2V5QWxsb3dlZChJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UmLCBJREJCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbkludGVyZmFjZSYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSogaW5kZXhLZXksIGNvbnN0IElEQktl
eSogcHJpbWFyeUtleSwgYm9vbCYgYWxsb3dlZCkgY29uc3QgV0FSTl9VTlVTRURfUkVUVVJOOwor
ICAgIGJvb2wgYWRkaW5nS2V5QWxsb3dlZChJREJCYWNraW5nU3RvcmVMZXZlbERCJiwgSURCQmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5KiBpbmRleEtleSwg
Y29uc3QgSURCS2V5KiBwcmltYXJ5S2V5LCBib29sJiBhbGxvd2VkKSBjb25zdCBXQVJOX1VOVVNF
RF9SRVRVUk47CiAKICAgICBjb25zdCBJREJJbmRleE1ldGFkYXRhIG1faW5kZXhNZXRhZGF0YTsK
ICAgICBJbmRleEtleXMgbV9pbmRleEtleXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCU2VydmVyQ29ubmVj
dGlvbkxldmVsREIuY3BwCmluZGV4IDBmZmQ0ZWMuLjBlODFjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCU2VydmVyQ29ubmVjdGlvbkxl
dmVsREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIv
SURCU2VydmVyQ29ubmVjdGlvbkxldmVsREIuY3BwCkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBJ
REJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQjo6Z2V0KElEQlRyYW5zYWN0aW9uQmFja2VuZCYgdHJh
bnNhY3Rpb24sIGNvbnN0IEcKICAgICBpZiAob3BlcmF0aW9uLmtleVJhbmdlKCktPmlzT25seUtl
eSgpKQogICAgICAgICBrZXkgPSBvcGVyYXRpb24ua2V5UmFuZ2UoKS0+bG93ZXIoKTsKICAgICBl
bHNlIHsKLSAgICAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4gYmFj
a2luZ1N0b3JlQ3Vyc29yOworICAgICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2
ZWxEQj4gYmFja2luZ1N0b3JlQ3Vyc29yOwogICAgICAgICBpbnQ2NF90IGN1cnNvcklEID0gbV9u
ZXh0Q3Vyc29ySUQrKzsKIAogICAgICAgICBpZiAob3BlcmF0aW9uLmluZGV4SUQoKSA9PSBJREJJ
bmRleE1ldGFkYXRhOjpJbnZhbGlkSWQpIHsKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIElEQlNl
cnZlckNvbm5lY3Rpb25MZXZlbERCOjpvcGVuQ3Vyc29yKElEQlRyYW5zYWN0aW9uQmFja2VuZCYg
dHJhbnNhY3Rpb24sCiAKICAgICBpbnQ2NF90IGN1cnNvcklEID0gbV9uZXh0Q3Vyc29ySUQrKzsK
IAotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2U+IGJhY2tpbmdTdG9y
ZUN1cnNvcjsKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2ZWxEQj4gYmFja2lu
Z1N0b3JlQ3Vyc29yOwogICAgIGlmIChvcGVyYXRpb24uaW5kZXhJRCgpID09IElEQkluZGV4TWV0
YWRhdGE6OkludmFsaWRJZCkgewogICAgICAgICBBU1NFUlQob3BlcmF0aW9uLmN1cnNvclR5cGUo
KSAhPSBJbmRleGVkREI6OkN1cnNvcktleU9ubHkpOwogICAgICAgICBiYWNraW5nU3RvcmVDdXJz
b3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlQ3Vyc29yKGN1cnNvcklELCAqYmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uLmRhdGFiYXNlKCkuaWQoKSwgb3BlcmF0
aW9uLm9iamVjdFN0b3JlSUQoKSwgb3BlcmF0aW9uLmtleVJhbmdlKCksIG9wZXJhdGlvbi5kaXJl
Y3Rpb24oKSk7CkBAIC00NzQsNyArNDc0LDcgQEAgdm9pZCBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2
ZWxEQjo6Y291bnQoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiB0cmFuc2FjdGlvbiwgY29uc3QKICAg
ICBBU1NFUlQoYmFja2luZ1N0b3JlVHJhbnNhY3Rpb24pOwogCiAgICAgdWludDMyX3QgY291bnQg
PSAwOwotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2U+IGJhY2tpbmdT
dG9yZUN1cnNvcjsKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2ZWxEQj4gYmFj
a2luZ1N0b3JlQ3Vyc29yOwogCiAgICAgaW50NjRfdCBjdXJzb3JJRCA9IG1fbmV4dEN1cnNvcklE
Kys7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERC
OjpkZWxldGVSYW5nZShJREJUcmFuc2FjdGlvbkJhY2tlbmQmIHRyYW5zYWN0aW9uLAogCiAgICAg
aW50NjRfdCBjdXJzb3JJRCA9IG1fbmV4dEN1cnNvcklEKys7CiAKLSAgICBSZWZQdHI8SURCQmFj
a2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlPiBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdT
dG9yZS0+b3Blbk9iamVjdFN0b3JlQ3Vyc29yKGN1cnNvcklELCAqYmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24sIHRyYW5zYWN0aW9uLmRhdGFiYXNlKCkuaWQoKSwgb3BlcmF0aW9uLm9iamVjdFN0b3Jl
SUQoKSwgb3BlcmF0aW9uLmtleVJhbmdlKCksIEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7CisgICAg
UmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREI+IGJhY2tpbmdTdG9yZUN1cnNvciA9
IG1fYmFja2luZ1N0b3JlLT5vcGVuT2JqZWN0U3RvcmVDdXJzb3IoY3Vyc29ySUQsICpiYWNraW5n
U3RvcmVUcmFuc2FjdGlvbiwgdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5pZCgpLCBvcGVyYXRpb24u
b2JqZWN0U3RvcmVJRCgpLCBvcGVyYXRpb24ua2V5UmFuZ2UoKSwgSW5kZXhlZERCOjpDdXJzb3JO
ZXh0KTsKICAgICBpZiAoYmFja2luZ1N0b3JlQ3Vyc29yKSB7CiAgICAgICAgIGRvIHsKICAgICAg
ICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUtPmRlbGV0ZVJlY29yZCgqYmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24sIHRyYW5zYWN0aW9uLmRhdGFiYXNlKCkuaWQoKSwgb3BlcmF0aW9uLm9iamVjdFN0
b3JlSUQoKSwgYmFja2luZ1N0b3JlQ3Vyc29yLT5yZWNvcmRJZGVudGlmaWVyKCkpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MzhmZjMyMi4uMzkyZmVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTc0OCw4ICsxNzQ4LDYgQEAKIAkJNTE2NjBBQzExODI4
Qzg0NjAwMDc0Q0FEIC8qIElEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjYwQUJEMTgyOEM4NDYwMDA3
NENBRCAvKiBJREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCLmggKi87IH07CiAJCTUxNjYwQUMy
MTgyOEM4NDYwMDA3NENBRCAvKiBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2NjBBQkUx
ODI4Qzg0NjAwMDc0Q0FEIC8qIElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQi5jcHAg
Ki87IH07CiAJCTUxNjYwQUMzMTgyOEM4NDYwMDA3NENBRCAvKiBJREJCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbkxldmVsREIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNjYwQUJGMTgyOEM4NDYwMDA3NENBRCAvKiBJREJCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbkxldmVsREIuaCAqLzsgfTsKLQkJNTE2NjBBQzYxODI4Qzg2MDAwMDc0Q0FEIC8qIElEQkJh
Y2tpbmdTdG9yZUN1cnNvckludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE2NjBBQzQxODI4Qzg2MDAwMDc0Q0FEIC8qIElEQkJhY2tpbmdT
dG9yZUN1cnNvckludGVyZmFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTUxNjYwQUM3MTgyOEM4NjAwMDA3NENBRCAvKiBJREJCYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbkludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE2NjBBQzUxODI4Qzg2MDAwMDc0Q0FEIC8qIElEQkJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uSW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTE2NzMwQTMxODJEOEZCQjAwM0ZBRjVDIC8qIElEQkN1cnNvckJh
Y2tlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE2NzMwQTExODJEOEZCQjAwM0ZBRjVDIC8qIElEQkN1cnNvckJhY2tlbmQuY3BwICovOyB9Owog
CQk1MTY3MzBBNDE4MkQ4RkJCMDAzRkFGNUMgLyogSURCQ3Vyc29yQmFja2VuZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2NzMwQTIxODJEOEZCQjAw
M0ZBRjVDIC8qIElEQkN1cnNvckJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTY5NTM5NzEzMjlBM0M4MDBCOTJEMDQgLyogSWNvbkRh
dGFiYXNlQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTY5NTM5NTEzMjlBM0M4MDBCOTJEMDQgLyogSWNvbkRhdGFiYXNlQmFzZS5jcHAgKi87
IH07CkBAIC0xODQ3LDcgKzE4NDUsNiBAQAogCQk1MUUxRUNDMTBDOTFDOTA0MDBEQzI1NUIgLyog
SWNvblJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFFMUVDQkIwQzkxQzkwNDAwREMyNTVCIC8qIEljb25SZWNvcmQuaCAqLzsgfTsKIAkJNTFF
MUVDQzIwQzkxQzkwNDAwREMyNTVCIC8qIFBhZ2VVUkxSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMUVDQkMwQzkxQzkwNDAwREMyNTVC
IC8qIFBhZ2VVUkxSZWNvcmQuY3BwICovOyB9OwogCQk1MUUxRUNDMzBDOTFDOTA0MDBEQzI1NUIg
LyogUGFnZVVSTFJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFFMUVDQkQwQzkxQzkwNDAwREMyNTVCIC8qIFBhZ2VVUkxSZWNvcmQuaCAqLzsg
fTsKLQkJNTFFMzM3RjQxODEyNUFFMzAwMDdBMjQ2IC8qIElEQkJhY2tpbmdTdG9yZUludGVyZmFj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMzM3
RjMxODEyNUFFMzAwMDdBMjQ2IC8qIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRTNGOUM3MERBMDU5
REMwMDI1MDkxMSAvKiBTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxRTNGOUM1MERBMDU5REMwMDI1MDkxMSAvKiBTdG9yYWdlLmNwcCAq
LzsgfTsKIAkJNTFFM0Y5RDYwREEwNUUxRDAwMjUwOTExIC8qIEpTU3RvcmFnZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzRjlENDBEQTA1RTFE
MDAyNTA5MTEgLyogSlNTdG9yYWdlLmNwcCAqLzsgfTsKIAkJNTFFNDE0MzQxNkE2NTk2MzAwQzYz
M0M3IC8qIFJlc291cmNlSGFuZGxlVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTQxNDMyMTZBNjU5NTEwMEM2MzNDNyAvKiBSZXNvdXJjZUhh
bmRsZVR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTg0NTEsOCArODQ0OCw2IEBACiAJCTUxNjYwQUJEMTgyOEM4NDYwMDA3NENBRCAvKiBJ
REJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IElEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE2NjBBQkUxODI4Qzg0NjAwMDc0Q0FEIC8qIElEQkJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uTGV2ZWxEQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTY2MEFCRjE4MjhDODQ2MDAwNzRDQUQgLyogSURCQmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb25MZXZlbERCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElE
QkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk1MTY2MEFDNDE4MjhDODYwMDAwNzRDQUQgLyogSURCQmFja2luZ1N0b3JlQ3Vyc29y
SW50ZXJmYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkJhY2tpbmdT
dG9yZUN1cnNvckludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTY2
MEFDNTE4MjhDODYwMDAwNzRDQUQgLyogSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZh
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQmFja2luZ1N0b3JlVHJh
bnNhY3Rpb25JbnRlcmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2NzMw
QTExODJEOEZCQjAwM0ZBRjVDIC8qIElEQkN1cnNvckJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCQ3Vyc29yQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxNjczMEEyMTgyRDhGQkIwMDNGQUY1QyAvKiBJREJDdXJzb3JC
YWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkN1cnNvckJhY2tl
bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2OTUzOTUxMzI5QTNDODAwQjky
RDA0IC8qIEljb25EYXRhYmFzZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSWNvbkRhdGFiYXNlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC04NTY5LDcgKzg1NjQsNiBAQAogCQk1MUUxRUNCQjBDOTFDOTA0MDBEQzI1NUIgLyogSWNv
blJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJY29uUmVjb3JkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTFFQ0JDMEM5MUM5MDQwMERDMjU1QiAv
KiBQYWdlVVJMUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFBhZ2VVUkxSZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUUxRUNC
RDBDOTFDOTA0MDBEQzI1NUIgLyogUGFnZVVSTFJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQYWdlVVJMUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTUxRTMzN0YzMTgxMjVBRTMwMDA3QTI0NiAvKiBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQmFja2luZ1N0b3JlSW50ZXJm
YWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTNGOUM0MERBMDU5REMwMDI1
MDkxMSAvKiBTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3Jh
Z2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFM0Y5QzUwREEwNTlEQzAwMjUw
OTExIC8qIFN0b3JhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTNGOUQxMERBMDVE
NzEwMDI1MDkxMSAvKiBTdG9yYWdlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTdG9yYWdl
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2OTk3LDkgKzE2OTkxLDYgQEAK
IAkJCQk1MUQ3MTk2RjE4MTEwNkRGMDAxNkRDNTEgLyogSURCQW55LmNwcCAqLywKIAkJCQk1MUQ3
MTk3MDE4MTEwNkRGMDAxNkRDNTEgLyogSURCQW55LmggKi8sCiAJCQkJNTFENzE5NzExODExMDZE
RjAwMTZEQzUxIC8qIElEQkFueS5pZGwgKi8sCi0JCQkJNTE2NjBBQzQxODI4Qzg2MDAwMDc0Q0FE
IC8qIElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZS5oICovLAotCQkJCTUxRTMzN0YzMTgx
MjVBRTMwMDA3QTI0NiAvKiBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UuaCAqLywKLQkJCQk1MTY2
MEFDNTE4MjhDODYwMDAwNzRDQUQgLyogSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZh
Y2UuaCAqLywKIAkJCQk1MUQ3MTk3NDE4MTEwNkRGMDAxNkRDNTEgLyogSURCQ2FsbGJhY2tzLmgg
Ki8sCiAJCQkJNTFENzE5NzUxODExMDZERjAwMTZEQzUxIC8qIElEQkN1cnNvci5jcHAgKi8sCiAJ
CQkJNTFENzE5NzYxODExMDZERjAwMTZEQzUxIC8qIElEQkN1cnNvci5oICovLApAQCAtMjI0MzAs
NyArMjI0MjEsNiBAQAogCQkJCUEzQkI1OUY0MTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2
ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg1RjNEMDk3NjU3NjYwMDU4MjZEOSAv
KiBEb2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTZEMzczNjBBREJBNURF
MDBBNDU1NEQgLyogRG9jdW1lbnRMb2FkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxNjYwQUM3
MTgyOEM4NjAwMDA3NENBRCAvKiBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOEExMkUzNUQxMUZBMzMyODAwMjU4MzZBIC8qIERvY3VtZW50
TG9hZFRpbWluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUQyQkE4M0MwOUEyNEI5MTAwNkMwQUM0
IC8qIERvY3VtZW50TWFya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTA1N0ZBNjEyMjA3MzEx
MDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAg
LTIyODQ5LDcgKzIyODM5LDYgQEAKIAkJCQlDREFCNkQyOTE3QzdERTZDMDBDNjBCMzQgLyogTWVk
aWFDb250cm9sc0hvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOEEwNkQwMTMzQzA0RDUwMENE
Mzc5QyAvKiBFdmVudERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEOTBDMEQy
QTE3Q0UwMEI5OTE4RiAvKiBFdmVudEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE2
NjBBQzYxODI4Qzg2MDAwMDc0Q0FEIC8qIElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2NjUwMTMxNDRGQUE0MjAwRjZCQjUxIC8qIEV2ZW50RmFj
dG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFENzE5RUMxODExMDZFMDAwMTZEQzUxIC8qIElE
QlJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzA5QTUzMEIwNjREQjMwMDVBQkQ0RCAv
KiBFdmVudEhhbmRsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjMzMDIsNyArMjMyOTEsNiBAQAog
CQkJCTFDODFCQTBBMEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MThGODgwNTBGRjk1N0FGMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdv
cmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRBMTVFQ0ExMkIwM0Y1MDAwM0E1ODNBIC8qIEpT
QW5hbHlzZXJOb2RlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MUUzMzdGNDE4MTI1QUUzMDAwN0Ey
NDYgLyogSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURG
MzFEQjA5RDFDMTIzMDAwQkUzMjUgLyogSlNBdHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGREEx
NUU5RTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkRGN0U5QzQxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCg==
</data>
<flag name="review"
          id="240435"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>