<?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>143158</bug_id>
          
          <creation_ts>2015-03-27 15:36:07 -0700</creation_ts>
          <short_desc>HashTable should have inline capacity</short_desc>
          <delta_ts>2015-04-06 14:28:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1080778</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-27 15:36:07 -0700</bug_when>
    <thetext>Small HashSets have terrible performance compared to an array.  Why not use an array with small sets?  This is a step towards getting that working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080782</commentid>
    <comment_count>1</comment_count>
      <attachid>249614</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-27 15:40:48 -0700</bug_when>
    <thetext>Created attachment 249614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080804</commentid>
    <comment_count>2</comment_count>
      <attachid>249622</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-27 16:36:06 -0700</bug_when>
    <thetext>Created attachment 249622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080824</commentid>
    <comment_count>3</comment_count>
      <attachid>249626</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-27 17:43:00 -0700</bug_when>
    <thetext>Created attachment 249626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080841</commentid>
    <comment_count>4</comment_count>
      <attachid>249626</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2015-03-27 18:32:59 -0700</bug_when>
    <thetext>Comment on attachment 249626
Patch

Attachment 249626 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/5911759877570560

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080842</commentid>
    <comment_count>5</comment_count>
      <attachid>249629</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2015-03-27 18:33:02 -0700</bug_when>
    <thetext>Created attachment 249629
Archive of layout-test-results from ews105 for mac-mavericks-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: ews105  Port: mac-mavericks-wk2  Platform: Mac OS X 10.9.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080843</commentid>
    <comment_count>6</comment_count>
      <attachid>249630</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-27 18:37:47 -0700</bug_when>
    <thetext>Created attachment 249630
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080854</commentid>
    <comment_count>7</comment_count>
      <attachid>249635</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-27 19:17:33 -0700</bug_when>
    <thetext>Created attachment 249635
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080875</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-27 20:19:29 -0700</bug_when>
    <thetext>Feel free to review, but I&apos;m going to gather some data about HashTable sizes before landing this to have some speculative evidence that this is a good direction to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081344</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-30 15:47:39 -0700</bug_when>
    <thetext>In the destructor of HashTable I printed out the largest m_keyCount a HashTable had seen, and I found this histogram data from opening Gmail and Facebook in MiniBrowser:

Max Size    Hash Table Count
       0             1187217
       1              113932
       2               64251
       3               36962
       4               23451
       5               14731
       6               12945
       7                8240
       8                6282
      &gt;8               39911

Most HashTables never get an entry.  We already optimized for this case.
&gt;30% of HashTables that get entries only get 1 entry before being destroyed.
&gt;80% of HashTables that get entries never grow beyond a size of 8.

Based on this data, I think it is worth looking into optimizing small HashTables and this is a step in the right direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081351</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-30 15:57:59 -0700</bug_when>
    <thetext>(In reply to comment #9)
It seems like it would be especially valuable to optimize for the zero case. I don&apos;t think we quite do that right now, since an empty has table has a pretty large constant overhead. 

Perhaps a good first step is to make a table just a pointer, and use the null pointer to indicate an empty table. That would make the empty table 3X smaller.

Side note: if we want to specialize for, say, the &lt;= 3 case, the best specialization is probably to use a vector rather than a hash table.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081383</commentid>
    <comment_count>11</comment_count>
      <attachid>249635</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-03-30 16:46:41 -0700</bug_when>
    <thetext>Comment on attachment 249635
Patch

I&apos;m going to look into making a HashTable just a pointer.  Inline capacity is too specific to my one use case, and it probably shouldn&apos;t go in WTF.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249614</attachid>
            <date>2015-03-27 15:40:48 -0700</date>
            <delta_ts>2015-03-27 16:36:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143158-20150327154009.patch</filename>
            <type>text/plain</type>
            <size>100626</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODIwODQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE1LTAzLTI3ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGlubGluZSBjYXBhY2l0eSB0
byBIYXNoU2V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQzMTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3dGYvSGFzaE1hcC5oOgorICAgICAgICAqIHd0Zi9IYXNoVGFibGUuaDoKKyAgICAgICAg
KiB3dGYvTGlzdEhhc2hTZXQuaDoKKyAgICAgICAgQWRkZWQgaW5saW5lQ2FwYWNpdHkgdGVtcGxh
dGUgcGFyYW1ldGVyLCB3aGljaCBpcyBjdXJyZW50bHkgdW51c2VkLgorCiAyMDE1LTAzLTI2ICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUHJv
Z3Jlc3MgdG93YXJkcyBDTWFrZSBvbiBNYWMuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9IYXNoTWFw
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvSGFzaE1hcC5oCShyZXZpc2lvbiAxODIw
MjQpCisrKyBTb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEx
LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMyLDcgKzMyLDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEtleVZhbHVlUGFpcgogfTsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcgPSB0eXBl
bmFtZSBEZWZhdWx0SGFzaDxLZXlBcmc+OjpIYXNoLAotICAgIHR5cGVuYW1lIEtleVRyYWl0c0Fy
ZyA9IEhhc2hUcmFpdHM8S2V5QXJnPiwgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnID0gSGFzaFRy
YWl0czxNYXBwZWRBcmc+PgorICAgIHR5cGVuYW1lIEtleVRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8
S2V5QXJnPiwgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnID0gSGFzaFRyYWl0czxNYXBwZWRBcmc+
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHkgPSAwPgogY2xhc3MgSGFzaE1hcCBmaW5hbCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwcml2YXRlOgpAQCAtNTgsNyArNTgsNyBAQCBwcml2
YXRlOgogICAgIHR5cGVkZWYgSGFzaEFyZyBIYXNoRnVuY3Rpb25zOwogCiAgICAgdHlwZWRlZiBI
YXNoVGFibGU8S2V5VHlwZSwgS2V5VmFsdWVQYWlyVHlwZSwgS2V5VmFsdWVQYWlyS2V5RXh0cmFj
dG9yPEtleVZhbHVlUGFpclR5cGU+LAotICAgICAgICBIYXNoRnVuY3Rpb25zLCBLZXlWYWx1ZVBh
aXJUcmFpdHMsIEtleVRyYWl0cz4gSGFzaFRhYmxlVHlwZTsKKyAgICAgICAgSGFzaEZ1bmN0aW9u
cywgS2V5VmFsdWVQYWlyVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5PiBIYXNoVGFi
bGVUeXBlOwogCiAgICAgY2xhc3MgSGFzaE1hcEtleXNQcm94eTsKICAgICBjbGFzcyBIYXNoTWFw
VmFsdWVzUHJveHk7CkBAIC0xODgsOTggKzE4OCw5OCBAQCBzdHJ1Y3QgSGFzaE1hcFRyYW5zbGF0
b3JBZGFwdGVyIHsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotaW5saW5lIHZvaWQgSGFzaE1h
cDxULCBVLCBWLCBXLCBYPjo6c3dhcChIYXNoTWFwJiBvdGhlcikKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVf
dCBZPgoraW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6c3dhcChIYXNoTWFw
JiBvdGhlcikKIHsKICAgICBtX2ltcGwuc3dhcChvdGhlci5tX2ltcGwpOyAKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5h
bWUgWD4KLWlubGluZSB1bnNpZ25lZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpzaXplKCkgY29u
c3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5lIHVuc2lnbmVkIEhhc2hNYXA8VCwgVSwg
ViwgVywgWCwgWT46OnNpemUoKSBjb25zdAogewogICAgIHJldHVybiBtX2ltcGwuc2l6ZSgpOyAK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5h
bWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSB1bnNpZ25lZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjpjYXBhY2l0eSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KK2lubGluZSB1bnNpZ25l
ZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjpjYXBhY2l0eSgpIGNvbnN0CiB7IAogICAgIHJl
dHVybiBtX2ltcGwuY2FwYWNpdHkoKTsgCiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYm9vbCBI
YXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojppc0VtcHR5KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVf
dCBZPgoraW5saW5lIGJvb2wgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6aXNFbXB0eSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1faW1wbC5pc0VtcHR5KCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1p
bmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpiZWdpbigpIC0+IGl0ZXJhdG9yCit0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0
eXBlbmFtZSBYLCBzaXplX3QgWT4KK2lubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWCwg
WT46OmJlZ2luKCkgLT4gaXRlcmF0b3IKIHsKICAgICByZXR1cm4gbV9pbXBsLmJlZ2luKCk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjplbmQo
KSAtPiBpdGVyYXRvcgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
ViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+CitpbmxpbmUgYXV0byBIYXNoTWFw
PFQsIFUsIFYsIFcsIFgsIFk+OjplbmQoKSAtPiBpdGVyYXRvcgogewogICAgIHJldHVybiBtX2lt
cGwuZW5kKCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1l
IFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYs
IFcsIFg+OjpiZWdpbigpIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXpl
X3QgWT4KK2lubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmJlZ2luKCkgY29u
c3QgLT4gY29uc3RfaXRlcmF0b3IKIHsKICAgICByZXR1cm4gbV9pbXBsLmJlZ2luKCk7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcs
IHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjplbmQoKSBj
b25zdCAtPiBjb25zdF9pdGVyYXRvcgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+CitpbmxpbmUgYXV0
byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjplbmQoKSBjb25zdCAtPiBjb25zdF9pdGVyYXRv
cgogewogICAgIHJldHVybiBtX2ltcGwuZW5kKCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUg
YXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkgLT4g
aXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5
cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5lIGF1dG8gSGFzaE1hcDxULCBV
LCBWLCBXLCBYLCBZPjo6ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIC0+IGl0ZXJhdG9yCiB7CiAg
ICAgcmV0dXJuIG1faW1wbC5maW5kKGtleSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0
byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3Qg
LT4gY29uc3RfaXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5lIGF1dG8gSGFz
aE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0IC0+
IGNvbnN0X2l0ZXJhdG9yCiB7CiAgICAgcmV0dXJuIG1faW1wbC5maW5kKGtleSk7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5
cGVuYW1lIFg+Ci1pbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpjb250YWlucyhj
b25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KK2lubGluZSBi
b29sIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmNvbnRhaW5zKGNvbnN0IEtleVR5cGUmIGtl
eSkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbXBsLmNvbnRhaW5zKGtleSk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVu
YW1lIFg+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBl
bmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFu
c2xhdG9yLCB0eXBlbmFtZSBUWVBFPgotaW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwg
VywgWD46Oml0ZXJhdG9yCi1IYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpmaW5kKGNvbnN0IFRZUEUm
IHZhbHVlKQoraW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46Oml0ZXJh
dG9yCitIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjpmaW5kKGNvbnN0IFRZUEUmIHZhbHVlKQog
ewogICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmluZDxIYXNoTWFwVHJhbnNsYXRvckFkYXB0
ZXI8S2V5VmFsdWVQYWlyVHJhaXRzLCBIYXNoVHJhbnNsYXRvcj4+KHZhbHVlKTsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlw
ZW5hbWUgWD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5
cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgogdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRy
YW5zbGF0b3IsIHR5cGVuYW1lIFRZUEU+Ci1pbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBW
LCBXLCBYPjo6Y29uc3RfaXRlcmF0b3IgCi1IYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpmaW5kKGNv
bnN0IFRZUEUmIHZhbHVlKSBjb25zdAoraW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwg
VywgWCwgWT46OmNvbnN0X2l0ZXJhdG9yCitIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjpmaW5k
KGNvbnN0IFRZUEUmIHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUg
ZmluZDxIYXNoTWFwVHJhbnNsYXRvckFkYXB0ZXI8S2V5VmFsdWVQYWlyVHJhaXRzLCBIYXNoVHJh
bnNsYXRvcj4+KHZhbHVlKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZ
PgogdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFRZUEU+Ci1pbmxp
bmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpjb250YWlucyhjb25zdCBUWVBFJiB2YWx1
ZSkgY29uc3QKK2lubGluZSBib29sIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmNvbnRhaW5z
KGNvbnN0IFRZUEUmIHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUg
Y29udGFpbnM8SGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVyPEtleVZhbHVlUGFpclRyYWl0cywgSGFz
aFRyYW5zbGF0b3I+Pih2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlw
ZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcs
IHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlw
ZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcs
IHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogdGVtcGxh
dGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLWF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFy
ZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjppbmxpbmVTZXQoSyYm
IGtleSwgViYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKK2F1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBl
ZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmcsIGlubGluZUNhcGFj
aXR5Pjo6aW5saW5lU2V0KEsmJiBrZXksIFYmJiB2YWx1ZSkgLT4gQWRkUmVzdWx0CiB7CiAgICAg
QWRkUmVzdWx0IHJlc3VsdCA9IGlubGluZUFkZChzdGQ6OmZvcndhcmQ8Sz4oa2V5KSwgc3RkOjpm
b3J3YXJkPFY+KHZhbHVlKSk7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewpAQCAtMjg5
LDY0ICsyODksNjQgQEAgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5h
bWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5
cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5h
bWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5
cGVuYW1lIE1hcHBlZFRyYWl0c0FyZywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogdGVtcGxhdGU8
dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLUFMV0FZU19JTkxJTkUgYXV0byBIYXNoTWFwPEtleUFy
ZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46Omlu
bGluZUFkZChLJiYga2V5LCBWJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAorQUxXQVlTX0lOTElORSBh
dXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFw
cGVkVHJhaXRzQXJnLCBpbmxpbmVDYXBhY2l0eT46OmlubGluZUFkZChLJiYga2V5LCBWJiYgdmFs
dWUpIC0+IEFkZFJlc3VsdAogewogICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkPEhhc2hN
YXBUcmFuc2xhdG9yPEtleVZhbHVlUGFpclRyYWl0cywgSGFzaEZ1bmN0aW9ucz4+KHN0ZDo6Zm9y
d2FyZDxLPihrZXkpLCBzdGQ6OmZvcndhcmQ8Vj4odmFsdWUpKTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVu
YW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgordGVtcGxhdGU8dHlw
ZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVu
YW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnLCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYXV0byBIYXNoTWFwPEtleUFyZywgTWFw
cGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OnNldChjb25z
dCBLZXlUeXBlJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAorYXV0byBIYXNoTWFwPEtl
eUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZywg
aW5saW5lQ2FwYWNpdHk+OjpzZXQoY29uc3QgS2V5VHlwZSYga2V5LCBUJiYgbWFwcGVkKSAtPiBB
ZGRSZXN1bHQKIHsKICAgICByZXR1cm4gaW5saW5lU2V0KGtleSwgc3RkOjpmb3J3YXJkPFQ+KG1h
cHBlZCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFy
ZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBw
ZWRUcmFpdHNBcmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFy
ZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBw
ZWRUcmFpdHNBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci1hdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywg
TWFwcGVkVHJhaXRzQXJnPjo6c2V0KEtleVR5cGUmJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJl
c3VsdAorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNB
cmcsIE1hcHBlZFRyYWl0c0FyZywgaW5saW5lQ2FwYWNpdHk+OjpzZXQoS2V5VHlwZSYmIGtleSwg
VCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CiB7CiAgICAgcmV0dXJuIGlubGluZVNldChXVEY6Om1v
dmUoa2V5KSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUg
S2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUg
S2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eT4KIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBLLCB0eXBl
bmFtZSBWPgotYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFp
dHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChLJiYga2V5LCBWJiYgdmFsdWUpIC0+IEFkZFJl
c3VsdAorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNB
cmcsIE1hcHBlZFRyYWl0c0FyZywgaW5saW5lQ2FwYWNpdHk+OjphZGQoSyYmIGtleSwgViYmIHZh
bHVlKSAtPiBBZGRSZXN1bHQKIHsKICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFkZFBhc3Np
bmdIYXNoQ29kZTxIYXNoTWFwVHJhbnNsYXRvckFkYXB0ZXI8S2V5VmFsdWVQYWlyVHJhaXRzLCBI
YXNoVHJhbnNsYXRvcj4+KHN0ZDo6Zm9yd2FyZDxLPihrZXkpLCBzdGQ6OmZvcndhcmQ8Vj4odmFs
dWUpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcs
IHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVk
VHJhaXRzQXJnPgordGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcs
IHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVk
VHJhaXRzQXJnLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
YXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1h
cHBlZFRyYWl0c0FyZz46OmFkZChjb25zdCBLZXlUeXBlJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFk
ZFJlc3VsdAorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFp
dHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgaW5saW5lQ2FwYWNpdHk+OjphZGQoY29uc3QgS2V5VHlw
ZSYga2V5LCBUJiYgbWFwcGVkKSAtPiBBZGRSZXN1bHQKIHsKICAgICByZXR1cm4gaW5saW5lQWRk
KGtleSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5
VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5
VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eT4KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1hdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcs
IEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6YWRkKEtleVR5cGUmJiBr
ZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVk
QXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgaW5saW5lQ2FwYWNp
dHk+OjphZGQoS2V5VHlwZSYmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CiB7CiAgICAg
cmV0dXJuIGlubGluZUFkZChXVEY6Om1vdmUoa2V5KSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkp
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlw
ZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFp
dHNBcmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlw
ZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFp
dHNBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1BTFdB
WVNfSU5MSU5FIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJh
aXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjpmYXN0QWRkKGNvbnN0IEtleVR5cGUmIGtleSwgVCYm
IG1hcHBlZCkgLT4gQWRkUmVzdWx0CitBTFdBWVNfSU5MSU5FIGF1dG8gSGFzaE1hcDxLZXlBcmcs
IE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmcsIGlubGlu
ZUNhcGFjaXR5Pjo6ZmFzdEFkZChjb25zdCBLZXlUeXBlJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFk
ZFJlc3VsdAogewogICAgIHJldHVybiBpbmxpbmVBZGQoa2V5LCBzdGQ6OmZvcndhcmQ8VD4obWFw
cGVkKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJn
LCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBl
ZFRyYWl0c0FyZz4KK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJn
LCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBl
ZFRyYWl0c0FyZywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LUFMV0FZU19JTkxJTkUgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBL
ZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmZhc3RBZGQoS2V5VHlwZSYmIGtleSwgVCYm
IG1hcHBlZCkgLT4gQWRkUmVzdWx0CitBTFdBWVNfSU5MSU5FIGF1dG8gSGFzaE1hcDxLZXlBcmcs
IE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmcsIGlubGlu
ZUNhcGFjaXR5Pjo6ZmFzdEFkZChLZXlUeXBlJiYga2V5LCBUJiYgbWFwcGVkKSAtPiBBZGRSZXN1
bHQKIHsKICAgICByZXR1cm4gaW5saW5lQWRkKFdURjo6bW92ZShrZXkpLCBzdGQ6OmZvcndhcmQ8
VD4obWFwcGVkKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0cz4KLWF1dG8gSGFzaE1hcDxU
LCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+OjpnZXQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdCAt
PiBNYXBwZWRQZWVrVHlwZQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+CithdXRvIEhhc2hNYXA8VCwg
VSwgViwgVywgWCwgWT46OmdldChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0IC0+IE1hcHBlZFBl
ZWtUeXBlCiB7CiAgICAgS2V5VmFsdWVQYWlyVHlwZSogZW50cnkgPSBjb25zdF9jYXN0PEhhc2hU
YWJsZVR5cGUmPihtX2ltcGwpLmxvb2t1cChrZXkpOwogICAgIGlmICghZW50cnkpCkBAIC0zNTQs
OCArMzU0LDggQEAgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIE1hcHBlZFRyYWl0cz46OgogICAg
IHJldHVybiBNYXBwZWRUcmFpdHM6OnBlZWsoZW50cnktPnZhbHVlKTsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUg
WD4KLWlubGluZSBib29sIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OnJlbW92ZShpdGVyYXRvciBp
dCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5lIGJvb2wgSGFzaE1hcDxULCBVLCBWLCBX
LCBYLCBZPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQogewogICAgIGlmIChpdC5tX2ltcGwgPT0gbV9p
bXBsLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNjQsMjcgKzM2NCwyNyBAQCBp
bmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpyZW1vCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFg+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+Ci1pbmxpbmUgdm9pZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpyZW1vdmVJ
Zihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoraW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBX
LCBYLCBZPjo6cmVtb3ZlSWYoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBtX2ltcGwu
cmVtb3ZlSWYoZnVuY3Rvcik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUs
IHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYm9vbCBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjpyZW1vdmUoY29uc3QgS2V5VHlwZSYga2V5KQordGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwg
c2l6ZV90IFk+CitpbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjpyZW1vdmUo
Y29uc3QgS2V5VHlwZSYga2V5KQogewogICAgIHJldHVybiByZW1vdmUoZmluZChrZXkpKTsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUg
VywgdHlwZW5hbWUgWD4KLWlubGluZSB2b2lkIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNsZWFy
KCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBX
LCBYLCBZPjo6Y2xlYXIoKQogewogICAgIG1faW1wbC5jbGVhcigpOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBN
YXBwZWRUcmFpdHM+Ci1hdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgTWFwcGVkVHJhaXRzPjo6dGFr
ZShjb25zdCBLZXlUeXBlJiBrZXkpIC0+IE1hcHBlZFR5cGUKK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZ
PgorYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+Ojp0YWtlKGNvbnN0IEtleVR5cGUmIGtl
eSkgLT4gTWFwcGVkVHlwZQogewogICAgIGl0ZXJhdG9yIGl0ID0gZmluZChrZXkpOwogICAgIGlm
IChpdCA9PSBlbmQoKSkKQEAgLTM5NCwzMCArMzk0LDMwIEBAIGF1dG8gSGFzaE1hcDxULCBVLCBW
LCBXLCBNYXBwZWRUcmFpdHM+OjoKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBX
LCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KIHRlbXBsYXRlPHR5cGVuYW1lIEs+Ci1pbmxpbmUgYXV0
byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpmaW5kKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6
UHRyVHlwZSBrZXkpIC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZh
bHVlLCBpdGVyYXRvcj46OnR5cGUKK2lubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWCwg
WT46OmZpbmQodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBlIGtleSkgLT4gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6dmFsdWUsIGl0ZXJhdG9yPjo6dHlwZQog
ewogICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmluZDxIYXNoTWFwVHJhbnNsYXRvcjxLZXlW
YWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+PihrZXkpOwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywg
dHlwZW5hbWUgWCwgc2l6ZV90IFk+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBLPgotaW5saW5lIGF1dG8g
SGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZmluZCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0
clR5cGUga2V5KSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+
Ojp2YWx1ZSwgY29uc3RfaXRlcmF0b3I+Ojp0eXBlCitpbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUs
IFYsIFcsIFgsIFk+OjpmaW5kKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSBrZXkp
IGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVlLCBj
b25zdF9pdGVyYXRvcj46OnR5cGUKIHsKICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8
SGFzaE1hcFRyYW5zbGF0b3I8S2V5VmFsdWVQYWlyVHJhaXRzLCBIYXNoRnVuY3Rpb25zPj4oa2V5
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlw
ZW5hbWUgVywgdHlwZW5hbWUgWD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgogdGVtcGxhdGU8dHlw
ZW5hbWUgSz4KLWlubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNvbnRhaW5zKHR5
cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSBrZXkpIGNvbnN0IC0+IHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVlLCBib29sPjo6dHlwZQoraW5saW5lIGF1
dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6Y29udGFpbnModHlwZW5hbWUgR2V0UHRySGVs
cGVyPEs+OjpQdHJUeXBlIGtleSkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNT
bWFydFB0cjxLPjo6dmFsdWUsIGJvb2w+Ojp0eXBlCiB7CiAgICAgcmV0dXJuIG1faW1wbC50ZW1w
bGF0ZSBjb250YWluczxIYXNoTWFwVHJhbnNsYXRvcjxLZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hG
dW5jdGlvbnM+PihrZXkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgordGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBLPgotaW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBY
Pjo6aW5saW5lR2V0KHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSBrZXkpIGNvbnN0
IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVlLCBNYXBwZWRQ
ZWVrVHlwZT46OnR5cGUKK2lubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46Omlu
bGluZUdldCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUga2V5KSBjb25zdCAtPiB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgTWFwcGVkUGVla1R5
cGU+Ojp0eXBlCiB7CiAgICAgS2V5VmFsdWVQYWlyVHlwZSogZW50cnkgPSBjb25zdF9jYXN0PEhh
c2hUYWJsZVR5cGUmPihtX2ltcGwpLnRlbXBsYXRlIGxvb2t1cDxIYXNoTWFwVHJhbnNsYXRvcjxL
ZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+PihrZXkpOwogICAgIGlmICghZW50cnkp
CkBAIC00MjUsMjMgKzQyNSwyMyBAQCBpbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjppbmxpCiAgICAgcmV0dXJuIE1hcHBlZFRyYWl0czo6cGVlayhlbnRyeS0+dmFsdWUpOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBX
LCB0eXBlbmFtZSBYPgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
ViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBL
PgotYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpnZXQodHlwZW5hbWUgR2V0UHRySGVscGVy
PEs+OjpQdHJUeXBlIGtleSkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFy
dFB0cjxLPjo6dmFsdWUsIE1hcHBlZFBlZWtUeXBlPjo6dHlwZQorYXV0byBIYXNoTWFwPFQsIFUs
IFYsIFcsIFgsIFk+OjpnZXQodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBlIGtleSkg
Y29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6dmFsdWUsIE1h
cHBlZFBlZWtUeXBlPjo6dHlwZQogewogICAgIHJldHVybiBpbmxpbmVHZXQoa2V5KTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywg
dHlwZW5hbWUgWD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgogdGVtcGxhdGU8dHlwZW5hbWUgSz4K
LWlubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OnJlbW92ZSh0eXBlbmFtZSBHZXRQ
dHJIZWxwZXI8Sz46OlB0clR5cGUga2V5KSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1Nt
YXJ0UHRyPEs+Ojp2YWx1ZSwgYm9vbD46OnR5cGUKK2lubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwg
ViwgVywgWCwgWT46OnJlbW92ZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUga2V5
KSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgYm9vbD46
OnR5cGUKIHsKICAgICByZXR1cm4gcmVtb3ZlKGZpbmQoa2V5KSk7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBX
LCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KIHRlbXBsYXRlPHR5cGVuYW1lIEs+Ci1pbmxpbmUgYXV0
byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojp0YWtlKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6
UHRyVHlwZSBrZXkpIC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZh
bHVlLCBNYXBwZWRUeXBlPjo6dHlwZQoraW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBY
LCBZPjo6dGFrZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUga2V5KSAtPiB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgTWFwcGVkVHlwZT46OnR5
cGUKIHsKICAgICBpdGVyYXRvciBpdCA9IGZpbmQoa2V5KTsKICAgICBpZiAoaXQgPT0gZW5kKCkp
CkBAIC00NTEsMTQgKzQ1MSwxNCBAQCBpbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
Ojp0YWtlCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotaW5saW5lIHZvaWQg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFt
ZSBYLCBzaXplX3QgWT4KK2lubGluZSB2b2lkIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmNo
ZWNrQ29uc2lzdGVuY3koKSBjb25zdAogewogICAgIG1faW1wbC5jaGVja1RhYmxlQ29uc2lzdGVu
Y3koKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwg
dHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSBib29sIEhhc2hNYXA8VCwgVSwgViwgVywg
WD46OmlzVmFsaWRLZXkoY29uc3QgS2V5VHlwZSYga2V5KQordGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+
CitpbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+Ojppc1ZhbGlkS2V5KGNvbnN0
IEtleVR5cGUmIGtleSkKIHsKICAgICBpZiAoS2V5VHJhaXRzOjppc0RlbGV0ZWRWYWx1ZShrZXkp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NzQsMTMgKzQ3NCwxMyBAQCBpbmxpbmUgYm9v
bCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojppc1ZhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5
cGVuYW1lIFg+Ci1ib29sIG9wZXJhdG9yPT0oY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYg
YSwgY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgYikKK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZ
PgorYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT4mIGEsIGNv
bnN0IEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT4mIGIpCiB7CiAgICAgaWYgKGEuc2l6ZSgpICE9
IGIuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB0eXBlZGVmIHR5cGVuYW1l
IEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwor
ICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6Y29uc3RfaXRl
cmF0b3IgY29uc3RfaXRlcmF0b3I7CiAKICAgICBjb25zdF9pdGVyYXRvciBlbmQgPSBhLmVuZCgp
OwogICAgIGNvbnN0X2l0ZXJhdG9yIG5vdEZvdW5kID0gYi5lbmQoKTsKQEAgLTQ5MywxNiArNDkz
LDE2IEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNoTWFwPFQsIFUsIFYsIFcKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
ViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgYSwgY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYg
YikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBI
YXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+JiBhLCBjb25zdCBIYXNoTWFwPFQsIFUsIFYsIFcsIFgs
IFk+JiBiKQogewogICAgIHJldHVybiAhKGEgPT0gYik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHR5cGVu
YW1lIFk+Ci1pbmxpbmUgdm9pZCBjb3B5VG9WZWN0b3IoY29uc3QgSGFzaE1hcDxULCBVLCBWLCBX
LCBYPiYgY29sbGVjdGlvbiwgWSYgdmVjdG9yKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90IFksIHR5cGVu
YW1lIFo+CitpbmxpbmUgdm9pZCBjb3B5VG9WZWN0b3IoY29uc3QgSGFzaE1hcDxULCBVLCBWLCBX
LCBYLCBZPiYgY29sbGVjdGlvbiwgWiYgdmVjdG9yKQogewotICAgIHR5cGVkZWYgdHlwZW5hbWUg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3I7CisgICAgdHlw
ZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+Ojpjb25zdF9pdGVyYXRvciBp
dGVyYXRvcjsKIAogICAgIHZlY3Rvci5yZXNpemUoY29sbGVjdGlvbi5zaXplKCkpOwogCkBAIC01
MTIsMTAgKzUxMiwxMCBAQCBpbmxpbmUgdm9pZCBjb3B5VG9WZWN0b3IoY29uc3QgSGFzaE1hcDxU
CiAgICAgICAgIHZlY3RvcltpXSA9IHsgKCppdCkua2V5LCAoKml0KS52YWx1ZSB9OwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0
eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgotaW5saW5lIHZvaWQgY29weUtleXNUb1ZlY3Rvcihjb25z
dCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+JiBjb2xsZWN0aW9uLCBZJiB2ZWN0b3IpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFt
ZSBYLCBzaXplX3QgWSwgdHlwZW5hbWUgWj4KK2lubGluZSB2b2lkIGNvcHlLZXlzVG9WZWN0b3Io
Y29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPiYgY29sbGVjdGlvbiwgWiYgdmVjdG9yKQog
ewotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRl
cmF0b3I6OktleXMgaXRlcmF0b3I7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIFUs
IFYsIFcsIFgsIFk+Ojpjb25zdF9pdGVyYXRvcjo6S2V5cyBpdGVyYXRvcjsKICAgICAKICAgICB2
ZWN0b3IucmVzaXplKGNvbGxlY3Rpb24uc2l6ZSgpKTsKICAgICAKQEAgLTUyNSwxMCArNTI1LDEw
IEBAIGlubGluZSB2b2lkIGNvcHlLZXlzVG9WZWN0b3IoY29uc3QgSGFzaE0KICAgICAgICAgdmVj
dG9yW2ldID0gKml0OwogfSAgCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+Ci1pbmxpbmUgdm9p
ZCBjb3B5VmFsdWVzVG9WZWN0b3IoY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgY29sbGVj
dGlvbiwgWSYgdmVjdG9yKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90IFksIHR5cGVuYW1lIFo+Citpbmxp
bmUgdm9pZCBjb3B5VmFsdWVzVG9WZWN0b3IoY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZ
PiYgY29sbGVjdGlvbiwgWiYgdmVjdG9yKQogewotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1h
cDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3I6OlZhbHVlcyBpdGVyYXRvcjsKKyAgICB0
eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmNvbnN0X2l0ZXJhdG9y
OjpWYWx1ZXMgaXRlcmF0b3I7CiAgICAgCiAgICAgdmVjdG9yLnJlc2l6ZShjb2xsZWN0aW9uLnNp
emUoKSk7CiAgICAgCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvSGFzaFNldC5oCShyZXZpc2lvbiAxODIwMjQpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9IYXNoU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCwgMjAxMSwgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMwLDEwICszMCwxMCBAQCBuYW1lc3BhY2UgV1RGIHsK
IAogICAgIHN0cnVjdCBJZGVudGl0eUV4dHJhY3RvcjsKICAgICAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPiBjbGFz
cyBIYXNoU2V0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gY2xhc3MgSGFz
aFNldDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJn
ID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8VmFsdWVBcmc+OjpIYXNoLAotICAgICAgICB0eXBlbmFt
ZSBUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFZhbHVlQXJnPj4gY2xhc3MgSGFzaFNldCBmaW5hbCB7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcgPSB0eXBl
bmFtZSBEZWZhdWx0SGFzaDxWYWx1ZUFyZz46Okhhc2gsIHR5cGVuYW1lIFRyYWl0c0FyZyA9IEhh
c2hUcmFpdHM8VmFsdWVBcmc+LCBzaXplX3QgaW5saW5lQ2FwYWNpdHkgPSAwPgorICAgIGNsYXNz
IEhhc2hTZXQgZmluYWwgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBw
cml2YXRlOgogICAgICAgICB0eXBlZGVmIEhhc2hBcmcgSGFzaEZ1bmN0aW9uczsKQEAgLTQ0LDcg
KzQ0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICBwcml2YXRlOgogICAgICAgICB0eXBlZGVm
IEhhc2hUYWJsZTxWYWx1ZVR5cGUsIFZhbHVlVHlwZSwgSWRlbnRpdHlFeHRyYWN0b3IsCi0gICAg
ICAgICAgICBIYXNoRnVuY3Rpb25zLCBWYWx1ZVRyYWl0cywgVmFsdWVUcmFpdHM+IEhhc2hUYWJs
ZVR5cGU7CisgICAgICAgICAgICBIYXNoRnVuY3Rpb25zLCBWYWx1ZVRyYWl0cywgVmFsdWVUcmFp
dHMsIGlubGluZUNhcGFjaXR5PiBIYXNoVGFibGVUeXBlOwogCiAgICAgcHVibGljOgogICAgICAg
ICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZh
bHVlVHlwZT4gaXRlcmF0b3I7CkBAIC0xNDIsOTAgKzE0Miw5MCBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICAgICAgfQogICAgIH07CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWPgotICAgIGlubGluZSB2b2lkIEhhc2hTZXQ8VCwgVSwgVj46OnN3YXAoSGFz
aFNldCYgb3RoZXIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgc2l6ZV90IFc+CisgICAgaW5saW5lIHZvaWQgSGFzaFNldDxULCBVLCBWLCBXPjo6c3dh
cChIYXNoU2V0JiBvdGhlcikKICAgICB7CiAgICAgICAgIG1faW1wbC5zd2FwKG90aGVyLm1faW1w
bCk7IAogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFY+Ci0gICAgaW5saW5lIHVuc2lnbmVkIEhhc2hTZXQ8VCwgVSwgVj46OnNpemUoKSBjb25z
dAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHNpemVf
dCBXPgorICAgIGlubGluZSB1bnNpZ25lZCBIYXNoU2V0PFQsIFUsIFYsIFc+OjpzaXplKCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwuc2l6ZSgpOyAKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSB1
bnNpZ25lZCBIYXNoU2V0PFQsIFUsIFY+OjpjYXBhY2l0eSgpIGNvbnN0CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6ZV90IFc+CisgICAgaW5saW5l
IHVuc2lnbmVkIEhhc2hTZXQ8VCwgVSwgViwgVz46OmNhcGFjaXR5KCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX2ltcGwuY2FwYWNpdHkoKTsgCiAgICAgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgYm9vbCBIYXNo
U2V0PFQsIFUsIFY+Ojppc0VtcHR5KCkgY29uc3QKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KKyAgICBpbmxpbmUgYm9vbCBIYXNoU2V0
PFQsIFUsIFYsIFc+Ojppc0VtcHR5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2lt
cGwuaXNFbXB0eSgpOyAKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VCwgVSwgVj46OmJlZ2lu
KCkgY29uc3QgLT4gaXRlcmF0b3IKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KKyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFQsIFUsIFYs
IFc+OjpiZWdpbigpIGNvbnN0IC0+IGl0ZXJhdG9yCiAgICAgewogICAgICAgICByZXR1cm4gbV9p
bXBsLmJlZ2luKCk7IAogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFY+Ci0gICAgaW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWPjo6ZW5kKCkg
Y29uc3QgLT4gaXRlcmF0b3IKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWLCBzaXplX3QgVz4KKyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFQsIFUsIFYsIFc+
OjplbmQoKSBjb25zdCAtPiBpdGVyYXRvcgogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC5l
bmQoKTsgCiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgVj4KLSAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFQsIFUsIFY+OjpmaW5kKGNvbnN0IFZh
bHVlVHlwZSYgdmFsdWUpIGNvbnN0IC0+IGl0ZXJhdG9yCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6ZV90IFc+CisgICAgaW5saW5lIGF1dG8gSGFz
aFNldDxULCBVLCBWLCBXPjo6ZmluZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdCAtPiBp
dGVyYXRvcgogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC5maW5kKHZhbHVlKTsgCiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAg
ICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+Ojpjb250YWlucyhjb25zdCBWYWx1ZVR5cGUm
IHZhbHVlKSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFYsIHNpemVfdCBXPgorICAgIGlubGluZSBib29sIEhhc2hTZXQ8VCwgVSwgViwgVz46OmNv
bnRhaW5zKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gbV9pbXBsLmNvbnRhaW5zKHZhbHVlKTsgCiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFz
aFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6ZmluZChjb25zdCBUJiB2YWx1ZSkgY29uc3QgLT4gaXRl
cmF0b3IKKyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHMsIGlubGluZUNhcGFjaXR5Pjo6ZmluZChjb25zdCBUJiB2YWx1ZSkgY29uc3QgLT4gaXRlcmF0
b3IKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmluZDxIYXNoU2V0VHJh
bnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2YWx1ZSk7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIGJvb2wgSGFz
aFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6Y29udGFpbnMoY29uc3QgVCYgdmFs
dWUpIGNvbnN0CisgICAgaW5saW5lIGJvb2wgSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmNvbnRhaW5zKGNvbnN0IFQmIHZhbHVlKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBjb250YWluczxIYXNoU2V0VHJh
bnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2YWx1ZSk7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgYXV0
byBIYXNoU2V0PFQsIFUsIFY+OjphZGQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gQWRkUmVz
dWx0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6
ZV90IFc+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWLCBXPjo6YWRkKGNvbnN0IFZh
bHVlVHlwZSYgdmFsdWUpIC0+IEFkZFJlc3VsdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1w
bC5hZGQodmFsdWUpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFY+Ci0gICAgaW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWPjo6YWRkKFZh
bHVlVHlwZSYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KKyAgICBpbmxpbmUgYXV0byBIYXNoU2V0
PFQsIFUsIFYsIFc+OjphZGQoVmFsdWVUeXBlJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1faW1wbC5hZGQoV1RGOjptb3ZlKHZhbHVlKSk7CiAgICAgfQogCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1
bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIGF1
dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YWRkKGNvbnN0IFQmIHZh
bHVlKSAtPiBBZGRSZXN1bHQKKyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFZhbHVlLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6YWRkKGNvbnN0IFQmIHZhbHVlKSAtPiBB
ZGRSZXN1bHQKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkUGFzc2lu
Z0hhc2hDb2RlPEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlcjxIYXNoVHJhbnNsYXRvcj4+KHZhbHVl
LCB2YWx1ZSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgVj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWLCBzaXplX3QgVz4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvclR5cGU+Ci0gICAg
aW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBWPjo6YWRkKEl0ZXJhdG9yVHlwZSBiZWdpbiwgSXRl
cmF0b3JUeXBlIGVuZCkKKyAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFYsIFc+OjphZGQo
SXRlcmF0b3JUeXBlIGJlZ2luLCBJdGVyYXRvclR5cGUgZW5kKQogICAgIHsKICAgICAgICAgYm9v
bCBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIGZvciAoSXRlcmF0b3JUeXBlIGl0ZXIgPSBiZWdp
bjsgaXRlciAhPSBlbmQ7ICsraXRlcikKQEAgLTIzMyw4ICsyMzMsOCBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQs
IFUsIFY+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6ZV90IFc+CisgICAgaW5saW5lIGJvb2wgSGFzaFNldDxU
LCBVLCBWLCBXPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQogICAgIHsKICAgICAgICAgaWYgKGl0Lm1f
aW1wbCA9PSBtX2ltcGwuZW5kKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDMs
MjAgKzI0MywyMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAg
ICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+OjpyZW1vdmUoY29uc3QgVmFsdWVUeXBlJiB2
YWx1ZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBz
aXplX3QgVz4KKyAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFYsIFc+OjpyZW1vdmUoY29u
c3QgVmFsdWVUeXBlJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiByZW1vdmUoZmluZCh2
YWx1ZSkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFY+Ci0gICAgaW5saW5lIHZvaWQgSGFzaFNldDxULCBVLCBWPjo6Y2xlYXIoKQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHNpemVfdCBXPgor
ICAgIGlubGluZSB2b2lkIEhhc2hTZXQ8VCwgVSwgViwgVz46OmNsZWFyKCkKICAgICB7CiAgICAg
ICAgIG1faW1wbC5jbGVhcigpOyAKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VCwgVSwgVj46
OnRha2UoaXRlcmF0b3IgaXQpIC0+IFZhbHVlVHlwZQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHNpemVfdCBXPgorICAgIGlubGluZSBhdXRvIEhhc2hT
ZXQ8VCwgVSwgViwgVz46OnRha2UoaXRlcmF0b3IgaXQpIC0+IFZhbHVlVHlwZQogICAgIHsKICAg
ICAgICAgaWYgKGl0ID09IGVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIFZhbHVlVHJhaXRzOjpl
bXB0eVZhbHVlKCk7CkBAIC0yNjYsNDggKzI2Niw0OCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VCwgVSwgVj46OnRh
a2UoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gVmFsdWVUeXBlCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6ZV90IFc+CisgICAgaW5saW5lIGF1
dG8gSGFzaFNldDxULCBVLCBWLCBXPjo6dGFrZShjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBW
YWx1ZVR5cGUKICAgICB7CiAgICAgICAgIHJldHVybiB0YWtlKGZpbmQodmFsdWUpKTsKICAgICB9
CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAg
IGlubGluZSBhdXRvIEhhc2hTZXQ8VCwgVSwgVj46OnRha2VBbnkoKSAtPiBWYWx1ZVR5cGUKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4K
KyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFQsIFUsIFYsIFc+Ojp0YWtlQW55KCkgLT4gVmFsdWVU
eXBlCiAgICAgewogICAgICAgICByZXR1cm4gdGFrZShiZWdpbigpKTsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBWPgotICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cz46OmZpbmQodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZhbHVl
KSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwg
aXRlcmF0b3I+Ojp0eXBlCisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmZpbmQodHlwZW5hbWUgR2V0UHRySGVscGVy
PFY+OjpQdHJUeXBlIHZhbHVlKSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1Nt
YXJ0UHRyPFY+Ojp2YWx1ZSwgaXRlcmF0b3I+Ojp0eXBlCiAgICAgewogICAgICAgICByZXR1cm4g
bV9pbXBsLnRlbXBsYXRlIGZpbmQ8SGFzaFNldFRyYW5zbGF0b3I8SGFzaEZ1bmN0aW9ucz4+KHZh
bHVlKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPgotICAgIGlubGluZSBhdXRvIEhhc2hT
ZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNvbnRhaW5zKHR5cGVuYW1lIEdldFB0
ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0eXBlCisgICAgaW5saW5lIGF1dG8gSGFz
aFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmNvbnRh
aW5zKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgY29uc3QgLT4gdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0eXBlCiAg
ICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGNvbnRhaW5zPEhhc2hTZXRUcmFu
c2xhdG9yPEhhc2hGdW5jdGlvbnM+Pih2YWx1ZSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Vj4KLSAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+
OjpyZW1vdmUodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSAtPiB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgYm9vbD46OnR5cGUKKyAg
ICBpbmxpbmUgYXV0byBIYXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIGlubGlu
ZUNhcGFjaXR5Pjo6cmVtb3ZlKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1
ZSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+
Ojp0eXBlCiAgICAgewogICAgICAgICByZXR1cm4gcmVtb3ZlKGZpbmQodmFsdWUpKTsKICAgICB9
CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPgotICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VmFsdWUsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cz46OnRha2UodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJU
eXBlIHZhbHVlKSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1
ZSwgVmFsdWVUeXBlPjo6dHlwZQorICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VmFsdWUsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgaW5saW5lQ2FwYWNpdHk+Ojp0YWtlKHR5cGVuYW1lIEdldFB0ckhl
bHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFy
dFB0cjxWPjo6dmFsdWUsIFZhbHVlVHlwZT46OnR5cGUKICAgICB7CiAgICAgICAgIHJldHVybiB0
YWtlKGZpbmQodmFsdWUpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBib29sIEhhc2hTZXQ8VCwgVSwgVj46Omlz
VmFsaWRWYWx1ZShjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHNpemVfdCBXPgorICAgIGlubGluZSBib29sIEhh
c2hTZXQ8VCwgVSwgViwgVz46OmlzVmFsaWRWYWx1ZShjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKQog
ICAgIHsKICAgICAgICAgaWYgKFZhbHVlVHJhaXRzOjppc0RlbGV0ZWRWYWx1ZSh2YWx1ZSkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMzYsOCArMzM2LDggQEAgbmFtZXNwYWNlIFdU
RiB7CiAgICAgICAgICAgICB2ZWN0b3JbaV0gPSAqaXQ7CiAgICAgfSAgCiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBib29sIEhh
c2hTZXQ8VCwgVSwgVj46Om9wZXJhdG9yPT0oY29uc3QgSGFzaFNldCYgb3RoZXIpIGNvbnN0Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6ZV90IFc+
CisgICAgaW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBWLCBXPjo6b3BlcmF0b3I9PShjb25zdCBI
YXNoU2V0JiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChzaXplKCkgIT0gb3RoZXIu
c2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dURi93dGYv
SGFzaFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgJKHJl
dmlzaW9uIDE4MjAyNCkKKysrIFNvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTIsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IERhdmlk
IExldmluIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNzMsNDUgKzczLDQ1
IEBAIG5hbWVzcGFjZSBXVEYgewogCiAjZW5kaWYKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtl
eSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0
aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6
ZV90IGlubGluZUNhcGFjaXR5PgogICAgIGNsYXNzIEhhc2hUYWJsZTsKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1l
IEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgICBjbGFzcyBIYXNoVGFibGVJdGVyYXRv
cjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgICBjbGFz
cyBIYXNoVGFibGVDb25zdEl0ZXJhdG9yOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICB2b2lkIGFkZEl0ZXJh
dG9yKGNvbnN0IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPiosCi0gICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5
LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRy
YWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUg
S2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgdm9pZCBhZGRJdGVyYXRvcihj
b25zdCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+KiwKKyAgICAgICAgSGFzaFRhYmxlQ29uc3RJ
dGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4qKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwg
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9pZCByZW1vdmVJ
dGVyYXRvcihIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
S2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5PgorICAgIHZvaWQgcmVtb3ZlSXRlcmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRv
cjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
LCBpbmxpbmVDYXBhY2l0eT4qKTsKIAogI2lmICFDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCiAK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRy
YWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUg
S2V5VHJhaXRzPgotICAgIGlubGluZSB2b2lkIGFkZEl0ZXJhdG9yKGNvbnN0IEhhc2hUYWJsZTxL
ZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPios
Ci0gICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qKSB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHk+CisgICAgaW5saW5lIHZvaWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHMsIGlubGluZUNhcGFjaXR5PiosCisgICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5
LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5s
aW5lQ2FwYWNpdHk+KikgeyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGlubGluZSB2b2lkIHJlbW92ZUl0
ZXJhdG9yKEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qKSB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHk+CisgICAgaW5saW5lIHZvaWQgcmVtb3ZlSXRlcmF0b3IoSGFzaFRhYmxlQ29u
c3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywg
S2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4qKSB7IH0KIAogI2VuZGlmCiAKICAgICB0eXBlZGVm
IGVudW0geyBIYXNoSXRlbUtub3duR29vZCB9IEhhc2hJdGVtS25vd25Hb29kVGFnOwogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgY2xhc3MgSGFzaFRh
YmxlQ29uc3RJdGVyYXRvciB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBIYXNoVGFi
bGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz4gSGFzaFRhYmxlVHlwZTsKLSAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJdGVyYXRvcjxLZXks
IFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBpdGVy
YXRvcjsKLSAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IGNvbnN0X2l0ZXJh
dG9yOworICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4gSGFzaFRhYmxl
VHlwZTsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRy
YWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4g
aXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVD
YXBhY2l0eT4gY29uc3RfaXRlcmF0b3I7CiAgICAgICAgIHR5cGVkZWYgVmFsdWUgVmFsdWVUeXBl
OwogICAgICAgICB0eXBlZGVmIGNvbnN0IFZhbHVlVHlwZSYgUmVmZXJlbmNlVHlwZTsKICAgICAg
ICAgdHlwZWRlZiBjb25zdCBWYWx1ZVR5cGUqIFBvaW50ZXJUeXBlOwogCi0gICAgICAgIGZyaWVu
ZCBjbGFzcyBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHMsIEtleVRyYWl0cz47Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBIYXNoVGFibGVJdGVyYXRv
cjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
PjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3Is
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT47CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3Is
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT47CiAKICAg
ICAgICAgdm9pZCBza2lwRW1wdHlCdWNrZXRzKCkKICAgICAgICAgewpAQCAtMjM2LDE3ICsyMzYs
MTcgQEAgbmFtZXNwYWNlIFdURiB7CiAjZW5kaWYKICAgICB9OwogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3Is
IHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJh
aXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgY2xhc3MgSGFzaFRhYmxlSXRlcmF0b3Ig
ewogICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4
dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7
Ci0gICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9y
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gaXRlcmF0b3I7Ci0gICAgICAgIHR5
cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBjb25zdF9pdGVyYXRvcjsKKyAgICAgICAgdHlw
ZWRlZiBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+IEhhc2hUYWJsZVR5cGU7CisgICAgICAgIHR5
cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+IGl0ZXJhdG9yOworICAgICAg
ICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+IGNvbnN0X2l0
ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIFZhbHVlIFZhbHVlVHlwZTsKICAgICAgICAgdHlwZWRl
ZiBWYWx1ZVR5cGUmIFJlZmVyZW5jZVR5cGU7CiAgICAgICAgIHR5cGVkZWYgVmFsdWVUeXBlKiBQ
b2ludGVyVHlwZTsKIAotICAgICAgICBmcmllbmQgY2xhc3MgSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OworICAgICAgICBm
cmllbmQgY2xhc3MgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5PjsKIAogICAgICAgICBIYXNoVGFi
bGVJdGVyYXRvcihIYXNoVGFibGVUeXBlKiB0YWJsZSwgUG9pbnRlclR5cGUgcG9zLCBQb2ludGVy
VHlwZSBlbmQpIDogbV9pdGVyYXRvcih0YWJsZSwgcG9zLCBlbmQpIHsgfQogICAgICAgICBIYXNo
VGFibGVJdGVyYXRvcihIYXNoVGFibGVUeXBlKiB0YWJsZSwgUG9pbnRlclR5cGUgcG9zLCBQb2lu
dGVyVHlwZSBlbmQsIEhhc2hJdGVtS25vd25Hb29kVGFnIHRhZykgOiBtX2l0ZXJhdG9yKHRhYmxl
LCBwb3MsIGVuZCwgdGFnKSB7IH0KQEAgLTI4OSwxMSArMjg5LDExIEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgICAgICBib29sIGlzTmV3RW50cnk7CiAgICAgfTsKIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0
cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgIGNsYXNzIEhhc2hUYWJsZSB7CiAgICAgcHVi
bGljOgotICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IGl0ZXJhdG9yOwotICAgICAg
ICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gY29uc3RfaXRlcmF0b3I7CisgICAgICAg
IHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+IGl0ZXJhdG9yOworICAg
ICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9y
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+IGNvbnN0
X2l0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIFRyYWl0cyBWYWx1ZVRyYWl0czsKICAgICAgICAg
dHlwZWRlZiBLZXkgS2V5VHlwZTsKICAgICAgICAgdHlwZWRlZiBWYWx1ZSBWYWx1ZVR5cGU7CkBA
IC0zNDksMTAgKzM0OSwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgfkhhc2hUYWJsZSgp
IAogICAgICAgICB7CiAgICAgICAgICAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7IAotICAgICAg
ICAgICAgaWYgKG1fdGFibGUpCi0gICAgICAgICAgICAgICAgZGVhbGxvY2F0ZVRhYmxlKG1fdGFi
bGUsIG1fdGFibGVTaXplKTsKKyAgICAgICAgICAgIGlmIChtX3N0b3JhZ2UudGFibGUuc2l6ZSkK
KyAgICAgICAgICAgICAgICBkZWFsbG9jYXRlVGFibGUobV9zdG9yYWdlLnRhYmxlLnRhYmxlLCBt
X3N0b3JhZ2UudGFibGUuc2l6ZSk7CiAjaWYgQ0hFQ0tfSEFTSFRBQkxFX1VTRV9BRlRFUl9ERVNU
UlVDVElPTgotICAgICAgICAgICAgbV90YWJsZSA9IChWYWx1ZVR5cGUqKSh1aW50cHRyX3QpMHhi
YmFkYmVlZjsKKyAgICAgICAgICAgIG1fc3RvcmFnZS50YWJsZS50YWJsZSA9IChWYWx1ZVR5cGUq
KSh1aW50cHRyX3QpMHhiYmFkYmVlZjsKICNlbmRpZgogICAgICAgICB9CiAKQEAgLTM2NiwxMyAr
MzY2LDEzIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAvLyBXaGVuIHRoZSBoYXNoIHRhYmxl
IGlzIGVtcHR5LCBqdXN0IHJldHVybiB0aGUgc2FtZSBpdGVyYXRvciBmb3IgZW5kIGFzIGZvciBi
ZWdpbi4KICAgICAgICAgLy8gVGhpcyBpcyBtb3JlIGVmZmljaWVudCBiZWNhdXNlIHdlIGRvbid0
IGhhdmUgdG8gc2tpcCBhbGwgdGhlIGVtcHR5IGFuZCBkZWxldGVkCiAgICAgICAgIC8vIGJ1Y2tl
dHMsIGFuZCBpdGVyYXRpbmcgYW4gZW1wdHkgdGFibGUgaXMgYSBjb21tb24gY2FzZSB0aGF0J3Mg
d29ydGggb3B0aW1pemluZy4KLSAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBpc0Vt
cHR5KCkgPyBlbmQoKSA6IG1ha2VJdGVyYXRvcihtX3RhYmxlKTsgfQotICAgICAgICBpdGVyYXRv
ciBlbmQoKSB7IHJldHVybiBtYWtlS25vd25Hb29kSXRlcmF0b3IobV90YWJsZSArIG1fdGFibGVT
aXplKTsgfQotICAgICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGlz
RW1wdHkoKSA/IGVuZCgpIDogbWFrZUNvbnN0SXRlcmF0b3IobV90YWJsZSk7IH0KLSAgICAgICAg
Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbWFrZUtub3duR29vZENvbnN0SXRl
cmF0b3IobV90YWJsZSArIG1fdGFibGVTaXplKTsgfQorICAgICAgICBpdGVyYXRvciBiZWdpbigp
IHsgcmV0dXJuIGlzRW1wdHkoKSA/IGVuZCgpIDogbWFrZUl0ZXJhdG9yKG1fc3RvcmFnZS50YWJs
ZS50YWJsZSk7IH0KKyAgICAgICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gbWFrZUtub3duR29v
ZEl0ZXJhdG9yKG1fc3RvcmFnZS50YWJsZS50YWJsZSArIG1fc3RvcmFnZS50YWJsZS5zaXplKTsg
fQorICAgICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGlzRW1wdHko
KSA/IGVuZCgpIDogbWFrZUNvbnN0SXRlcmF0b3IobV9zdG9yYWdlLnRhYmxlLnRhYmxlKTsgfQor
ICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtYWtlS25vd25Hb29k
Q29uc3RJdGVyYXRvcihtX3N0b3JhZ2UudGFibGUudGFibGUgKyBtX3N0b3JhZ2UudGFibGUuc2l6
ZSk7IH0KIAogICAgICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9rZXlDb3Vu
dDsgfQotICAgICAgICB1bnNpZ25lZCBjYXBhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFibGVT
aXplOyB9CisgICAgICAgIHVuc2lnbmVkIGNhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zdG9y
YWdlLnRhYmxlLnNpemU7IH0KICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
IW1fa2V5Q291bnQ7IH0KIAogICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IFZhbHVlVHlwZSYg
dmFsdWUpIHsgcmV0dXJuIGFkZDxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6OmV4
dHJhY3QodmFsdWUpLCB2YWx1ZSk7IH0KQEAgLTQzNywxMSArNDM3LDExIEBAIG5hbWVzcGFjZSBX
VEYgewogICAgICAgICB2b2lkIHJlbW92ZUFuZEludmFsaWRhdGUoVmFsdWVUeXBlKik7CiAgICAg
ICAgIHZvaWQgcmVtb3ZlKFZhbHVlVHlwZSopOwogCi0gICAgICAgIGJvb2wgc2hvdWxkRXhwYW5k
KCkgY29uc3QgeyByZXR1cm4gKG1fa2V5Q291bnQgKyBtX2RlbGV0ZWRDb3VudCkgKiBtX21heExv
YWQgPj0gbV90YWJsZVNpemU7IH0KLSAgICAgICAgYm9vbCBtdXN0UmVoYXNoSW5QbGFjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fa2V5Q291bnQgKiBtX21pbkxvYWQgPCBtX3RhYmxlU2l6ZSAqIDI7IH0K
LSAgICAgICAgYm9vbCBzaG91bGRTaHJpbmsoKSBjb25zdCB7IHJldHVybiBtX2tleUNvdW50ICog
bV9taW5Mb2FkIDwgbV90YWJsZVNpemUgJiYgbV90YWJsZVNpemUgPiBLZXlUcmFpdHM6Om1pbmlt
dW1UYWJsZVNpemU7IH0KKyAgICAgICAgYm9vbCBzaG91bGRFeHBhbmQoKSBjb25zdCB7IHJldHVy
biAobV9rZXlDb3VudCArIG1fc3RvcmFnZS50YWJsZS5kZWxldGVkQ291bnQpICogbV9tYXhMb2Fk
ID49IG1fc3RvcmFnZS50YWJsZS5zaXplOyB9CisgICAgICAgIGJvb2wgbXVzdFJlaGFzaEluUGxh
Y2UoKSBjb25zdCB7IHJldHVybiBtX2tleUNvdW50ICogbV9taW5Mb2FkIDwgbV9zdG9yYWdlLnRh
YmxlLnNpemUgKiAyOyB9CisgICAgICAgIGJvb2wgc2hvdWxkU2hyaW5rKCkgY29uc3QgeyByZXR1
cm4gbV9rZXlDb3VudCAqIG1fbWluTG9hZCA8IG1fc3RvcmFnZS50YWJsZS5zaXplICYmIG1fc3Rv
cmFnZS50YWJsZS5zaXplID4gS2V5VHJhaXRzOjptaW5pbXVtVGFibGVTaXplOyB9CiAgICAgICAg
IFZhbHVlVHlwZSogZXhwYW5kKFZhbHVlVHlwZSogZW50cnkgPSBudWxscHRyKTsKLSAgICAgICAg
dm9pZCBzaHJpbmsoKSB7IHJlaGFzaChtX3RhYmxlU2l6ZSAvIDIsIG51bGxwdHIpOyB9CisgICAg
ICAgIHZvaWQgc2hyaW5rKCkgeyByZWhhc2gobV9zdG9yYWdlLnRhYmxlLnNpemUgLyAyLCBudWxs
cHRyKTsgfQogCiAgICAgICAgIFZhbHVlVHlwZSogcmVoYXNoKHVuc2lnbmVkIG5ld1RhYmxlU2l6
ZSwgVmFsdWVUeXBlKiBlbnRyeSk7CiAgICAgICAgIFZhbHVlVHlwZSogcmVpbnNlcnQoVmFsdWVU
eXBlJiYpOwpAQCAtNDUyLDEwICs0NTIsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIEZ1
bGxMb29rdXBUeXBlIG1ha2VMb29rdXBSZXN1bHQoVmFsdWVUeXBlKiBwb3NpdGlvbiwgYm9vbCBm
b3VuZCwgdW5zaWduZWQgaGFzaCkKICAgICAgICAgICAgIHsgcmV0dXJuIEZ1bGxMb29rdXBUeXBl
KExvb2t1cFR5cGUocG9zaXRpb24sIGZvdW5kKSwgaGFzaCk7IH0KIAotICAgICAgICBpdGVyYXRv
ciBtYWtlSXRlcmF0b3IoVmFsdWVUeXBlKiBwb3MpIHsgcmV0dXJuIGl0ZXJhdG9yKHRoaXMsIHBv
cywgbV90YWJsZSArIG1fdGFibGVTaXplKTsgfQotICAgICAgICBjb25zdF9pdGVyYXRvciBtYWtl
Q29uc3RJdGVyYXRvcihWYWx1ZVR5cGUqIHBvcykgY29uc3QgeyByZXR1cm4gY29uc3RfaXRlcmF0
b3IodGhpcywgcG9zLCBtX3RhYmxlICsgbV90YWJsZVNpemUpOyB9Ci0gICAgICAgIGl0ZXJhdG9y
IG1ha2VLbm93bkdvb2RJdGVyYXRvcihWYWx1ZVR5cGUqIHBvcykgeyByZXR1cm4gaXRlcmF0b3Io
dGhpcywgcG9zLCBtX3RhYmxlICsgbV90YWJsZVNpemUsIEhhc2hJdGVtS25vd25Hb29kKTsgfQot
ICAgICAgICBjb25zdF9pdGVyYXRvciBtYWtlS25vd25Hb29kQ29uc3RJdGVyYXRvcihWYWx1ZVR5
cGUqIHBvcykgY29uc3QgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IodGhpcywgcG9zLCBtX3RhYmxl
ICsgbV90YWJsZVNpemUsIEhhc2hJdGVtS25vd25Hb29kKTsgfQorICAgICAgICBpdGVyYXRvciBt
YWtlSXRlcmF0b3IoVmFsdWVUeXBlKiBwb3MpIHsgcmV0dXJuIGl0ZXJhdG9yKHRoaXMsIHBvcywg
bV9zdG9yYWdlLnRhYmxlLnRhYmxlICsgbV9zdG9yYWdlLnRhYmxlLnNpemUpOyB9CisgICAgICAg
IGNvbnN0X2l0ZXJhdG9yIG1ha2VDb25zdEl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSBjb25zdCB7
IHJldHVybiBjb25zdF9pdGVyYXRvcih0aGlzLCBwb3MsIG1fc3RvcmFnZS50YWJsZS50YWJsZSAr
IG1fc3RvcmFnZS50YWJsZS5zaXplKTsgfQorICAgICAgICBpdGVyYXRvciBtYWtlS25vd25Hb29k
SXRlcmF0b3IoVmFsdWVUeXBlKiBwb3MpIHsgcmV0dXJuIGl0ZXJhdG9yKHRoaXMsIHBvcywgbV9z
dG9yYWdlLnRhYmxlLnRhYmxlICsgbV9zdG9yYWdlLnRhYmxlLnNpemUsIEhhc2hJdGVtS25vd25H
b29kKTsgfQorICAgICAgICBjb25zdF9pdGVyYXRvciBtYWtlS25vd25Hb29kQ29uc3RJdGVyYXRv
cihWYWx1ZVR5cGUqIHBvcykgY29uc3QgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IodGhpcywgcG9z
LCBtX3N0b3JhZ2UudGFibGUudGFibGUgKyBtX3N0b3JhZ2UudGFibGUuc2l6ZSwgSGFzaEl0ZW1L
bm93bkdvb2QpOyB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIHZvaWQgY2hlY2tU
YWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIGNvbnN0OwpAQCAtNDcxLDEyICs0NzEsMTYgQEAg
bmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1fbWF4TG9h
ZCA9IDI7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtX21pbkxvYWQgPSA2OwotCi0g
ICAgICAgIFZhbHVlVHlwZSogbV90YWJsZTsKLSAgICAgICAgdW5zaWduZWQgbV90YWJsZVNpemU7
Ci0gICAgICAgIHVuc2lnbmVkIG1fdGFibGVTaXplTWFzazsKKyAgICAgICAgdW5pb24geworICAg
ICAgICAgICAgLy8gRklYTUU6IEFkZCBWYWx1ZVR5cGUgYXJyYXlbaW5saW5lQ2FwYWNpdHldIGFu
ZCB1c2UgaXQgZm9yIHNtYWxsIHNldHMuCisgICAgICAgICAgICBzdHJ1Y3QgeworICAgICAgICAg
ICAgICAgIFZhbHVlVHlwZSogdGFibGU7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgc2l6ZTsK
KyAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaXplTWFzazsKKyAgICAgICAgICAgICAgICB1bnNp
Z25lZCBkZWxldGVkQ291bnQ7CisgICAgICAgICAgICB9IHRhYmxlOworICAgICAgICB9IG1fc3Rv
cmFnZTsKICAgICAgICAgdW5zaWduZWQgbV9rZXlDb3VudDsKLSAgICAgICAgdW5zaWduZWQgbV9k
ZWxldGVkQ291bnQ7CiAKICNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCiAgICAgcHVibGlj
OgpAQCAtNTMwLDEzICs1MzQsOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgQ09NUElMRV9B
U1NFUlQodmFsdWUgPiAoMiAqIHNpemUpLCBIYXNoVGFibGVDYXBhY2l0eUhvbGRzQ29udGVudFNp
emUpOwogICAgIH07CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGlubGluZSBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Okhhc2hUYWJs
ZSgpCi0gICAgICAgIDogbV90YWJsZSgwKQotICAgICAgICAsIG1fdGFibGVTaXplKDApCi0gICAg
ICAgICwgbV90YWJsZVNpemVNYXNrKDApCi0gICAgICAgICwgbV9rZXlDb3VudCgwKQotICAgICAg
ICAsIG1fZGVsZXRlZENvdW50KDApCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5Pgor
ICAgIGlubGluZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjpIYXNoVGFibGUoKQorICAgICAg
ICA6IG1fa2V5Q291bnQoMCkKICNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCiAgICAgICAg
ICwgbV9pdGVyYXRvcnMoMCkKICAgICAgICAgLCBtX211dGV4KHN0ZDo6bWFrZV91bmlxdWU8c3Rk
OjptdXRleD4oKSkKQEAgLTU1OSwxNyArNTU5LDE3IEBAIG5hbWVzcGFjZSBXVEYgewogCiAjaWYg
QVNTRVJUX0RJU0FCTEVECiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1l
IFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwg
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4K
LSAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNoZWNrS2V5KGNvbnN0IFQmKQorICAgIGlubGlu
ZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmNoZWNrS2V5KGNvbnN0IFQmKQogICAg
IHsKICAgICB9CiAKICNlbHNlCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtl
eSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0
aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUg
VD4KLSAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y2hlY2tLZXkoY29uc3QgVCYga2V5KQorICAgIHZvaWQg
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6Y2hlY2tLZXkoY29uc3QgVCYga2V5KQogICAgIHsK
ICAgICAgICAgaWYgKCFIYXNoRnVuY3Rpb25zOjpzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRl
ZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTU4MywxNSArNTgzLDE1IEBAIG5hbWVzcGFjZSBX
VEYgewogCiAjZW5kaWYKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFs
dWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFj
aXR5PgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPgot
ICAgIGlubGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6bG9va3VwKGNvbnN0IFQmIGtleSkgLT4gVmFsdWVU
eXBlKgorICAgIGlubGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46Omxvb2t1cChj
b25zdCBUJiBrZXkpIC0+IFZhbHVlVHlwZSoKICAgICB7CiAgICAgICAgIGNoZWNrS2V5PEhhc2hU
cmFuc2xhdG9yPihrZXkpOwogCiAgICAgICAgIHVuc2lnbmVkIGsgPSAwOwotICAgICAgICB1bnNp
Z25lZCBzaXplTWFzayA9IG1fdGFibGVTaXplTWFzazsKLSAgICAgICAgVmFsdWVUeXBlKiB0YWJs
ZSA9IG1fdGFibGU7CisgICAgICAgIHVuc2lnbmVkIHNpemVNYXNrID0gbV9zdG9yYWdlLnRhYmxl
LnNpemVNYXNrOworICAgICAgICBWYWx1ZVR5cGUqIHRhYmxlID0gbV9zdG9yYWdlLnRhYmxlLnRh
YmxlOwogICAgICAgICB1bnNpZ25lZCBoID0gSGFzaFRyYW5zbGF0b3I6Omhhc2goa2V5KTsKICAg
ICAgICAgdW5zaWduZWQgaSA9IGggJiBzaXplTWFzazsKIApAQCAtNjM5LDE2ICs2MzksMTYgQEAg
bmFtZXNwYWNlIFdURiB7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNs
YXRvciwgdHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Omxvb2t1cEZvcldy
aXRpbmcoY29uc3QgVCYga2V5KSAtPiBMb29rdXBUeXBlCisgICAgaW5saW5lIGF1dG8gSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHMsIGlubGluZUNhcGFjaXR5Pjo6bG9va3VwRm9yV3JpdGluZyhjb25zdCBUJiBrZXkpIC0+IExv
b2t1cFR5cGUKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3RhYmxlKTsKKyAgICAgICAgQVNTRVJU
KG1fc3RvcmFnZS50YWJsZS50YWJsZSk7CiAgICAgICAgIGNoZWNrS2V5PEhhc2hUcmFuc2xhdG9y
PihrZXkpOwogCiAgICAgICAgIHVuc2lnbmVkIGsgPSAwOwotICAgICAgICBWYWx1ZVR5cGUqIHRh
YmxlID0gbV90YWJsZTsKLSAgICAgICAgdW5zaWduZWQgc2l6ZU1hc2sgPSBtX3RhYmxlU2l6ZU1h
c2s7CisgICAgICAgIFZhbHVlVHlwZSogdGFibGUgPSBtX3N0b3JhZ2UudGFibGUudGFibGU7Cisg
ICAgICAgIHVuc2lnbmVkIHNpemVNYXNrID0gbV9zdG9yYWdlLnRhYmxlLnNpemVNYXNrOwogICAg
ICAgICB1bnNpZ25lZCBoID0gSGFzaFRyYW5zbGF0b3I6Omhhc2goa2V5KTsKICAgICAgICAgdW5z
aWduZWQgaSA9IGggJiBzaXplTWFzazsKIApAQCAtNzAwLDE2ICs3MDAsMTYgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlw
ZW5hbWUgVD4KLSAgICBpbmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9y
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmZ1bGxMb29rdXBGb3JXcml0aW5n
KGNvbnN0IFQmIGtleSkgLT4gRnVsbExvb2t1cFR5cGUKKyAgICBpbmxpbmUgYXV0byBIYXNoVGFi
bGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cywgaW5saW5lQ2FwYWNpdHk+OjpmdWxsTG9va3VwRm9yV3JpdGluZyhjb25zdCBUJiBrZXkpIC0+
IEZ1bGxMb29rdXBUeXBlCiAgICAgewotICAgICAgICBBU1NFUlQobV90YWJsZSk7CisgICAgICAg
IEFTU0VSVChtX3N0b3JhZ2UudGFibGUudGFibGUpOwogICAgICAgICBjaGVja0tleTxIYXNoVHJh
bnNsYXRvcj4oa2V5KTsKIAogICAgICAgICB1bnNpZ25lZCBrID0gMDsKLSAgICAgICAgVmFsdWVU
eXBlKiB0YWJsZSA9IG1fdGFibGU7Ci0gICAgICAgIHVuc2lnbmVkIHNpemVNYXNrID0gbV90YWJs
ZVNpemVNYXNrOworICAgICAgICBWYWx1ZVR5cGUqIHRhYmxlID0gbV9zdG9yYWdlLnRhYmxlLnRh
YmxlOworICAgICAgICB1bnNpZ25lZCBzaXplTWFzayA9IG1fc3RvcmFnZS50YWJsZS5zaXplTWFz
azsKICAgICAgICAgdW5zaWduZWQgaCA9IEhhc2hUcmFuc2xhdG9yOjpoYXNoKGtleSk7CiAgICAg
ICAgIHVuc2lnbmVkIGkgPSBoICYgc2l6ZU1hc2s7CiAKQEAgLTc4MCwzMCArNzgwLDMwIEBAIG5h
bWVzcGFjZSBXVEYgewogICAgICAgICB9CiAgICAgfTsKICAgICAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGlu
bGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPjo6aW5pdGlhbGl6ZUJ1Y2tldChWYWx1ZVR5cGUmIGJ1Y2tldCkK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRy
YWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUg
S2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgaW5saW5lIHZvaWQgSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHMsIGlubGluZUNhcGFjaXR5Pjo6aW5pdGlhbGl6ZUJ1Y2tldChWYWx1ZVR5cGUmIGJ1Y2tldCkK
ICAgICB7CiAgICAgICAgIEhhc2hUYWJsZUJ1Y2tldEluaXRpYWxpemVyPFRyYWl0czo6ZW1wdHlW
YWx1ZUlzWmVybz46OnRlbXBsYXRlIGluaXRpYWxpemU8VHJhaXRzPihidWNrZXQpOwogICAgIH0K
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4
dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFt
ZSBLZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFp
dHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4K
LSAgICBBTFdBWVNfSU5MSU5FIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphZGQoVCYmIGtleSwgRXh0cmEmJiBl
eHRyYSkgLT4gQWRkUmVzdWx0CisgICAgQUxXQVlTX0lOTElORSBhdXRvIEhhc2hUYWJsZTxLZXks
IFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxp
bmVDYXBhY2l0eT46OmFkZChUJiYga2V5LCBFeHRyYSYmIGV4dHJhKSAtPiBBZGRSZXN1bHQKICAg
ICB7CiAgICAgICAgIGNoZWNrS2V5PEhhc2hUcmFuc2xhdG9yPihrZXkpOwogCiAgICAgICAgIGlu
dmFsaWRhdGVJdGVyYXRvcnMoKTsKIAotICAgICAgICBpZiAoIW1fdGFibGUpCisgICAgICAgIGlm
ICghbV9zdG9yYWdlLnRhYmxlLnRhYmxlKQogICAgICAgICAgICAgZXhwYW5kKG51bGxwdHIpOwog
CiAgICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAKLSAgICAgICAgQVNT
RVJUKG1fdGFibGUpOworICAgICAgICBBU1NFUlQobV9zdG9yYWdlLnRhYmxlLnRhYmxlKTsKIAog
ICAgICAgICB1bnNpZ25lZCBrID0gMDsKLSAgICAgICAgVmFsdWVUeXBlKiB0YWJsZSA9IG1fdGFi
bGU7Ci0gICAgICAgIHVuc2lnbmVkIHNpemVNYXNrID0gbV90YWJsZVNpemVNYXNrOworICAgICAg
ICBWYWx1ZVR5cGUqIHRhYmxlID0gbV9zdG9yYWdlLnRhYmxlLnRhYmxlOworICAgICAgICB1bnNp
Z25lZCBzaXplTWFzayA9IG1fc3RvcmFnZS50YWJsZS5zaXplTWFzazsKICAgICAgICAgdW5zaWdu
ZWQgaCA9IEhhc2hUcmFuc2xhdG9yOjpoYXNoKGtleSk7CiAgICAgICAgIHVuc2lnbmVkIGkgPSBo
ICYgc2l6ZU1hc2s7CiAKQEAgLTg1Nyw3ICs4NTcsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgaWYgKGRlbGV0ZWRFbnRyeSkgewogICAgICAgICAgICAgaW5pdGlhbGl6ZUJ1Y2tldCgqZGVs
ZXRlZEVudHJ5KTsKICAgICAgICAgICAgIGVudHJ5ID0gZGVsZXRlZEVudHJ5OwotICAgICAgICAg
ICAgLS1tX2RlbGV0ZWRDb3VudDsgCisgICAgICAgICAgICAtLW1fc3RvcmFnZS50YWJsZS5kZWxl
dGVkQ291bnQ7CiAgICAgICAgIH0KIAogICAgICAgICBIYXNoVHJhbnNsYXRvcjo6dHJhbnNsYXRl
KCplbnRyeSwgc3RkOjpmb3J3YXJkPFQ+KGtleSksIHN0ZDo6Zm9yd2FyZDxFeHRyYT4oZXh0cmEp
KTsKQEAgLTg3MSwxNSArODcxLDE1IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZXR1cm4g
QWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIHRydWUpOwogICAgIH0KIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMs
IHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4KLSAg
ICBpbmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZFBhc3NpbmdIYXNoQ29kZShUJiYga2V5LCBFeHRy
YSYmIGV4dHJhKSAtPiBBZGRSZXN1bHQKKyAgICBpbmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBW
YWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5l
Q2FwYWNpdHk+OjphZGRQYXNzaW5nSGFzaENvZGUoVCYmIGtleSwgRXh0cmEmJiBleHRyYSkgLT4g
QWRkUmVzdWx0CiAgICAgewogICAgICAgICBjaGVja0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsK
IAogICAgICAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7CiAKLSAgICAgICAgaWYgKCFtX3RhYmxl
KQorICAgICAgICBpZiAoIW1fc3RvcmFnZS50YWJsZS50YWJsZSkKICAgICAgICAgICAgIGV4cGFu
ZCgpOwogCiAgICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CkBAIC04OTUs
NyArODk1LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIAogICAgICAgICBpZiAoaXNEZWxl
dGVkQnVja2V0KCplbnRyeSkpIHsKICAgICAgICAgICAgIGluaXRpYWxpemVCdWNrZXQoKmVudHJ5
KTsKLSAgICAgICAgICAgIC0tbV9kZWxldGVkQ291bnQ7CisgICAgICAgICAgICAtLW1fc3RvcmFn
ZS50YWJsZS5kZWxldGVkQ291bnQ7CiAgICAgICAgIH0KIAogICAgICAgICBIYXNoVHJhbnNsYXRv
cjo6dHJhbnNsYXRlKCplbnRyeSwgc3RkOjpmb3J3YXJkPFQ+KGtleSksIHN0ZDo6Zm9yd2FyZDxF
eHRyYT4oZXh0cmEpLCBoKTsKQEAgLTkwOSwxMCArOTA5LDEwIEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIHRy
dWUpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgaW5saW5lIGF1dG8gSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpyZWlu
c2VydChWYWx1ZVR5cGUmJiBlbnRyeSkgLT4gVmFsdWVUeXBlKgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4KKyAgICBpbmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+
OjpyZWluc2VydChWYWx1ZVR5cGUmJiBlbnRyeSkgLT4gVmFsdWVUeXBlKgogICAgIHsKLSAgICAg
ICAgQVNTRVJUKG1fdGFibGUpOworICAgICAgICBBU1NFUlQobV9zdG9yYWdlLnRhYmxlLnRhYmxl
KTsKICAgICAgICAgQVNTRVJUKCFsb29rdXBGb3JXcml0aW5nKEV4dHJhY3Rvcjo6ZXh0cmFjdChl
bnRyeSkpLnNlY29uZCk7CiAgICAgICAgIEFTU0VSVCghaXNEZWxldGVkQnVja2V0KCoobG9va3Vw
Rm9yV3JpdGluZyhFeHRyYWN0b3I6OmV4dHJhY3QoZW50cnkpKS5maXJzdCkpKTsKICNpZiBEVU1Q
X0hBU0hUQUJMRV9TVEFUUwpAQCAtOTI5LDExICs5MjksMTEgQEAgbmFtZXNwYWNlIFdURiB7CiAg
ICAgICAgIHJldHVybiBuZXdFbnRyeTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFRyYW5zbGF0
b3IsIHR5cGVuYW1lIFQ+IAotICAgIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rv
ciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpmaW5kKGNvbnN0IFQmIGtleSkg
LT4gaXRlcmF0b3IKKyAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmZpbmQoY29u
c3QgVCYga2V5KSAtPiBpdGVyYXRvcgogICAgIHsKLSAgICAgICAgaWYgKCFtX3RhYmxlKQorICAg
ICAgICBpZiAoIW1fc3RvcmFnZS50YWJsZS50YWJsZSkKICAgICAgICAgICAgIHJldHVybiBlbmQo
KTsKIAogICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0gbG9va3VwPEhhc2hUcmFuc2xhdG9yPihr
ZXkpOwpAQCAtOTQzLDExICs5NDMsMTEgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVy
biBtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNo
VHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gCi0gICAgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmZpbmQoY29uc3Qg
VCYga2V5KSBjb25zdCAtPiBjb25zdF9pdGVyYXRvcgorICAgIGF1dG8gSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGlu
ZUNhcGFjaXR5Pjo6ZmluZChjb25zdCBUJiBrZXkpIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yCiAg
ICAgewotICAgICAgICBpZiAoIW1fdGFibGUpCisgICAgICAgIGlmICghbV9zdG9yYWdlLnRhYmxl
LnRhYmxlKQogICAgICAgICAgICAgcmV0dXJuIGVuZCgpOwogCiAgICAgICAgIFZhbHVlVHlwZSog
ZW50cnkgPSBjb25zdF9jYXN0PEhhc2hUYWJsZSo+KHRoaXMpLT5sb29rdXA8SGFzaFRyYW5zbGF0
b3I+KGtleSk7CkBAIC05NTcsMzMgKzk1NywzMyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAg
cmV0dXJuIG1ha2VLbm93bkdvb2RDb25zdEl0ZXJhdG9yKGVudHJ5KTsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3Is
IHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJh
aXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
IEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBl
bmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+IAotICAgIGJvb2wgSGFzaFRhYmxlPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpj
b250YWlucyhjb25zdCBUJiBrZXkpIGNvbnN0CisgICAgYm9vbCBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2Fw
YWNpdHk+Ojpjb250YWlucyhjb25zdCBUJiBrZXkpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAo
IW1fdGFibGUpCisgICAgICAgIGlmICghbV9zdG9yYWdlLnRhYmxlLnRhYmxlKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PEhhc2hUYWJsZSo+
KHRoaXMpLT5sb29rdXA8SGFzaFRyYW5zbGF0b3I+KGtleSk7CiAgICAgfQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4K
LSAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPjo6cmVtb3ZlQW5kSW52YWxpZGF0ZVdpdGhvdXRFbnRyeUNvbnNp
c3RlbmN5Q2hlY2soVmFsdWVUeXBlKiBwb3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFj
aXR5PgorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6cmVtb3ZlQW5kSW52YWxp
ZGF0ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soVmFsdWVUeXBlKiBwb3MpCiAgICAgewog
ICAgICAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7CiAgICAgICAgIHJlbW92ZShwb3MpOwogICAg
IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
IEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBl
bmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9y
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZUFuZEludmFsaWRhdGUo
VmFsdWVUeXBlKiBwb3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHZv
aWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6cmVtb3ZlQW5kSW52YWxpZGF0ZShWYWx1ZVR5
cGUqIHBvcykKICAgICB7CiAgICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMoKTsKICAgICAgICAg
aW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKICAgICAgICAgcmVtb3ZlKHBvcyk7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5
cGVuYW1lIEtleVRyYWl0cz4KLSAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVtb3ZlKFZhbHVlVHlwZSog
cG9zKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
IEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBl
bmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICB2b2lkIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
LCBpbmxpbmVDYXBhY2l0eT46OnJlbW92ZShWYWx1ZVR5cGUqIHBvcykKICAgICB7CiAjaWYgRFVN
UF9IQVNIVEFCTEVfU1RBVFMKICAgICAgICAgKytIYXNoVGFibGVTdGF0czo6bnVtUmVtb3ZlczsK
QEAgLTk5Myw3ICs5OTMsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICNlbmRpZgogCiAgICAgICAgIGRl
bGV0ZUJ1Y2tldCgqcG9zKTsKLSAgICAgICAgKyttX2RlbGV0ZWRDb3VudDsKKyAgICAgICAgKytt
X3N0b3JhZ2UudGFibGUuZGVsZXRlZENvdW50OwogICAgICAgICAtLW1fa2V5Q291bnQ7CiAKICAg
ICAgICAgaWYgKHNob3VsZFNocmluaygpKQpAQCAtMTAwMiw4ICsxMDAyLDggQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cz4KLSAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZShpdGVyYXRvciBp
dCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgaW5saW5lIHZvaWQgSGFz
aFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQogICAgIHsKICAgICAg
ICAgaWYgKGl0ID09IGVuZCgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTAxMSw4ICsxMDEx
LDggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJlbW92ZUFuZEludmFsaWRhdGUoY29uc3Rf
Y2FzdDxWYWx1ZVR5cGUqPihpdC5tX2l0ZXJhdG9yLm1fcG9zaXRpb24pKTsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0
b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5
VHJhaXRzPgotICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3Is
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVtb3ZlV2l0aG91dEVudHJ5Q29u
c2lzdGVuY3lDaGVjayhpdGVyYXRvciBpdCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNp
dHk+CisgICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6cmVtb3ZlV2l0
aG91dEVudHJ5Q29uc2lzdGVuY3lDaGVjayhpdGVyYXRvciBpdCkKICAgICB7CiAgICAgICAgIGlm
IChpdCA9PSBlbmQoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwMjAsOCArMTAyMCw4IEBA
IG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZW1vdmVBbmRJbnZhbGlkYXRlV2l0aG91dEVudHJ5
Q29uc2lzdGVuY3lDaGVjayhjb25zdF9jYXN0PFZhbHVlVHlwZSo+KGl0Lm1faXRlcmF0b3IubV9w
b3NpdGlvbikpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgaW5saW5lIHZvaWQgSGFzaFRhYmxl
PEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+
OjpyZW1vdmVXaXRob3V0RW50cnlDb25zaXN0ZW5jeUNoZWNrKGNvbnN0X2l0ZXJhdG9yIGl0KQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBpbmxpbmUgdm9pZCBIYXNoVGFi
bGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cywgaW5saW5lQ2FwYWNpdHk+OjpyZW1vdmVXaXRob3V0RW50cnlDb25zaXN0ZW5jeUNoZWNrKGNv
bnN0X2l0ZXJhdG9yIGl0KQogICAgIHsKICAgICAgICAgaWYgKGl0ID09IGVuZCgpKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTAyOSwyNSArMTAyOSwyNSBAQCBuYW1lc3BhY2UgV1RGIHsKICAg
ICAgICAgcmVtb3ZlQW5kSW52YWxpZGF0ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soY29u
c3RfY2FzdDxWYWx1ZVR5cGUqPihpdC5tX3Bvc2l0aW9uKSk7CiAgICAgfQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4K
LSAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZShjb25zdCBLZXlUeXBlJiBrZXkpCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFj
dG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtl
eVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIGlubGluZSB2b2lkIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
LCBpbmxpbmVDYXBhY2l0eT46OnJlbW92ZShjb25zdCBLZXlUeXBlJiBrZXkpCiAgICAgewogICAg
ICAgICByZW1vdmUoZmluZChrZXkpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAg
IGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVtb3ZlSWYoY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
KyAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjpyZW1vdmVJZihjb25z
dCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV90
YWJsZVNpemU7IGktLTspIHsKLSAgICAgICAgICAgIGlmIChpc0VtcHR5T3JEZWxldGVkQnVja2V0
KG1fdGFibGVbaV0pKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3N0b3JhZ2UudGFibGUu
c2l6ZTsgaS0tOykgeworICAgICAgICAgICAgaWYgKGlzRW1wdHlPckRlbGV0ZWRCdWNrZXQobV9z
dG9yYWdlLnRhYmxlLnRhYmxlW2ldKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgaWYgKCFmdW5jdG9yKG1fdGFibGVbaV0pKQorICAgICAgICAg
ICAgaWYgKCFmdW5jdG9yKG1fc3RvcmFnZS50YWJsZS50YWJsZVtpXSkpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGRlbGV0ZUJ1Y2tldChtX3Rh
YmxlW2ldKTsKLSAgICAgICAgICAgICsrbV9kZWxldGVkQ291bnQ7CisgICAgICAgICAgICBkZWxl
dGVCdWNrZXQobV9zdG9yYWdlLnRhYmxlLnRhYmxlW2ldKTsKKyAgICAgICAgICAgICsrbV9zdG9y
YWdlLnRhYmxlLmRlbGV0ZWRDb3VudDsKICAgICAgICAgICAgIC0tbV9rZXlDb3VudDsKICAgICAg
ICAgfQogICAgICAgICAKQEAgLTEwNTcsOCArMTA1Nyw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAg
ICAgICBpbnRlcm5hbENoZWNrVGFibGVDb25zaXN0ZW5jeSgpOwogICAgIH0KIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+
Ci0gICAgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz46OmFsbG9jYXRlVGFibGUodW5zaWduZWQgc2l6ZSkgLT4gVmFs
dWVUeXBlKgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBhdXRvIEhhc2hU
YWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJh
aXRzLCBpbmxpbmVDYXBhY2l0eT46OmFsbG9jYXRlVGFibGUodW5zaWduZWQgc2l6ZSkgLT4gVmFs
dWVUeXBlKgogICAgIHsKICAgICAgICAgLy8gd291bGQgdXNlIGEgdGVtcGxhdGUgbWVtYmVyIGZ1
bmN0aW9uIHdpdGggZXhwbGljaXQgc3BlY2lhbGl6YXRpb25zIGhlcmUsIGJ1dAogICAgICAgICAv
LyBnY2MgZG9lc24ndCBhcHBlYXIgdG8gc3VwcG9ydCB0aGF0CkBAIC0xMDcwLDggKzEwNzAsOCBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3Is
IHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJh
aXRzPgotICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpkZWFsbG9jYXRlVGFibGUoVmFsdWVUeXBlKiB0YWJs
ZSwgdW5zaWduZWQgc2l6ZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1l
IFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAg
dm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjpkZWFsbG9jYXRlVGFibGUoVmFsdWVUeXBl
KiB0YWJsZSwgdW5zaWduZWQgc2l6ZSkKICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgICAgIGlmICghaXNEZWxldGVkQnVja2V0KHRh
YmxlW2ldKSkKQEAgLTEwODAsMjcgKzEwODAsMjcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAg
IGZhc3RGcmVlKHRhYmxlKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGF1dG8gSGFzaFRhYmxl
PEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+
OjpleHBhbmQoVmFsdWVUeXBlKiBlbnRyeSkgLT4gVmFsdWVUeXBlKgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eT4KKyAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmV4
cGFuZChWYWx1ZVR5cGUqIGVudHJ5KSAtPiBWYWx1ZVR5cGUqCiAgICAgewogICAgICAgICB1bnNp
Z25lZCBuZXdTaXplOwotICAgICAgICBpZiAobV90YWJsZVNpemUgPT0gMCkKKyAgICAgICAgaWYg
KCFtX3N0b3JhZ2UudGFibGUuc2l6ZSkKICAgICAgICAgICAgIG5ld1NpemUgPSBLZXlUcmFpdHM6
Om1pbmltdW1UYWJsZVNpemU7CiAgICAgICAgIGVsc2UgaWYgKG11c3RSZWhhc2hJblBsYWNlKCkp
Ci0gICAgICAgICAgICBuZXdTaXplID0gbV90YWJsZVNpemU7CisgICAgICAgICAgICBuZXdTaXpl
ID0gbV9zdG9yYWdlLnRhYmxlLnNpemU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5ld1Np
emUgPSBtX3RhYmxlU2l6ZSAqIDI7CisgICAgICAgICAgICBuZXdTaXplID0gbV9zdG9yYWdlLnRh
YmxlLnNpemUgKiAyOwogCiAgICAgICAgIHJldHVybiByZWhhc2gobmV3U2l6ZSwgZW50cnkpOwog
ICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlaGFzaCh1bnNpZ25lZCBu
ZXdUYWJsZVNpemUsIFZhbHVlVHlwZSogZW50cnkpIC0+IFZhbHVlVHlwZSoKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBz
aXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+
OjpyZWhhc2godW5zaWduZWQgbmV3VGFibGVTaXplLCBWYWx1ZVR5cGUqIGVudHJ5KSAtPiBWYWx1
ZVR5cGUqCiAgICAgewogICAgICAgICBpbnRlcm5hbENoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2Vw
dFNpemUoKTsKIAotICAgICAgICB1bnNpZ25lZCBvbGRUYWJsZVNpemUgPSBtX3RhYmxlU2l6ZTsK
LSAgICAgICAgVmFsdWVUeXBlKiBvbGRUYWJsZSA9IG1fdGFibGU7CisgICAgICAgIHVuc2lnbmVk
IG9sZFRhYmxlU2l6ZSA9IG1fc3RvcmFnZS50YWJsZS5zaXplOworICAgICAgICBWYWx1ZVR5cGUq
IG9sZFRhYmxlID0gbV9zdG9yYWdlLnRhYmxlLnRhYmxlOwogCiAjaWYgRFVNUF9IQVNIVEFCTEVf
U1RBVFMKICAgICAgICAgaWYgKG9sZFRhYmxlU2l6ZSAhPSAwKQpAQCAtMTExMiw5ICsxMTEyLDkg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICArK21fc3RhdHMtPm51bVJlaGFzaGVzOwog
I2VuZGlmCiAKLSAgICAgICAgbV90YWJsZVNpemUgPSBuZXdUYWJsZVNpemU7Ci0gICAgICAgIG1f
dGFibGVTaXplTWFzayA9IG5ld1RhYmxlU2l6ZSAtIDE7Ci0gICAgICAgIG1fdGFibGUgPSBhbGxv
Y2F0ZVRhYmxlKG5ld1RhYmxlU2l6ZSk7CisgICAgICAgIG1fc3RvcmFnZS50YWJsZS5zaXplID0g
bmV3VGFibGVTaXplOworICAgICAgICBtX3N0b3JhZ2UudGFibGUuc2l6ZU1hc2sgPSBuZXdUYWJs
ZVNpemUgLSAxOworICAgICAgICBtX3N0b3JhZ2UudGFibGUudGFibGUgPSBhbGxvY2F0ZVRhYmxl
KG5ld1RhYmxlU2l6ZSk7CiAKICAgICAgICAgVmFsdWUqIG5ld0VudHJ5ID0gbnVsbHB0cjsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBvbGRUYWJsZVNpemU7ICsraSkgewpAQCAt
MTEzMCw3ICsxMTMwLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIAotICAgICAgICBtX2RlbGV0ZWRDb3VudCA9IDA7CisgICAgICAgIG1fc3RvcmFnZS50YWJs
ZS5kZWxldGVkQ291bnQgPSAwOwogCiAgICAgICAgIGRlYWxsb2NhdGVUYWJsZShvbGRUYWJsZSwg
b2xkVGFibGVTaXplKTsKIApAQCAtMTEzOCwyNyArMTEzOCwyMyBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICAgICAgcmV0dXJuIG5ld0VudHJ5OwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1
bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9pZCBI
YXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz46OmNsZWFyKCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1l
IFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAg
dm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjpjbGVhcigpCiAgICAgewogICAgICAgICBp
bnZhbGlkYXRlSXRlcmF0b3JzKCk7Ci0gICAgICAgIGlmICghbV90YWJsZSkKKyAgICAgICAgaWYg
KCFtX3N0b3JhZ2UudGFibGUudGFibGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
ZGVhbGxvY2F0ZVRhYmxlKG1fdGFibGUsIG1fdGFibGVTaXplKTsKLSAgICAgICAgbV90YWJsZSA9
IDA7Ci0gICAgICAgIG1fdGFibGVTaXplID0gMDsKLSAgICAgICAgbV90YWJsZVNpemVNYXNrID0g
MDsKKyAgICAgICAgZGVhbGxvY2F0ZVRhYmxlKG1fc3RvcmFnZS50YWJsZS50YWJsZSwgbV9zdG9y
YWdlLnRhYmxlLnNpemUpOworICAgICAgICBtX3N0b3JhZ2UudGFibGUuZGVsZXRlZENvdW50ID0g
MDsKKyAgICAgICAgbV9zdG9yYWdlLnRhYmxlLnNpemUgPSAwOworICAgICAgICBtX3N0b3JhZ2Uu
dGFibGUuc2l6ZU1hc2sgPSAwOwogICAgICAgICBtX2tleUNvdW50ID0gMDsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0
b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5
VHJhaXRzPgotICAgIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6SGFzaFRhYmxlKGNvbnN0IEhhc2hUYWJsZSYgb3RoZXIp
Ci0gICAgICAgIDogbV90YWJsZSgwKQotICAgICAgICAsIG1fdGFibGVTaXplKDApCi0gICAgICAg
ICwgbV90YWJsZVNpemVNYXNrKDApCi0gICAgICAgICwgbV9rZXlDb3VudCgwKQotICAgICAgICAs
IG1fZGVsZXRlZENvdW50KDApCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAg
IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywg
S2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46Okhhc2hUYWJsZShjb25zdCBIYXNoVGFibGUmIG90
aGVyKQorICAgICAgICA6IG1fa2V5Q291bnQoMCkKICNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFU
T1JTCiAgICAgICAgICwgbV9pdGVyYXRvcnMoMCkKICAgICAgICAgLCBtX211dGV4KHN0ZDo6bWFr
ZV91bmlxdWU8c3RkOjptdXRleD4oKSkKQEAgLTExNzYsMjUgKzExNzIsMjUgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgICAgICBhZGQoKml0KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIHZv
aWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+Ojpzd2FwKEhhc2hUYWJsZSYgb3RoZXIpCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNo
RnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlu
bGluZUNhcGFjaXR5PgorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6c3dhcChI
YXNoVGFibGUmIG90aGVyKQogICAgIHsKICAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwog
ICAgICAgICBvdGhlci5pbnZhbGlkYXRlSXRlcmF0b3JzKCk7CiAKLSAgICAgICAgc3RkOjpzd2Fw
KG1fdGFibGUsIG90aGVyLm1fdGFibGUpOwotICAgICAgICBzdGQ6OnN3YXAobV90YWJsZVNpemUs
IG90aGVyLm1fdGFibGVTaXplKTsKLSAgICAgICAgc3RkOjpzd2FwKG1fdGFibGVTaXplTWFzaywg
b3RoZXIubV90YWJsZVNpemVNYXNrKTsKKyAgICAgICAgc3RkOjpzd2FwKG1fc3RvcmFnZS50YWJs
ZS50YWJsZSwgb3RoZXIubV9zdG9yYWdlLnRhYmxlLnRhYmxlKTsKKyAgICAgICAgc3RkOjpzd2Fw
KG1fc3RvcmFnZS50YWJsZS5zaXplLCBvdGhlci5tX3N0b3JhZ2UudGFibGUuc2l6ZSk7CisgICAg
ICAgIHN0ZDo6c3dhcChtX3N0b3JhZ2UudGFibGUuc2l6ZU1hc2ssIG90aGVyLm1fc3RvcmFnZS50
YWJsZS5zaXplTWFzayk7CiAgICAgICAgIHN0ZDo6c3dhcChtX2tleUNvdW50LCBvdGhlci5tX2tl
eUNvdW50KTsKLSAgICAgICAgc3RkOjpzd2FwKG1fZGVsZXRlZENvdW50LCBvdGhlci5tX2RlbGV0
ZWRDb3VudCk7CisgICAgICAgIHN0ZDo6c3dhcChtX3N0b3JhZ2UudGFibGUuZGVsZXRlZENvdW50
LCBvdGhlci5tX3N0b3JhZ2UudGFibGUuZGVsZXRlZENvdW50KTsKIAogI2lmIERVTVBfSEFTSFRB
QkxFX1NUQVRTX1BFUl9UQUJMRQogICAgICAgICBtX3N0YXRzLnN3YXAob3RoZXIubV9zdGF0cyk7
CiAjZW5kaWYKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1l
IFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpvcGVyYXRv
cj0oY29uc3QgSGFzaFRhYmxlJiBvdGhlcikgLT4gSGFzaFRhYmxlJgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eT4KKyAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46Om9w
ZXJhdG9yPShjb25zdCBIYXNoVGFibGUmIG90aGVyKSAtPiBIYXNoVGFibGUmCiAgICAgewogICAg
ICAgICAvLyBGSVhNRTogSXQncyBsaWtlbHkgdGhhdCB0aGlzIGNhbiBiZSBpbXByb3ZlZCwgZm9y
IHN0YXRpYyBhbmFseXNlcyB0aGF0IHVzZQogICAgICAgICAvLyBIYXNoU2V0cy4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODQ1NQpAQCAtMTIwMyw4ICsxMTk5LDgg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3Is
IHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJh
aXRzPgotICAgIGlubGluZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Okhhc2hUYWJsZShIYXNoVGFibGUmJiBvdGhlcikK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRy
YWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUg
S2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgaW5saW5lIEhhc2hUYWJsZTxL
ZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBp
bmxpbmVDYXBhY2l0eT46Okhhc2hUYWJsZShIYXNoVGFibGUmJiBvdGhlcikKICNpZiBDSEVDS19I
QVNIVEFCTEVfSVRFUkFUT1JTCiAgICAgICAgIDogbV9pdGVyYXRvcnMobnVsbHB0cikKICAgICAg
ICAgLCBtX211dGV4KHN0ZDo6bWFrZV91bmlxdWU8c3RkOjptdXRleD4oKSkKQEAgLTEyMTIsMTcg
KzEyMDgsMTcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgewogICAgICAgICBvdGhlci5pbnZhbGlk
YXRlSXRlcmF0b3JzKCk7CiAKLSAgICAgICAgbV90YWJsZSA9IG90aGVyLm1fdGFibGU7Ci0gICAg
ICAgIG1fdGFibGVTaXplID0gb3RoZXIubV90YWJsZVNpemU7Ci0gICAgICAgIG1fdGFibGVTaXpl
TWFzayA9IG90aGVyLm1fdGFibGVTaXplTWFzazsKKyAgICAgICAgbV9zdG9yYWdlLnRhYmxlLnRh
YmxlID0gb3RoZXIubV9zdG9yYWdlLnRhYmxlLnRhYmxlOworICAgICAgICBtX3N0b3JhZ2UudGFi
bGUuc2l6ZSA9IG90aGVyLm1fc3RvcmFnZS50YWJsZS5zaXplOworICAgICAgICBtX3N0b3JhZ2Uu
dGFibGUuc2l6ZU1hc2sgPSBvdGhlci5tX3N0b3JhZ2UudGFibGUuc2l6ZU1hc2s7CiAgICAgICAg
IG1fa2V5Q291bnQgPSBvdGhlci5tX2tleUNvdW50OwotICAgICAgICBtX2RlbGV0ZWRDb3VudCA9
IG90aGVyLm1fZGVsZXRlZENvdW50OworICAgICAgICBtX3N0b3JhZ2UudGFibGUuZGVsZXRlZENv
dW50ID0gb3RoZXIubV9zdG9yYWdlLnRhYmxlLmRlbGV0ZWRDb3VudDsKIAotICAgICAgICBvdGhl
ci5tX3RhYmxlID0gbnVsbHB0cjsKLSAgICAgICAgb3RoZXIubV90YWJsZVNpemUgPSAwOwotICAg
ICAgICBvdGhlci5tX3RhYmxlU2l6ZU1hc2sgPSAwOworICAgICAgICBvdGhlci5tX3N0b3JhZ2Uu
dGFibGUudGFibGUgPSBudWxscHRyOworICAgICAgICBvdGhlci5tX3N0b3JhZ2UudGFibGUuc2l6
ZSA9IDA7CisgICAgICAgIG90aGVyLm1fc3RvcmFnZS50YWJsZS5zaXplTWFzayA9IDA7CiAgICAg
ICAgIG90aGVyLm1fa2V5Q291bnQgPSAwOwotICAgICAgICBvdGhlci5tX2RlbGV0ZWRDb3VudCA9
IDA7CisgICAgICAgIG90aGVyLm1fc3RvcmFnZS50YWJsZS5kZWxldGVkQ291bnQgPSAwOwogCiAj
aWYgRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCiAgICAgICAgIG1fc3RhdHMgPSBXVEY6
Om1vdmUob3RoZXIubV9zdGF0cyk7CkBAIC0xMjMwLDggKzEyMjYsOCBAQCBuYW1lc3BhY2UgV1RG
IHsKICNlbmRpZgogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgaW5saW5lIGF1dG8gSGFzaFRhYmxl
PEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+
OjpvcGVyYXRvcj0oSGFzaFRhYmxlJiYgb3RoZXIpIC0+IEhhc2hUYWJsZSYKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBz
aXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgaW5saW5lIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNh
cGFjaXR5Pjo6b3BlcmF0b3I9KEhhc2hUYWJsZSYmIG90aGVyKSAtPiBIYXNoVGFibGUmCiAgICAg
ewogICAgICAgICBIYXNoVGFibGUgdGVtcCA9IFdURjo6bW92ZShvdGhlcik7CiAgICAgICAgIHN3
YXAodGVtcCk7CkBAIC0xMjQwLDI0ICsxMjM2LDI0IEBAIG5hbWVzcGFjZSBXVEYgewogCiAjaWYg
IUFTU0VSVF9ESVNBQkxFRAogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y2hlY2tU
YWJsZUNvbnNpc3RlbmN5KCkgY29uc3QKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjpjaGVja1RhYmxlQ29uc2lzdGVu
Y3koKSBjb25zdAogICAgIHsKICAgICAgICAgY2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6
ZSgpOwotICAgICAgICBBU1NFUlQoIW1fdGFibGUgfHwgIXNob3VsZEV4cGFuZCgpKTsKKyAgICAg
ICAgQVNTRVJUKCFtX3N0b3JhZ2UudGFibGUudGFibGUgfHwgIXNob3VsZEV4cGFuZCgpKTsKICAg
ICAgICAgQVNTRVJUKCFzaG91bGRTaHJpbmsoKSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICB2
b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPjo6Y2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIGNvbnN0Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFj
dG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtl
eVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGlu
ZUNhcGFjaXR5Pjo6Y2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIGNvbnN0CiAgICAg
ewotICAgICAgICBpZiAoIW1fdGFibGUpCisgICAgICAgIGlmICghbV9zdG9yYWdlLnRhYmxlLnRh
YmxlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHVuc2lnbmVkIGNvdW50ID0gMDsK
ICAgICAgICAgdW5zaWduZWQgZGVsZXRlZENvdW50ID0gMDsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBqID0gMDsgaiA8IG1fdGFibGVTaXplOyArK2opIHsKLSAgICAgICAgICAgIFZhbHVlVHlwZSog
ZW50cnkgPSBtX3RhYmxlICsgajsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IG1f
c3RvcmFnZS50YWJsZS5zaXplOyArK2opIHsKKyAgICAgICAgICAgIFZhbHVlVHlwZSogZW50cnkg
PSBtX3N0b3JhZ2UudGFibGUudGFibGUgKyBqOwogICAgICAgICAgICAgaWYgKGlzRW1wdHlCdWNr
ZXQoKmVudHJ5KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMTI3NCwxOCArMTI3
MCwxOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVChjb3Vu
dCA9PSBtX2tleUNvdW50KTsKLSAgICAgICAgQVNTRVJUKGRlbGV0ZWRDb3VudCA9PSBtX2RlbGV0
ZWRDb3VudCk7Ci0gICAgICAgIEFTU0VSVChtX3RhYmxlU2l6ZSA+PSBLZXlUcmFpdHM6Om1pbmlt
dW1UYWJsZVNpemUpOwotICAgICAgICBBU1NFUlQobV90YWJsZVNpemVNYXNrKTsKLSAgICAgICAg
QVNTRVJUKG1fdGFibGVTaXplID09IG1fdGFibGVTaXplTWFzayArIDEpOworICAgICAgICBBU1NF
UlQoZGVsZXRlZENvdW50ID09IG1fc3RvcmFnZS50YWJsZS5kZWxldGVkQ291bnQpOworICAgICAg
ICBBU1NFUlQobV9zdG9yYWdlLnRhYmxlLnNpemUgPj0gS2V5VHJhaXRzOjptaW5pbXVtVGFibGVT
aXplKTsKKyAgICAgICAgQVNTRVJUKG1fc3RvcmFnZS50YWJsZS5zaXplTWFzayk7CisgICAgICAg
IEFTU0VSVChtX3N0b3JhZ2UudGFibGUuc2l6ZSA9PSBtX3N0b3JhZ2UudGFibGUuc2l6ZU1hc2sg
KyAxKTsKICAgICB9CiAKICNlbmRpZiAvLyBBU1NFUlRfRElTQUJMRUQKIAogI2lmIENIRUNLX0hB
U0hUQUJMRV9JVEVSQVRPUlMKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9pZCBIYXNoVGFibGU8S2V5LCBW
YWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmludmFs
aWRhdGVJdGVyYXRvcnMoKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFs
dWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICB2
b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmludmFsaWRhdGVJdGVyYXRvcnMoKQogICAg
IHsKICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2soKm1fbXV0ZXgpOwog
ICAgICAgICBjb25zdF9pdGVyYXRvciogbmV4dDsKQEAgLTEyOTgsOSArMTI5NCw5IEBAIG5hbWVz
cGFjZSBXVEYgewogICAgICAgICBtX2l0ZXJhdG9ycyA9IDA7CiAgICAgfQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4K
LSAgICB2b2lkIGFkZEl0ZXJhdG9yKGNvbnN0IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiogdGFibGUsCi0gICAgICAgIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz4qIGl0KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eT4KKyAgICB2b2lkIGFkZEl0ZXJhdG9yKGNvbnN0IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRy
YWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4q
IHRhYmxlLAorICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Piog
aXQpCiAgICAgewogICAgICAgICBpdC0+bV90YWJsZSA9IHRhYmxlOwogICAgICAgICBpdC0+bV9w
cmV2aW91cyA9IDA7CkBAIC0xMzIwLDggKzEzMTYsOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgfQogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9pZCByZW1vdmVJdGVyYXRvcihIYXNoVGFi
bGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBLZXlUcmFpdHM+KiBpdCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+Cisg
ICAgdm9pZCByZW1vdmVJdGVyYXRvcihIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFj
aXR5PiogaXQpCiAgICAgewogICAgICAgICAvLyBEZWxldGUgaXRlcmF0b3IgZnJvbSBkb3VibHkt
bGlua2VkIGxpc3Qgb2YgaXRlcmF0b3JzLgogICAgICAgICBpZiAoIWl0LT5tX3RhYmxlKSB7Cklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL0xpc3RIYXNoU2V0LmgJKHJldmlzaW9uIDE4MjAyNCkKKysrIFNvdXJjZS9XVEYvd3Rm
L0xpc3RIYXNoU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCwgMjAxMSwgMjAxMiwgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEJlbmphbWluIFBvdWxhaW4gPGlraXBv
dUBnbWFpbC5jb20+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMzgsMTcgKzM4LDE3IEBAIG5hbWVzcGFjZSBX
VEYgewogLy8gZ3VhcmFudGVlZCBzYWZlIGFnYWluc3QgbXV0YXRpb24gb2YgdGhlIExpc3RIYXNo
U2V0LCBleGNlcHQgZm9yCiAvLyByZW1vdmFsIG9mIHRoZSBpdGVtIGN1cnJlbnRseSBwb2ludGVk
IHRvIGJ5IGEgZ2l2ZW4gaXRlcmF0b3IuCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zPiBjbGFzcyBMaXN0SGFzaFNldDsKK3RlbXBsYXRlPHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGNs
YXNzIExpc3RIYXNoU2V0OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUg
SGFzaEFyZz4gY2xhc3MgTGlzdEhhc2hTZXRJdGVyYXRvcjsKLXRlbXBsYXRlPHR5cGVuYW1lIFZh
bHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnPiBjbGFzcyBMaXN0SGFzaFNldENvbnN0SXRlcmF0b3I7
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZywgc2l6ZV90IGlu
bGluZUNhcGFjaXR5PiBjbGFzcyBMaXN0SGFzaFNldEl0ZXJhdG9yOwordGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gY2xh
c3MgTGlzdEhhc2hTZXRDb25zdEl0ZXJhdG9yOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFy
Zz4gc3RydWN0IExpc3RIYXNoU2V0Tm9kZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSGFzaEFyZz4g
c3RydWN0IExpc3RIYXNoU2V0Tm9kZUhhc2hGdW5jdGlvbnM7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBI
YXNoQXJnPiBzdHJ1Y3QgTGlzdEhhc2hTZXRUcmFuc2xhdG9yOwogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZyA9IHR5cGVuYW1lIERlZmF1bHRIYXNoPFZhbHVl
QXJnPjo6SGFzaD4gY2xhc3MgTGlzdEhhc2hTZXQgewordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVB
cmcsIHR5cGVuYW1lIEhhc2hBcmcgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxWYWx1ZUFyZz46Okhh
c2gsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSA9IDA+IGNsYXNzIExpc3RIYXNoU2V0IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBMaXN0SGFzaFNl
dE5vZGU8VmFsdWVBcmc+IE5vZGU7CkBAIC02Miw5ICs2Miw5IEBAIHByaXZhdGU6CiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBWYWx1ZUFyZyBWYWx1ZVR5cGU7CiAKLSAgICB0eXBlZGVmIExpc3RIYXNo
U2V0SXRlcmF0b3I8VmFsdWVUeXBlLCBIYXNoQXJnPiBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIExp
c3RIYXNoU2V0Q29uc3RJdGVyYXRvcjxWYWx1ZVR5cGUsIEhhc2hBcmc+IGNvbnN0X2l0ZXJhdG9y
OwotICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNldENvbnN0SXRlcmF0b3I8VmFsdWVUeXBlLCBI
YXNoQXJnPjsKKyAgICB0eXBlZGVmIExpc3RIYXNoU2V0SXRlcmF0b3I8VmFsdWVUeXBlLCBIYXNo
QXJnLCBpbmxpbmVDYXBhY2l0eT4gaXRlcmF0b3I7CisgICAgdHlwZWRlZiBMaXN0SGFzaFNldENv
bnN0SXRlcmF0b3I8VmFsdWVUeXBlLCBIYXNoQXJnLCBpbmxpbmVDYXBhY2l0eT4gY29uc3RfaXRl
cmF0b3I7CisgICAgZnJpZW5kIGNsYXNzIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcjxWYWx1ZVR5
cGUsIEhhc2hBcmcsIGlubGluZUNhcGFjaXR5PjsKIAogICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNl
X2l0ZXJhdG9yPGl0ZXJhdG9yPiByZXZlcnNlX2l0ZXJhdG9yOwogICAgIHR5cGVkZWYgc3RkOjpy
ZXZlcnNlX2l0ZXJhdG9yPGNvbnN0X2l0ZXJhdG9yPiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwpA
QCAtMTUwLDcgKzE1MCw3IEBAIHByaXZhdGU6CiAgICAgaXRlcmF0b3IgbWFrZUl0ZXJhdG9yKE5v
ZGUqKTsKICAgICBjb25zdF9pdGVyYXRvciBtYWtlQ29uc3RJdGVyYXRvcihOb2RlKikgY29uc3Q7
CiAKLSAgICBIYXNoVGFibGU8Tm9kZSosIE5vZGUqLCBJZGVudGl0eUV4dHJhY3RvciwgTm9kZUhh
c2gsIE5vZGVUcmFpdHMsIE5vZGVUcmFpdHM+IG1faW1wbDsKKyAgICBIYXNoVGFibGU8Tm9kZSos
IE5vZGUqLCBJZGVudGl0eUV4dHJhY3RvciwgTm9kZUhhc2gsIE5vZGVUcmFpdHMsIE5vZGVUcmFp
dHMsIGlubGluZUNhcGFjaXR5PiBtX2ltcGw7CiAgICAgTm9kZSogbV9oZWFkOwogICAgIE5vZGUq
IG1fdGFpbDsKIH07CkBAIC0xNzcsMTUgKzE3NywxNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNo
QXJnPiBzdHJ1Y3QgTGlzdEhhCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJn
LCB0eXBlbmFtZSBIYXNoQXJnPiBjbGFzcyBMaXN0SGFzaFNldEl0ZXJhdG9yIHsKK3RlbXBsYXRl
PHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCBzaXplX3QgaW5saW5lQ2FwYWNp
dHk+IGNsYXNzIExpc3RIYXNoU2V0SXRlcmF0b3IgewogcHJpdmF0ZToKLSAgICB0eXBlZGVmIExp
c3RIYXNoU2V0PFZhbHVlQXJnLCBIYXNoQXJnPiBMaXN0SGFzaFNldFR5cGU7Ci0gICAgdHlwZWRl
ZiBMaXN0SGFzaFNldEl0ZXJhdG9yPFZhbHVlQXJnLCBIYXNoQXJnPiBpdGVyYXRvcjsKLSAgICB0
eXBlZGVmIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcjxWYWx1ZUFyZywgSGFzaEFyZz4gY29uc3Rf
aXRlcmF0b3I7CisgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxWYWx1ZUFyZywgSGFzaEFyZywgaW5s
aW5lQ2FwYWNpdHk+IExpc3RIYXNoU2V0VHlwZTsKKyAgICB0eXBlZGVmIExpc3RIYXNoU2V0SXRl
cmF0b3I8VmFsdWVBcmcsIEhhc2hBcmcsIGlubGluZUNhcGFjaXR5PiBpdGVyYXRvcjsKKyAgICB0
eXBlZGVmIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcjxWYWx1ZUFyZywgSGFzaEFyZywgaW5saW5l
Q2FwYWNpdHk+IGNvbnN0X2l0ZXJhdG9yOwogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXROb2RlPFZh
bHVlQXJnPiBOb2RlOwogICAgIHR5cGVkZWYgVmFsdWVBcmcgVmFsdWVUeXBlOwogCi0gICAgZnJp
ZW5kIGNsYXNzIExpc3RIYXNoU2V0PFZhbHVlQXJnLCBIYXNoQXJnPjsKKyAgICBmcmllbmQgY2xh
c3MgTGlzdEhhc2hTZXQ8VmFsdWVBcmcsIEhhc2hBcmcsIGlubGluZUNhcGFjaXR5PjsKIAogICAg
IExpc3RIYXNoU2V0SXRlcmF0b3IoY29uc3QgTGlzdEhhc2hTZXRUeXBlKiBzZXQsIE5vZGUqIHBv
c2l0aW9uKSA6IG1faXRlcmF0b3Ioc2V0LCBwb3NpdGlvbikgeyB9CiAKQEAgLTIyNCwxNiArMjI0
LDE2IEBAIHByaXZhdGU6CiAgICAgY29uc3RfaXRlcmF0b3IgbV9pdGVyYXRvcjsKIH07CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnPiBjbGFzcyBMaXN0SGFz
aFNldENvbnN0SXRlcmF0b3IgewordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1l
IEhhc2hBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gY2xhc3MgTGlzdEhhc2hTZXRDb25zdEl0
ZXJhdG9yIHsKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldDxWYWx1ZUFyZywgSGFz
aEFyZz4gTGlzdEhhc2hTZXRUeXBlOwotICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRJdGVyYXRvcjxW
YWx1ZUFyZywgSGFzaEFyZz4gaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldENvbnN0
SXRlcmF0b3I8VmFsdWVBcmcsIEhhc2hBcmc+IGNvbnN0X2l0ZXJhdG9yOworICAgIHR5cGVkZWYg
TGlzdEhhc2hTZXQ8VmFsdWVBcmcsIEhhc2hBcmcsIGlubGluZUNhcGFjaXR5PiBMaXN0SGFzaFNl
dFR5cGU7CisgICAgdHlwZWRlZiBMaXN0SGFzaFNldEl0ZXJhdG9yPFZhbHVlQXJnLCBIYXNoQXJn
LCBpbmxpbmVDYXBhY2l0eT4gaXRlcmF0b3I7CisgICAgdHlwZWRlZiBMaXN0SGFzaFNldENvbnN0
SXRlcmF0b3I8VmFsdWVBcmcsIEhhc2hBcmcsIGlubGluZUNhcGFjaXR5PiBjb25zdF9pdGVyYXRv
cjsKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0Tm9kZTxWYWx1ZUFyZz4gTm9kZTsKICAgICB0eXBl
ZGVmIFZhbHVlQXJnIFZhbHVlVHlwZTsKIAotICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNldDxW
YWx1ZUFyZywgSGFzaEFyZz47Ci0gICAgZnJpZW5kIGNsYXNzIExpc3RIYXNoU2V0SXRlcmF0b3I8
VmFsdWVBcmcsIEhhc2hBcmc+OworICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNldDxWYWx1ZUFy
ZywgSGFzaEFyZywgaW5saW5lQ2FwYWNpdHk+OworICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNl
dEl0ZXJhdG9yPFZhbHVlQXJnLCBIYXNoQXJnLCBpbmxpbmVDYXBhY2l0eT47CiAKICAgICBMaXN0
SGFzaFNldENvbnN0SXRlcmF0b3IoY29uc3QgTGlzdEhhc2hTZXRUeXBlKiBzZXQsIE5vZGUqIHBv
c2l0aW9uKQogICAgICAgICA6IG1fc2V0KHNldCkKQEAgLTMwOCwxNSArMzA4LDE1IEBAIHN0cnVj
dCBMaXN0SGFzaFNldFRyYW5zbGF0b3IgewogICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgTGlzdEhhc2hTZXQ8VCwgVT46Okxpc3RIYXNoU2V0KCkK
K3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIExpc3RI
YXNoU2V0PFQsIFUsIFY+OjpMaXN0SGFzaFNldCgpCiAgICAgOiBtX2hlYWQoMCkKICAgICAsIG1f
dGFpbCgwKQogewogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5l
IExpc3RIYXNoU2V0PFQsIFU+OjpMaXN0SGFzaFNldChjb25zdCBMaXN0SGFzaFNldCYgb3RoZXIp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBMaXN0
SGFzaFNldDxULCBVLCBWPjo6TGlzdEhhc2hTZXQoY29uc3QgTGlzdEhhc2hTZXQmIG90aGVyKQog
ICAgIDogbV9oZWFkKDApCiAgICAgLCBtX3RhaWwoMCkKIHsKQEAgLTMyNCw2MSArMzI0LDYxIEBA
IGlubGluZSBMaXN0SGFzaFNldDxULCBVPjo6TGlzdEhhc2hTZXQoY28KICAgICAgICAgYWRkKCpp
dCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgTGlzdEhh
c2hTZXQ8VCwgVT4mIExpc3RIYXNoU2V0PFQsIFU+OjpvcGVyYXRvcj0oY29uc3QgTGlzdEhhc2hT
ZXQmIG90aGVyKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+Citp
bmxpbmUgTGlzdEhhc2hTZXQ8VCwgVSwgVj4mIExpc3RIYXNoU2V0PFQsIFUsIFY+OjpvcGVyYXRv
cj0oY29uc3QgTGlzdEhhc2hTZXQmIG90aGVyKQogewogICAgIExpc3RIYXNoU2V0IHRtcChvdGhl
cik7CiAgICAgc3dhcCh0bXApOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSB2b2lkIExpc3RIYXNoU2V0PFQsIFU+Ojpzd2Fw
KExpc3RIYXNoU2V0JiBvdGhlcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNp
emVfdCBWPgoraW5saW5lIHZvaWQgTGlzdEhhc2hTZXQ8VCwgVSwgVj46OnN3YXAoTGlzdEhhc2hT
ZXQmIG90aGVyKQogewogICAgIG1faW1wbC5zd2FwKG90aGVyLm1faW1wbCk7CiAgICAgc3RkOjpz
d2FwKG1faGVhZCwgb3RoZXIubV9oZWFkKTsKICAgICBzdGQ6OnN3YXAobV90YWlsLCBvdGhlci5t
X3RhaWwpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIExp
c3RIYXNoU2V0PFQsIFU+Ojp+TGlzdEhhc2hTZXQoKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUgTGlzdEhhc2hTZXQ8VCwgVSwgVj46On5MaXN0SGFz
aFNldCgpCiB7CiAgICAgZGVsZXRlQWxsTm9kZXMoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4KLWlubGluZSB1bnNpZ25lZCBMaXN0SGFzaFNldDxULCBVPjo6c2l6ZSgp
IGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGlu
ZSB1bnNpZ25lZCBMaXN0SGFzaFNldDxULCBVLCBWPjo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1faW1wbC5zaXplKCk7IAogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PgotaW5saW5lIHVuc2lnbmVkIExpc3RIYXNoU2V0PFQsIFU+OjpjYXBhY2l0eSgpIGNvbnN0Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSB1bnNpZ25l
ZCBMaXN0SGFzaFNldDxULCBVLCBWPjo6Y2FwYWNpdHkoKSBjb25zdAogewogICAgIHJldHVybiBt
X2ltcGwuY2FwYWNpdHkoKTsgCiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
Ci1pbmxpbmUgYm9vbCBMaXN0SGFzaFNldDxULCBVPjo6aXNFbXB0eSgpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBib29sIExpc3RIYXNo
U2V0PFQsIFUsIFY+Ojppc0VtcHR5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbXBsLmlzRW1w
dHkoKTsgCiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgVCYg
TGlzdEhhc2hTZXQ8VCwgVT46OmZpcnN0KCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHNpemVfdCBWPgoraW5saW5lIFQmIExpc3RIYXNoU2V0PFQsIFUsIFY+OjpmaXJzdCgpCiB7
CiAgICAgQVNTRVJUKCFpc0VtcHR5KCkpOwogICAgIHJldHVybiBtX2hlYWQtPm1fdmFsdWU7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgdm9pZCBMaXN0SGFz
aFNldDxULCBVPjo6cmVtb3ZlRmlyc3QoKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgc2l6ZV90IFY+CitpbmxpbmUgdm9pZCBMaXN0SGFzaFNldDxULCBVLCBWPjo6cmVtb3ZlRmly
c3QoKQogewogICAgIHRha2VGaXJzdCgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPgotaW5saW5lIFQgTGlzdEhhc2hTZXQ8VCwgVT46OnRha2VGaXJzdCgpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBUIExpc3RIYXNoU2V0
PFQsIFUsIFY+Ojp0YWtlRmlyc3QoKQogewogICAgIEFTU0VSVCghaXNFbXB0eSgpKTsKICAgICBh
dXRvIGl0ID0gbV9pbXBsLmZpbmQobV9oZWFkKTsKQEAgLTM5MCwzNSArMzkwLDM1IEBAIGlubGlu
ZSBUIExpc3RIYXNoU2V0PFQsIFU+Ojp0YWtlRmlyc3QoKQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgY29uc3QgVCYgTGlz
dEhhc2hTZXQ8VCwgVT46OmZpcnN0KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHNpemVfdCBWPgoraW5saW5lIGNvbnN0IFQmIExpc3RIYXNoU2V0PFQsIFUsIFY+Ojpm
aXJzdCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFpc0VtcHR5KCkpOwogICAgIHJldHVybiBtX2hl
YWQtPm1fdmFsdWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxp
bmUgVCYgTGlzdEhhc2hTZXQ8VCwgVT46Omxhc3QoKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUgVCYgTGlzdEhhc2hTZXQ8VCwgVSwgVj46Omxhc3Qo
KQogewogICAgIEFTU0VSVCghaXNFbXB0eSgpKTsKICAgICByZXR1cm4gbV90YWlsLT5tX3ZhbHVl
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIGNvbnN0IFQm
IExpc3RIYXNoU2V0PFQsIFU+OjpsYXN0KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIGNvbnN0IFQmIExpc3RIYXNoU2V0PFQsIFUsIFY+
OjpsYXN0KCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIG1f
dGFpbC0+bV92YWx1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlu
bGluZSB2b2lkIExpc3RIYXNoU2V0PFQsIFU+OjpyZW1vdmVMYXN0KCkKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIHZvaWQgTGlzdEhhc2hTZXQ8VCwg
VSwgVj46OnJlbW92ZUxhc3QoKQogewogICAgIHRha2VMYXN0KCk7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgVCBMaXN0SGFzaFNldDxULCBVPjo6dGFrZUxh
c3QoKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUg
VCBMaXN0SGFzaFNldDxULCBVLCBWPjo6dGFrZUxhc3QoKQogewogICAgIEFTU0VSVCghaXNFbXB0
eSgpKTsKICAgICBhdXRvIGl0ID0gbV9pbXBsLmZpbmQobV90YWlsKTsKQEAgLTQzMCw4ICs0MzAs
OCBAQCBpbmxpbmUgVCBMaXN0SGFzaFNldDxULCBVPjo6dGFrZUxhc3QoKQogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgYXV0
byBMaXN0SGFzaFNldDxULCBVPjo6ZmluZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBpdGVy
YXRvcgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUg
YXV0byBMaXN0SGFzaFNldDxULCBVLCBWPjo6ZmluZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAt
PiBpdGVyYXRvcgogewogICAgIGF1dG8gaXQgPSBtX2ltcGwudGVtcGxhdGUgZmluZDxCYXNlVHJh
bnNsYXRvcj4odmFsdWUpOwogICAgIGlmIChpdCA9PSBtX2ltcGwuZW5kKCkpCkBAIC00MzksOCAr
NDM5LDggQEAgaW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46OmZpbmQoY29ucwogICAgIHJl
dHVybiBtYWtlSXRlcmF0b3IoKml0KTsgCiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+Ci1pbmxpbmUgYXV0byBMaXN0SGFzaFNldDxULCBVPjo6ZmluZChjb25zdCBWYWx1ZVR5
cGUmIHZhbHVlKSBjb25zdCAtPiBjb25zdF9pdGVyYXRvcgordGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUgYXV0byBMaXN0SGFzaFNldDxULCBVLCBWPjo6
ZmluZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdCAtPiBjb25zdF9pdGVyYXRvcgogewog
ICAgIGF1dG8gaXQgPSBtX2ltcGwudGVtcGxhdGUgZmluZDxCYXNlVHJhbnNsYXRvcj4odmFsdWUp
OwogICAgIGlmIChpdCA9PSBtX2ltcGwuZW5kKCkpCkBAIC00NTQsOSArNDU0LDkgQEAgc3RydWN0
IExpc3RIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXIgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFQmIGEsIGNvbnN0IFUmIGIpIHsg
cmV0dXJuIFRyYW5zbGF0b3I6OmVxdWFsKGEtPm1fdmFsdWUsIGIpOyB9CiB9OwogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFU+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1
ZVR5cGUsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgSGFzaFRyYW5zbGF0b3I+Ci1pbmxpbmUgYXV0byBMaXN0SGFzaFNldDxWYWx1ZVR5cGUsIFU+
OjpmaW5kKGNvbnN0IFQmIHZhbHVlKSAtPiBpdGVyYXRvcgoraW5saW5lIGF1dG8gTGlzdEhhc2hT
ZXQ8VmFsdWVUeXBlLCBVLCBWPjo6ZmluZChjb25zdCBUJiB2YWx1ZSkgLT4gaXRlcmF0b3IKIHsK
ICAgICBhdXRvIGl0ID0gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8TGlzdEhhc2hTZXRUcmFuc2xhdG9y
QWRhcHRlcjxIYXNoVHJhbnNsYXRvcj4+KHZhbHVlKTsKICAgICBpZiAoaXQgPT0gbV9pbXBsLmVu
ZCgpKQpAQCAtNDY0LDkgKzQ2NCw5IEBAIGlubGluZSBhdXRvIExpc3RIYXNoU2V0PFZhbHVlVHlw
ZSwgVT46OmYKICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yKCppdCk7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgVT4KK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlw
ZSwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBI
YXNoVHJhbnNsYXRvcj4KLWlubGluZSBhdXRvIExpc3RIYXNoU2V0PFZhbHVlVHlwZSwgVT46OmZp
bmQoY29uc3QgVCYgdmFsdWUpIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yCitpbmxpbmUgYXV0byBM
aXN0SGFzaFNldDxWYWx1ZVR5cGUsIFUsIFY+OjpmaW5kKGNvbnN0IFQmIHZhbHVlKSBjb25zdCAt
PiBjb25zdF9pdGVyYXRvcgogewogICAgIGF1dG8gaXQgPSBtX2ltcGwudGVtcGxhdGUgZmluZDxM
aXN0SGFzaFNldFRyYW5zbGF0b3JBZGFwdGVyPEhhc2hUcmFuc2xhdG9yPj4odmFsdWUpOwogICAg
IGlmIChpdCA9PSBtX2ltcGwuZW5kKCkpCkBAIC00NzQsMjEgKzQ3NCwyMSBAQCBpbmxpbmUgYXV0
byBMaXN0SGFzaFNldDxWYWx1ZVR5cGUsIFU+OjpmCiAgICAgcmV0dXJuIG1ha2VDb25zdEl0ZXJh
dG9yKCppdCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgVT4K
K3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KLWlubGluZSBib29sIExp
c3RIYXNoU2V0PFZhbHVlVHlwZSwgVT46OmNvbnRhaW5zKGNvbnN0IFQmIHZhbHVlKSBjb25zdAor
aW5saW5lIGJvb2wgTGlzdEhhc2hTZXQ8VmFsdWVUeXBlLCBVLCBWPjo6Y29udGFpbnMoY29uc3Qg
VCYgdmFsdWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBjb250YWluczxM
aXN0SGFzaFNldFRyYW5zbGF0b3JBZGFwdGVyPEhhc2hUcmFuc2xhdG9yPj4odmFsdWUpOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIGJvb2wgTGlzdEhhc2hT
ZXQ8VCwgVT46OmNvbnRhaW5zKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBib29sIExpc3RIYXNo
U2V0PFQsIFUsIFY+Ojpjb250YWlucyhjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdAogewog
ICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgY29udGFpbnM8QmFzZVRyYW5zbGF0b3I+KHZhbHVl
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWF1dG8gTGlzdEhhc2hT
ZXQ8VCwgVT46OmFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBBZGRSZXN1bHQKK3RlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgorYXV0byBMaXN0SGFzaFNldDxU
LCBVLCBWPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIC0+IEFkZFJlc3VsdAogewogICAg
IGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4odmFsdWUs
IG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKQEAgLTQ5Niw4ICs0OTYsOCBA
QCBhdXRvIExpc3RIYXNoU2V0PFQsIFU+OjphZGQoY29uc3QgVmFsdWVUCiAgICAgcmV0dXJuIEFk
ZFJlc3VsdChtYWtlSXRlcmF0b3IoKnJlc3VsdC5pdGVyYXRvciksIHJlc3VsdC5pc05ld0VudHJ5
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWF1dG8gTGlzdEhhc2hT
ZXQ8VCwgVT46OmFkZChWYWx1ZVR5cGUmJiB2YWx1ZSkgLT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2F1dG8gTGlzdEhhc2hTZXQ8VCwgVSwg
Vj46OmFkZChWYWx1ZVR5cGUmJiB2YWx1ZSkgLT4gQWRkUmVzdWx0CiB7CiAgICAgYXV0byByZXN1
bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VUcmFuc2xhdG9yPihXVEY6Om1vdmUodmFsdWUp
LCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCkBAIC01MDUsOCArNTA1LDgg
QEAgYXV0byBMaXN0SGFzaFNldDxULCBVPjo6YWRkKFZhbHVlVHlwZSYmIAogICAgIHJldHVybiBB
ZGRSZXN1bHQobWFrZUl0ZXJhdG9yKCpyZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRy
eSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1hdXRvIExpc3RIYXNo
U2V0PFQsIFU+OjphcHBlbmRPck1vdmVUb0xhc3QoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4g
QWRkUmVzdWx0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2F1
dG8gTGlzdEhhc2hTZXQ8VCwgVSwgVj46OmFwcGVuZE9yTW92ZVRvTGFzdChjb25zdCBWYWx1ZVR5
cGUmIHZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1faW1wbC50ZW1w
bGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KHZhbHVlLCBudWxscHRyKTsKICAgICBOb2RlKiBub2Rl
ID0gKnJlc3VsdC5pdGVyYXRvcjsKQEAgLTUxNyw4ICs1MTcsOCBAQCBhdXRvIExpc3RIYXNoU2V0
PFQsIFU+OjphcHBlbmRPck1vdmVUb0xhCiAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlSXRlcmF0
b3IoKnJlc3VsdC5pdGVyYXRvciksIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46OmFwcGVuZE9y
TW92ZVRvTGFzdChWYWx1ZVR5cGUmJiB2YWx1ZSkgLT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2F1dG8gTGlzdEhhc2hTZXQ8VCwgVSwgVj46
OmFwcGVuZE9yTW92ZVRvTGFzdChWYWx1ZVR5cGUmJiB2YWx1ZSkgLT4gQWRkUmVzdWx0CiB7CiAg
ICAgYXV0byByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VUcmFuc2xhdG9yPihXVEY6
Om1vdmUodmFsdWUpLCBudWxscHRyKTsKICAgICBOb2RlKiBub2RlID0gKnJlc3VsdC5pdGVyYXRv
cjsKQEAgLTUyOSw4ICs1MjksOCBAQCBhdXRvIExpc3RIYXNoU2V0PFQsIFU+OjphcHBlbmRPck1v
dmVUb0xhCiAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlSXRlcmF0b3IoKnJlc3VsdC5pdGVyYXRv
ciksIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KLWF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46OnByZXBlbmRPck1vdmVUb0ZpcnN0KGNvbnN0
IFZhbHVlVHlwZSYgdmFsdWUpIC0+IEFkZFJlc3VsdAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgc2l6ZV90IFY+CithdXRvIExpc3RIYXNoU2V0PFQsIFUsIFY+OjpwcmVwZW5kT3JN
b3ZlVG9GaXJzdChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKICAgICBh
dXRvIHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KHZhbHVlLCBu
dWxscHRyKTsKICAgICBOb2RlKiBub2RlID0gKnJlc3VsdC5pdGVyYXRvcjsKQEAgLTU0MSw4ICs1
NDEsOCBAQCBhdXRvIExpc3RIYXNoU2V0PFQsIFU+OjpwcmVwZW5kT3JNb3ZlVG9GCiAgICAgcmV0
dXJuIEFkZFJlc3VsdChtYWtlSXRlcmF0b3IoKnJlc3VsdC5pdGVyYXRvciksIHJlc3VsdC5pc05l
d0VudHJ5KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWF1dG8gTGlz
dEhhc2hTZXQ8VCwgVT46OnByZXBlbmRPck1vdmVUb0ZpcnN0KFZhbHVlVHlwZSYmIHZhbHVlKSAt
PiBBZGRSZXN1bHQKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgor
YXV0byBMaXN0SGFzaFNldDxULCBVLCBWPjo6cHJlcGVuZE9yTW92ZVRvRmlyc3QoVmFsdWVUeXBl
JiYgdmFsdWUpIC0+IEFkZFJlc3VsdAogewogICAgIGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBs
YXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4oV1RGOjptb3ZlKHZhbHVlKSwgbnVsbHB0cik7CiAgICAg
Tm9kZSogbm9kZSA9ICpyZXN1bHQuaXRlcmF0b3I7CkBAIC01NTMsMjAgKzU1MywyMCBAQCBhdXRv
IExpc3RIYXNoU2V0PFQsIFU+OjpwcmVwZW5kT3JNb3ZlVG9GCiAgICAgcmV0dXJuIEFkZFJlc3Vs
dChtYWtlSXRlcmF0b3IoKnJlc3VsdC5pdGVyYXRvciksIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWF1dG8gTGlzdEhhc2hTZXQ8VCwg
VT46Omluc2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUmIGJlZm9yZVZhbHVlLCBjb25zdCBWYWx1
ZVR5cGUmIG5ld1ZhbHVlKSAtPiBBZGRSZXN1bHQKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHNpemVfdCBWPgorYXV0byBMaXN0SGFzaFNldDxULCBVLCBWPjo6aW5zZXJ0QmVmb3Jl
KGNvbnN0IFZhbHVlVHlwZSYgYmVmb3JlVmFsdWUsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFsdWUp
IC0+IEFkZFJlc3VsdAogewogICAgIHJldHVybiBpbnNlcnRCZWZvcmUoZmluZChiZWZvcmVWYWx1
ZSksIG5ld1ZhbHVlKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWF1
dG8gTGlzdEhhc2hTZXQ8VCwgVT46Omluc2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUmIGJlZm9y
ZVZhbHVlLCBWYWx1ZVR5cGUmJiBuZXdWYWx1ZSkgLT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2F1dG8gTGlzdEhhc2hTZXQ8VCwgVSwgVj46
Omluc2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUmIGJlZm9yZVZhbHVlLCBWYWx1ZVR5cGUmJiBu
ZXdWYWx1ZSkgLT4gQWRkUmVzdWx0CiB7CiAgICAgcmV0dXJuIGluc2VydEJlZm9yZShmaW5kKGJl
Zm9yZVZhbHVlKSwgV1RGOjptb3ZlKG5ld1ZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+Ci1hdXRvIExpc3RIYXNoU2V0PFQsIFU+OjppbnNlcnRCZWZvcmUoaXRl
cmF0b3IgaXQsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFsdWUpIC0+IEFkZFJlc3VsdAordGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CithdXRvIExpc3RIYXNoU2V0PFQs
IFUsIFY+OjppbnNlcnRCZWZvcmUoaXRlcmF0b3IgaXQsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFs
dWUpIC0+IEFkZFJlc3VsdAogewogICAgIGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFk
ZDxCYXNlVHJhbnNsYXRvcj4obmV3VmFsdWUsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNO
ZXdFbnRyeSkKQEAgLTU3NCw4ICs1NzQsOCBAQCBhdXRvIExpc3RIYXNoU2V0PFQsIFU+OjppbnNl
cnRCZWZvcmUoaXRlCiAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlSXRlcmF0b3IoKnJlc3VsdC5p
dGVyYXRvciksIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4KLWF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46Omluc2VydEJlZm9yZShpdGVyYXRv
ciBpdCwgVmFsdWVUeXBlJiYgbmV3VmFsdWUpIC0+IEFkZFJlc3VsdAordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CithdXRvIExpc3RIYXNoU2V0PFQsIFUsIFY+Ojpp
bnNlcnRCZWZvcmUoaXRlcmF0b3IgaXQsIFZhbHVlVHlwZSYmIG5ld1ZhbHVlKSAtPiBBZGRSZXN1
bHQKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0
b3I+KFdURjo6bW92ZShuZXdWYWx1ZSksIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdF
bnRyeSkKQEAgLTU4Myw4ICs1ODMsOCBAQCBhdXRvIExpc3RIYXNoU2V0PFQsIFU+OjppbnNlcnRC
ZWZvcmUoaXRlCiAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlSXRlcmF0b3IoKnJlc3VsdC5pdGVy
YXRvciksIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KLWlubGluZSBib29sIExpc3RIYXNoU2V0PFQsIFU+OjpyZW1vdmUoaXRlcmF0b3Ig
aXQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBi
b29sIExpc3RIYXNoU2V0PFQsIFUsIFY+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCiB7CiAgICAgaWYg
KGl0ID09IGVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01OTMsMTQgKzU5MywxNCBA
QCBpbmxpbmUgYm9vbCBMaXN0SGFzaFNldDxULCBVPjo6cmVtb3ZlKGl0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgYm9vbCBM
aXN0SGFzaFNldDxULCBVPjo6cmVtb3ZlKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBib29sIExpc3RIYXNo
U2V0PFQsIFUsIFY+OjpyZW1vdmUoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKIHsKICAgICByZXR1
cm4gcmVtb3ZlKGZpbmQodmFsdWUpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KLWlubGluZSB2b2lkIExpc3RIYXNoU2V0PFQsIFU+OjpjbGVhcigpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSB2b2lkIExpc3RIYXNoU2V0
PFQsIFUsIFY+OjpjbGVhcigpCiB7CiAgICAgZGVsZXRlQWxsTm9kZXMoKTsKICAgICBtX2ltcGwu
Y2xlYXIoKTsgCkBAIC02MDgsOCArNjA4LDggQEAgaW5saW5lIHZvaWQgTGlzdEhhc2hTZXQ8VCwg
VT46OmNsZWFyKCkKICAgICBtX3RhaWwgPSAwOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPgotdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6dW5saW5rKE5vZGUqIG5vZGUpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK3ZvaWQgTGlzdEhhc2hT
ZXQ8VCwgVSwgVj46OnVubGluayhOb2RlKiBub2RlKQogewogICAgIGlmICghbm9kZS0+bV9wcmV2
KSB7CiAgICAgICAgIEFTU0VSVChub2RlID09IG1faGVhZCk7CkBAIC02MjgsMTUgKzYyOCwxNSBA
QCB2b2lkIExpc3RIYXNoU2V0PFQsIFU+Ojp1bmxpbmsoTm9kZSogbm9kCiAgICAgfQogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6
dW5saW5rQW5kRGVsZXRlKE5vZGUqIG5vZGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVLCBzaXplX3QgVj4KK3ZvaWQgTGlzdEhhc2hTZXQ8VCwgVSwgVj46OnVubGlua0FuZERlbGV0
ZShOb2RlKiBub2RlKQogewogICAgIHVubGluayhub2RlKTsKICAgICBkZWxldGUgbm9kZTsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXZvaWQgTGlzdEhhc2hTZXQ8VCwg
VT46OmFwcGVuZE5vZGUoTm9kZSogbm9kZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHNpemVfdCBWPgordm9pZCBMaXN0SGFzaFNldDxULCBVLCBWPjo6YXBwZW5kTm9kZShOb2Rl
KiBub2RlKQogewogICAgIG5vZGUtPm1fcHJldiA9IG1fdGFpbDsKICAgICBub2RlLT5tX25leHQg
PSAwOwpAQCAtNjUyLDggKzY1Miw4IEBAIHZvaWQgTGlzdEhhc2hTZXQ8VCwgVT46OmFwcGVuZE5v
ZGUoTm9kZSoKICAgICBtX3RhaWwgPSBub2RlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPgotdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6cHJlcGVuZE5vZGUoTm9kZSogbm9k
ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgordm9pZCBMaXN0
SGFzaFNldDxULCBVLCBWPjo6cHJlcGVuZE5vZGUoTm9kZSogbm9kZSkKIHsKICAgICBub2RlLT5t
X3ByZXYgPSAwOwogICAgIG5vZGUtPm1fbmV4dCA9IG1faGVhZDsKQEAgLTY2Niw4ICs2NjYsOCBA
QCB2b2lkIExpc3RIYXNoU2V0PFQsIFU+OjpwcmVwZW5kTm9kZShOb2RlCiAgICAgbV9oZWFkID0g
bm9kZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXZvaWQgTGlzdEhh
c2hTZXQ8VCwgVT46Omluc2VydE5vZGVCZWZvcmUoTm9kZSogYmVmb3JlTm9kZSwgTm9kZSogbmV3
Tm9kZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgordm9pZCBM
aXN0SGFzaFNldDxULCBVLCBWPjo6aW5zZXJ0Tm9kZUJlZm9yZShOb2RlKiBiZWZvcmVOb2RlLCBO
b2RlKiBuZXdOb2RlKQogewogICAgIGlmICghYmVmb3JlTm9kZSkKICAgICAgICAgcmV0dXJuIGFw
cGVuZE5vZGUobmV3Tm9kZSk7CkBAIC02ODIsOCArNjgyLDggQEAgdm9pZCBMaXN0SGFzaFNldDxU
LCBVPjo6aW5zZXJ0Tm9kZUJlZm9yZQogICAgICAgICBtX2hlYWQgPSBuZXdOb2RlOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6
ZGVsZXRlQWxsTm9kZXMoKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90
IFY+Cit2b2lkIExpc3RIYXNoU2V0PFQsIFUsIFY+OjpkZWxldGVBbGxOb2RlcygpCiB7CiAgICAg
aWYgKCFtX2hlYWQpCiAgICAgICAgIHJldHVybjsKQEAgLTY5MiwxNCArNjkyLDE0IEBAIHZvaWQg
TGlzdEhhc2hTZXQ8VCwgVT46OmRlbGV0ZUFsbE5vZGVzKCkKICAgICAgICAgZGVsZXRlIG5vZGU7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgYXV0byBMaXN0
SGFzaFNldDxULCBVPjo6bWFrZUl0ZXJhdG9yKE5vZGUqIHBvc2l0aW9uKSAtPiBpdGVyYXRvcgor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUgYXV0byBM
aXN0SGFzaFNldDxULCBVLCBWPjo6bWFrZUl0ZXJhdG9yKE5vZGUqIHBvc2l0aW9uKSAtPiBpdGVy
YXRvcgogewogICAgIHJldHVybiBpdGVyYXRvcih0aGlzLCBwb3NpdGlvbik7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgYXV0byBMaXN0SGFzaFNldDxULCBV
Pjo6bWFrZUNvbnN0SXRlcmF0b3IoTm9kZSogcG9zaXRpb24pIGNvbnN0IC0+IGNvbnN0X2l0ZXJh
dG9yCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBh
dXRvIExpc3RIYXNoU2V0PFQsIFUsIFY+OjptYWtlQ29uc3RJdGVyYXRvcihOb2RlKiBwb3NpdGlv
bikgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKIHsgCiAgICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9y
KHRoaXMsIHBvc2l0aW9uKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249622</attachid>
            <date>2015-03-27 16:36:06 -0700</date>
            <delta_ts>2015-03-27 17:42:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143158-20150327163527.patch</filename>
            <type>text/plain</type>
            <size>100854</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODIwODkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE1LTAzLTI3ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGlubGluZSBjYXBhY2l0eSB0
byBIYXNoU2V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQzMTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3dGYvSGFzaE1hcC5oOgorICAgICAgICAqIHd0Zi9IYXNoVGFibGUuaDoKKyAgICAgICAg
KiB3dGYvTGlzdEhhc2hTZXQuaDoKKyAgICAgICAgQWRkZWQgaW5saW5lQ2FwYWNpdHkgdGVtcGxh
dGUgcGFyYW1ldGVyLCB3aGljaCBpcyBjdXJyZW50bHkgdW51c2VkLgorICAgICAgICBUaGVyZSBz
aG91bGQgYmUgbm8gY2hhbmdlIGluIGJlaGF2aW9yLCAKKyAgICAgICAgZXhjZXB0IHRoYXQgSGFz
aFRhYmxlOjpjbGVhciBub3cgY29ycmVjdGx5IHNldHMgZGVsZXRlZENvdW50IHRvIDAuCisKIDIw
MTUtMDMtMjcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTdXBwb3J0IGJ1aWxkaW5nIFdURiBvbiBXaW5kb3dzIHdpdGhvdXQgQ3lnd2luCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
SGFzaE1hcC5oCShyZXZpc2lvbiAxODIwODkpCisrKyBTb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAx
MywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTMyLDcgKzMyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEtleVZhbHVl
UGFpcgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcs
IHR5cGVuYW1lIEhhc2hBcmcgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxLZXlBcmc+OjpIYXNoLAot
ICAgIHR5cGVuYW1lIEtleVRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8S2V5QXJnPiwgdHlwZW5hbWUg
TWFwcGVkVHJhaXRzQXJnID0gSGFzaFRyYWl0czxNYXBwZWRBcmc+PgorICAgIHR5cGVuYW1lIEtl
eVRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8S2V5QXJnPiwgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJn
ID0gSGFzaFRyYWl0czxNYXBwZWRBcmc+LCBzaXplX3QgaW5saW5lQ2FwYWNpdHkgPSAwPgogY2xh
c3MgSGFzaE1hcCBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwcml2YXRl
OgpAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaEFyZyBIYXNoRnVu
Y3Rpb25zOwogCiAgICAgdHlwZWRlZiBIYXNoVGFibGU8S2V5VHlwZSwgS2V5VmFsdWVQYWlyVHlw
ZSwgS2V5VmFsdWVQYWlyS2V5RXh0cmFjdG9yPEtleVZhbHVlUGFpclR5cGU+LAotICAgICAgICBI
YXNoRnVuY3Rpb25zLCBLZXlWYWx1ZVBhaXJUcmFpdHMsIEtleVRyYWl0cz4gSGFzaFRhYmxlVHlw
ZTsKKyAgICAgICAgSGFzaEZ1bmN0aW9ucywgS2V5VmFsdWVQYWlyVHJhaXRzLCBLZXlUcmFpdHMs
IGlubGluZUNhcGFjaXR5PiBIYXNoVGFibGVUeXBlOwogCiAgICAgY2xhc3MgSGFzaE1hcEtleXNQ
cm94eTsKICAgICBjbGFzcyBIYXNoTWFwVmFsdWVzUHJveHk7CkBAIC0xODgsOTggKzE4OCw5OCBA
QCBzdHJ1Y3QgSGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVyIHsKICAgICB9CiB9OwogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFt
ZSBYPgotaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6c3dhcChIYXNoTWFwJiBv
dGhlcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBW
LCBXLCBYLCBZPjo6c3dhcChIYXNoTWFwJiBvdGhlcikKIHsKICAgICBtX2ltcGwuc3dhcChvdGhl
ci5tX2ltcGwpOyAKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSB1bnNpZ25lZCBIYXNoTWFwPFQs
IFUsIFYsIFcsIFg+OjpzaXplKCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5l
IHVuc2lnbmVkIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OnNpemUoKSBjb25zdAogewogICAg
IHJldHVybiBtX2ltcGwuc2l6ZSgpOyAKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSB1bnNpZ25l
ZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpjYXBhY2l0eSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBz
aXplX3QgWT4KK2lubGluZSB1bnNpZ25lZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjpjYXBh
Y2l0eSgpIGNvbnN0CiB7IAogICAgIHJldHVybiBtX2ltcGwuY2FwYWNpdHkoKTsgCiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5
cGVuYW1lIFg+Ci1pbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojppc0VtcHR5KCkg
Y29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5lIGJvb2wgSGFzaE1hcDxULCBVLCBW
LCBXLCBYLCBZPjo6aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW1wbC5pc0VtcHR5
KCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5
cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjpiZWdpbigpIC0+IGl0ZXJhdG9yCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KK2lubGluZSBhdXRv
IEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmJlZ2luKCkgLT4gaXRlcmF0b3IKIHsKICAgICBy
ZXR1cm4gbV9pbXBsLmJlZ2luKCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNo
TWFwPFQsIFUsIFYsIFcsIFg+OjplbmQoKSAtPiBpdGVyYXRvcgordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90
IFk+CitpbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjplbmQoKSAtPiBpdGVy
YXRvcgogewogICAgIHJldHVybiBtX2ltcGwuZW5kKCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxp
bmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpiZWdpbigpIGNvbnN0IC0+IGNvbnN0X2l0
ZXJhdG9yCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBl
bmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KK2lubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwg
ViwgVywgWCwgWT46OmJlZ2luKCkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKIHsKICAgICByZXR1
cm4gbV9pbXBsLmJlZ2luKCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUs
IHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjplbmQoKSBjb25zdCAtPiBjb25zdF9pdGVyYXRvcgordGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUg
WCwgc2l6ZV90IFk+CitpbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjplbmQo
KSBjb25zdCAtPiBjb25zdF9pdGVyYXRvcgogewogICAgIHJldHVybiBtX2ltcGwuZW5kKCk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpmaW5k
KGNvbnN0IEtleVR5cGUmIGtleSkgLT4gaXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgor
aW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6ZmluZChjb25zdCBLZXlUeXBl
JiBrZXkpIC0+IGl0ZXJhdG9yCiB7CiAgICAgcmV0dXJuIG1faW1wbC5maW5kKGtleSk7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcs
IHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpmaW5kKGNv
bnN0IEtleVR5cGUmIGtleSkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNp
emVfdCBZPgoraW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6ZmluZChjb25z
dCBLZXlUeXBlJiBrZXkpIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yCiB7CiAgICAgcmV0dXJuIG1f
aW1wbC5maW5kKGtleSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYm9vbCBIYXNoTWFwPFQs
IFUsIFYsIFcsIFg+Ojpjb250YWlucyhjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFt
ZSBYLCBzaXplX3QgWT4KK2lubGluZSBib29sIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmNv
bnRhaW5zKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbXBsLmNv
bnRhaW5zKGtleSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KIHRl
bXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUWVBFPgotaW5saW5lIHR5
cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yCi1IYXNoTWFwPFQsIFUsIFYs
IFcsIFg+OjpmaW5kKGNvbnN0IFRZUEUmIHZhbHVlKQoraW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8
VCwgVSwgViwgVywgWCwgWT46Oml0ZXJhdG9yCitIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+Ojpm
aW5kKGNvbnN0IFRZUEUmIHZhbHVlKQogewogICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmlu
ZDxIYXNoTWFwVHJhbnNsYXRvckFkYXB0ZXI8S2V5VmFsdWVQYWlyVHJhaXRzLCBIYXNoVHJhbnNs
YXRvcj4+KHZhbHVlKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgog
dGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFRZUEU+Ci1pbmxpbmUg
dHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3IgCi1IYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjpmaW5kKGNvbnN0IFRZUEUmIHZhbHVlKSBjb25zdAoraW5saW5lIHR5
cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmNvbnN0X2l0ZXJhdG9yCitIYXNoTWFw
PFQsIFUsIFYsIFcsIFgsIFk+OjpmaW5kKGNvbnN0IFRZUEUmIHZhbHVlKSBjb25zdAogewogICAg
IHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmluZDxIYXNoTWFwVHJhbnNsYXRvckFkYXB0ZXI8S2V5
VmFsdWVQYWlyVHJhaXRzLCBIYXNoVHJhbnNsYXRvcj4+KHZhbHVlKTsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUg
WD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgogdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0
b3IsIHR5cGVuYW1lIFRZUEU+Ci1pbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpj
b250YWlucyhjb25zdCBUWVBFJiB2YWx1ZSkgY29uc3QKK2lubGluZSBib29sIEhhc2hNYXA8VCwg
VSwgViwgVywgWCwgWT46OmNvbnRhaW5zKGNvbnN0IFRZUEUmIHZhbHVlKSBjb25zdAogewogICAg
IHJldHVybiBtX2ltcGwudGVtcGxhdGUgY29udGFpbnM8SGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVy
PEtleVZhbHVlUGFpclRyYWl0cywgSGFzaFRyYW5zbGF0b3I+Pih2YWx1ZSk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJn
LCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KK3RlbXBs
YXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJn
LCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZywgc2l6ZV90
IGlubGluZUNhcGFjaXR5PgogdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLWF1dG8g
SGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRU
cmFpdHNBcmc+OjppbmxpbmVTZXQoSyYmIGtleSwgViYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKK2F1
dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBw
ZWRUcmFpdHNBcmcsIGlubGluZUNhcGFjaXR5Pjo6aW5saW5lU2V0KEsmJiBrZXksIFYmJiB2YWx1
ZSkgLT4gQWRkUmVzdWx0CiB7CiAgICAgQWRkUmVzdWx0IHJlc3VsdCA9IGlubGluZUFkZChzdGQ6
OmZvcndhcmQ8Sz4oa2V5KSwgc3RkOjpmb3J3YXJkPFY+KHZhbHVlKSk7CiAgICAgaWYgKCFyZXN1
bHQuaXNOZXdFbnRyeSkgewpAQCAtMjg5LDY0ICsyODksNjQgQEAgYXV0byBIYXNoTWFwPEtleUFy
ZywgTWFwcGVkQXJnLCBIYXNoQXJnLAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0
eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KK3RlbXBsYXRl
PHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0
eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZywgc2l6ZV90IGlu
bGluZUNhcGFjaXR5PgogdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLUFMV0FZU19J
TkxJTkUgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNB
cmcsIE1hcHBlZFRyYWl0c0FyZz46OmlubGluZUFkZChLJiYga2V5LCBWJiYgdmFsdWUpIC0+IEFk
ZFJlc3VsdAorQUxXQVlTX0lOTElORSBhdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhh
c2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnLCBpbmxpbmVDYXBhY2l0eT46Omlu
bGluZUFkZChLJiYga2V5LCBWJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAogewogICAgIHJldHVybiBt
X2ltcGwudGVtcGxhdGUgYWRkPEhhc2hNYXBUcmFuc2xhdG9yPEtleVZhbHVlUGFpclRyYWl0cywg
SGFzaEZ1bmN0aW9ucz4+KHN0ZDo6Zm9yd2FyZDxLPihrZXkpLCBzdGQ6OmZvcndhcmQ8Vj4odmFs
dWUpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcs
IHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVk
VHJhaXRzQXJnPgordGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcs
IHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVk
VHJhaXRzQXJnLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
YXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1h
cHBlZFRyYWl0c0FyZz46OnNldChjb25zdCBLZXlUeXBlJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFk
ZFJlc3VsdAorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFp
dHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgaW5saW5lQ2FwYWNpdHk+OjpzZXQoY29uc3QgS2V5VHlw
ZSYga2V5LCBUJiYgbWFwcGVkKSAtPiBBZGRSZXN1bHQKIHsKICAgICByZXR1cm4gaW5saW5lU2V0
KGtleSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5
VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5
VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eT4KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1hdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcs
IEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6c2V0KEtleVR5cGUmJiBr
ZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVk
QXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgaW5saW5lQ2FwYWNp
dHk+OjpzZXQoS2V5VHlwZSYmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CiB7CiAgICAg
cmV0dXJuIGlubGluZVNldChXVEY6Om1vdmUoa2V5KSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkp
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlw
ZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFp
dHNBcmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlw
ZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFp
dHNBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFu
c2xhdG9yLCB0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgotYXV0byBIYXNoTWFwPEtleUFyZywgTWFw
cGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChLJiYg
a2V5LCBWJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVk
QXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgaW5saW5lQ2FwYWNp
dHk+OjphZGQoSyYmIGtleSwgViYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKICAgICByZXR1cm4g
bV9pbXBsLnRlbXBsYXRlIGFkZFBhc3NpbmdIYXNoQ29kZTxIYXNoTWFwVHJhbnNsYXRvckFkYXB0
ZXI8S2V5VmFsdWVQYWlyVHJhaXRzLCBIYXNoVHJhbnNsYXRvcj4+KHN0ZDo6Zm9yd2FyZDxLPihr
ZXkpLCBzdGQ6OmZvcndhcmQ8Vj4odmFsdWUpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgS2V5
QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRy
YWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgordGVtcGxhdGU8dHlwZW5hbWUgS2V5
QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRy
YWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBI
YXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChjb25zdCBLZXlUeXBl
JiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAorYXV0byBIYXNoTWFwPEtleUFyZywgTWFw
cGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgaW5saW5lQ2Fw
YWNpdHk+OjphZGQoY29uc3QgS2V5VHlwZSYga2V5LCBUJiYgbWFwcGVkKSAtPiBBZGRSZXN1bHQK
IHsKICAgICByZXR1cm4gaW5saW5lQWRkKGtleSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5h
bWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNB
cmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5h
bWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNB
cmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1hdXRvIEhh
c2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJh
aXRzQXJnPjo6YWRkKEtleVR5cGUmJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAorYXV0
byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBl
ZFRyYWl0c0FyZywgaW5saW5lQ2FwYWNpdHk+OjphZGQoS2V5VHlwZSYmIGtleSwgVCYmIG1hcHBl
ZCkgLT4gQWRkUmVzdWx0CiB7CiAgICAgcmV0dXJuIGlubGluZUFkZChXVEY6Om1vdmUoa2V5KSwg
c3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcs
IHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRz
QXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcs
IHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRz
QXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1h
cHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjpmYXN0QWRk
KGNvbnN0IEtleVR5cGUmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CitBTFdBWVNfSU5M
SU5FIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJn
LCBNYXBwZWRUcmFpdHNBcmcsIGlubGluZUNhcGFjaXR5Pjo6ZmFzdEFkZChjb25zdCBLZXlUeXBl
JiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAogewogICAgIHJldHVybiBpbmxpbmVBZGQo
a2V5LCBzdGQ6OmZvcndhcmQ8VD4obWFwcGVkKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEtl
eUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlU
cmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KK3RlbXBsYXRlPHR5cGVuYW1lIEtl
eUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlU
cmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZywgc2l6ZV90IGlubGluZUNhcGFjaXR5
PgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgYXV0byBIYXNoTWFwPEtleUFy
ZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmZh
c3RBZGQoS2V5VHlwZSYmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CitBTFdBWVNfSU5M
SU5FIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJn
LCBNYXBwZWRUcmFpdHNBcmcsIGlubGluZUNhcGFjaXR5Pjo6ZmFzdEFkZChLZXlUeXBlJiYga2V5
LCBUJiYgbWFwcGVkKSAtPiBBZGRSZXN1bHQKIHsKICAgICByZXR1cm4gaW5saW5lQWRkKFdURjo6
bW92ZShrZXkpLCBzdGQ6OmZvcndhcmQ8VD4obWFwcGVkKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIE1hcHBl
ZFRyYWl0cz4KLWF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+OjpnZXQoY29u
c3QgS2V5VHlwZSYga2V5KSBjb25zdCAtPiBNYXBwZWRQZWVrVHlwZQordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6
ZV90IFk+CithdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmdldChjb25zdCBLZXlUeXBl
JiBrZXkpIGNvbnN0IC0+IE1hcHBlZFBlZWtUeXBlCiB7CiAgICAgS2V5VmFsdWVQYWlyVHlwZSog
ZW50cnkgPSBjb25zdF9jYXN0PEhhc2hUYWJsZVR5cGUmPihtX2ltcGwpLmxvb2t1cChrZXkpOwog
ICAgIGlmICghZW50cnkpCkBAIC0zNTQsOCArMzU0LDggQEAgYXV0byBIYXNoTWFwPFQsIFUsIFYs
IFcsIE1hcHBlZFRyYWl0cz46OgogICAgIHJldHVybiBNYXBwZWRUcmFpdHM6OnBlZWsoZW50cnkt
PnZhbHVlKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
ViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSBib29sIEhhc2hNYXA8VCwgVSwgViwg
VywgWD46OnJlbW92ZShpdGVyYXRvciBpdCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5l
IGJvb2wgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQogewog
ICAgIGlmIChpdC5tX2ltcGwgPT0gbV9pbXBsLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zNjQsMjcgKzM2NCwyNyBAQCBpbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjpyZW1vCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBz
aXplX3QgWT4KIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci1pbmxpbmUgdm9pZCBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjpyZW1vdmVJZihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoraW5saW5l
IHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6cmVtb3ZlSWYoY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikKIHsKICAgICBtX2ltcGwucmVtb3ZlSWYoZnVuY3Rvcik7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1l
IFg+Ci1pbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpyZW1vdmUoY29uc3QgS2V5
VHlwZSYga2V5KQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwg
dHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+CitpbmxpbmUgYm9vbCBIYXNoTWFwPFQs
IFUsIFYsIFcsIFgsIFk+OjpyZW1vdmUoY29uc3QgS2V5VHlwZSYga2V5KQogewogICAgIHJldHVy
biByZW1vdmUoZmluZChrZXkpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSB2b2lkIEhhc2hN
YXA8VCwgVSwgViwgVywgWD46OmNsZWFyKCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5l
IHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6Y2xlYXIoKQogewogICAgIG1faW1wbC5j
bGVhcigpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
LCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHM+Ci1hdXRvIEhhc2hNYXA8VCwgVSwg
ViwgVywgTWFwcGVkVHJhaXRzPjo6dGFrZShjb25zdCBLZXlUeXBlJiBrZXkpIC0+IE1hcHBlZFR5
cGUKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgorYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+
Ojp0YWtlKGNvbnN0IEtleVR5cGUmIGtleSkgLT4gTWFwcGVkVHlwZQogewogICAgIGl0ZXJhdG9y
IGl0ID0gZmluZChrZXkpOwogICAgIGlmIChpdCA9PSBlbmQoKSkKQEAgLTM5NCwzMCArMzk0LDMw
IEBAIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+OjoKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KIHRlbXBsYXRl
PHR5cGVuYW1lIEs+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpmaW5kKHR5
cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSBrZXkpIC0+IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVlLCBpdGVyYXRvcj46OnR5cGUKK2lubGluZSBhdXRv
IEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmZpbmQodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+
OjpQdHJUeXBlIGtleSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6
dmFsdWUsIGl0ZXJhdG9yPjo6dHlwZQogewogICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmlu
ZDxIYXNoTWFwVHJhbnNsYXRvcjxLZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+Pihr
ZXkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0
eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBLPgotaW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZmluZCh0eXBl
bmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUga2V5KSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgY29uc3RfaXRlcmF0b3I+Ojp0eXBlCitp
bmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjpmaW5kKHR5cGVuYW1lIEdldFB0
ckhlbHBlcjxLPjo6UHRyVHlwZSBrZXkpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PElzU21hcnRQdHI8Sz46OnZhbHVlLCBjb25zdF9pdGVyYXRvcj46OnR5cGUKIHsKICAgICByZXR1
cm4gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8SGFzaE1hcFRyYW5zbGF0b3I8S2V5VmFsdWVQYWlyVHJh
aXRzLCBIYXNoRnVuY3Rpb25zPj4oa2V5KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgs
IHNpemVfdCBZPgogdGVtcGxhdGU8dHlwZW5hbWUgSz4KLWlubGluZSBhdXRvIEhhc2hNYXA8VCwg
VSwgViwgVywgWD46OmNvbnRhaW5zKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSBr
ZXkpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVl
LCBib29sPjo6dHlwZQoraW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6Y29u
dGFpbnModHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBlIGtleSkgY29uc3QgLT4gdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6dmFsdWUsIGJvb2w+Ojp0eXBlCiB7
CiAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBjb250YWluczxIYXNoTWFwVHJhbnNsYXRvcjxL
ZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+PihrZXkpOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBY
PgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUg
VywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBLPgotaW5saW5lIGF1
dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aW5saW5lR2V0KHR5cGVuYW1lIEdldFB0ckhlbHBl
cjxLPjo6UHRyVHlwZSBrZXkpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21h
cnRQdHI8Sz46OnZhbHVlLCBNYXBwZWRQZWVrVHlwZT46OnR5cGUKK2lubGluZSBhdXRvIEhhc2hN
YXA8VCwgVSwgViwgVywgWCwgWT46OmlubGluZUdldCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46
OlB0clR5cGUga2V5KSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRy
PEs+Ojp2YWx1ZSwgTWFwcGVkUGVla1R5cGU+Ojp0eXBlCiB7CiAgICAgS2V5VmFsdWVQYWlyVHlw
ZSogZW50cnkgPSBjb25zdF9jYXN0PEhhc2hUYWJsZVR5cGUmPihtX2ltcGwpLnRlbXBsYXRlIGxv
b2t1cDxIYXNoTWFwVHJhbnNsYXRvcjxLZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+
PihrZXkpOwogICAgIGlmICghZW50cnkpCkBAIC00MjUsMjMgKzQyNSwyMyBAQCBpbmxpbmUgYXV0
byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjppbmxpCiAgICAgcmV0dXJuIE1hcHBlZFRyYWl0czo6
cGVlayhlbnRyeS0+dmFsdWUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90
IFk+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBLPgotYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpn
ZXQodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBlIGtleSkgY29uc3QgLT4gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6dmFsdWUsIE1hcHBlZFBlZWtUeXBlPjo6
dHlwZQorYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjpnZXQodHlwZW5hbWUgR2V0UHRy
SGVscGVyPEs+OjpQdHJUeXBlIGtleSkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
SXNTbWFydFB0cjxLPjo6dmFsdWUsIE1hcHBlZFBlZWtUeXBlPjo6dHlwZQogewogICAgIHJldHVy
biBpbmxpbmVHZXQoa2V5KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZ
PgogdGVtcGxhdGU8dHlwZW5hbWUgSz4KLWlubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywg
WD46OnJlbW92ZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUga2V5KSAtPiB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgYm9vbD46OnR5cGUKK2lu
bGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OnJlbW92ZSh0eXBlbmFtZSBHZXRQ
dHJIZWxwZXI8Sz46OlB0clR5cGUga2V5KSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1Nt
YXJ0UHRyPEs+Ojp2YWx1ZSwgYm9vbD46OnR5cGUKIHsKICAgICByZXR1cm4gcmVtb3ZlKGZpbmQo
a2V5KSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KIHRlbXBsYXRl
PHR5cGVuYW1lIEs+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojp0YWtlKHR5
cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSBrZXkpIC0+IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVlLCBNYXBwZWRUeXBlPjo6dHlwZQoraW5saW5lIGF1
dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6dGFrZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8
Sz46OlB0clR5cGUga2V5KSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+
Ojp2YWx1ZSwgTWFwcGVkVHlwZT46OnR5cGUKIHsKICAgICBpdGVyYXRvciBpdCA9IGZpbmQoa2V5
KTsKICAgICBpZiAoaXQgPT0gZW5kKCkpCkBAIC00NTEsMTQgKzQ1MSwxNCBAQCBpbmxpbmUgYXV0
byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojp0YWtlCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0
eXBlbmFtZSBYPgotaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y2hlY2tDb25z
aXN0ZW5jeSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KK2lubGluZSB2b2lkIEhhc2hN
YXA8VCwgVSwgViwgVywgWCwgWT46OmNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogewogICAgIG1f
aW1wbC5jaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSBi
b29sIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmlzVmFsaWRLZXkoY29uc3QgS2V5VHlwZSYga2V5
KQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUg
VywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+CitpbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcs
IFgsIFk+Ojppc1ZhbGlkS2V5KGNvbnN0IEtleVR5cGUmIGtleSkKIHsKICAgICBpZiAoS2V5VHJh
aXRzOjppc0RlbGV0ZWRWYWx1ZShrZXkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NzQs
MTMgKzQ3NCwxMyBAQCBpbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojppc1ZhCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1ib29sIG9wZXJhdG9yPT0oY29uc3Qg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgYSwgY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYg
YikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgorYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhc2hNYXA8
VCwgVSwgViwgVywgWCwgWT4mIGEsIGNvbnN0IEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT4mIGIp
CiB7CiAgICAgaWYgKGEuc2l6ZSgpICE9IGIuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNvbnN0X2l0
ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBV
LCBWLCBXLCBYLCBZPjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CiAKICAgICBjb25z
dF9pdGVyYXRvciBlbmQgPSBhLmVuZCgpOwogICAgIGNvbnN0X2l0ZXJhdG9yIG5vdEZvdW5kID0g
Yi5lbmQoKTsKQEAgLTQ5MywxNiArNDkzLDE2IEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNo
TWFwPFQsIFUsIFYsIFcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgYSwgY29uc3Qg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgYikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+JiBhLCBjb25z
dCBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+JiBiKQogewogICAgIHJldHVybiAhKGEgPT0gYik7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+Ci1pbmxpbmUgdm9pZCBjb3B5VG9WZWN0b3Io
Y29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgY29sbGVjdGlvbiwgWSYgdmVjdG9yKQordGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlw
ZW5hbWUgWCwgc2l6ZV90IFksIHR5cGVuYW1lIFo+CitpbmxpbmUgdm9pZCBjb3B5VG9WZWN0b3Io
Y29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPiYgY29sbGVjdGlvbiwgWiYgdmVjdG9yKQog
ewotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRl
cmF0b3IgaXRlcmF0b3I7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcs
IFgsIFk+Ojpjb25zdF9pdGVyYXRvciBpdGVyYXRvcjsKIAogICAgIHZlY3Rvci5yZXNpemUoY29s
bGVjdGlvbi5zaXplKCkpOwogCkBAIC01MTIsMTAgKzUxMiwxMCBAQCBpbmxpbmUgdm9pZCBjb3B5
VG9WZWN0b3IoY29uc3QgSGFzaE1hcDxUCiAgICAgICAgIHZlY3RvcltpXSA9IHsgKCppdCkua2V5
LCAoKml0KS52YWx1ZSB9OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgotaW5saW5lIHZv
aWQgY29weUtleXNUb1ZlY3Rvcihjb25zdCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+JiBjb2xsZWN0
aW9uLCBZJiB2ZWN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWSwgdHlwZW5hbWUgWj4KK2lubGlu
ZSB2b2lkIGNvcHlLZXlzVG9WZWN0b3IoY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPiYg
Y29sbGVjdGlvbiwgWiYgdmVjdG9yKQogewotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxU
LCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3I6OktleXMgaXRlcmF0b3I7CisgICAgdHlwZWRl
ZiB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+Ojpjb25zdF9pdGVyYXRvcjo6S2V5
cyBpdGVyYXRvcjsKICAgICAKICAgICB2ZWN0b3IucmVzaXplKGNvbGxlY3Rpb24uc2l6ZSgpKTsK
ICAgICAKQEAgLTUyNSwxMCArNTI1LDEwIEBAIGlubGluZSB2b2lkIGNvcHlLZXlzVG9WZWN0b3Io
Y29uc3QgSGFzaE0KICAgICAgICAgdmVjdG9yW2ldID0gKml0OwogfSAgCiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgs
IHR5cGVuYW1lIFk+Ci1pbmxpbmUgdm9pZCBjb3B5VmFsdWVzVG9WZWN0b3IoY29uc3QgSGFzaE1h
cDxULCBVLCBWLCBXLCBYPiYgY29sbGVjdGlvbiwgWSYgdmVjdG9yKQordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6
ZV90IFksIHR5cGVuYW1lIFo+CitpbmxpbmUgdm9pZCBjb3B5VmFsdWVzVG9WZWN0b3IoY29uc3Qg
SGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPiYgY29sbGVjdGlvbiwgWiYgdmVjdG9yKQogewotICAg
IHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3I6
OlZhbHVlcyBpdGVyYXRvcjsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwg
VywgWCwgWT46OmNvbnN0X2l0ZXJhdG9yOjpWYWx1ZXMgaXRlcmF0b3I7CiAgICAgCiAgICAgdmVj
dG9yLnJlc2l6ZShjb2xsZWN0aW9uLnNpemUoKSk7CiAgICAgCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9IYXNoU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvSGFzaFNldC5oCShyZXZp
c2lvbiAxODIwODkpCisrKyBTb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4LCAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMwLDEwICsz
MCwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHN0cnVjdCBJZGVudGl0eUV4dHJhY3RvcjsK
ICAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzPiBjbGFzcyBIYXNoU2V0OworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4gY2xhc3MgSGFzaFNldDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZh
bHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8VmFsdWVBcmc+
OjpIYXNoLAotICAgICAgICB0eXBlbmFtZSBUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFZhbHVlQXJn
Pj4gY2xhc3MgSGFzaFNldCBmaW5hbCB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcs
IHR5cGVuYW1lIEhhc2hBcmcgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxWYWx1ZUFyZz46Okhhc2gs
IHR5cGVuYW1lIFRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8VmFsdWVBcmc+LCBzaXplX3QgaW5saW5l
Q2FwYWNpdHkgPSAwPgorICAgIGNsYXNzIEhhc2hTZXQgZmluYWwgewogICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBwcml2YXRlOgogICAgICAgICB0eXBlZGVmIEhhc2hBcmcg
SGFzaEZ1bmN0aW9uczsKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxWYWx1ZVR5cGUsIFZhbHVlVHlwZSwg
SWRlbnRpdHlFeHRyYWN0b3IsCi0gICAgICAgICAgICBIYXNoRnVuY3Rpb25zLCBWYWx1ZVRyYWl0
cywgVmFsdWVUcmFpdHM+IEhhc2hUYWJsZVR5cGU7CisgICAgICAgICAgICBIYXNoRnVuY3Rpb25z
LCBWYWx1ZVRyYWl0cywgVmFsdWVUcmFpdHMsIGlubGluZUNhcGFjaXR5PiBIYXNoVGFibGVUeXBl
OwogCiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JB
ZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4gaXRlcmF0b3I7CkBAIC0xNDIsOTAgKzE0
Miw5MCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSB2b2lkIEhh
c2hTZXQ8VCwgVSwgVj46OnN3YXAoSGFzaFNldCYgb3RoZXIpCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6ZV90IFc+CisgICAgaW5saW5lIHZvaWQg
SGFzaFNldDxULCBVLCBWLCBXPjo6c3dhcChIYXNoU2V0JiBvdGhlcikKICAgICB7CiAgICAgICAg
IG1faW1wbC5zd2FwKG90aGVyLm1faW1wbCk7IAogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAgaW5saW5lIHVuc2lnbmVkIEhhc2hT
ZXQ8VCwgVSwgVj46OnNpemUoKSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFYsIHNpemVfdCBXPgorICAgIGlubGluZSB1bnNpZ25lZCBIYXNoU2V0
PFQsIFUsIFYsIFc+OjpzaXplKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwu
c2l6ZSgpOyAKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWPgotICAgIGlubGluZSB1bnNpZ25lZCBIYXNoU2V0PFQsIFUsIFY+OjpjYXBhY2l0
eSgpIGNvbnN0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
Viwgc2l6ZV90IFc+CisgICAgaW5saW5lIHVuc2lnbmVkIEhhc2hTZXQ8VCwgVSwgViwgVz46OmNh
cGFjaXR5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwuY2FwYWNpdHkoKTsg
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
Vj4KLSAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+Ojppc0VtcHR5KCkgY29uc3QKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4K
KyAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFYsIFc+Ojppc0VtcHR5KCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwuaXNFbXB0eSgpOyAKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBhdXRv
IEhhc2hTZXQ8VCwgVSwgVj46OmJlZ2luKCkgY29uc3QgLT4gaXRlcmF0b3IKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KKyAgICBpbmxp
bmUgYXV0byBIYXNoU2V0PFQsIFUsIFYsIFc+OjpiZWdpbigpIGNvbnN0IC0+IGl0ZXJhdG9yCiAg
ICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLmJlZ2luKCk7IAogICAgIH0KIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAgaW5saW5lIGF1dG8g
SGFzaFNldDxULCBVLCBWPjo6ZW5kKCkgY29uc3QgLT4gaXRlcmF0b3IKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KKyAgICBpbmxpbmUg
YXV0byBIYXNoU2V0PFQsIFUsIFYsIFc+OjplbmQoKSBjb25zdCAtPiBpdGVyYXRvcgogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1faW1wbC5lbmQoKTsgCiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgYXV0byBIYXNoU2V0
PFQsIFUsIFY+OjpmaW5kKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNvbnN0IC0+IGl0ZXJhdG9y
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6ZV90
IFc+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWLCBXPjo6ZmluZChjb25zdCBWYWx1
ZVR5cGUmIHZhbHVlKSBjb25zdCAtPiBpdGVyYXRvcgogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
aW1wbC5maW5kKHZhbHVlKTsgCiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+Ojpj
b250YWlucyhjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHNpemVfdCBXPgorICAgIGlubGluZSBib29s
IEhhc2hTZXQ8VCwgVSwgViwgVz46OmNvbnRhaW5zKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLmNvbnRhaW5zKHZhbHVlKTsgCiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+Ci0gICAgaW5s
aW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6ZmluZChjb25z
dCBUJiB2YWx1ZSkgY29uc3QgLT4gaXRlcmF0b3IKKyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFZh
bHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6ZmluZChjb25zdCBU
JiB2YWx1ZSkgY29uc3QgLT4gaXRlcmF0b3IKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwu
dGVtcGxhdGUgZmluZDxIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2
YWx1ZSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1l
IFQ+Ci0gICAgaW5saW5lIGJvb2wgSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
Pjo6Y29udGFpbnMoY29uc3QgVCYgdmFsdWUpIGNvbnN0CisgICAgaW5saW5lIGJvb2wgSGFzaFNl
dDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmNvbnRhaW5z
KGNvbnN0IFQmIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1w
bGF0ZSBjb250YWluczxIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2
YWx1ZSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgVj4KLSAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFQsIFUsIFY+OjphZGQoY29uc3QgVmFs
dWVUeXBlJiB2YWx1ZSkgLT4gQWRkUmVzdWx0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6ZV90IFc+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxU
LCBVLCBWLCBXPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIC0+IEFkZFJlc3VsdAogICAg
IHsKICAgICAgICAgcmV0dXJuIG1faW1wbC5hZGQodmFsdWUpOwogICAgIH0KIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAgaW5saW5lIGF1dG8g
SGFzaFNldDxULCBVLCBWPjo6YWRkKFZhbHVlVHlwZSYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4K
KyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFQsIFUsIFYsIFc+OjphZGQoVmFsdWVUeXBlJiYgdmFs
dWUpIC0+IEFkZFJlc3VsdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC5hZGQoV1RGOjpt
b3ZlKHZhbHVlKSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5
cGVuYW1lIFQ+Ci0gICAgaW5saW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzPjo6YWRkKGNvbnN0IFQmIHZhbHVlKSAtPiBBZGRSZXN1bHQKKyAgICBpbmxpbmUgYXV0
byBIYXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6
YWRkKGNvbnN0IFQmIHZhbHVlKSAtPiBBZGRSZXN1bHQKICAgICB7CiAgICAgICAgIHJldHVybiBt
X2ltcGwudGVtcGxhdGUgYWRkUGFzc2luZ0hhc2hDb2RlPEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRl
cjxIYXNoVHJhbnNsYXRvcj4+KHZhbHVlLCB2YWx1ZSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBJdGVyYXRvclR5cGU+Ci0gICAgaW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBWPjo6YWRk
KEl0ZXJhdG9yVHlwZSBiZWdpbiwgSXRlcmF0b3JUeXBlIGVuZCkKKyAgICBpbmxpbmUgYm9vbCBI
YXNoU2V0PFQsIFUsIFYsIFc+OjphZGQoSXRlcmF0b3JUeXBlIGJlZ2luLCBJdGVyYXRvclR5cGUg
ZW5kKQogICAgIHsKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIGZvciAo
SXRlcmF0b3JUeXBlIGl0ZXIgPSBiZWdpbjsgaXRlciAhPSBlbmQ7ICsraXRlcikKQEAgLTIzMyw4
ICsyMzMsOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAg
ICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6ZV90IFc+Cisg
ICAgaW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBWLCBXPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQog
ICAgIHsKICAgICAgICAgaWYgKGl0Lm1faW1wbCA9PSBtX2ltcGwuZW5kKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0yNDMsMjAgKzI0MywyMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+Ojpy
ZW1vdmUoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KKyAgICBpbmxpbmUgYm9vbCBIYXNoU2V0
PFQsIFUsIFYsIFc+OjpyZW1vdmUoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiByZW1vdmUoZmluZCh2YWx1ZSkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAgaW5saW5lIHZvaWQgSGFzaFNl
dDxULCBVLCBWPjo6Y2xlYXIoKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUs
IHR5cGVuYW1lIFYsIHNpemVfdCBXPgorICAgIGlubGluZSB2b2lkIEhhc2hTZXQ8VCwgVSwgViwg
Vz46OmNsZWFyKCkKICAgICB7CiAgICAgICAgIG1faW1wbC5jbGVhcigpOyAKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGlu
ZSBhdXRvIEhhc2hTZXQ8VCwgVSwgVj46OnRha2UoaXRlcmF0b3IgaXQpIC0+IFZhbHVlVHlwZQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHNpemVfdCBX
PgorICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VCwgVSwgViwgVz46OnRha2UoaXRlcmF0b3IgaXQp
IC0+IFZhbHVlVHlwZQogICAgIHsKICAgICAgICAgaWYgKGl0ID09IGVuZCgpKQogICAgICAgICAg
ICAgcmV0dXJuIFZhbHVlVHJhaXRzOjplbXB0eVZhbHVlKCk7CkBAIC0yNjYsNDggKzI2Niw0OCBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBh
dXRvIEhhc2hTZXQ8VCwgVSwgVj46OnRha2UoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gVmFs
dWVUeXBlCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwg
c2l6ZV90IFc+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWLCBXPjo6dGFrZShjb25z
dCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBWYWx1ZVR5cGUKICAgICB7CiAgICAgICAgIHJldHVybiB0
YWtlKGZpbmQodmFsdWUpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VCwgVSwgVj46OnRh
a2VBbnkoKSAtPiBWYWx1ZVR5cGUKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KKyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFQsIFUsIFYs
IFc+Ojp0YWtlQW55KCkgLT4gVmFsdWVUeXBlCiAgICAgewogICAgICAgICByZXR1cm4gdGFrZShi
ZWdpbigpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHNpemVfdCBpbmxp
bmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPgotICAgIGlubGluZSBhdXRvIEhh
c2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmZpbmQodHlwZW5hbWUgR2V0UHRy
SGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgaXRlcmF0b3I+Ojp0eXBlCisgICAgaW5saW5lIGF1dG8g
SGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmZp
bmQodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSBjb25zdCAtPiB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgaXRlcmF0b3I+Ojp0eXBl
CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8SGFzaFNldFRyYW5z
bGF0b3I8SGFzaEZ1bmN0aW9ucz4+KHZhbHVlKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBW
PgotICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46
OmNvbnRhaW5zKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgY29uc3Qg
LT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0
eXBlCisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBpbmxpbmVDYXBhY2l0eT46OmNvbnRhaW5zKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRy
VHlwZSB2YWx1ZSkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxW
Pjo6dmFsdWUsIGJvb2w+Ojp0eXBlCiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBs
YXRlIGNvbnRhaW5zPEhhc2hTZXRUcmFuc2xhdG9yPEhhc2hGdW5jdGlvbnM+Pih2YWx1ZSk7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFZhbHVl
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpyZW1vdmUodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+
OjpQdHJUeXBlIHZhbHVlKSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+
Ojp2YWx1ZSwgYm9vbD46OnR5cGUKKyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFZhbHVlLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6cmVtb3ZlKHR5cGVuYW1lIEdldFB0
ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNT
bWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0eXBlCiAgICAgewogICAgICAgICByZXR1cm4gcmVt
b3ZlKGZpbmQodmFsdWUpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPgotICAgIGlubGlu
ZSBhdXRvIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OnRha2UodHlwZW5h
bWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgVmFsdWVUeXBlPjo6dHlwZQorICAgIGlubGluZSBh
dXRvIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgaW5saW5lQ2FwYWNpdHk+
Ojp0YWtlKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgLT4gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIFZhbHVlVHlwZT46OnR5cGUK
ICAgICB7CiAgICAgICAgIHJldHVybiB0YWtlKGZpbmQodmFsdWUpKTsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBi
b29sIEhhc2hTZXQ8VCwgVSwgVj46OmlzVmFsaWRWYWx1ZShjb25zdCBWYWx1ZVR5cGUmIHZhbHVl
KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHNpemVf
dCBXPgorICAgIGlubGluZSBib29sIEhhc2hTZXQ8VCwgVSwgViwgVz46OmlzVmFsaWRWYWx1ZShj
b25zdCBWYWx1ZVR5cGUmIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKFZhbHVlVHJhaXRzOjpp
c0RlbGV0ZWRWYWx1ZSh2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMzYs
OCArMzM2LDggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICB2ZWN0b3JbaV0gPSAqaXQ7
CiAgICAgfSAgCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWPgotICAgIGlubGluZSBib29sIEhhc2hTZXQ8VCwgVSwgVj46Om9wZXJhdG9yPT0oY29uc3Qg
SGFzaFNldCYgb3RoZXIpIGNvbnN0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgViwgc2l6ZV90IFc+CisgICAgaW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBW
LCBXPjo6b3BlcmF0b3I9PShjb25zdCBIYXNoU2V0JiBvdGhlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIGlmIChzaXplKCkgIT0gb3RoZXIuc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpJbmRleDogU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvSGFzaFRhYmxlLmgJKHJldmlzaW9uIDE4MjA4OSkKKysrIFNvdXJjZS9XVEYvd3Rm
L0hhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMTEsIDIwMTIsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA4IERhdmlkIExldmluIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgpAQCAtNzMsNDUgKzczLDQ1IEBAIG5hbWVzcGFjZSBXVEYgewogCiAjZW5kaWYKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMs
IHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgIGNsYXNzIEhh
c2hUYWJsZTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAg
ICBjbGFzcyBIYXNoVGFibGVJdGVyYXRvcjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4KICAgICBjbGFzcyBIYXNoVGFibGVDb25zdEl0ZXJhdG9yOwogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cz4KLSAgICB2b2lkIGFkZEl0ZXJhdG9yKGNvbnN0IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBF
eHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiosCi0gICAgICAgIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz4qKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CisgICAgdm9pZCBhZGRJdGVyYXRvcihjb25zdCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+KiwK
KyAgICAgICAgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4qKTsKIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHM+Ci0gICAgdm9pZCByZW1vdmVJdGVyYXRvcihIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Kik7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHZvaWQgcmVtb3ZlSXRlcmF0
b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4qKTsKIAogI2lmICFDSEVD
S19IQVNIVEFCTEVfSVRFUkFUT1JTCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGlubGluZSB2b2lkIGFkZEl0
ZXJhdG9yKGNvbnN0IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPiosCi0gICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4q
KSB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgaW5saW5lIHZvaWQg
YWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5PiosCisgICAgICAgIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+KikgeyB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgot
ICAgIGlubGluZSB2b2lkIHJlbW92ZUl0ZXJhdG9yKEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5
LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qKSB7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgaW5saW5lIHZvaWQgcmVt
b3ZlSXRlcmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3Is
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4qKSB7IH0K
IAogI2VuZGlmCiAKICAgICB0eXBlZGVmIGVudW0geyBIYXNoSXRlbUtub3duR29vZCB9IEhhc2hJ
dGVtS25vd25Hb29kVGFnOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHk+CiAgICAgY2xhc3MgSGFzaFRhYmxlQ29uc3RJdGVyYXRvciB7CiAgICAgcHJpdmF0ZToK
LSAgICAgICAgdHlwZWRlZiBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gSGFzaFRhYmxlVHlwZTsKLSAgICAgICAgdHlwZWRl
ZiBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPiBpdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVD
b25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+IGNvbnN0X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxL
ZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBp
bmxpbmVDYXBhY2l0eT4gSGFzaFRhYmxlVHlwZTsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJ
dGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4gaXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgSGFzaFRh
YmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4gY29uc3RfaXRlcmF0b3I7CiAgICAgICAg
IHR5cGVkZWYgVmFsdWUgVmFsdWVUeXBlOwogICAgICAgICB0eXBlZGVmIGNvbnN0IFZhbHVlVHlw
ZSYgUmVmZXJlbmNlVHlwZTsKICAgICAgICAgdHlwZWRlZiBjb25zdCBWYWx1ZVR5cGUqIFBvaW50
ZXJUeXBlOwogCi0gICAgICAgIGZyaWVuZCBjbGFzcyBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz47Ci0gICAgICAgIGZyaWVu
ZCBjbGFzcyBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
LCBpbmxpbmVDYXBhY2l0eT47CisgICAgICAgIGZyaWVuZCBjbGFzcyBIYXNoVGFibGVJdGVyYXRv
cjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
LCBpbmxpbmVDYXBhY2l0eT47CiAKICAgICAgICAgdm9pZCBza2lwRW1wdHlCdWNrZXRzKCkKICAg
ICAgICAgewpAQCAtMjM2LDE3ICsyMzYsMTcgQEAgbmFtZXNwYWNlIFdURiB7CiAjZW5kaWYKICAg
ICB9OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5
cGVuYW1lIEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1l
IFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAg
Y2xhc3MgSGFzaFRhYmxlSXRlcmF0b3IgewogICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYg
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7Ci0gICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0
b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz4gaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXks
IFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBjb25z
dF9pdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+IEhh
c2hUYWJsZVR5cGU7CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2Fw
YWNpdHk+IGl0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywg
aW5saW5lQ2FwYWNpdHk+IGNvbnN0X2l0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIFZhbHVlIFZh
bHVlVHlwZTsKICAgICAgICAgdHlwZWRlZiBWYWx1ZVR5cGUmIFJlZmVyZW5jZVR5cGU7CiAgICAg
ICAgIHR5cGVkZWYgVmFsdWVUeXBlKiBQb2ludGVyVHlwZTsKIAotICAgICAgICBmcmllbmQgY2xh
c3MgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+OworICAgICAgICBmcmllbmQgY2xhc3MgSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFj
aXR5PjsKIAogICAgICAgICBIYXNoVGFibGVJdGVyYXRvcihIYXNoVGFibGVUeXBlKiB0YWJsZSwg
UG9pbnRlclR5cGUgcG9zLCBQb2ludGVyVHlwZSBlbmQpIDogbV9pdGVyYXRvcih0YWJsZSwgcG9z
LCBlbmQpIHsgfQogICAgICAgICBIYXNoVGFibGVJdGVyYXRvcihIYXNoVGFibGVUeXBlKiB0YWJs
ZSwgUG9pbnRlclR5cGUgcG9zLCBQb2ludGVyVHlwZSBlbmQsIEhhc2hJdGVtS25vd25Hb29kVGFn
IHRhZykgOiBtX2l0ZXJhdG9yKHRhYmxlLCBwb3MsIGVuZCwgdGFnKSB7IH0KQEAgLTI4OSwxMSAr
Mjg5LDExIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBib29sIGlzTmV3RW50cnk7CiAgICAg
fTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
IEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBl
bmFtZSBLZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgIGNs
YXNzIEhhc2hUYWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUl0
ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHM+IGl0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4g
Y29uc3RfaXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBW
YWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5l
Q2FwYWNpdHk+IGl0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0
b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cywgaW5saW5lQ2FwYWNpdHk+IGNvbnN0X2l0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIFRyYWl0
cyBWYWx1ZVRyYWl0czsKICAgICAgICAgdHlwZWRlZiBLZXkgS2V5VHlwZTsKICAgICAgICAgdHlw
ZWRlZiBWYWx1ZSBWYWx1ZVR5cGU7CkBAIC0zNDksMTAgKzM0OSwxMCBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAgICAgfkhhc2hUYWJsZSgpIAogICAgICAgICB7CiAgICAgICAgICAgICBpbnZhbGlk
YXRlSXRlcmF0b3JzKCk7IAotICAgICAgICAgICAgaWYgKG1fdGFibGUpCi0gICAgICAgICAgICAg
ICAgZGVhbGxvY2F0ZVRhYmxlKG1fdGFibGUsIG1fdGFibGVTaXplKTsKKyAgICAgICAgICAgIGlm
IChtX3N0b3JhZ2UudGFibGUudGFibGUpCisgICAgICAgICAgICAgICAgZGVhbGxvY2F0ZVRhYmxl
KG1fc3RvcmFnZS50YWJsZS50YWJsZSwgbV9zdG9yYWdlLnRhYmxlLnNpemUpOwogI2lmIENIRUNL
X0hBU0hUQUJMRV9VU0VfQUZURVJfREVTVFJVQ1RJT04KLSAgICAgICAgICAgIG1fdGFibGUgPSAo
VmFsdWVUeXBlKikodWludHB0cl90KTB4YmJhZGJlZWY7CisgICAgICAgICAgICBtX3N0b3JhZ2Uu
dGFibGUudGFibGUgPSAoVmFsdWVUeXBlKikodWludHB0cl90KTB4YmJhZGJlZWY7CiAjZW5kaWYK
ICAgICAgICAgfQogCkBAIC0zNjYsMTMgKzM2NiwxMyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgLy8gV2hlbiB0aGUgaGFzaCB0YWJsZSBpcyBlbXB0eSwganVzdCByZXR1cm4gdGhlIHNhbWUg
aXRlcmF0b3IgZm9yIGVuZCBhcyBmb3IgYmVnaW4uCiAgICAgICAgIC8vIFRoaXMgaXMgbW9yZSBl
ZmZpY2llbnQgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIHRvIHNraXAgYWxsIHRoZSBlbXB0eSBhbmQg
ZGVsZXRlZAogICAgICAgICAvLyBidWNrZXRzLCBhbmQgaXRlcmF0aW5nIGFuIGVtcHR5IHRhYmxl
IGlzIGEgY29tbW9uIGNhc2UgdGhhdCdzIHdvcnRoIG9wdGltaXppbmcuCi0gICAgICAgIGl0ZXJh
dG9yIGJlZ2luKCkgeyByZXR1cm4gaXNFbXB0eSgpID8gZW5kKCkgOiBtYWtlSXRlcmF0b3IobV90
YWJsZSk7IH0KLSAgICAgICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gbWFrZUtub3duR29vZEl0
ZXJhdG9yKG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0KLSAgICAgICAgY29uc3RfaXRlcmF0b3Ig
YmVnaW4oKSBjb25zdCB7IHJldHVybiBpc0VtcHR5KCkgPyBlbmQoKSA6IG1ha2VDb25zdEl0ZXJh
dG9yKG1fdGFibGUpOyB9Ci0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0
dXJuIG1ha2VLbm93bkdvb2RDb25zdEl0ZXJhdG9yKG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0K
KyAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBpc0VtcHR5KCkgPyBlbmQoKSA6IG1h
a2VJdGVyYXRvcihtX3N0b3JhZ2UudGFibGUudGFibGUpOyB9CisgICAgICAgIGl0ZXJhdG9yIGVu
ZCgpIHsgcmV0dXJuIG1ha2VLbm93bkdvb2RJdGVyYXRvcihtX3N0b3JhZ2UudGFibGUudGFibGUg
KyBtX3N0b3JhZ2UudGFibGUuc2l6ZSk7IH0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4o
KSBjb25zdCB7IHJldHVybiBpc0VtcHR5KCkgPyBlbmQoKSA6IG1ha2VDb25zdEl0ZXJhdG9yKG1f
c3RvcmFnZS50YWJsZS50YWJsZSk7IH0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29u
c3QgeyByZXR1cm4gbWFrZUtub3duR29vZENvbnN0SXRlcmF0b3IobV9zdG9yYWdlLnRhYmxlLnRh
YmxlICsgbV9zdG9yYWdlLnRhYmxlLnNpemUpOyB9CiAKICAgICAgICAgdW5zaWduZWQgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fa2V5Q291bnQ7IH0KLSAgICAgICAgdW5zaWduZWQgY2FwYWNpdHko
KSBjb25zdCB7IHJldHVybiBtX3RhYmxlU2l6ZTsgfQorICAgICAgICB1bnNpZ25lZCBjYXBhY2l0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS50YWJsZS5zaXplOyB9CiAgICAgICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2tleUNvdW50OyB9CiAKICAgICAgICAgQWRkUmVz
dWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSB7IHJldHVybiBhZGQ8SWRlbnRpdHlUcmFu
c2xhdG9yVHlwZT4oRXh0cmFjdG9yOjpleHRyYWN0KHZhbHVlKSwgdmFsdWUpOyB9CkBAIC00Mzcs
MTEgKzQzNywxMSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdm9pZCByZW1vdmVBbmRJbnZh
bGlkYXRlKFZhbHVlVHlwZSopOwogICAgICAgICB2b2lkIHJlbW92ZShWYWx1ZVR5cGUqKTsKIAot
ICAgICAgICBib29sIHNob3VsZEV4cGFuZCgpIGNvbnN0IHsgcmV0dXJuIChtX2tleUNvdW50ICsg
bV9kZWxldGVkQ291bnQpICogbV9tYXhMb2FkID49IG1fdGFibGVTaXplOyB9Ci0gICAgICAgIGJv
b2wgbXVzdFJlaGFzaEluUGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2tleUNvdW50ICogbV9taW5M
b2FkIDwgbV90YWJsZVNpemUgKiAyOyB9Ci0gICAgICAgIGJvb2wgc2hvdWxkU2hyaW5rKCkgY29u
c3QgeyByZXR1cm4gbV9rZXlDb3VudCAqIG1fbWluTG9hZCA8IG1fdGFibGVTaXplICYmIG1fdGFi
bGVTaXplID4gS2V5VHJhaXRzOjptaW5pbXVtVGFibGVTaXplOyB9CisgICAgICAgIGJvb2wgc2hv
dWxkRXhwYW5kKCkgY29uc3QgeyByZXR1cm4gKG1fa2V5Q291bnQgKyBtX3N0b3JhZ2UudGFibGUu
ZGVsZXRlZENvdW50KSAqIG1fbWF4TG9hZCA+PSBtX3N0b3JhZ2UudGFibGUuc2l6ZTsgfQorICAg
ICAgICBib29sIG11c3RSZWhhc2hJblBsYWNlKCkgY29uc3QgeyByZXR1cm4gbV9rZXlDb3VudCAq
IG1fbWluTG9hZCA8IG1fc3RvcmFnZS50YWJsZS5zaXplICogMjsgfQorICAgICAgICBib29sIHNo
b3VsZFNocmluaygpIGNvbnN0IHsgcmV0dXJuIG1fa2V5Q291bnQgKiBtX21pbkxvYWQgPCBtX3N0
b3JhZ2UudGFibGUuc2l6ZSAmJiBtX3N0b3JhZ2UudGFibGUuc2l6ZSA+IEtleVRyYWl0czo6bWlu
aW11bVRhYmxlU2l6ZTsgfQogICAgICAgICBWYWx1ZVR5cGUqIGV4cGFuZChWYWx1ZVR5cGUqIGVu
dHJ5ID0gbnVsbHB0cik7Ci0gICAgICAgIHZvaWQgc2hyaW5rKCkgeyByZWhhc2gobV90YWJsZVNp
emUgLyAyLCBudWxscHRyKTsgfQorICAgICAgICB2b2lkIHNocmluaygpIHsgcmVoYXNoKG1fc3Rv
cmFnZS50YWJsZS5zaXplIC8gMiwgbnVsbHB0cik7IH0KIAogICAgICAgICBWYWx1ZVR5cGUqIHJl
aGFzaCh1bnNpZ25lZCBuZXdUYWJsZVNpemUsIFZhbHVlVHlwZSogZW50cnkpOwogICAgICAgICBW
YWx1ZVR5cGUqIHJlaW5zZXJ0KFZhbHVlVHlwZSYmKTsKQEAgLTQ1MiwxMCArNDUyLDEwIEBAIG5h
bWVzcGFjZSBXVEYgewogICAgICAgICBGdWxsTG9va3VwVHlwZSBtYWtlTG9va3VwUmVzdWx0KFZh
bHVlVHlwZSogcG9zaXRpb24sIGJvb2wgZm91bmQsIHVuc2lnbmVkIGhhc2gpCiAgICAgICAgICAg
ICB7IHJldHVybiBGdWxsTG9va3VwVHlwZShMb29rdXBUeXBlKHBvc2l0aW9uLCBmb3VuZCksIGhh
c2gpOyB9CiAKLSAgICAgICAgaXRlcmF0b3IgbWFrZUl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSB7
IHJldHVybiBpdGVyYXRvcih0aGlzLCBwb3MsIG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0KLSAg
ICAgICAgY29uc3RfaXRlcmF0b3IgbWFrZUNvbnN0SXRlcmF0b3IoVmFsdWVUeXBlKiBwb3MpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJsZSArIG1fdGFibGVT
aXplKTsgfQotICAgICAgICBpdGVyYXRvciBtYWtlS25vd25Hb29kSXRlcmF0b3IoVmFsdWVUeXBl
KiBwb3MpIHsgcmV0dXJuIGl0ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJsZSArIG1fdGFibGVTaXpl
LCBIYXNoSXRlbUtub3duR29vZCk7IH0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgbWFrZUtub3du
R29vZENvbnN0SXRlcmF0b3IoVmFsdWVUeXBlKiBwb3MpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2l0
ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJsZSArIG1fdGFibGVTaXplLCBIYXNoSXRlbUtub3duR29v
ZCk7IH0KKyAgICAgICAgaXRlcmF0b3IgbWFrZUl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSB7IHJl
dHVybiBpdGVyYXRvcih0aGlzLCBwb3MsIG1fc3RvcmFnZS50YWJsZS50YWJsZSArIG1fc3RvcmFn
ZS50YWJsZS5zaXplKTsgfQorICAgICAgICBjb25zdF9pdGVyYXRvciBtYWtlQ29uc3RJdGVyYXRv
cihWYWx1ZVR5cGUqIHBvcykgY29uc3QgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IodGhpcywgcG9z
LCBtX3N0b3JhZ2UudGFibGUudGFibGUgKyBtX3N0b3JhZ2UudGFibGUuc2l6ZSk7IH0KKyAgICAg
ICAgaXRlcmF0b3IgbWFrZUtub3duR29vZEl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSB7IHJldHVy
biBpdGVyYXRvcih0aGlzLCBwb3MsIG1fc3RvcmFnZS50YWJsZS50YWJsZSArIG1fc3RvcmFnZS50
YWJsZS5zaXplLCBIYXNoSXRlbUtub3duR29vZCk7IH0KKyAgICAgICAgY29uc3RfaXRlcmF0b3Ig
bWFrZUtub3duR29vZENvbnN0SXRlcmF0b3IoVmFsdWVUeXBlKiBwb3MpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0X2l0ZXJhdG9yKHRoaXMsIHBvcywgbV9zdG9yYWdlLnRhYmxlLnRhYmxlICsgbV9zdG9y
YWdlLnRhYmxlLnNpemUsIEhhc2hJdGVtS25vd25Hb29kKTsgfQogCiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAogICAgICAgICB2b2lkIGNoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKSBjb25z
dDsKQEAgLTQ3MSwxMiArNDcxLDE2IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBtX21heExvYWQgPSAyOwogICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgbV9taW5Mb2FkID0gNjsKLQotICAgICAgICBWYWx1ZVR5cGUqIG1fdGFibGU7Ci0gICAg
ICAgIHVuc2lnbmVkIG1fdGFibGVTaXplOwotICAgICAgICB1bnNpZ25lZCBtX3RhYmxlU2l6ZU1h
c2s7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgVmFsdWVUeXBl
IGFycmF5W2lubGluZUNhcGFjaXR5XSBhbmQgdXNlIGl0IGZvciBzbWFsbCBzZXRzLgorICAgICAg
ICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBWYWx1ZVR5cGUqIHRhYmxlOworICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHNpemU7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgc2l6ZU1h
c2s7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgZGVsZXRlZENvdW50OworICAgICAgICAgICAg
fSB0YWJsZTsKKyAgICAgICAgfSBtX3N0b3JhZ2U7CiAgICAgICAgIHVuc2lnbmVkIG1fa2V5Q291
bnQ7Ci0gICAgICAgIHVuc2lnbmVkIG1fZGVsZXRlZENvdW50OwogCiAjaWYgQ0hFQ0tfSEFTSFRB
QkxFX0lURVJBVE9SUwogICAgIHB1YmxpYzoKQEAgLTUzMCwxMyArNTM0LDkgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgIENPTVBJTEVfQVNTRVJUKHZhbHVlID4gKDIgKiBzaXplKSwgSGFzaFRh
YmxlQ2FwYWNpdHlIb2xkc0NvbnRlbnRTaXplKTsKICAgICB9OwogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICBp
bmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUoKQotICAgICAgICA6IG1fdGFibGUoMCkKLSAgICAg
ICAgLCBtX3RhYmxlU2l6ZSgwKQotICAgICAgICAsIG1fdGFibGVTaXplTWFzaygwKQotICAgICAg
ICAsIG1fa2V5Q291bnQoMCkKLSAgICAgICAgLCBtX2RlbGV0ZWRDb3VudCgwKQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFj
aXR5Pjo6SGFzaFRhYmxlKCkKKyAgICAgICAgOiBtX2tleUNvdW50KDApCiAjaWYgQ0hFQ0tfSEFT
SFRBQkxFX0lURVJBVE9SUwogICAgICAgICAsIG1faXRlcmF0b3JzKDApCiAgICAgICAgICwgbV9t
dXRleChzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6bXV0ZXg+KCkpCkBAIC01NTksMTcgKzU1OSwxNyBA
QCBuYW1lc3BhY2UgV1RGIHsKIAogI2lmIEFTU0VSVF9ESVNBQkxFRAogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0
b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5
VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFz
aFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpjaGVj
a0tleShjb25zdCBUJikKKyAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+
OjpjaGVja0tleShjb25zdCBUJikKICAgICB7CiAgICAgfQogCiAjZWxzZQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRy
YWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUg
S2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNoZWNrS2V5
KGNvbnN0IFQmIGtleSkKKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3Is
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmNoZWNr
S2V5KGNvbnN0IFQmIGtleSkKICAgICB7CiAgICAgICAgIGlmICghSGFzaEZ1bmN0aW9uczo6c2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC01ODMs
MTUgKzU4MywxNSBAQCBuYW1lc3BhY2UgV1RGIHsKIAogI2VuZGlmCiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1l
IEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNo
VHJhbnNsYXRvciwgdHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBW
YWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Omxvb2t1
cChjb25zdCBUJiBrZXkpIC0+IFZhbHVlVHlwZSoKKyAgICBpbmxpbmUgYXV0byBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywg
aW5saW5lQ2FwYWNpdHk+Ojpsb29rdXAoY29uc3QgVCYga2V5KSAtPiBWYWx1ZVR5cGUqCiAgICAg
ewogICAgICAgICBjaGVja0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKIAogICAgICAgICB1bnNp
Z25lZCBrID0gMDsKLSAgICAgICAgdW5zaWduZWQgc2l6ZU1hc2sgPSBtX3RhYmxlU2l6ZU1hc2s7
Ci0gICAgICAgIFZhbHVlVHlwZSogdGFibGUgPSBtX3RhYmxlOworICAgICAgICB1bnNpZ25lZCBz
aXplTWFzayA9IG1fc3RvcmFnZS50YWJsZS5zaXplTWFzazsKKyAgICAgICAgVmFsdWVUeXBlKiB0
YWJsZSA9IG1fc3RvcmFnZS50YWJsZS50YWJsZTsKICAgICAgICAgdW5zaWduZWQgaCA9IEhhc2hU
cmFuc2xhdG9yOjpoYXNoKGtleSk7CiAgICAgICAgIHVuc2lnbmVkIGkgPSBoICYgc2l6ZU1hc2s7
CiAKQEAgLTYzOSwxNiArNjM5LDE2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB9CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
RXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVu
YW1lIEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIGF1
dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+Ojpsb29rdXBGb3JXcml0aW5nKGNvbnN0IFQmIGtleSkgLT4gTG9va3VwVHlw
ZQorICAgIGlubGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46Omxvb2t1cEZvcldy
aXRpbmcoY29uc3QgVCYga2V5KSAtPiBMb29rdXBUeXBlCiAgICAgewotICAgICAgICBBU1NFUlQo
bV90YWJsZSk7CisgICAgICAgIEFTU0VSVChtX3N0b3JhZ2UudGFibGUudGFibGUpOwogICAgICAg
ICBjaGVja0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKIAogICAgICAgICB1bnNpZ25lZCBrID0g
MDsKLSAgICAgICAgVmFsdWVUeXBlKiB0YWJsZSA9IG1fdGFibGU7Ci0gICAgICAgIHVuc2lnbmVk
IHNpemVNYXNrID0gbV90YWJsZVNpemVNYXNrOworICAgICAgICBWYWx1ZVR5cGUqIHRhYmxlID0g
bV9zdG9yYWdlLnRhYmxlLnRhYmxlOworICAgICAgICB1bnNpZ25lZCBzaXplTWFzayA9IG1fc3Rv
cmFnZS50YWJsZS5zaXplTWFzazsKICAgICAgICAgdW5zaWduZWQgaCA9IEhhc2hUcmFuc2xhdG9y
OjpoYXNoKGtleSk7CiAgICAgICAgIHVuc2lnbmVkIGkgPSBoICYgc2l6ZU1hc2s7CiAKQEAgLTcw
MCwxNiArNzAwLDE2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB9CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIGF1dG8gSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHM+OjpmdWxsTG9va3VwRm9yV3JpdGluZyhjb25zdCBUJiBrZXkpIC0+IEZ1bGxMb29rdXBUeXBl
CisgICAgaW5saW5lIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6ZnVsbExvb2t1cEZv
cldyaXRpbmcoY29uc3QgVCYga2V5KSAtPiBGdWxsTG9va3VwVHlwZQogICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fdGFibGUpOworICAgICAgICBBU1NFUlQobV9zdG9yYWdlLnRhYmxlLnRhYmxlKTsK
ICAgICAgICAgY2hlY2tLZXk8SGFzaFRyYW5zbGF0b3I+KGtleSk7CiAKICAgICAgICAgdW5zaWdu
ZWQgayA9IDA7Ci0gICAgICAgIFZhbHVlVHlwZSogdGFibGUgPSBtX3RhYmxlOwotICAgICAgICB1
bnNpZ25lZCBzaXplTWFzayA9IG1fdGFibGVTaXplTWFzazsKKyAgICAgICAgVmFsdWVUeXBlKiB0
YWJsZSA9IG1fc3RvcmFnZS50YWJsZS50YWJsZTsKKyAgICAgICAgdW5zaWduZWQgc2l6ZU1hc2sg
PSBtX3N0b3JhZ2UudGFibGUuc2l6ZU1hc2s7CiAgICAgICAgIHVuc2lnbmVkIGggPSBIYXNoVHJh
bnNsYXRvcjo6aGFzaChrZXkpOwogICAgICAgICB1bnNpZ25lZCBpID0gaCAmIHNpemVNYXNrOwog
CkBAIC03ODAsMzAgKzc4MCwzMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgfQogICAgIH07
CiAgICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5
cGVuYW1lIEtleVRyYWl0cz4KLSAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmluaXRpYWxpemVC
dWNrZXQoVmFsdWVUeXBlJiBidWNrZXQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0
eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5
PgorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmluaXRpYWxpemVC
dWNrZXQoVmFsdWVUeXBlJiBidWNrZXQpCiAgICAgewogICAgICAgICBIYXNoVGFibGVCdWNrZXRJ
bml0aWFsaXplcjxUcmFpdHM6OmVtcHR5VmFsdWVJc1plcm8+Ojp0ZW1wbGF0ZSBpbml0aWFsaXpl
PFRyYWl0cz4oYnVja2V0KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlw
ZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+Ci0gICAgQUxXQVlTX0lOTElORSBhdXRvIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6YWRkKFQmJiBrZXksIEV4dHJhJiYgZXh0cmEpIC0+IEFkZFJlc3VsdAorICAgIEFMV0FZU19J
TkxJTkUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjphZGQoVCYmIGtleSwgRXh0cmEm
JiBleHRyYSkgLT4gQWRkUmVzdWx0CiAgICAgewogICAgICAgICBjaGVja0tleTxIYXNoVHJhbnNs
YXRvcj4oa2V5KTsKIAogICAgICAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7CiAKLSAgICAgICAg
aWYgKCFtX3RhYmxlKQorICAgICAgICBpZiAoIW1fc3RvcmFnZS50YWJsZS50YWJsZSkKICAgICAg
ICAgICAgIGV4cGFuZChudWxscHRyKTsKIAogICAgICAgICBpbnRlcm5hbENoZWNrVGFibGVDb25z
aXN0ZW5jeSgpOwogCi0gICAgICAgIEFTU0VSVChtX3RhYmxlKTsKKyAgICAgICAgQVNTRVJUKG1f
c3RvcmFnZS50YWJsZS50YWJsZSk7CiAKICAgICAgICAgdW5zaWduZWQgayA9IDA7Ci0gICAgICAg
IFZhbHVlVHlwZSogdGFibGUgPSBtX3RhYmxlOwotICAgICAgICB1bnNpZ25lZCBzaXplTWFzayA9
IG1fdGFibGVTaXplTWFzazsKKyAgICAgICAgVmFsdWVUeXBlKiB0YWJsZSA9IG1fc3RvcmFnZS50
YWJsZS50YWJsZTsKKyAgICAgICAgdW5zaWduZWQgc2l6ZU1hc2sgPSBtX3N0b3JhZ2UudGFibGUu
c2l6ZU1hc2s7CiAgICAgICAgIHVuc2lnbmVkIGggPSBIYXNoVHJhbnNsYXRvcjo6aGFzaChrZXkp
OwogICAgICAgICB1bnNpZ25lZCBpID0gaCAmIHNpemVNYXNrOwogCkBAIC04NTcsNyArODU3LDcg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIGlmIChkZWxldGVkRW50cnkpIHsKICAgICAgICAg
ICAgIGluaXRpYWxpemVCdWNrZXQoKmRlbGV0ZWRFbnRyeSk7CiAgICAgICAgICAgICBlbnRyeSA9
IGRlbGV0ZWRFbnRyeTsKLSAgICAgICAgICAgIC0tbV9kZWxldGVkQ291bnQ7IAorICAgICAgICAg
ICAgLS1tX3N0b3JhZ2UudGFibGUuZGVsZXRlZENvdW50OwogICAgICAgICB9CiAKICAgICAgICAg
SGFzaFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSgqZW50cnksIHN0ZDo6Zm9yd2FyZDxUPihrZXkpLCBz
dGQ6OmZvcndhcmQ8RXh0cmE+KGV4dHJhKSk7CkBAIC04NzEsMTUgKzg3MSwxNSBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRlcmF0b3Io
ZW50cnkpLCB0cnVlKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1
bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxp
bmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5h
bWUgVCwgdHlwZW5hbWUgRXh0cmE+Ci0gICAgaW5saW5lIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphZGRQYXNz
aW5nSGFzaENvZGUoVCYmIGtleSwgRXh0cmEmJiBleHRyYSkgLT4gQWRkUmVzdWx0CisgICAgaW5s
aW5lIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6YWRkUGFzc2luZ0hhc2hDb2RlKFQm
JiBrZXksIEV4dHJhJiYgZXh0cmEpIC0+IEFkZFJlc3VsdAogICAgIHsKICAgICAgICAgY2hlY2tL
ZXk8SGFzaFRyYW5zbGF0b3I+KGtleSk7CiAKICAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygp
OwogCi0gICAgICAgIGlmICghbV90YWJsZSkKKyAgICAgICAgaWYgKCFtX3N0b3JhZ2UudGFibGUu
dGFibGUpCiAgICAgICAgICAgICBleHBhbmQoKTsKIAogICAgICAgICBpbnRlcm5hbENoZWNrVGFi
bGVDb25zaXN0ZW5jeSgpOwpAQCAtODk1LDcgKzg5NSw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAg
ICAgICAKICAgICAgICAgaWYgKGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKSB7CiAgICAgICAgICAg
ICBpbml0aWFsaXplQnVja2V0KCplbnRyeSk7Ci0gICAgICAgICAgICAtLW1fZGVsZXRlZENvdW50
OworICAgICAgICAgICAgLS1tX3N0b3JhZ2UudGFibGUuZGVsZXRlZENvdW50OwogICAgICAgICB9
CiAKICAgICAgICAgSGFzaFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSgqZW50cnksIHN0ZDo6Zm9yd2Fy
ZDxUPihrZXkpLCBzdGQ6OmZvcndhcmQ8RXh0cmE+KGV4dHJhKSwgaCk7CkBAIC05MDksMTAgKzkw
OSwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25v
d25Hb29kSXRlcmF0b3IoZW50cnkpLCB0cnVlKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGlu
bGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPjo6cmVpbnNlcnQoVmFsdWVUeXBlJiYgZW50cnkpIC0+IFZhbHVl
VHlwZSoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgaW5saW5lIGF1dG8g
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6cmVpbnNlcnQoVmFsdWVUeXBlJiYgZW50cnkpIC0+
IFZhbHVlVHlwZSoKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3RhYmxlKTsKKyAgICAgICAgQVNT
RVJUKG1fc3RvcmFnZS50YWJsZS50YWJsZSk7CiAgICAgICAgIEFTU0VSVCghbG9va3VwRm9yV3Jp
dGluZyhFeHRyYWN0b3I6OmV4dHJhY3QoZW50cnkpKS5zZWNvbmQpOwogICAgICAgICBBU1NFUlQo
IWlzRGVsZXRlZEJ1Y2tldCgqKGxvb2t1cEZvcldyaXRpbmcoRXh0cmFjdG9yOjpleHRyYWN0KGVu
dHJ5KSkuZmlyc3QpKSk7CiAjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFMKQEAgLTkyOSwxMSArOTI5
LDExIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZXR1cm4gbmV3RW50cnk7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiAKLSAgICBhdXRvIEhhc2hU
YWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJh
aXRzPjo6ZmluZChjb25zdCBUJiBrZXkpIC0+IGl0ZXJhdG9yCisgICAgYXV0byBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywg
aW5saW5lQ2FwYWNpdHk+OjpmaW5kKGNvbnN0IFQmIGtleSkgLT4gaXRlcmF0b3IKICAgICB7Ci0g
ICAgICAgIGlmICghbV90YWJsZSkKKyAgICAgICAgaWYgKCFtX3N0b3JhZ2UudGFibGUudGFibGUp
CiAgICAgICAgICAgICByZXR1cm4gZW5kKCk7CiAKICAgICAgICAgVmFsdWVUeXBlKiBlbnRyeSA9
IGxvb2t1cDxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKQEAgLTk0MywxMSArOTQzLDExIEBAIG5hbWVz
cGFjZSBXVEYgewogICAgICAgICByZXR1cm4gbWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KTsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+IAotICAgIGF1
dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+OjpmaW5kKGNvbnN0IFQmIGtleSkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IK
KyAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmZpbmQoY29uc3QgVCYga2V5KSBj
b25zdCAtPiBjb25zdF9pdGVyYXRvcgogICAgIHsKLSAgICAgICAgaWYgKCFtX3RhYmxlKQorICAg
ICAgICBpZiAoIW1fc3RvcmFnZS50YWJsZS50YWJsZSkKICAgICAgICAgICAgIHJldHVybiBlbmQo
KTsKIAogICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0gY29uc3RfY2FzdDxIYXNoVGFibGUqPih0
aGlzKS0+bG9va3VwPEhhc2hUcmFuc2xhdG9yPihrZXkpOwpAQCAtOTU3LDMzICs5NTcsMzMgQEAg
bmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiBtYWtlS25vd25Hb29kQ29uc3RJdGVyYXRv
cihlbnRyeSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHk+CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBU
PiAKLSAgICBib29sIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y29udGFpbnMoY29uc3QgVCYga2V5KSBjb25zdAorICAg
IGJvb2wgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6Y29udGFpbnMoY29uc3QgVCYga2V5KSBj
b25zdAogICAgIHsKLSAgICAgICAgaWYgKCFtX3RhYmxlKQorICAgICAgICBpZiAoIW1fc3RvcmFn
ZS50YWJsZS50YWJsZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICByZXR1
cm4gY29uc3RfY2FzdDxIYXNoVGFibGUqPih0aGlzKS0+bG9va3VwPEhhc2hUcmFuc2xhdG9yPihr
ZXkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZUFuZElu
dmFsaWRhdGVXaXRob3V0RW50cnlDb25zaXN0ZW5jeUNoZWNrKFZhbHVlVHlwZSogcG9zKQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVD
YXBhY2l0eT46OnJlbW92ZUFuZEludmFsaWRhdGVXaXRob3V0RW50cnlDb25zaXN0ZW5jeUNoZWNr
KFZhbHVlVHlwZSogcG9zKQogICAgIHsKICAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwog
ICAgICAgICByZW1vdmUocG9zKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIHZvaWQgSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHM+OjpyZW1vdmVBbmRJbnZhbGlkYXRlKFZhbHVlVHlwZSogcG9zKQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eT4KKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OnJl
bW92ZUFuZEludmFsaWRhdGUoVmFsdWVUeXBlKiBwb3MpCiAgICAgewogICAgICAgICBpbnZhbGlk
YXRlSXRlcmF0b3JzKCk7CiAgICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7
CiAgICAgICAgIHJlbW92ZShwb3MpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtl
eSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0
aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9pZCBIYXNo
VGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRy
YWl0cz46OnJlbW92ZShWYWx1ZVR5cGUqIHBvcykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHk+CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjpyZW1vdmUoVmFsdWVU
eXBlKiBwb3MpCiAgICAgewogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTCiAgICAgICAgICsrSGFz
aFRhYmxlU3RhdHM6Om51bVJlbW92ZXM7CkBAIC05OTMsNyArOTkzLDcgQEAgbmFtZXNwYWNlIFdU
RiB7CiAjZW5kaWYKIAogICAgICAgICBkZWxldGVCdWNrZXQoKnBvcyk7Ci0gICAgICAgICsrbV9k
ZWxldGVkQ291bnQ7CisgICAgICAgICsrbV9zdG9yYWdlLnRhYmxlLmRlbGV0ZWRDb3VudDsKICAg
ICAgICAgLS1tX2tleUNvdW50OwogCiAgICAgICAgIGlmIChzaG91bGRTaHJpbmsoKSkKQEAgLTEw
MDIsOCArMTAwMiw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBpbnRlcm5hbENoZWNrVGFi
bGVDb25zaXN0ZW5jeSgpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgaW5saW5lIHZvaWQgSGFz
aFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHM+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFj
aXR5PgorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OnJlbW92ZShp
dGVyYXRvciBpdCkKICAgICB7CiAgICAgICAgIGlmIChpdCA9PSBlbmQoKSkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTEwMTEsOCArMTAxMSw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBy
ZW1vdmVBbmRJbnZhbGlkYXRlKGNvbnN0X2Nhc3Q8VmFsdWVUeXBlKj4oaXQubV9pdGVyYXRvci5t
X3Bvc2l0aW9uKSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICBpbmxpbmUgdm9pZCBIYXNoVGFi
bGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz46OnJlbW92ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soaXRlcmF0b3IgaXQpCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxL
ZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBp
bmxpbmVDYXBhY2l0eT46OnJlbW92ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soaXRlcmF0
b3IgaXQpCiAgICAgewogICAgICAgICBpZiAoaXQgPT0gZW5kKCkpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0xMDIwLDggKzEwMjAsOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmVtb3Zl
QW5kSW52YWxpZGF0ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soY29uc3RfY2FzdDxWYWx1
ZVR5cGUqPihpdC5tX2l0ZXJhdG9yLm1fcG9zaXRpb24pKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgot
ICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVtb3ZlV2l0aG91dEVudHJ5Q29uc2lzdGVuY3lD
aGVjayhjb25zdF9pdGVyYXRvciBpdCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CisgICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6cmVtb3ZlV2l0aG91
dEVudHJ5Q29uc2lzdGVuY3lDaGVjayhjb25zdF9pdGVyYXRvciBpdCkKICAgICB7CiAgICAgICAg
IGlmIChpdCA9PSBlbmQoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwMjksMjUgKzEwMjks
MjUgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJlbW92ZUFuZEludmFsaWRhdGVXaXRob3V0
RW50cnlDb25zaXN0ZW5jeUNoZWNrKGNvbnN0X2Nhc3Q8VmFsdWVUeXBlKj4oaXQubV9wb3NpdGlv
bikpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpyZW1v
dmUoY29uc3QgS2V5VHlwZSYga2V5KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlw
ZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4K
KyAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjpyZW1vdmUoY29uc3Qg
S2V5VHlwZSYga2V5KQogICAgIHsKICAgICAgICAgcmVtb3ZlKGZpbmQoa2V5KSk7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZUlm
KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGlu
ZUNhcGFjaXR5Pjo6cmVtb3ZlSWYoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fdGFibGVTaXplOyBpLS07KSB7Ci0gICAgICAgICAgICBp
ZiAoaXNFbXB0eU9yRGVsZXRlZEJ1Y2tldChtX3RhYmxlW2ldKSkKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gbV9zdG9yYWdlLnRhYmxlLnNpemU7IGktLTspIHsKKyAgICAgICAgICAgIGlmIChp
c0VtcHR5T3JEZWxldGVkQnVja2V0KG1fc3RvcmFnZS50YWJsZS50YWJsZVtpXSkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghZnVuY3Rv
cihtX3RhYmxlW2ldKSkKKyAgICAgICAgICAgIGlmICghZnVuY3RvcihtX3N0b3JhZ2UudGFibGUu
dGFibGVbaV0pKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBkZWxldGVCdWNrZXQobV90YWJsZVtpXSk7Ci0gICAgICAgICAgICArK21fZGVsZXRl
ZENvdW50OworICAgICAgICAgICAgZGVsZXRlQnVja2V0KG1fc3RvcmFnZS50YWJsZS50YWJsZVtp
XSk7CisgICAgICAgICAgICArK21fc3RvcmFnZS50YWJsZS5kZWxldGVkQ291bnQ7CiAgICAgICAg
ICAgICAtLW1fa2V5Q291bnQ7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xMDU3LDggKzEwNTcs
OCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVu
Y3koKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphbGxvY2F0ZVRh
YmxlKHVuc2lnbmVkIHNpemUpIC0+IFZhbHVlVHlwZSoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+CisgICAgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjphbGxvY2F0ZVRh
YmxlKHVuc2lnbmVkIHNpemUpIC0+IFZhbHVlVHlwZSoKICAgICB7CiAgICAgICAgIC8vIHdvdWxk
IHVzZSBhIHRlbXBsYXRlIG1lbWJlciBmdW5jdGlvbiB3aXRoIGV4cGxpY2l0IHNwZWNpYWxpemF0
aW9ucyBoZXJlLCBidXQKICAgICAgICAgLy8gZ2NjIGRvZXNuJ3QgYXBwZWFyIHRvIHN1cHBvcnQg
dGhhdApAQCAtMTA3MCw4ICsxMDcwLDggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6ZGVhbGxv
Y2F0ZVRhYmxlKFZhbHVlVHlwZSogdGFibGUsIHVuc2lnbmVkIHNpemUpCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6
ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6
ZGVhbGxvY2F0ZVRhYmxlKFZhbHVlVHlwZSogdGFibGUsIHVuc2lnbmVkIHNpemUpCiAgICAgewog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgICAg
ICBpZiAoIWlzRGVsZXRlZEJ1Y2tldCh0YWJsZVtpXSkpCkBAIC0xMDgwLDI3ICsxMDgwLDI3IEBA
IG5hbWVzcGFjZSBXVEYgewogICAgICAgICBmYXN0RnJlZSh0YWJsZSk7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cz4KLSAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6ZXhwYW5kKFZhbHVlVHlwZSogZW50cnkpIC0+IFZh
bHVlVHlwZSoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgYXV0byBIYXNo
VGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRy
YWl0cywgaW5saW5lQ2FwYWNpdHk+OjpleHBhbmQoVmFsdWVUeXBlKiBlbnRyeSkgLT4gVmFsdWVU
eXBlKgogICAgIHsKICAgICAgICAgdW5zaWduZWQgbmV3U2l6ZTsKLSAgICAgICAgaWYgKG1fdGFi
bGVTaXplID09IDApCisgICAgICAgIGlmICghbV9zdG9yYWdlLnRhYmxlLnNpemUpCiAgICAgICAg
ICAgICBuZXdTaXplID0gS2V5VHJhaXRzOjptaW5pbXVtVGFibGVTaXplOwogICAgICAgICBlbHNl
IGlmIChtdXN0UmVoYXNoSW5QbGFjZSgpKQotICAgICAgICAgICAgbmV3U2l6ZSA9IG1fdGFibGVT
aXplOworICAgICAgICAgICAgbmV3U2l6ZSA9IG1fc3RvcmFnZS50YWJsZS5zaXplOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBuZXdTaXplID0gbV90YWJsZVNpemUgKiAyOworICAgICAgICAg
ICAgbmV3U2l6ZSA9IG1fc3RvcmFnZS50YWJsZS5zaXplICogMjsKIAogICAgICAgICByZXR1cm4g
cmVoYXNoKG5ld1NpemUsIGVudHJ5KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGF1dG8gSGFz
aFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHM+OjpyZWhhc2godW5zaWduZWQgbmV3VGFibGVTaXplLCBWYWx1ZVR5cGUqIGVudHJ5KSAt
PiBWYWx1ZVR5cGUqCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFp
dHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIGF1dG8g
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6cmVoYXNoKHVuc2lnbmVkIG5ld1RhYmxlU2l6ZSwg
VmFsdWVUeXBlKiBlbnRyeSkgLT4gVmFsdWVUeXBlKgogICAgIHsKICAgICAgICAgaW50ZXJuYWxD
aGVja1RhYmxlQ29uc2lzdGVuY3lFeGNlcHRTaXplKCk7CiAKLSAgICAgICAgdW5zaWduZWQgb2xk
VGFibGVTaXplID0gbV90YWJsZVNpemU7Ci0gICAgICAgIFZhbHVlVHlwZSogb2xkVGFibGUgPSBt
X3RhYmxlOworICAgICAgICB1bnNpZ25lZCBvbGRUYWJsZVNpemUgPSBtX3N0b3JhZ2UudGFibGUu
c2l6ZTsKKyAgICAgICAgVmFsdWVUeXBlKiBvbGRUYWJsZSA9IG1fc3RvcmFnZS50YWJsZS50YWJs
ZTsKIAogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTCiAgICAgICAgIGlmIChvbGRUYWJsZVNpemUg
IT0gMCkKQEAgLTExMTIsOSArMTExMiw5IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAg
KyttX3N0YXRzLT5udW1SZWhhc2hlczsKICNlbmRpZgogCi0gICAgICAgIG1fdGFibGVTaXplID0g
bmV3VGFibGVTaXplOwotICAgICAgICBtX3RhYmxlU2l6ZU1hc2sgPSBuZXdUYWJsZVNpemUgLSAx
OwotICAgICAgICBtX3RhYmxlID0gYWxsb2NhdGVUYWJsZShuZXdUYWJsZVNpemUpOworICAgICAg
ICBtX3N0b3JhZ2UudGFibGUuc2l6ZSA9IG5ld1RhYmxlU2l6ZTsKKyAgICAgICAgbV9zdG9yYWdl
LnRhYmxlLnNpemVNYXNrID0gbmV3VGFibGVTaXplIC0gMTsKKyAgICAgICAgbV9zdG9yYWdlLnRh
YmxlLnRhYmxlID0gYWxsb2NhdGVUYWJsZShuZXdUYWJsZVNpemUpOwogCiAgICAgICAgIFZhbHVl
KiBuZXdFbnRyeSA9IG51bGxwdHI7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0g
b2xkVGFibGVTaXplOyArK2kpIHsKQEAgLTExMzAsNyArMTEzMCw3IEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgbV9kZWxldGVkQ291bnQgPSAw
OworICAgICAgICBtX3N0b3JhZ2UudGFibGUuZGVsZXRlZENvdW50ID0gMDsKIAogICAgICAgICBk
ZWFsbG9jYXRlVGFibGUob2xkVGFibGUsIG9sZFRhYmxlU2l6ZSk7CiAKQEAgLTExMzgsMjcgKzEx
MzgsMjQgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiBuZXdFbnRyeTsKICAgICB9
CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzPgotICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpjbGVhcigpCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6
ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6
Y2xlYXIoKQogICAgIHsKICAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwotICAgICAgICBp
ZiAoIW1fdGFibGUpCisgICAgICAgIGlmICghbV9zdG9yYWdlLnRhYmxlLnRhYmxlKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGRlYWxsb2NhdGVUYWJsZShtX3RhYmxlLCBtX3RhYmxl
U2l6ZSk7Ci0gICAgICAgIG1fdGFibGUgPSAwOwotICAgICAgICBtX3RhYmxlU2l6ZSA9IDA7Ci0g
ICAgICAgIG1fdGFibGVTaXplTWFzayA9IDA7CisgICAgICAgIGRlYWxsb2NhdGVUYWJsZShtX3N0
b3JhZ2UudGFibGUudGFibGUsIG1fc3RvcmFnZS50YWJsZS5zaXplKTsKKyAgICAgICAgbV9zdG9y
YWdlLnRhYmxlLnRhYmxlID0gbnVsbHB0cjsKKyAgICAgICAgbV9zdG9yYWdlLnRhYmxlLmRlbGV0
ZWRDb3VudCA9IDA7CisgICAgICAgIG1fc3RvcmFnZS50YWJsZS5zaXplID0gMDsKKyAgICAgICAg
bV9zdG9yYWdlLnRhYmxlLnNpemVNYXNrID0gMDsKICAgICAgICAgbV9rZXlDb3VudCA9IDA7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5
cGVuYW1lIEtleVRyYWl0cz4KLSAgICBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Okhhc2hUYWJsZShjb25zdCBIYXNoVGFi
bGUmIG90aGVyKQotICAgICAgICA6IG1fdGFibGUoMCkKLSAgICAgICAgLCBtX3RhYmxlU2l6ZSgw
KQotICAgICAgICAsIG1fdGFibGVTaXplTWFzaygwKQotICAgICAgICAsIG1fa2V5Q291bnQoMCkK
LSAgICAgICAgLCBtX2RlbGV0ZWRDb3VudCgwKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwg
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eT4KKyAgICBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjpIYXNoVGFibGUoY29uc3QgSGFz
aFRhYmxlJiBvdGhlcikKKyAgICAgICAgOiBtX2tleUNvdW50KDApCiAjaWYgQ0hFQ0tfSEFTSFRB
QkxFX0lURVJBVE9SUwogICAgICAgICAsIG1faXRlcmF0b3JzKDApCiAgICAgICAgICwgbV9tdXRl
eChzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6bXV0ZXg+KCkpCkBAIC0xMTc2LDI1ICsxMTczLDI1IEBA
IG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgYWRkKCppdCk7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0
cz4KLSAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6c3dhcChIYXNoVGFibGUmIG90aGVyKQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBF
eHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0
eT46OnN3YXAoSGFzaFRhYmxlJiBvdGhlcikKICAgICB7CiAgICAgICAgIGludmFsaWRhdGVJdGVy
YXRvcnMoKTsKICAgICAgICAgb3RoZXIuaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwogCi0gICAgICAg
IHN0ZDo6c3dhcChtX3RhYmxlLCBvdGhlci5tX3RhYmxlKTsKLSAgICAgICAgc3RkOjpzd2FwKG1f
dGFibGVTaXplLCBvdGhlci5tX3RhYmxlU2l6ZSk7Ci0gICAgICAgIHN0ZDo6c3dhcChtX3RhYmxl
U2l6ZU1hc2ssIG90aGVyLm1fdGFibGVTaXplTWFzayk7CisgICAgICAgIHN0ZDo6c3dhcChtX3N0
b3JhZ2UudGFibGUudGFibGUsIG90aGVyLm1fc3RvcmFnZS50YWJsZS50YWJsZSk7CisgICAgICAg
IHN0ZDo6c3dhcChtX3N0b3JhZ2UudGFibGUuc2l6ZSwgb3RoZXIubV9zdG9yYWdlLnRhYmxlLnNp
emUpOworICAgICAgICBzdGQ6OnN3YXAobV9zdG9yYWdlLnRhYmxlLnNpemVNYXNrLCBvdGhlci5t
X3N0b3JhZ2UudGFibGUuc2l6ZU1hc2spOwogICAgICAgICBzdGQ6OnN3YXAobV9rZXlDb3VudCwg
b3RoZXIubV9rZXlDb3VudCk7Ci0gICAgICAgIHN0ZDo6c3dhcChtX2RlbGV0ZWRDb3VudCwgb3Ro
ZXIubV9kZWxldGVkQ291bnQpOworICAgICAgICBzdGQ6OnN3YXAobV9zdG9yYWdlLnRhYmxlLmRl
bGV0ZWRDb3VudCwgb3RoZXIubV9zdG9yYWdlLnRhYmxlLmRlbGV0ZWRDb3VudCk7CiAKICNpZiBE
VU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUKICAgICAgICAgbV9zdGF0cy5zd2FwKG90aGVy
Lm1fc3RhdHMpOwogI2VuZGlmCiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICBhdXRvIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6b3BlcmF0b3I9KGNvbnN0IEhhc2hUYWJsZSYgb3RoZXIpIC0+IEhhc2hUYWJsZSYKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3Is
IHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJh
aXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2Fw
YWNpdHk+OjpvcGVyYXRvcj0oY29uc3QgSGFzaFRhYmxlJiBvdGhlcikgLT4gSGFzaFRhYmxlJgog
ICAgIHsKICAgICAgICAgLy8gRklYTUU6IEl0J3MgbGlrZWx5IHRoYXQgdGhpcyBjYW4gYmUgaW1w
cm92ZWQsIGZvciBzdGF0aWMgYW5hbHlzZXMgdGhhdCB1c2UKICAgICAgICAgLy8gSGFzaFNldHMu
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg0NTUKQEAgLTEyMDMs
OCArMTIwMCw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
RXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVu
YW1lIEtleVRyYWl0cz4KLSAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rv
ciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUoSGFzaFRhYmxl
JiYgb3RoZXIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMs
IHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIGlubGluZSBI
YXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjpIYXNoVGFibGUoSGFzaFRhYmxlJiYgb3RoZXIpCiAj
aWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUwogICAgICAgICA6IG1faXRlcmF0b3JzKG51bGxw
dHIpCiAgICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6bXV0ZXg+KCkpCkBA
IC0xMjEyLDE3ICsxMjA5LDE4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHsKICAgICAgICAgb3Ro
ZXIuaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwogCi0gICAgICAgIG1fdGFibGUgPSBvdGhlci5tX3Rh
YmxlOwotICAgICAgICBtX3RhYmxlU2l6ZSA9IG90aGVyLm1fdGFibGVTaXplOwotICAgICAgICBt
X3RhYmxlU2l6ZU1hc2sgPSBvdGhlci5tX3RhYmxlU2l6ZU1hc2s7CisgICAgICAgIG1fc3RvcmFn
ZS50YWJsZSA9IHtudWxscHRyLCAwLCAwLCAwfTsKKyAgICAgICAgbV9zdG9yYWdlLnRhYmxlLnRh
YmxlID0gb3RoZXIubV9zdG9yYWdlLnRhYmxlLnRhYmxlOworICAgICAgICBtX3N0b3JhZ2UudGFi
bGUuc2l6ZSA9IG90aGVyLm1fc3RvcmFnZS50YWJsZS5zaXplOworICAgICAgICBtX3N0b3JhZ2Uu
dGFibGUuc2l6ZU1hc2sgPSBvdGhlci5tX3N0b3JhZ2UudGFibGUuc2l6ZU1hc2s7CiAgICAgICAg
IG1fa2V5Q291bnQgPSBvdGhlci5tX2tleUNvdW50OwotICAgICAgICBtX2RlbGV0ZWRDb3VudCA9
IG90aGVyLm1fZGVsZXRlZENvdW50OworICAgICAgICBtX3N0b3JhZ2UudGFibGUuZGVsZXRlZENv
dW50ID0gb3RoZXIubV9zdG9yYWdlLnRhYmxlLmRlbGV0ZWRDb3VudDsKIAotICAgICAgICBvdGhl
ci5tX3RhYmxlID0gbnVsbHB0cjsKLSAgICAgICAgb3RoZXIubV90YWJsZVNpemUgPSAwOwotICAg
ICAgICBvdGhlci5tX3RhYmxlU2l6ZU1hc2sgPSAwOworICAgICAgICBvdGhlci5tX3N0b3JhZ2Uu
dGFibGUudGFibGUgPSBudWxscHRyOworICAgICAgICBvdGhlci5tX3N0b3JhZ2UudGFibGUuc2l6
ZSA9IDA7CisgICAgICAgIG90aGVyLm1fc3RvcmFnZS50YWJsZS5zaXplTWFzayA9IDA7CiAgICAg
ICAgIG90aGVyLm1fa2V5Q291bnQgPSAwOwotICAgICAgICBvdGhlci5tX2RlbGV0ZWRDb3VudCA9
IDA7CisgICAgICAgIG90aGVyLm1fc3RvcmFnZS50YWJsZS5kZWxldGVkQ291bnQgPSAwOwogCiAj
aWYgRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCiAgICAgICAgIG1fc3RhdHMgPSBXVEY6
Om1vdmUob3RoZXIubV9zdGF0cyk7CkBAIC0xMjMwLDggKzEyMjgsOCBAQCBuYW1lc3BhY2UgV1RG
IHsKICNlbmRpZgogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgaW5saW5lIGF1dG8gSGFzaFRhYmxl
PEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+
OjpvcGVyYXRvcj0oSGFzaFRhYmxlJiYgb3RoZXIpIC0+IEhhc2hUYWJsZSYKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBz
aXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgaW5saW5lIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNh
cGFjaXR5Pjo6b3BlcmF0b3I9KEhhc2hUYWJsZSYmIG90aGVyKSAtPiBIYXNoVGFibGUmCiAgICAg
ewogICAgICAgICBIYXNoVGFibGUgdGVtcCA9IFdURjo6bW92ZShvdGhlcik7CiAgICAgICAgIHN3
YXAodGVtcCk7CkBAIC0xMjQwLDI0ICsxMjM4LDI0IEBAIG5hbWVzcGFjZSBXVEYgewogCiAjaWYg
IUFTU0VSVF9ESVNBQkxFRAogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y2hlY2tU
YWJsZUNvbnNpc3RlbmN5KCkgY29uc3QKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjpjaGVja1RhYmxlQ29uc2lzdGVu
Y3koKSBjb25zdAogICAgIHsKICAgICAgICAgY2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6
ZSgpOwotICAgICAgICBBU1NFUlQoIW1fdGFibGUgfHwgIXNob3VsZEV4cGFuZCgpKTsKKyAgICAg
ICAgQVNTRVJUKCFtX3N0b3JhZ2UudGFibGUudGFibGUgfHwgIXNob3VsZEV4cGFuZCgpKTsKICAg
ICAgICAgQVNTRVJUKCFzaG91bGRTaHJpbmsoKSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICB2
b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPjo6Y2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIGNvbnN0Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFj
dG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtl
eVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGlu
ZUNhcGFjaXR5Pjo6Y2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIGNvbnN0CiAgICAg
ewotICAgICAgICBpZiAoIW1fdGFibGUpCisgICAgICAgIGlmICghbV9zdG9yYWdlLnRhYmxlLnRh
YmxlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHVuc2lnbmVkIGNvdW50ID0gMDsK
ICAgICAgICAgdW5zaWduZWQgZGVsZXRlZENvdW50ID0gMDsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBqID0gMDsgaiA8IG1fdGFibGVTaXplOyArK2opIHsKLSAgICAgICAgICAgIFZhbHVlVHlwZSog
ZW50cnkgPSBtX3RhYmxlICsgajsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IG1f
c3RvcmFnZS50YWJsZS5zaXplOyArK2opIHsKKyAgICAgICAgICAgIFZhbHVlVHlwZSogZW50cnkg
PSBtX3N0b3JhZ2UudGFibGUudGFibGUgKyBqOwogICAgICAgICAgICAgaWYgKGlzRW1wdHlCdWNr
ZXQoKmVudHJ5KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMTI3NCwxOCArMTI3
MiwxOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVChjb3Vu
dCA9PSBtX2tleUNvdW50KTsKLSAgICAgICAgQVNTRVJUKGRlbGV0ZWRDb3VudCA9PSBtX2RlbGV0
ZWRDb3VudCk7Ci0gICAgICAgIEFTU0VSVChtX3RhYmxlU2l6ZSA+PSBLZXlUcmFpdHM6Om1pbmlt
dW1UYWJsZVNpemUpOwotICAgICAgICBBU1NFUlQobV90YWJsZVNpemVNYXNrKTsKLSAgICAgICAg
QVNTRVJUKG1fdGFibGVTaXplID09IG1fdGFibGVTaXplTWFzayArIDEpOworICAgICAgICBBU1NF
UlQoZGVsZXRlZENvdW50ID09IG1fc3RvcmFnZS50YWJsZS5kZWxldGVkQ291bnQpOworICAgICAg
ICBBU1NFUlQobV9zdG9yYWdlLnRhYmxlLnNpemUgPj0gS2V5VHJhaXRzOjptaW5pbXVtVGFibGVT
aXplKTsKKyAgICAgICAgQVNTRVJUKG1fc3RvcmFnZS50YWJsZS5zaXplTWFzayk7CisgICAgICAg
IEFTU0VSVChtX3N0b3JhZ2UudGFibGUuc2l6ZSA9PSBtX3N0b3JhZ2UudGFibGUuc2l6ZU1hc2sg
KyAxKTsKICAgICB9CiAKICNlbmRpZiAvLyBBU1NFUlRfRElTQUJMRUQKIAogI2lmIENIRUNLX0hB
U0hUQUJMRV9JVEVSQVRPUlMKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9pZCBIYXNoVGFibGU8S2V5LCBW
YWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmludmFs
aWRhdGVJdGVyYXRvcnMoKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFs
dWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICB2
b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmludmFsaWRhdGVJdGVyYXRvcnMoKQogICAg
IHsKICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2soKm1fbXV0ZXgpOwog
ICAgICAgICBjb25zdF9pdGVyYXRvciogbmV4dDsKQEAgLTEyOTgsOSArMTI5Niw5IEBAIG5hbWVz
cGFjZSBXVEYgewogICAgICAgICBtX2l0ZXJhdG9ycyA9IDA7CiAgICAgfQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4K
LSAgICB2b2lkIGFkZEl0ZXJhdG9yKGNvbnN0IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiogdGFibGUsCi0gICAgICAgIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz4qIGl0KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eT4KKyAgICB2b2lkIGFkZEl0ZXJhdG9yKGNvbnN0IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRy
YWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4q
IHRhYmxlLAorICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Piog
aXQpCiAgICAgewogICAgICAgICBpdC0+bV90YWJsZSA9IHRhYmxlOwogICAgICAgICBpdC0+bV9w
cmV2aW91cyA9IDA7CkBAIC0xMzIwLDggKzEzMTgsOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgfQogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9pZCByZW1vdmVJdGVyYXRvcihIYXNoVGFi
bGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBLZXlUcmFpdHM+KiBpdCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+Cisg
ICAgdm9pZCByZW1vdmVJdGVyYXRvcihIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFj
aXR5PiogaXQpCiAgICAgewogICAgICAgICAvLyBEZWxldGUgaXRlcmF0b3IgZnJvbSBkb3VibHkt
bGlua2VkIGxpc3Qgb2YgaXRlcmF0b3JzLgogICAgICAgICBpZiAoIWl0LT5tX3RhYmxlKSB7Cklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL0xpc3RIYXNoU2V0LmgJKHJldmlzaW9uIDE4MjA4OSkKKysrIFNvdXJjZS9XVEYvd3Rm
L0xpc3RIYXNoU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCwgMjAxMSwgMjAxMiwgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEJlbmphbWluIFBvdWxhaW4gPGlraXBv
dUBnbWFpbC5jb20+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMzgsMTcgKzM4LDE3IEBAIG5hbWVzcGFjZSBX
VEYgewogLy8gZ3VhcmFudGVlZCBzYWZlIGFnYWluc3QgbXV0YXRpb24gb2YgdGhlIExpc3RIYXNo
U2V0LCBleGNlcHQgZm9yCiAvLyByZW1vdmFsIG9mIHRoZSBpdGVtIGN1cnJlbnRseSBwb2ludGVk
IHRvIGJ5IGEgZ2l2ZW4gaXRlcmF0b3IuCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zPiBjbGFzcyBMaXN0SGFzaFNldDsKK3RlbXBsYXRlPHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGNs
YXNzIExpc3RIYXNoU2V0OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUg
SGFzaEFyZz4gY2xhc3MgTGlzdEhhc2hTZXRJdGVyYXRvcjsKLXRlbXBsYXRlPHR5cGVuYW1lIFZh
bHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnPiBjbGFzcyBMaXN0SGFzaFNldENvbnN0SXRlcmF0b3I7
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZywgc2l6ZV90IGlu
bGluZUNhcGFjaXR5PiBjbGFzcyBMaXN0SGFzaFNldEl0ZXJhdG9yOwordGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gY2xh
c3MgTGlzdEhhc2hTZXRDb25zdEl0ZXJhdG9yOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFy
Zz4gc3RydWN0IExpc3RIYXNoU2V0Tm9kZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSGFzaEFyZz4g
c3RydWN0IExpc3RIYXNoU2V0Tm9kZUhhc2hGdW5jdGlvbnM7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBI
YXNoQXJnPiBzdHJ1Y3QgTGlzdEhhc2hTZXRUcmFuc2xhdG9yOwogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZyA9IHR5cGVuYW1lIERlZmF1bHRIYXNoPFZhbHVl
QXJnPjo6SGFzaD4gY2xhc3MgTGlzdEhhc2hTZXQgewordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVB
cmcsIHR5cGVuYW1lIEhhc2hBcmcgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxWYWx1ZUFyZz46Okhh
c2gsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSA9IDA+IGNsYXNzIExpc3RIYXNoU2V0IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBMaXN0SGFzaFNl
dE5vZGU8VmFsdWVBcmc+IE5vZGU7CkBAIC02Miw5ICs2Miw5IEBAIHByaXZhdGU6CiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBWYWx1ZUFyZyBWYWx1ZVR5cGU7CiAKLSAgICB0eXBlZGVmIExpc3RIYXNo
U2V0SXRlcmF0b3I8VmFsdWVUeXBlLCBIYXNoQXJnPiBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIExp
c3RIYXNoU2V0Q29uc3RJdGVyYXRvcjxWYWx1ZVR5cGUsIEhhc2hBcmc+IGNvbnN0X2l0ZXJhdG9y
OwotICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNldENvbnN0SXRlcmF0b3I8VmFsdWVUeXBlLCBI
YXNoQXJnPjsKKyAgICB0eXBlZGVmIExpc3RIYXNoU2V0SXRlcmF0b3I8VmFsdWVUeXBlLCBIYXNo
QXJnLCBpbmxpbmVDYXBhY2l0eT4gaXRlcmF0b3I7CisgICAgdHlwZWRlZiBMaXN0SGFzaFNldENv
bnN0SXRlcmF0b3I8VmFsdWVUeXBlLCBIYXNoQXJnLCBpbmxpbmVDYXBhY2l0eT4gY29uc3RfaXRl
cmF0b3I7CisgICAgZnJpZW5kIGNsYXNzIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcjxWYWx1ZVR5
cGUsIEhhc2hBcmcsIGlubGluZUNhcGFjaXR5PjsKIAogICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNl
X2l0ZXJhdG9yPGl0ZXJhdG9yPiByZXZlcnNlX2l0ZXJhdG9yOwogICAgIHR5cGVkZWYgc3RkOjpy
ZXZlcnNlX2l0ZXJhdG9yPGNvbnN0X2l0ZXJhdG9yPiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwpA
QCAtMTUwLDcgKzE1MCw3IEBAIHByaXZhdGU6CiAgICAgaXRlcmF0b3IgbWFrZUl0ZXJhdG9yKE5v
ZGUqKTsKICAgICBjb25zdF9pdGVyYXRvciBtYWtlQ29uc3RJdGVyYXRvcihOb2RlKikgY29uc3Q7
CiAKLSAgICBIYXNoVGFibGU8Tm9kZSosIE5vZGUqLCBJZGVudGl0eUV4dHJhY3RvciwgTm9kZUhh
c2gsIE5vZGVUcmFpdHMsIE5vZGVUcmFpdHM+IG1faW1wbDsKKyAgICBIYXNoVGFibGU8Tm9kZSos
IE5vZGUqLCBJZGVudGl0eUV4dHJhY3RvciwgTm9kZUhhc2gsIE5vZGVUcmFpdHMsIE5vZGVUcmFp
dHMsIGlubGluZUNhcGFjaXR5PiBtX2ltcGw7CiAgICAgTm9kZSogbV9oZWFkOwogICAgIE5vZGUq
IG1fdGFpbDsKIH07CkBAIC0xNzcsMTUgKzE3NywxNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNo
QXJnPiBzdHJ1Y3QgTGlzdEhhCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJn
LCB0eXBlbmFtZSBIYXNoQXJnPiBjbGFzcyBMaXN0SGFzaFNldEl0ZXJhdG9yIHsKK3RlbXBsYXRl
PHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCBzaXplX3QgaW5saW5lQ2FwYWNp
dHk+IGNsYXNzIExpc3RIYXNoU2V0SXRlcmF0b3IgewogcHJpdmF0ZToKLSAgICB0eXBlZGVmIExp
c3RIYXNoU2V0PFZhbHVlQXJnLCBIYXNoQXJnPiBMaXN0SGFzaFNldFR5cGU7Ci0gICAgdHlwZWRl
ZiBMaXN0SGFzaFNldEl0ZXJhdG9yPFZhbHVlQXJnLCBIYXNoQXJnPiBpdGVyYXRvcjsKLSAgICB0
eXBlZGVmIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcjxWYWx1ZUFyZywgSGFzaEFyZz4gY29uc3Rf
aXRlcmF0b3I7CisgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxWYWx1ZUFyZywgSGFzaEFyZywgaW5s
aW5lQ2FwYWNpdHk+IExpc3RIYXNoU2V0VHlwZTsKKyAgICB0eXBlZGVmIExpc3RIYXNoU2V0SXRl
cmF0b3I8VmFsdWVBcmcsIEhhc2hBcmcsIGlubGluZUNhcGFjaXR5PiBpdGVyYXRvcjsKKyAgICB0
eXBlZGVmIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcjxWYWx1ZUFyZywgSGFzaEFyZywgaW5saW5l
Q2FwYWNpdHk+IGNvbnN0X2l0ZXJhdG9yOwogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXROb2RlPFZh
bHVlQXJnPiBOb2RlOwogICAgIHR5cGVkZWYgVmFsdWVBcmcgVmFsdWVUeXBlOwogCi0gICAgZnJp
ZW5kIGNsYXNzIExpc3RIYXNoU2V0PFZhbHVlQXJnLCBIYXNoQXJnPjsKKyAgICBmcmllbmQgY2xh
c3MgTGlzdEhhc2hTZXQ8VmFsdWVBcmcsIEhhc2hBcmcsIGlubGluZUNhcGFjaXR5PjsKIAogICAg
IExpc3RIYXNoU2V0SXRlcmF0b3IoY29uc3QgTGlzdEhhc2hTZXRUeXBlKiBzZXQsIE5vZGUqIHBv
c2l0aW9uKSA6IG1faXRlcmF0b3Ioc2V0LCBwb3NpdGlvbikgeyB9CiAKQEAgLTIyNCwxNiArMjI0
LDE2IEBAIHByaXZhdGU6CiAgICAgY29uc3RfaXRlcmF0b3IgbV9pdGVyYXRvcjsKIH07CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnPiBjbGFzcyBMaXN0SGFz
aFNldENvbnN0SXRlcmF0b3IgewordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1l
IEhhc2hBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gY2xhc3MgTGlzdEhhc2hTZXRDb25zdEl0
ZXJhdG9yIHsKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldDxWYWx1ZUFyZywgSGFz
aEFyZz4gTGlzdEhhc2hTZXRUeXBlOwotICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRJdGVyYXRvcjxW
YWx1ZUFyZywgSGFzaEFyZz4gaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldENvbnN0
SXRlcmF0b3I8VmFsdWVBcmcsIEhhc2hBcmc+IGNvbnN0X2l0ZXJhdG9yOworICAgIHR5cGVkZWYg
TGlzdEhhc2hTZXQ8VmFsdWVBcmcsIEhhc2hBcmcsIGlubGluZUNhcGFjaXR5PiBMaXN0SGFzaFNl
dFR5cGU7CisgICAgdHlwZWRlZiBMaXN0SGFzaFNldEl0ZXJhdG9yPFZhbHVlQXJnLCBIYXNoQXJn
LCBpbmxpbmVDYXBhY2l0eT4gaXRlcmF0b3I7CisgICAgdHlwZWRlZiBMaXN0SGFzaFNldENvbnN0
SXRlcmF0b3I8VmFsdWVBcmcsIEhhc2hBcmcsIGlubGluZUNhcGFjaXR5PiBjb25zdF9pdGVyYXRv
cjsKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0Tm9kZTxWYWx1ZUFyZz4gTm9kZTsKICAgICB0eXBl
ZGVmIFZhbHVlQXJnIFZhbHVlVHlwZTsKIAotICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNldDxW
YWx1ZUFyZywgSGFzaEFyZz47Ci0gICAgZnJpZW5kIGNsYXNzIExpc3RIYXNoU2V0SXRlcmF0b3I8
VmFsdWVBcmcsIEhhc2hBcmc+OworICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNldDxWYWx1ZUFy
ZywgSGFzaEFyZywgaW5saW5lQ2FwYWNpdHk+OworICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNl
dEl0ZXJhdG9yPFZhbHVlQXJnLCBIYXNoQXJnLCBpbmxpbmVDYXBhY2l0eT47CiAKICAgICBMaXN0
SGFzaFNldENvbnN0SXRlcmF0b3IoY29uc3QgTGlzdEhhc2hTZXRUeXBlKiBzZXQsIE5vZGUqIHBv
c2l0aW9uKQogICAgICAgICA6IG1fc2V0KHNldCkKQEAgLTMwOCwxNSArMzA4LDE1IEBAIHN0cnVj
dCBMaXN0SGFzaFNldFRyYW5zbGF0b3IgewogICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgTGlzdEhhc2hTZXQ8VCwgVT46Okxpc3RIYXNoU2V0KCkK
K3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIExpc3RI
YXNoU2V0PFQsIFUsIFY+OjpMaXN0SGFzaFNldCgpCiAgICAgOiBtX2hlYWQoMCkKICAgICAsIG1f
dGFpbCgwKQogewogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5l
IExpc3RIYXNoU2V0PFQsIFU+OjpMaXN0SGFzaFNldChjb25zdCBMaXN0SGFzaFNldCYgb3RoZXIp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBMaXN0
SGFzaFNldDxULCBVLCBWPjo6TGlzdEhhc2hTZXQoY29uc3QgTGlzdEhhc2hTZXQmIG90aGVyKQog
ICAgIDogbV9oZWFkKDApCiAgICAgLCBtX3RhaWwoMCkKIHsKQEAgLTMyNCw2MSArMzI0LDYxIEBA
IGlubGluZSBMaXN0SGFzaFNldDxULCBVPjo6TGlzdEhhc2hTZXQoY28KICAgICAgICAgYWRkKCpp
dCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgTGlzdEhh
c2hTZXQ8VCwgVT4mIExpc3RIYXNoU2V0PFQsIFU+OjpvcGVyYXRvcj0oY29uc3QgTGlzdEhhc2hT
ZXQmIG90aGVyKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+Citp
bmxpbmUgTGlzdEhhc2hTZXQ8VCwgVSwgVj4mIExpc3RIYXNoU2V0PFQsIFUsIFY+OjpvcGVyYXRv
cj0oY29uc3QgTGlzdEhhc2hTZXQmIG90aGVyKQogewogICAgIExpc3RIYXNoU2V0IHRtcChvdGhl
cik7CiAgICAgc3dhcCh0bXApOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSB2b2lkIExpc3RIYXNoU2V0PFQsIFU+Ojpzd2Fw
KExpc3RIYXNoU2V0JiBvdGhlcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNp
emVfdCBWPgoraW5saW5lIHZvaWQgTGlzdEhhc2hTZXQ8VCwgVSwgVj46OnN3YXAoTGlzdEhhc2hT
ZXQmIG90aGVyKQogewogICAgIG1faW1wbC5zd2FwKG90aGVyLm1faW1wbCk7CiAgICAgc3RkOjpz
d2FwKG1faGVhZCwgb3RoZXIubV9oZWFkKTsKICAgICBzdGQ6OnN3YXAobV90YWlsLCBvdGhlci5t
X3RhaWwpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIExp
c3RIYXNoU2V0PFQsIFU+Ojp+TGlzdEhhc2hTZXQoKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUgTGlzdEhhc2hTZXQ8VCwgVSwgVj46On5MaXN0SGFz
aFNldCgpCiB7CiAgICAgZGVsZXRlQWxsTm9kZXMoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4KLWlubGluZSB1bnNpZ25lZCBMaXN0SGFzaFNldDxULCBVPjo6c2l6ZSgp
IGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGlu
ZSB1bnNpZ25lZCBMaXN0SGFzaFNldDxULCBVLCBWPjo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1faW1wbC5zaXplKCk7IAogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PgotaW5saW5lIHVuc2lnbmVkIExpc3RIYXNoU2V0PFQsIFU+OjpjYXBhY2l0eSgpIGNvbnN0Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSB1bnNpZ25l
ZCBMaXN0SGFzaFNldDxULCBVLCBWPjo6Y2FwYWNpdHkoKSBjb25zdAogewogICAgIHJldHVybiBt
X2ltcGwuY2FwYWNpdHkoKTsgCiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
Ci1pbmxpbmUgYm9vbCBMaXN0SGFzaFNldDxULCBVPjo6aXNFbXB0eSgpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBib29sIExpc3RIYXNo
U2V0PFQsIFUsIFY+Ojppc0VtcHR5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbXBsLmlzRW1w
dHkoKTsgCiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgVCYg
TGlzdEhhc2hTZXQ8VCwgVT46OmZpcnN0KCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHNpemVfdCBWPgoraW5saW5lIFQmIExpc3RIYXNoU2V0PFQsIFUsIFY+OjpmaXJzdCgpCiB7
CiAgICAgQVNTRVJUKCFpc0VtcHR5KCkpOwogICAgIHJldHVybiBtX2hlYWQtPm1fdmFsdWU7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgdm9pZCBMaXN0SGFz
aFNldDxULCBVPjo6cmVtb3ZlRmlyc3QoKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgc2l6ZV90IFY+CitpbmxpbmUgdm9pZCBMaXN0SGFzaFNldDxULCBVLCBWPjo6cmVtb3ZlRmly
c3QoKQogewogICAgIHRha2VGaXJzdCgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPgotaW5saW5lIFQgTGlzdEhhc2hTZXQ8VCwgVT46OnRha2VGaXJzdCgpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBUIExpc3RIYXNoU2V0
PFQsIFUsIFY+Ojp0YWtlRmlyc3QoKQogewogICAgIEFTU0VSVCghaXNFbXB0eSgpKTsKICAgICBh
dXRvIGl0ID0gbV9pbXBsLmZpbmQobV9oZWFkKTsKQEAgLTM5MCwzNSArMzkwLDM1IEBAIGlubGlu
ZSBUIExpc3RIYXNoU2V0PFQsIFU+Ojp0YWtlRmlyc3QoKQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgY29uc3QgVCYgTGlz
dEhhc2hTZXQ8VCwgVT46OmZpcnN0KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHNpemVfdCBWPgoraW5saW5lIGNvbnN0IFQmIExpc3RIYXNoU2V0PFQsIFUsIFY+Ojpm
aXJzdCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFpc0VtcHR5KCkpOwogICAgIHJldHVybiBtX2hl
YWQtPm1fdmFsdWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxp
bmUgVCYgTGlzdEhhc2hTZXQ8VCwgVT46Omxhc3QoKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUgVCYgTGlzdEhhc2hTZXQ8VCwgVSwgVj46Omxhc3Qo
KQogewogICAgIEFTU0VSVCghaXNFbXB0eSgpKTsKICAgICByZXR1cm4gbV90YWlsLT5tX3ZhbHVl
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIGNvbnN0IFQm
IExpc3RIYXNoU2V0PFQsIFU+OjpsYXN0KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIGNvbnN0IFQmIExpc3RIYXNoU2V0PFQsIFUsIFY+
OjpsYXN0KCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIG1f
dGFpbC0+bV92YWx1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlu
bGluZSB2b2lkIExpc3RIYXNoU2V0PFQsIFU+OjpyZW1vdmVMYXN0KCkKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIHZvaWQgTGlzdEhhc2hTZXQ8VCwg
VSwgVj46OnJlbW92ZUxhc3QoKQogewogICAgIHRha2VMYXN0KCk7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgVCBMaXN0SGFzaFNldDxULCBVPjo6dGFrZUxh
c3QoKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUg
VCBMaXN0SGFzaFNldDxULCBVLCBWPjo6dGFrZUxhc3QoKQogewogICAgIEFTU0VSVCghaXNFbXB0
eSgpKTsKICAgICBhdXRvIGl0ID0gbV9pbXBsLmZpbmQobV90YWlsKTsKQEAgLTQzMCw4ICs0MzAs
OCBAQCBpbmxpbmUgVCBMaXN0SGFzaFNldDxULCBVPjo6dGFrZUxhc3QoKQogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgYXV0
byBMaXN0SGFzaFNldDxULCBVPjo6ZmluZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBpdGVy
YXRvcgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUg
YXV0byBMaXN0SGFzaFNldDxULCBVLCBWPjo6ZmluZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAt
PiBpdGVyYXRvcgogewogICAgIGF1dG8gaXQgPSBtX2ltcGwudGVtcGxhdGUgZmluZDxCYXNlVHJh
bnNsYXRvcj4odmFsdWUpOwogICAgIGlmIChpdCA9PSBtX2ltcGwuZW5kKCkpCkBAIC00MzksOCAr
NDM5LDggQEAgaW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46OmZpbmQoY29ucwogICAgIHJl
dHVybiBtYWtlSXRlcmF0b3IoKml0KTsgCiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+Ci1pbmxpbmUgYXV0byBMaXN0SGFzaFNldDxULCBVPjo6ZmluZChjb25zdCBWYWx1ZVR5
cGUmIHZhbHVlKSBjb25zdCAtPiBjb25zdF9pdGVyYXRvcgordGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUgYXV0byBMaXN0SGFzaFNldDxULCBVLCBWPjo6
ZmluZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdCAtPiBjb25zdF9pdGVyYXRvcgogewog
ICAgIGF1dG8gaXQgPSBtX2ltcGwudGVtcGxhdGUgZmluZDxCYXNlVHJhbnNsYXRvcj4odmFsdWUp
OwogICAgIGlmIChpdCA9PSBtX2ltcGwuZW5kKCkpCkBAIC00NTQsOSArNDU0LDkgQEAgc3RydWN0
IExpc3RIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXIgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFQmIGEsIGNvbnN0IFUmIGIpIHsg
cmV0dXJuIFRyYW5zbGF0b3I6OmVxdWFsKGEtPm1fdmFsdWUsIGIpOyB9CiB9OwogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFU+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1
ZVR5cGUsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgSGFzaFRyYW5zbGF0b3I+Ci1pbmxpbmUgYXV0byBMaXN0SGFzaFNldDxWYWx1ZVR5cGUsIFU+
OjpmaW5kKGNvbnN0IFQmIHZhbHVlKSAtPiBpdGVyYXRvcgoraW5saW5lIGF1dG8gTGlzdEhhc2hT
ZXQ8VmFsdWVUeXBlLCBVLCBWPjo6ZmluZChjb25zdCBUJiB2YWx1ZSkgLT4gaXRlcmF0b3IKIHsK
ICAgICBhdXRvIGl0ID0gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8TGlzdEhhc2hTZXRUcmFuc2xhdG9y
QWRhcHRlcjxIYXNoVHJhbnNsYXRvcj4+KHZhbHVlKTsKICAgICBpZiAoaXQgPT0gbV9pbXBsLmVu
ZCgpKQpAQCAtNDY0LDkgKzQ2NCw5IEBAIGlubGluZSBhdXRvIExpc3RIYXNoU2V0PFZhbHVlVHlw
ZSwgVT46OmYKICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yKCppdCk7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgVT4KK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlw
ZSwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBI
YXNoVHJhbnNsYXRvcj4KLWlubGluZSBhdXRvIExpc3RIYXNoU2V0PFZhbHVlVHlwZSwgVT46OmZp
bmQoY29uc3QgVCYgdmFsdWUpIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yCitpbmxpbmUgYXV0byBM
aXN0SGFzaFNldDxWYWx1ZVR5cGUsIFUsIFY+OjpmaW5kKGNvbnN0IFQmIHZhbHVlKSBjb25zdCAt
PiBjb25zdF9pdGVyYXRvcgogewogICAgIGF1dG8gaXQgPSBtX2ltcGwudGVtcGxhdGUgZmluZDxM
aXN0SGFzaFNldFRyYW5zbGF0b3JBZGFwdGVyPEhhc2hUcmFuc2xhdG9yPj4odmFsdWUpOwogICAg
IGlmIChpdCA9PSBtX2ltcGwuZW5kKCkpCkBAIC00NzQsMjEgKzQ3NCwyMSBAQCBpbmxpbmUgYXV0
byBMaXN0SGFzaFNldDxWYWx1ZVR5cGUsIFU+OjpmCiAgICAgcmV0dXJuIG1ha2VDb25zdEl0ZXJh
dG9yKCppdCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgVT4K
K3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KLWlubGluZSBib29sIExp
c3RIYXNoU2V0PFZhbHVlVHlwZSwgVT46OmNvbnRhaW5zKGNvbnN0IFQmIHZhbHVlKSBjb25zdAor
aW5saW5lIGJvb2wgTGlzdEhhc2hTZXQ8VmFsdWVUeXBlLCBVLCBWPjo6Y29udGFpbnMoY29uc3Qg
VCYgdmFsdWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBjb250YWluczxM
aXN0SGFzaFNldFRyYW5zbGF0b3JBZGFwdGVyPEhhc2hUcmFuc2xhdG9yPj4odmFsdWUpOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIGJvb2wgTGlzdEhhc2hT
ZXQ8VCwgVT46OmNvbnRhaW5zKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBib29sIExpc3RIYXNo
U2V0PFQsIFUsIFY+Ojpjb250YWlucyhjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdAogewog
ICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgY29udGFpbnM8QmFzZVRyYW5zbGF0b3I+KHZhbHVl
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWF1dG8gTGlzdEhhc2hT
ZXQ8VCwgVT46OmFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBBZGRSZXN1bHQKK3RlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgorYXV0byBMaXN0SGFzaFNldDxU
LCBVLCBWPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIC0+IEFkZFJlc3VsdAogewogICAg
IGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4odmFsdWUs
IG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKQEAgLTQ5Niw4ICs0OTYsOCBA
QCBhdXRvIExpc3RIYXNoU2V0PFQsIFU+OjphZGQoY29uc3QgVmFsdWVUCiAgICAgcmV0dXJuIEFk
ZFJlc3VsdChtYWtlSXRlcmF0b3IoKnJlc3VsdC5pdGVyYXRvciksIHJlc3VsdC5pc05ld0VudHJ5
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWF1dG8gTGlzdEhhc2hT
ZXQ8VCwgVT46OmFkZChWYWx1ZVR5cGUmJiB2YWx1ZSkgLT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2F1dG8gTGlzdEhhc2hTZXQ8VCwgVSwg
Vj46OmFkZChWYWx1ZVR5cGUmJiB2YWx1ZSkgLT4gQWRkUmVzdWx0CiB7CiAgICAgYXV0byByZXN1
bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VUcmFuc2xhdG9yPihXVEY6Om1vdmUodmFsdWUp
LCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCkBAIC01MDUsOCArNTA1LDgg
QEAgYXV0byBMaXN0SGFzaFNldDxULCBVPjo6YWRkKFZhbHVlVHlwZSYmIAogICAgIHJldHVybiBB
ZGRSZXN1bHQobWFrZUl0ZXJhdG9yKCpyZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRy
eSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1hdXRvIExpc3RIYXNo
U2V0PFQsIFU+OjphcHBlbmRPck1vdmVUb0xhc3QoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4g
QWRkUmVzdWx0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2F1
dG8gTGlzdEhhc2hTZXQ8VCwgVSwgVj46OmFwcGVuZE9yTW92ZVRvTGFzdChjb25zdCBWYWx1ZVR5
cGUmIHZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1faW1wbC50ZW1w
bGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KHZhbHVlLCBudWxscHRyKTsKICAgICBOb2RlKiBub2Rl
ID0gKnJlc3VsdC5pdGVyYXRvcjsKQEAgLTUxNyw4ICs1MTcsOCBAQCBhdXRvIExpc3RIYXNoU2V0
PFQsIFU+OjphcHBlbmRPck1vdmVUb0xhCiAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlSXRlcmF0
b3IoKnJlc3VsdC5pdGVyYXRvciksIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46OmFwcGVuZE9y
TW92ZVRvTGFzdChWYWx1ZVR5cGUmJiB2YWx1ZSkgLT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2F1dG8gTGlzdEhhc2hTZXQ8VCwgVSwgVj46
OmFwcGVuZE9yTW92ZVRvTGFzdChWYWx1ZVR5cGUmJiB2YWx1ZSkgLT4gQWRkUmVzdWx0CiB7CiAg
ICAgYXV0byByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VUcmFuc2xhdG9yPihXVEY6
Om1vdmUodmFsdWUpLCBudWxscHRyKTsKICAgICBOb2RlKiBub2RlID0gKnJlc3VsdC5pdGVyYXRv
cjsKQEAgLTUyOSw4ICs1MjksOCBAQCBhdXRvIExpc3RIYXNoU2V0PFQsIFU+OjphcHBlbmRPck1v
dmVUb0xhCiAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlSXRlcmF0b3IoKnJlc3VsdC5pdGVyYXRv
ciksIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KLWF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46OnByZXBlbmRPck1vdmVUb0ZpcnN0KGNvbnN0
IFZhbHVlVHlwZSYgdmFsdWUpIC0+IEFkZFJlc3VsdAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgc2l6ZV90IFY+CithdXRvIExpc3RIYXNoU2V0PFQsIFUsIFY+OjpwcmVwZW5kT3JN
b3ZlVG9GaXJzdChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKICAgICBh
dXRvIHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KHZhbHVlLCBu
dWxscHRyKTsKICAgICBOb2RlKiBub2RlID0gKnJlc3VsdC5pdGVyYXRvcjsKQEAgLTU0MSw4ICs1
NDEsOCBAQCBhdXRvIExpc3RIYXNoU2V0PFQsIFU+OjpwcmVwZW5kT3JNb3ZlVG9GCiAgICAgcmV0
dXJuIEFkZFJlc3VsdChtYWtlSXRlcmF0b3IoKnJlc3VsdC5pdGVyYXRvciksIHJlc3VsdC5pc05l
d0VudHJ5KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWF1dG8gTGlz
dEhhc2hTZXQ8VCwgVT46OnByZXBlbmRPck1vdmVUb0ZpcnN0KFZhbHVlVHlwZSYmIHZhbHVlKSAt
PiBBZGRSZXN1bHQKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgor
YXV0byBMaXN0SGFzaFNldDxULCBVLCBWPjo6cHJlcGVuZE9yTW92ZVRvRmlyc3QoVmFsdWVUeXBl
JiYgdmFsdWUpIC0+IEFkZFJlc3VsdAogewogICAgIGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBs
YXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4oV1RGOjptb3ZlKHZhbHVlKSwgbnVsbHB0cik7CiAgICAg
Tm9kZSogbm9kZSA9ICpyZXN1bHQuaXRlcmF0b3I7CkBAIC01NTMsMjAgKzU1MywyMCBAQCBhdXRv
IExpc3RIYXNoU2V0PFQsIFU+OjpwcmVwZW5kT3JNb3ZlVG9GCiAgICAgcmV0dXJuIEFkZFJlc3Vs
dChtYWtlSXRlcmF0b3IoKnJlc3VsdC5pdGVyYXRvciksIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWF1dG8gTGlzdEhhc2hTZXQ8VCwg
VT46Omluc2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUmIGJlZm9yZVZhbHVlLCBjb25zdCBWYWx1
ZVR5cGUmIG5ld1ZhbHVlKSAtPiBBZGRSZXN1bHQKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHNpemVfdCBWPgorYXV0byBMaXN0SGFzaFNldDxULCBVLCBWPjo6aW5zZXJ0QmVmb3Jl
KGNvbnN0IFZhbHVlVHlwZSYgYmVmb3JlVmFsdWUsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFsdWUp
IC0+IEFkZFJlc3VsdAogewogICAgIHJldHVybiBpbnNlcnRCZWZvcmUoZmluZChiZWZvcmVWYWx1
ZSksIG5ld1ZhbHVlKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWF1
dG8gTGlzdEhhc2hTZXQ8VCwgVT46Omluc2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUmIGJlZm9y
ZVZhbHVlLCBWYWx1ZVR5cGUmJiBuZXdWYWx1ZSkgLT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2F1dG8gTGlzdEhhc2hTZXQ8VCwgVSwgVj46
Omluc2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUmIGJlZm9yZVZhbHVlLCBWYWx1ZVR5cGUmJiBu
ZXdWYWx1ZSkgLT4gQWRkUmVzdWx0CiB7CiAgICAgcmV0dXJuIGluc2VydEJlZm9yZShmaW5kKGJl
Zm9yZVZhbHVlKSwgV1RGOjptb3ZlKG5ld1ZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+Ci1hdXRvIExpc3RIYXNoU2V0PFQsIFU+OjppbnNlcnRCZWZvcmUoaXRl
cmF0b3IgaXQsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFsdWUpIC0+IEFkZFJlc3VsdAordGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CithdXRvIExpc3RIYXNoU2V0PFQs
IFUsIFY+OjppbnNlcnRCZWZvcmUoaXRlcmF0b3IgaXQsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFs
dWUpIC0+IEFkZFJlc3VsdAogewogICAgIGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFk
ZDxCYXNlVHJhbnNsYXRvcj4obmV3VmFsdWUsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNO
ZXdFbnRyeSkKQEAgLTU3NCw4ICs1NzQsOCBAQCBhdXRvIExpc3RIYXNoU2V0PFQsIFU+OjppbnNl
cnRCZWZvcmUoaXRlCiAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlSXRlcmF0b3IoKnJlc3VsdC5p
dGVyYXRvciksIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4KLWF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46Omluc2VydEJlZm9yZShpdGVyYXRv
ciBpdCwgVmFsdWVUeXBlJiYgbmV3VmFsdWUpIC0+IEFkZFJlc3VsdAordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CithdXRvIExpc3RIYXNoU2V0PFQsIFUsIFY+Ojpp
bnNlcnRCZWZvcmUoaXRlcmF0b3IgaXQsIFZhbHVlVHlwZSYmIG5ld1ZhbHVlKSAtPiBBZGRSZXN1
bHQKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0
b3I+KFdURjo6bW92ZShuZXdWYWx1ZSksIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdF
bnRyeSkKQEAgLTU4Myw4ICs1ODMsOCBAQCBhdXRvIExpc3RIYXNoU2V0PFQsIFU+OjppbnNlcnRC
ZWZvcmUoaXRlCiAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlSXRlcmF0b3IoKnJlc3VsdC5pdGVy
YXRvciksIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KLWlubGluZSBib29sIExpc3RIYXNoU2V0PFQsIFU+OjpyZW1vdmUoaXRlcmF0b3Ig
aXQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBi
b29sIExpc3RIYXNoU2V0PFQsIFUsIFY+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCiB7CiAgICAgaWYg
KGl0ID09IGVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01OTMsMTQgKzU5MywxNCBA
QCBpbmxpbmUgYm9vbCBMaXN0SGFzaFNldDxULCBVPjo6cmVtb3ZlKGl0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgYm9vbCBM
aXN0SGFzaFNldDxULCBVPjo6cmVtb3ZlKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBib29sIExpc3RIYXNo
U2V0PFQsIFUsIFY+OjpyZW1vdmUoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKIHsKICAgICByZXR1
cm4gcmVtb3ZlKGZpbmQodmFsdWUpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KLWlubGluZSB2b2lkIExpc3RIYXNoU2V0PFQsIFU+OjpjbGVhcigpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSB2b2lkIExpc3RIYXNoU2V0
PFQsIFUsIFY+OjpjbGVhcigpCiB7CiAgICAgZGVsZXRlQWxsTm9kZXMoKTsKICAgICBtX2ltcGwu
Y2xlYXIoKTsgCkBAIC02MDgsOCArNjA4LDggQEAgaW5saW5lIHZvaWQgTGlzdEhhc2hTZXQ8VCwg
VT46OmNsZWFyKCkKICAgICBtX3RhaWwgPSAwOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPgotdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6dW5saW5rKE5vZGUqIG5vZGUpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK3ZvaWQgTGlzdEhhc2hT
ZXQ8VCwgVSwgVj46OnVubGluayhOb2RlKiBub2RlKQogewogICAgIGlmICghbm9kZS0+bV9wcmV2
KSB7CiAgICAgICAgIEFTU0VSVChub2RlID09IG1faGVhZCk7CkBAIC02MjgsMTUgKzYyOCwxNSBA
QCB2b2lkIExpc3RIYXNoU2V0PFQsIFU+Ojp1bmxpbmsoTm9kZSogbm9kCiAgICAgfQogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6
dW5saW5rQW5kRGVsZXRlKE5vZGUqIG5vZGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVLCBzaXplX3QgVj4KK3ZvaWQgTGlzdEhhc2hTZXQ8VCwgVSwgVj46OnVubGlua0FuZERlbGV0
ZShOb2RlKiBub2RlKQogewogICAgIHVubGluayhub2RlKTsKICAgICBkZWxldGUgbm9kZTsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXZvaWQgTGlzdEhhc2hTZXQ8VCwg
VT46OmFwcGVuZE5vZGUoTm9kZSogbm9kZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHNpemVfdCBWPgordm9pZCBMaXN0SGFzaFNldDxULCBVLCBWPjo6YXBwZW5kTm9kZShOb2Rl
KiBub2RlKQogewogICAgIG5vZGUtPm1fcHJldiA9IG1fdGFpbDsKICAgICBub2RlLT5tX25leHQg
PSAwOwpAQCAtNjUyLDggKzY1Miw4IEBAIHZvaWQgTGlzdEhhc2hTZXQ8VCwgVT46OmFwcGVuZE5v
ZGUoTm9kZSoKICAgICBtX3RhaWwgPSBub2RlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPgotdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6cHJlcGVuZE5vZGUoTm9kZSogbm9k
ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgordm9pZCBMaXN0
SGFzaFNldDxULCBVLCBWPjo6cHJlcGVuZE5vZGUoTm9kZSogbm9kZSkKIHsKICAgICBub2RlLT5t
X3ByZXYgPSAwOwogICAgIG5vZGUtPm1fbmV4dCA9IG1faGVhZDsKQEAgLTY2Niw4ICs2NjYsOCBA
QCB2b2lkIExpc3RIYXNoU2V0PFQsIFU+OjpwcmVwZW5kTm9kZShOb2RlCiAgICAgbV9oZWFkID0g
bm9kZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXZvaWQgTGlzdEhh
c2hTZXQ8VCwgVT46Omluc2VydE5vZGVCZWZvcmUoTm9kZSogYmVmb3JlTm9kZSwgTm9kZSogbmV3
Tm9kZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgordm9pZCBM
aXN0SGFzaFNldDxULCBVLCBWPjo6aW5zZXJ0Tm9kZUJlZm9yZShOb2RlKiBiZWZvcmVOb2RlLCBO
b2RlKiBuZXdOb2RlKQogewogICAgIGlmICghYmVmb3JlTm9kZSkKICAgICAgICAgcmV0dXJuIGFw
cGVuZE5vZGUobmV3Tm9kZSk7CkBAIC02ODIsOCArNjgyLDggQEAgdm9pZCBMaXN0SGFzaFNldDxU
LCBVPjo6aW5zZXJ0Tm9kZUJlZm9yZQogICAgICAgICBtX2hlYWQgPSBuZXdOb2RlOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6
ZGVsZXRlQWxsTm9kZXMoKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90
IFY+Cit2b2lkIExpc3RIYXNoU2V0PFQsIFUsIFY+OjpkZWxldGVBbGxOb2RlcygpCiB7CiAgICAg
aWYgKCFtX2hlYWQpCiAgICAgICAgIHJldHVybjsKQEAgLTY5MiwxNCArNjkyLDE0IEBAIHZvaWQg
TGlzdEhhc2hTZXQ8VCwgVT46OmRlbGV0ZUFsbE5vZGVzKCkKICAgICAgICAgZGVsZXRlIG5vZGU7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgYXV0byBMaXN0
SGFzaFNldDxULCBVPjo6bWFrZUl0ZXJhdG9yKE5vZGUqIHBvc2l0aW9uKSAtPiBpdGVyYXRvcgor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUgYXV0byBM
aXN0SGFzaFNldDxULCBVLCBWPjo6bWFrZUl0ZXJhdG9yKE5vZGUqIHBvc2l0aW9uKSAtPiBpdGVy
YXRvcgogewogICAgIHJldHVybiBpdGVyYXRvcih0aGlzLCBwb3NpdGlvbik7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgYXV0byBMaXN0SGFzaFNldDxULCBV
Pjo6bWFrZUNvbnN0SXRlcmF0b3IoTm9kZSogcG9zaXRpb24pIGNvbnN0IC0+IGNvbnN0X2l0ZXJh
dG9yCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBh
dXRvIExpc3RIYXNoU2V0PFQsIFUsIFY+OjptYWtlQ29uc3RJdGVyYXRvcihOb2RlKiBwb3NpdGlv
bikgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKIHsgCiAgICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9y
KHRoaXMsIHBvc2l0aW9uKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249626</attachid>
            <date>2015-03-27 17:43:00 -0700</date>
            <delta_ts>2015-03-27 18:37:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143158-20150327174221.patch</filename>
            <type>text/plain</type>
            <size>100807</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODIwODkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE1LTAzLTI3ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGlubGluZSBjYXBhY2l0eSB0
byBIYXNoU2V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQzMTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3dGYvSGFzaE1hcC5oOgorICAgICAgICAqIHd0Zi9IYXNoVGFibGUuaDoKKyAgICAgICAg
KiB3dGYvTGlzdEhhc2hTZXQuaDoKKyAgICAgICAgQWRkZWQgaW5saW5lQ2FwYWNpdHkgdGVtcGxh
dGUgcGFyYW1ldGVyLCB3aGljaCBpcyBjdXJyZW50bHkgdW51c2VkLgorICAgICAgICBUaGVyZSBz
aG91bGQgYmUgbm8gY2hhbmdlIGluIGJlaGF2aW9yLCAKKyAgICAgICAgZXhjZXB0IHRoYXQgSGFz
aFRhYmxlOjpjbGVhciBub3cgY29ycmVjdGx5IHNldHMgZGVsZXRlZENvdW50IHRvIDAuCisKIDIw
MTUtMDMtMjcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTdXBwb3J0IGJ1aWxkaW5nIFdURiBvbiBXaW5kb3dzIHdpdGhvdXQgQ3lnd2luCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
SGFzaE1hcC5oCShyZXZpc2lvbiAxODIwODkpCisrKyBTb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAx
MywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTMyLDcgKzMyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEtleVZhbHVl
UGFpcgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcs
IHR5cGVuYW1lIEhhc2hBcmcgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxLZXlBcmc+OjpIYXNoLAot
ICAgIHR5cGVuYW1lIEtleVRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8S2V5QXJnPiwgdHlwZW5hbWUg
TWFwcGVkVHJhaXRzQXJnID0gSGFzaFRyYWl0czxNYXBwZWRBcmc+PgorICAgIHR5cGVuYW1lIEtl
eVRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8S2V5QXJnPiwgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJn
ID0gSGFzaFRyYWl0czxNYXBwZWRBcmc+LCBzaXplX3QgaW5saW5lQ2FwYWNpdHkgPSAwPgogY2xh
c3MgSGFzaE1hcCBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwcml2YXRl
OgpAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaEFyZyBIYXNoRnVu
Y3Rpb25zOwogCiAgICAgdHlwZWRlZiBIYXNoVGFibGU8S2V5VHlwZSwgS2V5VmFsdWVQYWlyVHlw
ZSwgS2V5VmFsdWVQYWlyS2V5RXh0cmFjdG9yPEtleVZhbHVlUGFpclR5cGU+LAotICAgICAgICBI
YXNoRnVuY3Rpb25zLCBLZXlWYWx1ZVBhaXJUcmFpdHMsIEtleVRyYWl0cz4gSGFzaFRhYmxlVHlw
ZTsKKyAgICAgICAgSGFzaEZ1bmN0aW9ucywgS2V5VmFsdWVQYWlyVHJhaXRzLCBLZXlUcmFpdHMs
IGlubGluZUNhcGFjaXR5PiBIYXNoVGFibGVUeXBlOwogCiAgICAgY2xhc3MgSGFzaE1hcEtleXNQ
cm94eTsKICAgICBjbGFzcyBIYXNoTWFwVmFsdWVzUHJveHk7CkBAIC0xODgsOTggKzE4OCw5OCBA
QCBzdHJ1Y3QgSGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVyIHsKICAgICB9CiB9OwogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFt
ZSBYPgotaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6c3dhcChIYXNoTWFwJiBv
dGhlcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBW
LCBXLCBYLCBZPjo6c3dhcChIYXNoTWFwJiBvdGhlcikKIHsKICAgICBtX2ltcGwuc3dhcChvdGhl
ci5tX2ltcGwpOyAKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSB1bnNpZ25lZCBIYXNoTWFwPFQs
IFUsIFYsIFcsIFg+OjpzaXplKCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5l
IHVuc2lnbmVkIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OnNpemUoKSBjb25zdAogewogICAg
IHJldHVybiBtX2ltcGwuc2l6ZSgpOyAKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSB1bnNpZ25l
ZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpjYXBhY2l0eSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBz
aXplX3QgWT4KK2lubGluZSB1bnNpZ25lZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjpjYXBh
Y2l0eSgpIGNvbnN0CiB7IAogICAgIHJldHVybiBtX2ltcGwuY2FwYWNpdHkoKTsgCiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5
cGVuYW1lIFg+Ci1pbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojppc0VtcHR5KCkg
Y29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5lIGJvb2wgSGFzaE1hcDxULCBVLCBW
LCBXLCBYLCBZPjo6aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW1wbC5pc0VtcHR5
KCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5
cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjpiZWdpbigpIC0+IGl0ZXJhdG9yCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KK2lubGluZSBhdXRv
IEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmJlZ2luKCkgLT4gaXRlcmF0b3IKIHsKICAgICBy
ZXR1cm4gbV9pbXBsLmJlZ2luKCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNo
TWFwPFQsIFUsIFYsIFcsIFg+OjplbmQoKSAtPiBpdGVyYXRvcgordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90
IFk+CitpbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjplbmQoKSAtPiBpdGVy
YXRvcgogewogICAgIHJldHVybiBtX2ltcGwuZW5kKCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxp
bmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpiZWdpbigpIGNvbnN0IC0+IGNvbnN0X2l0
ZXJhdG9yCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBl
bmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KK2lubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwg
ViwgVywgWCwgWT46OmJlZ2luKCkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKIHsKICAgICByZXR1
cm4gbV9pbXBsLmJlZ2luKCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUs
IHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjplbmQoKSBjb25zdCAtPiBjb25zdF9pdGVyYXRvcgordGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUg
WCwgc2l6ZV90IFk+CitpbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjplbmQo
KSBjb25zdCAtPiBjb25zdF9pdGVyYXRvcgogewogICAgIHJldHVybiBtX2ltcGwuZW5kKCk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpmaW5k
KGNvbnN0IEtleVR5cGUmIGtleSkgLT4gaXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgor
aW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6ZmluZChjb25zdCBLZXlUeXBl
JiBrZXkpIC0+IGl0ZXJhdG9yCiB7CiAgICAgcmV0dXJuIG1faW1wbC5maW5kKGtleSk7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcs
IHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpmaW5kKGNv
bnN0IEtleVR5cGUmIGtleSkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNp
emVfdCBZPgoraW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6ZmluZChjb25z
dCBLZXlUeXBlJiBrZXkpIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yCiB7CiAgICAgcmV0dXJuIG1f
aW1wbC5maW5kKGtleSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYm9vbCBIYXNoTWFwPFQs
IFUsIFYsIFcsIFg+Ojpjb250YWlucyhjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFt
ZSBYLCBzaXplX3QgWT4KK2lubGluZSBib29sIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmNv
bnRhaW5zKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbXBsLmNv
bnRhaW5zKGtleSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KIHRl
bXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUWVBFPgotaW5saW5lIHR5
cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yCi1IYXNoTWFwPFQsIFUsIFYs
IFcsIFg+OjpmaW5kKGNvbnN0IFRZUEUmIHZhbHVlKQoraW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8
VCwgVSwgViwgVywgWCwgWT46Oml0ZXJhdG9yCitIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+Ojpm
aW5kKGNvbnN0IFRZUEUmIHZhbHVlKQogewogICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmlu
ZDxIYXNoTWFwVHJhbnNsYXRvckFkYXB0ZXI8S2V5VmFsdWVQYWlyVHJhaXRzLCBIYXNoVHJhbnNs
YXRvcj4+KHZhbHVlKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgog
dGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFRZUEU+Ci1pbmxpbmUg
dHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3IgCi1IYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjpmaW5kKGNvbnN0IFRZUEUmIHZhbHVlKSBjb25zdAoraW5saW5lIHR5
cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmNvbnN0X2l0ZXJhdG9yCitIYXNoTWFw
PFQsIFUsIFYsIFcsIFgsIFk+OjpmaW5kKGNvbnN0IFRZUEUmIHZhbHVlKSBjb25zdAogewogICAg
IHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmluZDxIYXNoTWFwVHJhbnNsYXRvckFkYXB0ZXI8S2V5
VmFsdWVQYWlyVHJhaXRzLCBIYXNoVHJhbnNsYXRvcj4+KHZhbHVlKTsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUg
WD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgogdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0
b3IsIHR5cGVuYW1lIFRZUEU+Ci1pbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpj
b250YWlucyhjb25zdCBUWVBFJiB2YWx1ZSkgY29uc3QKK2lubGluZSBib29sIEhhc2hNYXA8VCwg
VSwgViwgVywgWCwgWT46OmNvbnRhaW5zKGNvbnN0IFRZUEUmIHZhbHVlKSBjb25zdAogewogICAg
IHJldHVybiBtX2ltcGwudGVtcGxhdGUgY29udGFpbnM8SGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVy
PEtleVZhbHVlUGFpclRyYWl0cywgSGFzaFRyYW5zbGF0b3I+Pih2YWx1ZSk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJn
LCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KK3RlbXBs
YXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJn
LCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZywgc2l6ZV90
IGlubGluZUNhcGFjaXR5PgogdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLWF1dG8g
SGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRU
cmFpdHNBcmc+OjppbmxpbmVTZXQoSyYmIGtleSwgViYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKK2F1
dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBw
ZWRUcmFpdHNBcmcsIGlubGluZUNhcGFjaXR5Pjo6aW5saW5lU2V0KEsmJiBrZXksIFYmJiB2YWx1
ZSkgLT4gQWRkUmVzdWx0CiB7CiAgICAgQWRkUmVzdWx0IHJlc3VsdCA9IGlubGluZUFkZChzdGQ6
OmZvcndhcmQ8Sz4oa2V5KSwgc3RkOjpmb3J3YXJkPFY+KHZhbHVlKSk7CiAgICAgaWYgKCFyZXN1
bHQuaXNOZXdFbnRyeSkgewpAQCAtMjg5LDY0ICsyODksNjQgQEAgYXV0byBIYXNoTWFwPEtleUFy
ZywgTWFwcGVkQXJnLCBIYXNoQXJnLAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0
eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KK3RlbXBsYXRl
PHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0
eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZywgc2l6ZV90IGlu
bGluZUNhcGFjaXR5PgogdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLUFMV0FZU19J
TkxJTkUgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNB
cmcsIE1hcHBlZFRyYWl0c0FyZz46OmlubGluZUFkZChLJiYga2V5LCBWJiYgdmFsdWUpIC0+IEFk
ZFJlc3VsdAorQUxXQVlTX0lOTElORSBhdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhh
c2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnLCBpbmxpbmVDYXBhY2l0eT46Omlu
bGluZUFkZChLJiYga2V5LCBWJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAogewogICAgIHJldHVybiBt
X2ltcGwudGVtcGxhdGUgYWRkPEhhc2hNYXBUcmFuc2xhdG9yPEtleVZhbHVlUGFpclRyYWl0cywg
SGFzaEZ1bmN0aW9ucz4+KHN0ZDo6Zm9yd2FyZDxLPihrZXkpLCBzdGQ6OmZvcndhcmQ8Vj4odmFs
dWUpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcs
IHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVk
VHJhaXRzQXJnPgordGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcs
IHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVk
VHJhaXRzQXJnLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
YXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1h
cHBlZFRyYWl0c0FyZz46OnNldChjb25zdCBLZXlUeXBlJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFk
ZFJlc3VsdAorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFp
dHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgaW5saW5lQ2FwYWNpdHk+OjpzZXQoY29uc3QgS2V5VHlw
ZSYga2V5LCBUJiYgbWFwcGVkKSAtPiBBZGRSZXN1bHQKIHsKICAgICByZXR1cm4gaW5saW5lU2V0
KGtleSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5
VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5
VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eT4KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1hdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcs
IEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6c2V0KEtleVR5cGUmJiBr
ZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVk
QXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgaW5saW5lQ2FwYWNp
dHk+OjpzZXQoS2V5VHlwZSYmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CiB7CiAgICAg
cmV0dXJuIGlubGluZVNldChXVEY6Om1vdmUoa2V5KSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkp
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlw
ZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFp
dHNBcmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlw
ZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFp
dHNBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFu
c2xhdG9yLCB0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgotYXV0byBIYXNoTWFwPEtleUFyZywgTWFw
cGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChLJiYg
a2V5LCBWJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVk
QXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgaW5saW5lQ2FwYWNp
dHk+OjphZGQoSyYmIGtleSwgViYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKICAgICByZXR1cm4g
bV9pbXBsLnRlbXBsYXRlIGFkZFBhc3NpbmdIYXNoQ29kZTxIYXNoTWFwVHJhbnNsYXRvckFkYXB0
ZXI8S2V5VmFsdWVQYWlyVHJhaXRzLCBIYXNoVHJhbnNsYXRvcj4+KHN0ZDo6Zm9yd2FyZDxLPihr
ZXkpLCBzdGQ6OmZvcndhcmQ8Vj4odmFsdWUpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgS2V5
QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRy
YWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgordGVtcGxhdGU8dHlwZW5hbWUgS2V5
QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRy
YWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBI
YXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChjb25zdCBLZXlUeXBl
JiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAorYXV0byBIYXNoTWFwPEtleUFyZywgTWFw
cGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgaW5saW5lQ2Fw
YWNpdHk+OjphZGQoY29uc3QgS2V5VHlwZSYga2V5LCBUJiYgbWFwcGVkKSAtPiBBZGRSZXN1bHQK
IHsKICAgICByZXR1cm4gaW5saW5lQWRkKGtleSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5h
bWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNB
cmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5h
bWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNB
cmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1hdXRvIEhh
c2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJh
aXRzQXJnPjo6YWRkKEtleVR5cGUmJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAorYXV0
byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBl
ZFRyYWl0c0FyZywgaW5saW5lQ2FwYWNpdHk+OjphZGQoS2V5VHlwZSYmIGtleSwgVCYmIG1hcHBl
ZCkgLT4gQWRkUmVzdWx0CiB7CiAgICAgcmV0dXJuIGlubGluZUFkZChXVEY6Om1vdmUoa2V5KSwg
c3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcs
IHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRz
QXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcs
IHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRz
QXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1h
cHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjpmYXN0QWRk
KGNvbnN0IEtleVR5cGUmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CitBTFdBWVNfSU5M
SU5FIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJn
LCBNYXBwZWRUcmFpdHNBcmcsIGlubGluZUNhcGFjaXR5Pjo6ZmFzdEFkZChjb25zdCBLZXlUeXBl
JiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAogewogICAgIHJldHVybiBpbmxpbmVBZGQo
a2V5LCBzdGQ6OmZvcndhcmQ8VD4obWFwcGVkKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEtl
eUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlU
cmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KK3RlbXBsYXRlPHR5cGVuYW1lIEtl
eUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlU
cmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZywgc2l6ZV90IGlubGluZUNhcGFjaXR5
PgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgYXV0byBIYXNoTWFwPEtleUFy
ZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmZh
c3RBZGQoS2V5VHlwZSYmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CitBTFdBWVNfSU5M
SU5FIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJn
LCBNYXBwZWRUcmFpdHNBcmcsIGlubGluZUNhcGFjaXR5Pjo6ZmFzdEFkZChLZXlUeXBlJiYga2V5
LCBUJiYgbWFwcGVkKSAtPiBBZGRSZXN1bHQKIHsKICAgICByZXR1cm4gaW5saW5lQWRkKFdURjo6
bW92ZShrZXkpLCBzdGQ6OmZvcndhcmQ8VD4obWFwcGVkKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIE1hcHBl
ZFRyYWl0cz4KLWF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+OjpnZXQoY29u
c3QgS2V5VHlwZSYga2V5KSBjb25zdCAtPiBNYXBwZWRQZWVrVHlwZQordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6
ZV90IFk+CithdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmdldChjb25zdCBLZXlUeXBl
JiBrZXkpIGNvbnN0IC0+IE1hcHBlZFBlZWtUeXBlCiB7CiAgICAgS2V5VmFsdWVQYWlyVHlwZSog
ZW50cnkgPSBjb25zdF9jYXN0PEhhc2hUYWJsZVR5cGUmPihtX2ltcGwpLmxvb2t1cChrZXkpOwog
ICAgIGlmICghZW50cnkpCkBAIC0zNTQsOCArMzU0LDggQEAgYXV0byBIYXNoTWFwPFQsIFUsIFYs
IFcsIE1hcHBlZFRyYWl0cz46OgogICAgIHJldHVybiBNYXBwZWRUcmFpdHM6OnBlZWsoZW50cnkt
PnZhbHVlKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
ViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSBib29sIEhhc2hNYXA8VCwgVSwgViwg
VywgWD46OnJlbW92ZShpdGVyYXRvciBpdCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5l
IGJvb2wgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQogewog
ICAgIGlmIChpdC5tX2ltcGwgPT0gbV9pbXBsLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zNjQsMjcgKzM2NCwyNyBAQCBpbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjpyZW1vCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBz
aXplX3QgWT4KIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci1pbmxpbmUgdm9pZCBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjpyZW1vdmVJZihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoraW5saW5l
IHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6cmVtb3ZlSWYoY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikKIHsKICAgICBtX2ltcGwucmVtb3ZlSWYoZnVuY3Rvcik7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1l
IFg+Ci1pbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpyZW1vdmUoY29uc3QgS2V5
VHlwZSYga2V5KQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwg
dHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+CitpbmxpbmUgYm9vbCBIYXNoTWFwPFQs
IFUsIFYsIFcsIFgsIFk+OjpyZW1vdmUoY29uc3QgS2V5VHlwZSYga2V5KQogewogICAgIHJldHVy
biByZW1vdmUoZmluZChrZXkpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSB2b2lkIEhhc2hN
YXA8VCwgVSwgViwgVywgWD46OmNsZWFyKCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5l
IHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6Y2xlYXIoKQogewogICAgIG1faW1wbC5j
bGVhcigpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
LCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHM+Ci1hdXRvIEhhc2hNYXA8VCwgVSwg
ViwgVywgTWFwcGVkVHJhaXRzPjo6dGFrZShjb25zdCBLZXlUeXBlJiBrZXkpIC0+IE1hcHBlZFR5
cGUKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgorYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+
Ojp0YWtlKGNvbnN0IEtleVR5cGUmIGtleSkgLT4gTWFwcGVkVHlwZQogewogICAgIGl0ZXJhdG9y
IGl0ID0gZmluZChrZXkpOwogICAgIGlmIChpdCA9PSBlbmQoKSkKQEAgLTM5NCwzMCArMzk0LDMw
IEBAIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+OjoKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KIHRlbXBsYXRl
PHR5cGVuYW1lIEs+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpmaW5kKHR5
cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSBrZXkpIC0+IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVlLCBpdGVyYXRvcj46OnR5cGUKK2lubGluZSBhdXRv
IEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmZpbmQodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+
OjpQdHJUeXBlIGtleSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6
dmFsdWUsIGl0ZXJhdG9yPjo6dHlwZQogewogICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmlu
ZDxIYXNoTWFwVHJhbnNsYXRvcjxLZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+Pihr
ZXkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0
eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBLPgotaW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZmluZCh0eXBl
bmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUga2V5KSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgY29uc3RfaXRlcmF0b3I+Ojp0eXBlCitp
bmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjpmaW5kKHR5cGVuYW1lIEdldFB0
ckhlbHBlcjxLPjo6UHRyVHlwZSBrZXkpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PElzU21hcnRQdHI8Sz46OnZhbHVlLCBjb25zdF9pdGVyYXRvcj46OnR5cGUKIHsKICAgICByZXR1
cm4gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8SGFzaE1hcFRyYW5zbGF0b3I8S2V5VmFsdWVQYWlyVHJh
aXRzLCBIYXNoRnVuY3Rpb25zPj4oa2V5KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgs
IHNpemVfdCBZPgogdGVtcGxhdGU8dHlwZW5hbWUgSz4KLWlubGluZSBhdXRvIEhhc2hNYXA8VCwg
VSwgViwgVywgWD46OmNvbnRhaW5zKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSBr
ZXkpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVl
LCBib29sPjo6dHlwZQoraW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6Y29u
dGFpbnModHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBlIGtleSkgY29uc3QgLT4gdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6dmFsdWUsIGJvb2w+Ojp0eXBlCiB7
CiAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBjb250YWluczxIYXNoTWFwVHJhbnNsYXRvcjxL
ZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+PihrZXkpOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBY
PgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUg
VywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBLPgotaW5saW5lIGF1
dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aW5saW5lR2V0KHR5cGVuYW1lIEdldFB0ckhlbHBl
cjxLPjo6UHRyVHlwZSBrZXkpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21h
cnRQdHI8Sz46OnZhbHVlLCBNYXBwZWRQZWVrVHlwZT46OnR5cGUKK2lubGluZSBhdXRvIEhhc2hN
YXA8VCwgVSwgViwgVywgWCwgWT46OmlubGluZUdldCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46
OlB0clR5cGUga2V5KSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRy
PEs+Ojp2YWx1ZSwgTWFwcGVkUGVla1R5cGU+Ojp0eXBlCiB7CiAgICAgS2V5VmFsdWVQYWlyVHlw
ZSogZW50cnkgPSBjb25zdF9jYXN0PEhhc2hUYWJsZVR5cGUmPihtX2ltcGwpLnRlbXBsYXRlIGxv
b2t1cDxIYXNoTWFwVHJhbnNsYXRvcjxLZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+
PihrZXkpOwogICAgIGlmICghZW50cnkpCkBAIC00MjUsMjMgKzQyNSwyMyBAQCBpbmxpbmUgYXV0
byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjppbmxpCiAgICAgcmV0dXJuIE1hcHBlZFRyYWl0czo6
cGVlayhlbnRyeS0+dmFsdWUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90
IFk+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBLPgotYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpn
ZXQodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBlIGtleSkgY29uc3QgLT4gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6dmFsdWUsIE1hcHBlZFBlZWtUeXBlPjo6
dHlwZQorYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjpnZXQodHlwZW5hbWUgR2V0UHRy
SGVscGVyPEs+OjpQdHJUeXBlIGtleSkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
SXNTbWFydFB0cjxLPjo6dmFsdWUsIE1hcHBlZFBlZWtUeXBlPjo6dHlwZQogewogICAgIHJldHVy
biBpbmxpbmVHZXQoa2V5KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZ
PgogdGVtcGxhdGU8dHlwZW5hbWUgSz4KLWlubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywg
WD46OnJlbW92ZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUga2V5KSAtPiB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgYm9vbD46OnR5cGUKK2lu
bGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OnJlbW92ZSh0eXBlbmFtZSBHZXRQ
dHJIZWxwZXI8Sz46OlB0clR5cGUga2V5KSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1Nt
YXJ0UHRyPEs+Ojp2YWx1ZSwgYm9vbD46OnR5cGUKIHsKICAgICByZXR1cm4gcmVtb3ZlKGZpbmQo
a2V5KSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KIHRlbXBsYXRl
PHR5cGVuYW1lIEs+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojp0YWtlKHR5
cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSBrZXkpIC0+IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVlLCBNYXBwZWRUeXBlPjo6dHlwZQoraW5saW5lIGF1
dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6dGFrZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8
Sz46OlB0clR5cGUga2V5KSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+
Ojp2YWx1ZSwgTWFwcGVkVHlwZT46OnR5cGUKIHsKICAgICBpdGVyYXRvciBpdCA9IGZpbmQoa2V5
KTsKICAgICBpZiAoaXQgPT0gZW5kKCkpCkBAIC00NTEsMTQgKzQ1MSwxNCBAQCBpbmxpbmUgYXV0
byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojp0YWtlCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0
eXBlbmFtZSBYPgotaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y2hlY2tDb25z
aXN0ZW5jeSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KK2lubGluZSB2b2lkIEhhc2hN
YXA8VCwgVSwgViwgVywgWCwgWT46OmNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogewogICAgIG1f
aW1wbC5jaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSBi
b29sIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmlzVmFsaWRLZXkoY29uc3QgS2V5VHlwZSYga2V5
KQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUg
VywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+CitpbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcs
IFgsIFk+Ojppc1ZhbGlkS2V5KGNvbnN0IEtleVR5cGUmIGtleSkKIHsKICAgICBpZiAoS2V5VHJh
aXRzOjppc0RlbGV0ZWRWYWx1ZShrZXkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NzQs
MTMgKzQ3NCwxMyBAQCBpbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojppc1ZhCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1ib29sIG9wZXJhdG9yPT0oY29uc3Qg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgYSwgY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYg
YikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgorYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhc2hNYXA8
VCwgVSwgViwgVywgWCwgWT4mIGEsIGNvbnN0IEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT4mIGIp
CiB7CiAgICAgaWYgKGEuc2l6ZSgpICE9IGIuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNvbnN0X2l0
ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBV
LCBWLCBXLCBYLCBZPjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CiAKICAgICBjb25z
dF9pdGVyYXRvciBlbmQgPSBhLmVuZCgpOwogICAgIGNvbnN0X2l0ZXJhdG9yIG5vdEZvdW5kID0g
Yi5lbmQoKTsKQEAgLTQ5MywxNiArNDkzLDE2IEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNo
TWFwPFQsIFUsIFYsIFcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgYSwgY29uc3Qg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgYikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+JiBhLCBjb25z
dCBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+JiBiKQogewogICAgIHJldHVybiAhKGEgPT0gYik7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+Ci1pbmxpbmUgdm9pZCBjb3B5VG9WZWN0b3Io
Y29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgY29sbGVjdGlvbiwgWSYgdmVjdG9yKQordGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlw
ZW5hbWUgWCwgc2l6ZV90IFksIHR5cGVuYW1lIFo+CitpbmxpbmUgdm9pZCBjb3B5VG9WZWN0b3Io
Y29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPiYgY29sbGVjdGlvbiwgWiYgdmVjdG9yKQog
ewotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRl
cmF0b3IgaXRlcmF0b3I7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcs
IFgsIFk+Ojpjb25zdF9pdGVyYXRvciBpdGVyYXRvcjsKIAogICAgIHZlY3Rvci5yZXNpemUoY29s
bGVjdGlvbi5zaXplKCkpOwogCkBAIC01MTIsMTAgKzUxMiwxMCBAQCBpbmxpbmUgdm9pZCBjb3B5
VG9WZWN0b3IoY29uc3QgSGFzaE1hcDxUCiAgICAgICAgIHZlY3RvcltpXSA9IHsgKCppdCkua2V5
LCAoKml0KS52YWx1ZSB9OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgotaW5saW5lIHZv
aWQgY29weUtleXNUb1ZlY3Rvcihjb25zdCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+JiBjb2xsZWN0
aW9uLCBZJiB2ZWN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWSwgdHlwZW5hbWUgWj4KK2lubGlu
ZSB2b2lkIGNvcHlLZXlzVG9WZWN0b3IoY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPiYg
Y29sbGVjdGlvbiwgWiYgdmVjdG9yKQogewotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxU
LCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3I6OktleXMgaXRlcmF0b3I7CisgICAgdHlwZWRl
ZiB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+Ojpjb25zdF9pdGVyYXRvcjo6S2V5
cyBpdGVyYXRvcjsKICAgICAKICAgICB2ZWN0b3IucmVzaXplKGNvbGxlY3Rpb24uc2l6ZSgpKTsK
ICAgICAKQEAgLTUyNSwxMCArNTI1LDEwIEBAIGlubGluZSB2b2lkIGNvcHlLZXlzVG9WZWN0b3Io
Y29uc3QgSGFzaE0KICAgICAgICAgdmVjdG9yW2ldID0gKml0OwogfSAgCiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgs
IHR5cGVuYW1lIFk+Ci1pbmxpbmUgdm9pZCBjb3B5VmFsdWVzVG9WZWN0b3IoY29uc3QgSGFzaE1h
cDxULCBVLCBWLCBXLCBYPiYgY29sbGVjdGlvbiwgWSYgdmVjdG9yKQordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6
ZV90IFksIHR5cGVuYW1lIFo+CitpbmxpbmUgdm9pZCBjb3B5VmFsdWVzVG9WZWN0b3IoY29uc3Qg
SGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPiYgY29sbGVjdGlvbiwgWiYgdmVjdG9yKQogewotICAg
IHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3I6
OlZhbHVlcyBpdGVyYXRvcjsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwg
VywgWCwgWT46OmNvbnN0X2l0ZXJhdG9yOjpWYWx1ZXMgaXRlcmF0b3I7CiAgICAgCiAgICAgdmVj
dG9yLnJlc2l6ZShjb2xsZWN0aW9uLnNpemUoKSk7CiAgICAgCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9IYXNoU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvSGFzaFNldC5oCShyZXZp
c2lvbiAxODIwODkpCisrKyBTb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4LCAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMwLDEwICsz
MCwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHN0cnVjdCBJZGVudGl0eUV4dHJhY3RvcjsK
ICAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzPiBjbGFzcyBIYXNoU2V0OworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4gY2xhc3MgSGFzaFNldDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZh
bHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8VmFsdWVBcmc+
OjpIYXNoLAotICAgICAgICB0eXBlbmFtZSBUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFZhbHVlQXJn
Pj4gY2xhc3MgSGFzaFNldCBmaW5hbCB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcs
IHR5cGVuYW1lIEhhc2hBcmcgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxWYWx1ZUFyZz46Okhhc2gs
IHR5cGVuYW1lIFRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8VmFsdWVBcmc+LCBzaXplX3QgaW5saW5l
Q2FwYWNpdHkgPSAwPgorICAgIGNsYXNzIEhhc2hTZXQgZmluYWwgewogICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBwcml2YXRlOgogICAgICAgICB0eXBlZGVmIEhhc2hBcmcg
SGFzaEZ1bmN0aW9uczsKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxWYWx1ZVR5cGUsIFZhbHVlVHlwZSwg
SWRlbnRpdHlFeHRyYWN0b3IsCi0gICAgICAgICAgICBIYXNoRnVuY3Rpb25zLCBWYWx1ZVRyYWl0
cywgVmFsdWVUcmFpdHM+IEhhc2hUYWJsZVR5cGU7CisgICAgICAgICAgICBIYXNoRnVuY3Rpb25z
LCBWYWx1ZVRyYWl0cywgVmFsdWVUcmFpdHMsIGlubGluZUNhcGFjaXR5PiBIYXNoVGFibGVUeXBl
OwogCiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JB
ZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4gaXRlcmF0b3I7CkBAIC0xNDIsOTAgKzE0
Miw5MCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSB2b2lkIEhh
c2hTZXQ8VCwgVSwgVj46OnN3YXAoSGFzaFNldCYgb3RoZXIpCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6ZV90IFc+CisgICAgaW5saW5lIHZvaWQg
SGFzaFNldDxULCBVLCBWLCBXPjo6c3dhcChIYXNoU2V0JiBvdGhlcikKICAgICB7CiAgICAgICAg
IG1faW1wbC5zd2FwKG90aGVyLm1faW1wbCk7IAogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAgaW5saW5lIHVuc2lnbmVkIEhhc2hT
ZXQ8VCwgVSwgVj46OnNpemUoKSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFYsIHNpemVfdCBXPgorICAgIGlubGluZSB1bnNpZ25lZCBIYXNoU2V0
PFQsIFUsIFYsIFc+OjpzaXplKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwu
c2l6ZSgpOyAKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWPgotICAgIGlubGluZSB1bnNpZ25lZCBIYXNoU2V0PFQsIFUsIFY+OjpjYXBhY2l0
eSgpIGNvbnN0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
Viwgc2l6ZV90IFc+CisgICAgaW5saW5lIHVuc2lnbmVkIEhhc2hTZXQ8VCwgVSwgViwgVz46OmNh
cGFjaXR5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwuY2FwYWNpdHkoKTsg
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
Vj4KLSAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+Ojppc0VtcHR5KCkgY29uc3QKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4K
KyAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFYsIFc+Ojppc0VtcHR5KCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwuaXNFbXB0eSgpOyAKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBhdXRv
IEhhc2hTZXQ8VCwgVSwgVj46OmJlZ2luKCkgY29uc3QgLT4gaXRlcmF0b3IKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KKyAgICBpbmxp
bmUgYXV0byBIYXNoU2V0PFQsIFUsIFYsIFc+OjpiZWdpbigpIGNvbnN0IC0+IGl0ZXJhdG9yCiAg
ICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLmJlZ2luKCk7IAogICAgIH0KIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAgaW5saW5lIGF1dG8g
SGFzaFNldDxULCBVLCBWPjo6ZW5kKCkgY29uc3QgLT4gaXRlcmF0b3IKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KKyAgICBpbmxpbmUg
YXV0byBIYXNoU2V0PFQsIFUsIFYsIFc+OjplbmQoKSBjb25zdCAtPiBpdGVyYXRvcgogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1faW1wbC5lbmQoKTsgCiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgYXV0byBIYXNoU2V0
PFQsIFUsIFY+OjpmaW5kKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNvbnN0IC0+IGl0ZXJhdG9y
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6ZV90
IFc+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWLCBXPjo6ZmluZChjb25zdCBWYWx1
ZVR5cGUmIHZhbHVlKSBjb25zdCAtPiBpdGVyYXRvcgogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
aW1wbC5maW5kKHZhbHVlKTsgCiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+Ojpj
b250YWlucyhjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHNpemVfdCBXPgorICAgIGlubGluZSBib29s
IEhhc2hTZXQ8VCwgVSwgViwgVz46OmNvbnRhaW5zKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLmNvbnRhaW5zKHZhbHVlKTsgCiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+Ci0gICAgaW5s
aW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6ZmluZChjb25z
dCBUJiB2YWx1ZSkgY29uc3QgLT4gaXRlcmF0b3IKKyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFZh
bHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6ZmluZChjb25zdCBU
JiB2YWx1ZSkgY29uc3QgLT4gaXRlcmF0b3IKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwu
dGVtcGxhdGUgZmluZDxIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2
YWx1ZSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1l
IFQ+Ci0gICAgaW5saW5lIGJvb2wgSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
Pjo6Y29udGFpbnMoY29uc3QgVCYgdmFsdWUpIGNvbnN0CisgICAgaW5saW5lIGJvb2wgSGFzaFNl
dDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmNvbnRhaW5z
KGNvbnN0IFQmIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1w
bGF0ZSBjb250YWluczxIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2
YWx1ZSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgVj4KLSAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFQsIFUsIFY+OjphZGQoY29uc3QgVmFs
dWVUeXBlJiB2YWx1ZSkgLT4gQWRkUmVzdWx0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6ZV90IFc+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxU
LCBVLCBWLCBXPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIC0+IEFkZFJlc3VsdAogICAg
IHsKICAgICAgICAgcmV0dXJuIG1faW1wbC5hZGQodmFsdWUpOwogICAgIH0KIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAgaW5saW5lIGF1dG8g
SGFzaFNldDxULCBVLCBWPjo6YWRkKFZhbHVlVHlwZSYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4K
KyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFQsIFUsIFYsIFc+OjphZGQoVmFsdWVUeXBlJiYgdmFs
dWUpIC0+IEFkZFJlc3VsdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC5hZGQoV1RGOjpt
b3ZlKHZhbHVlKSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5
cGVuYW1lIFQ+Ci0gICAgaW5saW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzPjo6YWRkKGNvbnN0IFQmIHZhbHVlKSAtPiBBZGRSZXN1bHQKKyAgICBpbmxpbmUgYXV0
byBIYXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6
YWRkKGNvbnN0IFQmIHZhbHVlKSAtPiBBZGRSZXN1bHQKICAgICB7CiAgICAgICAgIHJldHVybiBt
X2ltcGwudGVtcGxhdGUgYWRkUGFzc2luZ0hhc2hDb2RlPEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRl
cjxIYXNoVHJhbnNsYXRvcj4+KHZhbHVlLCB2YWx1ZSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBJdGVyYXRvclR5cGU+Ci0gICAgaW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBWPjo6YWRk
KEl0ZXJhdG9yVHlwZSBiZWdpbiwgSXRlcmF0b3JUeXBlIGVuZCkKKyAgICBpbmxpbmUgYm9vbCBI
YXNoU2V0PFQsIFUsIFYsIFc+OjphZGQoSXRlcmF0b3JUeXBlIGJlZ2luLCBJdGVyYXRvclR5cGUg
ZW5kKQogICAgIHsKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIGZvciAo
SXRlcmF0b3JUeXBlIGl0ZXIgPSBiZWdpbjsgaXRlciAhPSBlbmQ7ICsraXRlcikKQEAgLTIzMyw4
ICsyMzMsOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAg
ICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6ZV90IFc+Cisg
ICAgaW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBWLCBXPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQog
ICAgIHsKICAgICAgICAgaWYgKGl0Lm1faW1wbCA9PSBtX2ltcGwuZW5kKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0yNDMsMjAgKzI0MywyMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+Ojpy
ZW1vdmUoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KKyAgICBpbmxpbmUgYm9vbCBIYXNoU2V0
PFQsIFUsIFYsIFc+OjpyZW1vdmUoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiByZW1vdmUoZmluZCh2YWx1ZSkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAgaW5saW5lIHZvaWQgSGFzaFNl
dDxULCBVLCBWPjo6Y2xlYXIoKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUs
IHR5cGVuYW1lIFYsIHNpemVfdCBXPgorICAgIGlubGluZSB2b2lkIEhhc2hTZXQ8VCwgVSwgViwg
Vz46OmNsZWFyKCkKICAgICB7CiAgICAgICAgIG1faW1wbC5jbGVhcigpOyAKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGlu
ZSBhdXRvIEhhc2hTZXQ8VCwgVSwgVj46OnRha2UoaXRlcmF0b3IgaXQpIC0+IFZhbHVlVHlwZQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHNpemVfdCBX
PgorICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VCwgVSwgViwgVz46OnRha2UoaXRlcmF0b3IgaXQp
IC0+IFZhbHVlVHlwZQogICAgIHsKICAgICAgICAgaWYgKGl0ID09IGVuZCgpKQogICAgICAgICAg
ICAgcmV0dXJuIFZhbHVlVHJhaXRzOjplbXB0eVZhbHVlKCk7CkBAIC0yNjYsNDggKzI2Niw0OCBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBh
dXRvIEhhc2hTZXQ8VCwgVSwgVj46OnRha2UoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gVmFs
dWVUeXBlCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwg
c2l6ZV90IFc+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWLCBXPjo6dGFrZShjb25z
dCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBWYWx1ZVR5cGUKICAgICB7CiAgICAgICAgIHJldHVybiB0
YWtlKGZpbmQodmFsdWUpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VCwgVSwgVj46OnRh
a2VBbnkoKSAtPiBWYWx1ZVR5cGUKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KKyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFQsIFUsIFYs
IFc+Ojp0YWtlQW55KCkgLT4gVmFsdWVUeXBlCiAgICAgewogICAgICAgICByZXR1cm4gdGFrZShi
ZWdpbigpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHNpemVfdCBpbmxp
bmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPgotICAgIGlubGluZSBhdXRvIEhh
c2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmZpbmQodHlwZW5hbWUgR2V0UHRy
SGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgaXRlcmF0b3I+Ojp0eXBlCisgICAgaW5saW5lIGF1dG8g
SGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmZp
bmQodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSBjb25zdCAtPiB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgaXRlcmF0b3I+Ojp0eXBl
CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8SGFzaFNldFRyYW5z
bGF0b3I8SGFzaEZ1bmN0aW9ucz4+KHZhbHVlKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBW
PgotICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46
OmNvbnRhaW5zKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgY29uc3Qg
LT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0
eXBlCisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBpbmxpbmVDYXBhY2l0eT46OmNvbnRhaW5zKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRy
VHlwZSB2YWx1ZSkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxW
Pjo6dmFsdWUsIGJvb2w+Ojp0eXBlCiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBs
YXRlIGNvbnRhaW5zPEhhc2hTZXRUcmFuc2xhdG9yPEhhc2hGdW5jdGlvbnM+Pih2YWx1ZSk7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFZhbHVl
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpyZW1vdmUodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+
OjpQdHJUeXBlIHZhbHVlKSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+
Ojp2YWx1ZSwgYm9vbD46OnR5cGUKKyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFZhbHVlLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6cmVtb3ZlKHR5cGVuYW1lIEdldFB0
ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNT
bWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0eXBlCiAgICAgewogICAgICAgICByZXR1cm4gcmVt
b3ZlKGZpbmQodmFsdWUpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPgotICAgIGlubGlu
ZSBhdXRvIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OnRha2UodHlwZW5h
bWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgVmFsdWVUeXBlPjo6dHlwZQorICAgIGlubGluZSBh
dXRvIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgaW5saW5lQ2FwYWNpdHk+
Ojp0YWtlKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgLT4gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIFZhbHVlVHlwZT46OnR5cGUK
ICAgICB7CiAgICAgICAgIHJldHVybiB0YWtlKGZpbmQodmFsdWUpKTsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBi
b29sIEhhc2hTZXQ8VCwgVSwgVj46OmlzVmFsaWRWYWx1ZShjb25zdCBWYWx1ZVR5cGUmIHZhbHVl
KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHNpemVf
dCBXPgorICAgIGlubGluZSBib29sIEhhc2hTZXQ8VCwgVSwgViwgVz46OmlzVmFsaWRWYWx1ZShj
b25zdCBWYWx1ZVR5cGUmIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKFZhbHVlVHJhaXRzOjpp
c0RlbGV0ZWRWYWx1ZSh2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMzYs
OCArMzM2LDggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICB2ZWN0b3JbaV0gPSAqaXQ7
CiAgICAgfSAgCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWPgotICAgIGlubGluZSBib29sIEhhc2hTZXQ8VCwgVSwgVj46Om9wZXJhdG9yPT0oY29uc3Qg
SGFzaFNldCYgb3RoZXIpIGNvbnN0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgViwgc2l6ZV90IFc+CisgICAgaW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBW
LCBXPjo6b3BlcmF0b3I9PShjb25zdCBIYXNoU2V0JiBvdGhlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIGlmIChzaXplKCkgIT0gb3RoZXIuc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpJbmRleDogU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvSGFzaFRhYmxlLmgJKHJldmlzaW9uIDE4MjA4OSkKKysrIFNvdXJjZS9XVEYvd3Rm
L0hhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMTEsIDIwMTIsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA4IERhdmlkIExldmluIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgpAQCAtNzMsNDUgKzczLDQ1IEBAIG5hbWVzcGFjZSBXVEYgewogCiAjZW5kaWYKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMs
IHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgIGNsYXNzIEhh
c2hUYWJsZTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAg
ICBjbGFzcyBIYXNoVGFibGVJdGVyYXRvcjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4KICAgICBjbGFzcyBIYXNoVGFibGVDb25zdEl0ZXJhdG9yOwogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cz4KLSAgICB2b2lkIGFkZEl0ZXJhdG9yKGNvbnN0IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBF
eHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiosCi0gICAgICAgIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz4qKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CisgICAgdm9pZCBhZGRJdGVyYXRvcihjb25zdCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+KiwK
KyAgICAgICAgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4qKTsKIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHM+Ci0gICAgdm9pZCByZW1vdmVJdGVyYXRvcihIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Kik7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHZvaWQgcmVtb3ZlSXRlcmF0
b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4qKTsKIAogI2lmICFDSEVD
S19IQVNIVEFCTEVfSVRFUkFUT1JTCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGlubGluZSB2b2lkIGFkZEl0
ZXJhdG9yKGNvbnN0IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPiosCi0gICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4q
KSB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgaW5saW5lIHZvaWQg
YWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5PiosCisgICAgICAgIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+KikgeyB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgot
ICAgIGlubGluZSB2b2lkIHJlbW92ZUl0ZXJhdG9yKEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5
LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qKSB7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgaW5saW5lIHZvaWQgcmVt
b3ZlSXRlcmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3Is
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4qKSB7IH0K
IAogI2VuZGlmCiAKICAgICB0eXBlZGVmIGVudW0geyBIYXNoSXRlbUtub3duR29vZCB9IEhhc2hJ
dGVtS25vd25Hb29kVGFnOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHk+CiAgICAgY2xhc3MgSGFzaFRhYmxlQ29uc3RJdGVyYXRvciB7CiAgICAgcHJpdmF0ZToK
LSAgICAgICAgdHlwZWRlZiBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gSGFzaFRhYmxlVHlwZTsKLSAgICAgICAgdHlwZWRl
ZiBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPiBpdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVD
b25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+IGNvbnN0X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxL
ZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBp
bmxpbmVDYXBhY2l0eT4gSGFzaFRhYmxlVHlwZTsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJ
dGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4gaXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgSGFzaFRh
YmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4gY29uc3RfaXRlcmF0b3I7CiAgICAgICAg
IHR5cGVkZWYgVmFsdWUgVmFsdWVUeXBlOwogICAgICAgICB0eXBlZGVmIGNvbnN0IFZhbHVlVHlw
ZSYgUmVmZXJlbmNlVHlwZTsKICAgICAgICAgdHlwZWRlZiBjb25zdCBWYWx1ZVR5cGUqIFBvaW50
ZXJUeXBlOwogCi0gICAgICAgIGZyaWVuZCBjbGFzcyBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz47Ci0gICAgICAgIGZyaWVu
ZCBjbGFzcyBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
LCBpbmxpbmVDYXBhY2l0eT47CisgICAgICAgIGZyaWVuZCBjbGFzcyBIYXNoVGFibGVJdGVyYXRv
cjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
LCBpbmxpbmVDYXBhY2l0eT47CiAKICAgICAgICAgdm9pZCBza2lwRW1wdHlCdWNrZXRzKCkKICAg
ICAgICAgewpAQCAtMjM2LDE3ICsyMzYsMTcgQEAgbmFtZXNwYWNlIFdURiB7CiAjZW5kaWYKICAg
ICB9OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5
cGVuYW1lIEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1l
IFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAg
Y2xhc3MgSGFzaFRhYmxlSXRlcmF0b3IgewogICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYg
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7Ci0gICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0
b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz4gaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXks
IFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBjb25z
dF9pdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+IEhh
c2hUYWJsZVR5cGU7CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2Fw
YWNpdHk+IGl0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywg
aW5saW5lQ2FwYWNpdHk+IGNvbnN0X2l0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIFZhbHVlIFZh
bHVlVHlwZTsKICAgICAgICAgdHlwZWRlZiBWYWx1ZVR5cGUmIFJlZmVyZW5jZVR5cGU7CiAgICAg
ICAgIHR5cGVkZWYgVmFsdWVUeXBlKiBQb2ludGVyVHlwZTsKIAotICAgICAgICBmcmllbmQgY2xh
c3MgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+OworICAgICAgICBmcmllbmQgY2xhc3MgSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFj
aXR5PjsKIAogICAgICAgICBIYXNoVGFibGVJdGVyYXRvcihIYXNoVGFibGVUeXBlKiB0YWJsZSwg
UG9pbnRlclR5cGUgcG9zLCBQb2ludGVyVHlwZSBlbmQpIDogbV9pdGVyYXRvcih0YWJsZSwgcG9z
LCBlbmQpIHsgfQogICAgICAgICBIYXNoVGFibGVJdGVyYXRvcihIYXNoVGFibGVUeXBlKiB0YWJs
ZSwgUG9pbnRlclR5cGUgcG9zLCBQb2ludGVyVHlwZSBlbmQsIEhhc2hJdGVtS25vd25Hb29kVGFn
IHRhZykgOiBtX2l0ZXJhdG9yKHRhYmxlLCBwb3MsIGVuZCwgdGFnKSB7IH0KQEAgLTI4OSwxMSAr
Mjg5LDExIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBib29sIGlzTmV3RW50cnk7CiAgICAg
fTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
IEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBl
bmFtZSBLZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgIGNs
YXNzIEhhc2hUYWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUl0
ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHM+IGl0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4g
Y29uc3RfaXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBW
YWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5l
Q2FwYWNpdHk+IGl0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0
b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cywgaW5saW5lQ2FwYWNpdHk+IGNvbnN0X2l0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIFRyYWl0
cyBWYWx1ZVRyYWl0czsKICAgICAgICAgdHlwZWRlZiBLZXkgS2V5VHlwZTsKICAgICAgICAgdHlw
ZWRlZiBWYWx1ZSBWYWx1ZVR5cGU7CkBAIC0zNDksMTAgKzM0OSwxMCBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAgICAgfkhhc2hUYWJsZSgpIAogICAgICAgICB7CiAgICAgICAgICAgICBpbnZhbGlk
YXRlSXRlcmF0b3JzKCk7IAotICAgICAgICAgICAgaWYgKG1fdGFibGUpCi0gICAgICAgICAgICAg
ICAgZGVhbGxvY2F0ZVRhYmxlKG1fdGFibGUsIG1fdGFibGVTaXplKTsKKyAgICAgICAgICAgIGlm
IChtX3N0b3JhZ2UudGFibGUudGFibGUpCisgICAgICAgICAgICAgICAgZGVhbGxvY2F0ZVRhYmxl
KG1fc3RvcmFnZS50YWJsZS50YWJsZSwgbV9zdG9yYWdlLnRhYmxlLnNpemUpOwogI2lmIENIRUNL
X0hBU0hUQUJMRV9VU0VfQUZURVJfREVTVFJVQ1RJT04KLSAgICAgICAgICAgIG1fdGFibGUgPSAo
VmFsdWVUeXBlKikodWludHB0cl90KTB4YmJhZGJlZWY7CisgICAgICAgICAgICBtX3N0b3JhZ2Uu
dGFibGUudGFibGUgPSAoVmFsdWVUeXBlKikodWludHB0cl90KTB4YmJhZGJlZWY7CiAjZW5kaWYK
ICAgICAgICAgfQogCkBAIC0zNjYsMTMgKzM2NiwxMyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgLy8gV2hlbiB0aGUgaGFzaCB0YWJsZSBpcyBlbXB0eSwganVzdCByZXR1cm4gdGhlIHNhbWUg
aXRlcmF0b3IgZm9yIGVuZCBhcyBmb3IgYmVnaW4uCiAgICAgICAgIC8vIFRoaXMgaXMgbW9yZSBl
ZmZpY2llbnQgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIHRvIHNraXAgYWxsIHRoZSBlbXB0eSBhbmQg
ZGVsZXRlZAogICAgICAgICAvLyBidWNrZXRzLCBhbmQgaXRlcmF0aW5nIGFuIGVtcHR5IHRhYmxl
IGlzIGEgY29tbW9uIGNhc2UgdGhhdCdzIHdvcnRoIG9wdGltaXppbmcuCi0gICAgICAgIGl0ZXJh
dG9yIGJlZ2luKCkgeyByZXR1cm4gaXNFbXB0eSgpID8gZW5kKCkgOiBtYWtlSXRlcmF0b3IobV90
YWJsZSk7IH0KLSAgICAgICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gbWFrZUtub3duR29vZEl0
ZXJhdG9yKG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0KLSAgICAgICAgY29uc3RfaXRlcmF0b3Ig
YmVnaW4oKSBjb25zdCB7IHJldHVybiBpc0VtcHR5KCkgPyBlbmQoKSA6IG1ha2VDb25zdEl0ZXJh
dG9yKG1fdGFibGUpOyB9Ci0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0
dXJuIG1ha2VLbm93bkdvb2RDb25zdEl0ZXJhdG9yKG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0K
KyAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBpc0VtcHR5KCkgPyBlbmQoKSA6IG1h
a2VJdGVyYXRvcihtX3N0b3JhZ2UudGFibGUudGFibGUpOyB9CisgICAgICAgIGl0ZXJhdG9yIGVu
ZCgpIHsgcmV0dXJuIG1ha2VLbm93bkdvb2RJdGVyYXRvcihtX3N0b3JhZ2UudGFibGUudGFibGUg
KyBtX3N0b3JhZ2UudGFibGUuc2l6ZSk7IH0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4o
KSBjb25zdCB7IHJldHVybiBpc0VtcHR5KCkgPyBlbmQoKSA6IG1ha2VDb25zdEl0ZXJhdG9yKG1f
c3RvcmFnZS50YWJsZS50YWJsZSk7IH0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29u
c3QgeyByZXR1cm4gbWFrZUtub3duR29vZENvbnN0SXRlcmF0b3IobV9zdG9yYWdlLnRhYmxlLnRh
YmxlICsgbV9zdG9yYWdlLnRhYmxlLnNpemUpOyB9CiAKICAgICAgICAgdW5zaWduZWQgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fa2V5Q291bnQ7IH0KLSAgICAgICAgdW5zaWduZWQgY2FwYWNpdHko
KSBjb25zdCB7IHJldHVybiBtX3RhYmxlU2l6ZTsgfQorICAgICAgICB1bnNpZ25lZCBjYXBhY2l0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS50YWJsZS5zaXplOyB9CiAgICAgICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2tleUNvdW50OyB9CiAKICAgICAgICAgQWRkUmVz
dWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSB7IHJldHVybiBhZGQ8SWRlbnRpdHlUcmFu
c2xhdG9yVHlwZT4oRXh0cmFjdG9yOjpleHRyYWN0KHZhbHVlKSwgdmFsdWUpOyB9CkBAIC00Mzcs
MTEgKzQzNywxMSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdm9pZCByZW1vdmVBbmRJbnZh
bGlkYXRlKFZhbHVlVHlwZSopOwogICAgICAgICB2b2lkIHJlbW92ZShWYWx1ZVR5cGUqKTsKIAot
ICAgICAgICBib29sIHNob3VsZEV4cGFuZCgpIGNvbnN0IHsgcmV0dXJuIChtX2tleUNvdW50ICsg
bV9kZWxldGVkQ291bnQpICogbV9tYXhMb2FkID49IG1fdGFibGVTaXplOyB9Ci0gICAgICAgIGJv
b2wgbXVzdFJlaGFzaEluUGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2tleUNvdW50ICogbV9taW5M
b2FkIDwgbV90YWJsZVNpemUgKiAyOyB9Ci0gICAgICAgIGJvb2wgc2hvdWxkU2hyaW5rKCkgY29u
c3QgeyByZXR1cm4gbV9rZXlDb3VudCAqIG1fbWluTG9hZCA8IG1fdGFibGVTaXplICYmIG1fdGFi
bGVTaXplID4gS2V5VHJhaXRzOjptaW5pbXVtVGFibGVTaXplOyB9CisgICAgICAgIGJvb2wgc2hv
dWxkRXhwYW5kKCkgY29uc3QgeyByZXR1cm4gKG1fa2V5Q291bnQgKyBtX3N0b3JhZ2UudGFibGUu
ZGVsZXRlZENvdW50KSAqIG1fbWF4TG9hZCA+PSBtX3N0b3JhZ2UudGFibGUuc2l6ZTsgfQorICAg
ICAgICBib29sIG11c3RSZWhhc2hJblBsYWNlKCkgY29uc3QgeyByZXR1cm4gbV9rZXlDb3VudCAq
IG1fbWluTG9hZCA8IG1fc3RvcmFnZS50YWJsZS5zaXplICogMjsgfQorICAgICAgICBib29sIHNo
b3VsZFNocmluaygpIGNvbnN0IHsgcmV0dXJuIG1fa2V5Q291bnQgKiBtX21pbkxvYWQgPCBtX3N0
b3JhZ2UudGFibGUuc2l6ZSAmJiBtX3N0b3JhZ2UudGFibGUuc2l6ZSA+IEtleVRyYWl0czo6bWlu
aW11bVRhYmxlU2l6ZTsgfQogICAgICAgICBWYWx1ZVR5cGUqIGV4cGFuZChWYWx1ZVR5cGUqIGVu
dHJ5ID0gbnVsbHB0cik7Ci0gICAgICAgIHZvaWQgc2hyaW5rKCkgeyByZWhhc2gobV90YWJsZVNp
emUgLyAyLCBudWxscHRyKTsgfQorICAgICAgICB2b2lkIHNocmluaygpIHsgcmVoYXNoKG1fc3Rv
cmFnZS50YWJsZS5zaXplIC8gMiwgbnVsbHB0cik7IH0KIAogICAgICAgICBWYWx1ZVR5cGUqIHJl
aGFzaCh1bnNpZ25lZCBuZXdUYWJsZVNpemUsIFZhbHVlVHlwZSogZW50cnkpOwogICAgICAgICBW
YWx1ZVR5cGUqIHJlaW5zZXJ0KFZhbHVlVHlwZSYmKTsKQEAgLTQ1MiwxMCArNDUyLDEwIEBAIG5h
bWVzcGFjZSBXVEYgewogICAgICAgICBGdWxsTG9va3VwVHlwZSBtYWtlTG9va3VwUmVzdWx0KFZh
bHVlVHlwZSogcG9zaXRpb24sIGJvb2wgZm91bmQsIHVuc2lnbmVkIGhhc2gpCiAgICAgICAgICAg
ICB7IHJldHVybiBGdWxsTG9va3VwVHlwZShMb29rdXBUeXBlKHBvc2l0aW9uLCBmb3VuZCksIGhh
c2gpOyB9CiAKLSAgICAgICAgaXRlcmF0b3IgbWFrZUl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSB7
IHJldHVybiBpdGVyYXRvcih0aGlzLCBwb3MsIG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0KLSAg
ICAgICAgY29uc3RfaXRlcmF0b3IgbWFrZUNvbnN0SXRlcmF0b3IoVmFsdWVUeXBlKiBwb3MpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJsZSArIG1fdGFibGVT
aXplKTsgfQotICAgICAgICBpdGVyYXRvciBtYWtlS25vd25Hb29kSXRlcmF0b3IoVmFsdWVUeXBl
KiBwb3MpIHsgcmV0dXJuIGl0ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJsZSArIG1fdGFibGVTaXpl
LCBIYXNoSXRlbUtub3duR29vZCk7IH0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgbWFrZUtub3du
R29vZENvbnN0SXRlcmF0b3IoVmFsdWVUeXBlKiBwb3MpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2l0
ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJsZSArIG1fdGFibGVTaXplLCBIYXNoSXRlbUtub3duR29v
ZCk7IH0KKyAgICAgICAgaXRlcmF0b3IgbWFrZUl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSB7IHJl
dHVybiBpdGVyYXRvcih0aGlzLCBwb3MsIG1fc3RvcmFnZS50YWJsZS50YWJsZSArIG1fc3RvcmFn
ZS50YWJsZS5zaXplKTsgfQorICAgICAgICBjb25zdF9pdGVyYXRvciBtYWtlQ29uc3RJdGVyYXRv
cihWYWx1ZVR5cGUqIHBvcykgY29uc3QgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IodGhpcywgcG9z
LCBtX3N0b3JhZ2UudGFibGUudGFibGUgKyBtX3N0b3JhZ2UudGFibGUuc2l6ZSk7IH0KKyAgICAg
ICAgaXRlcmF0b3IgbWFrZUtub3duR29vZEl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSB7IHJldHVy
biBpdGVyYXRvcih0aGlzLCBwb3MsIG1fc3RvcmFnZS50YWJsZS50YWJsZSArIG1fc3RvcmFnZS50
YWJsZS5zaXplLCBIYXNoSXRlbUtub3duR29vZCk7IH0KKyAgICAgICAgY29uc3RfaXRlcmF0b3Ig
bWFrZUtub3duR29vZENvbnN0SXRlcmF0b3IoVmFsdWVUeXBlKiBwb3MpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0X2l0ZXJhdG9yKHRoaXMsIHBvcywgbV9zdG9yYWdlLnRhYmxlLnRhYmxlICsgbV9zdG9y
YWdlLnRhYmxlLnNpemUsIEhhc2hJdGVtS25vd25Hb29kKTsgfQogCiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAogICAgICAgICB2b2lkIGNoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKSBjb25z
dDsKQEAgLTQ3MSwxMiArNDcxLDE2IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBtX21heExvYWQgPSAyOwogICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgbV9taW5Mb2FkID0gNjsKLQotICAgICAgICBWYWx1ZVR5cGUqIG1fdGFibGU7Ci0gICAg
ICAgIHVuc2lnbmVkIG1fdGFibGVTaXplOwotICAgICAgICB1bnNpZ25lZCBtX3RhYmxlU2l6ZU1h
c2s7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgVmFsdWVUeXBl
IGFycmF5W2lubGluZUNhcGFjaXR5XSBhbmQgdXNlIGl0IGZvciBzbWFsbCBzZXRzLgorICAgICAg
ICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBWYWx1ZVR5cGUqIHRhYmxlOworICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHNpemU7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgc2l6ZU1h
c2s7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgZGVsZXRlZENvdW50OworICAgICAgICAgICAg
fSB0YWJsZTsKKyAgICAgICAgfSBtX3N0b3JhZ2U7CiAgICAgICAgIHVuc2lnbmVkIG1fa2V5Q291
bnQ7Ci0gICAgICAgIHVuc2lnbmVkIG1fZGVsZXRlZENvdW50OwogCiAjaWYgQ0hFQ0tfSEFTSFRB
QkxFX0lURVJBVE9SUwogICAgIHB1YmxpYzoKQEAgLTUzMCwxMyArNTM0LDkgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgIENPTVBJTEVfQVNTRVJUKHZhbHVlID4gKDIgKiBzaXplKSwgSGFzaFRh
YmxlQ2FwYWNpdHlIb2xkc0NvbnRlbnRTaXplKTsKICAgICB9OwogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICBp
bmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUoKQotICAgICAgICA6IG1fdGFibGUoMCkKLSAgICAg
ICAgLCBtX3RhYmxlU2l6ZSgwKQotICAgICAgICAsIG1fdGFibGVTaXplTWFzaygwKQotICAgICAg
ICAsIG1fa2V5Q291bnQoMCkKLSAgICAgICAgLCBtX2RlbGV0ZWRDb3VudCgwKQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFj
aXR5Pjo6SGFzaFRhYmxlKCkKKyAgICAgICAgOiBtX2tleUNvdW50KDApCiAjaWYgQ0hFQ0tfSEFT
SFRBQkxFX0lURVJBVE9SUwogICAgICAgICAsIG1faXRlcmF0b3JzKDApCiAgICAgICAgICwgbV9t
dXRleChzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6bXV0ZXg+KCkpCkBAIC01NTksMTcgKzU1OSwxNyBA
QCBuYW1lc3BhY2UgV1RGIHsKIAogI2lmIEFTU0VSVF9ESVNBQkxFRAogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0
b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5
VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFz
aFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpjaGVj
a0tleShjb25zdCBUJikKKyAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+
OjpjaGVja0tleShjb25zdCBUJikKICAgICB7CiAgICAgfQogCiAjZWxzZQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRy
YWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUg
S2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNoZWNrS2V5
KGNvbnN0IFQmIGtleSkKKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3Is
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmNoZWNr
S2V5KGNvbnN0IFQmIGtleSkKICAgICB7CiAgICAgICAgIGlmICghSGFzaEZ1bmN0aW9uczo6c2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC01ODMs
MTUgKzU4MywxNSBAQCBuYW1lc3BhY2UgV1RGIHsKIAogI2VuZGlmCiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1l
IEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNo
VHJhbnNsYXRvciwgdHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBW
YWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Omxvb2t1
cChjb25zdCBUJiBrZXkpIC0+IFZhbHVlVHlwZSoKKyAgICBpbmxpbmUgYXV0byBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywg
aW5saW5lQ2FwYWNpdHk+Ojpsb29rdXAoY29uc3QgVCYga2V5KSAtPiBWYWx1ZVR5cGUqCiAgICAg
ewogICAgICAgICBjaGVja0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKIAogICAgICAgICB1bnNp
Z25lZCBrID0gMDsKLSAgICAgICAgdW5zaWduZWQgc2l6ZU1hc2sgPSBtX3RhYmxlU2l6ZU1hc2s7
Ci0gICAgICAgIFZhbHVlVHlwZSogdGFibGUgPSBtX3RhYmxlOworICAgICAgICB1bnNpZ25lZCBz
aXplTWFzayA9IG1fc3RvcmFnZS50YWJsZS5zaXplTWFzazsKKyAgICAgICAgVmFsdWVUeXBlKiB0
YWJsZSA9IG1fc3RvcmFnZS50YWJsZS50YWJsZTsKICAgICAgICAgdW5zaWduZWQgaCA9IEhhc2hU
cmFuc2xhdG9yOjpoYXNoKGtleSk7CiAgICAgICAgIHVuc2lnbmVkIGkgPSBoICYgc2l6ZU1hc2s7
CiAKQEAgLTYzOSwxNiArNjM5LDE2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB9CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
RXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVu
YW1lIEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIGF1
dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+Ojpsb29rdXBGb3JXcml0aW5nKGNvbnN0IFQmIGtleSkgLT4gTG9va3VwVHlw
ZQorICAgIGlubGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46Omxvb2t1cEZvcldy
aXRpbmcoY29uc3QgVCYga2V5KSAtPiBMb29rdXBUeXBlCiAgICAgewotICAgICAgICBBU1NFUlQo
bV90YWJsZSk7CisgICAgICAgIEFTU0VSVChtX3N0b3JhZ2UudGFibGUudGFibGUpOwogICAgICAg
ICBjaGVja0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKIAogICAgICAgICB1bnNpZ25lZCBrID0g
MDsKLSAgICAgICAgVmFsdWVUeXBlKiB0YWJsZSA9IG1fdGFibGU7Ci0gICAgICAgIHVuc2lnbmVk
IHNpemVNYXNrID0gbV90YWJsZVNpemVNYXNrOworICAgICAgICBWYWx1ZVR5cGUqIHRhYmxlID0g
bV9zdG9yYWdlLnRhYmxlLnRhYmxlOworICAgICAgICB1bnNpZ25lZCBzaXplTWFzayA9IG1fc3Rv
cmFnZS50YWJsZS5zaXplTWFzazsKICAgICAgICAgdW5zaWduZWQgaCA9IEhhc2hUcmFuc2xhdG9y
OjpoYXNoKGtleSk7CiAgICAgICAgIHVuc2lnbmVkIGkgPSBoICYgc2l6ZU1hc2s7CiAKQEAgLTcw
MCwxNiArNzAwLDE2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB9CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIGF1dG8gSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHM+OjpmdWxsTG9va3VwRm9yV3JpdGluZyhjb25zdCBUJiBrZXkpIC0+IEZ1bGxMb29rdXBUeXBl
CisgICAgaW5saW5lIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6ZnVsbExvb2t1cEZv
cldyaXRpbmcoY29uc3QgVCYga2V5KSAtPiBGdWxsTG9va3VwVHlwZQogICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fdGFibGUpOworICAgICAgICBBU1NFUlQobV9zdG9yYWdlLnRhYmxlLnRhYmxlKTsK
ICAgICAgICAgY2hlY2tLZXk8SGFzaFRyYW5zbGF0b3I+KGtleSk7CiAKICAgICAgICAgdW5zaWdu
ZWQgayA9IDA7Ci0gICAgICAgIFZhbHVlVHlwZSogdGFibGUgPSBtX3RhYmxlOwotICAgICAgICB1
bnNpZ25lZCBzaXplTWFzayA9IG1fdGFibGVTaXplTWFzazsKKyAgICAgICAgVmFsdWVUeXBlKiB0
YWJsZSA9IG1fc3RvcmFnZS50YWJsZS50YWJsZTsKKyAgICAgICAgdW5zaWduZWQgc2l6ZU1hc2sg
PSBtX3N0b3JhZ2UudGFibGUuc2l6ZU1hc2s7CiAgICAgICAgIHVuc2lnbmVkIGggPSBIYXNoVHJh
bnNsYXRvcjo6aGFzaChrZXkpOwogICAgICAgICB1bnNpZ25lZCBpID0gaCAmIHNpemVNYXNrOwog
CkBAIC03ODAsMzAgKzc4MCwzMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgfQogICAgIH07
CiAgICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5
cGVuYW1lIEtleVRyYWl0cz4KLSAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmluaXRpYWxpemVC
dWNrZXQoVmFsdWVUeXBlJiBidWNrZXQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0
eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5
PgorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmluaXRpYWxpemVC
dWNrZXQoVmFsdWVUeXBlJiBidWNrZXQpCiAgICAgewogICAgICAgICBIYXNoVGFibGVCdWNrZXRJ
bml0aWFsaXplcjxUcmFpdHM6OmVtcHR5VmFsdWVJc1plcm8+Ojp0ZW1wbGF0ZSBpbml0aWFsaXpl
PFRyYWl0cz4oYnVja2V0KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlw
ZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+Ci0gICAgQUxXQVlTX0lOTElORSBhdXRvIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6YWRkKFQmJiBrZXksIEV4dHJhJiYgZXh0cmEpIC0+IEFkZFJlc3VsdAorICAgIEFMV0FZU19J
TkxJTkUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjphZGQoVCYmIGtleSwgRXh0cmEm
JiBleHRyYSkgLT4gQWRkUmVzdWx0CiAgICAgewogICAgICAgICBjaGVja0tleTxIYXNoVHJhbnNs
YXRvcj4oa2V5KTsKIAogICAgICAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7CiAKLSAgICAgICAg
aWYgKCFtX3RhYmxlKQorICAgICAgICBpZiAoIW1fc3RvcmFnZS50YWJsZS50YWJsZSkKICAgICAg
ICAgICAgIGV4cGFuZChudWxscHRyKTsKIAogICAgICAgICBpbnRlcm5hbENoZWNrVGFibGVDb25z
aXN0ZW5jeSgpOwogCi0gICAgICAgIEFTU0VSVChtX3RhYmxlKTsKKyAgICAgICAgQVNTRVJUKG1f
c3RvcmFnZS50YWJsZS50YWJsZSk7CiAKICAgICAgICAgdW5zaWduZWQgayA9IDA7Ci0gICAgICAg
IFZhbHVlVHlwZSogdGFibGUgPSBtX3RhYmxlOwotICAgICAgICB1bnNpZ25lZCBzaXplTWFzayA9
IG1fdGFibGVTaXplTWFzazsKKyAgICAgICAgVmFsdWVUeXBlKiB0YWJsZSA9IG1fc3RvcmFnZS50
YWJsZS50YWJsZTsKKyAgICAgICAgdW5zaWduZWQgc2l6ZU1hc2sgPSBtX3N0b3JhZ2UudGFibGUu
c2l6ZU1hc2s7CiAgICAgICAgIHVuc2lnbmVkIGggPSBIYXNoVHJhbnNsYXRvcjo6aGFzaChrZXkp
OwogICAgICAgICB1bnNpZ25lZCBpID0gaCAmIHNpemVNYXNrOwogCkBAIC04NTcsNyArODU3LDcg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIGlmIChkZWxldGVkRW50cnkpIHsKICAgICAgICAg
ICAgIGluaXRpYWxpemVCdWNrZXQoKmRlbGV0ZWRFbnRyeSk7CiAgICAgICAgICAgICBlbnRyeSA9
IGRlbGV0ZWRFbnRyeTsKLSAgICAgICAgICAgIC0tbV9kZWxldGVkQ291bnQ7IAorICAgICAgICAg
ICAgLS1tX3N0b3JhZ2UudGFibGUuZGVsZXRlZENvdW50OwogICAgICAgICB9CiAKICAgICAgICAg
SGFzaFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSgqZW50cnksIHN0ZDo6Zm9yd2FyZDxUPihrZXkpLCBz
dGQ6OmZvcndhcmQ8RXh0cmE+KGV4dHJhKSk7CkBAIC04NzEsMTUgKzg3MSwxNSBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRlcmF0b3Io
ZW50cnkpLCB0cnVlKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1
bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxp
bmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5h
bWUgVCwgdHlwZW5hbWUgRXh0cmE+Ci0gICAgaW5saW5lIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphZGRQYXNz
aW5nSGFzaENvZGUoVCYmIGtleSwgRXh0cmEmJiBleHRyYSkgLT4gQWRkUmVzdWx0CisgICAgaW5s
aW5lIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6YWRkUGFzc2luZ0hhc2hDb2RlKFQm
JiBrZXksIEV4dHJhJiYgZXh0cmEpIC0+IEFkZFJlc3VsdAogICAgIHsKICAgICAgICAgY2hlY2tL
ZXk8SGFzaFRyYW5zbGF0b3I+KGtleSk7CiAKICAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygp
OwogCi0gICAgICAgIGlmICghbV90YWJsZSkKKyAgICAgICAgaWYgKCFtX3N0b3JhZ2UudGFibGUu
dGFibGUpCiAgICAgICAgICAgICBleHBhbmQoKTsKIAogICAgICAgICBpbnRlcm5hbENoZWNrVGFi
bGVDb25zaXN0ZW5jeSgpOwpAQCAtODk1LDcgKzg5NSw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAg
ICAgICAKICAgICAgICAgaWYgKGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKSB7CiAgICAgICAgICAg
ICBpbml0aWFsaXplQnVja2V0KCplbnRyeSk7Ci0gICAgICAgICAgICAtLW1fZGVsZXRlZENvdW50
OworICAgICAgICAgICAgLS1tX3N0b3JhZ2UudGFibGUuZGVsZXRlZENvdW50OwogICAgICAgICB9
CiAKICAgICAgICAgSGFzaFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSgqZW50cnksIHN0ZDo6Zm9yd2Fy
ZDxUPihrZXkpLCBzdGQ6OmZvcndhcmQ8RXh0cmE+KGV4dHJhKSwgaCk7CkBAIC05MDksMTAgKzkw
OSwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25v
d25Hb29kSXRlcmF0b3IoZW50cnkpLCB0cnVlKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGlu
bGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPjo6cmVpbnNlcnQoVmFsdWVUeXBlJiYgZW50cnkpIC0+IFZhbHVl
VHlwZSoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgaW5saW5lIGF1dG8g
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6cmVpbnNlcnQoVmFsdWVUeXBlJiYgZW50cnkpIC0+
IFZhbHVlVHlwZSoKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3RhYmxlKTsKKyAgICAgICAgQVNT
RVJUKG1fc3RvcmFnZS50YWJsZS50YWJsZSk7CiAgICAgICAgIEFTU0VSVCghbG9va3VwRm9yV3Jp
dGluZyhFeHRyYWN0b3I6OmV4dHJhY3QoZW50cnkpKS5zZWNvbmQpOwogICAgICAgICBBU1NFUlQo
IWlzRGVsZXRlZEJ1Y2tldCgqKGxvb2t1cEZvcldyaXRpbmcoRXh0cmFjdG9yOjpleHRyYWN0KGVu
dHJ5KSkuZmlyc3QpKSk7CiAjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFMKQEAgLTkyOSwxMSArOTI5
LDExIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZXR1cm4gbmV3RW50cnk7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiAKLSAgICBhdXRvIEhhc2hU
YWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJh
aXRzPjo6ZmluZChjb25zdCBUJiBrZXkpIC0+IGl0ZXJhdG9yCisgICAgYXV0byBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywg
aW5saW5lQ2FwYWNpdHk+OjpmaW5kKGNvbnN0IFQmIGtleSkgLT4gaXRlcmF0b3IKICAgICB7Ci0g
ICAgICAgIGlmICghbV90YWJsZSkKKyAgICAgICAgaWYgKCFtX3N0b3JhZ2UudGFibGUudGFibGUp
CiAgICAgICAgICAgICByZXR1cm4gZW5kKCk7CiAKICAgICAgICAgVmFsdWVUeXBlKiBlbnRyeSA9
IGxvb2t1cDxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKQEAgLTk0MywxMSArOTQzLDExIEBAIG5hbWVz
cGFjZSBXVEYgewogICAgICAgICByZXR1cm4gbWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KTsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+IAotICAgIGF1
dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+OjpmaW5kKGNvbnN0IFQmIGtleSkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IK
KyAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmZpbmQoY29uc3QgVCYga2V5KSBj
b25zdCAtPiBjb25zdF9pdGVyYXRvcgogICAgIHsKLSAgICAgICAgaWYgKCFtX3RhYmxlKQorICAg
ICAgICBpZiAoIW1fc3RvcmFnZS50YWJsZS50YWJsZSkKICAgICAgICAgICAgIHJldHVybiBlbmQo
KTsKIAogICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0gY29uc3RfY2FzdDxIYXNoVGFibGUqPih0
aGlzKS0+bG9va3VwPEhhc2hUcmFuc2xhdG9yPihrZXkpOwpAQCAtOTU3LDMzICs5NTcsMzMgQEAg
bmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiBtYWtlS25vd25Hb29kQ29uc3RJdGVyYXRv
cihlbnRyeSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHk+CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBU
PiAKLSAgICBib29sIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y29udGFpbnMoY29uc3QgVCYga2V5KSBjb25zdAorICAg
IGJvb2wgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6Y29udGFpbnMoY29uc3QgVCYga2V5KSBj
b25zdAogICAgIHsKLSAgICAgICAgaWYgKCFtX3RhYmxlKQorICAgICAgICBpZiAoIW1fc3RvcmFn
ZS50YWJsZS50YWJsZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICByZXR1
cm4gY29uc3RfY2FzdDxIYXNoVGFibGUqPih0aGlzKS0+bG9va3VwPEhhc2hUcmFuc2xhdG9yPihr
ZXkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZUFuZElu
dmFsaWRhdGVXaXRob3V0RW50cnlDb25zaXN0ZW5jeUNoZWNrKFZhbHVlVHlwZSogcG9zKQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVD
YXBhY2l0eT46OnJlbW92ZUFuZEludmFsaWRhdGVXaXRob3V0RW50cnlDb25zaXN0ZW5jeUNoZWNr
KFZhbHVlVHlwZSogcG9zKQogICAgIHsKICAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwog
ICAgICAgICByZW1vdmUocG9zKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIHZvaWQgSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHM+OjpyZW1vdmVBbmRJbnZhbGlkYXRlKFZhbHVlVHlwZSogcG9zKQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eT4KKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OnJl
bW92ZUFuZEludmFsaWRhdGUoVmFsdWVUeXBlKiBwb3MpCiAgICAgewogICAgICAgICBpbnZhbGlk
YXRlSXRlcmF0b3JzKCk7CiAgICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7
CiAgICAgICAgIHJlbW92ZShwb3MpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtl
eSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0
aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9pZCBIYXNo
VGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRy
YWl0cz46OnJlbW92ZShWYWx1ZVR5cGUqIHBvcykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHk+CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjpyZW1vdmUoVmFsdWVU
eXBlKiBwb3MpCiAgICAgewogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTCiAgICAgICAgICsrSGFz
aFRhYmxlU3RhdHM6Om51bVJlbW92ZXM7CkBAIC05OTMsNyArOTkzLDcgQEAgbmFtZXNwYWNlIFdU
RiB7CiAjZW5kaWYKIAogICAgICAgICBkZWxldGVCdWNrZXQoKnBvcyk7Ci0gICAgICAgICsrbV9k
ZWxldGVkQ291bnQ7CisgICAgICAgICsrbV9zdG9yYWdlLnRhYmxlLmRlbGV0ZWRDb3VudDsKICAg
ICAgICAgLS1tX2tleUNvdW50OwogCiAgICAgICAgIGlmIChzaG91bGRTaHJpbmsoKSkKQEAgLTEw
MDIsOCArMTAwMiw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBpbnRlcm5hbENoZWNrVGFi
bGVDb25zaXN0ZW5jeSgpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgaW5saW5lIHZvaWQgSGFz
aFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHM+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFj
aXR5PgorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OnJlbW92ZShp
dGVyYXRvciBpdCkKICAgICB7CiAgICAgICAgIGlmIChpdCA9PSBlbmQoKSkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTEwMTEsOCArMTAxMSw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBy
ZW1vdmVBbmRJbnZhbGlkYXRlKGNvbnN0X2Nhc3Q8VmFsdWVUeXBlKj4oaXQubV9pdGVyYXRvci5t
X3Bvc2l0aW9uKSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICBpbmxpbmUgdm9pZCBIYXNoVGFi
bGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz46OnJlbW92ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soaXRlcmF0b3IgaXQpCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxL
ZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBp
bmxpbmVDYXBhY2l0eT46OnJlbW92ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soaXRlcmF0
b3IgaXQpCiAgICAgewogICAgICAgICBpZiAoaXQgPT0gZW5kKCkpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0xMDIwLDggKzEwMjAsOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmVtb3Zl
QW5kSW52YWxpZGF0ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soY29uc3RfY2FzdDxWYWx1
ZVR5cGUqPihpdC5tX2l0ZXJhdG9yLm1fcG9zaXRpb24pKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgot
ICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVtb3ZlV2l0aG91dEVudHJ5Q29uc2lzdGVuY3lD
aGVjayhjb25zdF9pdGVyYXRvciBpdCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CisgICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6cmVtb3ZlV2l0aG91
dEVudHJ5Q29uc2lzdGVuY3lDaGVjayhjb25zdF9pdGVyYXRvciBpdCkKICAgICB7CiAgICAgICAg
IGlmIChpdCA9PSBlbmQoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwMjksMjUgKzEwMjks
MjUgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJlbW92ZUFuZEludmFsaWRhdGVXaXRob3V0
RW50cnlDb25zaXN0ZW5jeUNoZWNrKGNvbnN0X2Nhc3Q8VmFsdWVUeXBlKj4oaXQubV9wb3NpdGlv
bikpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpyZW1v
dmUoY29uc3QgS2V5VHlwZSYga2V5KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlw
ZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4K
KyAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjpyZW1vdmUoY29uc3Qg
S2V5VHlwZSYga2V5KQogICAgIHsKICAgICAgICAgcmVtb3ZlKGZpbmQoa2V5KSk7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZUlm
KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGlu
ZUNhcGFjaXR5Pjo6cmVtb3ZlSWYoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fdGFibGVTaXplOyBpLS07KSB7Ci0gICAgICAgICAgICBp
ZiAoaXNFbXB0eU9yRGVsZXRlZEJ1Y2tldChtX3RhYmxlW2ldKSkKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gbV9zdG9yYWdlLnRhYmxlLnNpemU7IGktLTspIHsKKyAgICAgICAgICAgIGlmIChp
c0VtcHR5T3JEZWxldGVkQnVja2V0KG1fc3RvcmFnZS50YWJsZS50YWJsZVtpXSkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghZnVuY3Rv
cihtX3RhYmxlW2ldKSkKKyAgICAgICAgICAgIGlmICghZnVuY3RvcihtX3N0b3JhZ2UudGFibGUu
dGFibGVbaV0pKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBkZWxldGVCdWNrZXQobV90YWJsZVtpXSk7Ci0gICAgICAgICAgICArK21fZGVsZXRl
ZENvdW50OworICAgICAgICAgICAgZGVsZXRlQnVja2V0KG1fc3RvcmFnZS50YWJsZS50YWJsZVtp
XSk7CisgICAgICAgICAgICArK21fc3RvcmFnZS50YWJsZS5kZWxldGVkQ291bnQ7CiAgICAgICAg
ICAgICAtLW1fa2V5Q291bnQ7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xMDU3LDggKzEwNTcs
OCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVu
Y3koKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphbGxvY2F0ZVRh
YmxlKHVuc2lnbmVkIHNpemUpIC0+IFZhbHVlVHlwZSoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+CisgICAgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjphbGxvY2F0ZVRh
YmxlKHVuc2lnbmVkIHNpemUpIC0+IFZhbHVlVHlwZSoKICAgICB7CiAgICAgICAgIC8vIHdvdWxk
IHVzZSBhIHRlbXBsYXRlIG1lbWJlciBmdW5jdGlvbiB3aXRoIGV4cGxpY2l0IHNwZWNpYWxpemF0
aW9ucyBoZXJlLCBidXQKICAgICAgICAgLy8gZ2NjIGRvZXNuJ3QgYXBwZWFyIHRvIHN1cHBvcnQg
dGhhdApAQCAtMTA3MCw4ICsxMDcwLDggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6ZGVhbGxv
Y2F0ZVRhYmxlKFZhbHVlVHlwZSogdGFibGUsIHVuc2lnbmVkIHNpemUpCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6
ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6
ZGVhbGxvY2F0ZVRhYmxlKFZhbHVlVHlwZSogdGFibGUsIHVuc2lnbmVkIHNpemUpCiAgICAgewog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgICAg
ICBpZiAoIWlzRGVsZXRlZEJ1Y2tldCh0YWJsZVtpXSkpCkBAIC0xMDgwLDI3ICsxMDgwLDI3IEBA
IG5hbWVzcGFjZSBXVEYgewogICAgICAgICBmYXN0RnJlZSh0YWJsZSk7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cz4KLSAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6ZXhwYW5kKFZhbHVlVHlwZSogZW50cnkpIC0+IFZh
bHVlVHlwZSoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgYXV0byBIYXNo
VGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRy
YWl0cywgaW5saW5lQ2FwYWNpdHk+OjpleHBhbmQoVmFsdWVUeXBlKiBlbnRyeSkgLT4gVmFsdWVU
eXBlKgogICAgIHsKICAgICAgICAgdW5zaWduZWQgbmV3U2l6ZTsKLSAgICAgICAgaWYgKG1fdGFi
bGVTaXplID09IDApCisgICAgICAgIGlmICghbV9zdG9yYWdlLnRhYmxlLnNpemUpCiAgICAgICAg
ICAgICBuZXdTaXplID0gS2V5VHJhaXRzOjptaW5pbXVtVGFibGVTaXplOwogICAgICAgICBlbHNl
IGlmIChtdXN0UmVoYXNoSW5QbGFjZSgpKQotICAgICAgICAgICAgbmV3U2l6ZSA9IG1fdGFibGVT
aXplOworICAgICAgICAgICAgbmV3U2l6ZSA9IG1fc3RvcmFnZS50YWJsZS5zaXplOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBuZXdTaXplID0gbV90YWJsZVNpemUgKiAyOworICAgICAgICAg
ICAgbmV3U2l6ZSA9IG1fc3RvcmFnZS50YWJsZS5zaXplICogMjsKIAogICAgICAgICByZXR1cm4g
cmVoYXNoKG5ld1NpemUsIGVudHJ5KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGF1dG8gSGFz
aFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHM+OjpyZWhhc2godW5zaWduZWQgbmV3VGFibGVTaXplLCBWYWx1ZVR5cGUqIGVudHJ5KSAt
PiBWYWx1ZVR5cGUqCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFp
dHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIGF1dG8g
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6cmVoYXNoKHVuc2lnbmVkIG5ld1RhYmxlU2l6ZSwg
VmFsdWVUeXBlKiBlbnRyeSkgLT4gVmFsdWVUeXBlKgogICAgIHsKICAgICAgICAgaW50ZXJuYWxD
aGVja1RhYmxlQ29uc2lzdGVuY3lFeGNlcHRTaXplKCk7CiAKLSAgICAgICAgdW5zaWduZWQgb2xk
VGFibGVTaXplID0gbV90YWJsZVNpemU7Ci0gICAgICAgIFZhbHVlVHlwZSogb2xkVGFibGUgPSBt
X3RhYmxlOworICAgICAgICB1bnNpZ25lZCBvbGRUYWJsZVNpemUgPSBtX3N0b3JhZ2UudGFibGUu
c2l6ZTsKKyAgICAgICAgVmFsdWVUeXBlKiBvbGRUYWJsZSA9IG1fc3RvcmFnZS50YWJsZS50YWJs
ZTsKIAogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTCiAgICAgICAgIGlmIChvbGRUYWJsZVNpemUg
IT0gMCkKQEAgLTExMTIsOSArMTExMiw5IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAg
KyttX3N0YXRzLT5udW1SZWhhc2hlczsKICNlbmRpZgogCi0gICAgICAgIG1fdGFibGVTaXplID0g
bmV3VGFibGVTaXplOwotICAgICAgICBtX3RhYmxlU2l6ZU1hc2sgPSBuZXdUYWJsZVNpemUgLSAx
OwotICAgICAgICBtX3RhYmxlID0gYWxsb2NhdGVUYWJsZShuZXdUYWJsZVNpemUpOworICAgICAg
ICBtX3N0b3JhZ2UudGFibGUuc2l6ZSA9IG5ld1RhYmxlU2l6ZTsKKyAgICAgICAgbV9zdG9yYWdl
LnRhYmxlLnNpemVNYXNrID0gbmV3VGFibGVTaXplIC0gMTsKKyAgICAgICAgbV9zdG9yYWdlLnRh
YmxlLnRhYmxlID0gYWxsb2NhdGVUYWJsZShuZXdUYWJsZVNpemUpOwogCiAgICAgICAgIFZhbHVl
KiBuZXdFbnRyeSA9IG51bGxwdHI7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0g
b2xkVGFibGVTaXplOyArK2kpIHsKQEAgLTExMzAsNyArMTEzMCw3IEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgbV9kZWxldGVkQ291bnQgPSAw
OworICAgICAgICBtX3N0b3JhZ2UudGFibGUuZGVsZXRlZENvdW50ID0gMDsKIAogICAgICAgICBk
ZWFsbG9jYXRlVGFibGUob2xkVGFibGUsIG9sZFRhYmxlU2l6ZSk7CiAKQEAgLTExMzgsMjcgKzEx
MzgsMjQgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiBuZXdFbnRyeTsKICAgICB9
CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzPgotICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpjbGVhcigpCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6
ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6
Y2xlYXIoKQogICAgIHsKICAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwotICAgICAgICBp
ZiAoIW1fdGFibGUpCisgICAgICAgIGlmICghbV9zdG9yYWdlLnRhYmxlLnRhYmxlKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGRlYWxsb2NhdGVUYWJsZShtX3RhYmxlLCBtX3RhYmxl
U2l6ZSk7Ci0gICAgICAgIG1fdGFibGUgPSAwOwotICAgICAgICBtX3RhYmxlU2l6ZSA9IDA7Ci0g
ICAgICAgIG1fdGFibGVTaXplTWFzayA9IDA7CisgICAgICAgIGRlYWxsb2NhdGVUYWJsZShtX3N0
b3JhZ2UudGFibGUudGFibGUsIG1fc3RvcmFnZS50YWJsZS5zaXplKTsKKyAgICAgICAgbV9zdG9y
YWdlLnRhYmxlLnRhYmxlID0gbnVsbHB0cjsKKyAgICAgICAgbV9zdG9yYWdlLnRhYmxlLmRlbGV0
ZWRDb3VudCA9IDA7CisgICAgICAgIG1fc3RvcmFnZS50YWJsZS5zaXplID0gMDsKKyAgICAgICAg
bV9zdG9yYWdlLnRhYmxlLnNpemVNYXNrID0gMDsKICAgICAgICAgbV9rZXlDb3VudCA9IDA7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5
cGVuYW1lIEtleVRyYWl0cz4KLSAgICBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Okhhc2hUYWJsZShjb25zdCBIYXNoVGFi
bGUmIG90aGVyKQotICAgICAgICA6IG1fdGFibGUoMCkKLSAgICAgICAgLCBtX3RhYmxlU2l6ZSgw
KQotICAgICAgICAsIG1fdGFibGVTaXplTWFzaygwKQotICAgICAgICAsIG1fa2V5Q291bnQoMCkK
LSAgICAgICAgLCBtX2RlbGV0ZWRDb3VudCgwKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwg
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eT4KKyAgICBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjpIYXNoVGFibGUoY29uc3QgSGFz
aFRhYmxlJiBvdGhlcikKKyAgICAgICAgOiBtX2tleUNvdW50KDApCiAjaWYgQ0hFQ0tfSEFTSFRB
QkxFX0lURVJBVE9SUwogICAgICAgICAsIG1faXRlcmF0b3JzKDApCiAgICAgICAgICwgbV9tdXRl
eChzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6bXV0ZXg+KCkpCkBAIC0xMTc2LDI1ICsxMTczLDI1IEBA
IG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgYWRkKCppdCk7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0
cz4KLSAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6c3dhcChIYXNoVGFibGUmIG90aGVyKQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBF
eHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0
eT46OnN3YXAoSGFzaFRhYmxlJiBvdGhlcikKICAgICB7CiAgICAgICAgIGludmFsaWRhdGVJdGVy
YXRvcnMoKTsKICAgICAgICAgb3RoZXIuaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwogCi0gICAgICAg
IHN0ZDo6c3dhcChtX3RhYmxlLCBvdGhlci5tX3RhYmxlKTsKLSAgICAgICAgc3RkOjpzd2FwKG1f
dGFibGVTaXplLCBvdGhlci5tX3RhYmxlU2l6ZSk7Ci0gICAgICAgIHN0ZDo6c3dhcChtX3RhYmxl
U2l6ZU1hc2ssIG90aGVyLm1fdGFibGVTaXplTWFzayk7CisgICAgICAgIHN0ZDo6c3dhcChtX3N0
b3JhZ2UudGFibGUudGFibGUsIG90aGVyLm1fc3RvcmFnZS50YWJsZS50YWJsZSk7CisgICAgICAg
IHN0ZDo6c3dhcChtX3N0b3JhZ2UudGFibGUuc2l6ZSwgb3RoZXIubV9zdG9yYWdlLnRhYmxlLnNp
emUpOworICAgICAgICBzdGQ6OnN3YXAobV9zdG9yYWdlLnRhYmxlLnNpemVNYXNrLCBvdGhlci5t
X3N0b3JhZ2UudGFibGUuc2l6ZU1hc2spOwogICAgICAgICBzdGQ6OnN3YXAobV9rZXlDb3VudCwg
b3RoZXIubV9rZXlDb3VudCk7Ci0gICAgICAgIHN0ZDo6c3dhcChtX2RlbGV0ZWRDb3VudCwgb3Ro
ZXIubV9kZWxldGVkQ291bnQpOworICAgICAgICBzdGQ6OnN3YXAobV9zdG9yYWdlLnRhYmxlLmRl
bGV0ZWRDb3VudCwgb3RoZXIubV9zdG9yYWdlLnRhYmxlLmRlbGV0ZWRDb3VudCk7CiAKICNpZiBE
VU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUKICAgICAgICAgbV9zdGF0cy5zd2FwKG90aGVy
Lm1fc3RhdHMpOwogI2VuZGlmCiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICBhdXRvIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6b3BlcmF0b3I9KGNvbnN0IEhhc2hUYWJsZSYgb3RoZXIpIC0+IEhhc2hUYWJsZSYKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3Is
IHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJh
aXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2Fw
YWNpdHk+OjpvcGVyYXRvcj0oY29uc3QgSGFzaFRhYmxlJiBvdGhlcikgLT4gSGFzaFRhYmxlJgog
ICAgIHsKICAgICAgICAgLy8gRklYTUU6IEl0J3MgbGlrZWx5IHRoYXQgdGhpcyBjYW4gYmUgaW1w
cm92ZWQsIGZvciBzdGF0aWMgYW5hbHlzZXMgdGhhdCB1c2UKICAgICAgICAgLy8gSGFzaFNldHMu
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg0NTUKQEAgLTEyMDMs
OCArMTIwMCw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
RXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVu
YW1lIEtleVRyYWl0cz4KLSAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rv
ciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUoSGFzaFRhYmxl
JiYgb3RoZXIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMs
IHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIGlubGluZSBI
YXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjpIYXNoVGFibGUoSGFzaFRhYmxlJiYgb3RoZXIpCiAj
aWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUwogICAgICAgICA6IG1faXRlcmF0b3JzKG51bGxw
dHIpCiAgICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6bXV0ZXg+KCkpCkBA
IC0xMjEyLDE3ICsxMjA5LDE3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHsKICAgICAgICAgb3Ro
ZXIuaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwogCi0gICAgICAgIG1fdGFibGUgPSBvdGhlci5tX3Rh
YmxlOwotICAgICAgICBtX3RhYmxlU2l6ZSA9IG90aGVyLm1fdGFibGVTaXplOwotICAgICAgICBt
X3RhYmxlU2l6ZU1hc2sgPSBvdGhlci5tX3RhYmxlU2l6ZU1hc2s7CisgICAgICAgIG1fc3RvcmFn
ZS50YWJsZS50YWJsZSA9IG90aGVyLm1fc3RvcmFnZS50YWJsZS50YWJsZTsKKyAgICAgICAgbV9z
dG9yYWdlLnRhYmxlLnNpemUgPSBvdGhlci5tX3N0b3JhZ2UudGFibGUuc2l6ZTsKKyAgICAgICAg
bV9zdG9yYWdlLnRhYmxlLnNpemVNYXNrID0gb3RoZXIubV9zdG9yYWdlLnRhYmxlLnNpemVNYXNr
OwogICAgICAgICBtX2tleUNvdW50ID0gb3RoZXIubV9rZXlDb3VudDsKLSAgICAgICAgbV9kZWxl
dGVkQ291bnQgPSBvdGhlci5tX2RlbGV0ZWRDb3VudDsKKyAgICAgICAgbV9zdG9yYWdlLnRhYmxl
LmRlbGV0ZWRDb3VudCA9IG90aGVyLm1fc3RvcmFnZS50YWJsZS5kZWxldGVkQ291bnQ7CiAKLSAg
ICAgICAgb3RoZXIubV90YWJsZSA9IG51bGxwdHI7Ci0gICAgICAgIG90aGVyLm1fdGFibGVTaXpl
ID0gMDsKLSAgICAgICAgb3RoZXIubV90YWJsZVNpemVNYXNrID0gMDsKKyAgICAgICAgb3RoZXIu
bV9zdG9yYWdlLnRhYmxlLnRhYmxlID0gbnVsbHB0cjsKKyAgICAgICAgb3RoZXIubV9zdG9yYWdl
LnRhYmxlLnNpemUgPSAwOworICAgICAgICBvdGhlci5tX3N0b3JhZ2UudGFibGUuc2l6ZU1hc2sg
PSAwOwogICAgICAgICBvdGhlci5tX2tleUNvdW50ID0gMDsKLSAgICAgICAgb3RoZXIubV9kZWxl
dGVkQ291bnQgPSAwOworICAgICAgICBvdGhlci5tX3N0b3JhZ2UudGFibGUuZGVsZXRlZENvdW50
ID0gMDsKIAogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQogICAgICAgICBtX3N0
YXRzID0gV1RGOjptb3ZlKG90aGVyLm1fc3RhdHMpOwpAQCAtMTIzMCw4ICsxMjI3LDggQEAgbmFt
ZXNwYWNlIFdURiB7CiAjZW5kaWYKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGlubGluZSBhdXRv
IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywg
S2V5VHJhaXRzPjo6b3BlcmF0b3I9KEhhc2hUYWJsZSYmIG90aGVyKSAtPiBIYXNoVGFibGUmCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFj
dG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtl
eVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIGlubGluZSBhdXRvIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
LCBpbmxpbmVDYXBhY2l0eT46Om9wZXJhdG9yPShIYXNoVGFibGUmJiBvdGhlcikgLT4gSGFzaFRh
YmxlJgogICAgIHsKICAgICAgICAgSGFzaFRhYmxlIHRlbXAgPSBXVEY6Om1vdmUob3RoZXIpOwog
ICAgICAgICBzd2FwKHRlbXApOwpAQCAtMTI0MCwyNCArMTIzNywyNCBAQCBuYW1lc3BhY2UgV1RG
IHsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwg
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9pZCBIYXNoVGFi
bGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz46OmNoZWNrVGFibGVDb25zaXN0ZW5jeSgpIGNvbnN0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
S2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5PgorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6Y2hlY2tUYWJs
ZUNvbnNpc3RlbmN5KCkgY29uc3QKICAgICB7CiAgICAgICAgIGNoZWNrVGFibGVDb25zaXN0ZW5j
eUV4Y2VwdFNpemUoKTsKLSAgICAgICAgQVNTRVJUKCFtX3RhYmxlIHx8ICFzaG91bGRFeHBhbmQo
KSk7CisgICAgICAgIEFTU0VSVCghbV9zdG9yYWdlLnRhYmxlLnRhYmxlIHx8ICFzaG91bGRFeHBh
bmQoKSk7CiAgICAgICAgIEFTU0VSVCghc2hvdWxkU2hyaW5rKCkpOwogICAgIH0KIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+Ci0gICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUo
KSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICB2b2lkIEhhc2hU
YWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJh
aXRzLCBpbmxpbmVDYXBhY2l0eT46OmNoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKSBj
b25zdAogICAgIHsKLSAgICAgICAgaWYgKCFtX3RhYmxlKQorICAgICAgICBpZiAoIW1fc3RvcmFn
ZS50YWJsZS50YWJsZSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB1bnNpZ25lZCBj
b3VudCA9IDA7CiAgICAgICAgIHVuc2lnbmVkIGRlbGV0ZWRDb3VudCA9IDA7Ci0gICAgICAgIGZv
ciAodW5zaWduZWQgaiA9IDA7IGogPCBtX3RhYmxlU2l6ZTsgKytqKSB7Ci0gICAgICAgICAgICBW
YWx1ZVR5cGUqIGVudHJ5ID0gbV90YWJsZSArIGo7CisgICAgICAgIGZvciAodW5zaWduZWQgaiA9
IDA7IGogPCBtX3N0b3JhZ2UudGFibGUuc2l6ZTsgKytqKSB7CisgICAgICAgICAgICBWYWx1ZVR5
cGUqIGVudHJ5ID0gbV9zdG9yYWdlLnRhYmxlLnRhYmxlICsgajsKICAgICAgICAgICAgIGlmIChp
c0VtcHR5QnVja2V0KCplbnRyeSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTEy
NzQsMTggKzEyNzEsMTggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIH0KIAogICAgICAgICBB
U1NFUlQoY291bnQgPT0gbV9rZXlDb3VudCk7Ci0gICAgICAgIEFTU0VSVChkZWxldGVkQ291bnQg
PT0gbV9kZWxldGVkQ291bnQpOwotICAgICAgICBBU1NFUlQobV90YWJsZVNpemUgPj0gS2V5VHJh
aXRzOjptaW5pbXVtVGFibGVTaXplKTsKLSAgICAgICAgQVNTRVJUKG1fdGFibGVTaXplTWFzayk7
Ci0gICAgICAgIEFTU0VSVChtX3RhYmxlU2l6ZSA9PSBtX3RhYmxlU2l6ZU1hc2sgKyAxKTsKKyAg
ICAgICAgQVNTRVJUKGRlbGV0ZWRDb3VudCA9PSBtX3N0b3JhZ2UudGFibGUuZGVsZXRlZENvdW50
KTsKKyAgICAgICAgQVNTRVJUKG1fc3RvcmFnZS50YWJsZS5zaXplID49IEtleVRyYWl0czo6bWlu
aW11bVRhYmxlU2l6ZSk7CisgICAgICAgIEFTU0VSVChtX3N0b3JhZ2UudGFibGUuc2l6ZU1hc2sp
OworICAgICAgICBBU1NFUlQobV9zdG9yYWdlLnRhYmxlLnNpemUgPT0gbV9zdG9yYWdlLnRhYmxl
LnNpemVNYXNrICsgMSk7CiAgICAgfQogCiAjZW5kaWYgLy8gQVNTRVJUX0RJU0FCTEVECiAKICNp
ZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIHZvaWQgSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHM+OjppbnZhbGlkYXRlSXRlcmF0b3JzKCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNp
dHk+CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjppbnZhbGlkYXRlSXRlcmF0
b3JzKCkKICAgICB7CiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrKCpt
X211dGV4KTsKICAgICAgICAgY29uc3RfaXRlcmF0b3IqIG5leHQ7CkBAIC0xMjk4LDkgKzEyOTUs
OSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgbV9pdGVyYXRvcnMgPSAwOwogICAgIH0KIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+Ci0gICAgdm9pZCBhZGRJdGVyYXRvcihjb25zdCBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qIHRhYmxlLAot
ICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiBpdCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHk+CisgICAgdm9pZCBhZGRJdGVyYXRvcihjb25zdCBIYXNoVGFibGU8S2V5LCBW
YWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5l
Q2FwYWNpdHk+KiB0YWJsZSwKKyAgICAgICAgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVD
YXBhY2l0eT4qIGl0KQogICAgIHsKICAgICAgICAgaXQtPm1fdGFibGUgPSB0YWJsZTsKICAgICAg
ICAgaXQtPm1fcHJldmlvdXMgPSAwOwpAQCAtMTMyMCw4ICsxMzE3LDggQEAgbmFtZXNwYWNlIFdU
RiB7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIHZvaWQgcmVtb3ZlSXRlcmF0
b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiogaXQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNh
cGFjaXR5PgorICAgIHZvaWQgcmVtb3ZlSXRlcmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxL
ZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBp
bmxpbmVDYXBhY2l0eT4qIGl0KQogICAgIHsKICAgICAgICAgLy8gRGVsZXRlIGl0ZXJhdG9yIGZy
b20gZG91Ymx5LWxpbmtlZCBsaXN0IG9mIGl0ZXJhdG9ycy4KICAgICAgICAgaWYgKCFpdC0+bV90
YWJsZSkgewpJbmRleDogU291cmNlL1dURi93dGYvTGlzdEhhc2hTZXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCShyZXZpc2lvbiAxODIwODkpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAxMiwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTIsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExLCBCZW5qYW1pbiBQb3Vs
YWluIDxpa2lwb3VAZ21haWwuY29tPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTM4LDE3ICszOCwxNyBAQCBu
YW1lc3BhY2UgV1RGIHsKIC8vIGd1YXJhbnRlZWQgc2FmZSBhZ2FpbnN0IG11dGF0aW9uIG9mIHRo
ZSBMaXN0SGFzaFNldCwgZXhjZXB0IGZvcgogLy8gcmVtb3ZhbCBvZiB0aGUgaXRlbSBjdXJyZW50
bHkgcG9pbnRlZCB0byBieSBhIGdpdmVuIGl0ZXJhdG9yLgogCi10ZW1wbGF0ZTx0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4gY2xhc3MgTGlzdEhhc2hTZXQ7Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgc2l6ZV90IGlubGluZUNh
cGFjaXR5PiBjbGFzcyBMaXN0SGFzaFNldDsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcs
IHR5cGVuYW1lIEhhc2hBcmc+IGNsYXNzIExpc3RIYXNoU2V0SXRlcmF0b3I7Ci10ZW1wbGF0ZTx0
eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZz4gY2xhc3MgTGlzdEhhc2hTZXRDb25z
dEl0ZXJhdG9yOwordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gY2xhc3MgTGlzdEhhc2hTZXRJdGVyYXRvcjsKK3RlbXBs
YXRlPHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHk+IGNsYXNzIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcjsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWVBcmc+IHN0cnVjdCBMaXN0SGFzaFNldE5vZGU7CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEhhc2hBcmc+IHN0cnVjdCBMaXN0SGFzaFNldE5vZGVIYXNoRnVuY3Rpb25zOwogdGVtcGxhdGU8
dHlwZW5hbWUgSGFzaEFyZz4gc3RydWN0IExpc3RIYXNoU2V0VHJhbnNsYXRvcjsKIAotdGVtcGxh
dGU8dHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcgPSB0eXBlbmFtZSBEZWZhdWx0
SGFzaDxWYWx1ZUFyZz46Okhhc2g+IGNsYXNzIExpc3RIYXNoU2V0IHsKK3RlbXBsYXRlPHR5cGVu
YW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8VmFs
dWVBcmc+OjpIYXNoLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkgPSAwPiBjbGFzcyBMaXN0SGFzaFNl
dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwcml2YXRlOgogICAgIHR5cGVkZWYg
TGlzdEhhc2hTZXROb2RlPFZhbHVlQXJnPiBOb2RlOwpAQCAtNjIsOSArNjIsOSBAQCBwcml2YXRl
OgogcHVibGljOgogICAgIHR5cGVkZWYgVmFsdWVBcmcgVmFsdWVUeXBlOwogCi0gICAgdHlwZWRl
ZiBMaXN0SGFzaFNldEl0ZXJhdG9yPFZhbHVlVHlwZSwgSGFzaEFyZz4gaXRlcmF0b3I7Ci0gICAg
dHlwZWRlZiBMaXN0SGFzaFNldENvbnN0SXRlcmF0b3I8VmFsdWVUeXBlLCBIYXNoQXJnPiBjb25z
dF9pdGVyYXRvcjsKLSAgICBmcmllbmQgY2xhc3MgTGlzdEhhc2hTZXRDb25zdEl0ZXJhdG9yPFZh
bHVlVHlwZSwgSGFzaEFyZz47CisgICAgdHlwZWRlZiBMaXN0SGFzaFNldEl0ZXJhdG9yPFZhbHVl
VHlwZSwgSGFzaEFyZywgaW5saW5lQ2FwYWNpdHk+IGl0ZXJhdG9yOworICAgIHR5cGVkZWYgTGlz
dEhhc2hTZXRDb25zdEl0ZXJhdG9yPFZhbHVlVHlwZSwgSGFzaEFyZywgaW5saW5lQ2FwYWNpdHk+
IGNvbnN0X2l0ZXJhdG9yOworICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNldENvbnN0SXRlcmF0
b3I8VmFsdWVUeXBlLCBIYXNoQXJnLCBpbmxpbmVDYXBhY2l0eT47CiAKICAgICB0eXBlZGVmIHN0
ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj4gcmV2ZXJzZV9pdGVyYXRvcjsKICAgICB0eXBl
ZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj4gY29uc3RfcmV2ZXJzZV9p
dGVyYXRvcjsKQEAgLTE1MCw3ICsxNTAsNyBAQCBwcml2YXRlOgogICAgIGl0ZXJhdG9yIG1ha2VJ
dGVyYXRvcihOb2RlKik7CiAgICAgY29uc3RfaXRlcmF0b3IgbWFrZUNvbnN0SXRlcmF0b3IoTm9k
ZSopIGNvbnN0OwogCi0gICAgSGFzaFRhYmxlPE5vZGUqLCBOb2RlKiwgSWRlbnRpdHlFeHRyYWN0
b3IsIE5vZGVIYXNoLCBOb2RlVHJhaXRzLCBOb2RlVHJhaXRzPiBtX2ltcGw7CisgICAgSGFzaFRh
YmxlPE5vZGUqLCBOb2RlKiwgSWRlbnRpdHlFeHRyYWN0b3IsIE5vZGVIYXNoLCBOb2RlVHJhaXRz
LCBOb2RlVHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4gbV9pbXBsOwogICAgIE5vZGUqIG1faGVhZDsK
ICAgICBOb2RlKiBtX3RhaWw7CiB9OwpAQCAtMTc3LDE1ICsxNzcsMTUgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgSGFzaEFyZz4gc3RydWN0IExpc3RIYQogICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVU
b0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZz4gY2xhc3MgTGlzdEhhc2hTZXRJdGVyYXRvciB7
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZywgc2l6ZV90IGlu
bGluZUNhcGFjaXR5PiBjbGFzcyBMaXN0SGFzaFNldEl0ZXJhdG9yIHsKIHByaXZhdGU6Ci0gICAg
dHlwZWRlZiBMaXN0SGFzaFNldDxWYWx1ZUFyZywgSGFzaEFyZz4gTGlzdEhhc2hTZXRUeXBlOwot
ICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRJdGVyYXRvcjxWYWx1ZUFyZywgSGFzaEFyZz4gaXRlcmF0
b3I7Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldENvbnN0SXRlcmF0b3I8VmFsdWVBcmcsIEhhc2hB
cmc+IGNvbnN0X2l0ZXJhdG9yOworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8VmFsdWVBcmcsIEhh
c2hBcmcsIGlubGluZUNhcGFjaXR5PiBMaXN0SGFzaFNldFR5cGU7CisgICAgdHlwZWRlZiBMaXN0
SGFzaFNldEl0ZXJhdG9yPFZhbHVlQXJnLCBIYXNoQXJnLCBpbmxpbmVDYXBhY2l0eT4gaXRlcmF0
b3I7CisgICAgdHlwZWRlZiBMaXN0SGFzaFNldENvbnN0SXRlcmF0b3I8VmFsdWVBcmcsIEhhc2hB
cmcsIGlubGluZUNhcGFjaXR5PiBjb25zdF9pdGVyYXRvcjsKICAgICB0eXBlZGVmIExpc3RIYXNo
U2V0Tm9kZTxWYWx1ZUFyZz4gTm9kZTsKICAgICB0eXBlZGVmIFZhbHVlQXJnIFZhbHVlVHlwZTsK
IAotICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNldDxWYWx1ZUFyZywgSGFzaEFyZz47CisgICAg
ZnJpZW5kIGNsYXNzIExpc3RIYXNoU2V0PFZhbHVlQXJnLCBIYXNoQXJnLCBpbmxpbmVDYXBhY2l0
eT47CiAKICAgICBMaXN0SGFzaFNldEl0ZXJhdG9yKGNvbnN0IExpc3RIYXNoU2V0VHlwZSogc2V0
LCBOb2RlKiBwb3NpdGlvbikgOiBtX2l0ZXJhdG9yKHNldCwgcG9zaXRpb24pIHsgfQogCkBAIC0y
MjQsMTYgKzIyNCwxNiBAQCBwcml2YXRlOgogICAgIGNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3I7
CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZz4gY2xh
c3MgTGlzdEhhc2hTZXRDb25zdEl0ZXJhdG9yIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJn
LCB0eXBlbmFtZSBIYXNoQXJnLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGNsYXNzIExpc3RIYXNo
U2V0Q29uc3RJdGVyYXRvciB7CiBwcml2YXRlOgotICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8VmFs
dWVBcmcsIEhhc2hBcmc+IExpc3RIYXNoU2V0VHlwZTsKLSAgICB0eXBlZGVmIExpc3RIYXNoU2V0
SXRlcmF0b3I8VmFsdWVBcmcsIEhhc2hBcmc+IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgTGlzdEhh
c2hTZXRDb25zdEl0ZXJhdG9yPFZhbHVlQXJnLCBIYXNoQXJnPiBjb25zdF9pdGVyYXRvcjsKKyAg
ICB0eXBlZGVmIExpc3RIYXNoU2V0PFZhbHVlQXJnLCBIYXNoQXJnLCBpbmxpbmVDYXBhY2l0eT4g
TGlzdEhhc2hTZXRUeXBlOworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRJdGVyYXRvcjxWYWx1ZUFy
ZywgSGFzaEFyZywgaW5saW5lQ2FwYWNpdHk+IGl0ZXJhdG9yOworICAgIHR5cGVkZWYgTGlzdEhh
c2hTZXRDb25zdEl0ZXJhdG9yPFZhbHVlQXJnLCBIYXNoQXJnLCBpbmxpbmVDYXBhY2l0eT4gY29u
c3RfaXRlcmF0b3I7CiAgICAgdHlwZWRlZiBMaXN0SGFzaFNldE5vZGU8VmFsdWVBcmc+IE5vZGU7
CiAgICAgdHlwZWRlZiBWYWx1ZUFyZyBWYWx1ZVR5cGU7CiAKLSAgICBmcmllbmQgY2xhc3MgTGlz
dEhhc2hTZXQ8VmFsdWVBcmcsIEhhc2hBcmc+OwotICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNl
dEl0ZXJhdG9yPFZhbHVlQXJnLCBIYXNoQXJnPjsKKyAgICBmcmllbmQgY2xhc3MgTGlzdEhhc2hT
ZXQ8VmFsdWVBcmcsIEhhc2hBcmcsIGlubGluZUNhcGFjaXR5PjsKKyAgICBmcmllbmQgY2xhc3Mg
TGlzdEhhc2hTZXRJdGVyYXRvcjxWYWx1ZUFyZywgSGFzaEFyZywgaW5saW5lQ2FwYWNpdHk+Owog
CiAgICAgTGlzdEhhc2hTZXRDb25zdEl0ZXJhdG9yKGNvbnN0IExpc3RIYXNoU2V0VHlwZSogc2V0
LCBOb2RlKiBwb3NpdGlvbikKICAgICAgICAgOiBtX3NldChzZXQpCkBAIC0zMDgsMTUgKzMwOCwx
NSBAQCBzdHJ1Y3QgTGlzdEhhc2hTZXRUcmFuc2xhdG9yIHsKICAgICB9CiB9OwogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIExpc3RIYXNoU2V0PFQsIFU+OjpMaXN0
SGFzaFNldCgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lu
bGluZSBMaXN0SGFzaFNldDxULCBVLCBWPjo6TGlzdEhhc2hTZXQoKQogICAgIDogbV9oZWFkKDAp
CiAgICAgLCBtX3RhaWwoMCkKIHsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4KLWlubGluZSBMaXN0SGFzaFNldDxULCBVPjo6TGlzdEhhc2hTZXQoY29uc3QgTGlzdEhhc2hT
ZXQmIG90aGVyKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+Citp
bmxpbmUgTGlzdEhhc2hTZXQ8VCwgVSwgVj46Okxpc3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0
JiBvdGhlcikKICAgICA6IG1faGVhZCgwKQogICAgICwgbV90YWlsKDApCiB7CkBAIC0zMjQsNjEg
KzMyNCw2MSBAQCBpbmxpbmUgTGlzdEhhc2hTZXQ8VCwgVT46Okxpc3RIYXNoU2V0KGNvCiAgICAg
ICAgIGFkZCgqaXQpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5s
aW5lIExpc3RIYXNoU2V0PFQsIFU+JiBMaXN0SGFzaFNldDxULCBVPjo6b3BlcmF0b3I9KGNvbnN0
IExpc3RIYXNoU2V0JiBvdGhlcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNp
emVfdCBWPgoraW5saW5lIExpc3RIYXNoU2V0PFQsIFUsIFY+JiBMaXN0SGFzaFNldDxULCBVLCBW
Pjo6b3BlcmF0b3I9KGNvbnN0IExpc3RIYXNoU2V0JiBvdGhlcikKIHsKICAgICBMaXN0SGFzaFNl
dCB0bXAob3RoZXIpOwogICAgIHN3YXAodG1wKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgdm9pZCBMaXN0SGFzaFNldDxU
LCBVPjo6c3dhcChMaXN0SGFzaFNldCYgb3RoZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSB2b2lkIExpc3RIYXNoU2V0PFQsIFUsIFY+Ojpzd2Fw
KExpc3RIYXNoU2V0JiBvdGhlcikKIHsKICAgICBtX2ltcGwuc3dhcChvdGhlci5tX2ltcGwpOwog
ICAgIHN0ZDo6c3dhcChtX2hlYWQsIG90aGVyLm1faGVhZCk7CiAgICAgc3RkOjpzd2FwKG1fdGFp
bCwgb3RoZXIubV90YWlsKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4K
LWlubGluZSBMaXN0SGFzaFNldDxULCBVPjo6fkxpc3RIYXNoU2V0KCkKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIExpc3RIYXNoU2V0PFQsIFUsIFY+
Ojp+TGlzdEhhc2hTZXQoKQogewogICAgIGRlbGV0ZUFsbE5vZGVzKCk7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgdW5zaWduZWQgTGlzdEhhc2hTZXQ8VCwg
VT46OnNpemUoKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90
IFY+CitpbmxpbmUgdW5zaWduZWQgTGlzdEhhc2hTZXQ8VCwgVSwgVj46OnNpemUoKSBjb25zdAog
ewogICAgIHJldHVybiBtX2ltcGwuc2l6ZSgpOyAKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4KLWlubGluZSB1bnNpZ25lZCBMaXN0SGFzaFNldDxULCBVPjo6Y2FwYWNpdHko
KSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+Citpbmxp
bmUgdW5zaWduZWQgTGlzdEhhc2hTZXQ8VCwgVSwgVj46OmNhcGFjaXR5KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9pbXBsLmNhcGFjaXR5KCk7IAogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPgotaW5saW5lIGJvb2wgTGlzdEhhc2hTZXQ8VCwgVT46OmlzRW1wdHkoKSBjb25z
dAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUgYm9v
bCBMaXN0SGFzaFNldDxULCBVLCBWPjo6aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
aW1wbC5pc0VtcHR5KCk7IAogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgot
aW5saW5lIFQmIExpc3RIYXNoU2V0PFQsIFU+OjpmaXJzdCgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBUJiBMaXN0SGFzaFNldDxULCBVLCBWPjo6
Zmlyc3QoKQogewogICAgIEFTU0VSVCghaXNFbXB0eSgpKTsKICAgICByZXR1cm4gbV9oZWFkLT5t
X3ZhbHVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIHZv
aWQgTGlzdEhhc2hTZXQ8VCwgVT46OnJlbW92ZUZpcnN0KCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIHZvaWQgTGlzdEhhc2hTZXQ8VCwgVSwgVj46
OnJlbW92ZUZpcnN0KCkKIHsKICAgICB0YWtlRmlyc3QoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBUIExpc3RIYXNoU2V0PFQsIFU+Ojp0YWtlRmlyc3Qo
KQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUgVCBM
aXN0SGFzaFNldDxULCBVLCBWPjo6dGFrZUZpcnN0KCkKIHsKICAgICBBU1NFUlQoIWlzRW1wdHko
KSk7CiAgICAgYXV0byBpdCA9IG1faW1wbC5maW5kKG1faGVhZCk7CkBAIC0zOTAsMzUgKzM5MCwz
NSBAQCBpbmxpbmUgVCBMaXN0SGFzaFNldDxULCBVPjo6dGFrZUZpcnN0KCkKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIGNv
bnN0IFQmIExpc3RIYXNoU2V0PFQsIFU+OjpmaXJzdCgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBjb25zdCBUJiBMaXN0SGFzaFNldDxU
LCBVLCBWPjo6Zmlyc3QoKSBjb25zdAogewogICAgIEFTU0VSVCghaXNFbXB0eSgpKTsKICAgICBy
ZXR1cm4gbV9oZWFkLT5tX3ZhbHVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPgotaW5saW5lIFQmIExpc3RIYXNoU2V0PFQsIFU+OjpsYXN0KCkKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIFQmIExpc3RIYXNoU2V0PFQsIFUs
IFY+OjpsYXN0KCkKIHsKICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIG1fdGFp
bC0+bV92YWx1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGlu
ZSBjb25zdCBUJiBMaXN0SGFzaFNldDxULCBVPjo6bGFzdCgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBjb25zdCBUJiBMaXN0SGFzaFNl
dDxULCBVLCBWPjo6bGFzdCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFpc0VtcHR5KCkpOwogICAg
IHJldHVybiBtX3RhaWwtPm1fdmFsdWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+Ci1pbmxpbmUgdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6cmVtb3ZlTGFzdCgpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSB2b2lkIExpc3RI
YXNoU2V0PFQsIFUsIFY+OjpyZW1vdmVMYXN0KCkKIHsKICAgICB0YWtlTGFzdCgpOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIFQgTGlzdEhhc2hTZXQ8VCwg
VT46OnRha2VMYXN0KCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBW
PgoraW5saW5lIFQgTGlzdEhhc2hTZXQ8VCwgVSwgVj46OnRha2VMYXN0KCkKIHsKICAgICBBU1NF
UlQoIWlzRW1wdHkoKSk7CiAgICAgYXV0byBpdCA9IG1faW1wbC5maW5kKG1fdGFpbCk7CkBAIC00
MzAsOCArNDMwLDggQEAgaW5saW5lIFQgTGlzdEhhc2hTZXQ8VCwgVT46OnRha2VMYXN0KCkKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgot
aW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46OmZpbmQoY29uc3QgVmFsdWVUeXBlJiB2YWx1
ZSkgLT4gaXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBW
PgoraW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVSwgVj46OmZpbmQoY29uc3QgVmFsdWVUeXBl
JiB2YWx1ZSkgLT4gaXRlcmF0b3IKIHsKICAgICBhdXRvIGl0ID0gbV9pbXBsLnRlbXBsYXRlIGZp
bmQ8QmFzZVRyYW5zbGF0b3I+KHZhbHVlKTsKICAgICBpZiAoaXQgPT0gbV9pbXBsLmVuZCgpKQpA
QCAtNDM5LDggKzQzOSw4IEBAIGlubGluZSBhdXRvIExpc3RIYXNoU2V0PFQsIFU+OjpmaW5kKGNv
bnMKICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yKCppdCk7IAogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46OmZpbmQoY29u
c3QgVmFsdWVUeXBlJiB2YWx1ZSkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8
VCwgVSwgVj46OmZpbmQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgY29uc3QgLT4gY29uc3RfaXRl
cmF0b3IKIHsKICAgICBhdXRvIGl0ID0gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8QmFzZVRyYW5zbGF0
b3I+KHZhbHVlKTsKICAgICBpZiAoaXQgPT0gbV9pbXBsLmVuZCgpKQpAQCAtNDU0LDkgKzQ1NCw5
IEBAIHN0cnVjdCBMaXN0SGFzaFNldFRyYW5zbGF0b3JBZGFwdGVyIHsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBUJiBhLCBjb25z
dCBVJiBiKSB7IHJldHVybiBUcmFuc2xhdG9yOjplcXVhbChhLT5tX3ZhbHVlLCBiKTsgfQogfTsK
IAotdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBVPgordGVtcGxhdGU8dHlw
ZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPgotaW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VmFs
dWVUeXBlLCBVPjo6ZmluZChjb25zdCBUJiB2YWx1ZSkgLT4gaXRlcmF0b3IKK2lubGluZSBhdXRv
IExpc3RIYXNoU2V0PFZhbHVlVHlwZSwgVSwgVj46OmZpbmQoY29uc3QgVCYgdmFsdWUpIC0+IGl0
ZXJhdG9yCiB7CiAgICAgYXV0byBpdCA9IG1faW1wbC50ZW1wbGF0ZSBmaW5kPExpc3RIYXNoU2V0
VHJhbnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2YWx1ZSk7CiAgICAgaWYgKGl0ID09
IG1faW1wbC5lbmQoKSkKQEAgLTQ2NCw5ICs0NjQsOSBAQCBpbmxpbmUgYXV0byBMaXN0SGFzaFNl
dDxWYWx1ZVR5cGUsIFU+OjpmCiAgICAgcmV0dXJuIG1ha2VJdGVyYXRvcigqaXQpOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFU+Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgogdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+Ci1pbmxpbmUgYXV0byBMaXN0SGFzaFNldDxWYWx1ZVR5
cGUsIFU+OjpmaW5kKGNvbnN0IFQmIHZhbHVlKSBjb25zdCAtPiBjb25zdF9pdGVyYXRvcgoraW5s
aW5lIGF1dG8gTGlzdEhhc2hTZXQ8VmFsdWVUeXBlLCBVLCBWPjo6ZmluZChjb25zdCBUJiB2YWx1
ZSkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKIHsKICAgICBhdXRvIGl0ID0gbV9pbXBsLnRlbXBs
YXRlIGZpbmQ8TGlzdEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlcjxIYXNoVHJhbnNsYXRvcj4+KHZh
bHVlKTsKICAgICBpZiAoaXQgPT0gbV9pbXBsLmVuZCgpKQpAQCAtNDc0LDIxICs0NzQsMjEgQEAg
aW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VmFsdWVUeXBlLCBVPjo6ZgogICAgIHJldHVybiBtYWtl
Q29uc3RJdGVyYXRvcigqaXQpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5
cGVuYW1lIFU+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFUsIHNpemVf
dCBWPgogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+Ci1pbmxp
bmUgYm9vbCBMaXN0SGFzaFNldDxWYWx1ZVR5cGUsIFU+Ojpjb250YWlucyhjb25zdCBUJiB2YWx1
ZSkgY29uc3QKK2lubGluZSBib29sIExpc3RIYXNoU2V0PFZhbHVlVHlwZSwgVSwgVj46OmNvbnRh
aW5zKGNvbnN0IFQmIHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUg
Y29udGFpbnM8TGlzdEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlcjxIYXNoVHJhbnNsYXRvcj4+KHZh
bHVlKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBib29s
IExpc3RIYXNoU2V0PFQsIFU+Ojpjb250YWlucyhjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25z
dAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUgYm9v
bCBMaXN0SGFzaFNldDxULCBVLCBWPjo6Y29udGFpbnMoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGNvbnRhaW5zPEJhc2VUcmFuc2xh
dG9yPih2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1hdXRv
IExpc3RIYXNoU2V0PFQsIFU+OjphZGQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gQWRkUmVz
dWx0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2F1dG8gTGlz
dEhhc2hTZXQ8VCwgVSwgVj46OmFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBBZGRSZXN1
bHQKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0
b3I+KHZhbHVlLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCkBAIC00OTYs
OCArNDk2LDggQEAgYXV0byBMaXN0SGFzaFNldDxULCBVPjo6YWRkKGNvbnN0IFZhbHVlVAogICAg
IHJldHVybiBBZGRSZXN1bHQobWFrZUl0ZXJhdG9yKCpyZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQu
aXNOZXdFbnRyeSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1hdXRv
IExpc3RIYXNoU2V0PFQsIFU+OjphZGQoVmFsdWVUeXBlJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CithdXRvIExpc3RIYXNo
U2V0PFQsIFUsIFY+OjphZGQoVmFsdWVUeXBlJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAogewogICAg
IGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4oV1RGOjpt
b3ZlKHZhbHVlKSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQpAQCAtNTA1
LDggKzUwNSw4IEBAIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46OmFkZChWYWx1ZVR5cGUmJiAKICAg
ICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJdGVyYXRvcigqcmVzdWx0Lml0ZXJhdG9yKSwgcmVzdWx0
LmlzTmV3RW50cnkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotYXV0
byBMaXN0SGFzaFNldDxULCBVPjo6YXBwZW5kT3JNb3ZlVG9MYXN0KGNvbnN0IFZhbHVlVHlwZSYg
dmFsdWUpIC0+IEFkZFJlc3VsdAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6
ZV90IFY+CithdXRvIExpc3RIYXNoU2V0PFQsIFUsIFY+OjphcHBlbmRPck1vdmVUb0xhc3QoY29u
c3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gQWRkUmVzdWx0CiB7CiAgICAgYXV0byByZXN1bHQgPSBt
X2ltcGwudGVtcGxhdGUgYWRkPEJhc2VUcmFuc2xhdG9yPih2YWx1ZSwgbnVsbHB0cik7CiAgICAg
Tm9kZSogbm9kZSA9ICpyZXN1bHQuaXRlcmF0b3I7CkBAIC01MTcsOCArNTE3LDggQEAgYXV0byBM
aXN0SGFzaFNldDxULCBVPjo6YXBwZW5kT3JNb3ZlVG9MYQogICAgIHJldHVybiBBZGRSZXN1bHQo
bWFrZUl0ZXJhdG9yKCpyZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1hdXRvIExpc3RIYXNoU2V0PFQsIFU+
OjphcHBlbmRPck1vdmVUb0xhc3QoVmFsdWVUeXBlJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAordGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CithdXRvIExpc3RIYXNoU2V0
PFQsIFUsIFY+OjphcHBlbmRPck1vdmVUb0xhc3QoVmFsdWVUeXBlJiYgdmFsdWUpIC0+IEFkZFJl
c3VsdAogewogICAgIGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNs
YXRvcj4oV1RGOjptb3ZlKHZhbHVlKSwgbnVsbHB0cik7CiAgICAgTm9kZSogbm9kZSA9ICpyZXN1
bHQuaXRlcmF0b3I7CkBAIC01MjksOCArNTI5LDggQEAgYXV0byBMaXN0SGFzaFNldDxULCBVPjo6
YXBwZW5kT3JNb3ZlVG9MYQogICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUl0ZXJhdG9yKCpyZXN1
bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+Ci1hdXRvIExpc3RIYXNoU2V0PFQsIFU+OjpwcmVwZW5kT3JNb3ZlVG9G
aXJzdChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBBZGRSZXN1bHQKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgorYXV0byBMaXN0SGFzaFNldDxULCBVLCBWPjo6
cHJlcGVuZE9yTW92ZVRvRmlyc3QoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gQWRkUmVzdWx0
CiB7CiAgICAgYXV0byByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VUcmFuc2xhdG9y
Pih2YWx1ZSwgbnVsbHB0cik7CiAgICAgTm9kZSogbm9kZSA9ICpyZXN1bHQuaXRlcmF0b3I7CkBA
IC01NDEsOCArNTQxLDggQEAgYXV0byBMaXN0SGFzaFNldDxULCBVPjo6cHJlcGVuZE9yTW92ZVRv
RgogICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUl0ZXJhdG9yKCpyZXN1bHQuaXRlcmF0b3IpLCBy
ZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
Ci1hdXRvIExpc3RIYXNoU2V0PFQsIFU+OjpwcmVwZW5kT3JNb3ZlVG9GaXJzdChWYWx1ZVR5cGUm
JiB2YWx1ZSkgLT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBz
aXplX3QgVj4KK2F1dG8gTGlzdEhhc2hTZXQ8VCwgVSwgVj46OnByZXBlbmRPck1vdmVUb0ZpcnN0
KFZhbHVlVHlwZSYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1f
aW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KFdURjo6bW92ZSh2YWx1ZSksIG51bGxw
dHIpOwogICAgIE5vZGUqIG5vZGUgPSAqcmVzdWx0Lml0ZXJhdG9yOwpAQCAtNTUzLDIwICs1NTMs
MjAgQEAgYXV0byBMaXN0SGFzaFNldDxULCBVPjo6cHJlcGVuZE9yTW92ZVRvRgogICAgIHJldHVy
biBBZGRSZXN1bHQobWFrZUl0ZXJhdG9yKCpyZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdF
bnRyeSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1hdXRvIExpc3RI
YXNoU2V0PFQsIFU+OjppbnNlcnRCZWZvcmUoY29uc3QgVmFsdWVUeXBlJiBiZWZvcmVWYWx1ZSwg
Y29uc3QgVmFsdWVUeXBlJiBuZXdWYWx1ZSkgLT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2F1dG8gTGlzdEhhc2hTZXQ8VCwgVSwgVj46Omlu
c2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUmIGJlZm9yZVZhbHVlLCBjb25zdCBWYWx1ZVR5cGUm
IG5ld1ZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKICAgICByZXR1cm4gaW5zZXJ0QmVmb3JlKGZpbmQo
YmVmb3JlVmFsdWUpLCBuZXdWYWx1ZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+Ci1hdXRvIExpc3RIYXNoU2V0PFQsIFU+OjppbnNlcnRCZWZvcmUoY29uc3QgVmFsdWVU
eXBlJiBiZWZvcmVWYWx1ZSwgVmFsdWVUeXBlJiYgbmV3VmFsdWUpIC0+IEFkZFJlc3VsdAordGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CithdXRvIExpc3RIYXNoU2V0
PFQsIFUsIFY+OjppbnNlcnRCZWZvcmUoY29uc3QgVmFsdWVUeXBlJiBiZWZvcmVWYWx1ZSwgVmFs
dWVUeXBlJiYgbmV3VmFsdWUpIC0+IEFkZFJlc3VsdAogewogICAgIHJldHVybiBpbnNlcnRCZWZv
cmUoZmluZChiZWZvcmVWYWx1ZSksIFdURjo6bW92ZShuZXdWYWx1ZSkpOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotYXV0byBMaXN0SGFzaFNldDxULCBVPjo6aW5zZXJ0
QmVmb3JlKGl0ZXJhdG9yIGl0LCBjb25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVlKSAtPiBBZGRSZXN1
bHQKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgorYXV0byBMaXN0
SGFzaFNldDxULCBVLCBWPjo6aW5zZXJ0QmVmb3JlKGl0ZXJhdG9yIGl0LCBjb25zdCBWYWx1ZVR5
cGUmIG5ld1ZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1faW1wbC50
ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KG5ld1ZhbHVlLCBudWxscHRyKTsKICAgICBpZiAo
cmVzdWx0LmlzTmV3RW50cnkpCkBAIC01NzQsOCArNTc0LDggQEAgYXV0byBMaXN0SGFzaFNldDxU
LCBVPjo6aW5zZXJ0QmVmb3JlKGl0ZQogICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUl0ZXJhdG9y
KCpyZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1hdXRvIExpc3RIYXNoU2V0PFQsIFU+OjppbnNlcnRCZWZv
cmUoaXRlcmF0b3IgaXQsIFZhbHVlVHlwZSYmIG5ld1ZhbHVlKSAtPiBBZGRSZXN1bHQKK3RlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgorYXV0byBMaXN0SGFzaFNldDxU
LCBVLCBWPjo6aW5zZXJ0QmVmb3JlKGl0ZXJhdG9yIGl0LCBWYWx1ZVR5cGUmJiBuZXdWYWx1ZSkg
LT4gQWRkUmVzdWx0CiB7CiAgICAgYXV0byByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJh
c2VUcmFuc2xhdG9yPihXVEY6Om1vdmUobmV3VmFsdWUpLCBudWxscHRyKTsKICAgICBpZiAocmVz
dWx0LmlzTmV3RW50cnkpCkBAIC01ODMsOCArNTgzLDggQEAgYXV0byBMaXN0SGFzaFNldDxULCBV
Pjo6aW5zZXJ0QmVmb3JlKGl0ZQogICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUl0ZXJhdG9yKCpy
ZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgYm9vbCBMaXN0SGFzaFNldDxULCBVPjo6cmVtb3Zl
KGl0ZXJhdG9yIGl0KQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+
CitpbmxpbmUgYm9vbCBMaXN0SGFzaFNldDxULCBVLCBWPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQog
ewogICAgIGlmIChpdCA9PSBlbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTkzLDE0
ICs1OTMsMTQgQEAgaW5saW5lIGJvb2wgTGlzdEhhc2hTZXQ8VCwgVT46OnJlbW92ZShpdAogICAg
IHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5s
aW5lIGJvb2wgTGlzdEhhc2hTZXQ8VCwgVT46OnJlbW92ZShjb25zdCBWYWx1ZVR5cGUmIHZhbHVl
KQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUgYm9v
bCBMaXN0SGFzaFNldDxULCBVLCBWPjo6cmVtb3ZlKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpCiB7
CiAgICAgcmV0dXJuIHJlbW92ZShmaW5kKHZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6Y2xlYXIoKQor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUgdm9pZCBM
aXN0SGFzaFNldDxULCBVLCBWPjo6Y2xlYXIoKQogewogICAgIGRlbGV0ZUFsbE5vZGVzKCk7CiAg
ICAgbV9pbXBsLmNsZWFyKCk7IApAQCAtNjA4LDggKzYwOCw4IEBAIGlubGluZSB2b2lkIExpc3RI
YXNoU2V0PFQsIFU+OjpjbGVhcigpCiAgICAgbV90YWlsID0gMDsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXZvaWQgTGlzdEhhc2hTZXQ8VCwgVT46OnVubGluayhOb2Rl
KiBub2RlKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+Cit2b2lk
IExpc3RIYXNoU2V0PFQsIFUsIFY+Ojp1bmxpbmsoTm9kZSogbm9kZSkKIHsKICAgICBpZiAoIW5v
ZGUtPm1fcHJldikgewogICAgICAgICBBU1NFUlQobm9kZSA9PSBtX2hlYWQpOwpAQCAtNjI4LDE1
ICs2MjgsMTUgQEAgdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6dW5saW5rKE5vZGUqIG5vZAogICAg
IH0KIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXZvaWQgTGlzdEhhc2hT
ZXQ8VCwgVT46OnVubGlua0FuZERlbGV0ZShOb2RlKiBub2RlKQordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+Cit2b2lkIExpc3RIYXNoU2V0PFQsIFUsIFY+Ojp1bmxp
bmtBbmREZWxldGUoTm9kZSogbm9kZSkKIHsKICAgICB1bmxpbmsobm9kZSk7CiAgICAgZGVsZXRl
IG5vZGU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci12b2lkIExpc3RI
YXNoU2V0PFQsIFU+OjphcHBlbmROb2RlKE5vZGUqIG5vZGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK3ZvaWQgTGlzdEhhc2hTZXQ8VCwgVSwgVj46OmFwcGVu
ZE5vZGUoTm9kZSogbm9kZSkKIHsKICAgICBub2RlLT5tX3ByZXYgPSBtX3RhaWw7CiAgICAgbm9k
ZS0+bV9uZXh0ID0gMDsKQEAgLTY1Miw4ICs2NTIsOCBAQCB2b2lkIExpc3RIYXNoU2V0PFQsIFU+
OjphcHBlbmROb2RlKE5vZGUqCiAgICAgbV90YWlsID0gbm9kZTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXZvaWQgTGlzdEhhc2hTZXQ8VCwgVT46OnByZXBlbmROb2Rl
KE5vZGUqIG5vZGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4K
K3ZvaWQgTGlzdEhhc2hTZXQ8VCwgVSwgVj46OnByZXBlbmROb2RlKE5vZGUqIG5vZGUpCiB7CiAg
ICAgbm9kZS0+bV9wcmV2ID0gMDsKICAgICBub2RlLT5tX25leHQgPSBtX2hlYWQ7CkBAIC02NjYs
OCArNjY2LDggQEAgdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6cHJlcGVuZE5vZGUoTm9kZQogICAg
IG1faGVhZCA9IG5vZGU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci12
b2lkIExpc3RIYXNoU2V0PFQsIFU+OjppbnNlcnROb2RlQmVmb3JlKE5vZGUqIGJlZm9yZU5vZGUs
IE5vZGUqIG5ld05vZGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3Qg
Vj4KK3ZvaWQgTGlzdEhhc2hTZXQ8VCwgVSwgVj46Omluc2VydE5vZGVCZWZvcmUoTm9kZSogYmVm
b3JlTm9kZSwgTm9kZSogbmV3Tm9kZSkKIHsKICAgICBpZiAoIWJlZm9yZU5vZGUpCiAgICAgICAg
IHJldHVybiBhcHBlbmROb2RlKG5ld05vZGUpOwpAQCAtNjgyLDggKzY4Miw4IEBAIHZvaWQgTGlz
dEhhc2hTZXQ8VCwgVT46Omluc2VydE5vZGVCZWZvcmUKICAgICAgICAgbV9oZWFkID0gbmV3Tm9k
ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXZvaWQgTGlzdEhhc2hT
ZXQ8VCwgVT46OmRlbGV0ZUFsbE5vZGVzKCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHNpemVfdCBWPgordm9pZCBMaXN0SGFzaFNldDxULCBVLCBWPjo6ZGVsZXRlQWxsTm9kZXMo
KQogewogICAgIGlmICghbV9oZWFkKQogICAgICAgICByZXR1cm47CkBAIC02OTIsMTQgKzY5Miwx
NCBAQCB2b2lkIExpc3RIYXNoU2V0PFQsIFU+OjpkZWxldGVBbGxOb2RlcygpCiAgICAgICAgIGRl
bGV0ZSBub2RlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5l
IGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46Om1ha2VJdGVyYXRvcihOb2RlKiBwb3NpdGlvbikgLT4g
aXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5s
aW5lIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVSwgVj46Om1ha2VJdGVyYXRvcihOb2RlKiBwb3NpdGlv
bikgLT4gaXRlcmF0b3IKIHsKICAgICByZXR1cm4gaXRlcmF0b3IodGhpcywgcG9zaXRpb24pOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIGF1dG8gTGlzdEhh
c2hTZXQ8VCwgVT46Om1ha2VDb25zdEl0ZXJhdG9yKE5vZGUqIHBvc2l0aW9uKSBjb25zdCAtPiBj
b25zdF9pdGVyYXRvcgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+
CitpbmxpbmUgYXV0byBMaXN0SGFzaFNldDxULCBVLCBWPjo6bWFrZUNvbnN0SXRlcmF0b3IoTm9k
ZSogcG9zaXRpb24pIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yCiB7IAogICAgIHJldHVybiBjb25z
dF9pdGVyYXRvcih0aGlzLCBwb3NpdGlvbik7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>249629</attachid>
            <date>2015-03-27 18:33:02 -0700</date>
            <delta_ts>2015-03-27 18:33:02 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews105 for mac-mavericks-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>251902</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAAOSQe0YAAAAAAAAAAAAAAAAOABwAYWNjZXNzX2xvZy50eHRVVAkAA7z+FVW8/hVV
dXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAA+Re0YAAAAAAAAAAAAAAAAOABwAYWNjZXNzaWJpbGl0
eS9VVAkAAw3/FVUh/xVVdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAPWQe0bQamtZyi0AALCcAABA
ABwAYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LW5vZGUtbWVtb3J5LW1hbmFnZW1lbnQtY3Jh
c2gtbG9nLnR4dFVUCQAD3v4VVd7+FVV1eAsAAQT1AQAABBQAAADsW1tv20iyfj76FXxayJNQ7vtF
CALwms1OMvFGTmZwFguDIls2TyTRQ1GZ+Pz6U03qQkqUYu0MDjDY1YN16Wb1V9VVX1U16ZuySM1q
NXa2r5/N9Me8ujWr6uN6uTSl8w9OtET/HNwk1cN+GryuPxfz9cKsrj9/ePfpfXT9w/XhtYO3mVlW
+Sw35bhf+uCzKVd5sdwLRoOgyIxz+/Rotj/+ooQrmDP8Kanyr+YKkJQg1rnZQb95qh6KZY1UyH8O
PprVY7Fc5dP5RsTqwfkHQeyfg08rUOhtuF+NIzwYhEllrm/zxW5BgjB3EXWJdLAaIznGeESRclwk
ERp8mDhd1O+T1IEff3EwGukRd4aYxpRdAY7HoqxakzEeeMti+bQo1ivn06caiBJMex6lbkQQcXkQ
xq4Mg8D1Ql/4WAqueTQYDIIyWT2YzLl9KE2SwXXIccJ89ZhU6YPz69qsAXxaLEbJ4+PcjBZJvnSr
eupgEH1LzWMFCLZGjX4J7nwvvPOCIJpMnOHk7ZtJ9ObzVWum3QOwrJ35lipx9+Ymfnc7GDSrw9ob
OOPxM0EA2tZI4wVO5/Vf6BtqXhiB2kJMkfPzbTwe/xVWuk1gL1/VXydVmS/vXzZjP5qnz8l8bW6S
vDwYrpcYj+H9pjQzAx4DzjKpitKMx/U1r3tkwOfoW1UmKcx79ftXcLZrNNdYTV7ulXqfPF4q8Zy4
2zLJq1Vb4uue0eeYBa3nr7uaN1d/b7HmuiTLhn+A6VKI4OovV84LB7zBGX40s5uqHD2MJbka4Au9
SXFi6H+86c/oTbv9Gv5n+/5029cKYqmd4W7zIIyx1FcDcmkc69kMOdOimO/M89Wiigu7Wa/swOvh
n8OkG9P8WTygC7eR16ZogrvbS5W8GtCLt9dMyXm1V6byYZc/73d9eIzoZe0iFheFqrFHzih9fBxj
ra4G7FKIOCPsBMQa3YfZbJ4vDYx4IDJPE1tOBUn6YKKltU02rN13b7pjiA06a0B+ITrDcCadn39s
6/sMSICCQHh2rmtAIKhiRV9TcBIESmmaJgL85ON4bC8IimVVFvM5tADj0oCFWovcFoGt01cVlPP1
lq6G1iQM8n330hoN5/hqIC9GQ5npR5Mv8ypP5vn/mmG+rF466UNSNhvzww/1zmDY6j4gjAIQdSmQ
qZjxfiDd7yfAUN6LBRPwYn0pFp0I7dj63EpGINl+Hi0WY46guoJifZ5Ps6d5NoI/+dQ5fG2kydls
puR0avgsc1ZVAr0OUMGuS8Bnu4MG78jGY3Jv3idL+Fse9wkBhOtJTQiVknLUJiVwcbPMXp39pWPd
blZ+3XwpHk2ZALIXJy/rXjW8YL0+KrU7jKARq7982Cy+smlSoJ5y97xRuEhkwp3NvPEYNuDBf2pg
gfigWEB3DBHXy5z9/E4Y+Eicz83kCYJ1cfNh8vaX2v1g4OI0zmfQ3skdib4r0mS+cQPoxJNpsjKQ
ntIvNjSyzQ/28GHYh61+t5wBBHZGUgMWiYuTEoBNp/R5YKvmQ9jG3EW462K4vjj3AJLpdPo8JOC/
y9sumuGzLtz+AD64BDODsZPK3D/VrMyfYWGCL85afKZIgp6nV76wJyofyvw+X+7PlpqsQW0A/f1d
Xu0uAzuLTQLb4/lb8jWZpGX+WO2jqIMHJ7MZl87d3d1//0TB5fTPRfnl75a+VLZhs+inSUXv7rCa
rZepzaZv469foyi6m86L9MtdvvxafDE2bKgz3E5J5mPMKG8ymKXXjaweim3T65RJiWHb77bz78A8
881CyTK7K83cgK51EVYnpYtkM6Kytux5DkatlyjW1mlVnVsuEgmxTVsia+K/y8om2TCOd/nl+QbQ
KT6SuDMyxmiA8YUiwelkS2RZFNUBUskHmFy8U7It9TdwHFPeNUdgxGoPSGktc1Xz6N1jM9aR3JGJ
0sTMlLOdePfbr82HujxhA8wulJbNprpJ1W1RmO6SNjmbtFvWcBetlL3HAAovzbxrqjYGk6RaCOJ8
MV/B0wSzq6M6w13mZIy0XWJxX7ajTtcp6TKBmIoDgTvzcLIzDx1frq8yIgE6sd7waz2/NNW6XHY0
v8AfZuiEP1C0VfsP9Af276Yw/3dTWPwrCifUKrwyi9+SvLpb5feQ3/rUTb8TecZglqXIWSbLYjU3
5tHGL9qpmb54McL9TUhLisZZwqdUgZrZeAx5GUqxh3y1CWBoy63gu1lRDvcT0oeyWBZQYK7Luh9+
NS+gqrR/XrbE1GOv8PwlaLZ9zV87nYMtflBSfr/ASGdQSjjThc2y6XhsTfgJSpl5nMyhTtuvvl7m
wMB3NtW/2s2eVIApfb+uzLfXf2lj/Vc0mtenkvZEojnGYdg2IbsFbAHFDwvV5+g3TWZ7/f5qkkfY
hDQBxr///9evrl2lM/xs7EGurb3JYY36HJV0xg5VAidI16W9FznZKmcXE8oZ3t0trAZ3tgwdY6ou
r0Iz2IyWk3irp2V6m6xalrIgXjpfizxzhgfIfrgaXr0ejwFZ+XRT5NDrWWAaytGdHNtc0s2BymW4
KBDK78O1oa1oD8/Ors859AFEsjlquYjztNJ6z6DTInuqKW9XzF4gSZJkL2l3xkHltoq9hIhT7RwJ
at1TTTe3eH/Lqwd7z3tzr9exEWGcoWDuNK+uxgPHKZNvY2e3K/ASiMIfGJgeDBB73gNkWqadgUQI
TkkG5iiz9gBGCQLlNLKLZHlnZDqbCduoOeVqN2B14wYUE0zZ1R+PBripr+gZUHYRp1RdwPValv1L
fTyArCyMOrCwEkkiUjuAe0Qpqwkmp2RRO8AF1ySTRCgxMybhdoB1Brgwwsh6gB/ZUU1ndpH8sYtr
cw/bKWfzg9UxbAuomJakbRUpuOTJ1Fpl8K64z6EJc4KbT80zBmIQlWVR1vflN08d7EUOoD9+dH5a
L6bb5yysXw38fJmUT87bBZTpK+s2m8vqE0BhDeA6nR8ZdL7SeXF0kjhEV84r7YUBJVq4IefSpYzF
ruIqcoMYyYhGERMiev2cZ0I6S4pZDw4B1oDGACJpc4Zlr5485ItNeNV4aMgYopS6caSZS2XsuRp5
3OVIh0hjrCM/7sNzSmoXl5Q9uKTdpuOzDQKxifALmA1vUK4Q/gLweSSWlMrQ9UmsXRpr6iotYpcz
Sn0RyFB66rS9yGhWJgtjK8rrzfMjq2tvO3iA9diGmBDYy/QMs/dBDliMcORL11MhQJYcu74IqUuw
pMQLI4FJL+Su6H7k3TltBTBP8LECSiXWCY4PkvqAa4596dnNJx51KSJgdR0T12MR8wmLPOL7p219
ztQdoDOVHAEl1v5dSzdXvjP3SfrUC1cKCfpBKDEecLCzhFACA7s+C4RGAZLxObiN4HOgmxlt6ITI
7Ag6BezHDn3SOzwlfaANYbECARApXB97yPUoopqD9QM/PIH6tFtsBgcNJhtfQqWo5Q+7HylTGGoV
e1fCGUKLP2LWkl7IqK99lweR59JARq5WVLgeAkPqWAceF4BpvSpt3F/bi1tLKc6ZOlxKcYHsCWDb
LA1bfAPno0KOiL2g+QAQfIVCpEToaupB0ASUu0ogwBHQOAwRkTG1m9kcnF+/y6clkPJ1vDXG6nor
vN9A29FBF+G0BzYF2LoN+419uIuN7EQyslgZizRmfuT6gNmlEeKuZhDlgacjTrUXe5ycxQoS+2HC
QBdhQo4R6oTYBNNCGBfrZVZX8+ByIw3zMeJihAWAJYwyTZBywekgqGMOJuZB4PpQnwgsYj+K1Vmw
e+F9mIPWeAd6MqPH0JMZr0MFvCj4/H5yM1/f58vJ+tEeR2+zkh4BcusREiiHMeaK2Itcin2wssLM
xVwSjiUhOhBngdvD9zfv+g3dTM8hwE5D6ahjMnOsjjHkIPKDYrEoljcJdP4rZwgxPxJwjbYbIXzY
CS8OIbXGsBsykK6GuHKxIAGG3C+5T897eFJO+zfB6wbCHsKpYNjP6CppaJ+S9EBJL03N3N5cM1ZF
626tX+AHUBbKB98n0nO9SBBwPQhsCG7lIh+JEBJhEPPzm7eX2K/DfvxAA9angTkImPq5y+a5UlNu
Nh10QbUyEMLW/Qj3kI4CIEGCgafhkxKwcYj7TFEZoSiMjjW4KfOvgKm9HT1LndiWnpkd5WZZD1/N
jDxQzvp9mJd1n/600wqKj5FGdWTFQLRQoSg3lvCHEgIpPgQSEx6BehYSqQ7i70bWboV+ZTpTulqY
42QBcPCBk4V5c7+nfJqY8muemiaeLAkjZfOoZVrElet7tpDmUeR6HtBcCC4WKcoxkeF3E8ZW9HeD
6hhN/yXH8wZdNUmP7np6xCLzopxA+27zjq4zT/1esyIXvgY9oZHADZ0rqIpd6dnQUlTJ8HzuaT28
8mztd3hO8clmuKurTnt03eSuVss/T6pZUe6aEsK2bgpFQEhDz3qoDyUBJDJIABCGodK+9rCQqCbM
bVXSyLs+JbmLLaF92IDoshqb9d6mzM6X95+qfHuMO4TkA8iwjlEkhXaRVoAMAcVB1vehM5Ei0ijS
kusWstMCu6Bm6BiUPTM7dI69375dAlXYM+MhVqwJc/tua5Qw8jgDx1A4FFCjhD6EBw1cDNUc01CC
Qvp/Fn31rHa6xDqcOeiqkvXoR9hsNm1OqYvHp1kOGm5tjYCxSO0KQUx0GMcC2NcanGsEXs+AkUlE
KBYgJVK9rtCV2YXDWQ8cdZjsQjNd30+eFtOizuhI1NWVTegR9sMIilZolyhUzSJm0KSG0D+HPJCY
xMgL5HNM3F7hBKu0ZnR1ULxPB72NsQeTL7Jk7iar5fb8f0jJ3qxeRHAcQzctBdSGWkNZKKGXiqDp
j6MoJoSRrh8fC+zi0bgHj9EHGapRZcNCltaZNSoBhhsR244oL1I+ZF0/xraxo9DYqUC4kvqxZAiw
xf5zDNtZpt+ynSkdVVQ2O1YFfjwTjc6Q1/WDrlsqAVHGIzfG0lJEGENnA7208jmiQQTGDfnvTE/t
GR3oGiXH0PXRscvEJGX6UB8GwA7UWaZ+t1lG+yrkGLpSAr0gFT4C9JF2scRMhBo4jvE/LrnugJzY
o+1wV0nZU0bUmbTpL+JiWX009/mqghJlyyjEsrcnIVlCxwqECNmTBoGCXRHKFVorHoQcNAz+8BTq
3Z5o+T6aVbEu06YTOQbd1Tnt8Umdya3Om8SXLVer7Rn6kBOyDXcaQxR5CKolxGxOUMqePcZuqIMo
Dhj1GOLnEmpLbhdW1rcVmdqy0BfztLgvdwneVm/U81SowPxBjKCF9kPqelBvuxFREfYo8aBZ6IXS
ltUBMcU91JNJXqf0vdOvTLou8wrqYll7POdM4hFmI1L3nDQQONDYjbTNmjZhAinGrhAc/CLEUJKw
s64x2Yg/5cnN6KCLUfQA19lBnbQ0lRW3L5PwiAJi5eMIxzgE80FTT31ole1PrucHikGS96hg5/a0
I7aLS5seXCbdOlsKIZ6WT49VsQsvgZv+gmpJA6JczHywIkLChWbQdxEKQxkjDdjkiWzdFdnFY3rK
h2ymDnLLT6by1tUDOH6zvzWfBQrjSNgyLQog0fmSuQop6E4lDwVhMSXiWRllI7x/dzeDHdCG9VCx
4YcHOKtHY9KHEWhf3NvHqdvpyvYApM6Q9bs9p1W+79OIuYJQyC1RjF2NfMgtLPJQSIG6Bf4jThIm
NaqPfaA6Xn04rWsBfty0SoTUjDTuXUz/Jx15O7bijQt54CihVswlEpyZIqitwJOxK3yCKIZdlPVx
YKsyacsZdNbqOYiSGJmD+GrusO7Ci45w04VAHoeOH4xNFSRASgnElpTEhYKU4ojGmKqzpNmWO+hC
OCZzSQTUn7TtGsk6y4tRVRTzafFt5Nlvt80Xm7Zxk7WxdXKhfSKB1V3uKbBZHEjXV8D2ARa+gApP
kDg6n9dawk+curRmdJTR0+MUIHVK9mRhj5yCDl0A7TFbKil7wyQA8qcKClBoVaAKxRyqUEHCkGAl
IxyeoItDoV1MKe3DRA8yQmPgNbjuqjHvp2VTEnVsa+tRTLnLuQeUxqFc9mjdWAlNPBlGvoy/b1sr
+Yxh7fCBBsctipzSXQvtv/Mm+25JsxEHqGGkqWc7JB57UD0Tj7jQLAcuD2UoIYagb41/19Fba+pX
k4KA/mkdfB21ptMeSphOdxHZ+peJ3S0KhpGUkD7cWCMIQx/IWwkauZJ4EZQzURjh/sOAvbADDMfR
pyTlB8QMpV5zt6xprongTaGgwwBTCDfgXMi9VAEPa/huvRfyDObSD6Pv1ZAnCt5gMzboItM9cDk+
gPvGLE3zWM/u4W8wYVPaC1QXDIJJpn3oWhHBgNeD6lf7TENzFQJD+EiDNZ+TCnuWOnFP43hiVzWe
9agmDvk5We0OYQiWI1x7heA89imj0IJDlUYjEgN1sND1oYHlnhfFmoXnyHkntItI9PmGpAeIVlUC
lLG9a1GfrloDB/z/eLuyJreNJP2uXzIRE+io+3is09KMvJanPRv7tgGSoNQhuaXpQ+vxr9/MAgmi
gCK7w8NwxEyzRcBVWUBV5vfl1cYkYhjAauFBVQCLstm6TrtoOAhLWNkaZ2WaDVtJ1ffrU2P6nThK
tf3rX/vN3VEeYYv1YtSBCQB0rTSHty1ArXoMlGoBdC5bqmImtR2dD1PPv5ON+feTr+FvH9IPJ2Uk
8PV49JKLRLusM2h2wg1GAXgH7FHFSIHYh8tBvZJ08e6nVzCn0+y10Ps1/sIsosW5+fH5y9Pd09fn
7aeVhx6htryhgAfQ9Xz4FRmMYXBcLOuC4rD1kLxYqwGHRwabj2XDuXnNObow9Xyxq9uqZe5ayxyI
WCxzA/TtwFjHSrFfsQHIQUGMsU0WmQZ1YACxozGOwBE9kbB7lQXAbBxTmb/AgBbjn6NCi9vm67F9
vz6BYAw3C2z083P/8PT7GGqnNwbjyZyVQ+ijMi4D4I9cgbkQIQL0B0vohROcSWVVdheXcRq6Lf/p
+ptaxm1DcD35OH97/PI0peL+hRZ9YbUVlqtOcaCbHKAQiKopHBcKqB50Mw20PqLzQarZywldzr5T
ywBRyC+GiLQPML1IHfWCIJYErhQioF4uQwLOJOMLz+8VIaI5IcmvuH9xU71yZVorXwZWPg1fvuFW
4Tcc+RR6cV3SCjiy6iLRDhOMykpFlzERQ3ORElfXIFNvYer2TXilWszA1lEi+HJ3BNOff5vhI8HY
DaWymEMelDZeS9C3mBETve9M9LETRhju0IMhQ9ur8lsLJNmB04YgiD/H3fww/Pr1+zD32XPc0VwK
eI5Ud5YhEYmAixwDBqedB9omrCYpN8VYjrcQhjeEEQR7GaAwm9/hQdyQ6cEgtYDzYxzmknigaaAG
QKUZAtgdFLfRSP6ZCPXZqkap5xdDY/4DKqgdwv99txu+HlUSBbSCXm2hwOhymzqmMGtEYqadlaaD
F2g489x6yl70qZaRz7uDy+Va6qEh9V72i4MxjXjz7qcCeMEaFItnCWAtAr/jiyUSWLl3ALcUch9L
eGcCgU0mLKPCZ2rNZbdwGbwtfrk0F71n2zXm7fkhXjSD6AngOeByiYlW+Inq3zvGSbYdFQJ0anAe
SbvriALsSC2Db68YHHbpDKlLb2rRTWM9Yonh/7m5+9dz8VDSoqWYwZ0cdKZwekQXkgHbwAvIFbQD
XkqilY5m+yoP1nH0tsTHq5Xccru2afDl5GkvG+/HUGoeJz+OKWYk+cBVAAscME8PA7rocUaflSWM
J52kylfK4VkJUa9ht7aMPdiMI3j9/uPd4+T8EQzsAx5ZAgqDACnsqMEEKuuB5YFqAzAUvAH+pIX4
s6j0TMA39RpoY2Fbcnw5P7z/5zKxyiUCEAiYQOFLoJ4zqGcVu+SE1IooYIryOi9lmrwSWdO1V6PX
ajJvv7zLeUEksgdWRUDT6MwxSxmEdwLQifYc/peI5yxdiUicZq+ENo1cwd7QKcbxW/9wwnWM4O6R
UjPnNAYTTARkATzIAvsDZC2cEUCNNE0LYHcapJ6cNjShWeE6LFfffkHdzW9KJHL8Bd0VGbatAFEC
R/+3ZHAOjYVXHgQ1MdAsPXvxlYf351N9wvta4AYc641e5vgc3N6P/75/+jQ83j3WTm9dDFD5LHyL
Z48588kgqEDPt2HedFRmm42RXpPrJ76Mru3btXxr//d0U/0gNGs9CL6I2D329zt0uh73jwb1OTrC
SSSAXZLrlEd4iu4anxTpvBQGYJZPQOcvehPmIy9EaxxDM2wuBLhvfro9xboVoAJRkptJAZ8STmQm
XnbCMfSWAwx1MYlOeqGjCjoxSa9nc0+SnNmUt63QODD/9cYs7oBFUlJVh/QXyQ/+JofUWEoFjx/1
J8UEZQJWOCudgk2EJBYupiTNx60FaxioDUWf6P7gXWEr54rMWSvZyRTgQBh48h7TwXwCiAvsxUVq
ruZcYQ2RacOFumFI0iutdHf/eX6uD1yTEQzFGyeJN5Zj/iHoJcMU4ANU7lLk5DIxoLSuQb7ezWWo
UOf95ze1+NvGmiQ9voZf++2nKYBhBGJNGpmlmN8RCMeYsQG2wzOQLgGvh3t4SdY398RsrFoGyRoy
9HKZvrHtv2DfKWzGWvKt9v22+EGKt7ckTWkhmTWd5hofLtB3zz3tNNNROqlsEuY/8oHMFWVLmDPq
snVr9QB4I+t9A6CspZnqTCJ+YC1UIIfDt2MApZEAvE8DTMATazobgRwHICzBekwjZ6/Og3s5n2h1
W7UwoXljYWZCPos+C8Cm7ZSqJZJwFHFE4B5+IJPVxAIMYhoIACCM1LYD9Zi1OA2P7kYMdEmw8Ge+
xYZHD8PjY3nQUhXBSoAM3YZEKYCUsOujx7RU1IkmRnR6Z4AYwRKr4mse83quM9RqdV+9sqGxg+Sw
zBVYaUDcQXw8QKOS5T6EzBzW59GM0V+MQwOOipnAkw9GUMf+uJI9XKxEV3IN6PHLZQ7+Gs0AZkJ/
gyj5NYlnQjF3FsMhXBusjZJYThMEoCV4OpxeBy01blysp/EqlOob2PXxmCA7pQSWbFtQWoTrqDtK
KFBHmhQcYao7YpKy1mWuyVXSHaoc3fNQd7qlXqbZNZZpyeK1/RLCXEVz5oiW0XZCw9nh6Pa10gcw
5J5ECYgXzs5rjg0M2xYYLtRi2tbu6icNBIfp65fvN3ZCPngIKA2w1cE2ZxrQ7QM/vEimU4nA4Y4i
OytrIlMPU0kA9n0tASY/T4R1yVeFV9IDyO+A+2F1WkQeBdNHD6zVOeKkjdfiqy2BFW0JPCzqKg8D
9ffHMoWSCQXqQQuBXg/EBixoIC3UYKSIBQXGILpXFZFMg19cRF8rQSsagls9Yd0f3hf9s3zcMhHm
uQmdzSiz9QksjVAAGwDeR+N9DuRaj3smQCV6zxubpBcCPqpn3t9/dPf9l38D7cLHrg9JrLrYJAOM
m1OvOkpNSS5hnTUZTL9Fw2+JZlFcnTHORTrzCGZ31IsWzUUvWf4xg/HTHb6zMYeREMQ6mL9KsAKW
pARGWANNBNCH4Dpyq4CfvcQIXpsXdpDg7bvLaY5v31XrG2xjfcN2iWvfbecmjaFbl8kbipZAaEkp
ZiRnH9F9BT8MxteJiQCPqFIpv+o4zac4Y5m3Z8zZsF8fqi3bsf1+KIfqvfvgwt9XSTk6aYc51R1V
GIiwVHTeASBVintljZLw/z/JkziXcL60rSRrS72VdMnn/j48bIaHr48FbU96jhiXk++oNQ6zUHPn
g5Ngp3NIUibgQJdh0nHQttTHq7W4TDfEFcvQfvj0fP8ZrPVh0ikdRsqxyhRIXAzadZFi6TNNoCSU
DvDPDNZNMUNa4b8GP6inOcMO6pvq5ewaG0vupqSTfwEZ6+8Bd0wKW5dArQMT44NH9gkIwjH0AjgB
h0NiPmBkgbcTqZfjLYQRDWGGyXSEf+Tb57unU9ivOGmzSxrDWkGKBHvcYMmRBdhmqBIhWm1srGFC
PUwlgSJrR81WUbVQFggbP345GC8MVx2MGAdMQBI8lkgxv1xQD5CF685HeC6Jaa+F/8NGbLxWi0t1
S1yz8CuVfpNTzpDixbVtpEJMAyzDYUwNIEKycJKSBOBjmM6GXXIpzYdciGQbIg3iCLS+x9sPq4gH
VthwBiY/RqTLBo60gdfZJZF4UCJr7fSfFfGY5JsvayflelnwZX9c1vP9tqo0UAweIuY9UVMqkTPA
GUcwGK28pUwqceaATANV02u1ftE7ve0XnHl8QOHr/f7u46HRVkkp5QfOfEwi4tYxZ0kX8eBy7rDS
KcmOZUBgTkuAMJfjGo15zhU6rW6s1tU3svB2/Skos3n89RRbL1F+FlwgxLGOcsmwW4gD2cvpVzqK
CExDL4ogZ2PUc6t1jHq3k+aSJ3qEKofUH6I1AITC2stvpcCEJcvQIZFApfMowBjBiQAsCCDEADVW
NFzPG32S5ozin66/qddoWwtfBud/eXh+fEr4JxrKe3Mf51lbsmwj4QxmWAiHieoa1ukAKWGyHfGA
c3lirwoOtyY6wysbd1ZL2zcqnQe62S5agrx9NyWzY94FHg6AQ7i7VM7oTe9oAObPKc2dCxkArcg8
gunnLl4nLefdxYT36fKbah0N8whfLjvYvPvp9vnglbXj2uwY1IkEELonATQRumgA+3WWBArMRHsm
jErmheyqaeRzuRSHywupTUvqZXHmt4e7+Vu/+YD/PlINppBZpUQIGHsKagvd9ikwwOGadlIxSU0Q
ylpxjZfzoRZlfle5tFjeOgdyYAw+2YvLG/XIodK+mA0TDZM8lTZIecxhskGGTgJx91aLZF7o1vFH
yOMky4U1L5UILHHTWvekuf/R7+76++2wCB8JRYVhwXbBRQ+QHbi+J0AWpdVg6F0UnpArhY9qCSrh
NV/HWwZ9yIkpRvj/7u6nOByXJblTmxgClwbMZEBnM0ud51Z2BEC9Fzp4KfQZk34arRZDsJYYE/ge
n8KNn54htZiCXgA48YzLHIDwJADgSgPSdCp0QCKYtUDydFyYwXqwhRwNxVLiA6ZO4PyvsWwPMKTm
Y+YTfuLRzCKCbdNdFIJheynXWYmhWKTO1BGnxQtZZsexzyVhHi5Xcpt94zVa7ECna38NgKpPs3Jp
zW4Y+qzHXxANBzhfxNjSegoAkRZYw+S6RAR1mQqbmbie2a7lOeeumd9Trbona8w09FTMip6+3QEY
/t9TcyOO7wjJEFWgUaiHF8VV6VkGijTB4hyNLlBBzxU81QPW4jQSFId+s2xRhH8LYjc8lSTax21R
fGOpJJejryLY7EAe7C6C0IlhIb4CY5VEpkZQ4PWZvqqvAUwUjxOd12qr2+pFbXhjUauAfdVsuU6K
tSkmo0FHANAGWuq0AYKFBbPFB2iFI9ZcIljzoWvRdg2lsaFTQcT2+dvjzRS153os3uQqOcEl6QT3
gNWcxBJj4COUKCN9jk5HsajImI1TCbDpWwL0tmgLuPlL2bqnaPVUCO4EcSSApuKMFhevACSSMKkk
ou8GtqBxzUcyH7ESZdvwHQ3blQLY9NvPz9+qdIAbOYZ6bsa3Ra2E2ZXphMbqNZ0UEFDAfdaHTGH7
KWNf1bfEL2aa77jxWiX/zq6R+ABWdLHNJmppQf8f6n1Ujlg5Dy/UYwGYB0PkAc1hmk6ykUQ9grmz
+6vBMoehkaay14PWdpVr/MND/+3T3bb4vzEVpziErb3h4/MMJviglOgIpu/zgBUqHM629fCmNQcC
TF7mQcc5zse8j3fMV7E3DYWE4f0FV3479hSpe+xlLrAeTXc2F+c9IBPjJZg1r5jlRMdsXtVc5TD4
ucz7crESetsSeismhRPv+o/3Xx+xufbw+Ig9YevMV0rIqOI9yRrdcsDpuWBgxwK3nbCl9oREv8z9
uzxuLaLaNkRctSY5Bgr2VXfAMWBA2VgnQ3IMJksO6gcTpS03nTNA56XnPHDinXuhTcnR13+5S6Br
3DdbEpy9zUp/wJc7dTSlv32bjh7YAzx6bEzHgm0NuyILCbo0R3jKgspOAZwNJMqgWLv5wTRcLcRO
t4QYFs8VAFC+PT7KsV+KSUwFYgFMw5GH3QoE3FLHOiWSs9iokPLLbrMy5tm2Avl2Iee+Ied+Smb+
/ZSJKvElC5ZIwAY6wWHwIThQ9+gLiUykKGMUli024++NNFScgrbmlZPBwz+GNzk3WSnDCjQp6bFM
F/BEdNjmQ4NuZJxKG2B3kXZu1GyohQhqLQLnQ6MIA3FF8Q2VnIixW0bSRnPhAE9yrMHgwQPQpNhI
gXgfnGfJqhe1IQ58XhPi1UpkLhpvi6tlQkehU6H/9vR8oqKHlm+JeAVWEQsoKTa/8qAKPWBGawiP
QNV8vgrbnktwIV/lcEe9RtU4vlxPPUw+3H9c0E8qqYejATwpaexbAmjfENCSOUaaWDA2Rn4l+jlN
Xots7FpksVl6Q3bD4+enr98eZz0ITSnLKJ/oqGLSp8BIlw16zDNjQLgw8mqJo04CFJDkdV3AykRH
ooE3nGsGtrrxTb2Gfr0wpaeirbvtM6L+Wc8N/LPssiAZYjUA0I4KfCd4ZC0H1KCZcUoACoth0Q5s
MVYlh1r32IMvh0lb9M+zzjFmrNsBPR4AIBskHABMjcFMW4/8QwuZNKgOZ2oJTqNUk2u+WU+u9bIg
9ueIUUxZYEdxOwaaGdEAl2LKGDcKufMcq4cw35pE0OdKXd3t83M8U2Ma6zXtxXpNFv13Kzf5uiGw
kYcYumbWRwXahGbs+ZY0tocQpmMqM4pl82OT78sq8CVrX99TraIXDQ0OX57tMXszxonwReFCDv/i
pcthNpGEoAElGodaRBrAi0AZSGBSMGqY9n9KWH28Vq9z19j+/W676D4y9uIdOxbN8S9nHmiiyoBl
MOnNEY/sjHUseS1z5grOxevyVo/jX+oFvOhbhILu1tJvyFTHfOAud/f76QwLbDkw+ueioI5KBQDD
AIczwnaOBQ5YGIxVAg4TLzPu06hv6ullS6ZhIdP916e7/azlG71hY00zUB7hRU5dlg7rcTB7VsIp
F8rBA5Wacnaxn+h84FqwTeNVD0bvt5Wy+V5M1rHx2JijBBCMgv3GmmNhx/QDAzq3S84FTsGGBEuu
toHHbKv2Bi7X3tQLMK1V7VZ9eh8/u4fN3dMxyjm2vIafxdFAlZRAL7QmWAkMfM4zTN2kGTQtEA1v
LuPixejnmu5WNy1WMTRWsdsvDMHYBAjVVunEM/bcooeeWyVPJFGejAAz7wXsaR8YELosO4BkQEi1
FK/p51jGPq8xy+VK+gK4l9LDlyuVv/3ao6Y3pbICgS52obVRY344BpaB8TsCv0ULVCBSaqlJL4gL
Q54TFS7VYrIG5NijSld1sK9q5TyW4JdeziLZxIzHzvRgkxSQOQPkrUvK0SCBsIScrm51T9KcC/01
nL6WknWPhfLl8pUUzI0Ng0+JzAk2PSyIdMFjE0YrAcNjT5SQHUuaRmwm9YeB/HitFrUfGqJulhVe
t5/6hzHpmrMxcxU/0bpaw7kVrmNYHsqZAHqNYeXsJM3RKxeje1Uf1nGCM46B8WIluF7njOOX499i
wcTR/D/4nw27Ze4qUM0guIZHiqEsTrBpuzekU+T/i7uy3raNIPzOX7EvAWygFLgXDwN+4LEUFJmx
Yctp+yTQIp0K0ZFKdJz8+84sKYmkSMlBjVYPPrirmdnlXrMz8w1MW4UQ2fydcga0RGiJ/9Ql/sHx
dtSOb3WUpFEMY98RlnZxRqhrOH5TFUpq+cK3pHwnbWjPvCHyEz9e7OmMOXU01bt0A2rQwQRW2r9c
Ln00lZq2jyjdPhyWvTCINVSssCIVCtf+H9FU60IbzcZ1tjjVEDO129mGa81OY/JguGlLjue5IUwE
xHwW6LwFf8XSMWVEfVy4KJcn4wE7qDeFdI6VVJrZ+5ueH8sFO5gYmN5yaQTzEp0/PIUYIArWUtCs
TctBBygGojtxK+q4RsRoMqId3J/2wav1tJJw0NL3nrHtwkCWJmhRuMT5LgZqo5E5lHGkVIWL1sSb
6rpsonna0fRn3tbPk7xIs+qmp/L/hvdaGhMtgRjGClQdisZEj8Wm50BXgBgqsCzXZcp+P2PiTpIe
/Kaq1Gg253jfZBZt32ahiv0yx5OVTn/Ay4lHXbwExzgwUM6rFBuOyxAgj1MZ+7CKOG+NbHsc9Z9K
Hute3CBefjwoGGVtK+NdvkHsfTT71z30hb6Nw80wCkKHC0+ZrtAIQ9r8BIMVZpOrYjiwOOpNhp4O
Rj3eE8cVjWYbZEfD7PbG/rReQkMquGyvdOPThltpM9OOEMLJwVZhOqXYV5aCxVvFzpvCeALg0m2x
Wi+bsh7nVvAYw9yC9EyQ2ACWTsy/VCZf4lpfk8JWrhd56IKqfa0onNID12QwqGxpRYzF1n+3hENB
o63sGPcHHtrsOWMN/NaDfUA4ZeqjwEEXMoUgsrgY8Tg0fcd1zMgW3ApsbsGifRK69XhZYqxD12M8
FTpnlL4RW6++H5ZkoXWHQIiAUglKHoLwuSAMjInI9FVoM858IW3evlerUTGarDpGKc+y1pJxny/X
Rf55nr/WQinKO2VthNbmNQ7zLkLnH4FvHAGbYRD7XiClCt52sjtm07ctt+s1GiU7NHt46O02mm/p
srbLlQD1PFQYzBNpDzoLzkoBjW0TFkSg5UnKwxY+cI1Gi3fHGuzxrGWk/D7XwahxOstLZzEMNdaT
CH/rq0sWxBiWawVoU5cKNhvEWvcoDMPIhx+hfEuX7jj0TKCq1GhKe3zOZxoCRrQvBqsrCK/C+ccg
NFuFkWnFFM6daJrxVBwjQCMTjh1HUSzfK0R8z75/qzm6hGCzDgWYzZ733t7bvxfzIueH9Cx637eY
7QWxhy4WGIgAW4sXunAmEdKVgQfzJWzdIjfINATIO27T4eHTToBFuvoyzw6HYkfnUYQF1UZYCAen
mB/A1ga7sQmbAYs17mXbJaxOxTDUjyqrS7LO5s+74PaHl+USeh8zkIbpYrElyzTLydNPsi7+yjfk
22YN02oLE71IN19yHUaL6bt3BWXm0iLdfsUU3tNv8+yKlBkwq2S6M/hZ5FfEqj/c5oUGJK2eNxmf
I2/9O/LwT61V0AOaH6ImzFd5Fz8OGof7azyNzwnBhAv1/r2HWrerxU+CMJtYsn4me93vikzWRbq4
ZhbMoYRs8u08y1fFtUcHLLkQ4sMl2b7CfMuz6fqlmIJoLyuNAA4Ms2tKXawm7Q+Xxu+beYE4CEAD
+e8pA6EheYXCIl9dg9JtjS8soLrnxKW0y0c1RtdVrQYzIITuCMCLGPdqOLr9RCZ/3inS8/k8up88
+jfG9eHTV7UqNsIh2WotmMx1etzu2hTaYEQVDgHmfIfBWfqNt78g3IGVGB8fyMfRhHwpgYOB+Gyd
5R103XFP1QvoLNhn8uyyEmBgDXdf2hURePNpliF6AAHJ0Em71nmXxli7fREfn5BbODT2dIUYG4l/
c3MbktMfGCA82VW9SLPlfHXZW5mzsfEw8cMxGT7691E/VWljhz0U6ezrGf4E9CM7gfE+1SL4E3Wi
LhfQt1Wm2ER3Sr+kA5oY02nkT/wzAjA6kFh1lPhDdaauZCDAdHoz+jRWEbzgE/1qY79OpxP1x+RM
B2DQDVZ9/DQKb6PTIkgBL3ap5xdBQMoTzRJItZoGSzjobH6eoAtUf2F+TW4n/g05+2YHclhW/Y3A
sHrZNgZ5ObhL5p4YOAmsBsY/UEsDBBQAAgAIABeRe0YFFFUEeCsAAHqMAAA3ABwAYWNjZXNzaWJp
bGl0eS9hY2Nlc3NpYmlsaXR5LW5vZGUtcmVwYXJlbnQtY3Jhc2gtbG9nLnR4dFVUCQADHv8VVe3+
FVV1eAsAAQT1AQAABBQAAADkW9mS20ayfR5+BR5bYxe79oUx1xEFoODRWNuILdlxHY4OEAS7ccXN
ICir5+tvFsAFIEGqNeO3YYTVJKqQdTIrl5MF+F25yvLNZhTsPz/nk5+K6i7fVO+3y2VeBr8KhrH+
bfAurR6P0+Bz+3E13y7yze3Ht68+vHa3f709vXfwcpovq2JW5OWoX/rgY15uitXyKBgPotU0D+6e
1vn+4i9aIsmDmzdpVXzOXwCSEsQG7w7Q3z1Vj6slIKVGqt8G7/PNerXcFJP5TsTmMfiVYv7b4MMG
FHoZH1cTmAwGcVrlt3fF4rAgxUQgzBBVAdEjrEacDqkyAcIK48HbcdBF/TrNArj4S0Dw0AxFcENY
wvgLwLFelVVrMiEDu1wtnxar7Sb48KEGoiU31jKGHMUUiShOkIqjCNk4lCFRUhjhBoNBVKabx3wa
3D2WeTr1soIgLjbrtMoeg9+3+RbAZ6vFMF2v5/mwMfNwXK3K9CF/nS7h33IwcF+yfF0Blr153S/R
fWjjextFbjwObsYvfww/jF+0JvrNABP/5N6/uX/3/u2di+5evn1zn9iXrz68d0FaBfgLbj4EZ5hy
loJFP74O3ucPcP8meJOnJcw5DI4G3mQfX9/bV6/eRvbOtV3qIGkyywx8Qe0LU/gS/AqziPzpt6BE
6Bb+C8av/2d8a4NggNAPwf39nfvlLjj9nEo5is3oRDViqdG8Fvvltvzjixcbvf35spMPZ2W6yP9Y
lZ9ud/u7ubW7sVrD+/vY3tnLUHYrt6HMyE5DyqiH8gfaQ3n3/uO/CWXQOEyAR6Mr/rJIiyWq6pkD
DCjnxWTztKnyxX26mQ+nT/C7pcNfmi1Xs9lMayVyQB74iffLFQT70/1qnS+D7yCSyTeLMnISeEk7
EVSYAYVpR6RR8iavvK4XhORKCEYFmD9KPrx/FaXZYz4atX/dtL6D4OWm+uv3wXy1fNj/6yePq7JY
PhyGzy69AHCEMjFg34qOmywPjggisHmVe1UVHvCOsGS1XU7TOgp7hQlFJIRUgH59Mz4oVCyL6uei
enydL1blU5Su06yonkbTYvOp86PO5r95LRQfiL683/n8pRXlEyknSk2Dn+/ej0b+hmi1rMrVfA5Z
frSep9VsVS5eAo4inRf/yv1o/qW68SYTLLjp3gG5c7hYjAijLwbyW2FIApWiF0ZxWP6mWFbfB9kj
ZKFm6+q9o0rIUyjDbL0eMa1fDNS3AhFyJvqBdH/3g2FM9GIhFLDob8XCUmkCH9BeMgbJ/ru3scAv
BqaJSAjD6VksnnuYmkxyMZsGmyqFOga+ckgnJNgVpKtppb8M4Y6XN3OuaDSbcjbx1k1Go7/Dmncp
1PW/1T+bkPw+OP/REI/qyX2pyjSD9TuTvJjvWxLLtKg2bZE/fG0Ub+c/jEbTPJ3PVxkEcA3qpjUH
ksYWKMjDEmo2bLrfZg570Qy+XKznw8eRkLAj5Jus4YuoyGc7jxiNXsHq8519gcakk3STA+Dsk/e9
7XrqoTU/96NJuVr03ZUU83zTBKkCoAdLA04m2IuTNPwcnFDsn4ezWHie9LYsHorlkTE2YKhWwc2V
u+tAoRIAdjPxP9LP6TgrizUEVZn3uNVkms+Egsx+/79vGGyc+RnS9j+9B+vpzqHdm3HF7u+Jnm2X
mc/DL5PPn51z9xPY9E/3xfLz6lOduiGr7aek8xHhTLw4RAq9GiE+FneDaNGKj2PVBB2X+Unh7JSU
NDNS0uBT/hksBzQZwvRQefeye2K9LWPCleSUBPf7+feLh7KtX1OFv00gYfJEYEMwvIfRg3nY6Nv1
1blMYeN8nf29nl/m1bZcdjTfSVs3a3bEdYDiLJ1hHewn3v/x+wElY3iv9vOlTWcT0+TLtijCDgrz
/zaFxX+bwiTIds3aH0DEfPe669qCceW53o3kaFJUL3wnVKZfRscOCnOdcc04EKFy0h4geEbUZCqA
DJRZ547dJ4WBad/AxC8yLUY9bRoMbIrOLVDuMQF6Cquvz1aHhszf0TMAzBXMVOr9iJqlsxSMTnjq
d740Pbi8LIJPBmYZ1vUAObuDYuk1IbSzyJThXOXcD7A2LiLUbEpILYuf27EZED26C79I0dVxz0CC
cjY/wUUwJVB3spL2GRhkDV6tHgooXkH07sNod77hynJV1o317vzgcKcaQFVbB2+2i8n+xIRwaP7D
YpmWT8HLBdSHTdNA17fVfK82Jgo6FxWfzVTw3RlvvMEvgr8ZG0eMGoliIRRinCdIC+1QlGDlmHNc
SvfDc053OkuaWQ8OAzEDFQliCW72hdjfPX4sFrsAq/GwmHPMGEOJMxwxlVhksBVIYBNjQ4hxYdKH
55LULq5U9uBKJQA75zMUYhOT72A2/BmSIRXfAT5LE8WYilFIE4NYYhjSRiZIcMZCGalYWX3ZXvRa
e05PsObnWDMBRsyuUJs+yBFPMHGhQlbHAFkJgkIZM0SJYtTGTkJr0Qe5K7ofeXdOR4HdGU1HgYxO
pHeCc/LYB9wIEirrN59ahhimYHWTUGS54yHlztIw/OHfP5TZYzITfQ40nYkTSzd3vsof0uypF66S
imhwBsRFJMDOCkIJDIxCHkmDI6ySa3AbwddANzM60LMeJ5lmbHru0Be9w2oVMomlxwoJgCqJQmIx
sgwzI8D6URhfQH3ZLXaDgwaTL5Zgmwk7Yj1czKUm0GH7HjS4AW455N6SNuYsNCESkbOIRcoho5lE
FoMhTWIiKyRg2m5KH/e3/ubWUloIrk+X0tBfpTNozNsHNHW2+ALOx6QaUn9D8wUghBrHWMsYGWYh
aCImkJYYcEQsiWNMVcL8Zo5rpnD7qpiUkJRvk70xNrd74f0G2o8OuggnPbAZwDZt2D/6w1k+9BPp
0GPl3BnCQ4dCwIyYwwIZDlEeWeMEMzaxgl7FChL7YcJAF2FKzxGalPoC039YdSOHBuYTLOSQSAAL
xZAbijUCp4OgTgSYWEQRCpkyksgkdIm+CvYovA9z1BrvQE9n7Bx6HeWzmvNFH1+P38230HWOt2vf
gu6rkhkCcu8RClIO5xzJxDrESAhW1oQjoBdUEEWpieRV4G/X+fLHV/2GbqYXEGCXoXTUyaf5uTp5
Tk8iP1otFqvluxQ49ia4gZgfSrjH+I2QIeyETWIorQnshooUMhBXiEgaEaj9SoTsuoen5aR/E2w3
EI4QLgXDcUZXyZz1KclOlLRZls/zsqbTpHa31hW4AMoCfQhDqiyyTlJwPQhsCG6NcIhlDIUwSsT1
zTtK7NfhOH6iAe/TID8JmPr8rHlClJe7TQddcK0MhLB3PyosNi6CJEgJ5Gn4piVsHBYhdAnKYRe7
cw3elcVnwNTejp6lLmxLz8yOcrNpT76a5epEOe/3cVHm/uTt6aAVkI+hwXVkJZBogaFolCj4h1EK
JT6GJCYtBb4GhdREyVcj67BCvzKdKV0t8vNiAXDIiZPFRXOkUz6N8/JzkeVNPPkkjLWvoz7TYqFR
aD2RFs4hayHNxeBiTjNBqIq/WjD2or8aVOdo+m85nzfoqkl7dDeTsywyX5Xjp2Xm646pK0/9t86K
QoYG9IRGgjTpXAMrRsr60NJMq/h67bGwAjRFHuWztT/guZRPdsNdXU3Wo+uudrWa/t0zi336p3zv
pkACYhZb76EhUAIoZFAAIAxjbUJjiVS4Tph7VtLIu70kuYstZX3YINFNa2zeexuaXSwfPlTF/sDk
BooPICMmwU5Jg7DRgAxDioOqH0JnoqQz2BklTAvZZYFdUDN8DoqQ7Mw5jn77cgmpYgkd7g3RvAlz
/9dzlNhZwcExNIklcJQ4hPBgESLA5rgBCgrl/1npq2e1yxTrdOagq8q0Rz8K3fKkNnq2Wj/NCtBw
b2sMGYvWrhAl1MRJIiH7eoMLg8HrOWRk6igjEqQ43esKXZldOIL3wNGnxS7OJ9uH8dNisqorOpY1
u/IF3ZEwdkBaoV1iwJplwqFJjaF/jkWkCE2wjdRzTNxe4UJWac3o6qBFnw5mH2OPebGYpnOUbpZk
b1ZGj2a1jpIkgW5aSeCGxgAtVNBLOWj6E+cSSjnt+vG5wC4eQ3rw5OakQjWq7LKQT+vcG5VChhtS
345o63QIVTdMiG/sGDR2OpJIsTBRHAO2JHyOYTvL9Fu2M6Wjip7OzlXRvtO7GI3Bjaj5g6lbKglR
JhxKiPIpIk6gs4FeWocCs8iBcWPxH5an9owOdIPTc+hGqRPo4zwts8f6MAB2oK4y9V9fZUyoY0Gg
K6XQCzIZYkDvDCKKcBkbyHFc/HnF9QDkwh7th7tKqh4aUVfSpr9IVsvKvwazqYCi7DMK9dnbKiiW
0LFCQoTqyaJIw65IjaQxWkSxAA2jP72E2rsLLd/7fLPallnTiZyD7uqc9fikmaq9zrvCN11uNvtT
9BtB6T7cWQJRZDGwJcx9TdDanz0mKDaRSyLOLMfiWkFtye3CmvZtxVTvs9Cn/GnxUB4KvGdvzFod
azB/lGBoocOYIQt8GzmqHbGMWmgWeqG0ZXVATEhP6pkqUZf0o9Nv8mxbFhXwYlV7vBBckSHhQ1r3
nCySJDIEOeOrpi+YkBQTJKUAv4gJUBJ+1TXGO/GXPLkZHXQxyh7gZnrCk5bNuy1HmkSGDBDrkDiS
kBjMB009C6FV9peQDSPNochbJvm1Pe2I7eIyeQ+uPNs7WwYhnpVP62p1CC9Jmv6CGcUiqhHhIVgR
Y4mgGQwRxnGsEmwAm7pQrbsiu3jyHvownemT2vImr+y2egTHb/a3zmeRJsRJT9NcBIUuVBxprKE7
VSKWlCeMymdVlJ3w/t3dDXZA57wnFefi9ABns87z7HEI2q8e/Msz7XLlewBaV8j6rz+n1WEYMseR
pAxqi0sIMjiE2sKdxTGD1C3Jn3GSMK5Rve8D1fHq02ldC4jzplVhrGe0ce/V5P+yoT1kK9G4kAVH
iY3miCpwZoaBW4EnEyRDihmBXVT1cWCLmbTlDDpr9RxEKYLzk/ha1G+THMKLDUnThUAdh44fjM00
FEDGKMSWUhQBIWXEsYQwfTVptuUOuhDOk7miEvgna7tGup0Wq2G1Ws0nqy9D63/dNT982SZN1Sbe
yaUJqYKsjoTVYLMkUijUkO0jIkMJDE/SxF2vay3hF05dWjM6ynTO9A8XM3pMFv7IKeqkC0h73FMl
7R+YRJD8mQYCCq0KsFAigIVKGseUaOVIfCFdnArtYspYHyZ2UhEaA2/BdTeNeT8sG0rUsa3no4QJ
JISFlCaALltWN1bSUKtiF6rk67b1kq8Y1g+faHDeoqgJO7TQ4Ss7PnZLhg8FQI2dYdZ3SCKxwJ6p
pQia5QiJWMUKYgj61uQ/OnprTf2cZyCgf1oHX0etyaQnJUwmh4hsvSB3eETBCVYKygdKDIYwDCF5
a8kcUtQ6oDMudqT/MOAo7ATDefRpxcRJYgaq1zwta5prKkVDFEwcEQbhBjkXai/TkIcN/PbeC3WG
CBXG7msc8gLhjXZjgy4y0wNXkBO4P+ZLv3H1q1C7V7bAhA21l7gmDJIrbkLoWjElgNcC+zUhN9Bc
xZAhQmzAms8phT1LXXimcT6xq5qY9qgmT/Pz8QXmG0rUkNReIYVIQsYZtODA0pijCaQOHqMQGlhh
rUsMj68l54PQLiLZ5xuKnSDaVCmkjP1Ti/p01Rs4Elo7rCnQah5CqoAuyiTGImVjzQAsprVrXMTU
EttBlabnUaPTKd+jyr77Lp0Uezzc1NWLEgslANi1VAx2m0NaDf2DUsWhnUsMkXGCu3W0Laa7/lT0
rD87nDX845378ZiMuN+e0J+Sc0dQohLI7Jhp/xSAIegeZRwTaOyj6w/16pcuXr59Rud0XL0LenbO
v/x7RCdx83o7r4pqtc0ez07oPdUWQwJ8wB897776DkZTCBdDUSQZuJ5vXoxRwMNjCs5HE82Yfk4c
XVm6rezZtI6a0z41c8xP1JxA+7brWJv3gRf+f+XZJYjm2SaNqYJ0oIGx+2IcQ48YYgHeKw0QZm2p
TNhXOqAT+ZdaoZNpbX2Mf4HpVB8ohpMTbvTPbVpW/2oetZOh9s+TGa2DMIyltgkQ/phJKBc8ioH6
QyUMueWMCmlkYq+qcRTdj/84PuhizHqAq8MZ55fNvBoejuJInS+MMtwwiSSDdpMBFQKoikC4EGD1
kJtJRLoh2hbSWb2O0NPVp/L0AVGUfPURkQojWJ47REKOPZeEXimKgfUyETnomUT8Ffs94xFRuyFJ
njH/ZFJXc6n7ND99sPKYz9feVdiQ+X7Kn+JapyT0yBLFWFn/glGtKUeJfxFDMe4ck39GM/V3WLp/
kh/pKJPT86dEcHG6J9OfvrT4Ead0+P/EXVtv3MixftcvCRBQ6Pvlsa+7QrxYJ94NztsBZ4ZjC7Zl
R7J8NvvrT1VzhsMme0bCZrABEkkecrurye6q76vbUCqLOeRBaeO1BH2LGTHR+85EHzthhOEOPRgy
tL0qv7VAkh04bQiC+HPczY/D5y/fh7nPnuOO5lLAc6S6swyJSARc5BgwOO080DZhNUm5KcZyvIUw
vCGMIPs9KcJsfocHcUumB4PUAs6PcZhL4oGmgRoAlWYIYHdQ3EYj+Wci1GerGqWeXwyN+Q+ooHYI
//N+N3w5qiQKaAW92kKB0eU2dUxh1ojETDsrTQcv0HDmufWUvehTLSOfdweXy7XUQ0PqvewXB2Ma
8fbu5wJ4wRoUi2cJYC0Cf+OLJRJYuXcAtxRyH0t4ZwKBTSYso8Jnas1lt3AZvC1+uTQXvWfbNebt
+SFeNIPoCeA54HKJiVb4G9W/d4yTbDsqBOjU4DySdtcRBdiRWgafXjE47NIZUpduatFNYz1iieF/
3dz/67l4KGnRUszgTg46Uzg9ogvJgG3gBeQK2gEvJdFKR7N9lQfrOHpb4uPVSm65Xds0+HDytJeN
91P4dI/G/ujHMcWMJB+4CmCBA+bpYUAXPc7os7KE8aSTVPlKOTwrIeo17NaWsQebcQSv33+6f5qc
P4KBfcAjS0BhECCFHTWYQGU9sDxQbQCGgjfAn7QQfxaVngl4U6+BNha2JceX88ObX5eJVS4RgEDA
BApfAvWcQT2r2CUnpFZEAVOU13kp0+SVyJquvRq9VpN5++Uu5wWRyB5YFQFNozPHLGUQ3glAJ9pz
+F8inrN0JSJxmr0S2jRyBXtDpxjHb/3jCdcxgrtHSs2c0xhMMBGQBfAgC+wPkLVwRgA10jQtgN1p
kHpy2tCEZoXrsG53+wl1N78tkcjxD3RXZNi2AkQJHP3fksE5NBZeeRDUxECz9OzFVx7enE/1CW9q
gRtwrDd6meNzcHs//fvh24fh6f6pdnrrYoDK78K3ePaYM58Mggr0fBvmTUdlttkY6TW5fuLL6Np+
t5Zv7f+ebqofhGatB8EXEbun/mGHTtfj/tGgPkdHOIkEsEtynfIIT9Fd45MinZfCAMzyCej8RW/C
fOSFaI1jaIbNhQD37c/vTrFuBahAlORmUsCnhBOZiZedcAy95QBDXUyik17oqIJOTNLr2dyTJGc2
5btWaByY/3pjFnfAIimpqkT6i+QHf5NDaiylgseP+pNigjIBK5yVTsEmQhILF1OS5uPWgjUM1Iai
T3R/8K6wlXNF5qyV7GQKcCAMPHmP6WA+AcQF9uIiNVdzrrCGyLThQt0wJOmVVrp/+Dg/1weuyQiG
4o2TxBvLMf8Q9JJhCvABKncpcnKZGFBa1yBfd3MZKtT58PGmFn/bWJOkx9fwud9+mAIYRiDWpJFZ
ivkdgXCMGRtgOzwD6RLweriHl2R9c0/MxqplkKwhQy+X6Rvb/hPWCGNblZJvte+3xQ9SvL0laUoL
yazpNNf4cIG+e+5pp5mO0kllkzD/kQ9krihbwpxRl61bqwfAG1nvGwBlLc1UZxLxA2uhAjkcvh0D
KI0E4H0aYAKeWNPZCOQ4AGEJ1mMaOXt1HtzL+USr26qFCc0bCzMT8lkU+AKbtlOqlkjCUcQRgXv4
gUxWEwswiGkgAIAwUtsO1GPW4jQ8uhsx0CXBwp/5Xfjy+evj8PRUHrRURbASIEO3IVEKICXs+ugx
LRV1ookRnd4ZIEawxKr4mse8nusMtVrdV69saOwgOSxzBVYaEHcQHw/QqGS5DyEzh/V5NGP0F+PQ
gKNiJvDkgxHUsT+uZA8XK9GVXAN6/HCZg79GM4CZ0N8gSn5N4plQzJ3FcAjXBmujJJbTBAFoCZ4O
p9dBS40bF+tpvAql+gZ2fTomyE4pgSXbFpQW4TrqjhIK1JEmBUeY6o6YpKx1mWtylXSHKkf3PNSd
bqmXaXaNZVqyeG2/hDBX0Zw5omW0ndBwdji6fa30AQy5J1EC4oWz85pjA8O2BYYLtZi2tbv6SQPB
Yfry6futnZAPHgJKA2x1sM2ZBnT7wA8vkulUInC4o8jOyprI1MNUEoB9X0uAyc8TYV3yVeGV9ADy
O+B+WJ0WkUfB9NEDa3WOOGnjtfhqS2BFWwIPi7rKw0D9w7FMoWRCgXrQQqDXA7EBCxpICzUYKWJB
gTGI7lVFJNPgFxfR10rQiobgVk9Y94c3Rf8sH7dMhHluQmczymx9AksjFMAGgPfReJ8DudbjnglQ
id7zxibphYBf1TPvH967h/7Tv4F24WPXhyRWXWySAcbNqVcdpaYkl7DOmgym36Lht0SzKK7OGOci
nXkEszvqRYvmopcs/5jB+OEe39mYw0gIYh3MXyVYAUtSAiOsgSYC6ENwHblVwM9eYgSvzQs7SPDj
3eU0xx/vqvUNtrG+YbvEtXfbuUlj6NZl8paiJRBaUooZydlHdF/BD4PxdWIiwCOqVMqvOk7zKc5Y
5u0Zczbs14dqy3Zsvx/KoXrj3rrwt1VSjk7aYU51RxUGIiwVnXcASJXiXlmjJPz/T/IkziWcL20r
ydpSbyVd8rm/DY+b4fHLU0Hbk54jxuXkO2qNwyzU3PngJNjpHJKUCTjQZZh0HLQt9fFqLS7TDXHF
MrQfPjw/fARrfZh0SoeRcqwyBRIXg3ZdpFj6TBMoCaUD/DODdVPMkFb4r8EP6mnOsIP6pno5u8bG
krsp6eRfQMb6B8Adk8LWJVDrwMT44JF9AoJwDL0ATsDhkJgPGFng7UTq5XgLYURDmGEyHeEf+d3z
/bdT2K84abNLGsNaQYoEe9xgyZEF2GaoEiFabWysYUI9TCWBImtHzVbRZesIhI3vPx2MF4arDkaM
AyYgCR5LpJhfLqgHyMJ15yM8l8S018L/YSM2XqvFpbolrln4lUrvqilnSPHi2jZSIaYBluEwpgYQ
IVk4SUkC8DFMZ8MuuZTmQy5Esg2RBnEEWt/ju7eriAdW2HAGJj9GpMsGjrSB19klkXhQImvt9J8V
8Zjkmy9rJ+V6WfBhf1zW88O2qjRQDB4i5j1RUyqRM8AZRzAYrbylTCpx5oBMA1XTa7V+0Tu97Rec
eXxA4cvD/v798+NU53RII6JTEhG3jjlLuogHl3OHlU5JdiwDAnNaAoS5HNdozHOu0Gl1Y7WuvpGF
t+tPQZnN0+dTbL1E+VlwgRDHOsolw24hDmQvp1/pKCIwDb0ogpyNUc+t1jHq3U6aS57oEaocUn+I
1gAQCmsvf5UCE5YsQ4dEApXOowBjBCcCsCCAEAPUWNFwPW/0SZozin+6flOv0bYWvgzO//L4/PQt
fe8/PZf35t7Ps7Zk2UbCGcywEA4T1TWs0wFSwmQ74gHn8sReFRxuTXSGVzburJa2b1Q6D3SzXbQE
+fFuSmbHvAs8HACHcHepnNGb3tEAzJ9TmjsXMgBakXkE089dvE5azt3FhPfp8k21joZ5hA/1ooPN
3c/vng9eWTuuzY5BnUgAoXsSQBOhiwawX2dJoMBMtGfCqGReyK6aRj6XS3G4vJDatKReFmd+fbyf
v/Xbt/jvI9VgCplVSoSAsaegttBtnwLrsCFuJxWT1AShrBXXeDlva1Hmd5VLi+WtcyAHxuA3e3F5
ox45VNoXs2GiYZKn0gYpjzlMNsjQSSDu3mqRzAvdOv4IeZxkubDmpRKBJW5a65409z/63X3/sB0W
4SOhqDAs2C646AGyA9f3BMiitBoMvYvCE3Kl8FEtQSW85ut4y6APOTHFCP/f/cMUh+OyJHdqE0Pg
0oCZDOhsZqnz3MqOAKj3QgcvhT5j0k+j1WII1hJjAt/jU7j10zOkFlPQCwAnnnGZAxCeBABcaUCa
ToUOSASzFkiejgszWA+2kKOhWEp8wLQ7Xf9FaT5mPuFvPJpZRLBtuotCMGwv5TorMRSL1Jk64rR4
IcvsOPa5JMzD5Upus2+8RrtVC9XypgdQ9WFWLq3ZLUOf9fgHouEA54sYW1pPASDSAmuYXJeIoC5T
YTMT1zPbtTzn3DXze6pV92SNmYaeilnR09d7AMP/e2puxPEdIRmiCjQK9fCiuCo9y0CRJlico9EF
Kui5gqd6wFqcRoLi0G+WLYp2/bd+N3wrSbRP26L4xlJJLkdfRbDZgTzYXQShE8NCfAXGKolMjaDA
6zN9VV8DmCgeJzqv1Va31YtadzHDHqXLgH3V1rROirUpJqNBRwDQBlrqtAGChQWzxQdohSPWXCJY
86Fr0XYNpbGhU0HE9vnr0+0Uted6LN7kKjnBJekE94DVnMQSY+AjlCgjfY5OR7GoyJiNUwmw6VsC
9LZoC7j5U9m6p2j1VAjuBHEkgKbijBYXrwAkkjCpJKLvBragcc1HMh+xEmXb8B0N25UC2PTbj89f
q3SAWzmGem7Ht0WthNmV6YTG6jWdFBBQwH3Wh0xh+yljX9W3xC9mmu+48Vol/86ukfgAVnSxzSZq
aUH/H+p9VI5YOQ8v1GMBmAdD5AHNYZpOspFEPYK5s/urwTKHoZGmsteD1naVa/zDY//1w/22+L8x
Fac4hK295ePzDCb4oJToCKbv84AVKhzOtvXwpjUHAkxe5kHHOc7HvI93zFexNw2FhOH9BVf+cewp
UvfYy1xgPZrubC7Oe0Amxkswa14xy4mO2byqucph8HOZ9+ViJfS2JfRWTAon3vfvH748fbvf/jQ8
PWFP2DrzlRIyqnhPska3HHB6LhjYscBtJ2ypPSHRL3P/Lo9bi6i2DRFXrUmOgYJ91R1wDBhQNtbJ
kByDyZKD+sFEactN5wzQeek5D5x4515oU3L09V/uEuga982WBGdvs9If8OFOHU3pb1+nowf2AI8e
G9OxYFvDrshCgi7NEZ6yoLJTAGcDiTIo1m5+MA1XC7HTLSGGxXMFAJTfHR/l2C/FJKYCsQCm4cjD
bgUCbqljnRLJWWxUSPllt1kZ82xbgfxuIee+Ied+Smb+/ZSJKvElC5ZIwAY6wWHwIThQ9+gLiUyk
KGMUli024++NNFScgrbmlZPBwy9BmZybrJRhBZqU9FimC3giOmzzoUE3Mk6lDbC7SDs3ajbUQgS1
FoHzoVGEgbii+IZKTsTYLSNpo7lwgCc51mDw4AFoUmykQLwPzrNk1YvaEAc+rwnxaiUyF423xdUy
oaPQqdB//fZ8oqKHlm+JeAVWEQsoKTa/8qAKPWBGawiPQNV8vgrbnktwIV/lcEe9RtU4vlxPPUze
Prxf0E8qqYejATwpaexbAmjfENCSOUaaWDA2Rn4l+jlNXots7FpksVl6Q3bD08dvX74+zXoQmlKW
UX6jo4pJnwIjXTboMc+MAeHCyKsljjoJUECS13UBKxMdiQbecK4Z2OrGm3oN/XphSk9FW/fbZ0T9
s54bFA6HLEiGWA0AtKMC3wkeWcsBNWhmnBKAwmJYtANbjFXJodY99uDDYdIW/fOsc4wZ63ZAjwcA
yAYJBwBTYzDT1iP/0EImDarDmVqC0yjV5Jpv1pNrvSyI/XvEKKYssKO4HQPNjGiASzFljBuF3HmO
1UOYb00i6HOlru72+Xs8U2Ma6zXtxXpNFv13Kzf5uiGwkYcYumbWRwXahGbs+ZY0tocQpmMqM4pl
82OT78sq8CVrX99TraIXDQ0OH57tMXs7xonwReFCDv/ipcthNpGEoAElGodaRBrAi0AZSGBSMGqY
9n9KWH28Vq9z19j+/W676D4y9uIdOxbN8S9nHmiiyoBlMOnNEY/sjHUseS1z5grOxevyVo/jX+oF
vOhbhILu1tJvyFTHfOAu9w/76QwLbDkw+ueioI5KBQDDAIczwnaOBQ5YGIxVAg4TLzPu06g39fSy
JdOwkGn8HrxTyzd6y8aaZqA8woucuiwd1uNg9qyEUy6UgwcqNeXsYj/R+cC1YJvGqx6M3m8rZfO9
mKxj47ExRwkgGAX7jTXHwo7pBwZ0bpecC5yCDQmWXG0Dj9lW7Q1crt3UCzCtVe1WfXqfPrrHzf23
Y5RzbHkNP4ujgSopgV5oTbASGPicZ5i6STNoWiAa3lzGxYvRzzXdrW5arGJorGK3XxiCsQkQqq3S
iWfsuUUPPbdKnkiiPBkBZt4L2NM+MCB0Gb+olAIh1VK8pp9jGfu8xiyXK+kL4F5KDx+uVP72S4+a
3pTKCgS62IXWRo354RhYBsbvCPwVLVCBSKmlJr0gLgx5TlS4VIvJGpBjjypd1cG+qpXzWIJfejmL
ZBMzHjvTg01SQOYMkLcuKUeDBMIScrq61T1Jcy7013D6WkrWPRbKh8tXUjA3Ngw+JTIn2PSwINIF
j00YrQQMjz1RQnYsaRqxmdQfBvLjtVrUfmiIullWeL370D+OSdecjZmr+ButqzWcW+E6huWhnAmg
1xhWzk7SHL1yMbpX9WEdJzjjGBgvVoLrdc44ftiX+Comjub/wf9s2C1zV4FqBsE1PFIMZXGCTdu9
IZ0icGwTtsjmV/rOgIUIC/E3LfFPibd3y/pWnSSNGfa+FqSkOGOra4DfNAVJiROOSHklNjRNXom8
4WtlT7dMz7upvu0fgQadQmBj/Mtw6TBU2imHXbodgGUbfC6tYgWJKQij/ovdVOdC39SLa664Ly1m
Zt7ZKrXmyJgsbLcSybHWBDgI2PNZYPIW/JWl7mSkDhUX5fJiPWBj9FpIvSapdKcmT89vnz+xU4iB
FZNLI5xLTP6wCXuAJNClwKw7ojEBioHoOi+qjmeD3NQT0cbsm6l4dfvXv8562RS7I7IysJFlBywK
VZwzWKiNQeYgc0zp0Bet7jfVcjbRoW8sfc+X/Pyn4Vu/O3h6Dvnf8F7HYCIR2MM4AdWhGEy0LHdW
w6MAMZInxBiW1PWCiUdJzvRvOly9qZeztpuM0KU3Cyn28z0iq/L1B3w8eNSgExzrwICcH75iQxuG
DfI4ldmBFtGvrWz79e48Kvl1nsUN4g3rTcEoW0YZ3w6P2Hsfw/7zDH1RvHFoDKMPmgubOiNKh6ES
foLNCqfJpAyARadXBXoaE53JnljfeFOvQTYWppaGffPlMyzk0C7bjml8JXArFetUxBZOGleFX6eU
XSIJlHfK+lVlPB5maUesvnyuZV1/t4JljIBlpy8Uid2C6sTvXxq/fIkXviaFSsZGiymoJdeKAkr3
pmOwqZQkkbFM/jwV/v+tHU2P2krsnl8xl0qL9EDJzCSQlTjkE1HI8sRm97WnKCWz26hA9kG22/33
tScBkpBAqzYHEDPGdjzj8XzZhorau9LzuD9QaNCnhNbit57OB/iwSH1kD/EKmYdBZHEwYr7Tt4aj
Yd81OFNtg6kwaF8M3Xo+LFHastajLOYyZ5TcEcu2309DMpdrB5tzW9N0WORhEL4RMAN9wu1bnmNQ
Ri2uG6y5r1bBotRJtfRSliSNIWMpNlkuHlPxVnGlKPaU5SG0PF5joHcuXv7h2OIYsBk6sWXauu7Z
vzazOyfTZZabcLWX0ltW9lBoHgzNS7ypWLkiQD1zPHTmceUNOhXmSrbmG30YEAGXqWvMacQHruBo
0G4Zg01M6VY7pPyeSmdUP16J4rIYuhpLJcJvuXVJbR/dclUbz9R1D4wNxlo3NeiGrgUfjv4rIj1Q
6FCgslapc3s+z6cyBAxvbgyWWxBmGecfndAMz3H7qq/BvBOPZkzP9zFAI+VDw3ddX/9bLuJH8t2m
5mwTgq5aFsB09XS87b3/f53mgp3Ss0i7r1LDtH0Tr1igIwKYFtMZwZyE6yPdNkFfnMYucg1NjQHR
spsOhV8ODKzj7XOanCbFQ5lHEQZUA8NCDFHFLBtMG1jjPhgD6su4l80rYVUsiuL9KLO6BFmSPh2c
2+9fNxuQPmYgdeL1ek82cSLIl3eS5V/FjrzsMlCrPSh6Hu+ehXSjzb+C1S0risylebz/FoEZjF7S
5JZoRVmRmncFn7m4JWq1cC9yGZC0LK8TvoZe/TP08KPyViABSQ+jJqRb0UaPadBtf4+m8hgQTLhQ
le8SoBbb9TvBMJtYkz2R49rvloRZHq/HVAUdCshO7FNMmj42tQENbjj/0CP7N9A3kUTZax4Ba6/b
Q576ZKxpIwTTjQ895b9dmmMcBMCB9I+YAdGEvEFlLrZjxgw+u1EB65ESWG1aFFUIjdWiqEYMEOF1
BKBFlKU3mS7uSPj5X490PI/TZfhgzZXx6ekCLasVZ0L2chVMUpketx1a4+pMOaZhB9MGnbO4N978
Ax8N1ED5eE8+TkPyXAQOBuSrLBEteEezDtAbEBbYGZH0SgYG6uTwp0MVgZaPkwSjBxDgDC9pV4TX
U2by2hexsIQstivRIQo+UwJrPl845OKDMfRYcAC9iZNNuu11QkMLK/eh5czI5MFaut1odQMFdp/H
q2+EXONgoAXQ3yPJghV6F2AZB9mWmWIDKZRuThFrFLlWaF1hgGoDHUGngTXxrsDqFBiIovn0bua5
0MDdDyzFGWINvU/hFQGg0w2CPtxNnYV7mQWdQ8NupH4RDEh54bU4Yi3VYAMTnd37BbyA9Tf0K1yE
1pxcbdmBPilA/yHQrV73tU5edO7ipVQGww+MBspPUEsDBBQAAgAIABeRe0YBLLR5jisAAKKLAAA5
ABwAYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LW9iamVjdC1kZXRhY2hlZC1jcmFzaC1sb2cu
dHh0VVQJAAMe/xVV/f4VVXV4CwABBPUBAAAEFAAAAORbWXPjRpJ+Hv4KPMyDNO2i6j4Ys44oXF6N
+xpR3Xasw6EAQVDCNi+DYHdrfv1mATwAEGSrZ/y2jHCLRBWyvszK/DKzAL8vVmm22Yy8/eeXbPJz
Xt5nm/Juu1xmhfebYJjQ3wfvk/LpOA0+Nx9X8+0i29x8fPf6w5vo5m833XsHt9NsWeazPCtG/dIH
H7Nik6+WR8F4EKymmXf/vM72F3/VEknuXb1Nyvxzdg1IChDrvT9Af/9cPq2WgJQaqX4f3GWb9Wq5
ySfznYjNk/cbxfz3wYcNKHQbHlcTmAwGYVJmN/f54rAgxUQgzBBVHtEjrEZCDQ3BHsIK48G7sddG
/SZJPbj4q0fw0AyFd0VYzPg14FivirIxmZCBXa6Wz4vVduN9+FAB0ZIbaxlDEcUUiSCMkQqDANnQ
lz5RUhgRDQaDoEg2T9nUu38qsmTqZHlemG/WSZk+eX9ssy2AT1eLYbJez7NhbebhuFwVyWP2JlnC
v8VgEH1Ns3UJWPbmjX4NHnwbPtggiMZj72p8+5P/YXzdmOg2A0z8c3T39uH93bv7KLi/fff2Iba3
rz/cRV5Sevgrrj8ErMYnLAGLfnzj3WWPcP/Ge5slBcw5DI4GRz8Ay83nq/ToUkdJfMbgC2pe4PDF
+81N4z//7hVf0E3x5as3fvNf7+8+et4AoR+9h4f76Nd7r/vpSmmIVdOsFkuNrsSir3uxwbtfzjv5
cFYki+zLqvh0s9vfzY3djVUaPjyE9t5egFKv3ICiid5pSBnt0fDfgjKoHcbDo9EFf1kk+RKV1cwB
BpTzfLJ53pTZ4mE9T8rZqlgMp89wsdbhL/WWq9lspiU22STJwP9tuVrkabBarCE87XI6/pKsGfWT
ooDw/+tHe3dr397/dbH2Xnl0QFqLJJt5U/7JIlqJTCfUg3kPq3W2BBFCDyjMOqoQxG+z0hnhjIxM
CcGogH0J4g93r4MkfcpGo+avq8Z3ELzclH/7wZuvlo/7f93kcVnky8fD8Mmla8BGKBMD9r3ouEkz
74gggM0oM2cshQe8JSxebZfTpArPXmFCEUk589Bvb8cHhfJlXv6Sl09vssWqeA6SdZLm5fNomm8+
tX5UNP+700LxgehLCK3PXxrhjyeGKjX1frm/G43cDcFqWRar+Rzof7R3pFvAkSfz/F+ZG82+llfO
ZIJ5V+07gFSHi8WIMHo9kN8JQ08JpJBeGPlh+at8Wf7gpU9AT/XWVXtHlZBdKMN0vR4xra8H6nuB
pHIm+oG0f/eDYUz0YiEUsOjvxZIk0ngu0p1kDJLdd2djga8Hpg5IiMLpSSieepiaTDIxm3qbMoEE
B75y4Bni7TLVRb7pz0+45eW7FHFWI+DyCZs468aj0X/DmvcJJPy/Vz/rkPzBO/1RVyTlc/S1LJIU
1m9NcmJ+aEgskrzcNEX++K1RvJ3/OBpNsyqxQQBXoK4ac4A0tlCbPC4hmcOmu23msBf14O1iPR8+
jYSEHSHfZw3IriKb7TxiNHoNq8939oX6JpkkmwwAp5+c723XUwet/rkfjYvVou+uOJ9nmzpIFQA9
WBpwMsGuOzT8EpxQBbwMZ75wBdS7In/Ml8dSsgZDtfKuLtxdBQqVALDNxP9IPifjtMjXEFRF1gOQ
YIhZBcz+8D9vGWyc+QVo+5/Og/V059DR23HJHh6Inm2XqePh2/jz5yiKHiaw6Z8e8uXn1aeKuoHV
9lOS+YhwJq4PkUIvRoiLxd0gWjTi45g0Qcdl1smbrZSSpEZK6n3KPoPloH6GMMX7xLuX3RPrTRkT
riSnxHvYz39YPBZN/Uy1/d8nkDDZEVhXHs7D6ME8bPT9+upMJrBxLs/+Uc0vsnJbLFua7+uaes2W
uBZQnCYzrL39xIcvfxxQMob3ar9c2nQ2MTVfNkURdlCY/39TmHjprqn5AnWJ6/J23Y03Ll3pcyU5
muTltesYiuTr6NhpYK5TrhmHuqCYNAcI5tJkUwG5sUhbd+w+CQxM+wYmbpFpPuppZ2Bgk7duAY7Q
BKo1WH19snpqsLujZwAKOTBTofcjaqZJZqZYJNztfGF6cDlZBHcGZinW1QA5uYNi6TQhtLVICrpA
o+kGWAvXRM2moI0b4Kd2rAdEj+7CLZK3ddwnZK+YzTu4CKYEaDgtaJ+BQdbg9eoxBy73gvcfRrtz
gKgoVkXVgO767MOdagAkv/bebheT/ckC4dAk+/kyKZ692wXQ5aZuNKvbqvJHOWMir3XRTGYz5b06
KaOu8LX3d2PDgFEjUSiEQozzGGmhIxTEWEUsiriU0Y8vOQVpLZnyHhwpn82AoCGW4GaXl9zd46d8
33ZVeFjIOWaMoTgyHDEVW2SwFUhgE2JDiIn8uA/POakdXFkfrgyC+TS9U4hNTF7BbPgzJEMqXgE+
S2PFmAqRT2ODWGwY0kbGSHDGfBmoUFl93l70UhtL21in8gQrgfZ5NksvZPo+yAGPMYl8hawOAbIS
BPkyZIgSxagNIwmVdh/ktuh+5O05TQX2ZxltBdR06pzgtJbqA24E8ZV1m08tQwxTsLqJKbI84j7l
kaW+/+O/f3ixx5RNJydAKYa6p23p+s7X2WOSPvfCVVIRDc6AuAgE2FlBKIGBkc8DaXCAVXwJbi34
Euh6RhM6JcBeXeiMSHzq0Ge9w2rlM4mlwwoEQJVEPrEYWYaZEWD9wA/PoD7vFrvBQY3JJUvJ4L8j
1t1FjqnRBBpO15J5V1BqDbmzpA05842PRBBZxAIVIaOZRBaDIU1sAiskYNpuChf3N+7mxlJaCK67
S2loN5IZ9KnN84qKLb6C8zGphtTdUH8BCL7GIdYyRIZZCJqACaQlBhwBi8MQUxUzt5njqlK4eZ1P
CiDlm3hvjM3NXni/gfajgzbCSQ9sBrBNE/ZP7hCTD91EOnRYOY8M4X6EfMCMWIQFMhyiPLAmEszY
2Ap6EStI7IcJA22ECT1FaBLqEkz/2c2VHBqYT7CQQyIBLOWMG4o1AqeDoI4FmFgEAfKZMpLI2I9i
fRHsUXgf5qAx3oKeVGetHejJTFShAl4UfHwzfj/fQhM23q5dR7bPSmYIyJ1HKKAczjmSsY0QIz5Y
WROOiFBUEEWpCeRF4O/W2fKn1/2GrqfnEGDnobTUyabZqTpZRjuRH6wWi9XyfQI19sa7gpgfSrjH
uI2QPuyEjUNIrTHshgoUMhBXiEgaEMj9SvjssocnxaR/E2w7EI4QzgXDcUZbyYz1Kck6Sto0zeZZ
UZXTpHK3xhW4AMpC+eD7VFlkI0nB9SCwIbg1wj6WISTCIBaXN+8osV+H43hHA96nQdYJmOo4qX6S
khW7TQddcKUMhLBzPyosNlEAJEgJ8DR80xI2DgsfugQV4SiMTjV4X+SfAVNzO3qWOrMtPTNbys2m
PXw1y1RHOef3YV5k7iDq+aAVFB9Dg6vIioFooULRKFbwD6MUUnwIJCYthZQBidQE8Tcj67BCvzKt
KW0tstNkAXBIx8nCvD7hKJ7HWfE5T7M6nhwJY+3yqGNaLDTyrSukRRQha4HmQnCxSDNBqAq/mTD2
or8ZVKdo+m85nTdoq0l7dHcNQ4dF5qti/LxMXd4xVeap/lasKKRvQE9oJEhN5xqqYqSsCy3NtAov
5x4LK0BT5FC+WPsDnnN8shtu62rSHl13uevss6AryvduCkVAyELrPNSHkgASGSQACMNQG99YIhWu
CHNfldTybs5JbmNLWB82ILpphc15b11m58vHD2W+PzC5guQDyIiJcaSkQdhoQIaB4iDr+9CZKBkZ
HBklTAPZeYFtUDN8CoqQ9MQ5jn57uwSqWEKHe0U0r8Pc/XU1ShhZwcExNAkl1CihD+HBAkSgmuMG
SlBI/y+ir57VzpdY3ZmDtirTHv0odKmTyujpav08y0HDva0xMBatXCGIqQnjWAL7OoMLg8HrOTAy
jSjU3yAl0r2u0JbZhiN4DxzdTXZhNtk+jp8Xk1WV0bGsqiuX0CPihxEUrdAuMaiaZcyhSQ2hfw5F
oAiNsQ3US0zcXOEMqzRmtHXQok8Hs4+xpyxfTJM5SjZLsjcro0ez2oiSOIZuWkmoDY2BslBBLxVB
0x9HUUwpp20/PhXYxmNID57MdDJUrcqOhRytc2dUCgw3pK4d0TbSPmRdPyausWPQ2OlAIsX8WHEM
2GL/JYZtLdNv2daUlip6OjtVBS5eiEbvSlT1g6laKglRJiIUE+UoIoyhs4FeWvsCsyAC44biP0xP
zRkt6AYnp9CNUh3o4ywp0qfqMAB2oMoy1V+XZYyvQ0GgK6XQCzLpY0AfGUQU4TI0wHFc/HnJ9QDk
zB7th9tKqp4yosqkdX8Rr5ale11kU0KJsmcU6tjbKkiW0LECIUL2ZEGgYVekRtIYLYJQgIbBn55C
7f2Zlu8u26y2RVp3Iqeg2zqnPT5ppmqv8y7xTZebzf4U/UpQug93FkMUWQzVEuYuJ2jtzh5jFJog
igPOLMfiUkJtyG3DmvZtxVTvWehT9rx4LA4J3lVvzFodajB/EGNoof2QIQv1Noqojohl1EKz0Aul
KasFYkJ6qGeqRJXSj06/ydJtkZdQF6vK44XgigwJH9Kq52SBJIEhKDIua7qECaQYIykF+EVIoCTh
F11jvBN/zpPr0UEbo+wBbqadOmlZv+pxLJPIkAFi7ZOIxCQE80FTz3xold0lZP1Ac0jylkl+aU9b
Ytu4TNaDK0v3zpZCiKfF87pcHcJLkrq/YEaxgGpEuA9WxFgiaAZ9hHEYqhgbwKbOZOu2yDaerKd8
mM50J7e8zUq7LZ/A8ev9rfgs0IRE0pVpUQCJzlccaayhO1UilJTHjMoXZZSd8P7d3Q22QGe8h4oz
0T3A2ayzLH0agvarR/cuSTNduR6AVhmy+uvOabXv+yziSFIGuSWKCTLYh9zCI4tDBtQtyZ9xkjCu
UN31gWp5dXda2wLitGlVGOsZrd17NfnfdGgPbCVqF7LgKKHRHFEFzsww1FbgyQRJn2JGYBdVdRzY
qEyacgattXoOohTBWSe+FtXLFYfwYkNSdyGQx6HjB2MzDQmQMQqxpRRFUJAyErGYMH2RNJtyB20I
p2SuqDu3ZU3XSLbTfDUsV6v5ZPV1aN2v+/qHS9ukztrEObk0PlXA6khYDTaLA4V8DWwfEOlLqPAk
jaPLea0h/MypS2NGSxkzOU0ByqT0SBbuyClo0QXQHnelknYPTAIgf6ahAIVWBapQIqAKlTQMKdEq
IuEZuugKbWNKWR8m1skItYG34Lqb2rwflnVJ1LKtq0cJE0gIC5QmoFy2rGqspKFWhZGv4m/b1km+
YFg33NHgtEVRE3Zoof3XdnzslgwfCoAaRoZZ1yGJ2EL1TC1F0CwHSIQqVBBD0LfG/9HRW2Pq5ywF
Af3TWvhaak0mPZQwmRwisvG+2OERBSdYKUgfKDYYwtAH8taSRUhRG0E5E4UR6T8MOArrYDiNPq2Y
6BAzlHr107K6uaZS1IWCCQPCINyAcyH3Mg08bOC3817IM0QoP4y+VUOeKXiD3digjcz0wBWkA/en
bOk2rnozaPcGE5iwLu0lrgoGyRU3PnStmBLAa6H6NT430FyFwBA+NmDNl6TCnqXOPNM4ndhWTUx7
VJNdfj6+zntFiRqSyiukELHPOIMWHKo0FtEYqIOHyIcGVlgbxYaHl8j5ILSNSPb5hmIdRJsyAcrY
P7WoTledgQOhdYQ1hbKa+0AV0EWZ2FikbKgZgMW0co2zmBpiW6iS5DRqdDLle1Tpq1fJJN/j4abK
XpRYSAFQXUvFYLc50KrvHpQqDu1cbIgMY9zOo00x7fWnomf92eGs4R/vo5+OZMTd9vjulJxHBMUq
BmbHTLunAAxB9yjDkEBjH1x+qFe9dHH77gWd03H1NujZaf3l3iPqxM2b7bzMy9U2fTo5oXelthgS
qAfc0fPuq+tgNIVwMRQFkoHruebFGAV1eEjB+WisGdMviaMLSzeVPZnWUnPap2aGeUfNCbRvu461
fj124f6Xlx1B1M82aUgV0IGGit0l4xB6RB8L8F5poGDWlsqYfaMD6sg/1wp1pjX1MUlyGoGQDCed
2uif26Qo/1U/aidD7Z4nM1oFoR9KbWMo+EMmIV3wIITSHzKhzy1nVEgjY3tRjaPofvzH8UEbY9oD
XB3OOL9u5uXwcBRHKr4wynDDJJIM2k0GpRBAVQTChUBVD9xMAtIO0aaQ1upVhHZXn8ruA6Ig/uYj
IuUHsDyPEPE5drUk9EpBCFUvE0EEPZMIv2G/FzwiajYk8Qvmdya1NZe6T/Pug5WnbL52rsKGzPVT
7hTXRkpCjyxRiJV1LxhVmnIUuxcxFOP/R9yV9caNJOl3/ZIBBhTyPh7z7NaOG+0Zdy/mbcCqYtmC
bcmjw9vTv34jklUUk8wqCb2FXmBGkovszEgyM+L74qqUuLoEmfoRpm7fhFeqxQxsHSWCD3dHMP35
txk+EoxdUyqLOeRBaeO1BH2LGTHR+85EHzthhOEOPRgytL0qv7VAkh04bQiC+HPczQ/D1/vvw9xn
z3FHcyngOVLdWYZEJAIucgwYnHYeaJuwmqTcFGM53kIY3hBGkP2eFGE2v8ODuCbTg0FqAefHOMwl
8UDTQA2ASjMEsDsobqOR/DMR6rNVjVLPL4bG/AdUUDuE//t2N9wfVRIFtIJebaHA6HKbOqYwa0Ri
pp2VpoMXaDjz3HrKXvWplpFPu4PL5VrqoSH1XvaLgzGNeH3zcwG8YA2KxbMEsBaBv/HFEgms3DuA
Wwq5jyW8M4HAJhOWUeEztea8W7gM3ha/XJqL3rPtGvP2/BAvmkH0BPAccLnERCv8jerfO8ZJth0V
AnRqcB5Ju+uIAuxILYNPLxgcdukEqUtXteimsR6xxPC/bm7//Vw8lLRoKWZwJwedKZwe0YVkwDbw
AnIF7YCXkmilo9m+yYN1HL0t8fFqJbfcrm0afDh52svG+yl8uUVjf/TjmGJGkg9cBbDAAfP0MKCL
Hmf0WVnCeNJJqnyhHJ6VEPUadmvL2IPNOILX7z/dPk7OH8HAPuCRJaAwCJDCjhpMoLIeWB6oNgBD
wRvgT1qIP4tKzwS8qtdAGwvbkuPL+eHdr8vEKpcIQCBgAoUvgXrOoJ5V7JITUiuigCnKy7yUafJK
ZE3XXo1eq8m8/XKT84JIZA+sioCm0ZljljII7wSgE+05/C8Rz1m6EJF4mb0S2jRyBXtDpxjHb/3D
C65jBHePlJo5pzGYYCIgC+BBFtgfIGvhjABqpGlaALuXQerJaUMTmhWuwyrW7RfU3fy6RCLHP9Bd
kWHbChAlcPR/Swbn0Fh45UFQEwPN0rNXX3l4dzrVJ7yrBW7Asd7oZY7Pwe39+J+7p0/D4+1j7fTW
xQCV34Vv8ewxZz4ZBBXo+TbMm47KbLMx0mty+cSX0bX9YS3f2v893VQ/CM1aD4IvInaP/d0Ona7H
/aNBfY6OcBIJYJfkOuURnqK7xidFOi+FAZjlE9D5s96E+cgL0RrH0AybMwHu658/vMS6FaACUZKb
SQGfEk5kJl52wjH0lgMMdTGJTnqhowo6MUkvZ3NfJDmxKT+0QuPA/Ncbs7gDFklJVSXSXyQ/+Jsc
UmMpFTx+1J8UE5QJWOGsdAo2EZJYOJuSNB+3FqxhoDZ0Mxw3yn+9ZyvnisxZK9nJFOBAGHjyHtPB
fAKIC+zFRWou5lxhDZFpw4W6YWKz0Eq3d5/n5/rANRnBULxxknhjOeYfgl4yTAE+QOUuRU4uEwNK
6xLk62YuQ4U67z5f1eJvG2uS9PgavvbbT1MAwwjEmjQySzG/IxCOMWMDbIdnIF0CXg/38JKsb+6J
2Vi1DJI1ZOjlMn1j23/BkllsP1Lyrfb9tvhBire3JE1pIZk1neYaHy7Qd8897TTTUTqpbBLm/+QD
mSvKljAn1GXr1uoB8EbW+wZAWUsz1ZlE/MBaqEAOh2/HAEojAXifBpiAJ9Z0NgI5DkBYgvWYRs7e
nAf3ej7R6rZqYULzxsLMhHwW9a7Apu2UqiWScBRxROAefiCT1cQCDGIaCAAgjNS2A/WYtTgNj+5G
DHRJsPBn/oBNOB6Gx8fyoKUqgpUAGboNiVIAKWHXR49pqagTTYzo9M4AMYIlVsW3POb1XCeo1eq+
emVDYwfJYZkrsNKAuIP4eIBGJct9CJk5rM+jGaO/GIcGHBUzgScfjKCO/XEle7hYia7kGtDjh8sc
/DWaAcyE/gZR8msSz4Ri7iyGQ7g2WBslsZwmCEBL8HQ4vQxaaty4WE/jVSjVN7Dr4zFBdkoJLNm2
oLQI11F3lFCgjjQpOMJUd8QkZa3LXJOLpDtUObqnoe50S71Ms2ss0y4rw34JYa6iOXNEy2g7oeHs
cHT7WukDGHJPogTEC2fnLccGhm0LDBdqMW1rd/WTBoLDdP/l+7WdkA8eAkoDbHWwzZkGdPvADy+S
6VQicLijyM7KmsjUw1QSgH1fS2DUjLAu+arwSnoA+R1wP6xOi8ijYProgbU6R5y08VJ8tSWwoi2B
h0Vd5WGg/u5YplAyoUA9aCHQ64HYgAUNpIUajBSxoMAYRPemIpJp8LOL6GslaEVDcKsnrPvDu6J/
lo9bJsI8N6GzGWW2PoGlEQpgA8D7aLzPgVzqcc8EqETveWOT9ELAr+qZ93cf3V3/5T9Au/Cx60MS
qy42yQDj5tSrjlJTkktYZ00G02/R8FuiWRQXZ4xzkU48gtkd9aJFc9FLln/MYPx0i+9szGEkBLEO
5q8SrIAlKYER1kATAfQhuI7cKuBnrzGCt+aFHST48eZ8muOPN9X6BttY37Bd4tqb7dykMXTrMnlN
0RIILSnFjOTsI7qv4IfB+DoxEeARVSrlNx2n+RQnLPP2hDkb9utDtWU7tt8P5VC9c+9d+NsqKUcn
7TCnuqMKAxGWis47AKRKca+sURL+/yd5EucSzpe2lWRtqbeSLvnc34aHzfBw/1jQ9qTniHE5+Y5a
4zALNXc+OAl2OockZQIOdB4mHQdtS328WovLdENcsQzth0/Pd5/BWh8mndJhpByrTIHExaBdFymW
PtMESkLpAP/MYN0UM6QV/mvwg3qaE+ygvqlezq6xseRuSjr5N5Cx/g5wx6SwdQnUOjAxPnhkn4Ag
HEMvgBNwOCTmA0YWeDuRejneQhjREGaYTEf4R/7wfPv0EvYrTtrsksawVpAiwR43WHJkAbYZqkSI
Vhsba5hQD1NJoMjaUbNVVC2UBcLGj18OxgvDVQcjxgETkASPJVLMLxfUA2ThuvMRnkti2mvh/7AR
G6/V4lLdEtcs/EqlldOUM6R4cW0bqRDTAMtwGFMDiJAsnKQkAfgYprNh51xK8yEXItmGSIM4Aq3v
8cP7VcQDK2w4A5MfI9JlA0fawOvskkg8KJG1dvrPinhM8s2XtZNyvSz4sD8u6/luW1UaKAYPEfOe
qCmVyBngjCMYjFbeUiaVOHFApoGq6bVav+id3vYLzjw+oHB/t7/9+Pww1Tkd0ojolETErWPOki7i
weXcYaVTkh3LgMCclgBhzsc1GvOcKnRa3Vitq29k4e36l6DM5vHrS2y9RPlZcIEQxzrKJcNuIQ5k
L6df6SgiMA29KIKcjVHPrdYx6t1OmnOe6BGqHFJ/iNYAEAprL3+VAhOWLEOHRAKVzqMAYwQnArAg
gBAD1FjRcDlv9Is0JxT/dP2qXqNtLXwZnP/l4fnxKX3vvzyX9+Y+zrO2ZNlGwhnMsBAOE9U1rNMB
UsJkO+IB5/LE3hQcbk10glc27qyWtm9UOg90s120BPnxZkpmx7wLPBwAh3B3qZzRm97RAMyfU5o7
FzIAWpF5BNPPXbxMWs7N2YT36fJVtY6GeYQP9aKDzc3PH54PXlk7rs2OQZ1IAKF7EkAToYsGsF9n
SaDATLRnwqhkXsmumkY+lUtxuLyQ2rSkXhZnfnu4nb/16/f47yPVYAqZVUqEgLGnoLbQbZ8C67A/
bCcVk9QEoawVl3g572tR5neVS4vlrXMgB8bgN3t1eaMeOVTaF7NhomGSp9IGKY85TDbI0Ekg7t5q
kcwr3Tr+CHmcZDmz5qUSgSVuWuueNPc/+t1tf7cdFuEjoagwLNguuOgBsgPX9wTIorQaDL2LwhNy
ofBRLUElvObreMugDzkxxQj/z+3dFIfjsiR3ahND4NKAmQzobGap89zKjgCo90IHL4U+YdJfRqvF
EKwlxgS+x6dw7adnSC2moBcATjzjMgcgPAkAuNKANJ0KHZAIZi2QPB0XZrAebCFHQ7GU+IBpN37+
i9J8zHzC33g0s4hg23QXhWDYXsp1VmIoFqkzdcRp8UqW2XHsU0mYh8uV3GbfeI12qxaq5V0PoOrT
rFxas2uGPuvxD0TDAc4XMba0ngJApAXWMLkuEUFdpsJmJi5ntmt5Trlr5vdUq+7JGjMNPRWzoqdv
twCG//XS3IjjO0IyRBVoFOrhRXFVepaBIk2wOEejC1TQUwVP9YC1OI0ExaHfLFsU7fqnfjc8lSTa
x21RfGOpJJejryLY7EAe7C6C0IlhIb4CY5VEpkZQ4PWZvqmvAUwUjxOd1mqr2+pFbXhjUauAfdXW
tE6KtSkmo0FHANAGWuq0AYKFBbPFB2iFI9acI1jzoWvRdg2lsaFTQcT2+dvj9RS153os3uQqOcEl
6QT3gNWcxBJj4COUKCN9jk5HsajImI1TCbDpWwL0tmgLuPlL2bov0eqpENwJ4kgATcUZLS5eAUgk
YVJJRN8NbEHjmo9kPmIlyrbhOxq2KwWw6befn79V6QDXcgz1XI9vi1oJsyvTCY3VazopIKCA+6wP
mcL2U8a+qW+JX8w033HjtUr+nV0j8QGs6GKbTdTSgv4/1PuoHLFyHl6oxwIwD4bIA5rDNJ1kI4l6
BHMn91eDZQ5DI01lrwet7SrX+IeH/tun223xf2MqTnEIW3vNx+cZTPBBKdERTN/nAStUOJxt6+FN
aw4EmLzOg45znI55H++Yr2JvGgoJw/sLrvzj2FOk7rGXucB6NN3ZXJz3gEyMl2DWvGKWEx2zeVNz
lcPgpzLvy8VK6G1LaGyletgJ8bb/eHf/+HS7/Wl4fMSesHXmKyVkVPGeZI1uOeD0XDCwY4HbTthS
e0KiX+b+nR+3FlFtGyKuWpMcAwX7qjvgGDCgbKyTITkGkyUH9YOJ0pabzhmg89JzHjjxzr3SpuTo
6z/fJdA17pstCc7eZqU/4MOdOprS375NRw/sAR49NqZjwbaGXZGFBF2aIzxlQWWnAM4GEmVQrN38
YBquFmKnW0Is29UCAMofjo9y7JdiElOBWADTcORhtwIBt9SxTonkLDYqpPy826yMebKtQP6wkHPf
kHM/JTP//pKJKvElC5ZIwAY6wWHwIThQ9+gLiUykKGMUli024++NNFScgrbmlZPBw+8EmZybrJRh
BZqU9FimC3giOmzzoUE3Mk6lDbC7SDs3ajbUQgS1FoHzoVGEgbii+IZKTsTYLSNpo7lwgCc51mDw
4AFoUmykQLwPzrNk1avaEAc+rQnxaiUyF423xdUyoaPQqdB/e3p+oaKHlm+JeAVWEQsoKTa/8qAK
PWBGawiPQNV8vgjbnktwJl/lcEe9RtU4vlxPPUze331c0E8qqYejATwpaexbAmjfENCSOUaaWDA2
Rn4h+jlNXots7FpksVl6Q3bD4+en+2+Psx6EppRllN/oqGLSp8BIlw16zDNjQLgw8mqJo04CFJDk
bV3AykRHooE3nGoGtrrxql5Dv16Y0lPR1u32GVH/rOcGhcMhC5IhVgMA7ajAd4JH1nJADZoZpwSg
sBgW7cAWY1VyqHWPPfhwmLRF/zzrHGPGuh3Q4wEAskHCAcDUGMy09cg/tJBJg+pwppbgZZRqcs03
68m1XhbE/j1iFFMW2FHcjoFmRjTApZgyxo1C7jzH6iHMtyYR9LlSF3f7/D2eqDGN9Zr2Yr0mi/67
lZt83RDYyEMMXTProwJtQjP2fEsa20MI0zGVGcWy+bHJ93kV+Jq1r++pVtGLhgaHD0/2mL0e40T4
onAhh3/x0uUwm0hC0IASjUMtIg3gRaAMJDApGDVM+z8lrD5eq9e5a2z/frdddB8Ze/GOHYvm+Jcz
DzRRZcAymPTmiEd2xjqWvJY5cwXn4m15q8fxz/UCXvQtQkF3a+k3ZKpjPnCX27v9dIYFthwY/XNR
UEelAoBhgMMZYTvHAgcsDMYqAYeJ5xn3y6hX9fSyJdOwkOnu/ul2P2v5Rq/ZWNMMlEd4kVOXpcN6
HMyelXDKhXLwQKWmnJ3tJzofuBZs03jVg9H7baVsvheTdWw8NuYoAQSjYL+x5ljYMf3AgM7tknOB
U7AhwZKLbeAx26q9gcu1q3oBprWq3apP7+Nn97C5fTpGOceW1/CzOBqokhLohdYEK4GBz3mGqZs0
g6YFouHNeVy8GP1U093qpsUqhsYqdvuFIRibAKHaKp14xp5b9NBzq+SJJMqTEWDmvYA97QMDQpfx
Cz0pEFItxVv6OZaxT2vMcrmSvgDupfTw4Urlb+971PSmVFYg0MUutDZqzA/HwDIwfkfgr2iBCkRK
LTXpFXFhyFOiwqVaTNaAHHtU6aoO9lWtnMcS/NLLWSSbmPHYmR5skgIyZ4C8dUk5GiQQlpDTxa3u
izSnQn8Np6+lZN1joXy4fCUFc2PD4JdE5gSbHhZEuuCxCaOVgOGxJ0rIjiVNIzaT+sNAfrxWi9oP
DVE3ywqvD5/6hzHpmrMxcxV/o3W1hnMrXMewPJQzAfQaw8rZSZqjVy5G96Y+rOMEJxwD48VKcL3O
GccP+xJfxcTR/E/8z4bdMncVqGYQXMMjxVAWJ9i03RvSKQLHNmGLbH6h7wxYiLAQf9MS/yXx9mZZ
36qTpDHD3teClBRnbHUN8JumIClxwhEpL8SGpskrkTd8rezplul5N9X3/QPQoJcQ2Bj/Mlw6DJV2
ymGXbgdg2QafS6tYQWIKwqj/x26qc6Gv6sU1V9yXFjMz72yVWnNkTBa2W4nkWGsCHATs+SwweQv+
ylJ3MlKHiotyebYesDF6LaRek1S6U5On57evX9hLiIEVk0sjnEtM/rAJe4Ak0KXArDuiMQGKgeg6
L6qOZ4Nc1RPRxuybqXh1+9e/znrZFLsjsjKwkWUHLApVnDNYqI1B5iBzTOnQF63uN9VyNtGhbyx9
z5f8/Kfhqd8dPD2H/G94r2MwkQjsYZyA6lAMJlqWO6vhUYAYyRNiDEvqcsHEoyQn+jcdrl7Vy1nb
TUbo0puFFPv5FpFV+foDPh48atAJjnVgQM4PX7GhDcMGeZzK7ECL6LdWtv16cxqV/DrP4gbxhvWm
YJQto4zvhwfsvY9h/3mGvijeODSG0QfNhU2dEaXDUAk/wWaF02RSBsCi05sCPY2JTmRPrG+8qtcg
GwtbfbfT5v4rLOTQLtuOaXwlcCsV61TEFk4aV4Vfp5RdIgmUd8r6TWU8HmZpR6zuv9ayrr9bwTJG
wLLTV4rErkF14vcvjV++xAtf+9/ejq5HUST4zq/ol03GZDXQdCNM4gOfxlXGjcPM3T0RVphZsiqz
wuzs/PutalABQXdzl+NBY3dZVV10dfVHdRVnmqsbjoEuqMLXSoFZuqUPKXQqjcsOpZ78/w3hUNFo
Kz2P+wOFGn2KaSN+6+l8gI3L1EfWGF3IXAwii4OR6tlDc6yPh47GVNnSVBkG7YuhW8+HJUo71npU
jZjIGSV2xLLdj9OQzMTawWLMUhQOizwMwqcDM9AnnKHp2hpVqcm4prb31WpYpCapjl6qxnFryFgl
26xIHtPkrXaVotxTFofQ4nhNBb1z0PmH4RvHgM3QiU3D4ty1fm9md06mzyy34RqN4h0reyg0Dobm
JdrWrFwZoF61XbzM4wgPOhnmSpbiaUMYEAGXwRXVbsUHruFo0e4Ygw01bh1S/kjFZVQvWielsxhe
NRZKhN9i65JaHl7LlS08U+cuGBuMtW4o0A0dEz5s/jsiPVDoUaCqVmpyez7PpyIEDGtvDFZbEEYV
5x8voWmu7QxlT4F5Jx7NGK7nYYBGysaa5zge/6+uiB/J95uas00Iuu5YANP109HbO/++SYtEPaVn
EXZfpppheQa6WOBFBDAthq3DnIRxnVsG6Ivd2kVuoGkwkHTspkPhlwMDm2j3nManSfFY5FGEAVXD
sBBjVDHTAtMG1ngIxoB6Iu5l2yWsjkWS3J9VVhc/i9Onw+X2+9ftFqSPGUjtaLPJyTaKE/LlnWTF
12RPXvYZqFUOil5E++dEXKMtvoLVrSrKzKVFlH8LwQyGL2l8S5SyrEzNu4bPIrklcr0wTwoRkLQq
bxK+hl7+d+jhR61VIAFBD6MmpLuki56qMD7+M5rSo08w4UJdviuAWu427wTDbGJN9kSOa79bEmRF
tJlQGXTIJ/skTzGH+MRQRtS/YezDgORvoG9JHGavRQisve4OadvjiaLoCMa1DwPpr31aYBwEwIH0
j5gB0ZS8QWWR7CZo++Y3MmA9UlK5rpdFNUKTCqpBDBChOwLQItLKnc6WdyT457NLep7H2Sp4MBfS
5PT0gVbVkj0luVgFk1Skx+2GVpg8l45ZycG0Qecs/cbbf2D6SPalT/fk0ywgz2XgYEC+zuKkA68+
7wG9AWGBnUniQcXASJ4e/nSoIvDmozjG6AEEOEMn7ZrwBtJcuH0RE0vIcrdOekTB5pJvLhZLm1x8
MIae6h9Ab6J4m+4GvdAqnUv3gWnPyfTBXDn9aLmGArsvovU3cuUxdAq8PvqhYMEM3AuwKgPZVpli
fSGUfk5Hii+FoWMG5hUGqDLiCDrzzal7BZZTYCAMF7O7uevAC77QLA3lGoaB+3dw5RXgpRsEfbib
2UvnMgucgbC2Qr8IBqS80CyGWCs12MJEZ/9+AS9g/QP9CpaBubj2YtF3blqCfiTQrV7zRicvO3fZ
KJmONB9GA+kXUEsDBBQAAgAIABeRe0Y54Pk8wisAAPqNAABKABwAYWNjZXNzaWJpbGl0eS9hZGph
Y2VudC1jb250aW51YXRpb25zLWNhdXNlLWFzc2VydGlvbi1mYWlsdXJlLWNyYXNoLWxvZy50eHRV
VAkAAx7/FVUN/xVVdXgLAAEE9QEAAAQUAAAA5FvZcttIsn0efgUe5XEXVfvCmOsIrD2atmWNKLs7
bkcHAwRACdfcGgTd1nz9zQK4ACBISzP9NnowSVQh62RWLicL8F2xSrLNZuTs/37Opj/l5UO2Ke+3
y2VWOL8Khon6bXAXl0/HafB3/Xk13y6yzfXnj+8/fQiv/3rdvXdwk2bLMp/lWTHqlz74nBWbfLU8
CsYDf5VmzsPzOttf/EVLJLlzdRuX+dfsDSApQKxzd4B+91w+rZaAlBoJSO+zzXq13OTT+U7E5sn5
lWL+2+DTBhS6CY6rCUwGgyAus+uHfHFYkGIiEGaIKofoEdYjwoYKUwdhhfHg49hpo/4QJw5c/MUh
eGiGwrkiLGL8DeBYr4qyMZmQgbtcLZ8Xq+3G+fSpAqIlN67LGAoppkj4QYRU4PvIDTzpESWFEeFg
MPCLePOUpc7DU5HFqZXlOEG+Wcdl8uT8vs22AD5ZLYbxej3PhrWZh+NyVcSP2Yd4Cf8Wg0H4LcnW
JWDZmzf8xZ94bjBxfT8cj52r8c2P3qfxm8ZEuxlg4p/C+9vJ3f3Hh9B/uPl4O4ncm/ef7kMnLh38
Ddd/BPPYpCwGi37+4Nxnj3D/xrnN4gLmHAZHA2uyyeT9ze1PYXDz0PQo5yhJYQZfUEM0l/DF+dVh
jOOffnMKhK6LP7454w//43/8uc8b/xF/jcdJka9Lf1Vkw1kRL7I/VsWX692GbK7dzpwBQu8A2kP4
SxtWG1qNpAEttVAtNGo0r6B9+w603f70QqrHdlYK3Af3ApR65SYUGddQHMqohfLHwUp395//TSiD
2ukcPBpd8LlFnC9RWc0cYEA5z6eb502ZLSZfsmKZzYfpM1za6/CX2m3UbDbTWZzwmMTOIk6eJovN
46Qs4rXzFsJpQF4riKVEHwSBDMkHtCVjuYKE9HxWhsFTrKZGOLuJE8gYX7NiUoA7w/3FJHnKki8T
auFRMWCvlT3lPHN2otsyQSIVeMBbEuNNR92OxlqJLNFTx07cI16tsyUIM3QgXi3LyKljRe1kUGEG
EqYdd9mPbrPS+skZIZkSglEw38SPPt2/92EnstGo+euq8R0ELzflX39w5qvl4/5fO3lcFvny8TB8
culNZX8mBuq16LhJMueIwAd/LTOrqsID3RIWrbbLNK6yYK8woYiknDno19vxQaF8mZc/5+XTh2yx
Kp79eB0nefk8SvPNl9aPqpr+ZrVQfGD66m7r7y/NLIszpVTq/PxwPxrZG/zVsixW8zlU2dF6Hpez
VbG4ARx5PM//ldnR7Ft5ZU0mmHPVvgNq13CxgAJH3wwIfiUMSqBS98LID8tf5cvyByd5gipQb121
d1QJ2YUyTNbrEdMagJBXAiFyJvqBtH/3g2FM9GIh1GKhr8OSzmJpHJsMrWQMku13a2OBQRqrIhLC
MD2JxVMPU9NpJmapsylj4BHgK4dUTJwdIbiYkvtpAG55eT3ngkYxVJmptW40Gv0d1nyIgVf9rfpZ
h+QPzumPmviVz+E3yOUJrN+aZMX80JBYxHm5aYp8971RvJ2/G43SLJ7PVwkEcAXqqjEHksYWKODj
EjgTbLrdZg57UQ/eLNbz4dNISLsjr7SGSUU223nEaPQeVp/v7As0Mp7GmwwAJ1+s723XqYVW/9yP
RsVq0XdXlM+zTR2kCoAeLA04mWBvqir2OpxAtl6GM19YnvqxyB/z5ZGx12CoVs7VhburQKESALIW
wDax6gEoxXQmFGT2yf/eMtg48zOk7X9aD9bpzqHD23HJJhOiZ9tlYvPwTfT1axiGkyls+pdJvvy6
+lKlbshq+ynxfEQ4E28OkUIvRoiNxd0gWjTi41Wcw0hJnS/ZV7ActClN3rKX3RPrTRlTriSnxJns
508Wj0VTP7MnMa8QSJjsCKzJmfUwejAPG71eX53JGDbO1tnfq/lFVm6LZR9jW9drtsS1gOIknmHt
7CdO/vj9gJIx3OFuL5CWzqamzpdNUYQdFOb/bQqL/zaFiZPsmuU/gIjZ04Nd1+yMS8v1riRH07x8
YzvRIv42OnawmOuEa8aB8hbT5gCBniCbpQIIYpG07tj9xTCQ9g1M7SJpPuppk2Fgk7dugaSYEqCn
sPr6ZPXEYHtHzwAwVzBTofcjYCmuphRjw+3OF+ZkgGori+AO4FmC6wFyognF0mpCaFsW3KNSbgdY
C9dMzVJCKln81I71gOjRXdhF8nXHXDUDcYrZvIOLYGoZVVLQPgODrMH71WMOxcvx7z7VpzV0EBbF
qqgONnbnN4c71eDBdp6328V0f2JF+GAw8PJlXDw7NwuoD5v6AKO6reJ7iW24kdO6OMOzmXLenvDG
K/zG+ZtxA59RI1EghEKM8whpoUPkR1iFLAy5lOG7l5yuNZckZHqKAy7CLjlvIZbgZluI7d3jp3yx
C7AKDws4x4wxFIWGI6YiFxnsCiSwCbAhxIRe1IfnnNQ2Lop7cFGwz+yUz1CITUzewmz4GJIhFW8B
n0sjxZgKkEcjg1hkGNJGRkhwxjzpq0C5+ry96KWjDdrB2mNDmcrZLLlAbfog+zzCJPQUcnUAkJUg
yJMBQ5QoRt0glNBavPtzjqyaWHdnZG0FUjqzTnBKHvuAG0E85drNpy5DDFOwuokocnnIPcpDl3re
u3//QGuHSXAanwAVQqqOpes732ePcfLcC1dJRTQ4A+LCF2BnBaEEBkYe96XBPlbRJbi14Eug6xkt
6IrSE+hSTsmpQ5/1Dlcrj0ksLVZIAFRJ5BEXI5dhZgRY3/eCM6jPu8VucFBjssVSsjRrJKf9xYzM
NFGOY3tQ5wq45ZBbS7oBZ57xkPBDFzFfhchoJpGLwZAmMr4rJGDabgob99f25sZSWgiuu0tp6K/i
GTTmzQOaKlt8A+djUg2pvaH+AhA8jQOsZYAMcyFofCaQlhhw+CwKAkxVxOxmjiumcP0+nxaQlK+j
vTE213vh/Qbajw7aCKc9sBnANk3YP9rDcT60E+nQYuU8NIR7IfIAM2IhFshwiHLfNaFgxo1cQS9i
BYn9MGGgjTCmpwhNTG2B6T+supJDA/PBV+WQSABLOeOGYo3A6SCoIwEmFr6PPKaMJDLywkhfBHsU
3ofZb4y3oMczdgo9nokqVMCL/M8fxnfzLXSd4+3atqD7qmSGgNx6hIKUwzlHMnJDxIgHVtaEIwJR
KAhEovHlReAf19nyx/f9hq6n5xBg56G01MnS7FSdLKOdyPdXi8VqeRcDx944VxDzQwn3GLsR0oOd
cKMASmsEu6F8hQzEFSKS+gRqvxIeu+zhcTHt3wS3HQhHCOeC4TijrWTG+pRkHSXdJMnmWVHRaVK5
W+MKXABlgT54HlUuckNJwfUgsCG4NcIelgEUQj8SlzfvKLFfh+N4RwPep0HWCZjq/Kx+QpcVu00H
XXClDISwdT8qXGxCH5IgJZCn4ZuWsHFYeNAlqBCHQXiqwV2RfwVMze3oWerMtvTMbCk3S3vy1SxT
HeWs3wd5kdmTt+eDVkA+hgZXkRVBogWGolGk4B9GKZT4AJKYdClQCCikxo++G1mHFfqVaU1pa5Gd
FguA062hQV4f6RTP46z4midZHU82CWNt66jNtFho5LmWSIswRK4LaS4AFws1E4Sq4LsFYy/6u0F1
iqb/ltN5g7aatEd3Mz3JIvNVMX5eJrbumKryVJ9VVhTSM6AnNBKkTucaWDFSrg0tzbQKLtceF1aA
psiifLH2Bzzn8sluuK2rSXp03dWuRtO/e2axT/+U790USEDAAtd6qAeUAAoZFAAIw0Abz7hEKlwl
zD0rqeVdn5PcxhazPmyQ6NIKm/Xemmbny8dPZb4/MLmC4gPIiIlwqKRB2GhAhiHFQdX3oDNRMjQ4
NEqYBrLzAtugZvgUFCHJiXMc/fZmCaliCR3uFdG8DnP7aTlKELqCg2NoEkjgKIEH4cF8RIDNcQMU
FMr/i9JXz2rnKVZ35qCtStqjH+Wz2bQyerJaP89y0HBvawwZi1au4EfUBFEkIftagwuDwes5ZGQa
UkYkSAl1ryu0ZbbhCN4DR3eLXZBNt4/j58V0VVV0LCt2ZQt6SLwgBNIK7RID1iwjDk1qAP1zIHxF
aIRdX73ExM0VzmSVxoy2Dlr06WD2MfaU5Ys0nqN4syR7szJ6NKsbUhJF0E0rCdzQGKCFCnqpEJr+
KAwjSjlt+/GpwDYeQ3rwZKZToWpVdlnIpnVujUohww2pbUe0G2oPqq4XEdvYMWjstC+RYl6kOAZs
kfcSw7aW6bdsa0pLFZ3OTlWBixei0bkSFX8wVUslIcpEiCKibIoIIuhsoJfWnsDMD8G4gfgPy1Nz
Rgu6wfEpdKNUB/o4i4vkqToMgB2oqkz1aauM8XQgCHSlFHpBJj0M6EODiCJcBgZyHBd/XnE9ADmz
R/vhtpKqh0ZUlbTuL6LVsryv3rEong8Zhdrs7SooltCxQkKE6sl8X8OuSI2kMVr4gQAN/T+9hLoP
Z1q++2yz2hZJ3Ymcgm7rnPT4pEnVXudd4UuXm83+FP1KULoPdxZBFLkY2BLmtiZobc8eIxQYP4x8
zlyOxaWC2pDbhpX2bUWq91noS/a8eCwOBd6yN+a6OtBgfj/C0EJ7AUMu8G0UUh0Sl1EXmoVeKE1Z
LRBT0pN6UiWqkn50+k2WbIu8BF6sKo8XgisyJHxIq56T+ZL4hqDQ2KppCyYkxQhJKcAvAgKUhF90
jfFO/DlPrkcHbYyyB7hJOzxpWb/bcqRJZMgAsfZISCISgPmgqWcetMr2EnI9X3Mo8i6T/NKetsS2
cZmsB1eW7J0tgRBPiud1uTqElyR1f8GMYj7ViHAPrIixRNAMegjjIFARNoBNnanWbZFtPFkPfUhn
ulNbbrPS3ZZP4Pj1/lb5zNeEhNLStNCHQucpjjTW0J0qEUjKI0bliyrKTnj/7u4GW6Az3pOKM9E9
wNmssyx5GoL2q0f78kyzXNkegFYVsvq057Ta8zwWciQpg9oSRgQZ7EFt4aGLAwapW5I/4yRhXKG6
7wPV8urutLYFxGnTqjDWM1q792r6f8nQPWQrUbuQC44SGM0RVeDMDAO3Ak8mSHoUMwK7qKrjwAYz
acoZtNbqOYhSBGed+FpUb5McwosNSd2FQB2Hjh+MzTQUQMYoxJZSFAEhZSRkEWH6YtJsyh20IZwm
c0Ul8E/WdI14m+arYblazaerb0PX/nqof9iyTeqqTayTS+NRBVkdCVeDzSJfIU9DtveJ9CQwPEmj
8HJdawg/c+rSmNFSxkxPS4AyCT0mC3vk5LfSBaQ9bqmStg9MfEj+TAMBhVYFWCgRwEIlDQJKtApJ
cCZddIW2MSWsDxPrVITawFtw3U1t3k/LmhK1bGv5KGECCeFCShNAl11WNVbSUFcFoaei79vWSr5g
WDvc0eC0RVFTdmihvffu+NgtGT4UADUIDXNthyQiF9gzdSmCZtlHIlCBghiCvjX6j47eGlO/ZgkI
6J/WwtdSazrtSQnT6SEiGy/IHR5RcIKVgvKBIoMhDD1I3lqyECnqhkBnwiAk/YcBR2EdDKfRpxUT
ncQMVK9+WlY311SKmiiYwCcMwg1yLtRepiEPG/htvRfqDBHKC8LvccgzhNffjQ3ayEwPXEE6cH/M
lnbjqlehdq9sgQlrai9xRRgkV9x40LViSgCvC+zXeNxAcxVAhvCwAWu+pBT2LHXmmcbpxLZqIu1R
TXbz8/EF5itK1JBUXiGFiDzGGbTgwNJYSCNIHTxAHjSwwnXDyPDgUnI+CG0jkn2+oVgH0aaMIWXs
n1pUp6vWwL7QOsSaAq3mHqQK6KJMZFyk3EAzAItp5RpnMTXEtlDF8WnU6Djle1TJ27fxNN/j4aaq
XpS4UAKAXUvFYLc5pFXPPihVHNq5yBAZRLhdR5ti2uunomf92eGs4R934Y/HZMTt9nj2lJyHBEUq
gsyOmbZPARiC7lEGAYHG3r/8UK966eLm4ws6p+PqbdCzU/5l3yPqxM2H7bzMy9U2eTo5obdUWwwJ
8AF79Lz7ajsYTSFcDEW+ZOB6tnkxRgEPDyg4H400Y/olcXRh6aayJ9NaaqZ9amaYd9ScQvu261jr
94EX9r9S7RJE/WyTBlRBOtDA2G0xDqBH9LAA75UGCLN2qYzYdzqgjvxzrVBnWlMfE8enEQjFcNrh
Rv/cxkX5r/pROxlq+zyZ0SoIvUBqNwLCHzAJ5YL7AVB/qIQedzmjQhoZuRfVOIrux38cH7QxJj3A
1eGM89tmXg4PR3GkyhdGGW6YRJJBu8mACgFURSBcCLB6yM3EJ+0QbQpprV5FaHf1VHYfEPnRdx8R
Kc//f+KurTduI1m/65cEWFDo++Wxr7GwDuJdJwfnlTND2YIV2auLTza//lQ1ZzhssmckZAdZYFcj
D5nuarK76vvqJphepI56QRBLAlcKEVAvlyEBZ5Lxlef3hhDRnJDkN9y/uKleuTKtlS8DK5+H+2+4
Vfg1Rz6FXlyXtAKOrLpItMMEo7JS0WVMxNBcpMTVJcjUO5i6fRNeqRYzsHWUCL7cHcD0l99n+Egw
dk2pLOaQB6WN1xL0LWbERO87E33shBGGO/RgyND2qvzeAkl24LQhCOLPcTc/Dr99/T7MffYcdzSX
Ap4j1Z1lSEQi4CLHgMFp54G2CatJyk0xluMthOENYQS5vSVFmM0f8CCuyfRgkFrA+TEOc0k80DRQ
A6DSDAHsDorbaCT/TIT6bFWj1POLoTH/HhXUDuH/udsNXw8qiQJaQa+2UGB0uU0dU5g1IjHTzkrT
wQs0nHluPWWv+lTLyKfdweVyLfXQkPpW9ouDMY14ffNzAbxgDYrFswSwFoHf8cUSCazcO4BbCrmP
JbwzgcAmE5ZR4TO15rxbuAzeFr9cmoves+0a8/Z8Hy+aQfQE8BxwucREK/xE9e8d4yTbjgoBOjU4
j6TddUQBdqSWwbcXDA67dILUpatadNNYj1hi+F83d/96KR5KWrQUM7iTg84UTo/oQjJgG3gBuYJ2
wEtJtNLRbN/kwTqM3pb4cLWSW27XNg2+nDztZeP9FO7v0Ngf/DimmJHkA1cBLHDAPD0M6KLHGX1W
ljCedJIqXyiHZyVEvYbd2jL2YDMO4PX7T3dPk/NHMLAPeGQJKAwCpLCjBhOorAeWB6oNwFDwBviT
FuKvotIzAa/qNdDGwrbk8HJ+fP/rMrHKJQIQCJhA4UugnjOoZxW75ITUiihgivIyL2WavBJZ07VX
o9dqMm+/3OS8IBLZA6sioGl05pilDMI7AehEew7/S8Rzli5EJI6zV0KbRq5gb+gU4/i9fzziOkZw
90ipmXMagwkmArIAHmSB/QGyFs4IoEaapgWwOw5ST04bmtCscB3W7W7vUXfz6xKJHH9Bd0WGbStA
lMDR/y0ZnENj4ZUHQU0MNEvPXn3l4f3pVJ/wvha4Acd6o5c5Pnu399O/H54/D093T7XTWxcDVD4L
3+LZY858Mggq0PNtmDcdldlmY6TX5PKJL6Nr++NavrX/e7qpfhCatR4EX0TsnvqHHTpdD/tHg/oc
HeEkEsAuyXXKIzxFd41PinReCgMwyyeg82e9CfORF6I1jqEZNmcC3Nc/fzzGuhWgAlGSm0kBnxJO
ZCZedsIx9JYDDHUxiU56oaMKOjFJL2dzj5Kc2JQfW6FxYP7rjVncAYukpKoS6QfJ9/4mh9RYSgWP
H/UnxQRlAlY4K52CTYQkFs6mJM3HrQVrGKgNRZ/o7d67wlbOFZmzVrKTKcCBMPDkPaaD+QQQF9iL
i9RczLnCGiLThgt1w5CkV1rp7uHL/FzvuSYjGIo3ThJvLMf8Q9BLhinAB6jcpcjJZWJAaV2CfN3M
ZahQ58OXq1r8bWNNkh5eAzaXmAIYRiDWpJFZivkdgXCMGRtgOzwD6RLweriHl2R9c0/MxqplkKwh
Qy+X6Rvb/h5rhLGtTcm3uu23xQ9SvL0laUoLyazpNNf4cIG+e+5pp5mO0kllkzD/kQ9krihbwpxQ
l61bqwfAG1nvGwBlLc1UZxLxPWuhAjkcvh0DKI0E4H0aYAKeWNPZCOQ4AGEJ1mMaOXtzHtzr+USr
26qFCc0bCzMT8lkU+AKbtlOqlkjCUcQRgXv4gUxWEwswiGkgAIAwUtsO1GPW4jQ8uhsx0CXBwp/5
Y/j627fH4empPGipimAlQIZuQ6IUQErY9dFjWirqRBMjOr0zQIxgiVXxLY95PdcJarW6r17Z0NhB
cljmCqw0IO4gPh6gUclyH0JmDuvzaMboL8ahAUfFTODJByOoY39eye4vVqIruQb0+OUyB3+NZgAz
ob9BlPyaxDOhmDuL4RCuDdZGSSynCQLQEjwdTi+Dlho3LtbTeBVK9Q3s+nRIkJ1SAku2LSgtwnXU
HSUUqCNNCo4w1R0xSVnrMtfkIukOVY7uaag73VIv0+way7TLUsdfQpiraM4c0TLaTmg4Oxzdvlb6
AIbckygB8cLZecuxgWHbAsOFWkzb2l39pIHgMH29/35tJ+SDh4DSAFsdbHOmAd0+8MOLZDqVCBzu
KLKzsiYy9TCVBGDf1xJg8vNEWJd8VXglPYD8DrgfVqdF5FEwffTAWp0jTtp4Kb7aEljRlsDDoq5y
P1D/cChTKJlQoB60EOj1QGzAggbSQg1GilhQYAyie1MRyTT42UX0tRK0oiG41RPW/fF90T/Lxy0T
YZ6b0NmMMlufwNIIBbAB4H003udALvW4ZwJUove8sUl6IeCjeub9wyf30N//G2gXPna9T2LVxSYZ
YNycetVRakpyCeusyWD6LRp+SzSL4uKMcS7SiUcwu6NetGguesnyDxmMn+/wnY05jIQg1sH8VYIV
sCQlMMIaaCKAPgTXkVsF/Ow1RvDWvLC9BO9uzqc5vrup1jfYxvqG7RLX3mznJo2hW5fJa4qWQGhJ
KWYkZx/RfQU/DMbXiYkAj6hSKb/pOM2nOGGZtyfM2XC7PlRbhmXWQzlU790HF/6+SsrRSTvMqe6o
wkCEpaLzDgCpUtwra5SE//9FnsS5hPOlbSVZW+qtpEs+9/fhcTM8fn0qaHvSc8S4nHxHrXGYhZo7
H5wEO51DkjIBBzoPkw6DtqU+XK3FBeC7FlcsQ/vh88vDF7DW+0mndBgpxypTIHExaNdFiqXPNIGS
UDrAPzNYN8UMaYX/GvygnuYEO6hvqpeza2wsuZuSTv4FZKx/ANwxKWxdArUOTIwPHtknIAjH0Avg
BBwOifmAkQXeTqRejrcQRjSEGSbTEf6ZP77cPR/DfsVJm13SGNYKUiTY4wZLjizANkOVCNFqY2MN
E+phKgkUWTtqtoqqhbJA2Pjpfm+8MFy1N2IcMAFJ8FgixfxyQT1AFq47H+G5JKa9Fv5PG7HxWi0u
1S1xzcKvVHpXTTlDihfXtpEKMQ2wDIcxNYAIycJJShKAj2E6G3bOpTQfciGSbYg0iAPQ+h4/flhF
PLDChjMw+TEiXTZwpA28zi6JxIMSWWun/6qIxyTffFk7KdfLgi/7w7JeHrZVpYFi8BAx74maUomc
Ac44gsFo5S1lUokTB2QaqJpeq/WL3ultv+DM4wMKXx9u7z69PE51Tvs0IjolEXHrmLOki3hwOXdY
6ZRkxzIgMKclQJjzcY3GPKcKnVY3VuvqG1l4u/4YlNk8/XaMrZcoPwsuEOJYR7lk2C3Egezl9Csd
RQSmoRdFkLMx6rnVOka920lzzhM9QpV96g/RGgBCYe3lt1JgwpJl6JBIoNJ5FGCM4EQAFgQQYoAa
Kxou540+SnNC8U/Xr+o12tbCl8H5Xx5fnp7T9/7+pbw392metSXLNhLOYIaFcJiormGdDpASJtsR
DziXJ/am4HBrohO8snFntbTbRqXzQDfbRUuQdzdTMjvmXeDhADiEu0vljN70jgZg/pzS3LmQAdCK
zCOYfu7iZdJybs4mvE+Xr6p1NMwjfLnsYHPz88eXvVfWjmuzY1AnEkDongTQROiiAezXWRIoMBPt
mTAqmVeyq6aRT+VS7C8vpDYtqZfFmd8e7+Zv/foD/vtANZhCZpUSIWDsKagtdNunwDpsiNtJxSQ1
QShrxSVezodalPld5dJieescyIEx+GSvLm/UI/tK+2I2TDRM8lTaIOUxh8kGGToJxN1bLZJ5pVvH
nyGPkyxn1rxUIrDETWvdk+b+Z7+76x+2wyJ8JBQVhgXbBRc9QHbg+p4AWZRWg6F3UXhCLhQ+qiWo
hNd8HW8Z9D4nphjh/7t7mOJwXJbkTm1iCFwaMJMBnc0sdZ5b2REA9V7o4KXQJ0z6cbRaDMFaYkzg
e3wK1356htRiCnoB4MQzLnMAwpMAgCsNSNOp0AGJYNYCydNxYQbrwRZyNBRLiQ+YdqfrH5TmY+YT
fuLRzCKCbdNdFIJheynXWYmhWKTO1BGnxStZZoexTyVh7i9Xcpvbxmu0W7VQLe97AFWfZ+XSml0z
9FmPvyAaDnC+iLGl9RQAIi2whsl1iQjqMhU2M3E5s13Lc8pdM7+nWnVP1php6KmYFT19u7vH/vHP
xx2MRw/IEFWgUaiHF8VV6VkGijTB4hyNLlBBTxU81QPW4jQSFId+s2xRtOuf+93wXJJon7ZF8Y2l
klyOvopgswN5sLsIQieGhfgKjFUSmRpBgddn+qa+BjBRPEx0WqutbqsXteGNRa0C9lVb0zop1qaY
jAYdAUAbaKnTBggWFswWH6AVjlhzjmDNh65F2zWUxoZOBRHbl29P11PUnuuxeJOr5ASXpBPcA1Zz
EkuMgY9Qooz0OTodxaIiYzZOJcCmbwnQ26It4Ob7snWP0eqpENwJ4kgATcUZLS5eAUgkYVJJRN8N
bEHjmo9kPmIlyrbhOxq2KwWw6bdfXr5V6QDXcgz1XI9vi1oJsyvTCY3VazopIKCA+6wPmcL2U8a+
qW+JX8w033HjtUr+nV0j8QGs6GKbTdTSgv7f1/uoHLFyHl6oxwIwD4bIA5rDNJ1kI4l6BHMn91eD
ZQ5DI03lVg9a21Wu8Y+P/bfPd9vi/8ZUnOIQtvaaj88zmOCDUqIjmL7PA1aocDjb1sOb1hwIMHmd
Bx3mOB3zPtwxX8WtaSgkDO8vuPK7sadI3WMvc4H1aLqzuTjvAZkYL8GsecUsJzpm86bmKvvBT2Xe
l4uV0NuW0FsxKZx41396+Pr0fLf9aXh6wp6wdeYrJWRU8Z5kjW454PRcMLBjgdtO2FJ7QqJf5v6d
H7cWUW0bIq5akxwCBbdVd8AxYEDZWCdDcgwmSw7qBxOlLTedM0Dnpec8cOKde6VNycHXf75LoGvc
N1sSnL3NSn/Alzt1MKW/f5uOHtgDPHpsTMeCbQ27IgsJujRHeMqCyk4BnA0kyqBYu/nBNFwtxE63
hBgWzxUAUP54eJRjvxSTmArEApiGIw+7FQi4pY51SiRnsVEh5efdZmXMk20F8seFnLcNOW+nZOY/
jpmoEl+yYIkEbKATHAYfggN1j76QyESKMkZh2WIz/tFIQ8UpaGteORk8/CMok3OTlTKsQJOSHst0
AU9Eh20+NOhGxqm0AXYXaedGzYZaiKDWInA+NIowEFcU31DJiRi7ZSRtNBcO8CTHGgwePABNio0U
iPfBeZaselUb4sCnNSFerUTmovG2uFomdBQ6Ffpvzy9HKrpv+ZaIV2AVsYCSYvMrD6rQA2a0hvAI
VM3ni7DtuQRn8lX2d9RrVI3jy/XUw+TDw6cF/aSSejgawJOSxr4lgPYNAS2ZY6SJBWNj5Bein9Pk
tcjGrkUWm6U3ZDc8fXn++u1p1oPQlLKM8omOKiZ9Cox02aDHPDMGhAsjr5Y46iRAAUne1gWsTHQg
GnjDqWZgqxuv6jX064UpPRVt3W1fEPXPem5QOByyIBliNQDQjgp8J3hkLQfUoJlxSgAKi2HRDmwx
ViWHWvfYgy+HSVv0L7POMWas2wE9HgAgGyQcAEyNwUxbj/xDC5k0qA5nagmOo1STa75ZT671siD2
HxGjmLLAjuJ2DDQzogEuxZQxbhRy5zlWD2G+NYmgz5W6uNvnH/FEjWms13Qr1muy6L9bucnXDYGN
3MfQNbM+KtAmNGPPt6SxPYQwHVOZUSybH5t8n1eBr1n7+p5qFVWb8tmXJ3vMXo9xInxRuJD9v3jp
cphNJCFoQInGoRaRBvAiUAYSmBSMGqb9XxJWH6/V69w1tn+/2y66j4y9eMeORXP8y5kHmqgyYBlM
enPEIztjHUtey5y5gnPxtrzVw/jnegEv+hahoLu19Bsy1THvucvdw+10hgW2HBj9c1FQR6UCgGGA
wxlhO8cCBywMxioBh4nnGfdx1Kt6etmSaVjIVP0dvh8oo9dsrGkGyiO8yKnL0mE9DmbPSjjlQjl4
oFJTzs72E50PXAu2abzqwejbbaVsvheTdWg8NuYoAQSjYL+x5ljYMf3AgM7tknOBU7AhwZKLbeAx
26q9gcu1q3oBprWq3apP79MX97i5ez5EOceW1/CzOBqokhLohdYEK4GBz3mGqZs0g6YFouHNeVy8
GP1U093qpsUqhsYqdrcLQzA2AUK1VTrxjD236L7nVskTSZQnI8DMewF72gcGhC7jH4qlQEi1FG/p
51jGPq0xy+VK+gK4l9LDlyuVv/3ao6Y3pbICgS52obVRY344BpaB8TsCv0ULVCBSaqlJr4gLQ54S
FS7VYrIG5LhFla7qYF/VynkswS+9nEWyiRmPnenBJikgcwbIW5eUo0ECYQk5XdzqHqU5FfprOH0t
JeseC+XL5SspmBsbBh8TmRNselgQ6YLHJoxWAobHnighO5Y0jdhM6k8D+fFaLWo/NETdLCu8Pn7u
H8eka87GzFX8ROtqDedWuI5heShnAug1hpWzkzRHr1yM7k19WMcJTjgGxouV4HqdM45f9iW+iomj
+X/xPxt2y9xVoJpBcA2PFENZnGDTdm9Ipwgc24QtsvmF/mbAQoSF+JuW+MfE25tlfatOksYMe18L
UlKcsdU1wG+agqTECUekvBAbmiavRN7wtbKnW6bn3VQ/9I9Ag44hsDH+Zbh0GCrtlMMu3Q7Asg0+
l1axgsQUhFH/xW6qc6Gv6sU1V9yXFjMz72yVWnNgTBa2W4nkWGsCHATs+SwweQt+y1J3MlKHioty
ebYesDF6LaRek1S6U5On5/ff7tkxxMCKyaURziUmf9iEPUAS6FJg1h3RmADFQHSdF1XHs0Gu6olo
Y/bNVLy6/dvfZr1sit0RWRnYyLIDFoUqzhks1MYgc5A5prTvi1b3m2o5m+jQN5Z+y5f8/Kfhud/t
PT37/G94r2MwkQjsYZyA6lAMJlqWO6vhUYAYyRNiDEvqcsHEgyQn+jftr17Vy1nbTUbo0puFFPvl
DpFV+fMHfDx41KATHOvAgJzv/8SGNgwb5HEqswMtot9a2fbrzWlU8us8ixvEG9abglG2jDJ+GB6x
9z6G/ecZ+qJ449AYRh80FzZ1RpQOQyX8BJsVTpNJGQCLTm8K9DQmOpE9sb7xql6D/P/ejq43cRz4
nl/hl5WKdKDEsU1SiYd8IhZSTjTt3T2hlKTdaIH0IN1u//3NOAGSkEBXd7o8gLCHmbHjmfHHeKal
YaJp2J+yDTSkDJdtFm588uCWC9oXLoZwGmKrMJ2Sb3mqB8rb84efusZjA5X2E6tsU+f1PLeCSakK
ll27cklsAKoT8y8VyZd0uV7jTHiG6Zrogip9rTSYpdtGn8KgElx1KfXV/0+FQ0WtrfQ87g8UCvoc
01r81tP5ABsWqY/sIbqQeRhEFpWR7jt9a2gM+65gumoLXQWlfTF067laorRlrUf1iMmcUXJHLNv+
OKlkJtcONmO2pnFY5GEQPgOYgTHh9i3PEVSnFuNCb+6rVbAodVIto1SP44bKWCSbLE8e0+S9cpWi
2FOWh9DyeE0HuXPR+YfhG8eAzTCILdPm3LM/N7M7J9NllptwtUbxlpU9FJoHQ/MabSpWrghQrzse
XuZxpQedCnMlW/NFHxQi4DK5pjuN+MAVHA3aLTrY1OPGIeWPVF5G9aNVUjiL4VVjKUT4Lbcuqe3j
tVzVxjN17oGxwVjrpgbD0LXgw+Gf6dIDhQ4BKmuVOrfn83wqQ8Cw5sZguQVhlnH+8RKa8By3r/oa
zDvxaMb0fB8DNFI2FL7r+vy/uiJ+JN9tas42IeiqZQFMV89Hb+/93+s0T/RTehZp91UqTNs30cUC
LyKAaTEdA+YkjBvcNkFenMYucg1NjYGkZTcdCp8ODKyj7UsanybFQ5lHERSqwLAQQxQxywbTBta4
D8aA+jLuZdMlrIpFUbyfZVaXIIvT58Pl9vu3zQZ6HzOQOtF6vSebKE7I0wfJ8m/JjrzuMhCrPQh6
Hu1eEnmNNv8GVresKDKX5tH++xLM4PI1jW+JVpQVqXlX8Jknt0StFu6TXAYkLcvrhK+hV/8devhR
aRX0gKSHURPSbdJGT9eY0H+NpvIYEEy4UO3fBUDNt+sPgmE2sSZ7Jse13y0Jszxaj6gKMhSQXbJP
MWn6yNQGNLhh7EuP7N9B3pJ4mb3lS2DtbXvIUx+PNM1AMC6+9JQ/dmmOcRAAB9I/YgZEY/IOlXmy
HYHtY9MbFbAeKYGUiqKoQmikFkU1YoAI3RGAFlEW3ngyvyPhX797pON5nCzCB2umjE5PF2hZrThj
sperYJLK9Ljt0BpTp8oxDTuYNhichd948w/MGKiB8vWefJ2E5KUIHAzIV1mctOA1ph2gN9BZYGeS
uFcyMFDHhz8dqgi8+SiOMXoAAc7QSbvSeT1lKt2+iIUlZL5dJR1dwaZKYM1mc4dcfgyYawUH0Jso
3qTbXiewTqfKfWg5UzJ+sBZuN1YusMPu82j1/Qp9gvHsAxjvS8mCFXoXYHUGfVtmig1kp3RziliX
S9cKrSsMUG3AEXQSWGPvCiynwMByOZvcTT0XXnD3A0txHbGG3p/hlQ7ASzcI+nA3cebuZRY4gxe7
kfJFMCDlhWYxxFqKwQYmOruPC3gB6y/IVzgPrRm5+mYHfFyA/kZgWL3ta4O8GNyleAlQP6ANlH8A
UEsDBAoAAAAAAA+Re0YAAAAAAAAAAAAAAAALABwAYW5pbWF0aW9ucy9VVAkAAw3/FVUh/xVVdXgL
AAEE9QEAAAQUAAAAUEsDBAoAAAAAAA6Re0YAAAAAAAAAAAAAAAAOABwAYW5pbWF0aW9ucy8zZC9V
VAkAAwv/FVUh/xVVdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAPSQe0ZjEmfNyC0AAL+bAAA5ABwA
YW5pbWF0aW9ucy8zZC9jaGFuZ2UtdHJhbnNmb3JtLWluLWVuZC1ldmVudC1jcmFzaC1sb2cudHh0
VVQJAAPc/hVV3P4VVXV4CwABBPUBAAAEFAAAAOxbWY/bSJJ+Xv0KPg1UbVOV9yEYBnh6vG23a1xl
d2MHjQKPVBXXkqimJLdrf/1GkjpIiZJL040FGjt6KEnMZOQXkXF8kVTdVGVmlsuxs339bNIfi9Wd
Wa4+rudzUzn/5ERL8uvgJlk97qfB6/pzOV3PzPL684d3n95H1z9cH947eJub+aqYFKYa90sffDbV
sijne8FoEJS5ce6eFmZ78RclXMGc4U/JqvhqrgBJBWKdmx30m6fVYzmvkQr96+CjWS7K+bJIpxsR
y0fnnwSxXweflqDQ23C/Gkd4MAiTlbm+K2a7BQnC3EXUJdLBaozkGOMRRcpxkURo8OHW6aJ+n2QO
XPzFwWikR9wZYhpTdgU4FmW1ak3GeODNy/nTrFwvnU+faiBKMO15lLoRQcTlQRi7MgwC1wt94WMp
uObRYDAIqmT5aHLn7rEySQ73IccJi+UiWWWPzm9rswbwWTkbJYvF1IxmSTF3V/XUwSD6lpnFChBs
jRr9Etz7XnjvBUF0e+sMb9++uY3efL5qzbR7AJa1M99SJe7f3MTv7gaDZnVYewNnPH4mCEDbGmm8
wOm8/gN9Q80Lo4zzVKTI+fkuHo//DivdJbCXr+qvt6uqmD+8bMZ+NE+fk+na3CRFdTBcLzEew/tN
ZSYGPAac5XZVVmY8ru953SMDPkffVlWSwbxXf3wFZ7tGc4/V5OVeqffJ4lKJ58TdVUmxWrYlvu4Z
fY5Z0Hr6uqt5c/f3FmvuS/J8+CeYLoMIXv3tynnhQBA4w49mcrOqRo9jSa4G+EJvkgkx9N/e9Ff0
pt1+Df+9fX+57WsFsdTOcLd5EMZY6qsBuTSOzWSCnLQspzvzfLWo4tJu1is78Hr41zDpxjR/FQ/o
wm3ktVM0wd3tpUpeDejF22tScl7tpVn5sMuf97s+PEb0snYRi4sCa+yRM8oWizHW6mrALoUocsJO
QKzRfZhMpsXcwIgHIosssXQqSLJHE82tbfJh7b570x1DbNBZA/IL0eUa59L5+ce2vs+ABCgIhGfn
vgYEAhYr+pqCkyDShIosEeAnH8dje0NQzldVOZ1CCzCuDFiotchdGVievlwBna+3dDm0JmFQ77u3
1mg4x1cDeTEaykw/mmJerIpkWvyPGRbz1Usne0yqZmN++KHeGQxb3QeEUQCiLgXCxYT3A+l+PwGG
8l4smIAX60ux0ERox/JzKxmBZPt5NJuNOQJ2BWR9WqT50zQfwZ8idQ5fG2lyMpkomaaGT3JnuUqg
14FUsOsS8Lim/SBg+QRbPLv/Yqq5mXZltkWZJFNGJM79/e9l9eW3en5lVuvKwsSopn17aYumteiI
a0tLUZZMoGnbTrz//bfmQ21NVBefi6Tlk1Q3arZFYbpTmJxth6xJN4PuLJknD9D9XmwfLQRxvpiv
EDDQEbetspXds2UdPZgUDLL1/Xb+/eyhui/mX8svxuYBqreGuUAgpuJA4M48nOzMQ8+ap/Hfkc3P
YJr3LQN15gSQvk96do5FTjlqFylIeWaevzp7pRNtXZb2uvlSLkyVALIXJ2/r3jW8YL2+0mojHkFj
Xn/5sFl8aWmTQD3tz3mjUIFkwp3NvPEYNuDRf2pggfignC3KOThUbyXtr/eEQc6Ii6m5rT335sPt
21/qdAQDF9M6ajIh5K6oviuzZLpxgzBZJWmyNEBXsi82VeabC/YwatiHrX63NQQK2hlJDVgkLiYp
ADZL6fPArpoPYRtzF+Guq+X6Yi4CSNI0fR4S8N/5XRfN8Fk3bi+AD87BzGDsZGUenuoqzZ9hYYIv
ZjHU5CRBz9OrmNkTtg9V8VDM92eNDYugNoD+8a5Y7W4DO4sNodnj+c/ka3KbVcVitY+iTrWcJMmE
SyhK9//1EwWX0z9DcfqHTV9qm/Kin25X9P4eq8l6nll29Tb++jWKovt0WmZf2tnVGW6nJNMxZpQ3
jOaidCsxbPs+3YJ5ppuFknl+X5mpAV1rUl6TlItkM6LytuxpAUatlyjX1mlVzTUuqw5C0pbIOvHf
51VDPhjHO77xfAPoDB9J3BkZ25qILxTJgci0RFZluTpAKvkAk4t3SralWlZjtrWRWO0BKb2U05jJ
CU6D2QCzP5vTsP9vJI7/Kwon1Cq8NLPfoa2+XxYPEN596mbf8RljMMsz5MyTebmcGrOwSQPt1Mxe
vBjhfk7ekgJNYMJTqkDNfDyGtASV6LFYbvwOulQr+H5SVsP9hOyxKucl1Nd1VbeHr6YlFFX752VL
TD32Ck9fgmbb1/S10znn4QcV9fv5FVwakk46s0kmG4+tCT9BJp/GyRTK1H719byAkLy3me7Vbvbt
CjBl79cr8+3139pY/xWNpvUhnW3Qm1MNhi0H2y1g6wc/rNPP0S9NJnv9/m6SBWxClgCJf/i/168u
3dIZfjb2XNNSD3JYop+jks7ZoUrgBNm6so/mbrfK2cWEcob39zOrwb2twmNM1eVFOMsYbjmJt3ya
Z3fJsmUpC+Kl87Uscmd4gOyHq+HV6/EYkFVPNyX01zUwDdV4J8dya7o5X7gMF4WE8sdwbdJWtIdn
Z9dtvz6ASDYnDxflPK203mfQtMyf6pS3q+UXSJIk2UvatfxUbov4JYk4086RoNYjxmzzxPP3YvVo
HwFvHn06NiKMMxTMTYvV1XjgOFXybezsdgVeAlH4AwPpwQCBPUOQTKusM5AIwSnJwRxV3h7A0G6B
chrZRfKiMwJ6CMtTnWq5G7C6cYaziWDKrr44GuCmvqNnQNlFnEp1Addr2exf6eMBZGVh1IaFMsEn
icjsAO4RpawmmJySRe0AVyIluSRCiYkx0DnCAOsMcGGEkfUAP7KjSid2kWLRxbV5pOtUk+nB6hi2
BVTMKtK2ihRc8iS1Vhm8Kx8K4KBOcPOpeeSuBlFVlVX9mHrzEH4vcgDtwcL5aT1Ltz87sH418It5
Uj05b2fQSCyt22xuqw/EagO4TuciY4DCeXF0sDZEV84r7YUBJVq4IefSpYzFruIqcoMYyYhGERMi
ev2cn0h0lhRJDw6RTCbMeQGRtGnh7d23j8VsE141Hhoyhiilbhxp5lIZe65GHnc50iHSGOvIj/vw
nJJ6gMv04TKwTcetHYHYRPgFzIY3oCuEvwB8HoklpTJ0fRJrl8aaukqL2OWMUl8EMpSeOm0vMppU
ycxYRnm9+TnF8trbDnaxymMbZojwySQ7k9n7IAcsRjjypeupECBLjl1fhNQlWFLihZHApBdyV3Q/
8u6ctgIZ1eJYAWFDgvX00X3ANce+9OzmE4+6FBGwuo6J67GI+YRFHvH907Y+Z+oO0Fymx0BNqg4s
3dz5zjwk2VMvXCkkVuAMLuMBBztLCCUwsOuzQGgUIBmfg9sIPge6mdGGniNJj6CDi5Njhz7pHZ6S
PhVIWKyQAIgUro895HoUUc3B+oEfnkB92i02g4MGk91zMUlNy6G3FzOcKwxcxR7SO0NC9YhZS3oh
o772XR5EnksDGblaUeF6CAypYx14XACm9bKycX9tb24tpThn6nApxQWC/MPbZmmyxTdwPirkiNgb
mg8AwVcoREqErqYeBE1AuasEAhwBjcMQERlTu5nNueH1uyKtIClfx1tjLK+3wvsNtB0ddBGmPbAp
wNZt2G/sb53YyE4kI4uVsUhj5keuD5hdGiHuagZRHng64lR7scfJWawgsR8mDHQRJuQYoU6ILTAt
hHG5nuc1mweXG2mYjxEXIywALGGUaYKUC04HQR1zMDEPAtcHfiKwiP0oVmfB7oX3YQ5a4x3oyYQe
Q08mvA4V8KLg8/vbm+n6oZjfrhf2NG5blfQIkFuPkJByGGOuiL3IpdgHKyvMXMwl4VgSogNxFrg9
e3zzrt/QzfQCAuw0lI46JjfH6hhzGPlBOZuV85sEOv+lM4SYHwm4R9uNED7shBeHUFpj2A0ZSFdD
XLlYkABD7Zfcp+c9PKnS/k3wuoGwh3AqGPYzukoa2qckPVDSyzIztc8WjFXRulvrClwAZYE++D6R
nutFgoDrQWBDcCsX+UiEUAiDmJ/fvL3Efh324wcasD4NzEHA1D9DbH5maarNpoMuqFYGQti6H+Ee
0lEASZBgyNPwSQnYOMR9pqiMUBRGxxrcVMVXwNTejp6lTmxLz8yOcpO8J19NjDxQzvp9WFR1n/60
0wrIx0ijOrJiSLTAUJQbS/hDCYESH0ISEx4BCgGFVAfxdyNrt0K/Mp0pXS3McbEAOPjAycKiOe6u
nm5N9bXITBNPNgkjZeuozbSIK9f3LJHmUeR6HqS5EFwsUpRjIsPvFoyt6O8G1TGa/luO5w26apIe
3XV6lEWmZXUL7butO7quPPV7nRW58DXoCY0EbtK5AlbsSs+GlqJKhudrT+u3HM/WfofnVD7ZDHd1
1VmPrpva1Wr5p8lqUla7poSwrZsCCQhp6FkP9YESQCGDAgBhGCrtaw8LieqEuWUljbzrU5K72BLa
hw0SXV5js97b0Oxi/vBpVWyPcYdQfAAZ1jGKpNAu0gqQIUhxUPV96EykiDSKtOS6hey0wC6oCToG
haHHP3SOvd++nUOqsGfGQ6xYE+b23XKUMPI4A8dQOBTAUUIfwoMGLgY2xzRQUCj/z0pfPaudpliH
MwddVfIe/Qh0y2lzSl0uniYFaLi1NYKMRWpXCGKiwzgWkH2twblG4PUMMjKJCMUCpESq1xW6Mrtw
OOuBow6LXWjS9cPt0ywt64qORM2ubEGPsB9GQFqhXaLAmkXMoEkNoX8OeSAxiZEXyOeYuL3CiazS
mtHVQfE+HfQ2xh5NMcuTqZss59vz/yEle7N6EcFxDN20FMANtQZaKKGXiqDpj6MoJoSRrh8fC+zi
0bgHj9EHFapRZZOFbFpn1qgEMtyI2HZEeZHyoer6MbaNHYXGTgXCldSPJUOALfafY9jOMv2W7Uzp
qKLyybEqcPFMNDpDXvMHXbdUAqKMR26MpU0RYQydDfTSyueIBhEYN+R/sDy1Z3Sga5QcQ9dSHkC/
NUmVPdaHAbADdZWp322V0b4KOYaulEAvSIWPAH2kXSwxE6GGHMf4n1dcd0BO7NF2uKuk7KERdSVt
+ou4nK8+modiuQKKss0oxGZvT0KxhI4VEiJUTxoECnZFKFdorXgQctAw+NNLqHd3ouX7aJblusqa
TuQYdFfnrMcndS63Om8KXz5fLrdn6ENOyDbcaQxR5CFgS4jZmqCUPXuM3VAHURww6jHEzxXUltwu
rLxvK3K1zUJfzNPsodoVeMveqOepUIH5gxhBC+2H1PWAb7sRURH2KPGgWeiF0pbVAZHintSTS16X
9L3TL022rooV8GJZezznTOIRZiNS95w0EDjQ2I20rZq2YEJSjF0hOPhFiIGSsLOucbsRf8qTm9FB
F6PoAa7zA540Nysrbk+T8IgCYuXjCMc4BPNBU099aJXtJdfzA8WgyHtUsHN72hHbxaVNDy6TbZ0t
gxDPqqfFqtyFl8BNf0G1pAFRLmY+WBEh4UIz6LsIhaGMkQZs8kS17ors4jE99CGfqIPa8pNZeevV
Izh+s791PgsUxpGwNC0KoND5krkKKehOJQ8FYTEl4lkVZSO8f3c3gx3QhvWkYsMPD3CWC2OyxxFo
Xz7YXxe3y5XtAUhdIet3e06rfN+nEXMFoVBbohi7GvlQW1jkoZBC6hb4zzhJuK1RfewD1fHqw2ld
C/DjplUipCakce8y/e9s5O2yFW9cyANHCbViLpHgzBQBtwJPxq7wCaIYdlHWx4EtZtKWM+is1XMQ
JTEyB/HVPGHdhRcd4aYLgToOHT8YmyoogJQSiC0piQuElOKIxpiqs0mzLXfQhXCczCURwD9p2zWS
dV6Uo1VZTtPy28iz3+6aL7Zs46ZqY+vkQvtEQlZ3uafAZnEgXV9Btg+w8AUwPEHi6Hxdawk/cerS
mtFRRqfHJUDqjOyThT1yCjrpAtIes1RJ2QcmASR/qoCAQqsCLBRzYKGChCHBSkY4PJEuDoV2MWW0
DxM9qAiNgdfgusvGvJ/mDSXq2NbyUUy5y7kHKY0DXfZo3VgJTTwZRr6Mv29bK/mMYe3wgQbHLYpM
6a6F9t95t/tuSbMRB6hhpKlnOyQee8CeiUdcaJYDl4cylBBD0LfGf+jorTX1q8lAQP+0Dr6OWmna
kxLSdBeRrf8g2D2iYBhJCeXDjTWCMPQheStBI1cSLwI6E4UR7j8M2As7wHAcfUpSfpCYgeo1T8ua
5poI3hAFHQaYQrhBzoXaSxXkYQ3frfdCncFc+mH0PQ55gvAGm7FBF5nugcvxAdw3Zm6an/XsfvsK
JmyovUA1YRBMMu1D14oIBrwesF/tMw3NVQgZwkcarPmcUtiz1IlnGscTu6rxvEc1cZifk+XuEIZg
OcK1VwjOY58yCi04sDQakRhSBwtdHxpY7nlRrFl4LjnvhHYRiT7fkPQA0fJ/ebuyHrmNJP2uXzLA
gI28j8c8Lc3Ia3nas9i3BauKJTUktzR9aD3+9RORrGIxyazqhrdgwO6jSGVGkpkR3xdXP/WgMo5R
i+JdxQccpDGJGAawWnhQFcCibLau0y4aDsISVrbGWZlmw1ZS9f361Jh+J45Sbf/6135zd5RH2GK9
GHVgAgBdK83hbQtQqx4DpVoAncuWqphJbUfnw9Tz72Rj/v3ka/jbh/TDSRkJfD0eveQi0S7rDJqd
cINRAN4Be1QxUiD24XJQryRdvPvpFczpNHst9H6NvzCLaHFufnz+8nT39PV5+2nloUeoLW8o4AF0
PR9+RAZjGBwXy7qgOGw9JC/WasDhkcHmY9lwbl5zji5MPV/s6rZqmbvWMgciFsvcAH07MNaxUOZX
7IdxUBBjbJNFpkEdGEDsaIwjcERPJOxeZQEwG8dU5i8woMX456jQ4rb5emzfr08gGMPNAhv9/Nw/
PP0+htrpjcF4MmflEPqojMsA+CNXYC5EiAD9wRJ64QRnUlmV3cVlnIZuy3+6/qaWcdsQXE8+zt8e
vzxNqbh/oUVfWG2F5apTHOgmBygEomoKx4UCqgfdTAOtj+h8kGr2ckKXs+/UMkAU8oshIu0DTC9S
R70giCWBK4UIqJfLkIAzyfjC83tFiGhOSPIr7l/cVK9cmdbKl4GVT8OXb7hV+A1HPoVeXJe0Ao6s
uki0wwSjslLRZUzE0FykxNU1yNRbmLp9E16pFjOwdZQIPtwdwfTn32b4SDB2Q6ks5pAHpY3XEvQt
ZsRE7zsTfeyEEYY79GDI0Paq/NYCSXbgtCEI4s9xNz8Mv379Psx99hx3NJcCniPVnWVIRCLgIseA
wWnngbYJq0nKTTGW4y2E4Q1hBMHSfhRm8zs8iBsyPRikFnB+jMNcEg80DdQAqDRDALuD4jYayT8T
oT5b1Sj1/GJozH9ABbVD+L/vdsPXo0qigFbQqy0UGF1uU8cUZo1IzLSz0nTwAg1nnltP2Ys+1TLy
eXdwuVxLPTSk3st+cTCmEW/e/VQAL1iDYvEsAaxF4Gd8sUQCK/cO4JZC7mMJ70wgsMmEZVT4TK25
7BYug7fFL5fmovdsu8a8PT/Ei2YQPQE8B1wuMdEKv6P6945xkm1HhQCdGpxH0u46ogA7Usvg0ysG
h106Q+rSm1p001iPWGL4f27u/vVcPJS0aClmcCcHnSmcHtGFZMA28AJyBe2Al5JopaPZvsqDdRy9
LfHxaiW33K5tGnw4edrLxvsxlJKvyY9jihlJPnAVwAIHzNPDgC56nNFnZQnjSSep8pVyeFZC1GvY
rS1jDzbjCF6//3j3ODl/BAP7gEeWgMIgQAo7ajCBynpgeaDaAAwFb4A/aSH+LCo9E/BNvQbaWNiW
HF/OD+//uUyscokABAImUPgSqOcM6lnFLjkhtSIKmKK8zkuZJq9E1nTt1ei1mszbL+9yXhCJ7IFV
EdA0OnPMUgbhnQB0oj2H/xLxnKUrEYnT7JXQppEr2Bs6xTh+6x9OuI4R3D1SauacxmCCiYAsgAdZ
YH+ArIUzAqiRpmkB7E6D1JPThiY0K1yH1brbL6i7+U2JRI4/oLsiw7YVIErg6P+WDM6hsfDKg6Am
BpqlZy++8vD+fKpPeF8L3IBjvdHLHJ+D2/vx3/dPn4bHu8fa6a2LASrfC9/i2WPOfDIIKtDzbZg3
HZXZZmOk1+T6iS+ja/t2Ld/a/z3dVD8IzVoPgi8ido/9/Q6drsf9o0F9jo5wEglgl+Q65RGeorvG
J0U6L4UBmOUT0PmL3oT5yAvRGsfQDJsLAe6bn25PsW4FqECU5GZSwKeEE5mJl51wDL3lAENdTKKT
Xuiogk5M0uvZ3JMkZzblbSs0Dsx/vTGLO2CRlFTVIf1F8oO/ySE1llLB40f9STFBmYAVzkqnYBMh
iYWLKUnzcWvBGgZqQzfDcaP87QNbOVdkzlrJTqYAB8LAk/eYDuYTQFxgLy5SczXnCmuITBsu1A1D
kl5ppbv7z/NzfeCajGAo3jhJvLEc8w9BLxmmAB+gcpciJ5eJAaV1DfL1bi5DhTrvP7+pxd821iTp
8TX82m8/TQEMIxBr0sgsxfyOQDjGjA2wHZ6BdAl4PdzDS7K+uSdmY9UySNaQoZfL9I1t/wXbMGFv
0pJvte+3xQ9SvL0laUoLyazpNNf4cIG+e+5pp5mO0kllkzD/Lx/IXFG2hDmjLlu3Vg+AN7LeNwDK
WpqpziTiB9ZCBXI4fDsGUBoJwPs0wAQ8saazEchxAMISrMc0cvbqPLiX84lWt1ULE5o3FmYm5LPo
EABs2k6pWiIJRxFHBO7hCzJZTSzAIKaBAADCSG07UI9Zi9Pw6G7EQJcEC7/mW+z38jA8PpYHLVUR
rATI0G1IlAJICbs+ekxLRZ1oYkSndwaIESyxKr7mMa/nOkOtVvfVKxsaO0gOy1yBlQbEHcTHAzQq
We5DyMxhfR7NGP3FODTgqJgJPPlgBHXsjyvZw8VKdCXXgB4/XObgr9EMYCb0N4iSX5N4JhRzZzEc
wrXB2iiJ5TRBAFqCp8PpddBS48bFehqvQmFt4gq7Ph4TZKeUwJJtC0qLcB11RwkF6kiTgiNMdUdM
Uta6zDW5SrpDlaN7HupOt9TLNLvGMi1ZvLZfQpiraM4c0TLaTmg4Oxzdvlb6AIbckygB8cLZec2x
gWHbAsOFWkzb2l39pIHgMH398v3GTsgHDwGlAbY62OZMA7p94IsXyXQqETjcUWRnZU1k6mEqCcC+
ryXA5OeJsC75qvBKegD5HXA/rE6LyKNg+uiBtTpHnLTxWny1JbCiLYGHRV3lYaD+/limUDKhQD1o
IdDrgdiABQ2khRqMFLGgwBhE96oikmnwi4voayVoRUNwqyes+8P7on+Wj1smwjw3obMZZbY+gaUR
CmADwPtovM+BXOtxzwSoRO95Y5OUwmpTPfP+/qO777/8G2gXPnZ9SGLVxSYZYNycetVRakpyCeus
yWD6LRp+SzSL4uqMcS7SmUcwu6NetGguesnyjxmMn+7wnY05jIQg1sH8VYIVsCQlMMIaaCKAPgTX
kVsF/OwlRvDavLCDBG/fXU5zfPuuWt9gG+sbtktc+247N2kM3bpM3lC0BEJLSjEjOfuI7iv4YjC+
TkwEeESVSvlVx2k+xRnLvD1jzob9+lBt2Y7t90M5VO/dBxf+vkrK0Uk7zKnuqMJAhKWi8w4AqVLc
K2uUhP//JE/iXML50raSrC31VtIln/v78LAZHr4+FrQ96TliXE6+o9Y4zELNnQ9Ogp3OIUmZgANd
hknHQdtSH6/W4gLwXYsrlqH98On5/jNY68OkUzqMlGOVKZC4GLTrIsXSZ5pASSgd4NcM1k0xQ1rh
vwY/qKc5ww7qm+rl7BobS+6mpJN/ARnr7wF3TApbl0CtAxPjg0f2CQjCMfQCOAGHQ2I+YGSBtxOp
l+MthBENYYbJdIR/5Nvnu6dT2K84abNLGsNaQYoEe9xgyZEF2GaoEiFabWysYUI9TCWBImtHzVZR
tVAWCBs/fjkYLwxXHYwYB0xAEjyWSDG/XFAPkIXrzkd4Lolpr4X/w0ZsvFaLS3VLXLPwK5V2e1PO
kOLFtW2kQkwDLMNhTA0gQrJwkpIE4GOYzoZdcinNh1yIZBsiDeIItL7H2w+riAdW2HAGJj9GpMsG
jrSB19klkXhQImvt9J8V8Zjkmy9rJ+V6WfBhf1zW8/22qjRQDB4i5j1RUyqRM8AZRzAYrbylTCpx
5oBMA1XTa7V+0Tu97ReceXxA4ev9/u7jodFWSSnlB858TCLi1jFnSRfx4HLusNIpyY5lQGBOS4Aw
l+MajXnOFTqtbqzW1Tey8Hb9KSizefz1FFsvUX4WXCDEsY5yybBbiAPZy+lXOooITEMviiBnY9Rz
q3WMereT5pIneoQqh9QfojUAhMLay0+lwIQly9AhkUCl8yjAGMGJACwIIMQANVY0XM8bfZLmjOKf
rr+p12hbC18G5395eH58SvgXC8p7cx/nWVuybCPhDGZYCIeJ6hrW6QApYbId8YBzeWKvCg63JjrD
Kxt3VkvbNyqdB7rZLlqCvH03JbNj3gUeDoBDuLtUzuhN72gA5s8pzZ0LGQCtyDyC6ecuXict593F
hPfp8ptqHQ3zCB/qRQebdz/dPh+8snZcmx2DOpEAQvckgCZCFw1gv86SQIGZaM+EUcm8kF01jXwu
l+JweSG1aUm9LM789nA3f+s3H/D3I9VgCplVSoSAsaegttBtnwIDHK5pJxWT1AShrBXXeDkfalHm
d5VLi+WtcyAHxuA7e3F5ox45VNoXs2GiYZKn0gYpjzlMNsjQSSDu3mqRzAvdOv4IeZxkubDmpRKB
JW5a65409z/63V1/vx0W4SOhqDAs2C646AGyA9f3BMiitBoMvYvCE3Kl8FEtQSW85ut4y6APOTHF
CP/f3f0Uh+OyJHdqE0Pg0oCZDOhsZqnz3MqOAKj3QgcvhT5j0k+j1WII1hJjAt/jU7jx0zOkFlPQ
CwAnnnGZAxCeBABcaUCaToUOSASzFkiejgszWA+2kKOhWEp8wNQJnP81lu0BhtR8zHzC73g0s4hg
23QXhWDYXsp1VmIoFqkzdcRp8UKW2XHsc0mYh8uV3GbfeI12qxaq5X0PoOrTrFxasxuGPuvxB0TD
Ac4XMba0ngJApAXWMLkuEUFdpsJmJq5ntmt5zrlr5vdUq+7JGjMNPRWzoqdvdwCG//fU3IjjO0Iy
RBVoFOrhRXFVepaBIk2wOEejC1TQcwVP9YC1OI0ExaHfLFsUYSv83fBUkmgft0XxjaWSXI6+imCz
A3mwuwhCJ4aF+AqMVRKZGkGB12f6qr4GMFE8TnReq61uqxe14Y1FrQL2VbPlOinWppiMBh0BQBto
qdMGCBYWzBYfoBWOWHOJYM2HrkXbNZTGhk4FEdvnb483U9Se67F4k6vkBJekE9wDVnMSS4yBj1Ci
jPQ5Oh3FoiJjNk4lwKZvCdDboi3g5i9l656i1VMhuBPEkQCaijNaXLwCkEjCpJKIvhvYgsY1H8l8
xEqUbcN3NGxXCmDTbz8/f6vSAW7kGOq5Gd8WtRJmV6YTGqvXdFJAQAH3WR8yhe2njH1V3xK/mGm+
48Zrlfw7u0biA1jRxTabqKUF/X+o91E5YuU8vFCPBWAeDJEHNIdpOslGEvUI5s7urwbLHIZGmspe
D1rbVa7xDw/9t0932+L/xlSc4hC29oaPzzOY4INSoiOYvs8DVqhwONvWw5vWHAgweZkHHec4H/M+
3jFfxd40FBKG9xdc+e3YU6TusZe5wHo03dlcnPeATIyXYNa8YpYTHbN5VXOVw+DnMu/LxUrobUvo
rZgUTrzrP95/fcTm2sPjI/aErTNfKSGjivcka3TLAafngoEdC9x2wpbaExL9Mvfv8ri1iGrbEHHV
muQYKNhX3QHHgAFlY50MyTGYLDmoH0yUttx0zgCdl57zwIl37oU2JUdf/+Uuga5x32xJcPY2K/0B
H+7U0ZT+9m06emAP8OixMR0LtjXsiiwk6NIc4SkLKjsFcDaQKINi7eYH03C1EDvdEmLZrhYAUL49
PsqxX4pJTAViAUzDkYfdCgTcUsc6JZKz2KiQ8stuszLm2bYC+XYh574h535KZv79lIkq8SULlkjA
BjrBYfAhOFD36AuJTKQoYxSWLTbj7400VJyCtuaVk8HDvw03OTdZKcMKNCnpsUwX8ER02OZDg25k
nEobYHeRdm7UbKiFCGotAudDowgDcUXxDZWciLFbRtJGc+EAT3KsweDBA9Ck2EiBeB+cZ8mqF7Uh
DnxeE+LVSmQuGm+Lq2VCR6FTof/29HyiooeWb4l4BVYRCygpNr/yoAo9YEZrCI9A1Xy+CtueS3Ah
X+VwR71G1Ti+XE89TD7cf1zQTyqph6MBPClp7FsCaN8Q0JI5RppYMDZGfiX6OU1ei2zsWmSxWXpD
dsPj56ev3x5nPQhNKcso39FRxaRPgZEuG/SYZ8aAcGHk1RJHnQQoIMnruoCViY5EA2841wxsdeOb
eg39emFKT0Vbd9tnRP2znhv4V8plQTLEagCgHRX4TvDIWg6oQTPjlAAUFsOiHdhirEoOte6xBx8O
k7bon2edY8xYtwN6PABANkg4AJgag5m2HvmHFjJpUB3O1BKcRqkm13yznlzrZUHszxGjmLLAjuJ2
DDQzogEuxZQxbhRy5zlWD2G+NYmgz5W6utvn53imxjTWa9qL9Zos+u9WbvJ1Q2AjDzF0zayPCrQJ
zdjzLWlsDyFMx1RmFMvmxybfl1XgS9a+vqdaRS8aGhw+PNtj9maME+GLwoUcfuOly2E2kYSgASUa
h1pEGsCLQBlIYFIwapj2f0pYfbxWr3PX2P79brvoPjL24h07Fs3xL2ceaKLKgGUw6c0Rj+yMdSx5
LXPmCs7F6/JWj+Nf6gW86FuEgu7W0m/IVMd84C539/vpDAtsOTD656KgjkoFAMMAhzPCdo4FDlgY
jFUCDhMvM+7TqG/q6WVLpmEh0/3Xp7v9rOUbvWFjTTNQHuFFTl2WDutxMHtWwikXysEDlZpydrGf
6HzgWrBN41UPRu+3lbL5XkzWsfHYmKMEEIyC/caaY2HH9AMDOrdLzgVOwYYES662gcdsq/YGLtfe
1AswrVXtVn16Hz+7h83d0zHKOba8hq/F0UCVlEAvtCZYCQx8zjNM3aQZNC0QDW8u4+LF6Oea7lY3
LVYxNFax2y8MwdgECNVW6cQz9tyih55bJU8kUZ6MADPvBexpHxgQuiw7gGRASLUUr+nnWMY+rzHL
5Ur6AriX0sOHK5W//dqjpjelsgKBLnahtVFjfjgGloHxOwI/RQtUIFJqqUkviAtDnhMVLtVisgbk
2KNKV3Wwr2rlPJbgl17OItnEjMfO9GCTFJA5A+StS8rRIIGwhJyubnVP0pwL/TWcvpaSdY+F8uHy
lRTMjQ2DT4nMCTY9LIh0wWMTRisBw2NPlJAdS5pGbCb1h4H8eK0WtR8aom6WFV63n/qHMemaszFz
Fb+jdbWGcytcx7A8lDMB9BrDytlJmqNXLkb3qj6s4wRnHAPjxUpwvc4Zxw/7El/FxNH8P/jPht0y
dxWoZhBcwyPFUNZ/iruy3raNIPzOX7EvAWygNPbkEcAPPJaCIisObDltnwRapFMhOlKJjpN/35kl
JZEUKTmo0erBx3I1M7vca3ZmvhEUQdtDj9oOhWmrESJbvFHOgJYILfEfu8Q/ON4O2/GtrlYsTmDs
u5IaF2eEuobjN9ORYjSQAVXqjbShPfOGyI/ieLFnM+7W0VQ/pRtQgw4msNL+5QkVoKnUdgJE6Q7g
sOxHYWKgYiWNdSQ9539EU60LbTUb19ni1EDM1G5nG641O43Jh+FmLDm+70UwERDzWaLzFvyVKNdW
MQtw4WJCnYwH7KDeFNI9VlJZ5uxven4sF/xgYuBmy2UxzEt0/vA1YoBoWEtBs7apiw5QHER3k1bU
cY2I1WTEOrg/7oNX62kl4aBl7j0Tx4OBrGzQonCJCzwM1EYjc6SSWOsKF62JN9V12cTytKPpT6Kt
n4/zIs2qm57K/xvea2lMpBIxjDWoOgyNiT5PbN+FrgAxdEip53HtvJ0xcSdJD35T9dRqNud43+SU
tW+zUMV+nuPJyqQ/EOXEYx5egmMcGCjnVYoN1+MIkCeYSgJYRdzXRrY9DPtPJQ91L24QLz8eFJzx
tpXxU75B7H00+9c99KW5jcPNMA4jV0hf2540CEPG/ASDFWaTpxM4sLj6VYaeDkY93hPHFa1mG1RH
w5z2xv64XkJDKrhsv3TjM4Zb5XDbiRHCycVWYTqlJNBUw+KtE/dVYTwhcOm2WK2XTVmPcyv4nFPY
2dmZILErWDox/1KZfEkYfU1JR3t+7KMLqvG1YnBKDz2bw6ByFI05T+h/t4TDg0Zb+THuDxQ6/Cnj
DfzWg31AumXqo9BFFzKNILK4GIkksgPXc+3YkYKGjqCwaJ+Ebj1eljjv0PW4SKXJGWVuxNar74cl
WRrdIZQyZEyBkocgfB4IA2MitgMdOVzwQCpHtO/ValSsJquOUSqyrLVk3OXLdZF/nucvtVCK8k7Z
GKGNeU3AvIvR+UfiG0fAZhjEgR8qpcPXneyO2fRty+16jUapDs0eCv3dRvMtXdZ2uRKgXkQag3li
40FH4awUssSxYUEEWr5iImrhA9dotHh3rMG+yFpGyu9zE4yapLO8dBbDUGMzifC3ubrkYYJhuTRE
m7rSsNkg1rrPYBjGAfyI1Gu6dMehZwJVT62mtMfnfG4gYGT7YrC6gvArnH8MQnN0FNs0YXDuRNOM
r5MEARq5dJ0kjhP1ViHie/b9W83RJQSfdSjAfPa09/be/r2YF7k4pGcx+z7ljh8mPrpYYCACbC1+
5MGZRCpPhT7Ml6h1i9wg0xAg77hNh8LHnQCLdPVlnh0Oxa7JowgLqoOwEC5OsSCErQ12Yxs2A54Y
3Mu2S1idimXpH1VWl/E6mz/tgtvvn5dL6H3MQBqli8WWLNMsJ48/ybr4K9+Qb5s1TKstTPQi3XzJ
TRgtpu/ePSgzlxbp9ium8J5+m2fvSZkBs0qmO4OfRf6e0HrhNi8MIGlV3mR8jjz9d+Thn1qroAcM
P0RNmK/yLn4CNA7n13han8cEEy7U+/cOat2uFj8Jwmzik/UT2et+78lkXaSLa05hDo3JJt/Os3xV
XPvsio8vpHx3SbYvMN/ybLp+LqYg2vPKIIADw+yaMQ+rKefdpfX7Zl4gDgLQQP57ykBoQF7gYZGv
roVw5OiCAtU9J6E8WhbVGF1XRQ1mQAjdEYAXse70YHj7kUz+/KRJz+fz8G7yENxY14dPX9XqsRUN
yNZowWRu0uN212aSjqy4wiHAnO8wOEu/8fYXpHdFx9aHe/JhOCFfSuBgID5bZ3kHXW/UU/UCOgv2
mTy7rAS4ooPdl3aPCLz5NMsQPYCAZOikXeu8S2tk3L5IgCXkFg6NPV0hR9Y4uLm5jcjpDxwVxXhX
9SLNlvPVZW9lwUfW/SSIRmTwENzF/VSVgx12X6Szr2f4E8SzH8N4nxoRgok+UVdI6NsqU+zYdEq/
pEh1Oo2DSXBGAM6uFFYdjoOBPlNXcRBgOr0ZfhzpGF7wiX51sF+n04n+Y3KmAzDoBqs+fBxGt/Fp
EZSEF7s084sgIOWJZkmkWk2DJRx0Nj9P0AWqvzC/JreT4IacfbNXalBW/Y3AsHreNgZ5ObhL5tBZ
fAyrgfUPUEsDBBQAAgAIABeRe0beHk/myisAAMaMAAA7ABwAYW5pbWF0aW9ucy8zZC9tYXRyaXgt
dHJhbnNmb3JtLXR5cGUtYW5pbWF0aW9uLWNyYXNoLWxvZy50eHRVVAkAAx7/FVXr/hVVdXgLAAEE
9QEAAAQUAAAA5FtZc9tGtn4e/go8yuM01fvCmpsqrB5NZFsjyk7qplIsEGxKuOYWEHSs+fVzGuAC
kCAtzeTtsioWiW6c/s7ps3yngdwVy8yu1wNv9/nZjn/Kywe7Lu83i4UtvF8Fw1j+1rtLy6fDNPhc
f17ONnO7vv788fbT+/j6r9fH9/ZuJnZR5tPcFoNu6b3Ptljny8VBMO6Fy4n1Hp5XdnfxFy2R5N7V
h7TMv9o3gKQAsd7dHvrdc/m0XABSaqT5rXdv16vlYp2PZ1sR6yfvV4r5b71Pa1DoJjqsJjDp9aK0
tNcP+Xy/IMVEIMwQVR7RA6wGHPcJkR7CCuPex6HXRv0+zTy4+ItHcN/0hXdFWML4G8CxWhZlYzIh
PX+xXDzPl5u19+lTBURLbnyfMRRTTJEIowSpKAyRHwUyIEoKI+JerxcW6frJTryHp8KmEyfL86J8
vUrL7Mn7fWM3AD5bzvvpajWz/drM/WG5LNJH+z5dwL9Frxd/y+yqBCw788a/hKPAj0Z+GMbDoXc1
vHkXfBq+aUx0mwEm/im+/zC6u//4EIcPNx8/jBL/5vbTfeylpYe/4fpDcApgWQoW/fzeu7ePcP/a
+2DTAubsBwc9Z7LP70f+7e3H0H+Imy7VkMQm8AU1L1j44v3qpvGffvMKhK7hP2/4/n+Gf3/veT2E
fvRGo4f4lwfv+HMspSFWU12LpUbXYr9dF398c2LDjz+fd/L+tEjn9o9l8eV6u7/ra387Vmk4GkX+
g38BSr1yE4qkWw0pow7KH2gH5e7+838IpVc7jIcHgwv+Mk/zBSqrmT0MKGf5eP28Lu189MUWCzvr
T57h0k6Hv9RbrqbTqbZpxlOSevM0exrN14+jskhX3lsIhR55rSA2IXovCGRI3qMtGYslJJPnszIM
HmM1NsLbThxBtH+1xagAV4T7i1H2ZLMvI+rgUdFjr5U95tx6W9FtmSCRCtzjLYnp+kjdI421EjbT
Y89N3CFeruwChBnaE6+WZeTYc6K2MqgwPQnTDrscJh9s6fzkjBCrhGAUzDcKk0/3tyHshB0Mmr+u
Gt9B8GJd/vUHb7ZcPO7+dZOHZZEvHvfDJ5feVPZnoqdei46bzHoHBCH4a2mdqgr3dEtYstwsJmmV
wTqFCUUk5cxDv34Y7hXKF3n5c14+vbfzZfEcpqs0y8vnwSRff2n9qCrhb04LxXumq2a2Pn9pZEgz
tkypiffzw/1g4G4Il4uyWM5mUCEHq1laTpfF/AZw5Oks/5d1o/ZbeeVMJph31b4D6k5/Ph8QRt/0
CH4djIklUGU7YeT75a/yRfmDlz1BBq+3rto7qoQ8htLPVqsB0xqAkFcCmcip6AbS/t0NhjHRiYVQ
h4W+Ess4lcZzydBJxiDZfXc2FhiksSoiIQwnJ7F46mFqPLZiOvHWZQocAHxln4qJty3mF1NydwnH
LS+v55zXKBVcsLGzbjIY/B3WfEiBE/2t+lmH5A/e6Y+atJXP8TfI5Rms35rkxPzQkFikebluivzx
e6N4M/txMJjYdDZbZhDAFairxhxIGhugb48L4Duw6W6bOexFPXgzX836TwMh3Y680hpGCDvdesRg
cAurz7b2BQqYjtO1BcDZF+d7m9XEQat/7kaTYjnvuivJZ3ZdB6kCoHtLA04m2Juqir0OJxCll+HM
545jfizyx3xxYNs1GKqVd3Xh7ipQqASArAXwH+nXdJgV+QqCqrAdAIkgU6Egs4/+9wODjTM/Q9r+
p/NgPdk6dPxhWLLRiOjpZpG5PHyTfP0ax/FoDJv+ZZQvvi6/VKkbstpuSjobEM7Em32k0IsR4mJx
O4jmjfh4FecwUlLvi/0KloMWo8lbdrI7Yr0pY8yV5JR4o9380fyxaOpndiTmFQIJk0cCa3LmPIzu
zcMGr9dXW5nCxrk6+3s1v7Dlplh0MbZVvWZLXAsoztIp1t5u4uiP3/coGcNH3O0F0ibTsanzZVMU
YXuF+f83hYmXbfu+P4CXuEZ42wB6w9JRnyvJ0Tgv37imqki/DQ7NGOY645pxYIDFuDlA8ETabCKA
LxVZ647tJ4WBSdfA2C0yyQcdHR8MrPPWLZAjGAG2BquvTlbPDHZ3dAwAkQMzFXo3oqZG0Qk0SunE
7XxhWosoQ83UuNUJPgI8zbB2ixByognF0mlCaHuRCSE8426ANXERoaYwVMnip3asB0SH7sItkq+O
zFUXZK+Yzo5wEUwdwcgK2mVgkNW7XT7mkMu98O5TffAADhwXxbKomvTtWcT+VtV7cJ3Yh818vDt9
IbzX6wX5Ii2evZs55Mt13YxXt1X8p+qFkde6aLPpVHlvT3jUFX7j/c34UciokSgSQiHGeYK00DEK
E6xiFsdcyvjHl5wUNZfMwNwnOODidAoZGoIJbnaFyd09fMrn2wir8LCIc8wYQ0lsOGIq8ZHBvkAC
mwgbQkwcJF14zkk9wjXuwjWGaD6t7xSCE5O3MBv+9EmfireAz6eJYkxFKKCJQSwxDGkjEyQ4Y4EM
VaR8fd5e9FKrT9tY6akNU5LBXmYXSn0X5JAnmMSBQr6OALISBAUyYogSxagfxRKodhfktuhu5O05
TQV25z1tBTRVzglOyVQXcCNIoHy3+dRniGEKVjcJRT6PeUB57NMg+PE/P+DZYZpSeQJ0jCU7snR9
5619TLPnTrhKKqLBGRAXoQA7KwglMDAKeCgNDrFKLsGtBV8CXc9oQh9TMj2BnpHUnjr0We/wtQqY
xNJhhQRAlUQB8THyGWZGgPXDIDqD+rxbbAd7NSZXLSHVusOxHdb9RcE0UZ7nejLvCrhWnztL+hFn
gQmQCGMfsVDFyGgmkY/BkCYxoS8kYNqsCxf31+7mxlJaCK6Pl9LQb6RTaFSbBxZVtvgGzsek6lN3
Q/0FIAQaR1jLCBnmQ9CETCAtMeAIWRJFmKqEuc0cVlTh+jYfF5CUr5OdMdbXO+HdBtqN9toIxx2w
GcA2Tdjv3EEv77uJtO+wch4bwoMYBYAZsRgLZDhEeeibWDDjJ76gF7GCxG6YMNBGmNJThCalrsB0
H95cyb6B+QQL2ScSwFLOuKFYI3A6COpEgIlFGKKAKSOJTII40RfBHoR3YQ4b4y3o6ZSdQk+nogoV
8KLw8/vh3WwDXdhws3It2a4qmT4gdx6hIOVwzpFM/BgxEoCVNeEI+AUVRFFqQnkR+MeVXby77TZ0
PT2HADsPpaWOndhTdaylR5EfLufz5eIuBZK99q4g5vsS7jFuI2QAO+EnEZTWBHZDhQoZiCtEJA0J
1H4lAnbZw9Ni3L0JfjsQDhDOBcNhRltJy7qUZEdK+llmZ7ao+DSp3K1xBS6AskAfgoAqH/mxpOB6
ENgQ3BrhAMsICmGYiMubd5DYrcNh/EgD3qWBPQqY6jypftpki+2mgy64UgZC2LkfFT42cQhJkBLI
0/BNS9g4LAJoE1SM4yg+1eCuyL8CpuZ2dCx1Zls6ZraUm0468tXUqiPlnN9HeWHdSdTzXisgH32D
q8hKINECQ9EoUfAPoxRKfARJTPquMkMhNWHy3cjar9CtTGtKWwt7WiwADjlysiivjziK56EtvuaZ
rePJJWGsXR11mRYLjQLfEWkRx8j3Ic1F4GKxZoJQFX23YOxEfzeoTtF033I6r9dWk3bobsYnWWS2
LIbPi8zVHVNVnupvlRWFDAzoCY0EqdO5BlaMlO9CSzOtosu1x4cVoCtyKF+s/R7PuXyyHW7rarIO
Xbe1q9H1b8/wd+mf8p2bAgmIWOQ7Dw2AEkAhgwIAYRhpExifSIWrhLljJbW863OS29hS1oUNEt2k
wua8t6bZ+eLxU5nvTkyuoPgAMmISHCtpEDYakGFIcVD1A+hMlIwNjo0SpoHsvMA2qCk+BUVIduIc
B7+9WUCqWECLe0U0r8Pc/XUcJYp9wcExNIkkcJQogPBgISLA5rgBCgrl/0Xpq2O18xTreGavrcqk
Qz/Kp9NxZfRsuXqe5qDhztYYMhatXCFMqImSREL2dQYXBoPXc8jINKaMSJAS605XaMtswxG8A44+
LnaRHW8eh8/z8bKq6FhW7MoV9JgEUQykFdolBqxZJhya1Aj650iEitAE+6F6iYmbK5zJKo0ZbR20
6NLB7GLsyebzSTpD6XpBdmZl9GBWP6YkSaCbVhK4oTFACxX0UjE0/UkcJ5Ry2vbjU4FtPIZ04LHm
qELVqmyzkEvr3BmVQobrU9eOaD/WAVTdICGusWPQ2OlQIsWCRHEM2JLgJYZtLdNt2daUlip6Mj1V
BS5eiEbvSlT8wVQtlYQoEzFKiHIpIkqgs4FeWgcCszAG40bivyxPzRkt6Aanp9CNUkfQhzYtsqfq
MAB2oKoy1V9XZUygI0GgK6XQCzIZYEAfG0QU4TIykOO4+POK6x7ImT3aDbeVVB00oqqkdX+RLBfl
ffXOQfG8zyjUZW9fQbGEjhUSIlRPFoYadkVqJI3RIowEaBj+6SXUfzjT8t3b9XJTZHUncgq6rXPW
4ZNmonY6bwvfZLFe747RrwSlu3BnCUSRj4EtYe5qgtbu7DFBkQnjJOTM51hcKqgNuW1Yk66tmOhd
Fvpin+ePxb7AO/bGfF9HGswfJhha6CBiyAe+jWKqY+Iz6kOz0AmlKasFYkw6Us9EiaqkH5x+bbNN
kZfAi1Xl8UJwRfqE92nVc7JQktAQFBtXNV3BhKSYICkF+EVEgJLwi64x3Io/58n1aK+NUXYAN5Mj
nrSo3/U40CTSZ4BYByQmCYnAfNDUswBaZXcJ+UGoORR5n0l+aU9bYtu4jO3AZbOds2UQ4lnxvCqX
+/CSpO4vmFEspBoRHoAVMZYImsEAYRxFKsEGsKkz1botso3HdtCHyVQf1ZYPtvQ35RM4fr2/VT4L
NSGxdDQtDqHQBYojjTV0p0pEkvKEUfmiirIV3r2728EWaMs7UrEVxwc465W12VMftF8+updJmuXK
9QC0qpDVX3dOq4MgYDFHkjKoLXFCkMEB1BYe+zhikLol+TNOEoYVqvsuUC2vPp7WtoA4bVoVxnpK
a/dejv8v6/v7bCVqF/LBUSKjOaIKnJlh4FbgyQTJgGJGYBdVdRzYYCZNOb3WWh0HUYpgexRf8+rt
in14sT6puxCo49Dxg7GZhgLIGIXYUooiIKSMxCwhTF9Mmk25vTaE02SuqDsGZ03XSDeTfNkvl8vZ
ePmt77tfD/UPV7ZJXbWJc3JpAqogqyPha7BZEioUaMj2IZGBBIYnaRJfrmsN4WdOXRozWsqY8WkJ
UCajh2ThjpzCVrqAtMcdVdLugUkIyZ9pIKDQqgALJQJYqKRRRIlWMYnOpItjoW1MGevCxI4qQm3g
Dbjuujbvp0VNiVq2dXyUMIGE8CGlCaDLPqsaK2mor6I4UMn3beskXzCsGz7S4LRFUWO2b6GDW394
6JYM7wuAGsWG+a5DEokP7Jn6FEGzHCIRqUhBDEHfmvxXR2+NqV9tBgK6p7XwtdQajztSwni8j8jG
C2P7RxScYKWgfKDEYAjDAJK3lixGivox0Jk4ikn3YcBB2BGG0+jTiomjxAxUr35aVjfXVIqaKJgo
JAzCDXIu1F6mIQ8b+O28F+oMESqI4u9xyDOEN9yO9drITAdcQY7gvrMLt3HVq0HbV5jAhDW1l7gi
DJIrbgLoWjElgNcH9msCbqC5iiBDBNiANV9SCjuWOvNM43RiWzUx6VBNHufnwwu9V5SoPqm8QgqR
BIwzaMGBpbGYJpA6eIQCaGCF78eJ4dGl5LwX2kYku3xDsSNE6zKFlLF7alGdrjoDh0LrGGsKtJoH
kCqgizKJ8ZHyI80ALKaVa5zF1BDbQpWmp1Gj0wnfocrevk3H+Q4PN1X1osSHEgDsWioGu80hrQbu
Qani0M4lhsgowe062hTTXn8iOtaf7s8a/nEXvzskI+62J3Cn5DwmKFEJZHbMtHsKwBB0jzKKCDT2
4eWHetVLFzcfX9A5HVZvg56e8i/3ItFR3LzfzMq8XG6yp5MTeke1RZ8AH3BHz9uvroPRFMLFUBRK
Bq7nmhdjFPDwiILz0UQzpl8SRxeWbip7Mq2l5qRLTYv5kZpjaN+2HWv9fuzc/W9B2wRRP9ukEVWQ
DjQwdleMI+gRAyzAe6UBwqx9KhP2nQ7oSP65VuhoWlMfk6anEQjFcHzEjf65SYvyX/WjdtLX7nky
o1UQBpHUfgKEP2ISygUPI6D+UAkD7nNGhTQy8S+qcRDdjf8w3mtjzDqAq/0Z57f1rOzvj+JIlS+M
MtwwiSSDdpMBFQKoikC4EGD1kJtJSNoh2hTSWv3fxF1Zc9xGkn7nL3HEBBh1H491WtyRw5qRPbGv
6G5QYoimNDy0Hv/6zSx0o1FAdZPh7fBG2DwaUFUWUJX5fXmxnNDl7Du1DBCF/GqISPsA04vUUS8I
YkngSiEC6uUyJOBMMr7y/N4QIpoTkvyG+xc31StXprXyZWDl83D/DbcKv+bIp9CL65JWwJFVF4l2
mGBUViq6jIkYmouUuLoEmXoHU7dvwivVYga2jhLBh7sDmP7y+wwfCcauKZXFHPKgtPFagr7FjJjo
fWeij50wwnCHHgwZ2l6V31sgyQ6cNgRB/Dnu5sfht6/fh7nPnuOO5lLAc6S6swyJSARc5BgwOO08
0DZhNUm5KcZyvIUwvCGMILe3pAiz+QMexDWZHgxSCzg/xmEuiQeaBmoAVJohgN1BcRuN5J+JUJ+t
apR6fjE05t+jgtoh/K+73fD1oJIooBX0agsFRpfb1DGFWSMSM+2sNB28QMOZ59ZT9qpPtYx82h1c
LtdSDw2pb2W/OBjTiNc3PxfAC9agWDxLAGsR+BlfLJHAyr0DuKWQ+1jCOxMIbDJhGRU+U2vOu4XL
4G3xy6W56D3brjFvz/fxohlETwDPAZdLTLTC76j+vWOcZNtRIUCnBueRtLuOKMCO1DL49ILBYZdO
kLp0VYtuGusRSwz/6+bu3y/FQ0mLlmIGd3LQmcLpEV1IBmwDLyBX0A54KYlWOprtmzxYh9HbEh+u
VnLL7dqmwYeTp71svJ/C/R0a+4MfxxQzknzgKoAFDpinhwFd9Dijz8oSxpNOUuUL5fCshKjXsFtb
xh5sxgG8fv/p7mly/ggG9gGPLAGFQYAUdtRgApX1wPJAtQEYCt4Af9JC/FVUeibgVb0G2ljYlhxe
zo/vf10mVrlEAAIBEyh8CdRzBvWsYpeckFoRBUxRXualTJNXImu69mr0Wk3m7ZebnBdEIntgVQQ0
jc4cs5RBeCcAnWjP4b9EPGfpQkTiOHsltGnkCvaGTjGO3/vHI65jBHePlJo5pzGYYCIgC+BBFtgf
IGvhjABqpGlaALvjIPXktKEJzQrXYR3r9h51N78ukcjxB3RXZNi2AkQJHP3fksE5NBZeeRDUxECz
9OzVVx7en071Ce9rgRtwrDd6meOzd3s//efh+fPwdPdUO711MUDle+FbPHvMmU8GQQV6vg3zpqMy
22yM9JpcPvFldG1/XMu39n9PN9UPQrPWg+CLiN1T/7BDp+th/2hQn6MjnEQC2CW5TnmEp+iu8UmR
zkthAGb5BHT+rDdhPvJCtMYxNMPmTID7+uePx1i3AlQgSnIzKeBTwonMxMtOOIbecoChLibRSS90
VEEnJunlbO5RkhOb8mMrNA7Mf70xiztgkZRUlSL9IPne3+SQGkup4PGj/qSYoEzACmelU7CJkMTC
2ZSk+bi1YA0DtaGb4bBR/usDWzlXZM5ayU6mAAfCwJP3mA7mE0BcYC8uUnMx5wpriEwbLtQNQ5Je
aaW7hy/zc73nmoxgKN44SbyxHPMPQS8ZpgAfoHKXIieXiQGldQnydTOXoUKdD1+uavG3jTVJengN
2GxhCmAYgViTRmYp5ncEwjFmbIDt8AykS8Dr4R5ekvXNPTEbq5ZBsoYMvVymb2z7e6yZxRYtJd/q
tt8WP0jx9pakKS0ks6bTXOPDBfruuaedZjpKJ5VNwvyffCBzRdkS5oS6bN1aPQDeyHrfAChraaY6
k4jvWQsVyOHw7RhAaSQA79MAE/DEms5GIMcBCEuwHtPI2Zvz4F7PJ1rdVi1MaN5YmJmQz6LgFdi0
nVK1RBKOIo4I3MMXZLKaWIBBTAMBAISR2nagHrMWp+HR3YiBLgkWfs0fw9ffvj0OT0/lQUtVBCsB
MnQbEqUAUsKujx7TUlEnmhjR6Z0BYgRLrIpveczruU5Qq9V99cqGxg6SwzJXYKUBcQfx8QCNSpb7
EDJzWJ9HM0Z/MQ4NOCpmAk8+GEEd+/NKdn+xEl3JNaDHD5c5+Gs0A5gJ/Q2i5NckngnF3FkMh3Bt
sDZKYjlNEICW4Olwehm01LhxsZ7Gq1Cqb2DXp0OC7JQSWLJtQWkRrqPuKKFAHWlScISp7ohJylqX
uSYXSXeocnRPQ93plnqZZtdYpiWL1/ZLCHMVzZkjWkbbCQ1nh6Pb10ofwJB7EiUgXjg7bzk2MGxb
YLhQi2lbu6ufNBAcpq/336/thHzwEFAaYKuDbc40oNsHvniRTKcSgcMdRXZW1kSmHqaSAOz7WgJM
fp4I65KvCq+kB5DfAffD6rSIPAqmjx5Yq3PESRsvxVdbAivaEnhY1FXuB+ofDmUKJRMK1IMWAr0e
iA1Y0EBaqMFIEQsKjEF0byoimQY/u4i+VoJWNAS3esK6P74v+mf5uGUizHMTOptRZusTWBqhADYA
vI/G+xzIpR73TIBK9J43NkkvBHyrnnn/8Mk99Pf/AdqFj13vk1h1sUkGGDenXnWUmpJcwjprMph+
i4bfEs2iuDhjnIt04hHM7qgXLZqLXrL8Qwbj5zt8Z2MOIyGIdTB/lWAFLEkJjLAGmgigD8F15FYB
P3uNEbw1L2wvwbub82mO726q9Q22sb5hu8S1N9u5SWPo1mXymqIlEFpSihnJ2Ud0X8EXg/F1YiLA
I6pUym86TvMpTljm7QlzNtyuD9WW7djt7VAO1Xv3wYW/r5JydNIOc6o7qjAQYanovANAqhT3yhol
4f+/yJM4l3C+tK0ka0u9lXTJ5/4+PG6Gx69PBW1Peo4Yl5PvqDUOs1Bz54OTYKdzSFIm4EDnYdJh
0LbUh6u1uAB81+KKZWg/fH55+ALWej/plA4j5VhlCiQuBu26SLH0mSZQEkoH+DWDdVPMkFb4r8EP
6mlOsIP6pno5u8bGkrsp6eTfQMb6B8Adk8LWJVDrwMT44JF9AoJwDL0ATsDhkJgPGFng7UTq5XgL
YURDmGEyHeGf+ePL3fMx7FectNkljWGtIEWCPW6w5MgCbDNUiRCtNjbWMKEeppJAkbWjZquoWigL
hI2f7vfGC8NVeyPGAROQBI8lUswvF9QDZOG68xGeS2Laa+H/tBEbr9XiUt0S1yz8SqWX05QzpHhx
bRupENMAy3AYUwOIkCycpCQB+Bims2HnXErzIRci2YZIgzgAre/x44dVxAMrbDgDkx8j0mUDR9rA
6+ySSDwokbV2+q+KeEzyzZe1k3K9LPiwPyzr5WFbVRooBg8R856oKZXIGeCMIxiMVt5SJpU4cUCm
garptVq/6J3e9gvOPD6g8PXh9u7Ty+NU57RPI6JTEhG3jjlLuogHl3OHlU5JdiwDAnNaAoQ5H9do
zHOq0Gl1Y7WuvpGFt+uPQZnN02/H2HqJ8rPgAiGOdZRLht1CHMheTr/SUURgGnpRBDkbo55brWPU
u5005zzRI1TZp/4QrQEgFNZefioFJixZhg6JBCqdRwHGCE4EYEEAIQaosaLhct7oozQnFP90/ape
o20tfBmc/+Xx5ek5fe/vX8p7c5/mWVuybCPhDGZYCIeJ6hrW6QApYbId8YBzeWJvCg63JjrBKxt3
Vku7bVQ6D3SzXbQEeXczJbNj3gUeDoBDuLtUzuhN72gA5s8pzZ0LGQCtyDyC6ecuXiYt5+Zswvt0
+apaR8M8wod60cHm5uePL3uvrB3XZsegTiSA0D0JoInQRQPYr7MkUGAm2jNhVDKvZFdNI5/Kpdhf
XkhtWlIvizO/Pd7N3/r1B/z9QDWYQmaVEiFg7CmoLXTbp8A6bBDbScUkNUEoa8UlXs6HWpT5XeXS
YnnrHMiBYf8j9uryRj2yr7QvZsNEwyRPpQ1SHnOYbJChk0DcvdUimVe6dfwZ8jjJcmbNSyUCS9y0
1j1p7n/2u7v+YTsswkdCUWFYsF1w0QNkB67vCZBFaTUYeheFJ+RC4aNagkp4zdfxlkHvc2KKEf6f
u4cpDsdlSe7UJobApQEzGdDZzFLnuZUdAVDvhQ5eCn3CpB9Hq8UQrCXGBL7Hp3Dtp2dILaagFwBO
POMyByA8CQC40oA0nQodkAhmLZA8HRdmsB5sIUdDsZT4gGl3fv5BaT5mPuF3PJpZRLBtuotCMGwv
5TorMRSL1Jk64rR4JcvsMPapJMz95Upuc9t4jXarFqrlfQ+g6vOsXFqza4Y+6/EHRMMBzhcxtrSe
AkCkBdYwuS4RQV2mwmYmLme2a3lOuWvm91Sr7skaMw09FbOip29399hP/fm4g/HoARmiCjQK9fCi
uCo9y0CRJlico9EFKuipgqd6wFqcRoLi0G+WLYp2/XO/G55LEu3Ttii+sVSSy9FXEWx2IA92F0Ho
xLAQX4GxSiJTIyjw+kzf1NcAJoqHiU5rtdVt9aI2vLGoVcC+6mtaJ8XaFJPRoCMAaAMtddoAwcKC
2eIDtMIRa84RrPnQtWi7htLY0KkgYvvy7el6itpzPRZvcpWc4JJ0gnvAak5iiTHwEUqUkT5Hp6NY
VGTMxqkE2PQtAXpbtAXcfF+27jFaPRWCO0EcCaCpOKPFxSsAiSRMKonou4EtaFzzkcxHrETZNnxH
w3alADb99svLtyod4FqOoZ7r8W1RK2F2ZTqhsXpNJwUEFHCf9SFT2H7K2Df1LfGLmeY7brxWyb+z
ayQ+gBVdbLOJWlrQ//t6H5UjVs7DC/VYAObBEHlAc5imk2wkUY9g7uT+arDMYWikqdzqQWu7yjX+
8bH/9vluW/zfmIpTHMLWXvPxeQYTfFBKdATT93nAChUOZ9t6eNOaAwEmr/OgwxynY96HO+aruDUN
hYTh/QVXfjf2FKl77GUusB5NdzYX5z0gE+MlmDWvmOVEx2ze1FxlP/ipzPtysRJ62xJ6KyaFE+/6
Tw9fn57vtj8NT0/YE7bOfKWEjCrek6zRLQecngsGdixw2wlbak9I9Mvcv/Pj1iKqbUPEVWuSQ6Dg
tuoOOAYMKBvrZEiOwWTJQf1gorTlpnMG6Lz0nAdOvHOvtCk5+PrPdwl0jftmS4Kzt1npD/hwpw6m
9Pdv09EDe4BHj43pWLCtYVdkIUGX5ghPWVDZKYCzgUQZFGs3P5iGq4XY6ZYQy+6eAIDyx8OjHPul
mMRUIBbANBx52K1AwC11rFMiOYuNCik/7zYrY55sK5A/LuS8bch5OyUz/3HMRJX4kgVLJGADneAw
+BAcqHv0hUQmUpQxCssWm/GPRhoqTkFb88rJ4OEfBZmcm6yUYQWalPRYpgt4Ijps86FBNzJOpQ2w
u0g7N2o21EIEtRaB86FRhIG4oviGSk7E2C0jaaO5cIAnOdZg8OABaFJspEC8D86zZNWr2hAHPq0J
8WolMheNt8XVMqGj0KnQf3t+OVLRfcu3RLwCq4gFlBSbX3lQhR4wozWER6BqPl+Ebc8lOJOvsr+j
XqNqHF+upx4mHx4+LegnldTD0QCelDT2LQG0bwhoyRwjTSwYGyO/EP2cJq9FNnYtstgsvSG74enL
89dvT7MehKaUZZTv6Khi0qfASJcNeswzY0C4MPJqiaNOAhSQ5G1dwMpEB6KBN5xqBra68apeQ79e
mNJT0dbd9gVR/6znBoXDIQuSIVYDAO2owHeCR9ZyQA2aGacEoLAYFu3AFmNVcqh1jz34cJi0Rf8y
6xxjxrod0OMBALJBwgHA1BjMtPXIP7SQSYPqcKaW4DhKNbnmm/XkWi8LYv8RMYopC+wobsdAMyMa
4FJMGeNGIXeeY/UQ5luTCPpcqYu7ff4RT9SYxnpNt2K9Jov+u5WbfN0Q2Mh9DF0z66MCbUIz9nxL
GttDCNMxlRnFsvmxyfd5Ffiata/vqVbRi4YGhw9P9pi9HuNE+KJwIfvfeOlymE0kIWhAicahFpEG
8CJQBhKYFIwapv1fElYfr9Xr3DW2f7/bLrqPjL14x45Fc/zLmQeaqDJgGUx6c8QjO2MdS17LnLmC
c/G2vNXD+Od6AS/6FqGgu7X0GzLVMe+5y93D7XSGBbYcGP1zUVBHpQKAYYDDGWE7xwIHLAzGKgGH
iecZ93HUq3p62ZJpWMhU/V26Hyij12ysaQbKI7zIqcvSYT0OZs9KOOVCOXigUlPOzvYTnQ9cC7Zp
vOrB6NttpWy+F5N1aDw25igBBKNgv7HmWNgx/cCAzu2Sc4FTsCHBkott4DHbqr2By7WregGmtard
qk/v0xf3uLl7PkQ5x5bX8LU4GqiSEuiF1gQrgYHPeYapmzSDpgWi4c15XLwY/VTT3eqmxSqGxip2
twtDMDYBQrVVOvGMPbfovudWyRNJlCcjwMx7AXvaBwaELuMfPaVASLUUb+nnWMY+rTHL5Ur6AriX
0sOHK5W//dqjpjelsgKBLnahtVFjfjgGloHxOwI/RQtUIFJqqUmviAtDnhIVLtVisgbkuEWVrupg
X9XKeSzBL72cRbKJGY+d6cEmKSBzBshbl5SjQQJhCTld3OoepTkV+ms4fS0l6x4L5cPlKymYGxsG
HxOZE2x6WBDpgscmjFYChseeKCE7ljSN2EzqTwP58Votaj80RN0sK7w+fu4fx6RrzsbMVfyO1tUa
zq1wHcPyUM4E0GsMK2cnaY5euRjdm/qwjhOccAyMFyvB9TpnHD/sS3wVE0fzf+M/G3bL3FWgmkFw
DY8UQ1mcYNN2b0inCBzbhC2y+YX+ZsBChIX4m5b4x8Tbm2V9q06Sxgx7XwtSUpyx1TXAb5qCpMQJ
R6S8EBuaJq9E3vC1sqdbpufdVD/0j0CDjiGwMf5luHQYKu2Uwy7dDsCyDT6XVrGCxBSEUf+P3VTn
Ql/Vi2uuuC8tZmbe2Sq15sCYLGy3Esmx1gQ4CNjzWWDyFvyUpe5kpA4VF+XybD1gY/RaSL0mqXSn
Jk/P77/ds2OIgRWTSyOcS0z+sAl7gCTQpcCsO6IxAYqB6Dovqo5ng1zVE9HG7JupeHX7t7/NetkU
uyOyMrCRZQcsClWcM1iojUHmIHNMad8Xre431XI20aFvLP2WL/n5T8Nzv9t7evb53/Bex2AiEdjD
OAHVoRhMtCx3VsOjADGSJ8QYltTlgokHSU70b9pfvaqXs7abjNClNwsp9ssdIqvy5w/4ePCoQSc4
1oEBOd//iQ1tGDbI41RmB1pEv7Wy7deb06jk13kWN4g3rDcFo2wZZfwwPGLvfQz7zzP0RfHGoTGM
PmgubOrM//Z2dL2J48D3/Aq/rFSkAyWObZJKPOQTsZByomnv7ilKSdqNFkgP0u3239+MEz4SEujq
TpcHEPYwM3Y8Hn/MB5MRhuT1EwxWkCbD82HBMvQ+ddHTQqjDeuIcUKm3gbc0TDQV+1O+hoZU4bLN
0oxPXtxyQfvCxRBOQ2wVplPyLU/1YPL2/OGn3HhsoNJ+Y5Wv67ye51YwKVVBs2tXnMQGMHVi/qUy
+ZIu92ucCc8wXRNNUKWtlQardNvoUxhUgqsupb76/03hUFFrKz2P+wOFgj4ntBa/9Xg/wIZl6iN7
iCZkHgaRxclI952+NTSGfVcwXbWFrsKkfTF06/m0RGnLXo/qMZM5o+SJWL75cZySmdw72IzZmsZh
k4dB+AxgBsaE27c8R1CdWowLvXmudoJFqZNqGaV6kjSmjEW6zov0MUvfT1wpyjNleQktr9d0kDsX
jX8YvnEM2AyD2DJtzj37cyu7czJdarkJV2sUb9nZQ6G5VzSv8fpEy5UB6nXHQ2ceV1rQqbBWsjVf
9GFCBFwm13SnER/4BEeDdsscbOpJ45LyRyadUf14mZbGYuhqLIUIv+XRJbV9dMtVbbxT5x4oG4y1
bmowDF0LPhz+mS7dU+gQoKpWqXN7vs6nMgQMax4MVkcQZhXnH53QhOe4fdXXYN2JVzOm5/sYoJGy
ofBd1+f/lYv4gXy3qjk7hKDLlg0wXT4frL13f6+yItWP6Vmk3lepMG3fRBMLdEQA1WI6BqxJGDe4
bYK8OI1T5BqaGgNpy2k6FD7tGVjFm5csOS6KhzKPIkyoAsNCDFHELBtUG2jjPigD6su4l02TsFMs
iuL9rLK6BHmSPe+d2+/f1mvofcxA6sSr1Y6s4yQlTx8kL76lW/K6zUGsdiDoRbx9SaUbbfENtG5V
UWYuLeLd9wjUYPSaJbdEK8vK3LxL+CzSW6KeFu7SQgYkrcrrhK+hV/8devhx0iroAUkPoyZkm7SN
ng47DvPXaCqPAcGEC6f9uwCo+Wb1QTDMJtbkz+Sw97slYV7EqxFVQYYCsk13GSYRH5nagAY3jH3p
kd07yFuaRPlbEQFrb5t93vZkpGkGgnHxpaf8sc0KjIMAOJD+ATMgGpN3qCzSzUinnE5vVMB6oKRz
wcqiE0IjtSyqEQNEaI4AtIiy8MaT+R0J//rdIx3P42QRPlgzZXR8ukCrasUZk53cBZNMpsdth9aY
OlUOaclBtcHgLO3Gm39gxkANlK/35OskJC9l4GBAvsyTtAWvMe0AvYHOAj2TJr2KgYE63v9pX0Xg
zcdJgtEDCHCGRtonnddTptLsi1hYQuabZdrRFWyqBNZsNnfI5cdgAz3Yg97EyTrb9DqBdTpV7kPL
mZLxg7Vwu7FygR12X8TL71foE9OgwOtjEEkWrNC7AKsz6NsqU2wgO6Wb04EWKFHkWqF1hQGqDTiC
TgJr7F2B5RQYiKLZ5G7qufCCLzRLYL9GUej9GV7GqaHTDYI+3E2cuXuZBc6gs9ZSvggGpLzQLIZY
KzFYw0Jn+3EBL2D9BfkK56E1u/Zi0XZuXIL+RmBYve1qg7wc3JV4iYEIYDZQ/gFQSwMEFAACAAgA
F5F7RiEs6VXVKwAAQ40AADUAHABhbmltYXRpb25zLzNkL3JlcGxhY2UtZmlsbGluZy10cmFuc2Zv
cm0tY3Jhc2gtbG9nLnR4dFVUCQADHv8VVfz+FVV1eAsAAQT1AQAABBQAAADkW9ly20iyfb78CjzK
4y6q9oUx4wisPZr2ohFld8ft6FBgKUq45tYg6Lbm6ycL4AYSpK2Zfrt6MAlWIetkVi4nC/Bttcjt
ajXytn8/2+ynsr63q/puPZ/byvtVMIzNb4PbtH7aT4O/60+L6XpmV9efPrz9+C6+/sv18b2Dm8LO
63JS2mrUL33wyVarcjHfC8aDcFFY7/55abc//qIlkty7ep/W5Rf7CpBUINa73UG/fa6fFnNASo0E
pHd2tVzMV2U23YhYPXm/Usx/G3xcgUI30X41gclgEKW1vb4vZ7sFKSYCYYao8ogeYTUSYiik8RBW
GA8+jL0u6ndp7sGPv3gED81QeFeEJYy/AhzLRVUfTCZk4M8X8+fZYr3yPn5sgGjJje8zhmKKKRJh
lCAVhSHyo0AGRElhRDwYDMIqXT3Zwrt/qmxaOFmeF5WrZVrnT97va7sG8PliNkyXy6kdtmYejutF
lT7ad+kc/q0Gg/hrbpc1YNmaN/4lfAj86MEPw3g89q7GNz8GH8evDia6zQAT/xTfvX+4vftwH4f3
Nx/ePyT+zduPd7GX1h7+its/gnPKM5aCRT+98+7sI9y/8t7btII5u8HRwJns4eHtzfuf4ujm/tCj
vJ2kzGYEvqC9aDLh8MX71WOM459+8yqErqs/vnrjd38LP/zc543/SL+k47wql3W4qOxwUqUz+8ei
+ny92ZDVtX80Z4DQG4B2H//ShdWBtkFyAI0XtoVGjeYNtK/fgLbZn15I7djGSpF/71+A0q58AEUQ
3ULxKKMOyh87K93effoPoQxap/PwaHTB52ZpOUd1M3OAAeW0zFbPq9rOHj7bam6nw+IZftrq8D+t
26jJZKJtmvOUpN4szZ8eZqvHh7pKl95rCKcBeakgVhC9EwQyJB/QVsY0Xc/zp+7NfTKyVGiRgstu
L6mzKKDhnMoBe6kwaovcyxaLeuW0epguFp8f1kvmoOEBf7G0iRGn0ihI43ggOsZKV9MTiYfStJLE
ssJzEx8ep4ssnT6U87IGWYYN5AtlCatT6jlRi6WdgwyhBwpm7f0jTN7b2nnYOe2UEIwKcPow+Xj3
NoQ9tKPR4dXVwXcQPF/Vf/nBmy7mj9t/3eRxXZXzx93wyU+v3FZSJgb6pei4ya23RxCCp9cWpFGF
B6YjLFms50Xa5M9eYUIRSTnz0K/vxzuFnO1/Luund3a2qJ7DdJnmZf08KsrV585FU4d/c1ooPiC4
p2L3OVCbVbVhShXez/d3o5G7IVzM62oxnUJ9Hi2naT1ZVLMbwFGm0/Jf1o3ar/WVM5lg3lX3Dqh6
w9lsRBh9NSDkZTC0JVDje2GUu+Wvynn9g5c/Qf1ot67ZO6qEPIYyzJfLEdMagNAXAinkRPQD6V73
g2FM9GIh1GFhL8SSpcAxXBp1kjFIdt+djQUGabwJSIjCojdRdD1MZZkVk8Jb1WnlIprskjjxNlTi
YjLvJxC44+XtnPMaQaHMWOasm4xGf4c171NgZH9tLtuQ/ME7vWgpY/0cf4UMl8P6nUlOzA8HEqu0
rFeHIt98axSvp29Go8Km0+kihwBuQF0dzIGksQby+DgHtgWb7raZw160gzez5XT4NBLS7cjLrAH0
R9jJxiNGo7ew+nRjXyCgaZauLADOPzvfWy8LB6293I4m1WLWd1dSTu2qDVIFQHeWBpxMsFdN/XsZ
TqBp34eznDmG+6EqH8v5nuu3YKhW3tWFu5tAoRIAsg7ALiXrCRSLzUQoyOwP//uewcaZnyFt/9N5
sC42Dh2/H9fs4YHoCRRWl4dvki9f4jh+yGDTP0OZ+7L43KRuyGrbKel0RDgTr3aRQi9GiIvFzSCa
HcTHi9iKkZJ6n+0XsBw0OIeMZyu7J9YPZWRcSU6J97Cd/zB7rA71M1v68wKBhMkjgS2tcx5Gd+Zh
o5frq61MYeNcnf29mV/Zel3N+7jesl2zI64DFOfpBGtvO/Hhj993KBnDW7W/X1oxyUybLw9FEbZT
mP9/U5h4+abr/AN4iWvDN+2nN64d9bmSHGVl/cq1dFX6dbRvBTHXOdeMA4usssMBgifMZIUA8lXl
nTs2fykMFH0DmVukKEc9/SYMrMrOLZAjMgJsDVZfnqyeG+zu6BkAIgdmqvR2RE0g0xQpJhPrdr4y
PbicLIKPBiY51s0AObmDYuk0IbS7iCGZhRQAA+wQFxFqUhDSyOKndmwHRI/uwi1SdnXcFmSvmkyP
cBFMHV3JK9pnYJA1eLt4LCGXe+Htx/bYQw/iqlpUzQnB5iBkd6ca3LsW7v16lm2PfggfDAZBOU+r
Z+9mBuly1Z4ENLc19KfpXJHX+dHkk4nyXp/QqCv8yvur8aOQUSNRJIRCjPMEaaFjFCZYxSyOuZTx
m+85puosCV5wiiOHoIEEDbEEN7u65O4eP5WzTYA1eFjEOWaMoSQ2HDGV+MhgXyCBTYQNISYOkj48
56Qe4Sr6cBUQzKflnUJsYvIaZsPHkAypeA34fJooxlSEApoYxBLDkDYyQYIzFshQRcrX5+1FL50R
0C7WwpxitZpPJvmFSt8HOeQJJnGgkK8jgKwEQYGMGKJEMepHsQSm/ebPOfs5wLo9bOookPOicE5w
yqX6gBtBAuW7zac+QwxTsLpJKPJ5zAPKY58GwZv//GRoiykrslOgBfCerqXbO9/axzR/7oWrpCIa
nAFxEQqws4JQAgOjgIfS4BCr5BLcVvAl0O2MDnSb2xPohRU9Dn3WO3ytAiaxdFghAVAlUUB8jHyG
mRFg/TCIzqA+7xabwUGLyRVLmeZpvse6+7GYaKI8z7Vk3hVQrSF3lvQjzgITIBHGPmKhipHRTCIf
gyFNYkJfSMC0XlUu7q/dzQdLaSG4Pl5KQ7uRTqBPPTyvaLLFV3A+JtWQuhvaLwAh0DjCWkbIMB+C
JmQCaYkBR8iSKMJUJcxt5rhhCtdvy6yCpHydbI2xut4K7zfQdnTQRZj1wGYA2xzC/tGdMvOhm0iH
DivnsSE8iFEAmBGLsUCGQ5SHvokFM37iC3oRK0jshwkDXYTtQV4XoUmpKzD9ZzdXcmhgPsFCDokE
sJQzbijWCJwOgjoRYGIRhihgykgikyBO9EWwe+F9mMOD8Q70dMJOoacT0YQKeFH46d34drqGJmy8
XrqObFuVzBCQO49QkHI450gmfowYCcDKmnAE9IIKoig1obwI/MPSzn9822/odnoJAXYeSkcdW9hT
daylR5EfLmazxfw2BY698q4g5ocS7jFuI2QAO+EnEZTWBHZDhQoZiCtEJA0J1H4lAnbZw9Mq698E
vxsIewjngmE/o6ukZX1KsiMl/Ty3U1s1dJo07nbwC/wAygJ9CAKqfOTHkoLrQWBDcGuEAywjKIRh
Ii5v3l5ivw778SMNeJ8G9ihgmuOk9lGXrTabDrrgRhkIYed+VPjYxCEkQUogT8M3LWHjsAigS1Ax
jqP4VIPbqvwCmA63o2epM9vSM7Oj3KToyVcTq46Uc34flZV1B1HPO62AfAwNbiIrgUQLDEWjRME/
jFIo8REkMelTiTEUUhMm34ys3Qr9ynSmdLWwp8UC4JAjJ4vK9oSjeh7b6kuZ2zaeXBLG2tVRl2mx
0CjwHZEWcYx8H9JcBC4WayYIVdE3C8ZW9DeD6hRN/y2n8wZdNWmP7iY7ySLTRTV+nueu7pim8jSf
TVYUMjCgJzQSpE3nGlgxUr4LLc20ii7XHh9WgKbIofxu7Xd4zuWTzXBXV5P36LqpXQdN/+YIf5v+
Kd+6KZCAiEW+89AAKAEUMigAEIaRNoHxiVS4SZhbVtLKuz4nuYstZX3YINEVDTbnvS3NLuePH+ty
e2ByBcUHkBGT4FhJg7DRgAxDioOqH0BnomRscGyUMAfIzgvsgprgU1CE5CfOsffbmzmkijl0uFdE
8zbM3afjKFHsCw6OoUkkgaNEAYQHCxEBNscNUFAo/9+VvnpWO0+xjmcOuqoUPfpR6LCyxuj5Yvk8
KUHDra0xZCzauEKYUBMliYTs6wwuDAav55CRaUwZkSAl1r2u0JXZhSN4Dxx9XOwim60fx8+zbNFU
dCwbduUKekyCKAbSCu0SA9YsEw5NagT9cyRCRWiC/VB9j4kPVziTVQ5mdHXQok8Hs42xJ1vOinSK
0tWcbM3K6N6sfkxJkkA3rSRwQ2OAFiropWJo+pM4TijltOvHpwK7eAzpwWPNUYVqVdlkIZfWuTMq
hQw3pK4d0X6sA6i6QUJcY8egsdOhRIoFieIYsCXB9xi2s0y/ZTtTOqroYnKqinad3tlo9K5Ewx9M
01JJiDIRo4QolyKiBDob6KV1IDALYzBuJP7L8nQ4owPd4PQUulHqCPrYplX+1BwGwA40Vab5dFXG
BDoSBLpSCr0gkwEG9LFBRBEuIwM5jos/r7jugJzZo+1wV0nVQyOaStr2F8liXrv3eVY1UJRtRqEu
e/sKiiV0rJAQoXqyMNSwK1IjaYwWYSRAw/BPL6H+/ZmW786uFusqbzuRU9BdnfMenzSF2uq8KXzF
fLXanqJfCUq34c4SiCIfA1vC3NUErd3ZY4IiE8ZJyJnPsbhUUA/kdmEVfVtR6G0W+myfZ4/VrsA7
9sZ8X0cazB8mGFroIGLIB76NYqpj4jPqQ7PQC+VQVgdERnpST6FEU9L3Tr+y+boqa+DFqvF4Ibgi
Q8KHtOk5WShJaAiKjauarmBCUkyQlAL8IiJASfhF1xhvxJ/z5HZ00MUoe4Cb4ognzdtXPfY0iQwZ
INYBiUlCIjAfNPUsgFbZ/YT8INQcirzPJL+0px2xXVzG9uCy+dbZcgjxvHpe1otdeEnS9hfMKBZS
jQgPwIoYSwTNYIAwjiKVYAPY1Jlq3RXZxWN76EMx0Ue15b2t/XX9BI7f7m+Tz0JNSCwdTYtDKHSB
4khjDd2pEpGkPGFUfldF2Qjv393NYAe05T2p2IrjA5zV0tr8aQjaLx7duySH5cr1ALSpkM2nO6fV
QRCwmCNJGdSWOCHI4ABqC499HDFI3ZL8GScJ4wbVXR+ojlcfT+taQJw2rQpjPaGtey+y/8uH/i5b
idaFfHCUyGiOqAJnZhi4FXgyQTKgmBHYRdUcBx4wk0M5g85aPQdRimB7FF+z5uWKXXixIWm7EKjj
0PGDsZmGAsgYhdhSiiIgpIzELCFMX0yah3IHXQinyVxRCfyTHbpGui7KxbBeLKbZ4uvQd1f37YUr
26St2sQ5uTQBVZDVkfA12CwJFQo0ZPuQyEACw5M0iS/XtQPhZ05dDmZ0lDHZaQlQJqf7ZOGOnMJO
uoC0xx1V0u6BSQjJn2kgoNCqAAslAliopFFEiVYxic6ki2OhXUw568PEjipCa+A1uO6qNe/HeUuJ
OrZ1fJQwgYTwIaUJoMs+axoraaivojhQybdt6yRfMKwbPtLgtEVRGdu10MFbf7zvlgwfCoAaxYb5
rkMSiQ/smfoUQbMcIhGpSEEMQd+a/FdHbwdTv9gcBPRP6+DrqJVlPSkhy3YRefC+2O4RBSdYKSgf
KDEYwjCA5K0li5Gifgx0Jo5i0n8YsBd2hOE0+rRi4igxA9Vrn5a1zTWVoiUKJgoJg3CDnAu1l2nI
wwaunfdCnSFCBVH8LQ55hvCGm7FBF5npgSvIEdwf7dxtXPNm0OYNJjBhS+0lbgiD5IqbALpWTAng
9YH9moAbaK4iyBABNmDN7ymFPUudeaZxOrGrmih6VJPH+Xn/Ou8VJWpIGq+QQiQB4wxacGBpLKYJ
pA4eoQAaWOH7cWJ4dCk574R2Eck+31DsCNGqTiFlbJ9aNKerzsCh0DrGmgKt5gGkCuiiTGJ8pPxI
MwCLaeMaZzEdiO2gStPTqNFpwbeo8tev06zc4uGmqV6U+FACgF1LxWC3OaTVwD0oVRzaucQQGSW4
W0cPxXTXL0TP+pPdWcM/buMf98mIu+0J3Ck5jwlKVAKZHTPtngIwBN2jjCICjX14+aFe89LFzYfv
6Jz2q3dBT075l3uP6Chu3q2ndVkv1vnTyQm9o9piSIAPuKPnzVfXwWgK4WIoCiUD13PNizEKeHhE
wfloohnT3xNHF5Y+VPZkWkfNok9Ni/mRmhm0b5uOtX09dub+T9ImQbTPNmlEFaQDDYzdFeMIesQA
C/BeaYAwa5/KhH2jAzqSf64VOpp2qI9J09MIhGKYHXGjf67Tqv5X+6idDLV7nsxoE4RBJLWfAOGP
mIRywcMIqD9UwoD7nFEhjUz8i2rsRffj348PuhjzHuBqd8b5dTWth7ujONLkC6MMN0wiyaDdZECF
AKoiEC7k38RdWW/kRpJ+1y8xMKCQ9/GYp1uYNtwzsgf7tmBVsbqFbqt7dPR6/Os3IllFMcmskuAt
eIEZlbpIZ0aSmRHfF5cA1YNupoHWR3Q+SDV7OaHL2XdqGSAK+dUQkfYBphepo14QxJLAlUIE1Mtl
SMCZZHzl+b0hRDQnJPkN9y9uqleuTGvly8DKp+HLN9wq/Jojn0IvrktaAUdWXSTaYYJRWanoMiZi
aC5S4uoSZOodTN2+Ca9UixnYOkoEX+6OYPrz7zN8JBi7plQWc8iD0sZrCfoWM2Ki952JPnbCCMMd
ejBkaHtVfm+BJDtw2hAE8ee4mx+G375+H+Y+e447mksBz5HqzjIkIhFwkWPA4LTzQNuE1STlphjL
8RbC8IYwguz3pAiz+QMexDWZHgxSCzg/xmEuiQeaBmoAVJohgN1BcRuN5J+JUJ+tapR6fjE05j+g
gtoh/K+73fD1qJIooBX0agsFRpfb1DGFWSMSM+2sNB28QMOZ59ZT9qpPtYx82h1cLtdSDw2p97Jf
HIxpxOubnwvgBWtQLJ4lgLUI/I4vlkhg5d4B3FLIfSzhnQkENpmwjAqfqTXn3cJl8Lb45dJc9J5t
15i354d40QyiJ4DngMslJlrhJ6p/7xgn2XZUCNCpwXkk7a4jCrAjtQy+vWBw2KUTpC5d1aKbxnrE
EsP/urn793PxUNKipZjBnRx0pnB6RBeSAdvAC8gVtANeSqKVjmb7Jg/WcfS2xMerldxyu7Zp8OXk
aS8b76fw5Q6N/dGPY4oZST5wFcACB8zTw4AuepzRZ2UJ40knqfKFcnhWQtRr2K0tYw824whev/90
9zg5fwQD+4BHloDCIEAKO2owgcp6YHmg2gAMBW+AP2kh/ioqPRPwql4DbSxsS44v58f3vy4Tq1wi
AIGACRS+BOo5g3pWsUtOSK2IAqYoL/NSpskrkTVdezV6rSbz9stNzgsikT2wKgKaRmeOWcogvBOA
TrTn8L9EPGfpQkTiZfZKaNPIFewNnWIcv/cPL7iOEdw9UmrmnMZggomALIAHWWB/gKyFMwKokaZp
AexeBqknpw1NaFa4DqtYt19Qd/PrEokcf0F3RYZtK0CUwNH/LRmcQ2PhlQdBTQw0S89efeXh/elU
n/C+FrgBx3qjlzk+B7f343/unz4Nj3ePtdNbFwNUPgvf4tljznwyCCrQ822YNx2V2WZjpNfk8okv
o2v7di3f2v893VQ/CM1aD4IvInaP/f0Ona7H/aNBfY6OcBIJYJfkOuURnqK7xidFOi+FAZjlE9D5
s96E+cgL0RrH0AybMwHu659vX2LdClCBKMnNpIBPCScyEy874Rh6ywGGuphEJ73QUQWdmKSXs7kv
kpzYlLet0Dgw//XGLO6ARVJSVYn0g+QHf5NDaiylgseP+pNigjIBK5yVTsEmQhILZ1OS5uPWgjUM
1IaiT3R/8K6wlXNF5qyV7GQKcCAMPHmP6WA+AcQF9uIiNRdzrrCGyLThQt0wJOmVVrq7/zw/1weu
yQiG4o2TxBvLMf8Q9JJhCvABKncpcnKZGFBalyBfN3MZKtR5//mqFn/bWJOkx9eAXRqmAIYRiDVp
ZJZifkcgHGPGBtgOz0C6BLwe7uElWd/cE7Oxahkka8jQy2X6xrb/giWz2B+m5Fvt+23xgxRvb0ma
0kIyazrNNT5coO+ee9pppqN0UtkkzP/JBzJXlC1hTqjL1q3VA+CNrPcNgLKWZqozifiBtVCBHA7f
jgGURgLwPg0wAU+s6WwEchyAsATrMY2cvTkP7vV8otVt1cKE5o2FmQn5LOpdgU3bKVVLJOEo4ojA
PfxAJquJBRjENBAAQBipbQfqMWtxGh7djRjokmDhz3wbvv727WF4fCwPWqoiWAmQoduQKAWQEnZ9
9JiWijrRxIhO7wwQI1hiVXzLY17PdYJare6rVzY0dpAclrkCKw2IO4iPB2hUstyHkJnD+jyaMfqL
cWjAUTETePLBCOrYn1eyh4uV6EquAT1+uczBX6MZwEzobxAlvybxTCjmzmI4hGuDtVESy2mCALQE
T4fTy6Clxo2L9TRehVJ9A7s+HhNkp5TAkm0LSotwHXVHCQXqSJOCI0x1R0xS1rrMNblIukOVo3sa
6k631Ms0u8YyLVm8tl9CmKtozhzRMtpOaDg7HN2+VvoAhtyTKAHxwtl5y7GBYdsCw4VaTNvaXf2k
geAwff3y/dpOyAcPAaUBtjrY5kwDun3ghxfJdCoRONxRZGdlTWTqYSoJwL6vJcDk54mwLvmq8Ep6
APkdcD+sTovIo2D66IG1OkectPFSfLUlsKItgYdFXeVhoP7+WKZQMqFAPWgh0OuB2IAFDaSFGowU
saDAGET3piKSafCzi+hrJWhFQ3CrJ6z74/uif5aPWybCPDehsxlltj6BpREKYAPA+2i8z4Fc6nHP
BKhE73ljk/RCwEf1zPv7j+6+//IfoF342PUhiVUXm2SAcXPqVUepKcklrLMmg+m3aPgt0SyKizPG
uUgnHsHsjnrRornoJcs/ZjB+usN3NuYwEoJYB/NXCVbAkpTACGugiQD6EFxHbhXws9cYwVvzwg4S
vLs5n+b47qZa32Ab6xu2S1x7s52bNIZuXSavKVoCoSWlmJGcfUT3FfwwGF8nJgI8okql/KbjNJ/i
hGXenjBnw359qLZsx/b7oRyq9+6DC39fJeXopB3mVHdUYSDCUtF5B4BUKe6VNUrC//8iT+JcwvnS
tpKsLfVW0iWf+/vwsBkevj4WtD3pOWJcTr6j1jjMQs2dD06Cnc4hSZmAA52HScdB21Ifr9biMt0Q
VyxD++HT8/1nsNaHSad0GCnHKlMgcTFo10WKpc80gZJQOsA/M1g3xQxphf8a/KCe5gQ7qG+ql7Nr
bCy5m5JO/g1krL8H3DEpbF0CtQ5MjA8e2ScgCMfQC+AEHA6J+YCRBd5OpF6OtxBGNIQZJtMR/plv
n++eXsJ+xUmbXdIY1gpSJNjjBkuOLMA2Q5UI0WpjYw0T6mEqCRRZO2q2iqqFskDY+PHLwXhhuOpg
xDhgApLgsUSK+eWCeoAsXHc+wnNJTHst/J82YuO1WlyqW+KahV+ptHKacoYUL65tIxViGmAZDmNq
ABGShZOUJAAfw3Q27JxLaT7kQiTbEGkQR6D1Pd5+WEU8sMKGMzD5MSJdNnCkDbzOLonEgxJZa6f/
qojHJN98WTsp18uCL/vjsp7vt1WlgWLwEDHviZpSiZwBzjiCwWjlLWVSiRMHZBqoml6r9Yve6W2/
4MzjAwpf7/d3H58fpjqnQxoRnZKIuHXMWdJFPLicO6x0SrJjGRCY0xIgzPm4RmOeU4VOqxurdfWN
LLxd/xKU2Tz+9hJbL1F+FlwgxLGOcsmwW4gD2cvpVzqKCExDL4ogZ2PUc6t1jHq3k+acJ3qEKofU
H6I1AITC2stvpcCEJcvQIZFApfMowBjBiQAsCCDEADVWNFzOG/0izQnFP12/qtdoWwtfBud/eXh+
fErf+y/P5b25j/OsLVm2kXAGMyyEw0R1Det0gJQw2Y54wLk8sTcFh1sTneCVjTurpe0blc4D3WwX
LUHe3UzJ7Jh3gYcD4BDuLpUzetM7GoD5c0pz50IGQCsyj2D6uYuXScu5OZvwPl2+qtbRMI/wpV50
sLn5+fb54JW149rsGNSJBBC6JwE0EbpoAPt1lgQKzER7JoxK5pXsqmnkU7kUh8sLqU1L6mVx5reH
u/lbv/6A/z5SDaaQWaVECBh7CmoL3fYpsA77w3ZSMUlNEMpacYmX86EWZX5XubRY3joHcmAMPtmr
yxv1yKHSvpgNEw2TPJU2SHnMYbJBhk4CcfdWi2Re6dbxZ8jjJMuZNS+VCCxx01r3pLn/2e/u+vvt
sAgfCUWFYcF2wUUPkB24vidAFqXVYOhdFJ6QC4WPagkq4TVfx1sGfciJKUb4f+7upzgclyW5U5sY
ApcGzGRAZzNLnedWdgRAvRc6eCn0CZP+MlothmAtMSbwPT6Faz89Q2oxBb0AcOIZlzkA4UkAwJUG
pOlU6IBEMGuB5Om4MIP1YAs5GoqlxAdMu/HzD0rzMfMJP/FoZhHBtukuCsGwvZTrrMRQLFJn6ojT
4pUss+PYp5IwD5cruc2+8RrtVi1Uy/vSM3xWLq3ZNUOf9fgLouEA54sYW1pPASDSAmuYXJeIoC5T
YTMTlzPbtTyn3DXze6pV92SNmYaeilnR07c7AMP//dLciOM7QjJEFWgU6uFFcVV6loEiTbA4R6ML
VNBTBU/1gLU4jQTFod8sWxTt+qd+NzyVJNrHbVF8Y6kkl6OvItjsQB7sLoLQiWEhvgJjlUSmRlDg
9Zm+qa8BTBSPE53Waqvb6kVteGNRq4B91da0Toq1KSajQUcA0AZa6rQBgoUFs8UHaIUj1pwjWPOh
a9F2DaWxoVNBxPb52+P1FLXneize5Co5wSXpBPeA1ZzEEmPgI5QoI32OTkexqMiYjVMJsOlbAvS2
aItli/4fjJgKwZ0gjgTQVJzR4uIVgEQSJpVE9N3AFjSu+UjmI1aibBu+o2G7UgCbfvv5+VuVDnAt
x1DP9fi2qJUwuzKd0Fi9ppMCAgq4z/qQKWw/Zeyb+pb4xUzzHTdeq+Tf2TUSH8CKLrbZRC0t6P9D
vY/KESvn4YV6LADzYIg8oDlM00k2kqhHMHdyfzVY5jA00lT2etDarnKNf3zov3262xb/N6biFIew
tdd8fJ7BBB+UEh3B9H0esEKFw9m2Ht605kCAyes86DjH6Zj38Y75KvamoZAwvL/gyu/GniJ1j73M
Bdaj6c7m4rwHZGK8BLPmFbOc6JjNm5qrHAY/lXlfLlZCb1tCb8WkcOJd//H+6+PT3fan4fERe8LW
ma+UkFHFe5I1uuWA03PBwI4FbjthS+0JiX6Z+3d+3FpEtW2IuGpNcgwU7KvugGPAgLKxTobkGEyW
HNQPJkpbbjpngM5Lz3ngxDv3SpuSo6//fJdA17hvtiQ4e5uV/oAvd+poSn//Nh09sAd49NiYjgXb
GnZFFhJ0aY7wlAWVnQI4G0iUQbF284NpuFqInW4JMSyeKwCgfHt8lGO/FJOYCsQCmIYjD7sVCLil
jnVKJGexUSHl591mZcyTbQXy7ULOfUPO/ZTM/MdLJqrElyxYIgEb6ASHwYfgQN2jLyQykaKMUVi2
2Ix/NNJQcQramldOBg//Jsjk3GSlDCvQpKTHMl3AE9Fhmw8NupFxKm2A3UXauVGzoRYiqLUInA+N
IgzEFcU3VHIixm4ZSRvNhQM8ybEGgwcPQJNiIwXifXCeJate1YY48GlNiFcrkblovC2ulgkdhU6F
/tvT8wsVPbR8S8QrsIpYQEmx+ZUHVegBM1pDeASq5vNF2PZcgjP5Koc76jWqxvHleuph8uH+44J+
Ukk9HA3gSUlj3xJA+4aAlswx0sSCsTHyC9HPafJaZGPXIovN0huyGx4/P3399jjrQWhKWUb5REcV
kz4FRrps0GOeGQPChZFXSxx1EqCAJG/rAlYmOhINvOFUM7DVjVf1Gvr1wpSeirbuts+I+mc9Nygc
DlmQDLEaAGhHBb4TPLKWA2rQzDglAIXFsGgHthirkkOte+zBl8OkLfrnWecYM9btgB4PAJANEg4A
psZgpq1H/qGFTBpUhzO1BC+jVJNrvllPrvWyIPYfEaOYssCO4nYMNDOiAS7FlDFuFHLnOVYPYb41
iaDPlbq42+cf8USNaazXtBfrNVn0363c5OuGwEYeYuiaWR8VaBOasedb0tgeQpiOqcwols2PTb7P
q8DXrH19T7WKXjQ0OHx5ssfs9RgnwheFCzn8i5cuh9lEEoIGlGgcahFpAC8CZSCBScGoYdr/JWH1
8Vq9zl1j+/e77aL7yNiLd+xYNMe/nHmgiSoDlsGkN0c8sjPWseS1zJkrOBdvy1s9jn+uF/CibxEK
ultLvyFTHfOBu9zd76czLLDlwOifi4I6KhUADAMczgjbORY4YGEwVgk4TDzPuF9Gvaqnly2ZhoVM
91+f7vazlm/0mo01zUB5hBc5dVk6rMfB7FkJp1woBw9UasrZ2X6i84FrwTaNVz0Yvd9WyuZ7MVnH
xmNjjhJAMAr2G2uOhR3TDwzo3C45FzgFGxIsudgGHrOt2hu4XLuqF2Baq9qt+vQ+fnYPm7unY5Rz
bHkNP4ujgSopgV5oTbASGPicZ5i6STNoWiAa3pzHxYvRTzXdrW5arGJorGK3XxiCsQkQqq3SiWfs
uUUPPbdKnkiiPBkBZt4L2NM+MCB0Gf/iKgVCqqV4Sz/HMvZpjVkuV9IXwL2UHr5cqfzt1x41vSmV
FQh0sQutjRrzwzGwDIzfEfgtWqACkVJLTXpFXBjylKhwqRaTNSDHHlW6qoN9VSvnsQS/9HIWySZm
PHamB5ukgMwZIG9dUo4GCYQl5HRxq/sizanQX8PpaylZ91goXy5fScHc2DD4JZE5waaHBZEueGzC
aCVgeOyJErJjSdOIzaT+NJAfr9Wi9kND1M2ywuv2U/8wJl1zNmau4idaV2s4t8J1DMtDORNArzGs
nJ2kOXrlYnRv6sM6TnDCMTBerATX65xx/LIv8VVMHM3/hf/ZsFvmrgLVDIJreKQYyuIEm7Z7QzpF
4NgmbJHNL/Q3AxYiLMTftMR/Sby9Wda36iRpzLD3tSAlxRlbXQP8pilISpxwRMoLsaFp8krkDV8r
e7plet5N9UP/ADToJQQ2xr8Mlw5DpZ1y2KXbAVi2wefSKlaQmIIw6v+xm+pc6Kt6cc0V96XFzMw7
W6XWHBmThe1WIjnWmgAHAXs+C0zegt+y1J2M1KHiolyerQdsjF4Lqdckle7U5On5/bcv7CXEwIrJ
pRHOJSZ/2IQ9QBLoUmDWHdGYAMVAdJ0XVcezQa7qiWhj9s1UvLr9299mvWyK3RFZGdjIsgMWhSrO
GSzUxiBzkDmmdOiLVvebajmb6NA3lr7nS37+0/DU7w6enkP+N7zXMZhIBPYwTkB1KAYTLcud1fAo
QIzkCTGGJXW5YOJRkhP9mw5Xr+rlrO0mI3TpzUKK/XyHyKr8+QM+Hjxq0AmOdWBAzg9/YkMbhg3y
OJXZgRbRb61s+/XmNCr5dZ7FDeIN603BKFtGGT8MD9h7H8P+8wx9UbxxaAzj//Z2dL2N4sB3foVf
VmqkSwTGGKiUBz5MlE1oTi3t3T0hGmgXbRJ6Cd1u//3NGJIGAklXd7o8pKqZzIyNZ8Yf8+F6ps5s
MbSYzDAkr59gsoI0WSKABYspPnXR00Gox3viFFBp9sHo6BhvG/bHYg0dqdNl25Ubn7y4NTgdch9T
OJnYKyynFDhCFaC8RWB+KozHBSrdN1bFusnraW0Fm1IVLLt2IUhsBKoT6y9VxZd0uV8zGBeW7dvo
gip9rTRYpbvWkMKk4obqUxqo/58KhweNvtLTvD/QyOlTShv5Wz/uB5hZlT5yTXQhE5hEFpWRHnhD
x7TMoc+ZrrpcV0Fpn03deqqWKO3Y61E9YbJmlDwRKzY/PlQyk3sHlzFX0wzY5GESPguYgTnhDx3h
capThxlcb5+rHWFRmqQ6Zqmepi2VcZutizJ7yLO3o1CK6kxZXkLL6zUd5M5H5x+GbxwTNsMkdmzX
MIT7uZXdKZk+s9yGa3TK6NjZQ6O9NzQvyfrIylUJ6nVPYDCPLz3oVFgruVrAh6AQAZdtaLrXyg98
hKNFu0MH23rauqT8kctg1CBZZpWzGIYaSyHCv/LokroBhuWqLt6pGwKMDeZatzWYhr4DX57xmSHd
U+gRoPqp0uT2dJ1PZQoY1j4YrI8g7DrPPwahceH5QzXQYN2JVzO2CAJM0EiZyQPfD4z/KkT8QL7f
1JwcQtBlxwaYLp8O3t67v1d5mekf5Vmk3Vcpt93ARhcLDEQA02J7FqxJmGEZrg3y4rVOkRtoGgxk
Hafp0Pi4Z2CVbJ7z9GNRbMo6iqBQOaaFMFHEHBdMG1jjIRgDGsi8l22XsGMsiiJ+1lVdwiLNn/bB
7Xev6zWMPlYg9ZLVakfWSZqRx3dSlN+yLXnZFiBWOxD0Mtk+ZzKMtvwGVrd+UFUuLZPd9xjMYPyS
p9dEq9qq0rxL+C6za6IeN+6yUiYkrdubhC+hV/8devjnqFcwApIeZk3IN1kXPV0DTfprNJWHkGDB
hePxvQWoxWb1TjDNJj4pnshh73dNoqJMVmOqggyFZJvtcqwhPra1EQ2vGPsyILs3kLcsjYvXMgbW
Xjf7su3pWNMsBDP4l4HyxzYvMQ8C4ED6B8yAaELe4GGZbcY6bIRnVypgPVDC0lZV0xGhcQ3VIAaI
0B0BaBHlVkymixsS/fW7ID2fh+ltdO/MlfHHpw+0fqx4E7KTu2CSy/K43dAaU2fKoSo5mDaYnJXf
ePsHzBqpofL1jnydRuS5ShwMyJdFmnXgtWY9oFcwWGBnsnRQMzBSJ/sf7R8RePNJmmL2AAKcoZP2
0eANlJl0+yIOtpDFZpn1DAWbKaEzny88cv7DzZEe7kGvknSdbwa9wDqdKXeR483I5N659fuxGhwH
7K5Mlt8v0Ce2RYHXhzCWLDiROAOrMxjbulJsKAeln9ORFipx7DuRc4EBqo0MBJ2GzkRcgDUoMBDH
8+nNTPjwgs90i+O4xnEk/ozO49Qw6AZB72+m3sI/z4LBYLDWUr4IJqQ80y2GWGsxWMNCZ/t+Bi9g
/QX5ihaRM7/0YtF3blKB/kZgWr3uGpO8mtwVcW6PeAjaQPkHUEsDBBQAAgAIABeRe0b6crkawSsA
ALaNAAA4ABwAYW5pbWF0aW9ucy8zZC9zdGF0ZS1hdC1lbmQtZXZlbnQtdHJhbnNmb3JtLWNyYXNo
LWxvZy50eHRVVAkAAx7/FVUL/xVVdXgLAAEE9QEAAAQUAAAA5Ftbc9tGsn5e/Ao8yusMNfcLa0+q
cPVqI9taUXZSJ5VigQAo4Zi3gKBj7a8/PQAvAAnS0m7elg8WiRn0fN3T/XX3AL4rl2m+Xg/d3efn
fPJTUT3k6+p+s1jkpfurYJjI35y7pHo6TIPP9eflbDPP19efP95+eh9d//X6+F7nJssXVTEt8nLY
L935nJfrYrk4CMZOsMxy9+F5le8u/qIlkty9+pBUxdf8DSApQax7t4d+91w9LReAlBppfnPu8/Vq
uVgXk9lWxPrJ/ZVi/pvzaQ0K3YSH1QQmjhMmVX79UMz3C1JMBMIMUeUSPcR6SOiAEOMirDB2Po7c
Lur3SerCxV9cggdmINwrwmLG3wCO1bKsWpMJcbzFcvE8X27W7qdPNRAtufE8xlBEMUUiCGOkwiBA
XuhLnygpjIgcxwnKZP2UZ+7DU5knGdzHXDcs1qukSp/c3zf5BsCny/kgWa1m+aAx82BULcvkMX+f
LODf0nGib2m+qgDLzrzRL8HY98KxFwTRaORejW7e+Z9Gb1oT7WaAiX+K7j+M7+4/PkTBw83HD+PY
u7n9dB+5SeXib7j5EJwnKWEJWPTze/c+f4T71+6HPClhzn5w6FiTfX4/9m5vPwbeQ9R2qZYkaeAL
al9I4Iv7q53Gf/rNLRG6Lv9A7uj9/3i3N67rIPSjOx4/RL88uMefYyktsZngjVhqdCP2G4j9ZsUG
H38+7+SDaZnM8z+W5Zfr7f6ur73tWK3heBx6D94FKM3KbSg632pIGbVQ/kA7KHf3n/9NKE7jMC4e
Di/4yzwpFqiqZzoYUM6Kyfp5XeXz8Ze8XOSzQfYMl3Y6/KXZcjWdTjXsKk9I4s6T9Gk8Xz+OqzJZ
uW8hFBzyWkEsI3ovCGRI7tCOjMUSyOT5rAyDJ1hNjHC3E8cQ7V/zclyCK8L95Th9ytMvY2rhUeGw
18qecJ67W9FdmSCRCuzwjsRkfaTukcZaiTzVE9dO3CFervIFCDPUEa+WZeTEtaK2MqgwjoRph10O
4g95Zf3kjJBcCcEomG8cxJ/ubwPYiXw4bP+6an0HwYt19dcf3Nly8bj7104eVWWxeNwPn1x6U9uf
CUe9Fh03ae4eEATgr1VuVVXY0R1h8XKzyJKawXqFCUUk5cxFv34Y7RUqFkX1c1E9vc/ny/I5SFZJ
WlTPw6xYf+n8qDPhb1YLxR3TlzM7n7+0GZLgiVKZ+/PD/XBobwiWi6pczmaQIYerWVJNl+X8BnAU
yaz4V25H82/VlTWZYO5V9w7IO4P5fEgYfeMQ/EoYkkCW7YVR7Je/KhbVD276BAzebF29d1QJeQxl
kK5WQ6Y1ACGvBCLkVPQD6f7uB8OY6MVCqMVCX4mFQdpxLRlayRgk2+/WxgKDNFZHJIRhdhKLpx6m
JpNcTDN3XSVQA4Cv7KkYUuCrOVbnMoFIsuHxez2/zKtNuegj2lXD4x1xbWkTnCZTrN3dxPEfvzdf
amviI8p9gbRsOjGNmm1RhO0VphdzjzXpdhDNt5XKq+1jpKTul/wr1IVQKbatspPds2UdPbiSnBJ3
vJs/nj+W42LxdfmlZhhmdoZ5hUDC5JHAvXkE3ZuHudvi7qKZ+ks63GG9Zs4FD08UYRMbbfFw+HdY
8yGBGvlv9c+Gon9wT380RXz1HH2D3J7C+p1JVswPLYllUlTrtsgfvzeKN7Mfh8MsT2azZQqEXoO6
as2BJLKBcv5xAfUvkIANew6x2QzezFezwdNQSBuhr7RGSkQ+3TLEcHgLq8+29oWWIJkk6xwAp18s
F21WmYXW/NyNxuVy3ndXXMzydUPaCoDuLQ04mWBvak96HU4onF+Gs5jbnuNjWTwWi0P31YChWrlX
F+6uiZNKAMg6AP+RfE1GaVmsgGTLvAegVNlUKOCn8f9+YLBx5mfgqX9aD9Y7748+jCo2HhM93SxS
m5dv4q9foygaT2DTv7QDzb3aTUlmQ8KZeLOPFP7fxpziv01h5qbbRvcPKMRs57/teN1RZWu9K8nR
pKje2C6yTL4ND90n5jrlmnEoectJe4AQnmGWCSgQy7Rzx/aTwEDWNzCxi2TFsKfFhYF10bkFgmBK
oDyF1Vcnq6cG2zt6BqByBTOVejeippkwJsPaTOzOl6YHl5VF8NHANMW6HiAnd1AsrSaEdhZJEkJT
wu0A6+AyMExILYuf2rEZED26C7tIsToyV5Nx3HI6O8JFMLUVVVrSPgODLOd2+VgAWbnB3afmpIU6
UVkuy/pQYnv2sr9TOQ+28/ywmU92p02EO47jF4ukfHZv5sB36+bwob6trvdqYyK3c5Hw6VS5b0/q
xiv8xv2b8cKAUSNRKIRCjPMYaaEjFMRYRSyKuJTRjy85GessybIeHCybTqGUgViCmy3x2rtHT8V8
G2A1HhZyjhljKI4MR0zFHjLYE0hgE2IDexn5cR+ec1K7uDjpwcUJBPNp/qIQm5i8hdnwZ0AGVLwF
fB6NFWMqRD6NDWKxYUgbGSPBGfNloELl6fP2opeONugR1h4byqmeTtMLqawPcsBjTCJfIU+HAFkJ
gnwZMkSJYtQLIwmtRR/kruh+5N05HQW251tdBTLBrBOcFgt9wI0gvvLs5lOPIYYpWN3EFHk84j7l
kUd9/8d//0Bri2nKxWnUTIXOjizd3HmbPybpcy9cJRXR4AyIi0CAnRWEEhgY+TyQBgdYxZfgNoIv
gW5mdKCrGnsHOjTCGT916LPe4WnlM4mlxQoEQJVEPvEw8hhmRoD1Az88g/q8W2wHnQaTTZZSUdzC
ur8ILTZRrmt7UPcKmpIBt5b0Qs584yMRRB5igYqQ0UwiD4MhTWwCT0jAtFmXNu6v7c2tpbQQXB8v
paGeTqbQmLcPaGq2+AbOx6QaUHtD8wUg+BqHWMsQGeZB0ARMIC0x4AhYHIaYqpjZzRzVlcL1bTEp
gZSv450x1tc74f0G2o06XYSTHtgMYJs27Hf2YJsP7EQ6sFg5jwzhfoR8wIxYhAUyHKI88EwkmPFi
T9CLWEFiP0wY6CJM6ClCk1CbYPoPq67kwMB8eyoyIBLAUs64oVgjcDoI6liAiUUQIJ8pI4mM/SjW
F8EehPdhDlrjHejJlJ1CT6aiDhXwouDz+9HdbANdxmizsi3HLiuZASC3HqGAcjjnSMZehBjxwcqa
cESEooIoSk0gLwL/uMoX7277Dd1MLyDAzkPpqJNn+ak6eU6PIj9YzufLxV0CNfbavYKYH0i4x9iN
kD7shBeHkFpj2A0VKGQgrhCRNCCQ+5Xw2WUPT8pJ/yZ43UA4QDgXDIcZXSVz1qckO1LSS9N8lpd1
OU1qd2tdgQugLJQPvk+Vh7xIUnA9CGwIbo2wj2UIiTCIxeXNO0js1+EwfqQB79MgPwqY+rykebqW
l9tNB11wrQyEsHU/KjxsogBIkBLgafimJWwcFj50CSrCURidanBXFl8BU3s7epY6sy09MzvKTbMe
vprm6kg56/dhUeb2pOV5rxUUHwOD68iKgWihQtEoVvAPoxRSfAgkJj0qMYZEaoL4u5G1X6Ffmc6U
rhb5abIAOMdFYVg0LXz5PMrLr0WaN/FkSRhrm0ct02Khke/ZQlpEEfI8oLkQXCzSTBCqwu8mjJ3o
7wbVKZr+W07nOV01aY/uZnLCIrNlOXpepDbvmDrz1H9rVhTSN6AnNBKkoXMNVTFSng0tzbQKL+ce
D1aApsiifLH2ezzn+GQ73NXVpD26bnNXq+nfPrPY0T/lOzeFIiBkoWc91IeSABIZJAAIw1Ab33hE
KlwT5q4qaeRdn5PcxZawPmxAdFmNzXpvU2YXi8dPVbE7MLmC5APIiIlxpKRB2GhAhoHiIOv70Jko
GRkcGSVMC9l5gV1QU3wKipD0xDkOfnuzAKpYQId7RTRvwtz+tTVKGHmCg2NoEkqoUUIfwoMFiEA1
xw2UoJD+X0RfPaudL7GOZzpdVbIe/SgUz5Pa6Oly9TwtQMOdrTEwFq1dIYipCeNYAvtagwuDwes5
MDKNKCMSpES61xW6MrtwBO+Bo4+TXZhPNo+j5/lkWWd0LOvqyib0iPhhBEUrtEsMqmYZc2hSQ+if
QxEoQmPsBeolJm6vcIZVWjO6OmjRp4PZxdhTXsyzZIaS9YLszMrowaxeREkcQzetJNSGxkBZqKCX
iqDpj6MoppTTrh+fCuziMaQHT26OMlSjypaFLK1za1QKDDegth3RXqR9yLp+TGxjx6Cx04FEivmx
4hiwxf5LDNtZpt+ynSkdVaAfPVXFNqnno9G9EnX9YOqWSkKUiQjFRFmKCGPobKCX1r7ALIjAuKH4
D9NTe0YHusHJKXSj1BH0UZ6U6VN9GAA7UGeZ+q/NMsbXoSDQlVLoBZn0MaCPDCKKcBka4Dgu/rzk
ugdyZo92w10lVU8ZUWfSpr+Il4vqvn7HonzeMwq17O0pSJbQsQIhQvZkQaBhV6RG0hgtglCAhsGf
nkK9hzMt332+Xm7KtOlETkF3dU57fNJkaqfzNvFli/V6d4p+JSjdhTuLIYo8DNUS5jYnaG3PHmMU
miCKA848jsWlhNqS24WV9W1Fpncs9CV/nj+W+wRvqzfmeTrUYP4gxtBC+yFDHtTbKKI6Ih6jHjQL
vVDasjogJqSHejIl6pR+cPp1nm7KooK6WNUeLwRXZED4gNY9JwskCQxBkbFZ0yZMIMUYSSnAL0IC
JQm/6BqjrfhzntyMOl2Msge4yY7qpEXzbsuhTCIDBoi1TyISkxDMB00986FVtpeQ5weaQ5L3mOSX
9rQjtovL5D248nTnbCmEeFo+r6rlPrwkafoLZhQLqEaE+2BFjCWCZtBHGIehirEBbOpMtu6K7OLJ
e8qHbKqPcsuHvPI21RM4frO/NZ8FmpBI2jItCiDR+YojjTV0p0qEkvKYUfmijLIV3r+728EO6Jz3
UHEujg9w1qs8T58GoP3y0b48005XtgegdYas/9pzWu37Pos4kpRBboliggz2IbfwyMMhA+qW5M84
SRjVqO77QHW8+nha1wLitGlVGOspbdx7Ofm/dODt2Uo0LuSBo4RGc0QVODPDUFuBJxMkfYoZgV1U
9XFgqzJpy3E6a/UcRCmC86P4mtdvD+zDiw1I04VAHoeOH4zNNCRAxijEllIUQUHKSMRiwvRF0mzL
dboQTslcUQn1J2u7RrLJiuWgWi5nk+W3gWd/PTQ/bNomTdYm1sml8akCVkfC02CzOFDI18D2AZG+
hApP0ji6nNdaws+curRmdJQxk9MUoExKD2Rhj5yCDl0A7XFbKmn7wCQA8mcaClBoVaAKJQKqUEnD
kBKtIhKeoYtjoV1MKevDxI4yQmPgDbjuujHvp0VTEnVsa+tRwgQSwgNKE1Aue6xurKShngojX8Xf
t62VfMGwdvhIg9MWRU3YvoX2b73RoVsyfCAAahgZ5tkOScQeVM/Uowia5QCJUIUKYgj61vg/Onpr
Tf2apyCgf1oHX0etyaSHEiaTfUS2XpDbP6LgBCsF6QPFBkMY+kDeWrIIKepFUM5EYUT6DwMOwo4w
nEafVkwcETOUes3Tsqa5plI0hYIJA8Ig3IBzIfcyDTxs4Lf1XsgzRCg/jL5XQ54peIPtmNNFZnrg
CnIE912+sBtXv/qyfUUHTNiU9hLXBYPkihsfulZMCeD1oPo1PjfQXIXAED42YM2XpMKepc480zid
2FVNZD2qyWN+PrzAfEWJGpDaK6QQsc84gxYcqjQW0Riog4fIhwZWeF4UGx5eIue90C4i2ecbih0h
WlcJUMbuqUV9umoNHAitI6wplNXcB6qALsrExkPKCzUDsJjWrnEWU0tsB1WSnEaNTjK+Q5W+fZtM
ih0ebursRYkHKQCqa6kY7DYHWvXtg1LFoZ2LDZFhjLt5tC2mu34metaf7s8a/nEXvTuQEbfb49tT
ch4RFKsYmB0zbZ8CMATdowxDAo19cPmhXv3Sxc3HF3ROh9W7oKen9Zd9j+gobt5vZlVRLTfp08kJ
vS21xYBAPWCPnrdfbQejKYSLoSiQDFzPNi/GKKjDQwrOR2PNmH5JHF1Yuq3sybSOmlmfmjnmR2pO
oH3bdqzN+59z+9+gtgTRPNukIVVABxoqdpuMQ+gRfSzAe6WBgll7VMbsOx3QkfxzrdDRtLY+JklO
IxCS4eSoNvrnJimrfzWP2slA2+fJjNZB6IdSezEU/CGTkC54EELpD5nQ5x5nVEgjY++iGgfR/fgP
404XY9oDXO3POL+tZ9VgfxRHar4wynDDJJIM2k0GpRBAVQTChUBVD9xMAtIN0baQzuqZOD1BNpk8
fkAUxN99RKT+n7hr643bSNbv+iUBFhT6fnnsayysg3jXycF55cxwbMGK7NXFJ5tff6qaMxSb7BkJ
2UEW2NXIQ6ZZ3eyu+r66yQd4vEgd9YIglgSuFCKgXi5DAs4k4yvr94YQ0ZyQ5Dfcv7ipnrkyrZkv
Ayufh7tvuFX4NUc+hV5cl7QCjqy6SLTDBKMyU9FlTMTQXKTE1SXI1Dt4dPsmvFJNZmDrKBF8uTuC
6S+/z/CRYFhaKIs55EFp47UEfYsZMdH7zkQfO2GE4Q49GDK0vSq/t0CSHThtCIL4c9zND8NvX78P
c589xx3NpYB1pLqzDIlIBFzkGDA47TzQNmE1SbkpxnK8hTC8IYwg+z0pwmz+gIW4JtPCILWA82Mc
5pJ4oGmgBkClGQLYHRS30Uj+mQj12apGqZ8vhsbzD6igdgj/z+1u+HpUSRTQCnq1hQKjy23qmMKs
EYmZdlaaDl6g4cxz6yl71adaRj7tDi6Xa6mHhtR72S8OxjTi9c3PBfCCNSgWzxLAWgR+xxdLJLBy
7wBuKeQ+lvDOBAKbTFhGhc/UmvNu4TJ4W/xyaS56z7ZrzNvzQ7xoBtETwHPA5RITrfAT1b93jJNs
OyoE6NTgPJJ21xEF2JFaBt9eMDjs0glSl65q0U1jPmKJ4X/d3P7ruXgoadFSzOBODjpTOD2iC8mA
beAF5AraAS8l0UpHs32TB+s4elvi49VKbrld2zT4cvK0l433U7i7RWN/9OOYYkaSD1wFsMAB8/Qw
oIseZ/RZWcJ40kmqfKEcnpUQ9Rx2a8vYg804gtfvP90+Ts4fwcA+4JEloDAIkMKOGkygsh5YHqg2
AEPBG+BPWoi/ikrPBLyq50AbE9uS48v58f2vy8QqlwhAIGAChS+Bes6gnlXskhNSK6KAKcrLvJTp
4ZXImq69Gr1Wk3n75SbnBZHIHlgVAU2jM8csZRDeCUAn2nP4XyKes3QhIvHy9Epo08gV7A2dYhy/
9w8vuI4R3D1SauacxmCCiYAsgAdZYH+ArIUzAqiRpmkB7F4GqR9OG5rQrHAd1u1u71B38+sSiRx/
QXdFhm0rQJTA0f8tGZxDY+GVB0FNDDRLz1595eH96VSf8L4WuAHHeqOXOT4Ht/fjv++fPg+Pt4+1
01sXA1Q+C9/i2WPOfDIIKtDzbZg3HZXZZmOk1+TyiS+ja/vjWr61/3u6qV4IzVoLwRcRu8f+fodO
1+P+0aA+R0c4iQSwS3Kd8ghP0V3jkyKdl8IAzPIJ6PxZb8J85IVojWNohs2ZAPf1zx9fYt0KUIEo
yc2kgE8JJzITLzvhGHrLAYa6mEQnvdBRBZ2YpJezuS+SnNiUH1uhcWD+641Z3AGLpKSqEukHyQ/+
JofUWEoFy4/6k2KCMgErnJVOwSZCEgtnU5Lm49aCNQzUhqJPdH/wrrCVc0XmrJXsZApwIAysvMd0
MJ8A4gJ7cZGaizlXWENk2nChbhiS9Eor3d5/mZ/rA9dkBEPxxknijeWYfwh6yTAF+ACVuxQ5uUwM
KK1LkK+buQwV6rz/clWLv23MSdLja8DmElMAwwjEmjQySzG/IxCOMWMDbIdnIF0CXg/38JKsb+6J
2Vi1DJI1ZOjlMn1j299hTSi2pCn5Vvt+W/wgxdtbkqa0kMyaTnONiwv03XNPO810lE4qm4T5j3wg
c0XZEuaEumzdWi0Ab2S9bwCUtTRTnUnED6yFCuRw+HYMoDQSgPdpgAl4Yk1nI5DjAIQlWI9p5OzN
eXCv5xOtbqsmJjRvTMxMyGdRGQ5s2k6pWiIJRxFHBO7hBzJZTSzAIKaBAADCSG07UI9Zi9Pw6G7E
QJcEC3/mj+Hrb98ehsfHstBSFcFKgAzdhkQpgJSw66PHtFTUiSZGdHpngBjBEqviW5Z5/awT1Gp1
Xz2zobGD5LDMFVhpQNxBfDxAo5LlPoTMHNbn0YzRX4xDA46KmcDKByOoY39eyR4uVqIruQb0+OUy
B3+NZgAzob9BlPyaxDOhmDuL4RCuDdZGSSynCQLQEqwOp5dBS40bF/NpvAql+gZ2fTwmyE4pgSXb
FpQW4TrqjhIK1JEmBUeY6o6YpKx1mWtykXSHKkf3NNSdbqmnaXaNaVqyeG2/hDBX0Zw5omW0ndBw
dji6fa30AQy5J1EC4oWz85ZjA8O2BYYLtZi2tbv6SQPBYfp69/3aTsgHDwGlAbY62OZMA7p94IcX
yXQqETjcUWRnZU1k6mEqCcC+ryXA5OeJsC75qvBKegD5HXA/rE6LyKPg8dEDa3WOOGnjpfhqS2BF
WwIPi7rKw0D9/bFMoWRCgXrQQqDXA7EBCxpICzUYKWJBgTGI7k1FJNPgZyfR10rQiobgVk9Y98f3
Rf8sl1smwjw3obMZZbY+gaURCmADwPtovM+BXGq5ZwJUove8sUl6IeCjWvP+/pO77+/+DbQLl10f
klh1sUkGGDenXnWUmpJcwjprMph+i4bfEs2iuDhjnIt0Yglmd9STFs1JL1n+MYPx8y2+szGHkRDE
Opi/SrAClqQERlgDTQTQh+A6cquAn73GCN6aF3aQ4N3N+TTHdzfV/AbbmN+wXeLam+3cpDF06zJ5
TdESCC0pxYzk7CO6r+CHwfg6MRHgEVUq5Tcdp/kjTljm7QlzNuzXh2rLdmy/H8qheu8+uPD3VVKO
TtphTnVHFQYiLBWddwBIleJeWaMk/P8v8iTOJZxPbSvJ2lJvJV3yub8PD5vh4etjQduTniPG5eQ7
ao3DLNTc+eAk2OkckpQJONB5mHQctC318WotLgDftbhiGdoPn5/vv4C1Pjx0SoeRcqwyBRIXg3Zd
pFj6TBMoCaUD/DODdVPMkFb4r8EP6secYAf1TfV0do2NJXdT0sm/gIz194A7JoWtS6DWgYnxwSP7
BAThGHoBnIDDITEfMLLA24nUy/EWwoiGMMNkOsI/88fn26eXsF9x0maXNIa1ghQJ9rjBkiMLsM1Q
JUK02thYw4R6mEoCRdaOmq2iaqEsEDZ+ujsYLwxXHYwYB0xAEixLpJhfLqgHyMJ15yOsS2Laa+H/
tBEbr9XiUt0S1yz8SqVX0ZQzpHhxbRupENMAy3AYUwOIkCycpCQB+Bims2HnXErzIRci2YZIgzgC
re/x44dVxAMrbDgDkx8j0mUDR9rA6+ySSDwokbV2+q+KeEzyzae1k3I9LfiyP07r+X5bVRooBouI
eU/UlErkDHDGEQxGK28pk0qcOCDTQNXjtVq/6J3e9gvOPC5Q+Hq/v/30/DDVOR3SiOiURMStY86S
LuLB5dxhpVOSHcuAwJyWAGHOxzUazzlV6LS6sZpX38jC2/UvQZnN428vsfUS5WfBBUIc6yiXDLuF
OJC9nH6lo4jANPSiCHI2Rv1stY5R73bSnPNEj1DlkPpDtAaAUFh7+a0UmLBkGTokEqh0HgUYIzgR
gAUBhBigxoqGy3mjX6Q5ofin61f1HG1r4svg/C8Pz49P6Xt/91zem/s0z9qSZRsJZzDDQjhMVNcw
TwdICZPtiAecyxN7U3C49aATvLJxZzW1faPSeaCb7aIlyLubKZkd8y7wcAAcwt2lckZvekcDMH9O
ae5cyABoReYRTD938TJpOTdnE96ny1fVPBrmEb7Uiw42Nz9/fD54Ze04NzsGdSIBhO5JAE2ELhrA
fp0lgQIz0Z4Jo5J5JbtqGvlULsXh8kJq05J6WZz57eF2/tavP+C/j1SDKWRWKRECxp6C2kK3fQqs
w4a4nVRMUhOEslZc4uV8qEWZ31UuLaa3zoEcGINP9ur0Rj1yqLQvZsNEwyRPpQ1SHnOYbJChk0Dc
vdUimVe6dfwZ8jjJcmbOSyUCU9y05j1p7n/2u9v+fjsswkdCUWFYsF1w0QNkB67vCZBFaTUYeheF
J+RC4aNagkp4zdfxlkEfcmKKEf6/2/spDsdlSe7UJobApQEzGdDZzFLnuZUdAVDvhQ5eCn3CpL+M
VoshWEuMCXyPq3DtpzWkFlPQCwAnnnGZAxCeBABcaUCaToUOSASzFkiejgszWA+2kKOhWEp8wLQ7
Xf+gNB8zn/ATj2YWEWyb7qIQDNtLuc5KDMUidaaOOC1eyTI7jn0qCfNwuZLb7Buv0W7VQrW87wFU
fZ6VS2t2zdBnPf6CaDjA+SLGltZTAIi0wBom1yUiqMtU2MzE5cx2Lc8pd838nmrWPVljpqGnYlb0
9O32DvvHP73sYDx6QIaoAo1CPbworkrPMlCkCSbnaHSBCnqq4KkesBankaA49Jtli6Jd/9TvhqeS
RPu4LYpvLJXkcvRVBJsdyIPdRRA6MSzEV2CsksjUCAq8PtM39TWAB8Xjg05rtdVt9aQ2vDGpVcC+
amtaJ8XaFJPRoCMAaAMtddoAwcKC2eIDtMIRa84RrPnQtWi7htLY0KkgYvv87fF6itpzPRZvcpWc
4JJ0gnvAak5iiTHwEUqUkT5Hp6NYVGTMxqkE2PQtAXpbtAXcfFe27ku0eioEd4I4EkBTcUaLi1cA
EkmYVBLRdwNb0LjmksxHrETZNnxHw3alADb99svztyod4FqOoZ7r8W1RK+HpynRCY/WaTgoIKOA+
60OmsP2UsW/qW+IXT5rvuPFaJf/OrpH4AFZ0sc0mamlB/x/qfVSOWDkPL9RjAZgHQ+QBzWGaTrKR
RD2CuZP7q8Eyh6GRprLXg9Z2lWv840P/7fPttvi/MRWnOIStvebjegYTfFBKdATT93nAChUOZ9t6
eNOaAwEmr/Og4zNOx7yPd8xnsTcNhYTh/QVXfjf2FKl77GUusB5NdzYX5z0gE+MlmDWvmOVEx2ze
1FzlMPipzPtysRJ62xJ6KyaFE2/7T/dfH59utz8Nj4/YE7bOfKWEjCrek6zRLQecngsGdixw2wlb
ak9I9Mvcv/Pj1iKqbUPEVWuSY6BgX3UHHAMGlI11MiTHYLLkoH4wUdpy0zkDdF56zgMn3rlX2pQc
ff3nuwS6xn2zKcHZ26z0B3y5U0dT+vu36eiBPcCjx8Z0LNjWsCuykKBLc4RVFlR2CuBsIFEGxdrN
D6bhaiF2uiXEsFhXAED543Epx34pJjEViAUwDUcedisQcEsd65RIzmKjQsrPu83KmCfbCuSPCzn3
DTn3UzLzHy+ZqBJfsmCJBGygExwGH4IDdY++kMhEijJGYdliM/7RSEPFR9DWc+Vk8PCPoEzOTVbK
sAJNSnos0wU8ER22+dCgGxmn0gbYXaSdGzUbaiGCWovA+dAowkBcUXxDJSdi7JaRtNFcOMCTHGsw
ePAANCk2UiDeB+dZsupVbYgDn9aEeLUSmYvG2+JqmdBR6FTovz09v1DRQ8u3RLwCq4gFlBSbX3lQ
hR4wozWER6BqPl+Ebc8lOJOvcrijnqNqHF+upx4mH+4/LegnldTD0QCelDT2LQG0bwhoyRwjTSwY
GyO/EP2cHl6LbOxaZLFZekN2w+OXp6/fHmc9CE0pyyif6Khi0qfASJcNeswzY0C4MPJqiaNOAhSQ
5G1dwMqDjkQDbzjVDGx141U9h349MaWnoq3b7TOi/lnPDQqHQxYkQ6wGANpRge8Ej6zlgBo0M04J
QGExLNqBLcaq5FDrHnvw5TBpi/551jnGjHU7oMcDAGSDhAOAqTGYaeuRf2ghkwbV4Uwtwcso1cM1
36wfrvWyIPYfEaOYssCO4nYMNDOiAS7FlDFuFHLnOVYPYb41iaDPlbq42+cf8USNaazntBfrOVn0
363c5OuGwEYeYuiaWR8VaBOasedb0tgeQpiOqcwols2PTb7Pq8DXrH19TzWLXjQ0OHx5ssfs9Rgn
wheFEzn8i5cuh9lEEoIGlGgcahFpAC8CZSCBScGoYdr/JWH18Vo9z11j+/e77aL7yNiLd+xYNMe/
nHmgiSoDlsGkN0c8sjPWseS1zJkrOBdvy1s9jn+uF/CibxEKultLvyFTHfOBu9ze76czLLDlwOif
i4I6KhUADAMczgjbORY4YGEwVgk4TDzPuF9GvaofL1syDQuZqr/D9wNl9JqNNc1AeYQXOXVZOqzH
wexZCadcKAcLKjXl7Gw/0fnAtWCbxqsejN5vK2XzvZisY+OxMUcJIBgF+401x8KO6QcGdG6XnAuc
gg0JllxsA4/ZVu0NXK5d1RMwrVntVn16H7+4h83t0zHKOba8hp/F0UCVlEAvtCZYCQx8zjNM3aQZ
NC0QDW/O4+LF6Kea7lY3LWYxNGax2y8MwdgECNVW6cQz9tyih55bJU8kUZ6MADPvBexpHxgQuox/
5JUCIdVSvKWfYxn7tMYslyvpC+BeSg9frlT+9muPmt6UygoEutiF1kaN+eEYWAbG7wj8Fi1QgUip
pSa9Ii4MeUpUuFSLyRqQY48qXdXBvqqV81iCX3o5i2QTMx4704NNUkDmDJC3LilHgwTCEnK6uNV9
keZU6K/h9LWUrHsslC+Xr6RgbmwY/JLInGDTw4RIFzw2YbQSMDz2RAnZsaRpxGZSfxrIj9dqUfuh
IepmWeH18XP/MCZdczZmruInWldrOLfCdQzLQzkTQK8xrJydpDl65WJ0b+rDOj7ghGNgvFgJrtc5
4/hlX+KrmDia/xf/s2G3zF0FqhkE17CkGMriBJu2e0M6ReDYJmyRzS/0NwMWIizE37TEf0m8vVnW
t+okacyw97UgJcUZW10D/KYpSEqccETKC7Gh6eGVyBu+VvZ0y/S8m+qH/gFo0EsIbIx/GS4dhko7
5bBLtwOwbIPPpVWsIDEFYdR/sZvqXOirenLNGfelxczMO1ul1hwZk4XtViI51poABwF7PgtM3oLf
stSdjNSh4qJcnq0HbIxeC6nXJJXu1OTp+f23O/YSYmDF5NII5xKTP2zCHiAJdCkw645oTIBiILrO
i6rj2SBX9YNo4+mbqXh1+7e/zXrZFLsjsjKwkWUHLApVnDNYqI1B5iBzTOnQF63uN9VyNtGhb0x9
z5f8/Kfhqd8dPD2H/G94r2MwkQjsYZyA6lAMJlqWO6thKUCM5AkxhiV1uWDiUZIT/ZsOV6/q6azt
JiN06c1Civ18i8iq/PkDPh48atAJjnVgQM4Pf2JDG4YN8jiV2YEW0W+tbPv15jQq+XWexQ3iDetN
wShbRhk/DA/Yex/D/vMMfVG8cWgMow+aC5s6I0qHoRJ+gs0Kp8mkDIBFpzcFev6/t2PZTRwJ3v0V
fRkpSAuy+2HsSBz8RAw4rIiT3T0hBzsZawBnwZlM/n6r2gZsY0NGu1ofQHQXVdXt7qp+1KOFUIf1
xDmgUm+DaGmY3lTsT9kGGlKGyzYLMz55cSt02tddDOE0xFZhOiXf8lQPhLfnDz/lxmMDlfYbq2xT
5/U8t4JJqQqaXbviJDYA0Yn5l4rkS0zu1wTXPcN0TTRBlbZWGqzSbaNPYVDpQnUp9dX/T4RDRa2t
9DzuDxTq9Dmmtfitp/sBPixSH9lDNCHzMIgsCiPmO31raAz7rs6ZautMBaF9MXTruViitGWvR1nE
Zc4oeSKWbX+cRDKXewebc1vTBGzyMAifAczAmHD7lufolFGLC501z9UqWJQ6qZZRyuK4ITIWySbL
k8c0ea+4UhRnyvISWl6vMZh3Lhr/cHzjGLAZBrFl2kJ49udWdudkutRyE67WKNGys4dC86BoXqNN
RcsVAeqZ46Ezjyst6FRYK9mar/dBIAIuU2jMacQHruBo0G6RwSbmTqxdUv5IpTOqH62SwlgMXY3l
JMJveXRJbR/dclUb79SFB8oGY62bGgxD14IPR3ymSw8UOiZQWavUuT1f51MZAoY3DwbLIwizjPOP
Tmi657h91ddg3YlXM6bn+xigkfKh7ruuL/4rF/Ej+W5Vc3YIQVctG2C6ej5ae+//Xqd5wk7pWaTe
V6lu2r6JJhboiACqxXQMWJNwYQjbhPniNE6Ra2hqDCQtp+lQ+HRgYB1tX9L4tCgeyjyKIFB1DAsx
xClm2aDaQBv3QRlQX8a9bJqEVbEoivezzOoSZHH6fHBuv3/bbKD3MQOpE63Xe7KJ4oQ8fZAs/5bs
yOsug2m1h4meR7uXRLrR5t9A65YVRebSPNp/X4IaXL6m8S3RirIiNe8KPvPklqjVwn2Sy4CkZXmd
8DX06r9DDz8qrYIekPQwakK6TdroMY0L89doKo8BwYQL1f5dANR8u/4gGGYTa7Jnctz73ZIwy6P1
iKowhwKyS/YpJskemdqABjecf+mR/TvMtyReZm/5Elh72x7ykscjTTMQTOhfesofuzTHOAiAA+kf
MQOiMXmHyjzZjhijxvRGBaxHSkzXaFFUITRSi6IaMUCE5ghAiygLbzyZ35Hwr9890vE8ThbhgzVT
RqenC7SsVpwx2ctdMElletx2aI2rU+WYmB5UGwzOwm68+QduDNRA+XpPvk5C8lIEDgbkqyxOWvAa
0w7QG+gs0DNJ3CsZGKjjw58OVQTefBTHGD2AAGdopF3pvJ4ylWZfxMISMt+uko6u4FMlsGazuUMu
PhhDjwUH0Jso3qTbXic0o1PlPrScKRk/WAu3G63QscPu82j1nZBrHAy0AMb7UrJghd4FWMahb8tM
sYHslG5OEety6VqhdYUBqg0Egk4Ca+xdgRUw7AF0Nrmbei684O4HtuIMsYben+GVDkCnGwR9uJs4
c/cyC4LDi93I+UUwIOWFZnHEWk6DDSx0dh8X8ALWX5hf4Ty0ZuTqmx2IcQH6G4Fh9bavDfJicBeN
UhmIH5AGyj9QSwMEFAACAAgA9ZB7RkLfKNbRLQAAsJwAAC4AHABhbmltYXRpb25zL2FkZGVkLXdo
aWxlLXN1c3BlbmRlZC1jcmFzaC1sb2cudHh0VVQJAAPe/hVV3v4VVXV4CwABBPUBAAAEFAAAAOxb
WY/bSJJ+Xv0KPg1UbVOV9yEYBnh6PG23a1xld2MHgwJFpqq4lkQ1Rbld++s3ktRBSpRcmm4s0JjR
Q+nIZOQXkXF8kWTdlEVqVquxs339bCY/5tWdWVUf14uFKZ1/cKIl/ufgJqke99Pgdf25mK3nZnX9
+cO7T++j6x+uD68dvM3MosqnuSnH/dIHn025yovFXjAaBEVmnLunpdn++IsSrmDO8Kekyr+aK0BS
gljnZgf95ql6LBY1UqH+OfhoVstiscons42I1aPzD4LYPwefVqDQ23C/Gkd4MAiTylzf5fPdggRh
7iLqEulgNUZyjPGIIuW4SCI0+HDrdFG/T1IHfvzFwWikR9wZYhpTdgU4lkVZtSZjPPAWxeJpXqxX
zqdPNRAlmPY8St2IIOLyIIxdGQaB64W+8LEUXPNoMBgEZbJ6NJlz91iaJIPrkOOE+WqZVOmj8+va
rAF8WsxHyXI5M6N5ki/cqp46GETfUrOsAMHWqNEvwb3vhfdeEES3t87w9u2b2+jN56vWTLsHYFk7
8y1V4v7NTfzubjBoVoe1N3DG42eCALStkcYLnM7rv9A31LwwwpJnYoKcn+/i8fivsNJdAnv5qv56
W5X54uFlM/ajefqczNbmJsnLg+F6ifEY3m9KMzXgMeAst1VRmvG4vuZ1jwz4HH2ryiSFea9+/wrO
do3mGqvJy71S75PlpRLPibsrk7xatSW+7hl9jlnQeva6q3lz9fcWa65Lsmz4B5guhQiu/nLlvHAg
CJzhRzO9qcrR41iSqwG+0JtkSgz9jzf9Gb1pt1/D/2zfn277WkEstTPcbR6EMZb6akAujGOFplPk
TIpitjPPV4sqLuxmvbIDr4d/DpNuTPNn8YAu3EZeO0UT3N1equTVgF68vWZCzqu9MpUPu/x5v+vD
Y0QvaxexuCiwxh45o3S5HGOtrgbs0kqiMsJOQKzRfZhOZ/nCwIgHIvM0sXQqSNJHEy2sbbJh7b57
0x1DbNBZA/IL0WUTnEnn5x/b+j4DEqAgEJ6d6xoQCFis6GsKToJAKZ2kiQA/+Tge2wuCYlGVxWwG
LcC4NGCh1iJ3RWB5+qoCOl9v6WpoTcKg3ncvrdFwjq8G8mI0lJl+NPkir/Jklv+vGeaL6qWTPiZl
szE//FDvDIat7gPCKABRlwJJxJT3A+l+PwGG8l4smIAX60uxqERox/JzKxmBZPt5NJ+POQJ2BWR9
lk+yp1k2gj/5xDl8baTJ6XSq5GRi+DRzVlUCvQ6kgl2XgMc17QcBqyfY4vn9F1MuzKwrsy3KJKky
InHu738ryi+/1vNLU61LCxOjmvbtpS2b1qIjri1tgtJkCk3bduL9b782H2prorr4XCQtm050o2Zb
FKY7hcnZdsiadDPozpNF8gDd78X20UIQ54v5CgEDHXHbKlvZPVvW0YNJwSBb32/n388fyvt88bX4
YmweoHprmAsEYioOBO7Mw8nOPPSseRr/Hdn8DKZ53zJQZ04A6fukZxMqUspRu0hByjOL7NXZXzrR
1mVpr5svxdKUCSB7cfKy7lXDC9brK6024hE05vWXD5vFV5Y2CdTT/pw3CudTmXBnM288hg149J8a
WCA+KObLYgEO1VtJ++s9YZAz4nxmbmvPvflw+/aXOh3BwMW0jhsjhNwV1XdFmsw2bhAmVTJJVgbo
SvrFpsps84M9jBr2YavfbQ2BgnZGUgMWiYtJCoBNJ/R5YKvmQ9jG3EW462q5vpiLAJLJZPI8JOC/
i7sumuGzLtz+AD64ADODsZPKPDzVVZo/w8IEX8xiuJmSBD1Pr3xuT9g+lPlDvtifNTYsgtoA+vu7
vNpdBnYWG0Kzx/O35Gtym5b5stpHUQcPTtIpl1CU7v/7Jwoup3+G4vR3m77UNuVFP91W9P4eq+l6
kVp29Tb++jWKovvJrEi/tLOrM9xOSWZjzChvGM1F6VZi2PZ9ugXzzDYLJYvsvjQzA7rWpLwmKRfJ
ZkRlbdmzHIxaL1GsrdOqmmtcVh2EpC2RdeK/z8qGfDCOd3zj+QbQKT6SuDMytjURXyiSA5FpiSyL
ojpAKvkAk4t3SralWlZjtrWRWO0BKb2U05jpCU6D2QCzP5rTsH83Esf/3RQW/4rCCbUKr8z8tySv
7lf5A+SzPnXT7wSJMZhlKXIWyaJYzYxZ2iyJdmqmL16McH8T0pKicZbwCVWgZjYeQx6G0vuYrzaB
Bm25FXw/LcrhfkL6WBaLAgjFuqz74VezAliE/fOyJaYee4VnL0Gz7Wv22ukcbPEDCvH9gpKmUDqc
ydxm1XQ8tib8BKVrFiczqMv71deLHHLQvU3tr3azbyvAlL5fV+bb67+0sf4rGs3qU0l7ItEc4zBs
SeduAVsw+SExeY5+k2S61++vJlnCJqQJdC0P///61VxFOsPPxh7kWq5FDjnJc1TSGTtUCZwgXZf2
XuTtVjm7mFDO8P5+bjW4t7RjjKm6nHWkhuGWk3irp0V6l6xalrIgXjpfizxzhgfIfrgaXr0ejwFZ
+XRT5MDtLTAN9GMnxzYTdHOgchkuCgnl9+HapK1oD8/Ors859AFEsjlquSjnaaX1PoNOiuypTnk7
8nKBJEmSvaTdGQeVW9ZySSJOtXMkqHVPNd3c4v0trx7tPe/NvV7HRoRxhoK5k7y6Gg8cp0y+jZ3d
rsBLIAp/YGByMEDseQ8k0zLtDCRCcEoyMEeZtQcwShAop5FdJMs7I5PpVFhi7pSr3YDVDfh6mgim
7OrLowFu6it6BpRdxClVF3C9ls3+pT4eQFYWRh1YWAmciNQO4B5RymqCySlZ1A4wwwTJJBFKTI2B
VhkGWGeACyOMrAf4kR3VZGoXyZddXJt72E45nR2sDj253ZO0JG2rSMElTybWKoN3xUMOpNsJbj41
zxiQQVSWRVnfl988dbAXOYB+aOn8tJ5Pts9ZWL8a+PkiKZ+ct3PonFbWbTaX1SeA3BrAdTo/Mg0o
nBdHJ4lDdOW80l4YUKKFG3IuXcpY7CquIjeIkYxoFDEhotfPeSaks6REPTgkmk6Z8wIiaXNmYa++
fcznm/Cq8dCQMUQpdeNIM5fK2HM18rjLkQ6RxlhHftyH55TUA1y0DxeFbTruZQnEJsIvYDa8AV0h
/AXg80gsKZWh65NYuzTW1FVaxC5nlPoikKH01Gl7kdG0TObGMsrrzfMjq2tvO3iANT3CigkBl0rP
ZPY+yAGLEY586XoqBMiSY9cXIXUJlpR4YSQw6YXcFd2PvDunrQDmWh0roBS2TnB8cNAHXHPsS89u
PvGoSxEBq+uYuB6LmE9Y5BHfP23rc6buAJ32WJqgiT6wdHPlO/OQpE+9cKWQoB+EEuMBBztLCCUw
sOuzQGgUIBmfg9sIPge6mdGGDu5AjqBTKA7HDn3SOzwlfSqQsFghARApXB97yPUoopqD9QM/PIH6
tFtsBgcNJpsGIaHibI919yNHCgNXsXclnCGhesSsJb2QUV/7Lg8iz6WBjFytqHA9BIbUsQ48LgDT
elXauL+2F7eWUpwzdbiU4gIlUKPaZmmyxTdwPirkiNgLmg8AwVcoREqErqYeBE1AuasEAhwBjcMQ
ERlTu5nNQen1u3xSQlK+jrfGWF1vhfcbaDs66CKc9MCmAFu3Yb+xD3exkZ1IRhYrY5HGzI9cHzC7
NELc1QyiPPB0xKn2Yo+Ts1hBYj9MGOgiTMgxQp0QW2BaCONivchqNg8uN9IwHyMuRlgAWMIo0wQp
F5wOgjrmYGIeBK4P/ERgEftRrM6C3Qvvwxy0xjvQkyk9hp5MeR0q4EXB5/e3N7P1Q764XS/t8eO2
KukRILceISHlMMZcEXuRS7EPVlaYuZhLwrEkRAfiLHB72PrmXb+hm+k5BNhpKB11TGaO1TGGHER+
UMznxeImgc5/5Qwh5kcCrtF2I4QPO+HFIZTWGHZDBtLVEFcuFiTAUPsl9+l5D0/KSf8meN1A2EM4
FQz7GV0lDe1T8rBee9B5z+zNFGNVtO7W+gV+AGWBPvg+kZ7rRYKA60FgQ3ArF/lIhFAIg5if37y9
xH4d9uMHGrA+DcxBwNTPXTbPlZpys+mgC6qVgRC27ke4h3QUQBIkGPI0fFICNg5xnykqIxSF0bEG
N2X+FTC1t6NnqRPb0jOzo9w068lXUyMPlLN+H+Zl3ac/7bQC8jHSqI6sGBItMBTlxhL+UEKgxIeQ
xIRHBEJQSHUQfzeydiv0K9OZ0tXCHBcLgHNYQ8O8Od8vn25N+TVPTRNPNgkjZeuozbSIK9f3LJHm
UeR6HqS5EFwsUpRjIsPvFoyt6O8G1TGa/kuO5w26apIe3fXkKIvMivIW2ndbd3Rdeer3Oity4WvQ
ExoJ3KRzBazYlZ4NLUWVDM/XntbDK8/WfofnVD7ZDHd11WmPrpva1Wr5Z0k1LcpdU0LY1k2BBIQ0
9KyH+kAJoJBBAYAwDJX2tYeFRHXC3LKSRt71KcldbAntwwaJLquxWe9taHa+ePhU5dtj3CEUH0CG
dYwiKbSLtAJkCFIcVH0fOhMpIo0iLbluITstsAtqio5BYZweOcfeb98uIFXYM+MhVqwJc/tuOUoY
eZyBYygcCuAooQ/hQQMXA5tjGigolP9npa+e1U5TrMOZg64qWY9+hE2nk+aUulg+TXPQcGtrBBmL
1K4QxESHcSwg+1qDc43A6xlkZBIRigVIiVSvK3RlduFw1gNHHRa70EzWD7dP80lRV3QkanZlC3qE
/TAC0grtEgXWLGIGTWoI/XPIA4lJjLxAPsfE7RVOZJXWjK4OivfpoLcx9mjyeZbM3GS12J7/DynZ
m9WLCI5j6KalAG6oNdBCCb1UBE1/HEUxIYx0/fhYYBePxj14jD6oUI0qmyxk0zqzRiWQ4UbEtiPK
i5QPVdePsW3sKDR2KhCupH4sGQJssf8cw3aW6bdsZ0pHFZVNj1WBH89EozPkNX/QdUslIMp45MZY
2hQRxtDZQC+tfI5oEIFxQ/47y1N7Rge6RskxdC3lAfRbk5TpY30YADtQV5n63VYZ7auQY+hKCfSC
VPgI0EfaxRIzEWrIcYz/ccV1B+TEHm2Hu0rKHhpRV9Kmv4iLRfXRPOSrCijKNqMQm709CcUSOlZI
iFA9aRAo2BWhXKG14kHIQcPgDy+h3t2Jlu+jWRXrMm06kWPQXZ3THp/UmdzqvCl82WK12p6hDzkh
23CnMUSRh4AtIWZrglL27DF2Qx1EccCoxxA/V1Bbcruwsr6tyNQ2C30xT/OHclfgLXujnqdCBeYP
YgQttB9S1wO+7UZERdijxINmoRdKW1YHxAT3pJ5M8rqk751+ZdJ1mVfAi2Xt8ZwziUeYjUjdc9JA
4EBjN9K2atqCCUkxdoXg4BchBkrCzrrG7Ub8KU9uRgddjKIHuM4OeNLCVFbcnibhEQXEyscRjnEI
5oOmnvrQKtufXM8PFIMi71HBzu1pR2wXlzY9uEy6dbYUQjwtn5ZVsQsvgZv+gmpJA6JczHywIkLC
hWbQdxEKQxkjDdjkiWrdFdnFY3roQzZVB7XlJ1N56+oRHL/Z3zqfBQrjSFiaFgVQ6HzJXIUUdKeS
h4KwmBLxrIqyEd6/u5vBDmjDelKx4YcHOKulMenjCLQvHuzj1O1yZXsAUlfI+t2e0yrf92nEXEEo
1JYoxq5GPtQWFnkopJC6Bf4jThJua1Qf+0B1vPpwWtcC/LhplQipKWncu5j8TzrydtmKNy7kgaOE
WjGXSHBmioBbgSdjV/gEUQy7KOvjwBYzacsZdNbqOYiSGJmD+GrusO7Ci45w04VAHYeOH4xNFRRA
SgnElpTEBUJKcURjTNXZpNmWO+hCOE7mkgjgn7TtGsk6y4tRVRSzSfFt5Nlvd80XW7ZxU7WxdXKh
fSIhq7vcU2CzOJCuryDbB1j4AhieIHF0vq61hJ84dWnN6CijJ8clQOqU7JOFPXIKOukC0h6zVEnZ
GyYBJH+qgIBCqwIsFHNgoYKEIcFKRjg8kS4OhXYxpbQPEz2oCI2B1+C6q8a8nxYNJerY1vJRTLnL
uQcpjQNd9mjdWAlNPBlGvoy/b1sr+Yxh7fCBBsctipzQXQvtv/Nu992SZiMOUMNIU892SDz2gD0T
j7jQLAcuD2UoIYagb41/19Fba+pXk4KA/mkdfB21JpOelDCZ7CKy9S8Tu1sUDCMpoXy4sUYQhj4k
byVo5EriRUBnojDC/YcBe2EHGI6jT0nKDxIzUL3mblnTXBPBG6KgwwBTCDfIuVB7qYI8rOG79V6o
M5hLP4y+xyFPEN5gMzboItM9cDk+gPvGLEzzWM/uYV8wYUPtBaoJg2CSaR+6VkQw4PWA/WqfaWiu
QsgQPtJgzeeUwp6lTtzTOJ7YVY1nPaqJw/ycrHaHMATLEa69QnAe+5RRaMGBpdGIxJA6WOj60MBy
z4tizcJzyXkntItI9PnG//F2ZU1uG0n6Xb9kIibQUffxWKetGXktjzwb+7YBkqDUIbmlaXZ7Pf71
m1kgQRRQZHd4GI6w+yCgqiygKvP78moMW1cSHZ56UBmnqEXxruIDDtKYRAwDWC08qApgUTZb12kX
DQdhCStb46JMs2Erqfp+fWpMvxMnqbZ//Wu/uT/JI2yxXow6MAGArpXm8LYFqFWPgVItgM5lS1XM
pLaj82Hq+XeyMf9+8jX87X367qyMBL4ej15ykWiXdQbNTrjBKADvgD2qGCkQ+3A9qFeSLt7++Arm
dJ69Fnq/xl+YRbQ4Nz88f3m6f/r6vP208tAj1JZ3FPAAup6PPyKDMQyOi2VdUBy2HpIXazXg8Mhg
87FsODevOUdXpp4vdnVbtcxda5kDEYtlboC+HRnrWBn0CzYAOSqIMbbJItOgDgwgdjTGETiiJxJ2
r7IAmI1jKvMXGNBi/EtUaHHbfD2279cnEIzhZoGNfnruH59+H0Pt9M5gPJmzcgh9VMZlAPyRKzAX
IkSA/mAJvXCCM6msyu7qMs5Dt+U/X39Ty7htCK4nH+dvhy9PUyruX2jRF1ZbYbnqFAe6yQEKgaia
wnGhgOpBN9NA6yM6H6SavZzQ5ew7tQwQhfxiiEj7ANOL1FEvCGJJ4EohAurlMiTgTDK+8PxeESKa
E5L8ivsXN9UrV6a18mVg5dPw5RtuFX7HkU+hF9clrYAjqy4S7TDBqKxUdBkTMTQXKXF1CzL1PUzd
vgmvVIsZ2DpKBB/uTmD6828zfCQYu6NUFnPIg9LGawn6FjNiovediT52wgjDHXowZGh7VX5rgSQ7
cNoQBPHnuJsfh1++/jrMffYcdzSXAp4j1Z1lSEQi4CLHgMFp54G2CatJyk0xluMthOENYUTpZYDC
bH6HB3FHpgeD1ALOj3GYS+KBpoEaAJVmCGB3UNxGI/lnItRnqxqlnl8MjfmPqKB2CP/3/W74elJJ
FNAKerWFAqPLbeqYwqwRiZl2VpoOXqDhzHPrKXvRp1pGvuwOLpdrqYeG1HvZLw7GNOLd2x8L4AVr
UCyeJYC1CPyML5ZIYOXeAdxSyH0s4Z0JBDaZsIwKn6k1193CZfC2+OXSXPSebdeYt+fHeNEMoieA
54DLJSZa4XdU/94xTrLtqBCgU4PzSNpdRxRgR2oZfHrD4LBLF0hdelOLbhrrEUsM/8/N/b+ei4eS
Fi3FDO7koDOF0yO6kAzYBl5ArqAd8FISrXQ021d5sE6jtyU+Xa3kltu1TYMPJ0972Xg/hFLjNvlx
TDEjyQeuAljggHl6GNBFjzP6rCxhPOkkVb5RDs9KiHoNu7Vl7BU2QhnB668/3B8m549gYB/wyBJQ
GARIYUcNJlBZDywPVBuAoeAN8CctxJ9FpWcCvqnXQBsL25LTy/nu3T+XiVUuEYBAwAQKXwL1nEE9
q9glJ6RWRAFTlLd5KdPklciarr0avVaTefv5bc4LIpE9sCoCmkZnjlnKILwTgE605/BfIp6zdCMi
cZ69Eto0cgV7Q6cYx2/94xnXMYK7R0rNnNMYTDARkAXwIAvsD5C1cEYANdI0LYDdeZB6ctrQhGaF
67A8efsFdTe/K5HI8Qd0V2TYtgJECRz935LBOTQWXnkQ1MRAs/TsxVce3l1O9QnvaoEbcKw3epnj
c3R7H/798PRpONwfaqe3LgaofC98i2ePOfPJIKhAz7dh3nRUZpuNkV6T2ye+jK7tD2v51v7v6ab6
QWjWehB8EbE79A87dLqe9o8G9Tk6wkkkgF2S65RHeIruGp8U6bwUBmCWT0Dnr3oT5iMvRGscQzNs
rgS47378cI51K0AFoiQ3kwI+JZzITLzshGPoLQcY6mISnfRCRxV0YpLezuaeJbmwKT+0QuPA/Ncb
s7gDFklJVR3SXyQ/+pscUmMpFTx+1J8UE5QJWOGsdAo2EZJYuJqSNB+3FqxhoDYUfaL7o3eFrZwr
MmetZCdTgANh4Ml7TAfzCSAusBcXqbmZc4U1RKYNF+qGIUmvtNL9w+f5uT5yTUYwFG+cJN5YjvmH
oJcMU4APULlLkZPLxIDSugX5ejuXoUKdD5/f1OJvG2uS9PQafum3n6YAhhGINWlklmJ+RyAcY8YG
2A7PQLoEvB7u4SVZ39wTs7FqGSRryNDLZfrGtv+CfaewGWvJt9r32+IHKd7ekjSlhWTWdJprfLhA
3z33tNNMR+mkskmY/8gHMleULWEuqMvWrdUD4I2s9w2AspZmqjOJ+JG1UIEcDt+OAZRGAvA+DTAB
T6zpbARyHICwBOsxjZy9Og/u5Xyi1W3VwoTmjYWZCfksWiIAm7ZTqpZIwlHEEYF7+IJMVhMLMIhp
IACAMFLbDtRj1uI0PLobMdAlwcKv+QM2uHkcDofyoKUqgpUAGboNiVIAKWHXR49pqagTTYzo9M4A
MYIlVsXXPOb1XBeo1eq+emVDYwfJYZkrsNKAuIP4eIBGJct9CJk5rM+jGaO/GIcGHBUzgScfjKCO
/XEle7xYia7kGtDjh8sc/DWaAcyE/gZR8msSz4Ri7iyGQ7g2WBslsZwmCEBL8HQ4vQ1aaty4WE/j
VSjVN7Dr4ZQgO6UElmxbUFqE66g7SihQR5oUHGGqO2KSstZlrslN0h2qHN3LUHe6pV6m2TWWacni
tf0cwlxFc+aIltF2QsPZ4ej2tdIHMOSeRAmIF87Oa44NDNsWGC7UYtrW7uonDQSH6euXX+/shHzw
EFAaYKuDbc40oNsHvniRTKcSgcMdRXZW1kSmHqaSAOz7WgJMfp4I65KvCq+kB5DfAffD6rSIPAqm
jx5Yq3PESRtvxVdbAivaEnhY1FUeB+ofTmUKJRMK1IMWAr0eiA1Y0EBaqMFIEQsKjEF0ryoimQa/
uoi+VoJWNAS3esK6370r+mf5uGUizHMTOptRZusTWBqhADYAvI/G+xzIrR73TIBK9J43NkkvBHyr
nnn/8NE99F/+DbQLH7s+JrHqYpMMMG5OveooNSW5hHXWZDD9Fg2/JZpFcXPGOBfpwiOY3VEvWjQX
vWT5pwzGT/f4zsYcRkIQ62D+KsEKWJISGGENNBFAH4LryK0CfvYSI3htXthRgu/fXk9z/P5ttb7B
NtY3bJe49u12btIYunWZvKNoCYSWlGJGcvYR3VfwxWB8nZgI8IgqlfKrjtN8iguWeXvBnA379aHa
sh3b74dyqN659y78fZWUo5N2mFPdUYWBCEtF5x0AUqW4V9YoCf//SZ7EuYTzpW0lWVvqraRLPvf3
4XEzPH49FLQ96TliXE6+o9Y4zELNnQ9Ogp3OIUmZgANdh0mnQdtSn67W4jLdEFcsQ/vh0/PDZ7DW
x0mndBgpxypTIHExaNdFiqXPNIGSUDrArxmsm2KGtMJ/DX5QT3OBHdQ31cvZNTaW3E1JJ/8CMtY/
AO6YFLYugVoHJsYHj+wTEIRj6AVwAg6HxHzAyAJvJ1Ivx1sIIxrCDJPpCP/IH57vn85hv+KkzS5p
DGsFKRLscYMlRxZgm6FKhGi1sbGGCfUwlQSKrB01W0XVQlkgbPz45Wi8MFx1NGIcMAFJ8Fgixfxy
QT1AFq47H+G5JKa9Fv4PG7HxWi0u1S1xzcKvVPoLTjlDihfXtpEKMQ2wDIcxNYAIycJJShKAj2E6
G3bNpTQfciGSbYg0iBPQ+jV+eL+KeGCFDWdg8mNEumzgSBt4nV0SiQclstZO/1kRj0m++bJ2Uq6X
BR/2p2U9P2yrSgPF4CFi3hM1pRI5A5xxBIPRylvKpBIXDsg0UDW9VusXvdPbfsGZxwcUvj7s7z8e
G22VlFJ+5MynJCJuHXOWdBEPLucOK52S7FgGBOa0BAhzPa7RmOdSodPqxmpdfSMLb9efgzKbwy/n
2HqJ8rPgAiGOdZRLht1CHMheTr/SUURgGnpRBDkbo55brWPUu5001zzRI1Q5pv4QrQEgFNZefioF
JixZhg6JBCqdRwHGCE4EYEEAIQaosaLhdt7oszQXFP90/U29Rtta+DI4//Pj8+Ep4Z9oKO/NfZxn
bcmyjYQzmGEhHCaqa1inA6SEyXbEA87lib0qONya6AKvbNxZLW3fqHQe6Ga7aAny/dspmR3zLvBw
ABzC3aVyRm96RwMwf05p7lzIAGhF5hFMP3fxNmk5b68mvE+X31TraJhH+HDZK+jtjx+ej15ZO67N
jkGdSAChexJAE6GLBrBfZ0mgwEy0Z8KoZF7IrppGvpRLcby8kNq0pF4WZ357vJ+/9bv3+PuJajCF
zColQsDYU1Bb6LZPgQEO17STiklqglDWilu8nPe1KPO7yqXF8tY5kENp4MReXN6oR46V9sVsmGiY
5Km0QcpjDpMNMnQSiLu3WiTzQreOP0IeJ1murHmpRGCJm9a6J839j3533z9sh0X4SCgqDAu2Cy56
gOzA9T0BsiitBkPvovCE3Ch8VEtQCa/5Ot4y6GNOTDHC/3f/MMXhuCzJndrEELg0YCYDOptZ6jy3
siMA6r3QwUuhL5j082i1GIK1xJjA9/gU7vz0DKnFFPQCwIlnXOYAhCcBAFcakKZToQMSwawFkqfj
wgzWgy3kaCiWEh8wdQLnf41le4AhNR8zn/A7Hs0sItg23UUhGLaXcp2VGIpF6kwdcVq8kGV2GvtS
EubxciW32Tdeo92qhWp51wOo+jQrl9bsjqHPevwB0XCA80WMLa2nABBpgTVMrktEUJepsJmJ25nt
Wp5L7pr5PdWqe7LGTENPxazo6ds9gOH/PTc34viOkAxRBRqFenhRXJWeZaBIEyzO0egCFfRSwVM9
YC1OI0Fx6DfLFkXY+383PJUk2sO2KL6xVJLL0VcRbHYgD3YXQejEsBBfgbFKIlMjKPD6TF/V1wAm
iqeJLmu11W31oja8sahVwL5qtlwnxdoUk9GgIwBoAy112gDBwoLZ4gO0whFrrhGs+dC1aLuG0tjQ
qSBi+/ztcDdF7bkeize5Sk5wSTrBPWA1J7HEGPgIJcpIn6PTUSwqMmbjVAJs+pYAvS3aAm7+Urbu
OVo9FYI7QRwJoKk4o8XFKwCJJEwqiei7gS1oXPORzEesRNk2fEfDdqUANv328/O3Kh3gTo6hnrvx
bVErYXZlOqGxek0nBQQUcJ/1IVPYfsrYV/Ut8YuZ5jtuvFbJv7NrJD6AFV1ss4laWtD/x3oflSNW
zsML9VgA5sEQeUBzmKaTbCRRj2Du4v5qsMxhaKSp7PWgtV3lGn/32H/7dL8t/m9MxSkOYWvv+Pg8
gwk+KCU6gun7PGCFCoezbT28ac2BAJOXedBpjssx79Md81XsTUMhYXh/wZW/H3uK1D32MhdYj6Y7
m4vzHpCJ8RLMmlfMcqJjNq9qrnIc/FLmfblYCb1tCb0Vk8KJ9/3Hh68HbK49HA7YE7bOfKWEjCre
k6zRLQecngsGdixw2wlbak9I9Mvcv+vj1iKqbUPEVWuSU6BgX3UHHAMGlI11MiTHYLLkoH4wUdpy
0zkDdF56zgMn3rkX2pScfP3XuwS6xn2zJcHZ26z0B3y4UydT+tu36eiBPcCjx8Z0LNjWsCuykKBL
c4SnLKjsFMDZQKIMirWbH0zD1ULsdEuIYfFcAQDlD6dHOfZLMYmpQCyAaTjysFuBgFvqWKdEchYb
FVJ+3W1WxrzYViB/WMi5b8i5n5KZfz9nokp8yYIlErCBTnAYfAgO1D36QiITKcoYhWWLzfh7Iw0V
p6CteeVk8PCP4U3OTVbKsAJNSnos0wU8ER22+dCgGxmn0gbYXaSdGzUbaiGCWovA+dAowkBcUXxD
JSdi7JaRtNFcOMCTHGswePAANCk2UiDeB+dZsupFbYgDX9aEeLUSmYvG2+JqmdBR6FTovz09n6no
seVbIl6BVcQCSorNrzyoQg+Y0RrCI1A1n2/CtucSXMlXOd5Rr1E1ji/XUw+T9w8fF/STSurhaABP
Shr7lgDaNwS0ZI6RJhaMjZHfiH5Ok9ciG7sWWWyW3pDdcPj89PXbYdaD0JSyjPIdHVVM+hQY6bJB
j3lmDAgXRl4tcdRJgAKSvK4LWJnoRDTwhkvNwFY3vqnX0K8XpvRUtHW/fUbUP+u5gX+WXRYkQ6wG
ANpRge8Ej6zlgBo0M04JQGExLNqBLcaq5FDrHnvw4TBpi/551jnGjHU7oMcDAGSDhAOAqTGYaeuR
f2ghkwbV4UwtwXmUanLNN+vJtV4WxP4UMYopC+wobsdAMyMa4FJMGeNGIXeeY/UQ5luTCPpcqZu7
fX6KF2pMY72mvVivyaL/buUmXzcENvIYQ9fM+qhAm9CMPd+SxvYQwnRMZUaxbH5s8n1dBb5k7et7
qlX0oqHB4cOLPWbvxjgRvihcyPE3XrocZhNJCBpQonGoRaQBvAiUgQQmBaOGaf+nhNXHa/U6d43t
3++2i+4jYy/esWPRHP9y5oEmqgxYBpPeHPHIzljHktcyZ67gXLwub/U0/rVewIu+RSjobi39hkx1
zEfucv+wn86wwJYDo38uCuqoVAAwDHA4I2znWOCAhcFYJeAw8TrjPo/6pp5etmQaFjI9fH26389a
vtE7NtY0A+URXuTUZemwHgezZyWccqEcPFCpKWdX+4nOB64F2zRe9WD0flspm1+LyTo1HhtzlACC
UbDfWHMs7Jh+YEDndsm5wCnYkGDJzTbwmG3V3sDl2pt6Aaa1qt2qT+/hs3vc3D+dopxjy2v4WhwN
VEkJ9EJrgpXAwOc8w9RNmkHTAtHw5jouXox+qeluddNiFUNjFbv9whCMTYBQbZVOPGPPLXrsuVXy
RBLlyQgw817AnvaBAaHLsgNIBoRUS/Gafo5l7Msas1yupC+Aeyk9fLhS+duvPWp6UyorEOhiF1ob
NeaHY2AZGL8j8FO0QAUipZaa9IK4MOQlUeFSLSZrQI49qnRVB/uqVs5jCX7p5SySTcx47EwPNkkB
mTNA3rqkHA0SCEvI6eZW9yzNpdBfw+lrKVn3WCgfLl9JwdzYMPicyJxg08OCSBc8NmG0EjA89kQJ
2bGkacRmUn8YyI/XalH7oSHqZlnh9eFT/zgmXXM2Zq7id7Su1nBuhesYlodyJoBeY1g5O0lz9MrF
6F7Vh3Wc4IJjYLxYCa7XOeP4YV/iq5g4mv8H/9mwW+auAtUMgv9/cVfW2zYOhN/1K/hSIAFWBkmR
OgLkQQdluI6aIHG6u0+GYildoz66ttK0/35nKNmWZMlOscGuH3JQ9MyQ4jWcmW8c6FI0ZVkUQdsD
l5o2hWmrECLbeqecAS0RWuI/dYl/cLwdteNbHSVZFMPYdwTVLs4IdQ3Hb6ZCyagvfCrlO2lDe+YN
kZ+s48WezbhTR1O9SzegBh1MYKX9y7Wkj6ZS0/YRpduHw7IXBrGGihU0UqFw7f8RTbUutNFsXGeL
Uw0xU7udbbjW7DQmD4abtuR4nhvCREDMZ4HOW/BXLB1TRszHhYtZ8mQ8YAf1ppDOsZLKMnt/0/Nj
ueAHEwPXWy6LYF6i84enEANEwVoKmrVJHXSA4iC6E7eijmtEjCYj1sH9aR+8Wk8rCQctfe8Z2y4M
ZGmCFoVLnO9ioDYamUMZR0pVuGhNvKmuyyaWpx1Nf7ba+nmSF2lW3fRU/t/wXktjIhWIYaxA1WFo
TPR4bHoOdAWIoQJKXZcr+/2MiTtJevCbqqdGsznH+yanrH2bhSr2yxxPVjr9gVVOPObiJTjGgYFy
XqXYcFyOAHkWk7EPq4jz1si2x1H/qeSx7sUN4uXHg4Iz3rYy3uUbxN5Hs3/dQ1/o2zjcDKMgdCzh
KdMVGmFIm59gsMJsclUMBxZHvcnQ08Gox3viuKLRbIPsaJjd3tif1ktoSAWX7ZVufNpwK21u2hFC
ODnYKkynFPuKKli8Vey8KYwnAC7dFqv1sinrcW4Fj3PMLcjOBIkNYOnE/Etl8iVL62tS2Mr1Ig9d
ULWvFYNTeuCaHAaVLWnEeUz/uyUcHjTayo9xf6DQ5s8Zb+C3HuwDwilTHwUOupApBJHFxciKQ9N3
XMeMbGHRwLYoLNonoVuPlyXOO3Q9bqVC54zSN2Lr1ffDkiy07hAIETAmQclDED4XhIExEZm+Cm1u
cV9I22rfq9WoGE1WHaPUyrLWknGfL9dF/nmev9ZCKco7ZW2E1uY1C+ZdhM4/At84AjbDIPa9QEoV
vO1kd8ymb1tu12s0SnZo9lDo7Taab+mytsuVAPVWqDCYJ9IedBTOSgGLbRMWRKDlSWaFLXzgGo0W
74412LOylpHy+1wHo8bpLC+dxTDUWE8i/K2vLnkQY1guDdCmLhVsNoi17jEYhpEPP0L5li7dceiZ
QNVToynt8TmfawgY0b4YrK4gvArnH4PQbBVGJo0ZnDvRNOOpOEaARi4cO46iWL5XiPieff9Wc3QJ
wWcdCjCfPe+9vbd/L+ZFbh3Ss+h9n3LbC2IPXSwwEAG2Fi904UwipCsDD+ZL2LpFbpBpCJB33KZD
4dNOgEW6+jLPDodiR+dRhAXVRlgIB6eYH8DWBruxCZsBjzXuZdslrE7FMNSPKqtLss7mz7vg9oeX
5RJ6HzOQhulisSXLNMvJ00+yLv7KN+TbZg3TagsTvUg3X3IdRovpu3cPysylRbr9iim8p9/m2RUp
M2BWyXRn8LPIrwitF27zQgOSVuVNxufI039HHv6ptQp6QPND1IT5Ku/iZ4HG4fwaT+NzQjDhQr1/
76HW7WrxkyDMJj5ZP5O97ndFJusiXVxzCnMoIZt8O8/yVXHtsQFPLoT4cEm2rzDf8my6fimmINrL
SiOAA8PsmjEXq0n7w6Xx+2ZeIA4C0ED+e8pAaEhe4WGRr64x4nx8QYHqnpMFR/iyqMbompZFDWZA
CN0RgBcx7tVwdPuJTP68U6Tn83l0P3n0b4zrw6evavXYCIdkq7VgMtfpcbtrM0HHRlThEGDOdxic
pd94+wvCHdDE+PhAPo4m5EsJHAzEZ+ss76DrjnuqXkBnwT6TZ5eVAAM63H1p94jAm0+zDNEDCEiG
Ttq1zrs0xtrti/hYQm7h0NjTFWJsJP7NzW1ITn/QJSfZVb1Is+V8ddlb2eJj42Hih2MyfPTvo36q
0sYOeyjS2dcz/AnoR3YC432qRfAn6kRdS0DfVpliE90p/ZIOWGJMp5E/8c8IwNlAYtVR4g/VmbqS
gwDT6c3o01hF8IJP9KuN/TqdTtQfkzMdgEE3WPXx0yi8jU6LIAW82KWeXwQBKU80SyDVahos4aCz
+XmCLlD9hfk1uZ34N+Tsmx3IYVn1NwLD6mXbGOTl4C4bRfnASWA1MP4BUEsDBBQAAgAIABeRe0bY
RWxbuysAAMWMAAA2ABwAYW5pbWF0aW9ucy9hZGRpdGl2ZS10cmFuc2Zvcm0tYW5pbWF0aW9ucy1j
cmFzaC1sb2cudHh0VVQJAAMe/xVV7v4VVXV4CwABBPUBAAAEFAAAAORbW3PbRrJ+XvwKPMrrDDX3
C2tPqnD1aiPbWlF2UptKsUAQlHDMW0DQsfbXnx6AFwAEaWk3b4cPFokZ9Hzd0/119wC+K1ZpttkM
3f3n52zyU14+ZJvyfrtcZoX7q2AYq9+cu6R8Ok6Dz/Xn1Xy7yDbXnz/efnofXf/1unuvczPNlmU+
y7Ni2C/d+ZwVm3y1PArGTrCaZu7D8zrbX/xFSyS5e/UhKfOv2RtAUoBY9+4A/e65fFotASk1Uv/m
3Geb9Wq5ySfznYjNk/srxfw359MGFLoJj6sJTBwnTMrs+iFfHBakmAiEGaLKJXqI1ZDTASHKRVhh
7HwcuW3U75PUhYu/uAQPzEC4V4TFjL8BHOtVUTYmE+J4y9XyebHabtxPnyogWnLjeYyhiGKKRBDG
SIVBgLzQlz5RUhgROY4TFMnmKZu6D09FlkzhPua6Yb5ZJ2X65P6+zbYAPl0tBsl6Pc8GtZkHo3JV
JI/Z+2QJ/xaOE31Ls3UJWPbmjX4Jxr4Xjr0giEYj92p0887/NHrTmGg3A0z8U3T/YXx3//EhCh5u
Pn4Yx97N7af7yE1KF3/D9YdgOdOYJWDRz+/d++wR7t+4H7KkgDmHwaFTmcy7vf0YuN1PQxLV8AU1
Lxj44v5qp/GffnOLP9B18cc3d/T+f/4V3buug9CP7nj8EP3ycFGsaYlVlLBaLDW6Eou+7cUGH38+
7+SDWZEssj9WxZfr3f5urr3dWKXheBx6D955KLuVm1D4dKchZbSt4d395/8QilM7jIuHwwv+skjy
JSqrmQ4GlPN8snnelNli/CUrltl8MH2GS3sd/lJvuZrNZjpLUp6QxF0k6dN4sXkcl0Wydt9CKDjk
tYLYlOiDIJAhuUNbMpYrIJPnszIMnmA1McLdTRxDtH/NinEBrgj3F+P0KUu/jKmFR4XDXit7wnnm
7kS3ZYJEKrDDWxKTTUfdjsZaiSzVE9dO3CNerbMlCDPUEa+WZeTEtaJ2MqgwjoRpx10O4g9Zaf3k
jJBMCcEomG8cxJ/ubwPYiWw4bP66anwHwctN+dcf3Plq+bj/104elUW+fDwMn1x6U9mfCUe9Fh03
aeYeEQTgr2VmVVXY0S1h8Wq7nCYVg/UKE4pIypmLfv0wOiiUL/Py57x8ep8tVsVzkKyTNC+fh9N8
86X1o8qEv1ktFHdMX85sff7SZEgxFUpN3Z8f7odDe0OwWpbFaj6HDDlcz5NytioWN4AjT+b5vzM7
mn0rr6zJBHOv2ndA3hksFkPC6BuH4FfCwASybC+M/LD8Vb4sf3DTJ2DweuuqvaNKyC6UQbpeD5nW
AIS8Dkg6kzPRD6T9ux8MY6IXC6EWC30llmkijWvJ0ErGINl+tzYWGKSxKiIhDKcnsXjqYWoyycRs
6m7KBGoA8JUDFUMKfDXH6kwmEEk2PH6v5hdZuS2WfUS7rnm8Ja4pbYLTZIa1u584/uP3+ktlTdyh
3BdIm84mplazKYqwg8L0Yu6xJt0NosWuUnm1fYyU1P2SfYW6ECrFplX2snu2rKUHV5JT4o7388eL
x2KcL7+uvlQMw8zeMK8QSJjsCDyYR9CDeZi7K+4umqm/pMMt1qvnXPDwGcNsYqMtHg7/Dms+JFAj
/636WVP0D+7pj7qIL5+jb5DbU1i/NcmK+aEhsUjyctMU+eP3RvF2/uNwOM2S+XyVAqFXoK4acyCJ
bKGcf1xC/QskYMOeQ2zWgzeL9XzwNBTSRugrraGxyGY7hhgOb2H1+c6+0BIkk2STAeD0i+Wi7Xpq
odU/96NxsVr03RXn82xTk7YCoAdLA04m2JvKk16HEwrnl+HMF7bn+Fjkj/ny2H3VYKhW7tWFuyvi
pBIAshbAfyRfk1Fa5Gsg2SLrAThh6Uwo4Kfxvz4w2DjzM/DUP60H6733Rx9GJRuPiZ5tl6nNyzfx
169RFI0nsOlfmoHmXu2nJPMh4Uy8OUQK///GnMxNd33fH1CX2EZ41wC6o9KWPleSo0levrFNVZF8
Gx6bMcx1yjXjUAEWk+YAwQmR6VRAvVSkrTt2nwQGpn0DE7vINB/2dHwwsMlbt4BPZASqNVh9fbJ6
arC9o2cACjkwU6H3I2qWspROicKp3fnCdAawTjMri+AO4FmKdTVATjShWFpNCG3J0hpPDeN2gDVx
Qd8/mxJSyeKndqwHRI/uwi6SrzvmqgnYLWbzDi6CqS0w0oL2GRhkOberxxxi1w3uPg13RyVRUayK
qkffHUUc7lTOg23EPmwXk/3hC+GO4/j5Mime3ZsFhP+m7sWr26ryJ7H9J3JbF6fZbKbctydl1BV+
4/7NeGHAqJEoFEIhxnmMtNARCmKsIhZFXMrox5ccFDWXlLBDJzjg4mwGmR1iCW62PGTvHj3li12A
VXhYyDlmjKE4MhwxFXvIYE8ggU2IDSEm8uM+POekdnDJPlwSgvmUzinEJiZvYTb8GZABFW8Bn0dj
xZgKkU9jg1hsGNJGxkhwxnwZqFB5+ry96KVOn3awpqdYJxMgnvQCs/dBDniMSeQr5OkQICtBkC9D
hihRjHphJKHS7oPcFt2PvD2npcDuuKelgKKkcoLT3NkH3AjiK89uPvUYYpiC1U1Mkccj7lMeedT3
f/zPz3f2mEx9gNQGmgjcsXR95232mKTPvXCVVESDMyAuAgF2VhBKYGDk80AaHGAVX4JbC74Eup7R
gp7iUxvridGnDn3WOzytfAYxYLECAVAlkU88jDzgOSPA+oEfnkF93i12g06NySZLiRMxPWI9XDRY
E+W6tiVzr6BGH3BrSS/kzDc+EkHkIRaoCBnNJPIwGNLEJvCEBEzbTWHj/tre3FhKC8F1dykN5WUy
gz61eV5RscU3cD4m1YDaG+ovAMHXOMRahsgwD4ImYAJpiQFHwOIwxFTFzG7mqKoUrm/zSQGkfB3v
jbG53gvvN9B+1GkjnPTAZgDbNGG/s+e8fGAn0oHFynlkCPcj5ANmxCIskOEQ5YFnIsGMF3uCXsQK
EvthwkAbYUJPEZqE2gTTf3ZzJQcG5hMs5IBIAEs544ZijcDpIKhjASYWQYB8powkMvajWF8EexTe
hzlojLegJzN2Cj2ZiSpUwIuCz+9Hd/MtFN2j7dpW4PusZAaA3HqEAsrhnCMZexFixAcra8IREYoK
oig1gbwI/OM6W7677Td0PT2HADsPpaVONs1O1cky2on8YLVYrJZ3CdTYG/cKYn4g4R5jN0L6sBNe
HEJqjWE3VKCQgbhCRNKAQO5XwmeXPTwpJv2b4LUD4QjhXDAcZ7SVzFifkqyjpJem2TwrqnKaVO7W
uAIXQFkoH3yfKg95kaTgehDYENwaYR/LEBJhEIvLm3eU2K/DcbyjAe/TIOsETHV8UD9syordpoMu
uFIGQti6HxUeNlEAJEgJ8DR80xI2DgsfugQV4SiMTjW4K/KvgKm5HT1LndmWnpkt5WbTHr6aZaqj
nPX7MC8ye/DwfNAKio+BwVVkxUC0UKFoFCv4h1EKKT4EEpMehXoNEqkJ4u9G1mGFfmVaU9paZKfJ
AuCQjpOFed3RFs+jrPiap1kdT5aEsbZ51DItFhr5ni2kRRQhzwOaC8HFIs0EoSr8bsLYi/5uUJ2i
6b/ldJ7TVpP26G4mJywyXxWj52Vq846pMk/1t2JFIX1I4sAdIanpXENVjJRnQ0szrcLLuceDFaAp
sihfrP0Bzzk+2Q23dTVpj6673NVo+ndH+Hv6p3zvplAEhCz0rIf6UBJAIoMEAGEYauMbj0iFK8Lc
VyW1vOtzktvYEtaHDYhuWmGz3luX2fny8VOZ7w9MriD5ADJiYhwpaRA2GpBhoDjI+j50JkpGBkdG
CdNAdl5gG9QMn4IiJD1xjqPf3iyBKpbQ4V4Rzeswt39tjRJGnuDgGJqEEmqU0IfwYAEiUM1xAyUo
pP8X0VfPaudLrO5Mp63KtEc/ymezSWX0dLV+nuWg4d7WGBiLVq4QxNSEcSyBfa3BhcHg9RwYmUaU
EQlSIt3rCm2ZbTiC98DR3WQXZpPt4+h5MVlVGR3LqrqyCT0ifhhB0QrtEoOqWcYcmtQQ+udQBIrQ
GHuBeomJmyucYZXGjLYOWvTpYPYx9pTli2kyR8lmSfZmZfRoVi+iJI6hm1YSakNjoCxU0EtF0PTH
URRTymnbj08FtvEY0oMnM50MVauyYyFL69walQLDDahtR7QXaR+yrh8T29gxaOx0IJFifqw4Bmyx
/xLDtpbpt2xrSksVPZ2dqgIXL0SjeyWq+sFULZWEKBMRiomyFBHG0NlAL619gVkQgXFD8V+mp+aM
FnSDk1PoRqkO9FGWFOlTdRgAO1BlmeqvzTLG16Eg0JVS6AWZ9DGgjwwiinAZGuA4Lv685HoAcmaP
9sNtJVVPGVFl0rq/iFfL8r565aB4PjAKteztKUiW0LECIUL2ZEGgYVekRtIYLYJQgIbBn55CvYcz
Ld99tllti7TuRE5Bt3VOe3zSTNVe513imy43m/0p+pWgdB/uLIYo8jBUS5jbnKC1PXuMUWiCKA44
8zgWlxJqQ24b1rRvK6Z6z0JfsufFY3FI8LZ6Y56nQw3mD2IMLbQfMuRBvY0iqiPiMepBs9ALpSmr
BWJCeqhnqkSV0o9Ov8nSbZGXUBeryuOF4IoMCB/QqudkgSSBISgyNmvahAmkGCMpBfhFSKAk4Rdd
Y7QTf86T61GnjVH2ADfTTp20rF/1OJZJZMAAsfZJRGISgvmgqWc+tMr2EvL8QHNI8h6T/NKetsS2
cZmsB1eW7p0thRBPi+d1uTqElyR1f8GMYgHViHAfrIixRNAM+gjjMFQxNoBNncnWbZFtPFlP+TCd
6U5u+ZCV3rZ8Asev97fis0ATEklbpkUBJDpfcaSxhu5UiVBSHjMqX5RRdsL7d3c32AKd8R4qzkT3
AGezzrL0aQDarx7tuyTNdGV7AFplyOqvPafVvu+ziCNJGeSWKCbIYB9yC488HDKgbkn+jJOEUYXq
vg9Uy6u709oWEKdNq8JYz2jt3qvJ/6YD78BWonYhDxwlNJojqsCZGYbaCjyZIOlTzAjsoqqOAxuV
SVOO01qr5yBKEZx14mtRPUw/hBcbkLoLgTwOHT8Ym2lIgIxRiC2lKIKClJGIxYTpi6TZlOu0IZyS
uaIS6k/WdI1kO81Xg3K1mk9W3wae/fVQ/7Bpm9RZm1gnl8anClgdCU+DzeJAIV8D2wdE+hIqPEnj
6HJeawg/c+rSmNFSxkxOU4AyKT2ShT1yClp0AbTHbamk7QOTAMifaShAoVWBKpQIqEIlDUNKtIpI
eIYuukLbmFLWh4l1MkJt4C247qY276dlXRK1bGvrUcIEEsIDShNQLnusaqykoZ4KI1/F37etlXzB
sHa4o8Fpi6Im7NBC+7fe6NgtGT4QADWMDPNshyRiD6pn6lEEzXKARKhCBTEEfWv8Xx29NaZ+zVIQ
0D+tha+l1mTSQwmTySEiG++LHR5RcIKVgvSBYoMhDH0gby1ZhBT1IihnojAi/YcBR2EdDKfRpxUT
HWKGUq9+WlY311SKulAwYUAYhBtwLuRepoGHDfy23gt5hgjlh9H3asgzBW+wG3PayEwPXEE6cN9l
S7tx1ZsguzdWwIR1aS9xVTBIrrjxoWvFlABeD6pf43MDzVUIDOFjA9Z8SSrsWerMM43TiW3VTp9T
wUXZ5efj+7xXlKgBqbxCChH7jDNowaFKYxGNgTp4iHxoYIXnRbHh4SVyPghtI5J9vqFYB9GmTIAy
9k8tqtNVa+BAaB1hTaGs5j5QBXRRJjYeUl6oGYDFtHKNs5gaYluokuQ0anQy5XtU6du3ySTf4+Gm
yl6UeJACoLqWisFuc6BV3z4oVRzaudgQGca4nUebYtrrT0XP+rPDWcM/7qJ3RzLidnt8e0rOI4Ji
FQOzY6btUwCGoHuUYUigsQ8uP9SrXrq4+fiCzum4ehv07LT+su8RdeLm/XZe5uVqmz6dnNDbUlsM
CNQD9uh599V2MJpCuBiKAsnA9WzzYoyCOjyk4Hw01ozpl8TRhaWbyp5Ma6k57VMzw7yj5gTat13H
Wr8OubD/K2hHEPWzTRpSBXSgoWK3yTiEHtHHArxXGiiYtUdlzL7TAXXkn2uFOtOa+pgkOY1ASIaT
Tm30z21SlP+uH7WTgbbPkxmtgtAPpfZiKPhDJiFd8CCE0h8yoc89zqiQRsbeRTWOovvxH8edNsa0
B7g6nHF+28zLweEojlR8YZThhkkkGbSbDEohgKoIhAuBqh64mQSkHaJNIa3Vqwjtrj6V3QdEQfzd
R0TKD/6PuCvrjdxI0u/6FftoYEAh7+MxT7cwbbhn2h7sK6uK1S20rO7R0evxr9+IZBXFJLNKgrfg
BWZU6iKdGUlmRnxfXILpReqoFwSxJHClEAH1chkScCYZX3l+bwgRzQlJfsP9i5vqlSvTWvkysPJ5
uPuGW4Vfc+RT6MV1SSvgyKqLRDtMMCorFV3GRAzNRUpcXYJMvYOp2zfhlWoxA1tHieDL3RFMf/l9
ho8Ew0o7WcwhD0obryXoW8yIid53JvrYCSMMd+jBkKHtVfm9BZLswGlDEMSf425+GH77+n2Y++w5
7mguBTxHqjvLkIhEwEWOAYPTzgNtE1aTlJtiLMdbCMMbwgiy35MizOYPeBDXZHowSC3g/BiHuSQe
aBqoAVBphgB2B8VtNJJ/JkJ9tqpR6vnF0Jj/gApqh/C/bnfD16NKooBW0KstFBhdblPHFGaNSMy0
s9J08AINZ55bT9mrPtUy8ml3cLlcSz00pN7LfnEwphGvb34ugBesQbF4lgDWIvA7vlgigZV7B3BL
IfexhHcmENhkwjIqfKbWnHcLl8Hb4pdLc9F7tl1j3p4f4kUziJ4AngMul5hohZ+o/r1jnGTbUSFA
pwbnkbS7jijAjtQy+PaCwWGXTpC6dFWLbhrrEUsM/+vm9t/PxUNJi5ZiBndy0JnC6RFdSAZsAy8g
V9AOeCmJVjqa7Zs8WMfR2xIfr1Zyy+3apsGXk6e9bLyfwt0tGvujH8cUM5J84CqABQ6Yp4cBXfQ4
o8/KEsaTTlLlC+XwrISo17BbW8YebMYRvH7/6fZxcv4IBvYBjywBhUGAFHbUYAKV9cDyQLUBGAre
AH/SQvxVVHom4FW9BtpY2JYcX86P739dJla5RAACARMofAnUcwb1rGKXnJBaEQVMUV7mpUyTVyJr
uvZq9FpN5u2Xm5wXRCJ7YFUENI3OHLOUQXgnAJ1oz+F/iXjO0oWIxMvsldCmkSvYGzrFOH7vH15w
HSO4e6TUzDmNwQQTAVkAD7LA/gBZC2cEUCNN0wLYvQxST04bmtCscB2WsW7vUHfz6xKJHH9Bd0WG
bStAlMDR/y0ZnENj4ZUHQU0MNEvPXn3l4f3pVJ/wvha4Acd6o5c5Pge39+N/7p8+D4+3j7XTWxcD
VD4L3+LZY858Mggq0PNtmDcdldlmY6TX5PKJL6Nr++NavrX/e7qpfhCatR4EX0TsHvv7HTpdj/tH
g/ocHeEkEsAuyXXKIzxFd41PinReCgMwyyeg82e9CfORF6I1jqEZNmcC3Nc/f3yJdStABaIkN5MC
PiWcyEy87IRj6C0HGOpiEp30QkcVdGKSXs7mvkhyYlN+bIXGgfmvN2ZxByySkqpKpB8kP/ibHFJj
KRU8ftSfFBOUCVjhrHQKNhGSWDibkjQftxasYaA2FH2i+4N3ha2cKzJnrWQnU4ADYeDJe0wH8wkg
LrAXF6m5mHOFNUSmDRfqhiFJr7TS7f2X+bk+cE1GMBRvnCTeWI75h6CXDFOAD1C5S5GTy8SA0roE
+bqZy1ChzvsvV7X428aaJD2+Buy1MAUwjECsSSOzFPM7AuEYMzbAdngG0iXg9XAPL8n65p6YjVXL
IFlDhl4u0ze2/R2WSGKHlpJvte+3xQ9SvL0laUoLyazpNNf4cIG+e+5pp5mO0kllkzD/Jx/IXFG2
hDmhLlu3Vg+AN7LeNwDKWpqpziTiB9ZCBXI4fDsGUBoJwPs0wAQ8saazEchxAMISrMc0cvbmPLjX
84lWt1ULE5o3FmYm5LMolAY2badULZGEo4gjAvfwA5msJhZgENNAAABhpLYdqMesxWl4dDdioEuC
hT/zx/D1t28Pw+NjedBSFcFKgAzdhkQpgJSw66PHtFTUiSZGdHpngBjBEqviWx7zeq4T1Gp1X72y
obGD5LDMFVhpQNxBfDxAo5LlPoTMHNbn0YzRX4xDA46KmcCTD0ZQx/68kj1crERXcg3o8ctlDv4a
zQBmQn+DKPk1iWdCMXcWwyFcG6yNklhOEwSgJXg6nF4GLTVuXKyn8SqU6hvY9fGYIDulBJZsW1Ba
hOuoO0ooUEeaFBxhqjtikrLWZa7JRdIdqhzd01B3uqVeptk1lmnJ4rX9EsJcRXPmiJbRdkLD2eHo
9rXSBzDknkQJiBfOzluODQzbFhgu1GLa1u7qJw0Eh+nr3fdrOyEfPASUBtjqYJszDej2gR9eJNOp
ROBwR5GdlTWRqYepJAD7vpYAk58nwrrkq8Ir6QHkd8D9sDotIo+C6aMH1uoccdLGS/HVlsCKtgQe
FnWVh4H6+2OZQsmEAvWghUCvB2IDFjSQFmowUsSCAmMQ3ZuKSKbBzy6ir5WgFQ3BrZ6w7o/vi/5Z
Pm6ZCPPchM5mlNn6BJZGKIANAO+j8T4HcqnHPROgEr3njU3SCwEf1TPv7z+5+/7uP0C78LHrQxKr
LjbJAOPm1KuOUlOSS1hnTQbTb9HwW6JZFBdnjHORTjyC2R31okVz0UuWf8xg/HyL72zMYSQEsQ7m
rxKsgCUpgRHWQBMB9CG4jtwq4GevMYK35oUdJHh3cz7N8d1Ntb7BNtY3bJe49mY7N2kM3bpMXlO0
BEJLSjEjOfuI7iv4YTC+TkwEeESVSvlNx2k+xQnLvD1hzob9+lBt2Y7t90M5VO/dBxf+vkrK0Uk7
zKnuqMJAhKWi8w4AqVLcK2uUhP//RZ7EuYTzpW0lWVvqraRLPvf34WEzPHx9LGh70nPEuJx8R61x
mIWaOx+cBDudQ5IyAQc6D5OOg7alPl6txQXguxZXLEP74fPz/Rew1odJp3QYKccqUyBxMWjXRYql
zzSBklA6wD8zWDfFDGmF/xr8oJ7mBDuob6qXs2tsLLmbkk7+DWSsvwfcMSlsXQK1DkyMDx7ZJyAI
x9AL4AQcDon5gJEF3k6kXo63EEY0hBkm0xH+mT8+3z69hP2Kkza7pDGsFaRIsMcNlhxZgG2GKhGi
1cbGGibUw1QSKLJ21GwVXbaOQNj46e5gvDBcdTBiHDABSfBYIsX8ckE9QBauOx/huSSmvRb+Txux
8VotLtUtcc3Cr1Ra90w5Q4oX17aRCjENsAyHMTWACMnCSUoSgI9hOht2zqU0H3Ihkm2INIgj0Poe
P35YRTywwoYzMPkxIl02cKQNvM4uicSDEllrp/+qiMck33xZOynXy4Iv++Oynu+3VaWBYvAQMe+J
mlKJnAHOOILBaOUtZVKJEwdkGqiaXqv1i97pbb/gzOMDCl/v97efnh+mOqdDGhGdkoi4dcxZ0kU8
uJw7rHRKsmMZEJjTEiDM+bhGY55ThU6rG6t1NbpFwJcvQZnN428vsfUS5WfBBUIc6yiXDLuFOJC9
nH6lo4jANPSiCHI2Rj23WseodztpznmiR6hySP0hWl9js+H/OvxWCkxYsgwdEglUOo8CjBGcCMCC
AEIMUGNFw+W80S/SnFD80/Wreo22tfBlcP6Xh+fHp/S9v3su7819mmdtybKNhDOYYSEcJqprWKcD
pITJdsQDzuWJvSk43JroBK9s3Fktbd+odB7oZrtoCfLuZkpmx7wLPBwAh3B3qZzRm97RAMyfU5o7
FzIAWpF5BNPPXbxMWs7N2YT36fJVtY6GeYQvl72Cbn7++HzwytpxbXYM6kQCCN2TAJoIXTSA/TpL
AgVmoj0TRiXzSnbVNPKpXIrD5YXUpiX1sjjz28Pt/K1ff8B/H6kGU8isUiIEjD0FtYVu+xRYh/1h
O6mYpCYIZa24xMv5UIsyv6tcWixvnQM5MAaf7NXljXrkUGlfzIaJhkmeShukPOYw2SBDJ4G4e6tF
Mq906/gz5HGS5cyal0oElrhprXvS3P/sd7f9/XZYhI+EosKwYLvgogfIDlzfEyCL0mow9C4KT8iF
wke1BJXwmq/jLYM+5MQUI/w/t/dTHI7LktypTQyBSwNmMqCzmaXOcys7AqDeCx28FPqESX8ZrRZD
sJYYE/gen8K1n54htZiCXgA48YzLHIDwJADgSgPSdCp0QCKYtUDydFyYwXqwhRwNxVLiA6bd+PkH
pfmY+YSfeDSziGDbdBeFYNheynVWYigWqTN1xGnxSpbZcexTSZiHy5XcZt94jXarFqrlfQ+g6vOs
XFqza4Y+6/EXRMMBzhcxtrSeAkCkBdYwuS4RQV2mwmYmLme2a3lOuWvm91Sr7skaMw09FbOip2+3
d9hO/ellB+PRAzJEFWgU6uFFcVV6loEiTbA4R6MLVNBTBU/1gLU4jQTFod8sWxTt+qd+NzyVJNrH
bVF8Y6kkl6OvItjsQB7sLoLQiWEhvgJjlUSmRlDg9Zm+qa8BTBSPE53Waqvb6kVteGNRq4B91da0
Toq1KSajQUcA0AZa6rQBgoUFs8UHaIUj1pwjWPOha9F2DaWxoVNBxPb52+P1FLXneize5Co5wSXp
BPeA1ZzEEmPgI5QoI32OTkexqMiYjVMJsOlbAvS2aAu4+a5s3Zdo9VQI7gRxJICm4owWF68AJJIw
qSSi7wa2oHHNRzIfsRJl2/AdDduVAtj02y/P36p0gGs5hnqux7dFrYTZlemExuo1nRQQUMB91odM
YfspY9/Ut8QvZprvuPFaJf/OrpH4AFZ0sc0mamlB/x/qfVSOWDkPL9RjAZgHQ+QBzWGaTrKRRD2C
uZP7q8Eyh6GRprLXg9Z2lWv840P/7fPttvi/MRWnOIStvebj8wwm+KCU6Aim7/OAFSoczrb18KY1
BwJMXudBxzlOx7yPd8xXsTcNhYTh/QVXfjf2FKl77GUusB5NdzYX5z0gE+MlmDWvmOVEx2ze1Fzl
MPipzPtysRJ62xJ6KyaFE2/7T/dfH59utz8Nj4/YE7bOfKWEjCrek6zRLQecngsGdixw2wlbak9I
9Mvcv/Pj1iKqbUPEVWuSY6BgX3UHHAMGlI11MiTHYLLkoH4wUdpy0zkDdF56zgMn3rlX2pQcff3n
uwS6xn2zJcHZ26z0B3y5U0dT+vu36eiBPcCjx8Z0LNjWsCuykKBLc4SnLKjsFMDZQKIMirWbH0zD
1ULsdEuIYfFcAQDlj8dHOfZLMYmpQCyAaTjysFuBgFvqWKdEchYbFVJ+3m1WxjzZViB/XMi5b8i5
n5KZ/3jJRJX4kgVLJGADneAw+BAcqHv0hUQmUpQxCssWm/GPRhoqTkFb88rJ4OHfBJmcm6yUYQWa
lPRYpgt4Ijps86FBNzJOpQ2wu0g7N2o21EIEtRaB86FRhIG4oviGSk7E2C0jaaO5cIAnOdZg8OAB
aFJspEC8D86zZNWr2hAHPq0J8WolMheNt8XVMqGj0KnQf3t6fqGih5ZviXgFVhELKCk2v/KgCj1g
RmsIj0DVfL4I255LcCZf5XBHvUbVOL5cTz1MPtx/WtBPKqmHowE8KWnsWwJo3xDQkjlGmlgwNkZ+
Ifo5TV6LbOxaZLFZekN2w+OXp6/fHmc9CE0pyyif6Khi0qfASJcNeswzY0C4MPJqiaNOAhSQ5G1d
wMpER6KBN5xqBra68apeQ79emNJT0dbt9hlR/6znBoXDIQuSIVYDAO2owHeCR9ZyQA2aGacEoLAY
Fu3AFmNVcqh1jz34cpi0Rf886xxjxrod0OMBALJBwgHA1BjMtPXIP7SQSYPqcKaW4GWUanLNN+vJ
tV4WxP4jYhRTFthR3I6BZkY0wKWYMsaNQu48x+ohzLcmEfS5Uhd3+/wjnqgxjfWa9mK9Jov+u5Wb
fN0Q2MhDDF0z66MCbUIz9nxLGttDCNMxlRnFsvmxyfd5Ffiata/vqVbRi4YGhy9P9pi9HuNE+KJw
IYd/8dLlMJtIQtCAEo1DLSIN4EWgDCQwKRg1TPu/JKw+XqvXuWts/363XXQfGXvxjh2L5viXMw80
UWXAMpj05ohHdsY6lryWOXMF5+JteavH8c/1Al70LUJBd2vpN2SqYz5wl9v7/XSGBbYcGP1zUVBH
pQKAYYDDGWE7xwIHLAzGKgGHiecZ98uoV/X0siXTsJCp+rN0P1BGr9lY0wyUR3iRU5elw3oczJ6V
cMqFcvBApaacne0nOh+4FmzTeNWD0fttpWy+F5N1bDw25igBBKNgv7HmWNgx/cCAzu2Sc4FTsCHB
kott4DHbqr2By7WregGmtardqk/v4xf3sLl9OkY5x5bX8LM4GqiSEuiF1gQrgYHPeYapmzSDpgWi
4c15XLwY/VTT3eqmxSqGxip2+4UhGJsAodoqnXjGnlv00HOr5IkkypMRYOa9gD3tAwNCl/FvnlIg
pFqKt/RzLGOf1pjlciV9AdxL6eHLlcrffu1R05tSWYFAF7vQ2qgxPxwDy8D4HYHfogUqECm11KRX
xIUhT4kKl2oxWQNy7FGlqzrYV7VyHkvwSy9nkWxixmNnerBJCsicAfLWJeVokEBYQk4Xt7ov0pwK
/TWcvpaSdY+F8uXylRTMjQ2DXxKZE2x6WBDpgscmjFYChseeKCE7ljSN2EzqTwP58Votaj80RN0s
K7w+fu4fxqRrzsbMVfxE62oN51a4jmF5KGcC6DWGlbOTNEevXIzuTX1YxwlOOAbGi5Xgep0zjl/2
Jb6KiaP5v/E/G3bL3FWgmkFwDY8UQ1mcYNN2b0inCBzbhC2y+YX+ZsBChIX4m5b4L4m3N8v6Vp0k
jRn2vhakpDhjq2uA3zQFSYkTjkh5ITY0TV6JvOFrZU+3TM+7qX7oH4AGvYTAxviX4dJhqLRTDrt0
OwDLNvhcWsUKElMQRv0/dlOdC31VL6654r60mJl5Z6vUmiNjsrDdSiTHWhPgIGDPZ4HJW/BblrqT
kTpUXJTLs/WAjdFrIfWapNKdmjw9v/92x15CDKyYXBrhXGLyh03YAySBLgVm3RGNCVAMRNd5UXU8
G+Sqnog2Zt9Mxavbv/1t1sum2B2RlYGNLDtgUajinMFCbQwyB5ljSoe+aHW/qZaziQ59Y+l7vuTn
Pw1P/e7g6Tnkf8N7HYOJRGAP4wRUh2Iw0bLcWQ2PAsRInhBjWFKXCyYeJTnRv+lw9apeztpuMkKX
3iyk2M+3iKzKnz/g48GjBp3gWAcG5PzwJza0Ydggj1OZHWgR/dbKtl9vTqOSX+dZ3CDesN4UjLJl
lPHD8IC99zHsP8/QF8Ubh8Yw+qC5sKkzonQYKuEn2KxwmkzKAFh0elOgpzHRieyJ9Y1X9Rr+t7cj
200cCb77K/plpCAtyO4LHIkHn4gBhxVxsrtPloOdjDWAs+BMJn+/VW1z2BjIaFfrBxDdRVV1u6ur
jzpES8NkU7E/5StoSBUu2yzN+NTFrZC0K10M4dTHVmE6Jd/ydA8mb8/vf8qNxwYq7TdW+arO62lu
BZNSHTS7ccVJrAdTJ+ZfKpMvMbVfE1x6A9M10QRV2VoZsEq3B10Kg0oK3aXU1/+/KRwqam2lp3F/
oFDS54TW4rce7gd4v0x9ZPfRhMzDILI4GTHf6Vr9Qb/rSs50WzIdJu2LoVtPpyVKW/Z6lMVc5YxS
J2L5+sdhSuZq72BzbhuGgE0eBuEbADMwJtyu5TmSMmpxIVnzXO0Ii1Yn1TJKWZI0pox5usqL9DFL
349cKcozZXUJra7XGMidi8Y/HN84BmyGQWyZthCe/bmV3SmZc2q5CVdrlGjZ2UOhuVM0r/HqSMuV
AeqZ46Ezj6ss6HRYK9mGL7swIQIuUxjMacQHPsLRoN0yB5ssaVxS/siUM6ofL9LSWAxdjZUQ4bc6
uqS2j265uo136sIDZYOx1k0DhqFrwYcjPtOlOwpnBKiq1ercnq7zqQoBw5sHg9URhFnF+UcnNOk5
blf3DVh34tWM6fk+BmikvC991/XFf+Uivid/XtWcHELQRcsGmC6e99be27+XWZGyQ3oWpfd1Kk3b
N9HEAh0RQLWYzgDWJFwMhG2CvDiNU+QamhoDactpOhQ+7RhYxuuXLDksivsqjyJMqBLDQvRRxCwb
VBto4y4oA+qruJdNk7BjLJrm/ayyugR5kj3vnNvv31Yr6H3MQOrEy+WWrOIkJU8fJC++pRvyuslB
rLYg6EW8eUmVG23xDbRuVVFmLi3i7fcI1GD0miW3xCjLytS8C/gs0luiHxdu00IFJK3K64Svodf/
HXr4cdQq6AFFD6MmZOu0jR4zuGC/RlN7DAgmXDju3zlAzdbLD4JhNrEmfyb7vd8tCfMiXg6pDjIU
kE26zTBn9NA0ejS44fxLh2zfQd7SJMrfighYe1vv0nQnQ8MYIJiQXzraH5uswDgIgAPp7zEDohF5
h8oiXQ8ZaOrJjQ5Y95SYNGRZdERoWEHViAEiNEcAWkSbe6Px7I6Ef/3ukTPP43gePlhTbXh4zoFW
1ZozIlu1CyaZSo/bDm1wfaLt87SDaoPBWdqNN//ABz090L7ek6/jkLyUgYMB+SJP0ha8g8kZ0Bvo
LNAzadKpGOjpo92fdlUE3nycJBg9gABnaKR91HkdbaLMvoiFJWS2XqRnuoJPtMCaTmcOufgYutFj
wQ70Jk5W2bpzFprRiXYfWs6EjB6suXserZDYYfdFvPhOrjzmgAKvj0GkWLBC7wIs49C3VabYQHXK
eU57RqBFkWuF1hUGqNETCDoOrJF3BVZQYCCKpuO7iefCC77QLIn9GkWh92d45RWg0w2CPtyNnZl7
mQXBobNWSr4IBqS80CyOWCsxWMFCZ/NxAS9g/QX5CmehNb32YtF2blSC/kZgWL1ta4O8HNxlo3TW
kwHMBto/UEsDBBQAAgAIABeRe0YiIvPZxisAALaNAAA4ABwAYW5pbWF0aW9ucy9hbmltYXRpb24t
YWRkLWV2ZW50cy1pbi1oYW5kbGVyLWNyYXNoLWxvZy50eHRVVAkAAx7/FVX9/hVVdXgLAAEE9QEA
AAQUAAAA5Ftbc9tGsn5e/go8yusMNfcLa0+qBjevNrKtFWUndVIpFgiCEo55Cwg61v760wPwApAg
Le3mbflgkZhBz9c93V93D+C7Yplm6/XA231+zsY/5eVDti7vN4tFVni/CoYJ+613l5RPh2nwuf68
nG3m2fr688fbT++j679eH9/bu5lkizKf5lkx6Jbe+5wV63y5OAjGvWA5ybyH51W2u/iLlkhy7+pD
UuZfszeApACx3t0e+t1z+bRcAFJqpP6td5+tV8vFOh/PtiLWT96vFPPfep/WoNBNeFhNYNLrhUmZ
XT/k8/2CFBOBMENUeUQPsBoI3afMeAgrjHsfh14b9fsk9eDiLx7BfdMX3hVhMeNvAMdqWZSNyYT0
7GK5eJ4vN2vv06cKiJbcWMsYiiimSARhjFQYBMiGvvSJksKIqNfrBUWyfsom3sNTkSUTuI95Xpiv
V0mZPnm/b7INgE+X836yWs2yfm3m/rBcFslj9j5ZwL9Frxd9S7NVCVh25o1+CUa+DUc2CKLh0Lsa
3rzzPw3fNCa6zQAT/xTdfxjd3X98iIKHm48fRrG9uf10H3lJ6eFvuP4QbIgkLAGLfn7v3WePcP/a
+5AlBczZDw56zmSf34/s7e3HwD5ETZdqSMIavqDmhQS+eL+6afqn37wCoeviD+QN3/+Pvb3xvB5C
P3qj0UP0y4N3/DmW0hDLprwWS43mldhvIPabExt8/Pm8k/enRTLP/lgWX663+7u+ttuxSsPRKLQP
9gKUeuUGFE6zrYaUUQflD7SDcnf/+d+E0qsdxsODwQV/mSf5ApXVzB4GlLN8vH5el9l89CUrFtms
P3mGSzsd/lJvuZpOpzpLUp6QxJsn6dNovn4clUWy8t5CKPTIawWxCdF7QSBD8h5tyVgsgUyez8ow
eIzV2AhvO3EE0f41K0YFuCLcX4zSpyz9MqIOHhU99lrZY84zbyu6LRMkUoF7vCUxWR+pe6SxViJL
9dhzE3eIl6tsAcIM7YlXyzJy7DlRWxlUmJ6EaYddDuIPWen85IyQTAnBKJhvFMSf7m8D2IlsMGj+
ump8B8GLdfnXH7zZcvG4+9dNHpZFvnjcD59celPZn4meei06btLMOyAIwF/LzKmqcE+3hMXLzWKS
VAzWKUwoIilnHvr1w3CvUL7Iy5/z8ul9Nl8Wz0GyStK8fB5M8vWX1o8qE/7mtFC8Z7pyZuvzlwZD
apVkSk28nx/uBwN3Q7BclMVyNoMMOVjNknK6LOY3gCNPZvm/MjeafSuvnMkE867ad0De6c/nA8Lo
mx7Br4RhCGTZThj5fvmrfFH+4KVPwOD11lV7R5WQx1D66Wo1YFoDEPJKIFpORTeQ9u9uMIyJTiyE
Oiz0lVhkIo3nyNBJxiDZfXc2FhiksSoiIQwnJ7F46mFqPM7EdOKtywRqAPCVPRVDCnw1x+pMJhBJ
Ljx+r+YXWbkpFl1Eu6p5vCWuKW2M02SKtbebOPrj9/pLZU18RLkvkDaZjk2tZlMUYXuF6cXc40y6
HUTzbaXyavsYKan3JfsKdSFUik2r7GR3bFlLD64kp8Qb7eaP5o/FKF98XX6pGIaZnWFeIZAweSRw
bx5B9+Zh3ra4u2im7pIOt1ivnnPeww0hhI1dtMWDwd9hzYcEauS/VT9riv7BO/1RF/Hlc/QNcnsK
67cmOTE/NCQWSV6umyJ//N4o3sx+HAwmWTKbLVMg9ArUVWMOJJENlPOPC6h/gQRc2HOIzXrwZr6a
9Z8GQroIfaU1JBHZdMsQg8EtrD7b2hdagmScrDMAnH5xXLRZTRy0+uduNC6W86674nyWrWvSVgB0
b2nAyQR7U3nS63BC4fwynPnc9Rwfi/wxXxy6rxoM1cq7unB3RZxUAkDWAviP5GsyTIt8BSRbZB3E
OSGTqVDAT6P//cBg48zPwFP/dB6sd94ffRiWbDQierpZpC4v38Rfv0ZRNBrDpn9pBpp3tZuSzAaE
M/FmHyn8v405xX+bwsxLt43uH1CIuc5/2/F6w9LVeleSo3FevnFdZJF8Gxy6T8x1yjXjUPIW4+YA
wSnjYiKgQCzS1h3bTwIDk66BsVtkkg86WlwYWOetWyAIpgTKU1h9dbJ6arC7o2MAKlcwU6F3I2Ap
MU2h9yWp2/nCdOBysgg+Gpim0DG7AXJyB8XSaUJoa5FEEAI5zw2wJi7C1HRCSCWLn9qxHhAdugu3
SL46MledcbxiOjvCRTB1FVVa0C4Dg6ze7fIxB7LygrtP9UmL7EVFsSyqQ4nt2cv+TtV7cJ3nh818
vDttIrzX6/n5IimevZs58N26PnyobqvqPeaMibzWxTFYR3lvT+rGK/zG+5uxYcCokSgUQiHGeYy0
0BEKYqwiFkVcyujHl5yMtZacjDtwTMbTKZQyEEtwsyNed/fwKZ9vA6zCw0LOMWMMxZHhiKnYIoOt
QAKb0BnfRH7cheec1DauTHTggqp2Oj3NXxRiE5O3MBv+9EmfireAz9JYMaZC5NPYIBYbhrSRMRKc
MV8GKlRWn7cXvXS0QY+wTk6xToyeTtMLqawLcsBjTCJfIatDgKwEQb4MGaJEMWrDSEJr0QW5Lbob
eXtOU4Hd+VZLAcOmzDnBabHQBdwI4ivrNp9ahhimYHUTU2R5xH3KI0t9/8d//0BrhynJslOgKR0f
Wbq+8zZ7TNLnTrhKKqLBGRAXgQA7KwglMDDyeSANDrCKL8GtBV8CXc9oQZ9k9AR6MlHk1KHPeofV
ymcSS4cVCIAqiXxiMbIMMyPA+oEfnkF93i22g70ak0uWkijVwLq/mAhNlOe5HtS7gqakz50lbciZ
b3wkgsgiFqgIGc0kshgMaWITWCEB02ZduLi/djc3ltJCcH28lIZ6OoEs0TqgqdjiGzgfk6pP3Q31
F4DgaxxiLUNkmIWgCZhAWmLAEbA4DDFVMXObOawqhevbfFwAKV/HO2Osr3fCuw20G+21EY47YDOA
bZqw37mDbd53E2nfYeU8MoT7EfIBM2IRFshwiPLAmkgwY2Mr6EWsILEbJgy0ESb0FKFJqEsw3YdV
V7JvYD7BQvaJBLCUM24o1gicDoI6FmBiEQTIZ8pIImM/ivVFsAfhXZiDxngLejJlp9CTac394EXB
5/fDu9kGuozhZuVajl1WMn1A7jxCAeVwzpGMbYQY8cHKmnBEhKKCKEpNIC8C/7jKFu9uuw1dT88h
wM5DaamTTbJTdbKMHkV+sJzPl4u7BGrstXcFMd+XcI9xGyF92Akbh5BaY9gNFShkIK4QkTQgkPuV
8NllD0+Kcfcm2HYgHCCcC4bDjLaSGetSkh0padM0m2VFVU6Tyt0aV+ACKAvlg+9TZZGNJAXXg8CG
4NYI+1iGkAiDWFzevIPEbh0O40ca8C4NsqOAqc5L6qdrWbHddNAFV8pACDv3o8JiEwVAgpQAT8M3
LWHjsPChS1ARjsLoVIO7Iv8KmJrb0bHUmW3pmNlSbjrp4Ktppo6Uc34f5kXmTlqe91pB8dE3uIqs
GIgWKhSNYgX/MEohxYdAYtJSiTEkUhPE342s/QrdyrSmtLXITpMFwDnOoWFet/DF8zArvuZpVseT
I2GsXR51TIuFRr51hbSIImQt0FwILhZpJghV4XcTxk70d4PqFE33Lafzem01aYfuZnzCIrNlMXxe
pC7vmCrzVH8rVhTSN6AnNBKkpnMNVTFS1oWWZlqFl3OPhRWgKXIoX6z9Hs85PtkOt3U1aYeu29zV
aPq3zyx29E/5zk2hCAhZaJ2H+lASQCKDBABhGGrjG0ukwhVh7qqSWt71OcltbAnrwgZEN6mwOe+t
y+x88fipzHcHJleQfAAZMTGOlDQIGw3IMFAcZH0fOhMlI4Mjo4RpIDsvsA1qik9BEZKeOMfBb28W
QBUL6HCviOZ1mLu/rkYJIys4OIYmoYQaJfQhPFiACFRz3EAJCun/RfTVsdr5Eut4Zq+tyqRDP8qn
03Fl9HS5ep7moOHO1hgYi1auEMTUhHEsgX2dwYXB4PUcGJlGlBEJUiLd6QptmW04gnfA0cfJLszG
m8fh83y8rDI6llV15RJ6RPwwgqIV2iUGVbOMOTSpIfTPoQgUoTG2gXqJiZsrnGGVxoy2Dlp06WB2
MfaU5fNJMkPJekF2ZmX0YFYbURLH0E0rCbWhMVAWKuilImj64yiKKeW07cenAtt4oAs9xZOZowxV
q7JlIUfr3BmVAsP1qWtHtI20D1nXj4lr7Bg0djqQSDE/VhwDtth/iWFby3RbtjWlpYqeTE9VgYsX
otG7ElX9YKqWSkKUiQjFRDmKCGPobKCX1r7ALIjAuKH4D9NTc0YLummeBOwvKnUEfZglRfpUHQbA
DlRZpvrrsozxdSgIdKUUekEmfQzoI4OIIlyGBjiOiz8vue6BnNmj3XBbSdVRRlSZtO4v4uWivK/e
sSie94xCHXtbBckSOlYgRMieLAg07IrUSBqjRRAK0DD401OofTjT8t1n6+WmSOtO5BR0W+e0wyfN
RO103ia+yWK93p2iXwlKd+HOYogii6FawtzlBK3d2WOMQhNEccCZ5VhcSqgNuW1Yk66tmOgdC33J
nuePxT7Bu+qNWatDDeYPYgwttB8yZKHeRhHVEbGMWmgWOqE0ZbVAjEkH9UyUqFL6wenXWbop8hLq
YlV5vBBckT7hfVr1nCyQJDAERcZlTZcwgRRjJKUAvwgJlCT8omsMt+LPeXI92mtjlB3AzeSoTlrU
77YcyiTSZ4BY+yQiMQnBfNDUMx9aZXcJWT/QHJK8ZZJf2tOW2DYuk3XgytKds6UQ4mnxvCqX+/CS
pO4vmFEsoBoR7oMVMZYImkEfYRyGKsYGsKkz2botso0n6ygfJlN9lFs+ZKXdlE/g+PX+VnwWaEIi
6cq0KIBE5yuONNbQnSoRSspjRuWLMspWePfubgdboDPeQcWZOD7AWa+yLH3qg/bLR/fyTDNduR6A
Vhmy+uvOabXv+yziSFIGuSWKCTLYh9zCI4tDBtQtyZ9xkjCsUN13gWp59fG0tgXEadOqMNZTWrv3
cvx/ad/u2UrULmTBUUKjOaIKnJlhqK3AkwmSPsWMwC6q6jiwUZk05fRaa3UcRCmCs6P4mldvD+zD
i/VJ3YVAHoeOH4zNNCRAxijEllIUQUHKSMRiwvRF0mzK7bUhnJK5ohLqT9Z0jWQzyZf9crmcjZff
+tb9eqh/uLRN6qxNnJNL41MFrI6E1WCzOFDI18D2AZG+hApP0ji6nNcaws+cujRmtJQx49MUoExK
D2ThjpyCFl0A7XFXKmn3wCQA8mcaClBoVaAKJQKqUEnDkBKtIhKeoYtjoW1MKevCxI4yQm3gDbju
ujbvp0VdErVs6+pRwgQSwgKlCSiXLasaK2moVWHkq/j7tnWSLxjWDR9pcNqiqDHbt9D+rR0euiXD
+wKghpFh1nVIIrZQPVNLETTLARKhChXEEPSt8X909NaY+jVLQUD3tBa+llrjcQcljMf7iGy8ILd/
RMEJVgrSB4oNhjD0gby1ZBFS1EZQzkRhRLoPAw7CjjCcRp9WTBwRM5R69dOyurmmUtSFggkDwiDc
gHMh9zINPGzgt/NeyDNEKD+MvldDnil4g+1Yr43MdMAV5Ajuu2zhNq569WX7ig6YsC7tJa4KBskV
Nz50rZgSwGuh+jU+N9BchcAQPjZgzZekwo6lzjzTOJ3YVk1MOlSTx/x8eIH5ihLVJ5VXSCFin3EG
LThUaSyiMVAHD5EPDaywNooNDy+R815oG5Hs8g3FjhCtywQoY/fUojpddQYOhNYR1hTKau4DVUAX
ZWJjkbKhZgAW08o1zmJqiG2hSpLTqNHJhO9QpW/fJuN8h4ebKntRYiEFQHUtFYPd5kCrvntQqji0
c7EhMoxxO482xbTXn4iO9af7s4Z/3EXvDmTE3fb47pScRwTFKgZmx0y7pwAMQfcow5BAYx9cfqhX
vXRx8/EFndNh9Tbo6Wn95d4jOoqb95tZmZfLTfp0ckLvSm3RJ1APuKPn7VfXwWgK4WIoCiQD13PN
izEK6vCQgvPRWDOmXxJHF5ZuKnsyraXmpEvNDPMjNcfQvm071vr9z7n7b1BbgqifbdKQKqADDRW7
S8Yh9Ig+FuC90kDBrC2VMftOB3Qk/1wrdDStqY9JktMIhGQ4PqqN/rlJivJf9aN20tfueTKjVRD6
odQ2hoI/ZBLSBQ9CKP0hE/rcckaFNDK2F9U4iO7GfxjvtTGmHcDV/ozz23pW9vdHcaTiC6MMN0wi
yaDdZFAKAVRFIFwIVPXAzSQg7RBtCmmtXkXo8er/T9yV9UZuJOl3/RIDAwp5H4952sK04Z6RvdhX
VhWrW2hZ3aOj1zO/fiOSVRSTzCoJ3oIXmFGpi3RmJJkZ8X1xaaeWAaKQ3wwRaR9gepE66gVBLAlc
KURAvVyGBJxJxjee3ztCRHNCkt9x/+KmeuXKtFa+DKx8Hu6/4Vbh1xz5FHpxXdIKOLLqItEOE4zK
SkWXMRFDc5ESV5cgUz/B1O2b8Eq1mIGto0Tw5e4Ipr/8McNHgrFrSmUxhzwobbyWoG8xIyZ635no
YyeMMNyhB0OGtlfljxZIsgOnDUEQf467+XH4/ev3Ye6z57ijuRTwHKnuLEMiEgEXOQYMTjsPtE1Y
TVJuirEcbyEMbwgjyH5PijCb/8CDuCbTg0FqAefHOMwl8UDTQA2ASjMEsDsobqOR/DMR6rNVjVLP
L4bG/AdUUDuE/+tuN3w9qiQKaAW92kKB0eU2dUxh1ojETDsrTQcv0HDmufWUvelTLSOfdgeXy7XU
Q0PqvewXB2Ma8frmlwJ4wRoUi2cJYC0Cv+OLJRJYuXcAtxRyH0t4ZwKBTSYso8Jnas15t3AZvC1+
uTQXvWfbNebt+SFeNIPoCeA54HKJiVb4ierfO8ZJth0VAnRqcB5Ju+uIAuxILYNvLxgcdukEqUtX
teimsR6xxPC/be7+9VI8lLRoKWZwJwedKZwe0YVkwDbwAnIF7YCXkmilo9m+y4N1HL0t8fFqJbfc
rm0afDl52svG+znc36GxP/pxTDEjyQeuAljggHl6GNBFjzP6rCxhPOkkVb5QDs9KiHoNu7Vl7MFm
HMHr95/vnibnj2BgH/DIElAYBEhhRw0mUFkPLA9UG4Ch4A3wJy3EX0WlZwJe1WugjYVtyfHl/Pjh
t2VilUsEIBAwgcKXQD1nUM8qdskJqRVRwBTlZV7KNHklsqZrr0av1WTefr3JeUEksgdWRUDT6Mwx
SxmEdwLQifYc/peI5yxdiEi8zl4JbRq5gr2hU4zjj/7xFdcxgrtHSs2c0xhMMBGQBfAgC+wPkLVw
RgA10jQtgN3rIPXktKEJzQrXYd3u9h51N78ukcjxF3RXZNi2AkQJHP3fksE5NBZeeRDUxECz9OzN
Vx4+nE71CR9qgRtwrDerPNmD2/vp3w/Pn4enu6fa6a2LASqfhW/x7DFnPhkEFej5NsybjspsszHS
a3L5xJfRtX27lm/t/55uqh/EOgkXv+SLiN1T/7BDp+tx/2hQn6MjnEQC2CW5TnmEp+iu8UmRzkth
AGb5BHT+rDdhPvJCtMYxNMPmTID7+pfb11i3AlQgSnIzKeBTwonMxMtOOIbecoChLibRSS90VEEn
JunlbO6rJCc25W0rNA7Mf70xiztgkZRUVSL9IPnB3+SQGkup4PGj/qSYoEzACmelU7CJkMTC2ZSk
+bi1YA0DtaHoE90fvCts5VyROWslO5kCHAgDT95jOphPAHGBvbhIzcWcK6whMm24UDcMSXqlle4e
vszP9YFrMoKheOMk8cZyzD8EvWSYAnyAyl2KnFwmBpTWJcjXzVyGCnU+fLmqxd821iTp8TVgc4kp
gGEEYk0amaWY3xEIx5ixAbbDM5AuAa+He3hJ1jf3xGysWgbJGjL0y6qZ221/jzWh2JKm5Fvt+23x
gxRvb0ma0kIyazrNNT5coO+ee9pppqN0UtkkzP/JBzJXlC1hTqjL1q3VA+CNrPcNgLKWZqozifiB
tVCBHA7fjgGURgLwPg0wAU+s6WwEchyAsATrMY2cvTsP7u18otVt1cKE5o2FmQn5LCrDgU3bKVVL
JOEo4ojAPfxAJquJBRjENBAAQBipbQfqMWtxGh7djRjokmDhz3wbvv7+7XF4eioPWqoiWAmQoduQ
KAWQEnZ99JiWijrRxIhO7wwQI1hiVXzPY17PdYJare6rVzY0dpAclrkCKw2IO4iPB2hUstyHkJnD
+jyaMfqLcWjAUTETePLBCOrYn1eyh4uV6EquAT1+uczBX6MZwEzobxAlvybxTCjmzmI4hGuDtVES
y2mCALQET4fTy6Clxo2L9TRehVJ9A7s+HRNkp5TAkm0LSotwHXVHCQXqSJOCI0x1R0xS1rrMNblI
ukOVo3sa6k631Ms0u8YyLVm8tl9DmKtozhzRMtpOaDg7HN2+VvoAhtyTKAHxwtl5z7GBYdsCw4Va
TNvaXf2kgeAwfb3/fm0n5IOHgNIAWx1sc6YB3T7ww4tkOpUIHO4osrOyJjL1MJUEYN/XEmDy80RY
l3xVeCU9gPwOuB9Wp0XkUTB99MBanSNO2ngpvtoSWNGWwMOirvIwUP9wLFMomVCgHrQQ6PVAbMCC
BtJCDUaKWFBgDKJ7VxHJNPjZRfS1ErSiIbjVE9b98UPRP8vHLRNhnpvQ2YwyW5/A0ggFsAHgfTTe
50Au9bhnAlSi97yxSXoh4KN65v3DJ/fQ3/8baBc+dn1IYtXFJhlg3Jx61VFqSnIJ66zJYPotGn5L
NIvi4oxxLtKJRzC7o160aC56yfKPGYyf7/CdjTmMhCDWwfxVghWwJCUwwhpoIoA+BNeRWwX87C1G
8N68sIMEP92cT3P86aZa32Ab6xu2S1x7s52bNIZuXSavKVoCoSWlmJGcfUT3FfwwGF8nJgI8okql
/K7jNJ/ihGXenjBnw359qLZsx/b7oRyqD+6jC39fJeXopB3mVHdUYSDCUtF5B4BUKe6VNUrC//8i
T+JcwvnStpKsLfVW0iWf+/vwuBkevz4VtD3pOWJcTr6j1jjMQs2dD06Cnc4hSZmAA52HScdB21If
r9biAvBdiyuWof3w+eXhC1jrw6RTOoyUY5UpkLgYtOsixdJnmkBJKB3gnxmsm2KGtMJ/DX5QT3OC
HdQ31cvZNTaW3E1JJ/8CMtY/AO6YFLYugVoHJsYHj+wTEIRj6AVwAg6HxHzAyAJvJ1Ivx1sIIxrC
DJPpCP/Mty93z69hv+KkzS5pDGsFKRLscYMlRxZgm6FKhGi1sbGGCfUwlQSKrB01W0XVQlkgbPx0
fzBeGK46GDEOmIAkeCyRYn65oB4gC9edj/BcEtNeC/+njdh4rRaX6pa4ZuFXKr2KppwhxYtr20iF
mAZYhsOYGkCEZOEkJQnAxzCdDTvnUpoPuRDJNkQaxBFofY+3H1cRD6yw4QxMfoxIlw0caQOvs0si
8aBE1trpvyriMck3X9ZOyvWy4Mv+uKyXh21VaaAYPETMe6KmVCJngDOOYDBaeUuZVOLEAZkGqqbX
av2id3rbLzjz+IDC14f93aeXx6nO6ZBGRKckIm4dc5Z0EQ8u5w4rnZLsWAYE5rQECHM+rtGY51Sh
0+rGal19Iwtv178GZTZPv7/G1kuUnwUXCHGso1wy7BbiQPZy+pWOIgLT0IsiyNkY9dxqHaPe7aQ5
54keocoh9YdoDQChsPbyWykwYckydEgkUOk8CjBGcCIACwIIMUCNFQ2X80a/SnNC8U/Xr+o12tbC
l8H5Xx9fnp7T9/7+pbw392metSXLNhLOYIaFcJiormGdDpASJtsRDziXJ/au4HBrohO8snFntbR9
o9J5oJvtoiXITzdTMjvmXeDhADiEu0vljN70jgZg/pzS3LmQAdCKzCOYfu7iZdJybs4mvE+Xr6p1
NMwjfKkXHWxufrl9OXhl7bg2OwZ1IgGE7kkATYQuGsB+nSWBAjPRngmjknkju2oa+VQuxeHyQmrT
knpZnPnt8W7+1q8/4r+PVIMpZFYpEQLGnoLaQrd9CqzDhridVExSE4SyVlzi5XysRZnfVS4tlrfO
gRwYg0/25vJGPXKotC9mw0TDJE+lDVIec5hskKGTQNy91SKZN7p1/BnyOMlyZs1LJQJL3LTWPWnu
f/a7u/5hOyzCR0JRYViwXXDRA2QHru8JkEVpNRh6F4Un5ELho1qCSnjN1/GWQR9yYooR/p+7hykO
x2VJ7tQmhsClATMZ0NnMUue5lR0BUO+FDl4KfcKkv45WiyFYS4wJfI9P4dpPz5BaTEEvAJx4xmUO
QHgSAHClAWk6FTogEcxaIHk6LsxgPdhCjoZiKfEB0+50/YPSfMx8wk88mllEsG26i0IwbC/lOisx
FIvUmTritHgjy+w49qkkzMPlSm6zb7xGu1UL1fKhB1D1eVYurdk1Q5/1+Aui4QDnixhbWk8BINIC
a5hcl4igLlNhMxOXM9u1PKfcNfN7qlX3ZI2Zhp6KWdHTt7t77B///LqD8egBGaIKNAr18KK4Kj3L
QJEmWJyj0QUq6KmCp3rAWpxGguLQb5Ytinb9c78bnksS7dO2KL6xVJLL0VcRbHYgD3YXQejEsBBf
gbFKIlMjKPD6TN/V1wAmiseJTmu11W31oja8sahVwL5qa1onxdoUk9GgIwBoAy112gDBwoLZ4gO0
whFrzhGs+dC1aLuG0tjQqSBi+/Lt6XqK2nM9Fm9ylZzgknSCe8BqTmKJMfARSpSRPkeno1hUZMzG
qQTY9C0Belu0Bdx8X7bua7R6KgR3gjgSQFNxRouLVwASSZhUEtF3A1vQuOYjmY9YibJt+I6G7UoB
bPrtl5dvVTrAtRxDPdfj26JWwuzKdEJj9ZpOCggo4D7rQ6aw/ZSx7+pb4hczzXfceK2Sf2fXSHwA
K7rYZhO1tKD/D/U+KkesnIcX6rEAzIMh8oDmME0n2UiiHsHcyf3VYJnD0EhT2etBa7vKNf7xsf/2
+W5b/N+YilMcwtZe8/F5BhN8UEp0BNP3ecAKFQ5n23p405oDASZv86DjHKdj3sc75qvYm4ZCwvD+
giv/NPYUqXvsZS6wHk13NhfnPSAT4yWYNa+Y5UTHbN7VXOUw+KnM+3KxEnrbEnorJoUT7/pPD1+f
nu+2Pw9PT9gTts58pYSMKt6TrNEtB5yeCwZ2LHDbCVtqT0j0y9y/8+PWIqptQ8RVa5JjoGBfdQcc
AwaUjXUyJMdgsuSgfjBR2nLTOQN0XnrOAyfeuTfalBx9/ee7BLrGfbMlwdnbrPQHfLlTR1P6x7fp
6IE9wKPHxnQs2NawK7KQoEtzhKcsqOwUwNlAogyKtZsfTMPVQux0S4hh8VwBAOXb46Mc+6WYxFQg
FsA0HHnYrUDALXWsUyI5i40KKT/vNitjnmwrkG8Xcu4bcu6nZOb/vGaiSnzJgiUSsIFOcBh8CA7U
PfpCIhMpyhiFZYvN+J9GGipOQVvzysng4R9BmZybrJRhBZqU9FimC3giOmzzoUE3Mk6lDbC7SDs3
ajbUQgS1FoHzoVGEgbii+IZKTsTYLSNpo7lwgCc51mDw4AFoUmykQLwPzrNk1ZvaEAc+rQnxaiUy
F423xdUyoaPQqdB/e355paKHlm+JeAVWEQsoKTa/8qAKPWBGawiPQNV8vgjbnktwJl/lcEe9RtU4
vlxPPUw+Pnxa0E8qqYejATwpaexbAmjfENCSOUaaWDA2Rn4h+jlNXots7FpksVl6Q3bD05fnr9+e
Zj0ITSnLKJ/oqGLSp8BIlw16zDNjQLgw8mqJo04CFJDkfV3AykRHooE3nGoGtrrxql5Dv16Y0lPR
1t32BVH/rOcGhcMhC5IhVgMA7ajAd4JH1nJADZoZpwSgsBgW7cAWY1VyqHWPPfhymLRF/zLrHGPG
uh3Q4wEAskHCAcDUGMy09cg/tJBJg+pwppbgdZRqcs0368m1XhbE/iNiFFMW2FHcjoFmRjTApZgy
xo1C7jzH6iHMtyYR9LlSF3f7/COeqDGN9Zr2Yr0mi/67lZt83RDYyEMMXTProwJtQjP2fEsa20MI
0zGVGcWy+bHJ93kV+Ja1r++pVtGLhgaHL0/2mL0e40T4onAhh3/x0uUwm0hC0IASjUMtIg3gRaAM
JDApGDVM+78krD5eq9e5a2z/frdddB8Ze/GOHYvm+JczDzRRZcAymPTmiEd2xjqWvJY5cwXn4n15
q8fxz/UCXvQtQkF3a+k3ZKpjPnCXu4f9dIYFthwY/XNRUEelAoBhgMMZYTvHAgcsDMYqAYeJ5xn3
66hX9fSyJdOwkKn6O3w/UEav2VjTDJRHeJFTl6XDehzMnpVwyoVy8EClppyd7Sc6H7gWbNN41YPR
+22lbL4Xk3VsPDbmKAEEo2C/seZY2DH9wIDO7ZJzgVOwIcGSi23gMduqvYHLtat6Aaa1qt2qT+/T
F/e4uXs+RjnHltfwszgaqJIS6IXWBCuBgc95hqmbNIOmBaLhzXlcvBj9VNPd6qbFKobGKnb7hSEY
mwCh2iqdeMaeW/TQc6vkiSTKkxFg5r2APe0DA0KX8Y+8UiCkWor39HMsY5/WmOVyJX0B3Evp4cuV
yt9+7VHTm1JZgUAXu9DaqDE/HAPLwPgdgd+iBSoQKbXUpDfEhSFPiQqXajFZA3LsUaWrOthXtXIe
S/BLL2eRbGLGY2d6sEkKyJwB8tYl5WiQQFhCThe3uq/SnAr9NZy+lpJ1j4Xy5fKVFMyNDYNfE5kT
bHpYEOmCxyaMVgKGx54oITuWNI3YTOpPA/nxWi1qPzRE3SwrvG4/949j0jVnY+YqfqJ1tYZzK1zH
sDyUMwH0GsPK2Umao1cuRveuPqzjBCccA+PFSnC9zhnHL/sSX8XE0fzf+J8Nu2XuKlDNILiGR4qh
LE6wabs3pFMEjm3CFtn8Qn8zYCHCQvxNS/zXxNubZX2rTpLGDHtfC1JSnLHVNcBvmoKkxAlHpLwQ
G5omr0Te8LWyp1um591UP/aPQINeQ2Bj/Mtw6TBU2imHXbodgGUbfC6tYgWJKQij/h+7qc6FvqoX
11xxX1rMzLyzVWrNkTFZ2G4lkmOtCXAQsOezwOQt+C1L3clIHSouyuXZesDG6LWQek1S6U5Nnp4/
fr9nryEGVkwujXAuMfnDJuwBkkCXArPuiMYEKAai67yoOp4NclVPRBuzb6bi1e3f/jbrZVPsjsjK
wEaWHbAoVHHOYKE2BpmDzDGlQ1+0ut9Uy9lEh76x9D1f8vOfh+d+d/D0HPK/4b2OwUQisIdxAqpD
MZhoWe6shkcBYiRPiDEsqcsFE4+SnOjfdLh6VS9nbTcZoUtvFlLslztEVuXPH/Dx4FGDTnCsAwNy
fvgTG9owbJDHqcwOtIh+b2XbbzenUclv8yxuEG9YbwpG2TLK+HF4xN77GPafZ+iL4o1DYxh90FzY
1BlROgyV8BNs1v/t7eh6E8eB7/kVflmpSAdKHDsflXjIJ2Ih5UTT3t1TlJK0Gy2QHqTb7b+/GSdA
EhLo6k7HA1XtYWY89nj8MZ4BbTI8HxYsuvepi54OQj3eE+eAUrMNvKNhWtuwP+UbaEgVLtss3fjE
xS3X6FBzMYSTjq3CdEq+5ckeTN6er3/qGY8NVLpvrPJNk9fz3AompTJYduXKI7ERTJ2Yf6lMvqSK
/RpnmmeYrokuqMLXSoFVum0MKQwqjcsupb78/03hUNFoKz2P+wOFGn1OaCN+6+l+gOll6iNbRxcy
D4PI4mSk+s7Q0g196GpMlW1NlWHSvhi69XxaorRjr0fVmImcUeJELN/+OE3JTOwdbMZsReGwycMg
fAYwA2PCHVqeo1GVWoxravtcrYZFapLqGKVqkrSmjGW6yYv0MUvfa08pyjNlcQktrtdU0DsXnX8Y
9jgGbIZBbJk25579uZXdOZk+s9yGazSKd+zsodA8GJrXeFOzcmWAetXx8DGPKzzoZFgr2YqvDWFC
BFwmV1SnFR+4hqNFu2MONtWkdUn5IxOPUf14lZbOYvjUWCgR/hVHl9T28VmubOOdOvfA2GCsdVOB
Yeha8OXwz4j0QKFHgapaqcnt+TqfihAwrH0wWB1BmFWcf3yEpnmOO5R9BdadeDVjer6PARop0zXf
dX3+Xz0RP5LvNzVnhxB01bEBpqvno7f3/u91VqTqKT2LsPsy1UzbN9HFAh8igGkxHQPWJIwb3DZB
X5zWKXIDTYOBtOM0HQqfDgys4+1LlpwWxbrIowgTqoZhIXRUMcsG0wbWeAjGgPoi7mXbJayORZK8
n1VWlyBPsufD4/b7t80GpI8ZSJ14vd6TTZyk5OmD5MW3dEdedzmo1R4UvYh3L6l4Rlt8A6tbVZSZ
S4t4/z0CMxi9ZsktUcqyMjXvCr6L9JbI9cJ9WoiApFV5k/A19PK/Qw//1FoFEhD0MGpCtk276KkK
dPCv0ZQeA4IJF+ryXQLUYrv+IBhmE2vyZ3Lc+92SMC/i9ZjKoEMB2aX7DJNkj01lRIMbxr4MyP4d
9C1NovytiIC1t+0hL3kyVhQDwbj2ZSD9scsKjIMAOJD+ETMgmpB3qCzS7RhsnzG7kQHrkZLKjaqo
Rmgsl0UNYoAI3RGAFpGW3mS6uCPhX797pOfzOF2GD9ZcGp8+faBVteRMyF7sgkkm0uN2QytMnknH
xPRg2mBwln7j7R8wYyQH0td78nUakpcycDAgX+VJ2oHXmPWA3oCwwM6kyaBiYCRPDj86VBHo+ThJ
MHoAAc7QSbsmvIE0E25fxMISstiu0h5RsJkUWPP5wiGXP7BUVIMD6E2cbLLtoBdYpTPpPrScGZk8
WEu3HyvXUGD3Rbz6foU+wXj2AYz3SLBghd4FWJWBbKtMsYEQSj+niDWKXCu0rjBAlRFH0GlgTbwr
sJwCA1E0n97NPBc6+IJcNZRrFIXen+EVAeCjGwR9uJs6C/cyC5xBx26EfhEMSHmhWQyxVmqwgYXO
7uMCXsD6C/oVLkJrTq727IhPStDfCAyrt31jkJeDuyQOwqIBzAbSP1BLAwQUAAIACAAXkXtG2CC8
D8IrAAD/jAAAMgAcAGFuaW1hdGlvbnMvYW5pbWF0aW9uLWJvcmRlci1vdmVyZmxvdy1jcmFzaC1s
b2cudHh0VVQJAAMe/xVVDf8VVXV4CwABBPUBAAAEFAAAAORbWXPbSJJ+XvwKPMrjLqrugzHbETh7
NO1DI8ruju3oUAAgKGFNEmwQdFvz6zcL4AGQIC3NzNvqwSRRhawvs/L4sgDfVmWWr9djd/f3S57+
XNT3+bq+2yyXeeX+Jhgm+nfnNqmfDtPg7/pzOd8s8vX154/vPr2Prv9yfXyvczPNl3UxK/JqPCzd
+ZxX66JcHgRjJyinuXv/vMp3F3/VEknuXn1I6uJr/gaQVCDWvd1Dv32un8olIKVGAtK7fL0ql+si
nW9FrJ/c3yjmvzuf1qDQTXhYTWDiOGFS59f3xWK/IMVEIMwQVS7RY6zHhI0Moy7CCmPn48Tto36f
ZC5c/NUleGRGwr0iLGb8DeBYlVXdmUyI4y3L5fOi3KzdT58aIFpy43mMoYhiikQQxkiFQYC80Jc+
UVIYETmOE1TJ+imfuvdPVZ5MrSzXDYv1KqmzJ/ePTb4B8Fm5GCWr1TwftWYeTeqySh7z98kS/q0c
J/qW5asasOzMG/0aPPhe+OAFQTSZuFeTm5/8T5M3nYl2M8DEP0d3Hx5u7z7eR8H9zccPD7F38+7T
XeQmtYu/4faP4GQ2JSwBi35+797lj3D/2v2QJxXM2Q+OnYMfgOXm8zI7uFRHkjLwBXUvJPDF/c1O
4z//7lZ/ouvqz2/u5P1/3959dl0HoR/dh4f76Nd79/jvWMpBbEolb8VSoxux6NtObPDxl/NOPppV
ySL/s6y+XG/3d33tbccaDR8eQu/eOw9lu3IXism3GlJGBzT8l6A4rcO4eDy+4C+LpFiiupnpYEA5
L9L187rOFw9f8mqZz0fTZ7i00+G/2i1Xs9lM50nGE5K4iyR7elisHx/qKlm5byEUHPJaQWxK9F4Q
yJDcoa2MebJZZk/9m4dkpInQIgF32/2k1qKAhnMqHfZaYTSfZm5alvXaavUwL8svD5sVs9Cww18t
bWbEqTQK0jh2RM9YyXp+IrErTStJcjZ17cSHx3mZJvOHYgkB9dY1zJGvlCVynVDXiipX+RJkCO0o
mHXwjyD+kNfWw85pp4RgVIDTB/Gnu3cB7GE+Hnd/XXW+g+Dluv7LD+68XD7u/rWTJ3VVLB/3wyeX
3titpEw4+rXouMly94AgAE+vc5BGFXZMT1hcbpbTpMl9g8KEIpJy5qLfPkz2Clnb/1LUT+/zRVk9
B8kqyYr6eTwt1l96P5oa+rvVQnGH4IFqO+RAbeqSRCo1dX+5vxuP7Q1Buayrcj6H2jpezZN6VlaL
G8BRJPPin7kdzb/VV9ZkgrlX/TugYo0WCyhr9I1DyCthEAL1eRBGsV/+qljWP7jZE+T+duuavaNK
yGMoo2y1GjOtAQh9JRAsZ2IYSP/3MBjGxCAWQi0W9josOE+kcW0atZIxSLbfrY0FBmm8CUiIwulg
ouh7mErTXMym7rpOKhvRZJ/EibulAReT+XDxxz0v39bf8xrNNGGptW48Hv8N1rxPgE39tfnZhuQP
7umPlu7Vz9E3yHAZrN+bZMX80JFYJUW97or88XujeDP/cTye5g1rgABuQF115kDS2ADxe1wCU4JN
t9vMYS/awZvFaj56Ggtpd+SV1pgSkc+2HjEev4PV51v7AnlM0mSdA+Dsi/W9zWpqobU/d6NxVS6G
7oqLeb5ug1QB0L2lAScT7E1T/16HEyjWy3AWC8tOP1bFY7E88PQWDNXKvbpwdxMoVAJA1gP49+Rr
MsmqYgVBVeUDAFOtZ0JBZn/4nw8MNs78Amn7H9aD9XTr0NGHSc0eHoieQWG1efgm/vo1iqKHFDb9
C5S5r+WXJnVDVttNSeZjwpl4s48UejFCbCxuB9GiEx+vYitGSup+yb+C5aA56TKeneyBWO/KSLmS
nBL3YTf/YfFYdfUzO/rzCoGEySOBLa2zHkb35mHj1+urc5nAxtk6+0czv8rrTbUc4nqrds2euB5Q
nCUzrN3dxIc//9ijZAzv1H65tOksNW2+7IoibK8w//+mMHGzbcf4J/AS20JvW0d3UlvqcyU5Sov6
jW3HquTb+NDGYa4zrhkHFlml3QGCc0LFVAD5qrLeHdu/BAamQwOpXWRajAd6RRhYF71bIEckBNga
rL46WT0z2N4xMABEDsxU6d2ImmU8n0qrj935ygzgsrIIPhqYZVg3A+TkDoql1YTQ/iIMz6YptwOs
i4sIBTqSRhY/tWM7IAZ0F3aRYnVkrrYgu9VsfoSLYGrpSlbRIQODLOdd+VhALneD20/tkYV2oqoq
q6a73x5i7O9Uzr1t4T5sFunu2IZwx3H8YplUz+7NAtLluu3im9sa+pNaYyK3d5GAryr37QmNusJv
3L8aLwwYNRKFQijEOI+RFjpCQYxVxKKISxn9+JIjpt6SXA/g4Ho2gwQNsQQ327pk7548FYttgDV4
WMg5ZoyhODIcMRV7yGBPIIFNiA0hJvLjITznpPZxCTKAS1gDnZZ3CrGJyVuYDR8jMqLiLeDzaKwY
UyHyaWwQiw1D2sgYCc6YLwMVKk+ftxe9dEZAj7AO2DDDbDbLLlT6IcgBjzGJfIU8HQJkJQjyZcgQ
JYpRL4wkMO0hyH3Rw8j7c3oKbA+KegqkwFWsE5xyqSHgRhBfeXbzqccQwxSsbmKKPB5xn/LIo77/
479+MrTDZCQ+BZqY6ZGl2zvf5Y9J9jwIV0lFNDgD4iIQYGcFoQQGRj4PpMEBVvEluK3gS6DbGT3o
2YCTZGmuTh36rHd4WvlMYmmxQgKgSiKfeBh5DDMjwPqBH55Bfd4ttoNOi8nCkSbVHTPvL6ZME+W6
tiVzr4Bqjbi1pBdy5hsfiSDyEAtUhIxmEnkYDGliE3hCAqbNurJxf21v7iylhejmn91FCS4JfWr3
vKLJFt/A+ZhUI2pvaL8ABF/jEGsZIsM8CJqACaQlBhwBi8MQUxUzu5mThilcvyvSCpLydbwzxvp6
J3zYQLtRp48wHYDNALbpwv7JnhDzkZ1IRxYr55Eh3I+QD5gRi7BAhkOUB56JBDNe7Al6EStIHIYJ
A32E7UFeH6FJqC0ww2c3V3JkYD7BQo6IBLCUM24o1gicDoI6FmBiEQTIZ8pIImM/ivVFsAfhQ5iD
zngPejJjp9CTmWhCBbwo+Px+cjvfQBM22axsR7arSmYEyK1HKEg5nHMkYy9CjPhgZU04AnpBBVGU
mkBeBP5xlS9/ejds6HZ6AQF2HkpPnXyan6qT5/Qo8oNysSiXtwlw7LV7BTE/knCPsRshfdgJLw6h
tMawGypQyEBcISJpQKD2K+Gzyx6eVOnwJnj9QDhAOBcMhxl9JXM2pCQ7UtLLsnyeVw2dJo27da7A
BVAW6IPvU+UhL5IUXA8CG4JbI+xjGUIhDGJxefMOEod1OIwfacCHNMiPAqY5TmofU+XVdtNBF9wo
AyFs3Y8KD5sogCRICeRp+KYlbBwWPnQJKsJRGJ1qcFsVXwFTdzsGljqzLQMze8oB2z5VbmarT085
6/dhUeX2IOp5rxWQj5HBTWTFkGiBoWgUK/iHUQolPoQkJj0KpRkKqQni70bWfoVhZXpT+lrkp8UC
4ByTwrBoTziq50lefS2yvI0nm4SxtnXUZlosNPI9S6RFFCHPgzQXgotFmglCVfjdgrET/d2gOkUz
fMvpPKevJh3Q3aQnWWReVpPnZWbrjmkqT/PZZEUhfQN6QiNB2nSugRUj5dnQ0kyr8HLt8WAFaIos
yhdrv8dzLp9sh/u6mmxA123t6jT92yP8XfqnfOemQAJCFnrWQ32gBFDIoABAGIba+MYjUuEmYe5Y
SSvv+pzkPraEDWGDRDdtsFnvbWl2sXz8VBe7A5MrKD6AjJgYR0oahI0GZBhSHFR9HzoTJSODI6OE
6SA7L7APaoZPQRGSnTjHwW9vlpAqltDhXhHN2zC3n5ajhJEnODiGJqEEjhL6EB4sQATYHDdAQaH8
vyh9Dax2nmIdz3T6qkwH9KN8Nksbo2fl6nlWgIY7W2PIWLRxhSCmJoxjCdnXGlwYDF7PISPTiDIi
QUqkB12hL7MPR/ABOPq42IV5unmcPC/SsqnoWDbsyhb0iPhhBKQV2iUGrFnGHJrUEPrnUASK0Bh7
gXqJibsrnMkqnRl9HbQY0sHsYuwpLxbTZI6S9ZLszMrowaxeREkcQzetJHBDY4AWKuilImj64yiK
KeW078enAvt4DBnAk5ujCtWqss1CNq1za1QKGW5EbTuivUj7UHX9mNjGjkFjpwOJFPNjxTFgi/2X
GLa3zLBle1N6qujp7FQVuHghGt0r0fAH07RUEqJMRCgmyqaIMIbOBnpp7QvMggiMG4p/szx1Z/Sg
G5ycQjfquEud5EmVPTWHAbADTZVpPm2VMb4OBYGulEIvyKSPAX1kEFGEy9BAjuPiP1dc90DO7NFu
uK+kGqARTSVt+4u4XNb2XZx1DRRll1Gozd6egmIJHSskRKieLAg07IrUSBqjRRAK0DD4j5dQ7/5M
y3eXr8tNlbWdyCnovs7ZgE+aqdrpvC180+V6vTtFvxKU7sKdxRBFHga2hLmtCVrbs8cYhSaI4oAz
j2NxqaB25PZhTYe2Yqp3WehL/rx4rPYF3rI35nk61GD+IMbQQvshQx7wbRRRHRGPUQ+ahUEoXVk9
ECkZSD1TJZqSfnD6dZ5tqqIGXqwajxeCKzIifESbnpMFkgSGoMjYqmkLJiTFGEkpwC9CApSEX3SN
yVb8OU9uR50+RjkA3B6H9XjSsn3V40CTyIgBYu2TiMQkBPNBU898aJXtJeT5geZQ5D0m+aU97Ynt
4zL5AK482zlbBiGeVc+rutyHlyRtf8GMYgHViHAfrIixRNAM+gjjMFQxNoBNnanWfZF9PPkAfZjO
9FFt+ZDX3qZ+Asdv97fJZ4EmJJKWpkUBFDpfcaSxhu5UiVBSHjMqX1RRtsKHd3c72AOd84FUnIvj
A5z1Ks+zpxFoXz7ad0m65cr2ALSpkM2nPafVvu+ziCNJGdSWKCbIYB9qC488HDJI3ZL8J04SJg2q
uyFQPa8+nta3gDhtWhXGekZb9y7T/81G3j5bidaFPHCU0GiOqAJnZhi4FXgyQdKnmBHYRdUcB3aY
SVeO01tr4CBKEZwfxdeiebliH15sRNouBOo4dPxgbKahADJGIbaUoggIKSMRiwnTF5NmV67Th3Ca
zFVzXs+6rpFspkU5qstynpbfRp79dd/+sGWbtFWbWCeXxqcKsjoSngabxYFCvoZsHxDpS2B4ksbR
5brWEX7m1KUzo6dMe9p8pIzJ6CFZ2COnoJcuIO1xS5W0fWASQPJnGggotCrAQokAFippGFKiVUTC
M+niWGgfU8aGMLGjitAaeAOuu27N+2nZUqKebS0fJUwgITxIaQLosseaxkoa6qkw8lX8fdtayRcM
a4ePNDhtUVTK9i20/86bHLolw0cCoIaRYZ7tkETsAXumHkXQLAdIhCpUEEPQt8b/1tFbZ+rXPAMB
w9N6+HpqpelASkjTfUR23hfbP6LgBCsF5QPFBkMY+pC8tWQRUtSLgM5EYUSGDwMOwo4wnEafVkwc
JWageu3Tsra5plK0RMGEAWEQbpBzofYyDXnYwG/rvVBniFB+GH2PQ54hvMF2zOkjMwNw7ZPUHtyf
8qXduObNoO0bTGDCltpL3BAGyRU3PnStmBLA6wH7NT430FyFkCF8bMCaLymFA0udeaZxOrGvmpgO
qCaP8/Phdd4rStSINF4hhYh9xhm04MDSWERjSB08RD40sMLzotjw8FJy3gvtI5JDvqHYEaJ1nUDK
2D21aE5XrYEDoXWENQVazX1IFdBFmdh4SHmhZgAW08Y1zmLqiO2hSpLTqNHJlO9QZW/fJmmxw8NN
U70o8aAEALuWisFuc0irvn1Qqji0c7EhMoxxv452xfTXn4qB9Wf7s4a/30Y/HZIRt9vj21NyHhEU
qxgyO2baPgVgCLpHGYYEGvvg8kO95qWLm48v6JwOq/dBz075l32P6Chu3m/mdVGXm+zp5ITeUm0x
IsAH7NHz9qvtYDSFcDEUBZKB69nmxRgFPDyk4Hw01ozpl8TRhaW7yp5M66k5HVIzx/xIzRTat23H
2r4eu7D/n2ibINpnmzSkCtKBBsZui3EIPaKPBXivNECYtUdlzL7TAR3JP9cKHU3r6mOS5DQCoRim
R9zoH5ukqv/ZPmonI22fJzPaBKEfSu3FQPhDJqFc8CAE6g+V0OceZ1RII2PvohoH0cP4D+NOH2M2
AFztzzi/ref1aH8UR5p8YZThhkkkGbSbDKgQQFUEwoUAq4fcTALSD9GukN7qTYQerz6Vxw+Igvi7
j4iUH8DyPELE59hySeiVghBY7/8Rd2W9kRtJ+l2/xMCAQt7HY55uYdpwz7Q92LcFq4rVLXRb6tHR
6/Gv34hkFcUks0qCt+AFZlTqIp2MTGZGfF9c4jIk4EwyvrJ+bwgRzQlJfsP9i5vqmSvTmvkysPJ5
+PoNtwq/5sin0IvrklbAkVUXiXaYYFRmKrqMiRiai5S4ugSZegePbt+EV6rJDGwdJYIvd0cw/eX3
GT4SjF1TKos55EFp47UEfYsZMdH7zkQfO2GE4Q49GDK0vSq/t0CSHThtCIL4c9zND8Nv99+Huc+e
447mUsA6Ut1ZhkQkAi5yDBicdh5om7CapNwUYzneQhjeEEaQ/Z4UYTZ/wEJck2lhkFrA+TEOc0k8
0DRQA6DSDAHsDorbaCT/TIT6bFWj1M8XQ+P5B1RQO4T/dbsb7o8qiQJaQa+2UGB0uU0dU5g1IjHT
zkrTwQs0nHluPWWv+lTLyKfdweVyLfXQkHov+8XBmEa8vvm5AF6wBsXiWQJYi8Dv+GKJBFbuHcAt
hdzHEt6ZQGCTCcuo8Jlac94tXAZvi18uzUXv2XaNeXt+iBfNIHoCeA64XGKiFX6i+veOcZJtR4UA
nRqcR9LuOqIAO1LL4NsLBoddOkHq0lUtumnMRywx/K+b238/Fw8lLVqKGdzJQWcKp0d0IRmwDbyA
XEE74KUkWulotm/yYB1Hb0t8vFrJLbdrmwZfTp72svF+Cl9v0dgf/TimmJHkA1cBLHDAPD0M6KLH
GX1WljCedJIqXyiHZyVEPYfd2jL2YDOO4PX7T7ePk/NHMLAPeGQJKAwCpLCjBhOorAeWB6oNwFDw
BviTFuKvotIzAa/qOdDGxLbk+HJ+fP/rMrHKJQIQCJhA4UugnjOoZxW75ITUiihgivIyL2V6eCWy
pmuvRq/VZN5+ucl5QSSyD5h56TudOWYpg/BOADrRnsP/EvGcpQsRiZenV0KbRq5gb+gU4/i9f3jB
dYzg7pFSM+c0BhNMBGQBPMgC+wNkLZwRQI00TQtg9zJI/XDa0IRmheuwinX7FXU3vy6RyPEXdFdk
2LYCRAkc/d+SwTk0Fl55ENTEQLP07NVXHt6fTvUJ72uBG3CsN3qZ43Nwez/+5+7p8/B4+1g7vXUx
QOWz8C2ePebMJ4OgAj3fhnnTUZltNkZ6TS6f+DK6tj+u5Vv7v6eb6oXQrLUQfBGxe+zvduh0Pe4f
DepzdISTSAC7JNcpj/AU3TU+KdJ5KQzALJ+Azp/1JsxHXojWOIZm2JwJcF///PEl1q0AFYiS3EwK
+JRwIjPxshOOobccYKiLSXTSCx1V0IlJejmb+yLJiU35sRUaB+a/3pjFHbBISqoqkX6Q/OBvckiN
pVSw/Kg/KSYoE7DCWekUbCIksXA2JWk+bi1Yw0BtKPpE9wfvCls5V2TOWslOpgAHwsDKe0wH8wkg
LrAXF6m5mHOFNUSmDRfqhiFJr7TS7d2X+bk+cE1GMBRvnCTeWI75h6CXDFOAD1C5S5GTy8SA0roE
+bqZy1ChzrsvV7X428acDhUrsADYpWEKYBiBWJNGZinmdwTCMWZsgO3wDKRLwOvhHl6S9c09MRur
lkGyhgy9XKZvbPuvWDKLvV1KvtW+3xY/SPH2lqQpLSSzptNc4+ICfffc004zHaWTyiZh/k8+kLmi
bAlzQl22bq0WgDey3jcAylqaqc4k4gfWQgVyOHw7BlAaCcD7NMAEPLGmsxHIcQDCEqzHNHL25jy4
1/OJVrdVExOaNyZmJuSzqHcFNm2nVC2RhKOIIwL38AOZrCYWYBDTQAAAYaS2HajHrMVpeHQ3YqBL
goU/88dw/9u3h+HxsSy0VEWwEiBDtyFRCiAl7ProMS0VdaKJEZ3eGSBGsMSq+JZlXj/rBLVa3VfP
bGjsIDkscwVWGhB3EB8P0KhkuQ8hM4f1eTRj9Bfj0ICjYiaw8sEI6tifV7KHi5XoVc3c7MtlDv4a
zQBmQn+DKPk1iWdCMXcWwyFcG6yNklhOEwSgJVgdTi+Dlho3LubTeBVK9Q3s+nhMkJ1SAku2LSgt
wnXUHSUUqCNNCo4w1R0xSVnrMtfkIukOVY7uaag73VJP0+wa07Rk8dp+CWGuojlzRMtoO6Hh7HB0
+1rpAxhyT6IExAtn5y3HBoZtCwwXajFta3f1kwaCw3T/9fu1nZAPHgJKA2x1sM2ZBnT7wA8vkulU
InC4o8jOyprI1MNUEoB9X0uAyc8TYV3yVeGV9ADyO+B+WJ0WkUfB46MH1uoccdLGS/HVlsCKtgQe
FnWVh4H6u2OZQsmEAvWghUCvB2IDFjSQFmowUsSCAmMQ3ZuKSKbBz06ir5WgFQ3BrZ6w7o/vi/5Z
LrdMhHluQmczymx9AksjFMAGgPfReJ8DudRyzwSoRO95Y5P0QsBHteb93Sd313/9D9AuXHZ9SGLV
xSYZYNycetVRakpyCeusyWD6LRp+SzSL4uKMcS7SiSWY3VFPWjQnvWT5xwzGz7f4zsYcRkIQ62D+
KsEKWJISGGENNBFAH4LryK0CfvYaI3hrXthBgnc359Mc391U8xtsY37Ddolrb7Zzk8bQrcvkNUVL
ILSkFDOSs4/ovoIfBuPrxESAR1SplN90nOaPOGGZtyfM2bBfH6ot27H9fiiH6r374MLfV0k5OmmH
OdUdVRiIsFR03gEgVYp7ZY2S8P+/yJM4l3A+ta0ka0u9lXTJ5/4+PGyGh/vHgrYnPUeMy8l31BqH
Wai588FJsNM5JCkTcKDzMOk4aFvq49VaXAC+a3HFMrQfPj/ffQFrfXjolA4j5VhlCiQuBu26SLH0
mSZQEkoH+GcG66aYIa3wX4Mf1I85wQ7qm+rp7BobS+6mpJN/Axnr7wB3TApbl0CtAxPjg0f2CQjC
MfQCOAGHQ2I+YGSBtxOpl+MthBENYYbJdIR/5o/Pt08vYb/ipM0uaQxrBSkS7HGDJUcWYJuhSoRo
tbGxhgn1MJUEiqwdNVtF1UJZIGz89PVgvDBcdTBiHDABSbAskWJ+uaAeIAvXnY+wLolpr4X/00Zs
vFaLS3VLXLPwK5VWTlPOkOLFtW2kQkwDLMNhTA0gQrJwkpIE4GOYzoadcynNh1yIZBsiDeIItL7H
jx9WEQ+ssOEMTH6MSJcNHGkDr7NLIvGgRNba6b8q4jHJN5/WTsr1tODL/jit57ttVWmgGCwi5j1R
UyqRM8AZRzAYrbylTCpx4oBMA1WP12r9ond62y8487hA4f5uf/vp+WGqczqkEdEpiYhbx5wlXcSD
y7nDSqckO5YBgTktAcKcj2s0nnOq0Gl1YzWvvpGFt+tfgjKbx99eYuslys+CC4Q41lEuGXYLcSB7
Of1KRxGBaehFEeRsjPrZah2j3u2kOeeJHqHKIfWHaA0AobD28lspMGHJMnRIJFDpPAowRnAiAAsC
CDFAjRUNl/NGv0hzQvFP16/qOdrWxJfB+V8enh+f0vf+63N5b+7TPGtLlm0knMEMC+EwUV3DPB0g
JUy2Ix5wLk/sTcHh1oNO8MrGndXU9o1K54FutouWIO9upmR2zLvAwwFwCHeXyhm96R0NwPw5pblz
IQOgFZlHMP3cxcuk5dycTXifLl9V82iYR/hSLzrY3Pz88fnglbXj3OwY1IkEELonATQRumgA+3WW
BArMRHsmjErmleyqaeRTuRSHywupTUvqZXHmt4fb+Vu//oD/PlINppBZpUQIGHsKagvd9imwDvvD
dlIxSU0QylpxiZfzoRZlfle5tJjeOgdyYAw+2avTG/XIodK+mA0TDZM8lTZIecxhskGGTgJx91aL
ZF7p1vFnyOMky5k5L5UITHHTmvekuf/Z7277u+2wCB8JRYVhwXbBRQ+QHbi+J0AWpdVg6F0UnpAL
hY9qCSrhNV/HWwZ9yIkpRvh/bu+mOByXJblTmxgClwbMZEBnM0ud51Z2BEC9Fzp4KfQJk/4yWi2G
YC0xJvA9rsK1n9aQWkxBLwCceMZlDkB4EgBwpQFpOhU6IBHMWiB5Oi7MYD3YQo6GYinxAdNu/PyD
0nzMfMJPPJpZRLBtuotCMGwv5TorMRSL1Jk64rR4JcvsOPapJMzD5Upus2+8RrtVC9XyvvQMn5VL
a3bN0Gc9/oJoOMD5IsaW1lMAiLTAGibXJSKoy1TYzMTlzHYtzyl3zfyeatY9WWOmoadiVvT07RbA
8H+/NDfi+I6QDFEFGoV6eFFclZ5loEgTTM7R6AIV9FTBUz1gLU4jQXHoN8sWRbv+qd8NTyWJ9nFb
FN9YKsnl6KsINjuQB7uLIHRiWIivwFglkakRFHh9pm/qawAPiscHndZqq9vqSW14Y1KrgH3V1rRO
irUpJqNBRwDQBlrqtAGChQWzxQdohSPWnCNY86Fr0XYNpbGhU0HE9vnb4/UUted6LN7kKjnBJekE
94DVnMQSY+AjlCgjfY5OR7GoyJiNUwmw6VsC9LZoi2WL/h+MmArBnSCOBNBUnNHi4hWARBImlUT0
3cAWNK65JPMRK1G2Dd/RsF0pgE2//fL8rUoHuJZjqOd6fFvUSni6Mp3QWL2mkwICCrjP+pApbD9l
7Jv6lvjFk+Y7brxWyb+zayQ+gBVdbLOJWlrQ/4d6H5UjVs7DC/VYAObBEHlAc5imk2wkUY9g7uT+
arDMYWikqez1oLVd5Rr/+NB/+3y7Lf5vTMUpDmFrr/m4nsEEH5QSHcH0fR6wQoXD2bYe3rTmQIDJ
6zzo+IzTMe/jHfNZ7E1DIWF4f8GV3409Reoee5kLrEfTnc3FeQ/IxHgJZs0rZjnRMZs3NVc5DH4q
875crITetoTeiknhxNv+093949Pt9qfh8RF7wtaZr5SQUcV7kjW65YDTc8HAjgVuO2FL7QmJfpn7
d37cWkS1bYi4ak1yDBTsq+6AY8CAsrFOhuQYTJYc1A8mSltuOmeAzkvPeeDEO/dKm5Kjr/98l0DX
uG82JTh7m5X+gC936mhKf/82HT2wB3j02JiOBdsadkUWEnRpjrDKgspOAZwNJMqgWLv5wTRcLcRO
t4QYFusKACh/PC7l2C/FJKYCsQCm4cjDbgUCbqljnRLJWWxUSPl5t1kZ82RbgfxxIee+Ied+Smb+
4yUTVeJLFiyRgA10gsPgQ3Cg7tEXEplIUcYoLFtsxj8aaaj4CNp6rpwMHv5NkMm5yUoZVqBJSY9l
uoAnosM2Hxp0I+NU2gC7i7Rzo2ZDLURQaxE4HxpFGIgrim+o5ESM3TKSNpoLB3iSYw0GDx6AJsVG
CsT74DxLVr2qDXHg05oQr1Yic9F4W1wtEzoKnQr9t6fnFyp6aPmWiFdgFbGAkmLzKw+q0ANmtIbw
CFTN54uw7bkEZ/JVDnfUc1SN48v11MPkw92nBf2kkno4GsCTksa+JYD2DQEtmWOkiQVjY+QXop/T
w2uRjV2LLDZLb8huePzydP/tcdaD0JSyjPKJjiomfQqMdNmgxzwzBoQLI6+WOOokQAFJ3tYFrDzo
SDTwhlPNwFY3XtVz6NcTU3oq2rrdPiPqn/XcoHA4ZEEyxGoAoB0V+E7wyFoOqEEz45QAFBbDoh3Y
YqxKDrXusQdfDpO26J9nnWPMWLcDejwAQDZIOACYGoOZth75hxYyaVAdztQSvIxSPVzzzfrhWi8L
Yv8RMYopC+wobsdAMyMa4FJMGeNGIXeeY/UQ5luTCPpcqYu7ff4RT9SYxnpOe7Gek0X/3cpNvm4I
bOQhhq6Z9VGBNqEZe74lje0hhOmYyoxi2fzY5Pu8CnzN2tf3VLPoRUODw5cne8xej3EifFE4kcO/
eOlymE0kIWhAicahFpEG8CJQBhKYFIwapv1fElYfr9Xz3DW2f7/bLrqPjL14x45Fc/zLmQeaqDJg
GUx6c8QjO2MdS17LnLmCc/G2vNXj+Od6AS/6FqGgu7X0GzLVMR+4y+3dfjrDAlsOjP65KKijUgHA
MMDhjLCdY4EDFgZjlYDDxPOM+2XUq/rxsiXTsJDp7v7pdj9r+Uav2VjTDJRHeJFTl6XDehzMnpVw
yoVysKBSU87O9hOdD1wLtmm86sHo/bZSNt+LyTo2HhtzlACCUbDfWHMs7Jh+YEDndsm5wCnYkGDJ
xTbwmG3V3sDl2lU9AdOa1W7Vp/fxi3vY3D4do5xjy2v4WRwNVEkJ9EJrgpXAwOc8w9RNmkHTAtHw
5jwuXox+quluddNiFkNjFrv9whCMTYBQbZVOPGPPLXrouVXyRBLlyQgw817AnvaBAaHL+NdSKRBS
LcVb+jmWsU9rzHK5kr4A7qX08OVK5W/ve9T0plRWINDFLrQ2aswPx8AyMH5H4LdogQpESi016RVx
YchTosKlWkzWgBx7VOmqDvZVrZzHEvzSy1kkm5jx2JkebJICMmeAvHVJORokEJaQ08Wt7os0p0J/
DaevpWTdY6F8uXwlBXNjw+CXROYEmx4mRLrgsQmjlYDhsSdKyI4lTSM2k/rTQH68VovaDw1RN8sK
r4+f+4cx6ZqzMXMVP9G6WsO5Fa5jWB7KmQB6jWHl7CTN0SsXo3tTH9bxASccA+PFSnC9zhnHL/sS
X8XE0fxf+J8Nu2XuKlDNILiGJcVQFifYtN0b0ikCxzZhi2x+ob8ZsBBhIf6mJf5L4u3Nsr5VJ0lj
hr2vBSkpztjqGuA3TUFS4oQjUl6IDU0Pr0Te8LWyp1um591UP/QPQINeQmBj/Mtw6TBU2imHXbod
gGUbfC6tYgWJKQij/h+7qc6Fvqon15xxX1rMzLyzVWrNkTFZ2G4lkmOtCXAQsOezwOQt+C1L3clI
HSouyuXZesDG6LWQek1S6U5Nnp7ff/vKXkIMrJhcGuFcYvKHTdgDJIEuBWbdEY0JUAxE13lRdTwb
5Kp+EG08fTMVr27/9rdZL5tid0RWBjay7IBFoYpzBgu1McgcZI4pHfqi1f2mWs4mOvSNqe/5kp//
NDz1u4On55D/De91DCYSgT2ME1AdisFEy3JnNSwFiJE8IcawpC4XTDxKcqJ/0+HqVT2dtd1khC69
WUixn28RWZU/f8DHg0cNOsGxDgzI+eFPbGjDsEEepzI70CL6rZVtv96cRiW/zrO4QbxhvSkYZcso
44fhAXvvY9h/nqEvijcOjWH0QXNhU2dE6TBUwk+wWeE0mZQBsOj0pkBP40EnsifWN17Vc5CNiaml
Yd/c/wYTObTL/t/ejmW3USR45yv6MlIsrS1outsQyQeelscmXjkkM3tCjCEZNH5kbTKZ/P1WNdgG
DHZGu1ofHKW7XFU0XVX9qIdZuPHJi1suaF+4mMJpiE+F5ZR8y1M9UN6eP/xQGI8NVNpvrLbrOq/n
tRVMSlWw7NqVILEBqE6sv1QUX9Llfo0z4Rmma6ILqvS10mCVbht9CpNKcNWl1Ff/PxUOHbVnped5
f6BR0KeE1vK3nu4H2LAofWQP0YXMwySyqIx03+lbQ2PYdwXTVVvoKijti6lbz9USpS17ParHTNaM
kidi283Pk0pmcu9gM2ZrGodNHibhM4AZmBNu3/IcQXVqMS705rlaBYtSJ9UyS/UkaaiMRbre5ulj
lr5VQimKM2V5CS2v13SQOxedfxi+cUzYDJPYMm3OPftjK7tzMl1muQlXeyjesrOHRvNgaF7idcXK
FQnqdcfDYB5XetCpsFayNV/0QSECLpNrutPID1zB0aDdooNNPWlcUv7MZDCqHy/TwlkMQ42lEOFf
eXRJbR/DclUb79S5B8YGc62bGkxD14Ivh39kSA8UOgSo7FXq3J6v86lMAcOaB4PlEYRZ5vnHIDTh
OW5f9TVYd+LVjOn5PiZopGwofNf1+X8VIn4k321qzg4h6LJlA0yXT0dv7/3fqyxP9VN5Fmn3VSpM
2zfRxQIDEcC0mI4BaxLGDW6bIC9O4xS5hqbGQNpymg6N3w4MrOLNc5acFsVDWUcRFKrAtBBDFDHL
BtMG1rgPxoD6Mu9l0yWsikVRvF9lVZdgm2RPh+D2+9f1GkYfK5A68Wq1J+s4Scm3d7LNv6c78rLb
gljtQdDzePecyjDa/DtY3bKjqFyax/sfEZjB6CVLbolWtBWleZfwnae3RK027tNcJiQt2+uEr6FX
/x16+KfyVDACkh5mTcg2aRs9XWOC/h5N5TEgWHChOr4LgJpvVu8E02xiz/aJHPd+tyTc5vFqRFWQ
oYDs0n2GNcRHpjagwQ1jn3pk/wbylibR9jWPgLXXzaFsezLSNAPBuPjUU77sshzzIAAOpH/EDIjG
5A0683Qz0qlhTG9UwHqkpHNOi6YKoZFaNNWIASJ0RwBaRFl448n8joR//emRjs/jZBE+WDNldPp0
gZbdijMme7kLJpksj9sOrTF1qhyrkoNpg8lZ+I03f8CMgRoon+/J50lInovEwYB8uU3SFrzGtAP0
BgYL7Eya9EoGBur48KNDF4E3HycJZg8gwBk6aVcGr6dMpdsXsbCFzDfLtGMo2FQJrNls7pDLH4MN
9OAAehMn62zT6wTW6VS5Dy1nSsYP1sLtxsoFDth9Hi9/XKFPTIMCr49BJFmwQu8CrM5gbMtKsYEc
lG5OB1qgRJFrhdYVBqg24Ag6CayxdwWWU2AgimaTu6nnwgu+8FgCxzWKQu9reBmnhkE3CPpwN3Hm
7mUWOIPBWkv5IpiQ8sJjMcRaisEaFjq79wt4AetvyFc4D63ZtReLvnPjAvQPAtPqdV+b5MXkLsVL
DEQA2kD5B1BLAwQKAAAAAAAVkXtGAAAAAAAAAAAAAAAABwAcAGNhbnZhcy9VVAkAAxn/FVUh/xVV
dXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAABWRe0YAAAAAAAAAAAAAAAAOABwAY2FudmFzL3BoaWxp
cC9VVAkAAxn/FVUh/xVVdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAABWRe0YAAAAAAAAAAAAAAAAU
ABwAY2FudmFzL3BoaWxpcC90ZXN0cy9VVAkAAxn/FVUh/xVVdXgLAAEE9QEAAAQUAAAAUEsDBAoA
AgAAABWRe0alpeMOLwAAAC8AAAA0ABwAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jYW52YXMucmVh
ZG9ubHktY3Jhc2gtbG9nLnR4dFVUCQADGf8VVRn/FVV1eAsAAQT1AQAABBQAAABObyBjcmFzaCBs
b2cgZm91bmQgZm9yIFdlYktpdFRlc3RSdW5uZXI6NTI5NzcuClBLAwQKAAAAAAAVkXtGAAAAAAAA
AAAAAAAADAAcAGNvbXBvc2l0aW5nL1VUCQADGv8VVSH/FVV1eAsAAQT1AQAABBQAAABQSwMEFAAC
AAgA9JB7RiAVYz6vLQAASpwAADsAHABjb21wb3NpdGluZy9hYnNvbHV0ZS1pbnNpZGUtb3V0LW9m
LXZpZXctZml4ZWQtY3Jhc2gtbG9nLnR4dFVUCQAD2/4VVdv+FVV1eAsAAQT1AQAABBQAAADsW1tv
20iyfj76FXxayJNQ7vtFCALwms1OMuONncxgFwOBIls2TyTRQ1GZ+Pz6U03qQkqUYu0MFhjs6sGW
2c3qr6rr8lWTvimL1KxWY2f7+clMv8+rO7OqPqyXS1M6/+RES/XL4CapHvbT4HP9qZivF2Z1/enH
dx/fR9ffXR/eO3ibmWWVz3JTjvulDz6ZcpUXy71gNAiKzDh3T49me/FnJVzBnOEPSZV/MVeApASx
zs0O+s1T9VAsG6T8l8EHs3oslqt8Ot+IWD04/ySI/TL4uAKF3ob71TjCg0GYVOb6Ll/sFiQIcxdR
l0gHqzGSY4xHXFLHRRKhwY+3Thf1+yR14OLPDkYjPeLOENOYsivA8ViUVWsyxgNvWSyfFsV65Xz8
WANRgmnPo9SNCCIuD8LYlWEQuF7oCx9LwTWPBoNBUCarB5M5dw+lSTK4DzlOmK8ekyp9cH5dmzWA
T4vFKHl8nJvRIsmXblVPHQyir6l5rADB1qjRz8HE98KJFwTR7a0zvH375jZ68+mqNdPuAVjWznxL
lZi8uYnf3Q0Gzeqw9gbOePxMEIC2NdJ4gdP5/A/6ipoPRoLQREyR89NdPB7/FVa6S2AvX9V/3lZl
vrx/2Yx9b54+JfO1uUny8mC4XmI8ht83pZkZ8BhwltuqKM14XN/zukcGfI++VmWSwrxXv38FZ7tG
c4/V5OVeqffJ46USz4m7K5O8WrUlvu4ZfY5Z0Hr+uqt5c/e3FmvuS7Js+AeYLoUIrv5y5bxwIAic
4Qczu6nK0cNYkqsBvtCbuCaG/teb/ozetNuv4X+370+3fa0gltoZ7jYPwhhLfTUgl8ZxNpshZ1oU
8515vlhUcWE365UdeD38c5h0Y5o/iwd04Tby2ima4O72UiWvBvTi7TVTcl7tlal82OVP+10fHiN6
WbuIxUWBNfbIGaWPj2Os1dWAXQqRZ4SdgFij+3E2m+dLAyMeiMzTxNKpIEkfTLS0tsmGtfvuTXcM
sUFnDcgvRDdVOJPOT9+39X0GJEBBIDw79zUgELBY0dcUnATBJeZpIsBPPozH9oagWFZlMZ9DCzAu
DViotchdEVievqqAztdbuhpakzCo991bazSc46uBvBgNZaYfTb7MqzyZ5/9nhvmyeumkD0nZbMx3
39U7g2Gr+4AwCkDUpUCYmPF+IN2/T4ChvBcLJuDF+lIsJBHasfzcSkYg2X4fLRZjjoBdAVmf59Ps
aZ6N4Ec+dQ4/G2lyNpspOZ0aPsucVZVArwOpYNcl4LPdQYN3ZOMxuTfvkyX8LI/7hADC9bTHz7Dg
GWonJXBxs8xenb3SsW63KkOpKx5NmQCq9mVwy3o26IegX6qv/biZt7LpTvaQ0rPQJaKZtC1OM288
BjM9+E8NWJAeFAvoYSEuevNbfxYmvE2U+eUFFqVTIeQuvb0r0mS+2SDokZNpsjJQONLP1mmzzQV7
LDDsw7M1GIPUckZS7cUEiYvLBYBNp/R5YKvmS9jG3EXYMRu7GAl8nocEvGt510UzfNaN2wvgdksw
Mxg7qcz9U50v+TMsTPDF9QSlKUnQ8/TKF/as48cyv8+X+1OfJp9TGzN/f5dXu9vAzmJTWvZ4/pZ8
SW7TMn+s9pHTyVup4jMunclk8o8fKLic/qkoP//dJhaVbfJM9MNtRScTrGbrZWrr3Nv4y5coiibT
eZF+nuTLL8VnY0OFOsPtlGQ+xozyprbYxLeR1ZP82olvyqTEsO2T7fwJmGe+WShZZpPSzA3oWtOj
ulxcJJsRlbVlz3Mwar1EsbZOq+qsf5FIiG3aElmn5ElWNmWAcbzL/M83gE7xkcSdkTFGA4wvFMmh
pLRElkVRHSCVfIDJxTsl21J/A8cx5aQ5nCJWe0BKa5mrJ6Aji8ljM9aR3JGJ0sTMlLOdOPnt1+ZL
TRzYALMLpWWzqW6KaFsUprtySs6W05Y13EWrmO4xgMJLM++aqo3BJKkWgjifzRfwNMHs6qiuapc5
GSNtl1jcl+2o03VJukwgpuJA4M48nOzMQ8eX66uMSCCdWG/4tZ5fmmpdLjuaX+APM3TCHyjaqv0H
+gP7T1OY/6cpLP4VhRNqFV6ZxW/Q4U9W+T3Utz51029EnjGYZSlylsmyWM2NebTxi3Zqpi9ejHB/
e9CSonGW8ClVoGY2HkNdBir2kK82AQwNsxU8mRXlcD8hfSiLZQEEc13WneqreQGs0v542RJTj73C
85eg2fYzf+10jpz4AaX8NsFIOFAJZ7qwVTYdj60JPwKVmcfJHHjafvX1MocMPLGl/tVu9m0FmNL3
68p8ff2XNtZ/RaN5fV5ozwqaAxaGbd+xW8ASKH5IVJ+j3zSZ7fX7q0keYRPSBDL+/b9fv5q7Smf4
ydgjVsu9ySFHfY5KOmOHKoETpOvSPiW83SpnFxPKGU4mC6vBxNLQMabqchaaSIZbTuKtnpbpXbJq
WcqCeOl8KfLMGR4g++5qeAVNJiArn24KaPVrYBro6E6OPR2lm6OOy3BRSCi/D9cmbUV7eHZ2fQKh
DyCSzSHIRTlPK633GXRaZE91ytuR2QskSZLsJe1OH6jcsthLEnGqnSNBraed6ebh62959WCfRm+e
wjo2IowzFMyd5tXVeOA4ZfJ17Ox2BT4CUfgBA9ODAQJ7hiCZlmlnIBGCU5KBOcqsPYCRQaCcRnaR
LO+MgBrCNmpOudoNWN14wmZIMGVXfzwa4Ka+o2dA2UWcUnUB12vZ7F/q4wFkZWHUgSUoNYlI7QDu
EaWsJpickkXtgJhyTTJJhBIzYxJuB1hngAsjjKwH+JEd1XRmF8kfu7g2T5edcjY/WB3DtoCKaUna
VpGCS55MrVUG74r7HJowJ7j52Dz9V4OoLIuyfmK+eR9gL3IA/fGj88N6Md2+AWH9auDny6R8ct4u
gKavrNtsbrNnc2hmDeA6nYuEAgrnxdEZ3xBdOa+0FwaUaOGGnEuXMha7iqvIDWIkIxpFTIjo9XPe
1ugsyWQPDgbmgMYAImlzbmXvvn3IF5vwqvHQkDFEKXXjSDOXythzNfK4y5EOkcZYR37ch+eU1ANc
pg+XgW06PtsgEJsIv4DZ8AvoCuEvAJ9HYkmpDF2fxNqlsaau0iJ2OaPUF4EMpadO24uMZmWyMJZR
Xm/e7Fhde9vBLlbOj7FmCOI1PZPZ+yAHLEY48qXrqRAgS45dX4TUJVhS4oWRwKQXcld0P/LunLYC
AsljBQTlxjrB8UFSH3DNsS89u/nEoy5FBKyuY+J6LGI+YZFHfP+0rc+ZugMUeM0x0KlWB5Zu7nxn
7pP0qReuFBIrcAaX8YCDnSWEEhjY9VkgNAqQjM/BbQSfA93M6EDPODqCLqEkHTv0Se/wlPSpQMJi
hQRApHB97CHXo4hqDtYP/PAE6tNusRkcNJhsGhRSqFbw7S6mWGHgKvZ5gTOEFn/ErCW9kFFf+y4P
Is+lgYxcrahwPQSG1LEOPC4A03pV2ri/tje3llKcM3W4lOICJVCj2mZpssVXcD4q5IjYG5ovAMFX
KERKhK6mHgRNQLmrBAIcAY3DEBEZU7uZtzVPuH6XT0tIytfx1hir663wfgNtRwddhNMe2BRg6zbs
N/a1KzayE8nIYmUs0pj5kesDZpdGiLuaQZQHno441V7scXIWK0jshwkDXYQJOUaoE2ILTAthXKyX
Wc3mweVGGuZD7hIjLAAsYZRpgpQLTgdBHXMwMQ8C1wd+IrCI/ShWZ8HuhfdhDlrjHejJjB5DT2a8
DhXwouDT+9ub+fo+X96uH+1x9LYq6REgtx4hIeUwxlwRe5FLsQ9WVpi5GCosx5IQHYizwO3h+5t3
/YZupucQYKehdNQxmTlWxxhyEPlBsVgUy5sEOv+VM4SYHwm4R9uNED7shBeHUFpj2A0ZSFdDXLlY
kABD7Zfcp+c9PCmn/ZvgdQNhD+FUMOxndJU0tE9JeqCkl6Zmbp+nGauidbfWFbgAygJ98H0iPdeL
BAHXg8CG4FYu8pEIoRAGMT+/eXuJ/Trsxw80YH0amIOAqd+IbN74NOVm00EXVCsDIWzdj3AP6SiA
JEgw5Gn4pgRsHOI+U1RGKAqjYw1uyvwLYGpvR89SJ7alZ2ZHuVnWk69mRh4oZ/0+zMu6T3/aaQXk
Y6RRHVkxJFpgKMqNJfyghECJDyGJCY8IhKCQ6iD+ZmTtVuhXpjOlq4U5LhYABx84WZg3z3vKp1tT
fslT08STTcJI2TpqMy20P67vWSLNo8j1PEhzIbhYpCjHRIbfLBhb0d8MqmM0/bcczxt01SQ9uuvp
URaZF+UttO+27ui68tS/66zIha9BT2gkcJPOFbBiV3o2tBRVMjxfe1qvlTxb+x2eU/lkM9zVVac9
um5qV6vlnyfVrCh3TQlhWzcFEhDS0LMe6gMlgEIGBQDCMFTa1x4WEtUJc8tKGnnXpyR3sSW0Dxsk
uqzGZr23odn58v5jlW+PcYdQfAAZ1jGKpNAu0gqQQZMK2xH70JlIEWkUacl1C9lpgV1QM3QMCuP0
yDn2fvt2CanCnhkPsWJNmNvflqOEkccZOIbCoQCOEvoQHjRwMbA5poGCQvl/VvrqWe00xTqcOeiq
kvXoR9hsNm1OqYvHp1kOGm5tjSBjkdoVgpjoMI4FZF9rcK4ReD2DjEwiQrEAKZHqdYWuzC4cznrg
qMNiF5rp+v72aTEt6oqORM2ubEGPsB9GQFqhXaLAmkXMoEkNoX8OeSAxiZEXyOeYuL3CiazSmtHV
QfE+HfQ2xh5MvsiSuZusltvz/yEle7N6EcFxDN20FMANtQZaKKGXiqDpj6MoJoSRrh8fC+zi0bgH
j9EHFapRZZOFbFpn1qgEMtyI2HZEeZHyoer6MbaNHYXGTgXCldSPJUOALfafY9jOMv2W7UzpqKKy
2bEq6qjVa3u9M+Q1f9B1SyUgynjkxljaFBHG0NlAL618jmgQgXFD/jvLU3tGB7pGyTF0LeUB9FuT
lOlDfRgAO1BXmfq3rTLaVyHH0JUS6AWp8BGgj7SL7ZtxoYYcx/gfV1x3QE7s0Xa4q6TsoRF1JW36
i7hYVh/Mfb6qgKJsMwqx2duTUCyhY4WECNWTBoGCXRHKFVorHoQcNAz+8BLq3Z1o+T6YVbEu06YT
OQbd1Tnt8Umdya3Om8KXLVer7Rn6kBOyDXcaQxR5CNgSYrYmKGXPHmM31EEUB4x6DPFzBbUltwsr
69uKTG2z0GfztLgvdwXesjfqeSpUYP4gRtBC+yF1PeDbbkRUhD1KPGgWeqG0ZXVATHFP6skkr0v6
3ulXJl2XeQW8WNYezzmTeITZiNQ9Jw0EDjR2I22rpi2YkBRjVwgOfhFioCTsrGvcbsSf8uRmdNDF
KHqA6+yAJy1NZcXtaRIeUUCsfBzhGIdgPmjqqQ+tsr3ken6gGBR5jwp2bk87Yru4tOnBZdKts6UQ
4mn59FgVu/ASuOkvqJY0IMrFzAcrIiRcaAZ9F6EwlDHSgE2eqNZdkV08poc+ZDN1UFt+MJW3rh7A
8Zv9rfNZoDCOhKVpUQCFzpfMVUhBdyp5KAiLKRHPqigb4f27uxnsgDasJxUbfniAs3o0Jn0YgfbF
vX3RuV2ubA9A6gpZ/7bntMr3fRoxVxAKtSWKsauRD7WFRR4KKaRugf+Ik4TbGtWHPlAdrz6c1rUA
P25aJUJqRhr3Lqb/m468XbbijQt54CihVswlEpyZIuBW4MnYFT5BFMMuyvo4sMVM2nIGnbV6DqIk
RuYgvponrLvwoiPcdCFQx6HjB2NTBQWQUgKxJSVxgZBSHNEYU3U2abblDroQjpO5JAL4J227RrLO
8mJUFcV8Wnwdefavu+YPW7ZxU7WxdXKhfSIhq7vcU2CzOJCuryDbB1j4AhieIHF0vq61hJ84dWnN
6Cijp8clQOqU7JOFPXIKOukC0h6zVEnZByYBJH+qgIBCqwIsFHNgoYKEIcFKRjg8kS4OhXYxpbQP
Ez2oCI2B1+C6q8a8H5cNJerY1vJRTLnLuQcpjQNd9mjdWAlNPBlGvoy/bVsr+Yxh7fCBBsctipzS
XQvtv/Nu992SZiMOUMNIU892SDz2gD0Tj7jQLAcuD2UoIYagb41/19Fba+oXk4KA/mkdfB21ptOe
lDCd7iKy9c8Mu0cUDCMpoXy4sUYQhj4kbyVo5EriRUBnojDC/YcBe2EHGI6jT0nKDxIzUL3maVnT
XBPBG6KgwwBTCDfIuVB7qYI8rOFv671QZzCXfhh9i0OeILzBZmzQRaZ74HJ8APeNWZrmtZ7dy99g
wobaC1QTBsEk0z50rYhgwOsB+9U+09BchZAhfKTBms8phT1LnXimcTyxqxrPelQTh/k5We0OYQiW
I1x7heA89imj0IIDS6MRiSF1sND1oYHlnhfFmoXnkvNOaBeR6PMNSQ8QraoEUsb2qUV9umoNHHCl
IqQI0GrmQ6qALkrH2nOl9/+8XVmT20aSftcvmYgJdNR9PNZpaUZey9OejX3bAElQ6pDc0vSh9fjX
T2aBBFFAkd3hZThiptki4KosoCrz+/LqaDgIS1jZGmdlmg1bSdX361Nj+p04SrX961/7zd1RHmGL
9WLUgQkAdK00h7ctQK16DJRqAXQuW6piJrUdnQ9Tz7+Tjfn3k6/hbx/SDydlJPD1ePSSi0S7rDNo
dsINRgF4B+xRxUiB2IfLQb2SdPHup1cwp9PstdD7Nf7CLKLFufnx+cvT3dPX5+2nlYceoba8oYAH
0PV8+BUZjGFwXCzrguKw9ZC8WKsBh0cGm49lw7l5zTm6MPV8savbqmXuWssciFgscwP07cBYxxqu
X7E1x0FBjLFNFpkGdWAAsaMxjsARPZGwe5UFwGwcU5m/wIAW45+jQovb5uuxfb8+gWAMNwts9PNz
//D0+xhqpzcG48mclUPoozIuA+CPXIG5ECEC9AdL6IUTnEllVXYXl3Eaui3/6fqbWsZtQ3A9+Th/
e/zyNKXi/oUWfWG1FZarTnGgmxygEIiqKRwXCqgedDMNtD6i80Gq2av0hOlLtQwQhfxiiEj7ANOL
1FEvCGJJ4EohAurlMiTgTDK+8PxeESKaE5L8ivsXN9UrV6a18mVg5dPw5RtuFX7DkU+hF9clrYAj
qy4S7TDBqKxUdBkTMTQXKXF1DTL1FqZu34RXqsUMbB0lgi93RzD9+bcZPhKM3VAqiznkQWnjtQR9
ixkx0fvORB87YYThDj0YMrS9Kr+1QJIdOG0Igvhz3M0Pw69fvw9znz3HHc2lgOdIdWcZEpEIuMgx
YHDaeaBtwmqSclOM5XgLYXhDGEGwywAKs/kdHsQNmR4MUgs4P8ZhLokHmgZqAFSaIYDdQXEbjeSf
iVCfrWqUen4xNOY/oILaIfzfd7vh61ElUUAr6NUWCowut6ljCrNGJGbaWWk6eIGGM8+tp+xFn2oZ
+bw7uFyupR4aUu9lvzgY04g3734qgBesQbF4lgDWIvA7vlgigZV7B3BLIfexhHcmENhkwjIqfKbW
XHYLl8Hb4pdLc9F7tl1j3p4f4kUziJ4AngMul5hohZ+o/r1jnGTbUSFApwbnkbS7jijAjtQy+PaK
wWGXzpC69KYW3TTWI5YY/p+bu389Fw8lLVqKGdzJQWcKp0d0IRmwDbyAXEE74KUkWulotq/yYB1H
b0t8vFrJLbdrmwZfTp72svF+DKXmcfLjmGJGkg9cBbDAAfP0MKCLHmf0WVnCeNJJqnylHJ6VEPUa
dmvL2IPNOILX7z/ePU7OH8HAPuCRJaAwCJDCjhpMoLIeWB6oNgBDwRvgT1qIP4tKzwR8U6+BNha2
JceX88P7fy4Tq1wiAIGACRS+BOo5g3pWsUtOSK2IAqYor/NSpskrkTVdezV6rSbz9su7nBdEIntg
VQQ0jc4cs5RBeCcAnWjP4X+JeM7SlYjEafZKaNPIFewNnWIcv/UPJ1zHCO4eKTVzTmMwwURAFsCD
LLA/QNbCGQHUSNO0AHanQerJaUMTmhWuw3L17RfU3fymRCLHX9BdkWHbChAlcPR/Swbn0Fh45UFQ
EwPN0rMXX3l4fz7VJ7yvBW7Asd7oZY7Pwe39+O/7p0/D491j7fTWxQCVz8K3ePaYM58Mggr0fBvm
TUdlttkY6TW5fuLL6Nq+Xcu39n9PN9UPQrPWg+CLiN1jf79Dp+tx/2hQn6MjnEQC2CW5TnmEp+iu
8UmRzkthAGb5BHT+ojdhPvJCtMYxNMPmQoD75qfbU6xbASoQJbmZFPAp4URm4mUnHENvOcBQF5Po
pBc6qqATk/R6NvckyZlNedsKjQPzX2/M4g5YJCVVdUh/kfzgb3JIjaVU8PhRf1JMUCZghbPSKdhE
SGLhYkrSfNxasIaB2tDNcNwof/vAVs4VmbNWspMpwIEw8OQ9poP5BBAX2IuL1FzNucIaItOGC3XD
kKRXWunu/vP8XB+4JiMYijdOEm8sx/xD0EuGKcAHqNylyMllYkBpXYN8vZvLUKHO+89vavG3jTVJ
enwNv/bbT1MAwwjEmjQySzG/IxCOMWMDbIdnIF0CXg/38JKsb+6J2Vi1DJI1ZOjlMn1j23/BjlDY
JrXkW+37bfGDFG9vSZrSQjJrOs01Plyg75572mmmo3RS2STM/8sHMleULWHOqMvWrdUD4I2s941g
vKWZ6kwifmAtVCCHw7djAKWRALxPA0zAE2s6G4EcByAswXpMI2evzoN7OZ9odVu1MKF5Y2FmQj6L
PgvApu2UqiWScBRxROAefiCT1cQCDGIaCAAgjNS2A/WYtTgNj+5GDHRJsPBnvsUmRw/D42N50FIV
wUqADN2GRGG7Ndj10WNaKupEEyM6vTNAjGCJVfE1j3k91xlqtbqvXtnQ2EFyWOYKrDQg7iA+HqBR
yXIfQmYO6/NoxugvxqEBR8VM4MkHI6hjf1zJHi5Woiu5BvT45TIHf41mADOhv0GU/JrEM6GYO4vh
EK4N1kZJLKcJAtASPB1Or4OWGjcu1tN4FUr1Dez6eEyQnVICS7YtKC3CddQdJRSoI00KjjDVHTFJ
Wesy1+Qq6Q5Vju55qDvdUi/T7BrLtGTx2n4JYa6iOXNEy2g7oeHscHT7WukDGHJPogTEC2fnNccG
hm0LDBdqMW1rd/WTBoLD9PXL9xs7IR88BJQG2OpgmzMN6PaBH14k06lE4HBHkZ2VNZGph6kkMLKh
dDD5eSKsS74qvJIeQH4H3A+r0yLyKJg+emCtzhEnbbwWX20JrGhL4GVd5WGg/v5YplAyoUA9aCHQ
64HYgAUNpIUajBSxoMAYRPeqIpJp8IuL6GslaEVDcKsnrPvD+6J/lo9bJsI8N6GzGWW2PoGlEQpg
A8D7aLzPgVzrcc8EqETveWOT9ELAR/XM+/uP7r7/8m+gXfjY9SGJVRebZIBxc+pVR6kpySWssyaD
6bdo+C3RLIqrM8a5SGceweyOetGiueglyz9mMH66w3c25jASglgH81cJVsCSlMAIa6CJAPoQXEdu
FfCzlxjBa/PCDhK8fXc5zfHtu2p9g22sb9guce277dykMXTrMnlD0RIILSnFjOTsI7qv4IfB+Dox
EeARVSrlVx2n+RRnLPP2jDkb9utDtWU7tt8P5VC9dx9c+PsqKUcn7TCnuqMKAxGWis47AKRKca+s
URL+/yd5EucSzpe2lWRtqbeSLvnc34eHzfDw9bGg7UnPEeNy8h21xmEWau58cBLsdA5JygQc6DJM
Og7alvp4tRaX6Ya4YhnaD5+e7z+DtT5MOqXDSDlWmQKJi0G7LlIsfaYJlITSAf6ZwbopZkgr/Nfg
B/U0Z9hBfVO9nF1jY8ndlHTyLyBj/T3gjklh6xKodWBifPDIPgFBOIZeACfgcEjMB4ws8HYi9XK8
hTCiIcwwmY7wj3z7fPd0CvsVJ212SWNYK0iRYI8bLDmyANsMVSJEq42NNUyoh6kkUGTtqNkqqhbK
AmHjxy8H44XhqoMR44AJSILHEinmlwvqAbJw3fkIzyUx7bXwf9iIjddqcaluiWsWfqXSb3LKGVK8
uLaNVIhpgGU4jKkBREgWTlKSAHwM09mwSy6l+ZALkWxDpEEcgdb3ePthFfHAChvOwOTHiHTZwJE2
8Dq7JBIPSmStnf6zIh6TfPNl7aRcLwu+7I/Ler7fVpUGisFDxLwnakolcgY44wgGo5W3lEklzhyQ
aaBqeq3WL3qnt/2CM48PKHy93999PDTaKiml/MCZj0lE3DrmLOkiHlzOHVY6JdmxDAjMaQkQ5nJc
ozHPuUKn1Y3VuvpGFt6uPwVlNo+/nmLrJcrPgguEONZRLhl2C3Egezn9SkcRgWnoRRHkbIx6brWO
Ue920lzyRI9Q5ZD6Q7QGgFBYe/mtFJiwZBk6JBKodB4FGCM4EYAFAYQYoMaKhut5o0/SnFH80/U3
9Rpta+HL4PwvD8+PTwn/eEJ5b+7jPGtLlm0knMEMC+EwUV3DOh0gJUy2Ix5wLk/sVcHh1kRneGXj
zmpp+0al80A320VLkLfvpmR2zLvAwwFwCHeXyhm96R0NwPw5pblzIQOgFZlHMP3cxeuk5by7mPA+
XX5TraNhHuFLvehg8+6n2+eDV9aOa7NjUCcSQOieBNBE6KIB7NdZEigwE+2ZMCqZF7KrppHP5VIc
Li+kNi2pl8WZ3x7u5m/95gP++0g1mEJmlRIhYOwpqC1026fAAIdr2knFJDVBKGvFNV7Oh1qU+V3l
0mJ56xzIgTH4ZC8ub9Qjh0r7YjZMNEzyVNog5TGHyQYZOgnE3VstknmhW8cfIY+TLBfWvFQisMRN
a92T5v5Hv7vr77fDInwkFBWGBdsFFz1AduD6ngBZlFaDoXdReEKuFD6qJaiE13wdbxn0ISemGOH/
u7uf4nBcluRObWIIXBowkwGdzSx1nlvZEQD1XujgpdBnTPpptFoMwVpiTOB7fAo3fnqG1GIKegHg
xDMucwDCkwCAKw1I06nQAYlg1gLJ03FhBuvBFnI0FEuJD5g6gfO/xrI9wJCaj5lP+IlHM4sItk13
UQiG7aVcZyWGYpE6U0ecFi9kmR3HPpeEebhcyW32jddot2qhWt73AKo+zcqlNbth6LMef0E0HOB8
EWNL6ykARFpgDZPrEhHUZSpsZuJ6ZruW55y7Zn5PteqerDHT0FMxK3r6dgdg+H9PzY04viMkQ1SB
RqEeXhRXpWcZKNIEi3M0ukAFPVfwVA9Yi9NIUBz6zbJFEf4tiN3wVJJoH7dF8Y2lklyOvopgswN5
sLsIQieGhfgKjFUSmRpBgddn+qq+BjBRPE50XqutbqsXteGNRa0C9lWz5Top1qaYjAYdAUAbaKnT
BggWFswWH6AVjlhziWDNh65F2zWUxoZOBRHb52+PN1PUnuuxeJOr5ASXpBPcA1ZzEkuMgY9Qooz0
OTodxaIiYzZOJcCmbwnQ26It4OYvZeueotVTIbgTxJEAmoozWly8ApBIwqSSiL4b2ILGNR/JfMRK
lG3DdzRsVwpg028/P3+r0gFu5BjquRnfFrUSZlemExqr13RSQEAB91kfMoXtp4x9Vd8Sv5hpvuPG
a5X8O7tG4gNY0cU2m6ilBf1/qPdROWLlPLxQjwVgHgyRBzSHaTrJRhL1CObO7q8GyxyGRprKXg9a
21Wu8Q8P/bdPd9vi/8ZUnOIQtvaGj88zmOCDUqIjmL7PA1aocDjb1sOb1hwIMHmZBx3nOB/zPt4x
X8XeNBQShvcXXPnt2FOk7rGXucB6NN3ZXJz3gEyMl2DWvGKWEx2zeVVzlcPg5zLvy8VK6G1L6K2Y
FE686z/ef33E5trD4yP2hK0zXykho4r3JGt0ywGn54KBHQvcdsKW2hMS/TL37/K4tYhq2xBx1Zrk
GCjYV90Bx4ABZWOdDMkxmCw5qB9MlLbcdM4AnZee88CJd+6FNiVHX//lLoGucd9sSXD2Niv9AV/u
1NGU/vZtOnpgD/DosTEdC7Y17IosJOjSHOEpCyo7BXA2kCiDYu3mB9NwtRA73RJi2a4WAFC+PT7K
sV+KSUwFYgFMw5GH3QoE3FLHOiWSs9iokPLLbrMy5tm2Avl2Iee+Ied+Smb+/ZSJKvElC5ZIwAY6
wWHwIThQ9+gLiUykKGMUli024++NNFScgrbmlZPBwz9TNzk3WSnDCjQp6bFMF/BEdNjmQ4NuZJxK
G2B3kXZu1GyohQhqLQLnQ6MIA3FF8Q2VnIixW0bSRnPhAE9yrMHgwQPQpNhIgXgfnGfJqhe1IQ58
XhPi1UpkLhpvi6tlQkehU6H/9vR8oqKHlm+JeAVWEQsoKTa/8qAKPWBGawiPQNV8vgrbnktwIV/l
cEe9RtU4vlxPPUw+3H9c0E8qqYejATwpaexbAmjfENCSOUaaWDA2Rn4l+jlNXots7FpksVl6Q3bD
4+enr98eZz0ITSnLKJ/oqGLSp8BIlw16zDNjQLgw8mqJo04CFJDkdV3AykRHooE3nGsGtrrxTb2G
fr0wpaeirbvtM6L+Wc8NCodDFiRDrAYA2lGB7wSPrOWAGjQzTglAYTEs2oEtxqrkUOsee/DlMGmL
/nnWOcaMdTugxwMAZIOEA4CpMZhp65F/aCGTBtXhTC3BaZRqcs0368m1XhbE/hwxiikL7Chux0Az
IxrgUkwZ40Yhd55j9RDmW5MI+lypq7t9fo5nakxjvaa9WK/Jov9u5SZfNwQ28hBD18z6qECb0Iw9
35LG9hDCdExlRrFsfmzyfVkFvmTt63uqVfSiocHhy7M9Zm/GOBG+KFzI4V+8dDnMJpIQNKBE41CL
SAN4ESgDCUwKRg3T/k8Jq4/X6nXuGtu/320X3UfGXrxjx6I5/uXMA01UGbAMJr054pGdsY4lr2XO
XMG5eF3e6nH8S72AF32LUNDdWvoNmeqYD9zl7n4/nWGBLQdG/1wU1FGpAGAY4HBG2M6xwAELg7FK
wGHiZcZ9GvVNPb1syTQsZLr/+nS3n7V8ozdsrGkGyiO8yKnL0mE9DmbPSjjlQjl4oFJTzi72E50P
XAu2abzqwej9tlI234vJOjYeG3OUAIJRsN9YcyzsmH5gQOd2ybnAKdiQYMnVNvCYbdXewOXam3oB
prWq3apP7+Nn97C5ezpGOceW1/CzOBqokhLohdYEK4GBz3mGqZs0g6YFouHNZVy8GP1c093qpsUq
hsYqdvuFIRibAKHaKp14xp5b9NBzq+SJJMqTEWDmvYA97QMDQpdlB5AMCKmW4jX9HMvY5zVmuVxJ
XwD3Uvo9JSuVv/3ao6Y3pbICgS52obVRY344BpaB8TsCv0ULVCBSaqlJL4gLQ54TFS7VYrIG5Nij
Sld1sK9q5TyW4JdeziLZxIzHzvRgkxSQOQPkrUvK0SCBsIScrm51T9KcC/01nL6WknWPhfLl8pUU
zI0Ng0+JzAk2PSyIdMFjE0YrAcNjT5SQHUuaRmwm9YeB/HitFrUfGqJulhVet5/6hzHpmrMxcxU/
0bpaw7kVrmNYHsqZAHqNYeXsJM3RKxeje1Uf1nGCM46B8WIluF7njOOXfYmvYuJo/h/8z4bdMncV
qGYQXMMjxVAWJ9i03RvSKQLHNmGLbH6lvxmwEGEh/qYl/inx9j/FXVlv20YQfuev2JcANlAKe/II
4AceS0GRFQe2nLZPAi3SqRAdqUTn+PedWVISSZGSgwatHnwsVzOzy71mZ+abUTu+1dWKxQmMfVdS
4+KMUNdw/GY6UowGMqBK/SJt6MC8IfKTOF3s2Zy7dTTVD+kW1KCjCay0f3lCBWgqtZ0AUboDOCz7
UZgYqFhJYx1Jz/kf0VTrQlvNxnW2ODUQM7Xb2YZrzV5j8mG4GUuO73sRTATEfJbovAV/Jcq1VcwC
XLiYUGfjATuoN4V0T5VUljmHm57vqyU/mhi42XJZDPMSnT98jRggGtZS0Kxt6qIDFAfR3aQVdVwj
YjUZsQ7uT4fg1XpaSThomXvPxPFgICsbtChc4gIPA7XRyBypJNa6wkVr4k11XTaxPO1o+rNo6+eT
vEiz6qan8v+G91oaE6lEDGMNqg5DY6LPE9t3oStADB1S6nlcO7/OmLiXpAe/qXpqNZtzum9yytq3
WahivyzwZGXSH4hy4jEPL8ExDgyU8yrFhutxBMgTTCUBrCLuayPbHkf9p5LHuhc3iJefDgrOeNvK
+CHfIvY+mv3rHvrS3MbhZhiHkSukr21PGoQhY36CwQqzydMJHFhc/SpDTwejHu+J04pWsw2qo2FO
e2N/2qygIRVctl+68RnDrXK47cQI4eRiqzCdUhJoqmHx1on7qjCeELh0W6w2q6asp7kVfM4p7Ozs
QpDYAJZOzL9UJl8SRl9T0tGeH/vogmp8rRic0kPP5jCoHEVjzhP63y3h8KDRVn6K+wOFDn/OeAO/
9WgfkG6Z+ih00YVMI4gsLkYiiezA9Vw7dqSgoSMoLNpnoVtPlyXOO3Q9LlJpckaZG7HN+utxSZZG
dwilDBlToOQhCJ8HwsCYiO1ARw4XPJDKEe17tRoVq8mqY5SKLGstGff5alPkHxf5t1ooRXmnbIzQ
xrwmYN7F6Pwj8Y0jYDMM4sAPldLh6052p2z6tuV2vUajVIdmD4X+fqP5kq5qu1wJUC8ijcE8sfGg
o3BWClni2LAgAi1fMRG18IFrNFq8O9ZgX2QtI+XXhQlGTdJ5XjqLYaixmUT421xd8jDBsFwaok1d
adhsEGvdZzAM4wB+ROo1Xbrn0DOBqqdWU9rTcz43EDCyfTFYXUH4Fc4/BqE5OoptmjA4d6JpxtdJ
ggCNXLpOEseJ+lUh4gf2/VvNySUEn3cowHz+fPD23v29XBS5OKZnMfs+5Y4fJj66WGAgAmwtfuTB
mUQqT4U+zJeodYvcINMQIO+4TYfCp70Ay3T9aZEdD8WuyaMIC6qDsBAuTrEghK0NdmMbNgOeGNzL
tktYnYpl6e9VVpfJJls874PbH15WK+h9zEAapcvljqzSLCdPP8im+Cvfki/bDUyrHUz0It1+yk0Y
Labv3j8oM5cW6e4zpvCefVlkb0mZAbNKpjuHn0X+ltB64S4vDCBpVd5kfIk8/Xfk4Z9aq6AHDD9E
TVis8y5+AjQO+XM8rY8TggkX6v17D7Xu1ssfBGE28cnmmRx0v7dkuinS5Q2nMIcmZJvvFlm+Lm58
NuCTKynfXJPdN5hveTbbvBQzEO1lbRDAgWF2w5iH1ZTz5tr6fbsoEAcBaCD/A2UgNCTf4GGRr2+E
cOT4igLVAyfYtZ2yqMbohpZFDWZACN0RgBex7vVwdPeeTP/8oEnP5+PofvoY3Fo3x09f1eqxFQ3J
zmjBZGHS43bXZpKOrbjCIcCc7zA4S7/x9hekN6AT690DeTeakk8lcDAQn2+yvIOuN+6pegWdBftM
nl1XAgzocP+l/SMCbz7NMkQPICAZOmnXOu/aGhu3LxJgCbmDQ2NPV8ixNQlub+8icvbDqDcQk33V
qzRbLdbXvbUFH1sP0yAak+FjcB/3k1UOdthDkc4/E3JJgoEzgfE+MyIEU32mrpDQt1Wm2InplH5J
B2xizWZxMA0uCMDZQGHV0SQY6gt1FQcBZrPb0fuxjuEF939AFRdIdar/mF7oAAy6waqP70fRXXxe
BCXhxa7M/CIISHmmWRKpVtNgBQed7Y8zdIHqT8yv6d00uCUX3+xADcuqvxEYVi+7xiAvB3fZKMYG
7gRWA+sfUEsDBBQAAgAIABeRe0bCr+OisisAALaNAABHABwAY29tcG9zaXRpbmcvYWJzb2x1dGUt
cG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxheWVyLWNyYXNoLWxvZy50eHRVVAkAAx7/
FVXr/hVVdXgLAAEE9QEAAAQUAAAA5FvZkttGsn0efgUeWyMXu/aFMdcRWDUaa5tmS3Zch4MBgsVu
XHEzCMrq+fqbBXABQJBSz/ht+KAmUYWsk1m5nCxAH4p1ZrfbkXf4/GynP+Xlvd2Wd7vVyhber4Jh
LH4bfEjLx9M0+Nx+Wi92S7u9/fT+zce38e1fb7v3Dl7P7KrM57ktRv3SB59ssc3Xq5NgPAjXM+vd
P23s4eIvWiLJvZt3aZl/sS8ASQFivQ9H6B+eysf1CpBSowDpnd1u1qttPl3sRWwfvV8p5r8NPm5B
odfRaTWByWAQpaW9vc+XxwUpJgJhhqjyiB5hNWJmqJXwEFYYD96PvTbqt2nmwcVfPIKHZii8G8IS
xl8Ajs26KBuTCRn4q/Xqabnebb2PHysgWnLj+4yhmGKKRBglSEVhiPwokAFRUhgRDwaDsEi3j3bm
3T8WNp05WZ4X5dtNWmaP3u87uwPw2Xo5TDebhR3WZh6Oy3WRPti36Qr+LQaD+GtmNyVgOZg3/iWc
BH408cMwHo+9m/HrV8HH8YvGRLcZYOKf4rt3kw937+/j8P71+3eTxH/95uNd7KWlh7/i+kNwOrec
pWDRT2+9O/sA92+9dzYtYM5xcDQ4+QFYbrFYZyeXakjSGXxBzQsz+OL96qbxn37zij/QbfHHV2/8
9n8+3H3yvAFCP3qTyX38y73X/XSlnMROqVK1WGp0JRZ9PYgN3/982cmH8yJd2j/Wxefb/f5ub/39
WKXhZBL59/5lKPuVm1CmZK8hZbRHw38LyqB2GA+PRlf8ZZnmK1RWMwcYUC7y6fZpW9rl5LMtVnYx
nD3BpYMOf6m3XM3nc23TjKck9ZZp9jhZbh8mZZFuvJcQCgPyXEFsRvRREMiQfEBbMlZrSCZPF2UY
PMVqaoS3nziBaP9ii0kBrgj3F5Ps0WafJ9TBo2LAnit7yrn19qLbMkEiFXjAWxLTbUfdjsaQUWym
p56beEC83tgVCDN0IJ4ty8ip50TtZVBhBhKmnXY5TN7Z0vnJBSFWCcEomG8SJh/v3oSwE3Y0av66
aXwHwatt+dcfvMV69XD4100el0W+ejgOn116UdmfiYF6LjpuMuudEITgr6V1qio80C1hyXq3mqVV
BusVJhSRlDMP/fpufFQoX+Xlz3n5+NYu18VTmG7SLC+fRrN8+7n1o6qEvzktFB+YvprZ+vylmSEl
lCg1836+vxuN3A3helUW68UCKuRos0jL+bpYvgYcebrI/2XdqP1a3jiTCebdtO+AujNcLkeE0RcD
gp8JgxOosr0w8uPyN/mq/MHLHiGD11tX7R1VQnahDLPNZsS0BiDkmUCYnIt+IO3f/WAYE71YCHVY
6DOxkFQazyVDJxmDZPfd2VhgkMaqiIQwnJ3F4rmHqenUivnM25YpcADwlWMqJt6+mF9Nyf0lHLe8
fF9FL2s0N5xNnXWT0ejvsOZ9Cpzob9XPOiR/8M5/1KStfIq/Qi7PYP3WJCfmh4bEIs3LbVPkj98a
xbvFj6PRzFa1HwK4AnXTmANJYwf07WEFfAc23W0zh72oB18vN4vh40hItyPPtIblws73HjEavYHV
F3v7AgVMp+nWAuDss/O93WbmoNU/D6NJsV723ZXkC7utgxRY4s3R0oCTCfaiqmLPwwlE6ftw5kvH
Md8X+UO+OrHtGgzVyru5cncVKFQCQNYC+I/0SzrOinwDQVXYHoBTY+dCQWaf/O87Bhtnfoa0/U/n
wXq2d+j43bhkkwnR890qc3n4dfLlSxzHkyls+udJvvqy/lylbshqhynpYkQ4Ey+OkUKvRoiLxf0g
Wjbi41mcw0hJvc/2C1gOWowmbznI7on1powpV5JT4k0O8yfLh6KpnzmQmGcIJEx2BNbkzHkYPZqH
jZ6vr7YyhY1zdfb3an5hy12x6mNsm3rNlrgWUJylc6y9w8TJH78fUTKGO9ztO6TN5lNT58umKMKO
CvP/NoXFf5vCxMv2je4fQMRc57/veL1x6bjejeRompcvXBdZpF9Hp+4Tc51xzThQ3mLaHCDYEsZn
AghikbXu2H9SGJj1DUzdIrN81NPiwsA2b90CiRUToKew+uZs9cxgd0fPADBXMFOhDyNqDoIMx9yk
bucLczaQUieL4A7geYZ1NUDONKFYOk0IbctSZCYEdwOsiYsINZ8RUsni53asB0SP7sItkm865qoZ
iFfMFx1cBFPHqLKC9hkYZA3erB9yKF5e+OHjaH82FBfFuqgOJfZnL8c71eDedZ7vdsvp4bSJ8MFg
EOSrtHjyXi+hPmzrw4fqNsf3iHUNN/JaFxmdz5X38ow33uAX3t+MH4WMGokiIRRinCdICx2jMMEq
ZnHMpYx//J6TsdaSYtaDQ8zmc6hIEEtwsyvE7u7xY77cB1iFh0WcY8YYSmLDEVOJjwz2BRLYRNgQ
YuIg6cNzSWobl+Q9uCSHYD7nMxRiE5OXMBv+DMmQipeAz6eJYkxFKKCJQSwxDGkjEyQ4Y4EMVaR8
fdle9NrRBu1g7dnLjJj5PLtCbfoghzzBJA4U8nUEkJUgKJARQ5QoRv0oltBa9EFui+5H3p7TUmB/
vtVSYEqVdE5wTh77gBtBAuW7zac+QwxTsLpJKPJ5zAPKY58GwY///oHWAZNR9Bxoms47lq7vfGMf
0uypF66SimhwBsRFKMDOCkIJDIwCHkqDQ6ySa3BrwddA1zNa0DOpzqBn07k8d+iL3uFrFTCJpcMK
CQA2CAXEx8hnmBkB1g+D6ALqy26xHxzUmFyxlHPWTE7Hi4JoojzP9aDeDXDLIXeW9CPOAhMgEcY+
YqGKkdFMIh+DIU1iQl9IwLTbFi7ub93NjaU0FAHdXUpDfwVbKloHNFW2+ArOx6QaUndD/QUgBBpH
WMsIGeZD0IRMIC0x4AhZEkWYqoS5zRxXTOH2TT4tICnfJgdjbG8PwvsNdBgdtBFOe2AzgG2asF+5
g20+dBPp0GHlPDaEBzEKADNiMRbIcIjy0DexYMZPfEGvYgWJ/TBhoI0wpecITVoVmP7Dqhs5NDCf
YCGHRAJYyhk3FGsETgdBnQgwsQhDFDBlJJFJECf6KtiT8D7MYWO8BT2ds3Po6VxUoQJeFH56O/6w
2EHXOd5tXAt6qEpmCMidRyhIOZxzJBM/RowEYGVNOAJ6QQVRlJpQXgX+fmNXr970G7qenkOAXYbS
UsfO7Lk61tJO5Ifr5XK9+pACx956NxDzQwn3GLcRMoCd8JMISmsCu6FChQzEFSKShgRqvxIBu+7h
aTHt3wS/HQgnCJeC4TSjraRlfUqyjpJ+ltmFLSo6TSp3a1yBC6As0IcgoMpHfiwpuB4ENgS3RjjA
MoJCGCbi+uadJPbrcBrvaMD7NLCdgKnOz+qna7bYbzrogitlIISd+1HhYxOHkAQpgTwN37SEjcMi
gC5BxTiO4nMNPhT5F8DU3I6epS5sS8/MlnLzWU++mlvVUc75fZQX1p28PR21AvIxNLiKrAQSLTAU
jRIF/zBKocRHkMSkTyXGUEhNmHwzso4r9CvTmtLWwp4XC4BDOk4W5fWRTvE0tsWXPLN1PLkkjLWr
oy7TYqFR4DsiLeIY+T6kuQhcLNZQ56iKvlkwDqK/GVTnaPpvOZ83aKtJe3Q307MsslgX46dV5uqO
qSpP9bfKikIGBvSERoLU6VwDK0bKd6GlmVbR9drjwwrQFDmU3639Ec+lfLIfbutqsh5d97Wr0fTv
n1kc0j/lBzcFEhCxyHceGgAlgEIGBQDCMNImMD4BKlYlzAMrqeXdXpLcxpayPmyQ6GYVNue9Nc3O
Vw8fy/xwYHIDxQeQEZPgWEmDsNGADEOKg6ofQGeiZGxwbJQwDWSXBbZBzfE5KEKyM+c4+e3rFaSK
FXS4N0TzOszdX8dRotgXHBxDk0gCR4kCCA8WIgJsjhugoFD+vyt99ax2mWJ1Zw7aqsx69KPQDU4r
o2frzdM8Bw0PtsaQsWjlCmFCTZQkErKvM7gwGLyeQ0amMWVEgpRY97pCW2YbjuA9cHS32EV2unsY
Py2n66qiY1mxK1fQYxJEMZBWaJcYsGaZcGhSI+ifIxEqQhPsh+p7TNxc4UJWacxo66BFnw7mEGOP
Nl/O0gVKtytyMCujJ7P6MSVJAt20ksANjQFaqKCXiqHpT+I4oZTTth+fC2zjMaQHjzWdClWrss9C
Lq1zZ1QKGW5IXTui/VgHUHWDhLjGjkFjp0OJFAsSxTFgS4LvMWxrmX7Ltqa0VNGz+bkqcPFKNHo3
ouIPpmqpJESZiFFClEsRUQKdDfTSOhCYhTEYNxL/YXlqzmhBNzg9h26U6kAf27TIHqvDANiBqspU
f12VMYGOBIGulEIvyGSAAX1sEFGEy8hAjuPizyuuRyAX9ugw3FZS9dCIqpLW/UWyXpV31TsWxdMx
o1CXvX0FxRI6VkiIUD1ZGGrYFamRNEaLMBKgYfinl1D//kLLd2e3612R1Z3IOei2zlmPT5qZOui8
L3yz1XZ7OEW/EZQewp0lEEU+BraEuasJWruzxwRFJoyTkDOfY3GtoDbktmHN+rZipg9Z6LN9Wj4U
xwLv2BvzfR1pMH+YYGihg4ghH/g2iqmOic+oD81CL5SmrBaIKelJPTMlqpJ+cvqtzXZFXgIvVpXH
C8EVGRI+pFXPyUJJQkNQbFzVdAUTkmKCpBTgFxEBSsKvusZ4L/6SJ9ejgzZG2QPczDo8aVW/23Ki
SWTIALEOSEwSEoH5oKlnAbTK7hLyg1BzKPI+k/zanrbEtnEZ24PLZgdnyyDEs+JpU66P4SVJ3V8w
o1hINSI8ACtiLBE0gwHCOIpUgg1gUxeqdVtkG4/toQ+zue7Ulne29HflIzh+vb9VPgs1IbF0NC0O
odAFiiONNXSnSkSS8oRR+V0VZS+8f3f3gy3QlvekYiu6BzjbjbXZ4xC0Xz+4l2ea5cr1ALSqkNVf
d06rgyBgMUeSMqgtcUKQwQHUFh77OGKQuiX5M04SxhWquz5QLa/uTmtbQJw3rQpjPae1e6+n/5cN
/WO2ErUL+eAokdEcUQXOzDBwK/BkgmRAMSOwi6o6Dmwwk6acQWutnoMoRbDtxNeyepvkGF5sSOou
BOo4dPxgbKahADJGIbaUoggIKSMxSwjTV5NmU+6gDeE8mSsqgX+ypmuku1m+Hpbr9WK6/jr03a/7
+ocr26Su2sQ5uTQBVZDVkfA12CwJFQo0ZPuQyEACw5M0ia/XtYbwC6cujRktZcz0vAQok9FTsnBH
TmErXUDa444qaffAJITkzzQQUGhVgIUSASxU0iiiRKuYRBfSRVdoG1PG+jCxTkWoDbwD193W5v24
qilRy7aOjxImkBA+pDQBdNlnVWMlDfVVFAcq+bZtneQrhnXDHQ3OWxQ1ZccWOnjjj0/dkuFDAVCj
2DDfdUgi8YE9U58iaJZDJCIVKYgh6FuT/+jorTH1i81AQP+0Fr6WWtNpT0qYTo8R2XhB7viIghOs
FJQPlBgMYRhA8taSxUhRPwY6E0cx6T8MOAnrYDiPPq2Y6CRmoHr107K6uaZS1ETBRCFhEG6Qc6H2
Mg152MBv571QZ4hQQRR/i0NeILzhfmzQRmZ64ArSgfvKrtzGVa9C7V/ZAhPW1F7iijBIrrgJoGvF
lABeH9ivCbiB5iqCDBFgA9b8nlLYs9SFZxrnE9uqiVmParKbn08vMN9Qooak8gopRBIwzqAFB5bG
YppA6uARCqCBFb4fJ4ZH15LzUWgbkezzDcU6iLZlCinj8NSiOl11Bg6F1jHWFGg1DyBVQBdlEuMj
5UeaAVhMK9e4iKkhtoUqTc+jRqczfkCVvXyZTvMDHm6q6kWJDyUA2LVUDHabQ1oN3INSxaGdSwyR
UYLbdbQppr3+TPSsPz+eNfzjQ/zqlIy4257AnZLzmKBEJZDZMdPuKQBD0D3KKCLQ2IfXH+pVL128
fv8dndNp9Tbo+Tn/cu8RdeLm7W5R5uV6lz2endA7qi2GBPiAO3ref3UdjKYQLoaiUDJwPde8GKOA
h0cUnI8mmjH9PXF0ZemmsmfTWmrO+tS0mHfUnEL7tu9Y6/eBl+6/Qe0TRP1sk0ZUQTrQwNhdMY6g
RwywAO+VBgiz9qlM2Dc6oI78S61QZ1pTH5Om5xEIxXDa4Ub/3KVF+a/6UTsZavc8mdEqCINIaj8B
wh8xCeWChxFQf6iEAfc5o0IamfhX1TiJ7sd/Gh+0MWY9wNXxjPPrdlEOj0dxpMoXRhlumESSQbvJ
gAoBVEUgXAiwesjNJCTtEG0Kaa1eRWh39ZnsPiAKk28+IlJBCMvzGJGAY8cloVcKI2C9TIT/T9y1
9cZtJOt3/ZIACwp9vzz2NRbWQbzr5OC8cmYoW7Aie3XxyebXn6rmDIdN9oyE7CAL7ErykGlWN7ur
vq9uk4AzyfjK+r0hRDQnJPkN9y9uqmeuTGvmy8DK5+H+G24Vfs2RT6EX1yWtgCOrLhLtMMGozFR0
GRMxNBcpcXUJMvUOHt2+Ca9UkxnYOkoEH+4OYPrL7zN8JBi7plQWc8iD0sZrCfoWM2Ki952JPnbC
CMMdejBkaHtVfm+BJDtw2hAE8ee4mx+H375+H+Y+e447mksB60h1ZxkSkQi4yDFgcNp5oG3CapJy
U4zleAtheEMYQW5vSRFm8wcsxDWZFgapBZwf4zCXxANNAzUAKs0QwO6guI1G8s9EqM9WNUr9fDE0
nr9HBbVD+H/udsPXg0qigFbQqy0UGF1uU8cUZo1IzLSz0nTwAg1nnltP2as+1TLyaXdwuVxLPTSk
vpX94mBMI17f/FwAL1iDYvEsAaxF4G98sUQCK/cO4JZC7mMJ70wgsMmEZVT4TK057xYug7fFL5fm
ovdsu8a8Pd/Hi2YQPQE8B1wuMdEKf6P6945xkm1HhQCdGpxH0u46ogA7Usvg0wsGh106QerSVS26
acxHLDH8r5u7f70UDyUtWooZ3MlBZwqnR3QhGbANvIBcQTvgpSRa6Wi2b/JgHUZvS3y4Wsktt2ub
Bh9Onvay8X4K93do7A9+HFPMSPKBqwAWOGCeHgZ00eOMPitLGE86SZUvlMOzEqKew25tGXuwGQfw
+v2nu6fJ+SMY2Ac8sgQUBgFS2FGDCVTWA8sD1QZgKHgD/EkL8VdR6ZmAV/UcaGNiW3J4OT++/3WZ
WOUSAQgETKDwJVDPGdSzil1yQmpFFDBFeZmXMj28ElnTtVej12oyb7/c5LwgEtkDqyKgaXTmmKUM
wjsB6ER7Dv9LxHOWLkQkjk+vhDaNXMHe0CnG8Xv/eMR1jODukVIz5zQGE0wEZAE8yAL7A2QtnBFA
jTRNC2B3HKR+OG1oQrPCdVi3u71H3c2vSyRy/APdFRm2rQBRAkf/t2RwDo2FVx4ENTHQLD179ZWH
96dTfcL7WuAGHOuNXub47N3eT/9+eP48PN091U5vXQxQ+V34Fs8ec+aTQVCBnm/DvOmozDYbI70m
l098GV3bH9fyrf3f0031QmjWWgi+iNg99Q87dLoe9o8G9Tk6wkkkgF2S65RHeIruGp8U6bwUBmCW
T0Dnz3oT5iMvRGscQzNszgS4r3/+eIx1K0AFoiQ3kwI+JZzITLzshGPoLQcY6mISnfRCRxV0YpJe
zuYeJTmxKT+2QuPA/Ncbs7gDFklJVSXSD5Lv/U0OqbGUCpYf9SfFBGUCVjgrnYJNhCQWzqYkzcet
BWsYqA1Fn+jt3rvCVs4VmbNWspMpwIEwsPIe08F8AogL7MVFai7mXGENkWnDhbphSNIrrXT38GV+
rvdckxEMxRsniTeWY/4h6CXDFOADVO5S5OQyMaC0LkG+buYyVKjz4ctVLf62MSdJD68Bm0tMAQwj
EGvSyCzF/I5AOMaMDbAdnoF0CXg93MNLsr65J2Zj1TJI1pChl8v0jW1/jzXC2JKm5Fvd9tviByne
3pI0pYVk1nSaa1xcoO+ee9pppqN0UtkkzH/kA5krypYwJ9Rl69ZqAXgj630DoKylmepMIr5nLVQg
h8O3YwClkQC8TwNMwBNrOhuBHAcgLMF6TCNnb86Dez2faHVbNTGheWNiZkI+iwJfYNN2StUSSTiK
OCJwDz+QyWpiAQYxDQQAEEZq24F6zFqchkd3Iwa6JFj4M38MX3/79jg8PZWFlqoIVgJk6DYkSgGk
hF0fPaalok40MaLTOwPECJZYFd+yzOtnnaBWq/vqmQ2NHSSHZa7ASgPiDuLjARqVLPchZOawPo9m
jP5iHBpwVMwEVj4YQR3780p2f7ESXck1oMcPlzn4azQDmAn9DaLk1ySeCcXcWQyHcG2wNkpiOU0Q
gJZgdTi9DFpq3LiYT+NVKNU3sOvTIUF2Sgks2bagtAjXUXeUUKCONCk4wlR3xCRlrctck4ukO1Q5
uqeh7nRLPU2za0zTksVr+yWEuYrmzBEto+2EhrPD0e1rpQ9gyD2JEhAvnJ23HBsYti0wXKjFtK3d
1U8aCA7T1/vv13ZCPngIKA2w1cE2ZxrQ7QM/vEimU4nA4Y4iOytrIlMPU0kA9n0tASY/T4R1yVeF
V9IDyO+A+2F1WkQeBY+PHlirc8RJGy/FV1sCK9oSeFjUVe4H6h8OZQolEwrUgxYCvR6IDVjQQFqo
wUgRCwqMQXRvKiKZBj87ib5WglY0BLd6wro/vi/6Z7ncMhHmuQmdzSiz9QksjVAAGwDeR+N9DuRS
yz0ToBK9541N0gsBv6o17x8+uYf+/t9Au3DZ9T6JVRebZIBxc+pVR6kpySWssyaD6bdo+C3RLIqL
M8a5SCeWYHZHPWnRnPSS5R8yGD/f4TsbcxgJQayD+asEK2BJSmCENdBEAH0IriO3CvjZa4zgrXlh
ewne3ZxPc3x3U81vsI35Ddslrr3Zzk0aQ7cuk9cULYHQklLMSM4+ovsKfhiMrxMTAR5RpVJ+03Ga
P+KEZd6eMGfD7fpQbdmO3d4O5VC9dx9c+PsqKUcn7TCnuqMKAxGWis47AKRKca+sURL+/xd5EucS
zqe2lWRtqbeSLvnc34fHzfD49amg7UnPEeNy8h21xmEWau58cBLsdA5JygQc6DxMOgzalvpwtRaX
6Ya4YhnaD59fHr6Atd4/dEqHkXKsMgUSF4N2XaRY+kwTKAmlA/wzg3VTzJBW+K/BD+rHnGAH9U31
dHaNjSV3U9LJv4CM9Q+AOyaFrUug1oGJ8cEj+wQE4Rh6AZyAwyExHzCywNuJ1MvxFsKIhjDDZDrC
P/PHl7vnY9ivOGmzSxrDWkGKBHvcYMmRBdhmqBIhWm1srGFCPUwlgSJrR81W0WWlPcLGT/d744Xh
qr0R44AJSIJliRTzywX1AFm47nyEdUlMey38nzZi47VaXKpb4pqFX6n0rppyhhQvrm0jFWIaYBkO
Y2oAEZKFk5QkAB/DdDbsnEtpPuRCJNsQaRAHoPU9fvywinhghQ1nYPJjRLps4EgbeJ1dEokHJbLW
Tv9VEY9Jvvm0dlKupwUf9odpvTxsq0oDxWARMe+JmlKJnAHOOILBaOUtZVKJEwdkGqh6vFbrF73T
237BmccFCl8fbu8+vTxOdU77NCI6JRFx65izpIt4cDl3WOmUZMcyIDCnJUCY83GNxnNOFTqtbqzm
1Tey8Hb9MSizefrtGFsvUX4WXCDEsY5yybBbiAPZy+lXOooITEMviiBnY9TPVusY9W4nzTlP9AhV
9qk/RGsACIW1l79KgQlLlqFDIoFK51GAMYITAVgQQIgBaqxouJw3+ijNCcU/Xb+q52hbE18G5395
fHl6Tt/7+5fy3tynedaWLNtIOIMZFsJhorqGeTpASphsRzzgXJ7Ym4LDrQed4JWNO6up3TYqnQe6
2S5agry7mZLZMe8CDwfAIdxdKmf0pnc0APPnlObOhQyAVmQewfRzFy+TlnNzNuF9unxVzaNhHuFD
vehgc/Pzx5e9V9aOc7NjUCcSQOieBNBE6KIB7NdZEigwE+2ZMCqZV7KrppFP5VLsLy+kNi2pl8WZ
3x7v5m/9+gP++0A1mEJmlRIhYOwpqC1026fAOmyI20nFJDVBKGvFJV7Oh1qU+V3l0mJ66xzIgTH4
zV6d3qhH9pX2xWyYaJjkqbRBymMOkw0ydBKIu7daJPNKt44/Qx4nWc7MealEYIqb1rwnzf3PfnfX
P2yHRfhIKCoMC7YLLnqA7MD1PQGyKK0GQ++i8IRcKHxUS1AJr/k63jLofU5MMcL/d/cwxeG4LMmd
2sQQuDRgJgM6m1nqPLeyIwDqvdDBS6FPmPTjaLUYgrXEmMD3uArXflpDajEFvQBw4hmXOQDhSQDA
lQak6VTogEQwa4Hk6bgwg/VgCzkaiqXEB0y70/UPSvMx8wl/49HMIoJt010UgmF7KddZiaFYpM7U
EafFK1lmh7FPJWHuL1dym9vGa7RbtVAt73sAVZ9n5dKaXTP0WY9/IBoOcL6IsaX1FAAiLbCGyXWJ
COoyFTYzcTmzXctzyl0zv6eadU/WmGnoqZgVPX27u8f+8c/HHYxHD8gQVaBRqIcXxVXpWQaKNMHk
HI0uUEFPFTzVA9biNBIUh36zbFG065/73fBckmiftkXxjaWSXI6+imCzA3mwuwhCJ4aF+AqMVRKZ
GkGB12f6pr4G8KB4eNBprba6rZ7UhjcmtQrYV21N66RYm2IyGnQEAG2gpU4bIFhYMFt8gFY4Ys05
gjUfuhZt11AaGzoVRGxfvj1dT1F7rsfiTa6SE1ySTnAPWM1JLDEGPkKJMtLn6HQUi4qM2TiVAJu+
JUBvi7aAm+/L1j1Gq6dCcCeIIwE0FWe0uHgFIJGESSURfTewBY1rLsl8xEqUbcN3NGxXCmDTb7+8
fKvSAa7lGOq5Ht8WtRKerkwnNFav6aSAgALusz5kCttPGfumviV+8aT5jhuvVfLv7BqJD2BFF9ts
opYW9P++3kfliJXz8EI9FoB5MEQe0Bym6SQbSdQjmDu5vxoscxgaaSq3etDarnKNf3zsv32+2xb/
N6biFIewtdd8XM9ggg9KiY5g+j4PWKHC4WxbD29acyDA5HUedHjG6Zj34Y75LG5NQyFheH/Bld+N
PUXqHnuZC6xH053NxXkPyMR4CWbNK2Y50TGbNzVX2Q9+KvO+XKyE3raE3opJ4cS7/tPD16fnu+1P
w9MT9oStM18pIaOK9yRrdMsBp+eCgR0L3HbCltoTEv0y9+/8uLWIatsQcdWa5BAouK26A44BA8rG
OhmSYzBZclA/mChtuemcATovPeeBE+/cK21KDr7+810CXeO+2ZTg7G1W+gM+3KmDKf3923T0wB7g
0WNjOhZsa9gVWUjQpTnCKgsqOwVwNpAog2Lt5gfTcLUQO90SYlisKwCg/PGwlGO/FJOYCsQCmIYj
D7sVCLiljnVKJGexUSHl591mZcyTbQXyx4Wctw05b6dk5j+OmagSX7JgiQRsoBMcBh+CA3WPvpDI
RIoyRmHZYjP+0UhDxUfQ1nPlZPDwS1Am5yYrZViBJiU9lukCnogO23xo0I2MU2kD7C7Szo2aDbUQ
Qa1F4HxoFGEgrii+oZITMXbLSNpoLhzgSY41GDx4AJoUGykQ74PzLFn1qjbEgU9rQrxaicxF421x
tUzoKHQq9N+eX45UdN/yLRGvwCpiASXF5lceVKEHzGgN4RGoms8XYdtzCc7kq+zvqOeoGseX66mH
yYeHTwv6SSX1cDSAJyWNfUsA7RsCWjLHSBMLxsbIL0Q/p4fXIhu7Fllslt6Q3fD05fnrt6dZD0JT
yjLKb3RUMelTYKTLBj3mmTEgXBh5tcRRJwEKSPK2LmDlQQeigTecaga2uvGqnkO/npjSU9HW3fYF
Uf+s5waFwyELkiFWAwDtqMB3gkfWckANmhmnBKCwGBbtwBZjVXKodY89+HCYtEX/MuscY8a6HdDj
AQCyQcIBwNQYzLT1yD+0kEmD6nCmluA4SvVwzTfrh2u9LIj9R8Qopiywo7gdA82MaIBLMWWMG4Xc
eY7VQ5hvTSLoc6Uu7vb5RzxRYxrrOd2K9Zws+u9WbvJ1Q2Aj9zF0zayPCrQJzdjzLWlsDyFMx1Rm
FMvmxybf51Xga9a+vqeaRS8aGhw+PNlj9nqME+GLwons/8VLl8NsIglBA0o0DrWINIAXgTKQwKRg
1DDt/5Kw+nitnueusf373XbRfWTsxTt2LJrjX8480ESVActg0psjHtkZ61jyWubMFZyLt+WtHsY/
1wt40bcIBd2tpd+QqY55z13uHm6nMyyw5cDon4uCOioVAAwDHM4I2zkWOGBhMFYJOEw8z7iPo17V
j5ctmYaFTNX38P1AGb1mY00zUB7hRU5dlg7rcTB7VsIpF8rBgkpNOTvbT3Q+cC3YpvGqB6Nvt5Wy
+V5M1qHx2JijBBCMgv3GmmNhx/QDAzq3S84FTsGGBEsutoHHbKv2Bi7XruoJmNasdqs+vU9f3OPm
7vkQ5RxbXsPP4migSkqgF1oTrAQGPucZpm7SDJoWiIY353HxYvRTTXermxazGBqz2N0uDMHYBAjV
VunEM/bcovueWyVPJFGejAAz7wXsaR8YELqMX/JK8Rv5pHhLP8cy9mmNWS5X0hfAvZQePlyp/O3X
HjW9KZUVCHSxC62NGvPDMbAMjN8R+CtaoAKRUktNekVcGPKUqHCpFpM1IEf5VgRVB/uqVs5jCX7p
5SySTcx47EwPNkkBmTNA3rqkHA0SCEvI6eJW9yjNqdBfw+lrKVn3WCgfLl9JwdzYMPiYyJxg08OE
SBc8NmG0EjA89kQJ2bGkacRmUn8ayI/XalH7oSHqZlnh9fFz/zgmXXM2Zq7ib7Su1nBuhesYlody
JoBeY1g5O0lz9MrF6N7Uh3V8wAnHwHixElyvc8bxw77EVzFxNP8v/mfDbpm7ClQzCK5hSTGUxQk2
bfeGdIrAsU3YIptf6DsDFiIsxN+0xD8m3t4s61t1kjRm2PtakJLijK2uAX7TFCQlTjgi5YXY0PTw
SuQNXyt7umV63k31Q/8INOgYAhvjX4ZLh6HSTjns0u0ALNvgc2kVK0hMQRj1X+ymOhf6qp5cc8Z9
aTEz885WqTUHxmRhu5VIjrUmwEHAns8Ck7fgryx1JyN1qLgol2frARuj10LqNUmlOzV5en7/7Z4d
QwysmFwa4Vxi8odN2AMkgS4FZt0RjQlQDETXeVF1PBvkqn4QbTx9MxWvbv/2t1kvm2J3RFYGNrLs
gEWhinMGC7UxyBxkjint+6LV/aZaziY69I2p3/IlP/9peO53e0/PPv8b3usYTCQCexgnoDoUg4mW
5c5qWAoQI3lCjGFJXS6YeJDkRP+m/dWrejpru8kIXXqzkGK/3CGyKl9/wMeDRw06wbEODMj5/is2
tGHYII9TmR1oEf3WyrZfb06jkl/nWdwg3rDeFIyyZZTxw/CIvfcx7D/P0BfFG4fGMPqgubCpM6J0
GCrhJ9iscJpMygBYdHpToKfxoBPZE+sbr+o5yMbE1NKwb77+BhPZt8u2YxpfCdz+f2/Hsps4Erz7
K/oyUpAWZLe7/YjEwU/EgMOKOJnZk+XBTsYawFlwJpO/36q2AdvYkNGulgNRuouqcrurqh/14Bod
ai6mcNLxqbCckm95sgfK2/P1D4Xx2ECl+8Yq3zR5Pa+tYFIqg2VXrgSJjUB1Yv2lsviSKvZrnGme
YbomuqAKXysFVum2MaQwqTQuu5T68v+nwqGj8az0PO8PNGr0KaGN/K2n+wGml6WPbB1dyDxMIovK
SPWdoaUb+tDVmCrbmiqD0r6YuvVcLVHasdejasxEzShxIpZvf55UMhN7B5sxW1E4bPIwCZ8BzMCc
cIeW52hUpRbjmto+V6thkZqkOmapmiQtlbFMN3mRPmbpWy2UojxTFpfQ4npNBblz0fmH4RvHhM0w
iS3T5tyzP7ayOyfTZ5bbcI2H4h07e2g0D4bmJd7UrFyZoF51PAzmcYUHnQxrJVvxtSEoRMBlckV1
WvmBazhatDt0sKkmrUvKn5kIRvXjVVo6i2GosRAi/CuOLqntY1iubOOdOvfA2GCudVOBaeha8OXw
jwzpgUKPAFW9UpPb83U+FSlgWPtgsDqCMKs8/xiEpnmOO5R9BdadeDVjer6PCRop0zXfdX3+X4WI
H8n3m5qzQwi66tgA09XT0dt7//c6K1L1VJ5F2H2Zaqbtm+higYEIYFpMx4A1CeMGt02QF6d1itxA
02Ag7ThNh8ZvBwbW8fY5S06LYl3UUQSFqmFaCB1FzLLBtIE1HoIxoL7Ie9l2CatjkSTvV1XVJciT
7OkQ3H7/utnA6GMFUider/dkEycp+fZO8uJ7uiMvuxzEag+CXsS751SE0RbfwepWHWXl0iLe/4jA
DEYvWXJLlLKtLM27gu8ivSVyvXGfFiIhadXeJHwNvfzv0MM/taeCERD0MGtCtk276KkK479JU3oM
CBZcqI/vEqAW2/U7wTSb2JM/kePe75aEeRGvx1QGGQrILt1nWDR9bCojGtww9mlA9m8gb2kS5a9F
BKy9bg916pOxohgIxrVPA+nLLiswDwLgQPpHzIBoQt6gs0i3Y8xVObuRAeuRksoNVjbVCI3lsqlB
DBChOwLQItLSm0wXdyT860+P9Hwep8vwwZpL49OnD7TqlpwJ2YtdMMlEedxuaIXJM+lYhh1MG0zO
0m+8/QNmjORA+nxPPk9D8lwmDgbkqzxJO/Aasx7QGxgssDNpMqgYGMmTw48OXQTefJwkmD2AAGfo
pF0bvIE0E25fxMIWstiu0p6hYDMpsObzhUMuf3RtpAYH0Js42WTbQS+wSmfSfWg5MzJ5sJZuP1au
4YDdF/HqxxX6BPPZBzDfI8GCFXoXYFUGY1tVig3EoPRzilijyLVC6woDVBlxBJ0G1sS7AsspMBBF
8+ndzHPhBfd/TDGuURR6X8MrA4BBNwj6cDd1Fu5lFjiDF7sR8kUwIeWFx2KItRKDDSx0du8X8ALW
35CvcBFac3L1zY74pAT9g8C0et03Jnk5uUviugnqB7SB9A9QSwMEFAACAAgAF5F7Rg/yTLXBKwAA
xYwAAFAAHABjb21wb3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLXdpdGgtY29tcG9z
aXRlZC1wYXJlbnQtbGF5ZXItY3Jhc2gtbG9nLnR4dFVUCQADHv8VVfv+FVV1eAsAAQT1AQAABBQA
AADkW9mS20ayfR5+BR5bIxe79oUx1xGFTaOxtmm2ZMd1OBgACHbjiptBUFbP108WwAUgQUo947fL
CKtJVCHrZFYuJwvwh3KV5ZvNyNt/fs7Tn4rqPt9Ud9vlMi+9XwXDBP82+JBUj8dp8Ln9tJpvF/nm
9tP7Nx/fRrd/vT29d/B6mi+rYlbk5ahf+uBTXm6K1fIoGA+C1TT37p/W+f7iL1oiyb2bd0lVfMlf
AJISxHofDtA/PFWPqyUgpUaJ3wZ3+Wa9Wm6KdL4TsXn0fqWY/zb4uAGFXofH1QQmg0GYVPntfbE4
LEgxEQgzRJVH9AirkRBDLamHsMJ48H7sdVG/TTIPLv7iETw0Q+HdEBYz/gJwrFdl1ZpMyMAuV8un
xWq78T5+rIFoyY21jKGIYopEEMZIhUGAbOhLnygpjIgGg0FQJpvHfOrdP5Z5MnWyPC8sNuukyh69
37f5FsBnq8UwWa/n+bAx83BcrcrkIX+bLOHfcjCIvmb5ugIse/NGvwQT34YTGwTReOzdjF+/8j+O
X7Qmus0AE/8U3b2bfLh7fx8F96/fv5vE9vWbj3eRl1Qe/oqbD8Gc0ZQlYNFPb727/AHu33jv8qSE
OYfB0cCZ7NPbiX3z5n1g76O2Sx0l0SmDL6h9gcMX71c3jf/0m1cidAv/eeO3/zP++1vPGyD0ozeZ
3Ee/3Hunn1MpLbEizRux1OhG7Nfb8o+vTmzw/ufLTj6clcki/2NVfr7d7e/m1u7Gag0nk9De2ytQ
mpXbUGZ6pyFl1EH5A+2hfLj79B9CGTQO4+HR6Iq/LJJiiap65gADynmRbp42Vb6YfM7LZT4fTp/g
0l6HvzRbrmazmc6TjCck8RZJ9jhZbB4mVZmsvZcQCgPyXEFsSvRBEMiQfEA7MpYrSCZPF2UYnGKV
GuHtJk4g2r/k5aQEV4T7y0n2mGefJ9TBo2LAnis75Tz3dqK7MkEiFXjAOxKTzYm6JxprJfJMp56b
uEe8WudLEGboQDxblpGp50TtZFBhBhKmHXc5iN/llfOTC0JyJQSjYL5JEH+8exPATuSjUfvXTes7
CF5uqr/+4M1Xy4f9v27yuCqL5cNh+OzSi9r+TAzUc9Fxk+XeEUEA/lrlTlWFB7ojLF5tl9OkzmC9
woQiknLmoV/fjQ8KFcui+rmoHt/mi1X5FCTrJCuqp9G02Hzu/Kgr4W9OC8UHpq9mdj5/aWVIZpRR
aur9fH83GrkbgtWyKlfzOVTI0XqeVLNVuXgNOIpkXvwrd6P51+rGmUww76Z7B9Sd4WIxIoy+GBD8
TBicQJXthVEclr8pltUPXvYIGbzZunrvqBLyFMowW69HTGsAQp4JhMmZ6AfS/d0PhjHRi4VQh4U+
EwtJpPFcMnSSMUh2352NBQZprI5ICMPpWSyee5hK01zMpt6mSoADgK8cUjHxdsX8akruL+G44+XN
nMsaQblLWeqsG49Gf4c17xPgRH+rfzYh+YN3/qMhbdVT9BVyeQbrdyY5MT+0JJZJUW3aIn/81ije
zn8cjaZ5Mp+vMgjgGtRNaw4kjS3Qt4cl8B3YdLfNHPaiGXy9WM+HjyMh3Y48zxpAQEQ+23nEaPQG
Vp/v7AsUMEmTTQ6As8/O97brqYPW/NyPxuVq0XdXXMzzTROkCoAeLA04mWAv6ir2PJxAlL4PZ7Fw
HPN9WTwUyyPbbsBQrbybK3fXgUIlAGQdgP9IviTjrCzWEFRl3hMoea5mQkFmn/zvOwYbZ36GtP1P
58F6unPo6N24YpMJ0bPtMnN5+HX85UsURZMUNv3zpFh+WX2uUzdktf2UZD4inIkXh0ihVyPExeJu
EC1a8fEszmEk8PrP+RewHLQYbd6yl90T620ZKVeSU+JN9vMni4eyrZ/Zk5hnCCRMnghsyJnzMHow
Dxs9X1+dywQ2ztXZ3+v5ZV5ty2UfY1s3a3bEdYDiLJlh7e0nTv74/YCSMXzC3b5D2nSWmiZftkUR
dlCY/39TmHjZru/7A3iJa4R3DaA3rhz1uZEcpUX1wjVVZfJ1dGzGMNcZ14wDAyzT9gDBims6FcCX
yqxzx+6TwMC0byB1i0yLUU/HBwObonML5AhDgK3B6uuz1TOD3R09A0DkwEyl3o+oWabY1MmbuZ0v
zfkAc7IIPgE8y7CuB8iZJhRLpwmhXVkE56nmboB1cE3VbEpILYuf27EZED26C7dI0dVxX5C9cjY/
wUUwdQQjK2mfgUHW4M3qoYBc7gUfPo52RyVRWa7KukffHUUc7lSDe9eIvdsu0v3hC+GDwcAvlkn5
5L1eQLrcNL14fZujP7JuhZHXuajpbKa8l2c06ga/8P5mbBgwaiQKhVCIcR4jLXSEghiriEURlzL6
8XsOijpLJroHR6JnM0jQEEtws6tL7u7xY7HYBViNh4Wcg0cwFEeGI6Ziiwy2AglsQmwIMZEf9+G5
JLWLK8U9uFIMwXxe3inEJiYvYTb8GZIhFS8Bn6WxYkyFyKexQSw2DGkjYyQ4Y74MVKisvmwveq3T
pydY1TnWmYS9zK5U+j7IAY8xiXyFrA4BshIE+TJkiBLFqA0jCUy7D3JXdD/y7py2Avvjno4CXKRT
5wTnXKoPuBHEV9ZtPrUMMUzB6iamyPKI+5RHlvr+j//5+c4eU5Zm50CnM3Ni6ebON/lDkj31wlVS
EQ3OgLgIBNhZQSiBgZHPA2lwgFV8DW4j+BroZkYH+iwVZ9DFjPNzh77oHVYrn0ksHVZIAFRJ5BOL
kWXggwKsH/jhBdSX3WI3OGgwuWIpeULZEevhopCaKM9zLZl3A1RryJ0lbciZb3wkgsgiFqgIGc0k
shgMaWITWCEB03ZTuri/dTe3ltJCcH26lIZ2I5lBn9o+r6izxVdwPibVkLobmi8Awdc4xFqGyDAL
QRMwgbTEgCNgcRhiqmLmNnNcM4XbN0VaQlK+jffG2NzuhfcbaD866CJMe2AzgG3asF+5c14+dBPp
0GHlPDKE+xHyATNiERbIcIjywJpIMGNjK+hVrCCxHyYMdBEm9ByhSeoC0392cyOHBuaDW8ohkQCW
csYNxRqB00FQxwJMLIIA+UwZSWTsR7G+CvYovA9z0BrvQE9m7Bx6MhN1qIAXBZ/ejj/Mt9CEjbdr
15Htq5IZAnLnEQpSDuccydhGiBEfrKwJR0QoKoii1ATyKvD363z56k2/oZvpBQTYZSgddfJpfq5O
ntOTyA9Wi8Vq+SEBjr3xbiDmhxLuMW4jpA87YeMQSmsMu6EChQzEFSKSBgRqvxI+u+7hSZn2b4Lt
BsIRwqVgOM7oKpmzPiXZiZI2y/J5XtZ0mtTu1roCF0BZoA++T5VFNpIUXA8CG4JbI+xjGUIhDGJx
ffOOEvt1OI6faMD7NMhPAqY+TmoeNuXlbtNBF1wrAyHs3I8Ki00UQBKkBPI0fNMSNg4LH7oEFeEo
jM41+FAWXwBTezt6lrqwLT0zO8rNpj35aparE+Wc34dFmbuDqKeDVkA+hgbXkRVDogWGolGs4B9G
KZT4EJKYtFQCF1fKBPE3I+uwQr8ynSldLfLzYgFwyImThUVzwlE+jfPyS5HlTTy5JIy1q6Mu02Kh
kW8dkRZRhKyFNBeCi0WaCUJV+M2CsRf9zaA6R9N/y/m8QVdN2qO7Sc+yyHxVjp+Wmas7pq489d86
KwrpG9ATGgnSpHMNrBgp60JLM63C67XHwgrQFDmU3639Ac+lfLIb7upqsh5dd7Wr1fTvjvD36Z/y
vZsCCQhZaJ2H+kAJoJBBAYAwDLXxjSVS4Tph7llJI+/2kuQutoT1YYNEN62xOe9taHaxfPhYFfsD
kxsoPoCMmBhHShqEjQZkGFIcVH0fOhMlI4Mjo4RpIbsssAtqhs9BEZKdOcfRb18vIVUsocO9IZo3
Ye7+Oo4SRlZwcAxNQgkcJfQhPFiACLA5boCCQvn/rvTVs9plinU6c9BVZdqjHwXynNZGz1brp1kB
Gu5tjSFj0doVgpiaMI4lZF9ncGEweD2HjEwjyogEKZHudYWuzC4cwXvg6NNiF+bp9mH8tEhXdUXH
smZXrqBHxA8jIK3QLjFgzTLm0KSG0D+HIlCExtgG6ntM3F7hQlZpzejqoEWfDmYfY495sZgmc5Rs
lmRvVkaPZrURJXEM3bSSwA2NAVqooJeKoOmPoyimlNOuH58L7OIxpAdPbk4qVKPKLgu5tM6dUSlk
uCF17Yi2kfah6voxcY0dg8ZOBxIp5seKY8AW+99j2M4y/ZbtTOmooqezc1Xg4pVo9G5EzR9M3VJJ
iDIRoZgolyLCGDob6KW1LzALIjBuKP7L8tSe0YFucHIO3Sh1An2cJ2X2WB8GwA7UVab+66qM8XUo
CHSlFHpBJn0M6CODiCJchgZyHBd/XnE9ALmwR/vhrpKqh0bUlbTpL+LVsrqrXzkonw4ZhbrsbRUU
S+hYISFC9WRBoGFXpEbSGC2CUICGwZ9eQu39hZbvLt+stmXWdCLnoLs6Zz0+aaZqr/Ou8E2Xm83+
FP1GULoPdxZDFFkMbAlzVxO0dmePMQpNEMUBZ5Zjca2gtuR2YU37tmKq91noc/60eCgPBd6xN2at
DjWYP4gxtNB+yJAFvo0iqiNiGbXQLPRCacvqgEhJT+qZKlGX9KPTb/JsWxYV8GJVe7wQXJEh4UNa
95wskCQwBEXGVU1XMCEpxkhKAX4REqAk/KprjHfiL3lyMzroYpQ9wM30hCctm1c9jjSJDBkg1j6J
SExCMB809cyHVtldQtYPNIcib5nk1/a0I7aLy+Q9uPJs72wZhHhWPq2r1SG8JGn6C/eOQkA1ItwH
K2IsETSDPsI4DFWMDWBTF6p1V2QXT95DH6YzfVJb3uWV3VaP4PjN/tb5LNCERNLRtCiAQucrjjTW
0J0qEUrKY0bld1WUnfD+3d0NdkDnvCcV5+L0AGezzvPscQjarx7cuyTtcuV6AFpXyPqvO6fVvu+z
iCNJGdSWKCbIYB9qC48sDhmkbkn+jJOEcY3qrg9Ux6tPp3UtIM6bVoWxntHGvVfp/2VDe8hWonEh
C44SGs0RVeDMDAO3Ak8mSPoUMwK7qOrjwBYzacsZdNbqOYhSBOcn8bWoX644hBcbkqYLgToOHT8Y
m2kogIxRiC2lKAJCykjEYsL01aTZljvoQjhP5opK4J+s7RrJdlqshtVqNU9XX4fW/bpvfriyTZqq
TZyTS+NTBVkdCavBZnGgkK8h2wdE+hIYnqRxdL2utYRfOHVpzegoY9LzEqBMRo/Jwh05BZ10AWmP
O6qk3QOTAJI/00BAoVUBFkoEsFBJw5ASrSISXkgXp0K7mDLWh4mdVITGwFtw3U1j3o/LhhJ1bOv4
KGECCWEhpQmgy5bVjZU01Kow8lX8bds6yVcM64ZPNDhvUVTKDi20/8aOj92S4UMBUMPIMOs6JBFb
YM/UUgTNcoBEqEIFMQR9a/xfHb21pn7JMxDQP62Dr6NWmvakhDQ9RGTrfbHDIwpOsFJQPlBsMISh
D8lbSxYhRW0EdCYKI9J/GHAUdoLhPPq0YuIkMQPVa56WNc01laIhCiYMCINwg5wLtZdpyMMGfjvv
hTpDhPLD6Fsc8gLhDXZjgy4y0wNXkBO4r/Kl27j6zaDdG0xgwobaS1wTBskVNz50rZgSwGuB/Rqf
G2iuQsgQPjZgze8phT1LXXimcT6xq5qY9qgmT/Pz8X3eG0rUkNReIYWIfcYZtODA0lhEY0gdPEQ+
NLDC2ig2PLyWnA9Cu4hkn28odoJoUyWQMvZPLerTVWfgQGgdYU2BVnMfUgV0USY2FikbagZgMa1d
4yKmltgOqiQ5jxqdTPkeVfbyZZIWezzc1NWLEgslANi1VAx2m0Na9d2DUsWhnYsNkWGMu3W0Laa7
/lT0rD87nDX840P06piMuNse352S84igWMWQ2THT7ikAQ9A9yjAk0NgH1x/q1S9dvH7/HZ3TcfUu
6Nk5/3LvEZ3EzdvtvCqq1TZ7PDuhd1RbDAnwAXf0vPvqOhhNIVwMRYFk4HqueTFGAQ8PKTgfjTVj
+nvi6MrSbWXPpnXUnPapmWN+omYK7duuY21ej124/ytolyCaZ5s0pArSgQbG7opxCD2ijwV4rzRA
mLWlMmbf6IBO5F9qhU6mtfUxSXIegVAM0xNu9M9tUlb/ah61k6F2z5MZrYPQD6W2MRD+kEkoFzwI
gfpDJfS55YwKaWRsr6pxFN2P/zg+6GLMeoCrwxnn1828Gh6O4kidL4wy3DCJJIN2kwEVAqiKQLgQ
YPWQm0lAuiHaFtJZvY7Q09Wn8vQBURB/8xGR8oN/E3dtvXEbyfpdvyTAgkLfL499jYV1EO86OTiv
nBnKFqzIXl18svn1p6o5w2GTPSMhO8gCu5I8ZLqrye6q76vbwPQiddQLglgSuFKIgHq5DAk4k4yv
PL83hIjmhCS/4f7FTfXKlWmtfBlY+Tzcf8Otwq858in04rqkFXBk1UWiHSYYlZWKLmMihuYiJa4u
QabewdTtm/BKtZiBraNE8OHuAKa//D7DR4Kxa0plMYc8KG28lqBvMSMmet+Z6GMnjDDcoQdDhrZX
5fcWSLIDpw1BEH+Ou/lx+O3r92Hus+e4o7kU8Byp7ixDIhIBFzkGDE47D7RNWE1SboqxHG8hDG8I
I8gt5jnCzZs/4EFck+nBILWA82Mc5pJ4oGmgBkClGQLYHRS30Uj+mQj12apGqecXQ2P+PSqoHcL/
c7cbvh5UEgW0gl5tocDocps6pjBrRGKmnZWmgxdoOPPcespe9amWkU+7g8vlWuqhIfWt7BcHYxrx
+ubnAnjBGhSLZwlgLQJ/44slEli5dwC3FHIfS3hnAoFNJiyjwmdqzXm3cBm8LX65NBe9x6TXpeg9
38eLZhA9ATwHXC4x0Qp/o/r3jnGSbUeFAJ0anEfS7jqiADtSy+DTCwaHXTpB6tJVLbpprEcsMfyv
m7t/vRQPJS1aihncyUFnCqdHdCEZsA28gFxBO+ClJFrpaLZv8mAdRm9LfLhayS23a5sGH06e9rLx
fgr3d2jsD34cU8xI8oGrABY4YJ4eBnTR44w+K0sYTzpJlS+Uw7MSol7Dbm0Ze7AZB/D6/ae7p8n5
IxjYBzyyBBQGAVLYUYMJVNYDywPVBmAoeAP8SQvxV1HpmYBX9RpoY2Fbcng5P77/dZlY5RIBCARM
oPAlUM8Z1LOKXXJCakUUMEV5mZcyTV6JrOnaq9FrNZm3X25yXhCJ7IFVEdA0OnPMUgbhnQB0oj2H
/yXiOUsXIhLH2SuhTSNXsDd0inH83j8ecR0juHuk1Mw5jcEEEwFZAA+ywP4AWQtnBFAjTdMC2B0H
qSenDU1oVrgOy1i396i7+XWJRI5/oLsiw7YVIErg6P+WDM6hsfDKg6AmBpqlZ6++8vD+dKpPeF8L
3IBjvdHLHJ+92/vp3w/Pn4enu6fa6a2LASq/C9/i2WPOfDIIKtDzbZg3HZXZZmOk1+TyiS+ja/vj
Wr61/3u6qX4QmrUeBF9E7J76hx06XQ/7R4P6HB3hJBLALsl1yiM8RXeNT4p0XgoDMMsnoPNnvQnz
kReiNY6hGTZnAtzXP388xroVoAJRkptJAZ8STmQmXnbCMfSWAwx1MYlOeqGjCjoxSS9nc4+SnNiU
H1uhcWD+641Z3AGLpKSqEukHyff+JofUWEoFjx/1J8UEZQJWOCudgk2EJBbOpiTNx60FaxioDUWf
6O3eu8JWzhWZs1aykynAgTDw5D2mg/kEEBfYi4vUXMy5whoi04YLdcOQpFda6e7hy/xc77kmIxiK
N04SbyzH/EPQS4YpwAeo3KXIyWViQGldgnzdzGWoUOfDl6ta/G1jTZIeXgP2WpgCGEYg1qSRWYr5
HYFwjBkbYDs8A+kS8Hq4h5dkfXNPzMaqZZCsIUMvl+kb2/4eS2axQ0vJt7rtt8UPUry9JWlKC8ms
6TTX+HCBvnvuaaeZjtJJZZMw/5EPZK4oW8KcUJetW6sHwBtZ7xsAZS3NVGcS8T1roQI5HL4dAyiN
BOB9GmACnljT2QjkOABhCdZjGjl7cx7c6/lEq9uqhQnNGwszE/JZ1LsCm7ZTqpZIwlHEEYF7+IFM
VhMLMIhpIACAMFLbDtRj1uI0PLobMdAlwcKf+WP4+tu3x+HpqTxoqYpgJUCGbkOiFEBK2PXRY1oq
6kQTIzq9M0CMYIlV8S2PeT3XCWq1uq9e2dDYQXJY5gqsNCDuID4eoFHJch9CZg7r82jG6C/GoQFH
xUzgyQcjqGN/XsnuL1aiK7kG9PjhMgd/jWYAM6G/QZT8msQzoZg7i+EQrg3WRkkspwkC0BI8HU4v
g5YaNy7W03gVSvUN7Pp0SJCdUgJLti0oLcJ11B0lFKgjTQqOMNUdMUlZ6zLX5CLpDlWO7mmoO91S
L9PsGsu0y1LHX0KYq2jOHNEy2k5oODsc3b5W+gCG3JMoAfHC2XnLsYFh2wLDhVpM29pd/aSB4DB9
vf9+bSfkg4eA0gBbHWxzpgHdPvDDi2Q6lQgc7iiys7ImMvUwlQRg39cSYPLzRFiXfFV4JT2A/A64
H1anReRRMH30wFqdI07aeCm+2hJY0ZbAw6Kucj9Q/3AoUyiZUKAetBDo9UBswIIG0kINRopYUGAM
ontTEck0+NlF9LUStKIhuNUT1v3xfdE/y8ctE2Gem9DZjDJbn8DSCAWwAeB9NN7nQC71uGcCVKL3
vLFJeqyzNNUz7x8+uYf+/t9Au/Cx630Sqy42yQDj5tSrjlJTkktYZ00G02/R8FuiWRQXZ4xzkU48
gtkd9aJFc9FLln/IYPx8h+9szGEkBLEO5q8SrIAlKYER1kATAfQhuI7cKuBnrzGCt+aF7SV4d3M+
zfHdTbW+wTbWN2yXuPZmOzdpDN26TF5TtARCS0oxIzn7iO4r+GEwvk5MBHhElUr5TcdpPsUJy7w9
Yc6G2/Wh2rIdu70dyqF67z648PdVUo5O2mFOdUcVBiIsFZ13AEiV4l5ZoyT8/y/yJM4lnC9tK8na
Um8lXfK5vw+Pm+Hx61NB25OeI8bl5DtqjcMs1Nz54CTY6RySlAk40HmYdBi0LfXhai0u0w1xxTK0
Hz6/PHwBa72fdEqHkXKsMgUSF4N2XaRY+kwTKAmlA/wzg3VTzJBW+K/BD+ppTrCD+qZ6ObvGxpK7
KenkX0DG+gfAHZPC1iVQ68DE+OCRfQKCcAy9AE7A4ZCYDxhZ4O1E6uV4C2FEQ5hhMh3hn/njy93z
MexXnLTZJY1hrSBFgj1usOTIAmwzVIkQrTY21jChHqaSQJG1o2arqFooC4SNn+73xgvDVXsjxgET
kASPJVLMLxfUA2ThuvMRnkti2mvh/7QRG6/V4lLdEtcs/EqlldOUM6R4cW0bqRDTAMtwGFMDiJAs
nKQkAfgYprNh51xK8yEXItmGSIM4AK3v8eOHVcQDK2w4A5MfI9JlA0fawOvskkg8KJG1dvqvinhM
8s2XtZNyvSz4sD8s6+VhW1UaKAYPEfOeqCmVyBngjCMYjFbeUiaVOHFApoGq6bVav+id3vYLzjw+
oPD14fbu08vjVOe0TyOiUxIRt445S7qIB5dzh5VOSXYsAwJzWgKEOR/XaMxzqtBpdWO1rr6Rhbfr
j0GZzdNvx9h6ifKz4AIhjnWUS4bdQhzIXk6/0lFEYBp6UQQ5G6OeW61j1LudNOc80SNU2af+EK0B
IBTWXv4qBSYsWYYOiQQqnUcBxghOBGBBACEGqLGi4XLe6KM0JxT/dP2qXqNtLXwZnP/l8eXpOX3v
71/Ke3Of5llbsmwj4QxmWAiHieoa1ukAKWGyHfGAc3libwoOtyY6wSsbd1ZLu21UOg90s120BHl3
MyWzY94FHg6AQ7i7VM7oTe9oAObPKc2dCxkArcg8gunnLl4mLefmbML7dPmqWkfDPMKHetHB5ubn
jy97r6wd12bHoE4kgNA9CaCJ0EUD2K+zJFBgJtozYVQyr2RXTSOfyqXYX15IbVpSL4szvz3ezd/6
9Qf894FqMIXMKiVCwNhTUFvotk+BddgftpOKSWqCUNaKS7ycD7Uo87vKpcXy1jmQA2Pwm726vFGP
7Cvti9kw0TDJU2mDlMccJhtk6CQQd2+1SOaVbh1/hjxOspxZ81KJwBI3rXVPmvuf/e6uf9gOi/CR
UFQYFmwXXPQA2YHrewJkUVoNht5F4Qm5UPiolqASXvN1vGXQ+5yYYoT/7+5hisNxWZI7tYkhcGnA
TAZ0NrPUeW5lRwDUe6GDl0KfMOnH0WoxBGuJMYHv8Slc++kZUosp6AWAE8+4zAEITwIArjQgTadC
BySCWQskT8eFGawHW8jRUCwlPmDajZ9/UJqPmU/4G49mFhFsm+6iEAzbS7nOSgzFInWmjjgtXsky
O4x9Kglzf7mS29w2XqPdqoVqed8DqPo8K5fW7Jqhz3r8A9FwgPNFjC2tpwAQaYE1TK5LRFCXqbCZ
icuZ7VqeU+6a+T3VqnuyxkxDT8Ws6Onb3T22U38+7mA8ekCGqAKNQj28KK5KzzJQpAkW52h0gQp6
quCpHrAWp5GgOPSbZYuiXf/c74bnkkT7tC2KbyyV5HL0VQSbHciD3UUQOjEsxFdgrJLI1AgKvD7T
N/U1gIniYaLTWm11W72oDW8sahWwr9qa1kmxNsVkNOgIANpAS502QLCwYLb4AK1wxJpzBGs+dC3a
rqE0NnQqiNi+fHu6nqL2XI/Fm1wlJ7gkneAesJqTWGIMfIQSZaTP0ekoFhUZs3EqATZ9S4DeFm0B
N9+XrXuMVk+F4E4QRwJoKs5ocfEKQCIJk0oi+m5gCxrXfCTzEStRtg3f0bBdKYBNv/3y8q1KB7iW
Y6jnenxb1EqYXZlOaKxe00kBAQXcZ33IFLafMvZNfUv8Yqb5jhuvVfLv7BqJD2BFF9tsopYW9P++
3kfliJXz8EI9FoB5MEQe0Bym6SQbSdQjmDu5vxoscxgaaSq3etDarnKNf3zsv32+2xb/N6biFIew
tdd8fJ7BBB+UEh3B9H0esEKFw9m2Ht605kCAyes86DDH6Zj34Y75Km5NQyFheH/Bld+NPUXqHnuZ
C6xH053NxXkPyMR4CWbNK2Y50TGbNzVX2Q9+KvO+XKyE3raE3opJ4cS7/tPD16fnu+1Pw9MT9oSt
M18pIaOK9yRrdMsBp+eCgR0L3HbCltoTEv0y9+/8uLWIatsQcdWa5BAouK26A44BA8rGOhmSYzBZ
clA/mChtuemcATovPeeBE+/cK21KDr7+810CXeO+2ZLg7G1W+gM+3KmDKf3923T0wB7g0WNjOhZs
a9gVWUjQpTnCUxZUdgrgbCBRBsXazQ+m4WohdrolxLB4rgCA8sfDoxz7pZjEVCAWwDQceditQMAt
daxTIjmLjQopP+82K2OebCuQPy7kvG3IeTslM/9xzESV+JIFSyRgA53gMPgQHKh79IVEJlKUMQrL
Fpvxj0YaKk5BW/PKyeDhd4JMzk1WyrACTUp6LNMFPBEdtvnQoBsZp9IG2F2knRs1G2ohglqLwPnQ
KMJAXFF8QyUnYuyWkbTRXDjAkxxrMHjwADQpNlIg3gfnWbLqVW2IA5/WhHi1EpmLxtviapnQUehU
6L89vxyp6L7lWyJegVXEAkqKza88qEIPmNEawiNQNZ8vwrbnEpzJV9nfUa9RNY4v11MPkw8Pnxb0
k0rq4WgAT0oa+5YA2jcEtGSOkSYWjI2RX4h+TpPXIhu7Fllslt6Q3fD05fnrt6dZD0JTyjLKb3RU
MelTYKTLBj3mmTEgXBh5tcRRJwEKSPK2LmBlogPRwBtONQNb3XhVr6FfL0zpqWjrbvuCqH/Wc4PC
4ZAFyRCrAYB2VOA7wSNrOaAGzYxTAlBYDIt2YIuxKjnUuscefDhM2qJ/mXWOMWPdDujxAADZIOEA
YGoMZtp65B9ayKRBdThTS3AcpZpc8816cq2XBbH/iBjFlAV2FLdjoJkRDXAppoxxo5A7z7F6CPOt
SQR9rtTF3T7/iCdqTGO9pluxXpNF/93KTb5uCGzkPoaumfVRgTahGXu+JY3tIYTpmMqMYtn82OT7
vAp8zdrX91Sr6EVDg8OHJ3vMXo9xInxRuJD9v3jpcphNJCFoQInGoRaRBvAiUAYSmBSMGqb9XxJW
H6/V69w1tn+/2y66j4y9eMeORXP8y5kHmqgyYBlMenPEIztjHUtey5y5gnPxtrzVw/jnegEv+hah
oLu19Bsy1THvucvdw+10hgW2HBj9c1FQR6UCgGGAwxlhO8cCBywMxioBh4nnGfdx1Kt6etmSaVjI
VH0t3Q+U0Ws21jQD5RFe5NRl6bAeB7NnJZxyoRw8UKkpZ2f7ic4HrgXbNF71YPBLMuav+nsxWYfG
Y2OOEkAwCvYba46FHdMPDOjcLjkXOAUbEiy52AYes63aG7hcu6oXYFqr2q369D59cY+bu+dDlHNs
eQ0/i6OBKimBXmhNsBIY+JxnmLpJM2haIBrenMfFi9FPNd2tblqsYmisYne7MARjEyBUW6UTz9hz
i+57bpU8kUR5MgLMvBewp31gQOgyfucpVfgdquIt/RzL2Kc1ZrlcSV8A91J6+HCl8rdfe9T0plRW
INDFLrQ2aswPx8AyMH5H4K9ogQpESi016RVxYchTosKlWkzWgBy3qNJVHeyrWjmPJfill7NINjHj
sTM92CQFZM4AeeuScjRIICwhp4tb3aM0p0J/DaevpWTdY6F8uHwlBXNjw+BjInOCTQ8LIl3w2ITR
SsDw2BMlZMeSphGbSf1pID9eq0Xth4aom2WF18fP/eOYdM3ZmLmKv9G6WsO5Fa5jWB7KmQB6jWHl
7CTN0SsXo3tTH9ZxghOOgfFiJbhe54zjh32Jr2LiaP5f/M+G3TJ3FahmEFzDI8VQFifYtN0b0ikC
xzZhi2x+oe8MWIiwEH/TEv+YeHuzrG/VSdKYYe9rQUqKM7a6BvhNU5CUOOGIlBdiQ9Pklcgbvlb2
dMv0vJvqh/4RaNAxBDbGvwyXDkOlnXLYpdsBWLbB59IqVpCYgjDqv9hNdS70Vb245or70mJm5p2t
UmsOjMnCdiuRHGtNgIOAPZ8FJm/BX1nqTkbqUHFRLs/WAzZGr4XUa5JKd2ry9Pz+2z07hhhYMbk0
wrnE5A+bsAdIAl0KzLojGhOgGIiu86LqeDbIVT0Rbcy+mYpXt3/726yXTbE7IisDG1l2wKJQxTmD
hdoYZA4yx5T2fdHqflMtZxMd+sbSb/mSn/80PPe7vadnn/8N73UMJhKBPYwTUB2KwUTLcmc1PAoQ
I3lCjGFJXS6YeJDkRP+m/dWrejlru8kIXXqzkGK/3CGyKl9/wMeDRw06wbEODMj5/is2tGHYII9T
mR1oEf3WyrZfb06jkl/nWdwg3rDeFIyyZZTxw/CIvfcx7D/P0BfFG4fGMPqgubCpM6J0GCrhJ9is
cJpMygBYdHpToKcx0YnsifWNV/Ua/r+3o+tNHAe+51f4ZaUiHShx7HxU4iGfiIWUE017d09RStJu
tEB6kG63//5mnABJSKCrO10eQNjDzNjxePwxH7yjYVpbsT/lG2hIFS7bLM34xMUt1+hQczGEk46t
wnRKvuXJHkzenq9/yo3HBirdN1b5psnreW4Fk1IZNLtyxUlsBFMn5l8qky+pYr/GmeYZpmuiCaqw
tVJglW4bQwqDSuOyS6kv/39TOFQ02krP4/5AoUafE9qI33q6H2B6mfrI1tGEzMMgsjgZqb4ztHRD
H7oaU2VbU2WYtC+Gbj2flijt2OtRNWYiZ5Q4Ecu3P05TMhN7B5sxW1E4bPIwCJ8BzMCYcIeW52hU
pRbjmto+V6thkZqkOkapmiStKWOZbvIifczS95orRXmmLC6hxfWaCnLnovEPwzeOAZthEFumzbln
f25ld06mTy234RqN4h07eyg0D4rmNd7UtFwZoF51PHTmcYUFnQxrJVvxtSFMiIDL5IrqtOID13C0
aHfMwaaatC4pf2TCGdWPV2lpLIauxkKI8FscXVLbR7dc2cY7de6BssFY66YCw9C14MPhn+nSA4Ue
AapqpSa35+t8KkLAsPbBYHUEYVZx/tEJTfMcdyj7Cqw78WrG9HwfAzRSpmu+6/r8v3IRP5LvVzVn
hxB01bEBpqvno7X3/u91VqTqKT2L0Psy1UzbN9HEAh0RQLWYjgFrEsYNbpsgL07rFLmBpsFA2nGa
DoVPBwbW8fYlS06LYl3kUYQJVcOwEDqKmGWDagNtPARlQH0R97JtElbHIknezyqrS5An2fPBuf3+
bbOB3scMpE68Xu/JJk5S8vRB8uJbuiOvuxzEag+CXsS7l1S40RbfQOtWFWXm0iLef49ADUavWXJL
lLKsTM27gs8ivSVyvXCfFiIgaVXeJHwNvfzv0MOPWqugBwQ9jJqQbdMueqrCOPs1mtJjQDDhQr1/
lwC12K4/CIbZxJr8mRz3frckzIt4PaYyyFBAduk+wxziY1MZ0eCGsS8Dsn8HeUuTKH8rImDtbXtI
256MFcVAMK59GUh/7LIC4yAADqR/xAyIJuQdKot0O0YDndmNDFiPlFR+KKoRGstlUYMYIEJzBKBF
pKU3mS7uSPjX7x7peR6ny/DBmkvj09MHWlVLzoTsxS6YZCI9bje0wuSZdMxKDqoNBmdpN97+AzNG
ciB9vSdfpyF5KQMHA/JVnqQdeI1ZD+gNdBbomTQZVAyM5MnhT4cqAm8+ThKMHkCAMzTSrnXeQJoJ
sy9iYQlZbFdpT1ewmRRY8/nCIZcfnY/U4AB6EyebbDvoBVbpTLoPLWdGJg/W0u3HyjXssPsiXn2/
Qp+YBgVeH4NIsGCF3gVYlUHfVpliA9Ep/ZyOlECKItcKrSsMUGXEEXQaWBPvCiynwEAUzad3M8+F
F3yhWRr2axSF3p/hZZwKOt0g6MPd1Fm4l1ngDDprI+SLYEDKC81iiLUSgw0sdHYfF/AC1l+Qr3AR
WvNrLxZt5yYl6G8EhtXbvjHIy8FdEtf1kRbAbCD9A1BLAwQKAAAAAAAOkXtGAAAAAAAAAAAAAAAA
FgAcAGNvbXBvc2l0aW5nL2FuaW1hdGlvbi9VVAkAAwv/FVUh/xVVdXgLAAEE9QEAAAQUAAAAUEsD
BBQAAgAIAPSQe0ar8qKPrS0AAFmbAABFABwAY29tcG9zaXRpbmcvYW5pbWF0aW9uL2FuaW1hdGVk
LWNvbXBvc2l0ZWQtaW5zaWRlLWhpZGRlbi1jcmFzaC1sb2cudHh0VVQJAAPb/hVV2/4VVXV4CwAB
BPUBAAAEFAAAAOxaW2/byJJ+Xv0KPh3Ik1Du+0UIAvCak50k4xM7mcEeDAReWjY3kuihpEy8v36r
SV1IiVKsM4MFBnv0YMnsZvVX1VVfVTV5U5WZWS7Hzvbzs0l/LFZ3Zrn6uF4sTOX8kxMt9a+Dm2T1
sJ8Gn+vP5Ww9N8vrzz+9+/Q+uv7h+vDewdvcLFbFtDDVuF/64LOplkW52AtGg6DMjXP39Gi2F39R
whXMGX5IVsVXcwVIKhDr3Oyg3zytHspFg1T8Ovholo/lYlmks42I5YPzT4LYr4NPS1DobbhfjSM8
GITJylzfFfPdggRh7iLqEulgNUZyjPGIS+q4SCI0+OnW6aJ+n2QOXPzFwWikR9wZYhpTdgU4Hstq
1ZqM8cBblIunebleOp8+1UCUYNrzKHUjgojLgzB2ZRgErhf6wsdScM2jwWAQVMnyweTO3UNlkhzu
Q44TFsvHZJU9OL+tzRrAZ+V8lDw+zsxonhQLd1VPHQyib5l5XAGCrVGjX4KJ74UTLwii21tnePv2
zW305vNVa6bdA7CsnfmWKjF5cxO/uxsMmtVh7Q2c8fiZIABta6TxAqfz+Q/0DTUfjFImc5Ei5+e7
eDz+O6x0l8Bevqr/vV1VxeL+ZTP2o3n6nMzW5iYpqoPheonxGL5vKjM14DHgLLersjLjcX3P6x4Z
8Dv6tqqSDOa9+uMrONs1mnusJi/3Sr1PHi+VeE7cXZUUq2Vb4uue0eeYBa1nr7uaN3d/b7HmviTP
h3+C6TKI4NXfrpwXDgSBM/xopjeravQwluRqgC/0Jp0RQ//tTX9Fb9rt1/Df2/eX275WEEvtDHeb
B2GMpb4akAvjOEHTKXLSspztzPPVoopLu1mv7MDr4V/DpBvT/FU8oAu3kdemaIK720uVvBrQi7fX
pOS82kuz8mGXP+93fXiM6GXtIhYXhaqxR84oe3wcY62uBuzSTKJywk5ArNH9NJ3OioWBEQ9EFlli
y6kgyR5MtLC2yYe1++5NdwyxQWcNyC9EN01xLp2ff2zr+wxIgIJAeHbua0AgqGJFX1NwEkSieZIl
Avzk43hsbwjKxaoqZzNoAcaVAQu1FrkrA1unL1dQztdbuhxakzDI991bazSc46uBvBgNZaYfTbEo
VkUyK/7HDIvF6qWTPSRVszE//FDvDIat7gPCKABRlwLRYsr7gXT/PwGG8l4smIAX60uxyERox9bn
VjICyfb3aD4fcwTVFRTrsyLNn2b5CP4UqXP42UiT0+lUyTQ1fJo7y1UCvQ5Qwa5LwGe7gwbvyMZj
cm/eJwv4Wx33CQGE60lNMswNz1GblMDFzSJ/dfZKx7rdrAyprnw0VQKo2pfBLevZoB+Cfqm+9tNm
3tLSnewpSs9DJ4pL2+I088ZjMNOD/9SABelBOYceFuKil9/6WZjwdqHML0+wFBkh5I7e3pVZMtts
EPTISZosDSSO7It12nxzwR4LDPvwbA3GgFrOSKq9mCBxcboAsFlKnwd21fwI25i7CDtmYxcjSdP0
eUjAuxZ3XTTDZ924vQButwAzg7GTlbl/qvmSP8PCBF+cTyiakgQ9T69ibs86fqqK+2KxP/Vp+Jza
mPnHu2K1uw3sLDapZY/nP5OvyW1WFY+rfeR0eMtk2ZRLZzKZ/NcHCi6nfy6rL/+wxKLyDc9EH25X
dDLBarpeZDbPvY2/fo2iaJLOyuzLpFh8Lb8YGyrUGW6nJLMxZpQ3ucUS30ZWD/m1iS9lUmLY9sl2
/gTMM9sslCzySWVmBnSty6M6XVwkmxGVt2XPCjBqvUS5tk6rata/SCTENm2JrCl5kldNGmAc75j/
+QbQGT6SuDMyxmiA8YUiOaSUlsiqLFcHSCUfYHLxTsm21N/BcUw1aQ6niNUekNJa5vIJypH55LEZ
60juyERZYqbK2U6c/P5b86MuHNgAswul5dNUN0m0LQrTXTolZ9NpyxruvJVM9xhA4YWZdU3VxmCS
TAtBnC/mK3iaYHZ1VGe1y5yMkbZLzO+rdtTpOiVdJhBTcSBwZx5Oduah48v1VUYkQCfWG36r51dm
ta4WHc0v8IcpOuEPFG3V/hP9gf1/U5j/Kwon1Cq8NPPfoeGdLIt7oPs+dbPvOKIxmOUZchbJolzO
jHm07ox2amYvXoxwf7XckqJxnvCUKlAzH48hTUFl8lAsN/4M/aMVPJmW1XA/IXuoykUJ9da6qhu3
V7MSiiz752VLTD32Cs9egmbbD3TtnRMYflBhfT/fmgwyq5PObdLJxmNrwk+Q2WdxMoOyZb/6elEA
IU1s5nu1m327AkzZ+/XKfHv9tzbWf0WjWX18Zlvn5ryBYVuG7xaw9QQ/rNueo1+aTPf6/d0kj7AJ
WQIEeP9/r19dykln+NnYE0dbipLDku05KumcHaoETpCtK/vQ7HarnF1MKGc4mcytBhNblY0xVZcX
ZcYw3HISb/m0yO6SZctSFsRL52tZ5M7wANkPV8Mr6LkAWfV0U0LnWwPTUJ3t5NjDQrrp/C/DRYFQ
/hiuDW1Fe3h2dt2Q6wOIZHMmcBHnaaX1nkHTMn+qKW9X210gSZJkL2nXjFO5LeouIeJMO0eCWg//
ss2zyN+L1YN9OLt5KOnYiDDOUDA3LVZX44HjVMm3sbPbFfgIROEPDKQHAwT2DAGZVllnIBGCU5KD
Oaq8PYAxQ6CcRnaRvOiM8OlU2L7FqZa7Aasb5yRJBVN29cejAW7qO3oGlF3EqVQXcL2WZf9KHw8g
KwujNiwEgnAiMjuAe0Qpqwkmp2RROyAVFGi5JEKJqTEJtwOsM8CFEUbWA/zIjiqd2kWKxy6uzcNW
p5rODlbHsC2gYlaRtlWk4JInqbXK4F15X0BP4gQ3n5qH4WIQVVVZ1Q+QN4/H9yIH0C4+Oh/W83T7
QoD1q4FfLJLqyXk7h6p1ad1mc1t9VMWsAVync1EoQOG8ODryGqIr55X2woASLdyQc+lSxmJXcRW5
QYxkRKOICRG9fs7LC50llenBocx0CnUyRNLmGMfefftQzDfhVeOhIWOIUurGkWYulbHnauRxlyMd
Io2xjvy4D88pqV1cus8+msE2Hbf6BGIT4RcwG76gXCH8BeDzSCwplaHrk1i7NNbUVVrELmeU+iKQ
ofTUaXuR0bRK5sZWlNebFx2W19528ABrdox1ysClsjPM3gc5YDHCkS9dT4UAWXLs+iKkLsGSEi+M
BCa9kLui+5F357QVSEmqjhRIeYKtExyfq/QB1xz70rObTzzqUkTA6jomrsci5hMWecT3T9v6nKk7
QLOEHAPN8+mBpZs735n7JHvqhSuFxAqcwWU84GBnCaEEBnZ9FgiNAiTjc3AbwedANzM60Kf62MbZ
lMhjhz7pHZ6SPhVIWKxAAEQK18cecj2KqOZg/cAPT6A+7RabwUGDycIRIslapLC9mAKVY6hV7PG5
M4SOd8SsJb2QUV/7Lg8iz6WBjFytqHA9BIbUsQ48LgDTelnZuL+2N7eWUpwzdbiU4gLCZ8rbZmnY
4hs4HxVyROwNzQ+A4CsUIiVCV1MPgiag3FUCAY6AxmGIiIyp3czbuk64flekFZDydbw1xvJ6K7zf
QNvRQRdh2gObAmzdhv3GvoXERnYiGVmsjEUaMz9yfcDs0ghxVzOI8sDTEafaiz1OzmIFif0wYaCL
sB0q24s6ITbBtBDG5XqR19U8uNxIw3yMuBhhAWAJo0wTpFxwOgjqmIOJeRC4PtQnAovYj2J1Fuxe
eB/moDXegZ5M6TH0ZMrrUAEvCj6/v72Zre+Lxe360Z7ObrOSHgFy6xESKIcx5orYi1yKfbCywszF
XBKOJSE6EGeB27PoN+/6Dd1MLyDATkPpqGNyc6yOMeQg8oNyPi8XNwl0/ktnCDE/EnCPthshfNgJ
Lw4htcawGzKQroa4crEgAYbcL7lPz3t4UqX9m+B1A2EP4VQw7Gd0lTS0T0l6oKSXZWZmHy8Zq6J1
t9YVuADKQvng+0R6rhcJAq4HgQ3BrVzkIxFCIgxifn7z9hL7ddiPH2jA+jQwBwFTvyDYvABpqs2m
gy6oVgZC2Lof4R7SUQAkSDDwNPxSAjYOcZ8pKiMUhdGxBjdV8RUwtbejZ6kT29Izs6PcNO/hq6mR
B8pZvw+Lqu7Tn3ZaQfEx0qiOrBiIFioU5cYS/lBCIMWHQGLCIwIhSKQ6iL8bWbsV+pXpTOlqYY6T
BcDBB04WFs3jj+rp1lRfi8w08WRJGCmbRy3TIq5c37OFNI8i1/OA5kJwsUhRjokMv5swtqK/G1TH
aPpvOZ436KpJenTX6RGLzMrqFtp3m3d0nXnq75oVufA16AmNBG7oXEFV7ErPhpaiSobnc0/rLYtn
a7/Dc4pPNsNdXdsF9e7iJne1Wv5ZspqW1a4pIWzrplAEhDT0rIf6UBJAIoMEAGEYKu1rDwuJasLc
ViWNvOtTkrvYEtqHDYgur7FZ723K7GJx/2lVbI9xh5B8ABnWMYqk0C7SCpAhoDjI+j50JlJEGkVa
ct1CdlpgF9QUHYPCODtyjr3fvl0AVdgz4yFWrAlz+21rlDDyOAPHUDgUUKOEPoQHDVwM1RzTUIJC
+n8WffWsdrrEOpw56KqS9+hHoBtMm1Pq8vFpWoCGW1sjYCxSu0IQEx3GsQD2tQbnGoHXM2BkEhGK
BUiJVK8rdGV24XDWA0cdJrvQpOv726d5WtYZHYm6urIJPcJ+GEHRCu0ShapZxAya1BD655AHEpMY
eYF8jonbK5xgldaMrg6K9+mgtzH2YIp5nszcZLnYnv8PKdmb1YsIjmPopqWA2lBrKAsl9FIRNP1x
FMWEMNL142OBXTwa9+Ax+iBDNapsWMjSOrNGJcBwI2LbEeVFyoes68fYNnYUGjsVCFdSP5YMAbbY
f45hO8v0W7YzpaOKyqfHqijbpZ6MRmfI6/pB1y2VgCjjkRtjaSkijKGzgV5a+RzRIALjhvwPpqf2
jA50jZJj6Foedqm3Jqmyh/owAHagzjL1t80y2lchx9CVEugFqfARoI+0iyVmItTAcYz/ecl1B+TE
Hm2Hu0rKnjKizqRNfxGXi9VHc18sV1CibBmFWPb2JCRL6FiBECF70iBQsCtCuUJrxYOQg4bBn55C
vbsTLd9HsyzXVdZ0IseguzpnPT6pc7nVeZP48sVyuT1DH3JCtuFOY4giD0G1hJjNCUrZs8fYDXUQ
xQGjHkP8XEJtye3Cyvu2IldbFvpinub31S7B2+qNep4KFZg/iBG00H5IXQ/qbTciKsIeJR40C71Q
2rI6IFLcQz255HVK3zv90mTrqlhBXSxrj+ecSTzCbETqnpMGAgcau5G2WdMmTCDF2BWCg1+EGEoS
dtY1bjfiT3lyMzroYhQ9wHV+UCctzMqK25dJeEQBsfJxhGMcgvmgqac+tMr2kuv5gWKQ5D0q2Lk9
7Yjt4tKmB5fJts6WQYhn1dPjqtyFl8BNf0G1pAFRLmY+WBEh4UIz6LsIhaGMkQZs8kS27ors4jE9
5UM+VQe55YNZeevVAzh+s781nwUK40jYMi0KINH5krkKKehOJQ8FYTEl4lkZZSO8f3c3gx3QhvVQ
seGHBzjLR2OyhxFoX97b937b6cr2AKTOkPW3PadVvu/TiLmCUMgtUYxdjXzILSzyUEiBugX+M04S
bmtUH/tAdbz6cFrXAvy4aZUIqSlp3LtM/zsbeTu24o0LeeAooVbMJRKcmSKorcCTsSt8giiGXZT1
cWCrMmnLGXTW6jmIkhiZg/hqnrDuwouOcNOFQB6Hjh+MTRUkQEoJxJaUxIWClOKIxpiqs6TZljvo
Qjgmc0kE1J+07RrJOi/K0aosZ2n5beTZ/+6af2zaxk3WxtbJhfaJBFZ3uafAZnEgXV8B2wdY+AIq
PEHi6Hxeawk/cerSmtFRRqfHKUDqjOzJwh45BR26ANpjtlRS9oFJAORPFRSg0KpAFYo5VKGChCHB
SkY4PEEXh0K7mDLah4keZITGwGtw3WVj3k+LpiTq2NbWo5hyl3MPKI1DuezRurESmngyjHwZf9+2
VvIZw9rhAw2OWxSZ0l0L7b/zbvfdkmYjDlDDSFPPdkg89qB6Jh5xoVkOXB7KUEIMQd8a/6Gjt9bU
ryYDAf3TOvg6aqVpDyWk6S4iW+/27x5RMIykhPThxhpBGPpA3krQyJXEi6CcicII9x8G7IUdYDiO
PiUpPyBmKPWap2VNc00EbwoFHQaYQrgB50LupQp4WMP/1nshz2Au/TD6Xg15ouANNmODLjLdA5fj
A7hvzMI0r/Xs3oUGEzalvUB1wSCYZNqHrhURDHg9qH61zzQ0VyEwhI80WPM5qbBnqRPPNI4ndlXj
eY9q4pCfk+XuEIZgOcK1VwjOY58yCi04VGk0IjFQBwtdHxpY7nlRrFl4jpx3QruIRJ9vSHqAaLlK
gDK2Ty3q01Vr4IArFSFFoKxmPlAFdFH6f3m7sh65jST9rl8ywICNvI/HPK2ekdfyyLPYtwWriiU1
JLc0fWg9/vUbkaxiMcms6oanYMDuo0hlRpKZEd8XV2frOu2i4SAsYWVrnJVpNmwlVd+vT43pd+Io
1favf+03d0d5hC3Wi1EHJgDQtdIc3rYAteoxUKoF0LlsqYqZ1HZ0Pkw9/0425t9Pvoa/vU8/nJSR
wNfj0UsuEu2yzqDZCTcYBeAdsEcVIwViHy4H9UrSxe1Pr2BOp9lrofdr/IVZRItz8+Pzl6e7p6/P
208rDz1CbXlDAQ+g6/nwIzIYw+C4WNYFxWHrIXmxVgMOjww2H8uGc/Oac3Rh6vliV7dVy9y1ljkQ
sVjmBujbgbGOJU2/YqeKg4IYY5ssMg3qwABiR2McgSN6ImH3KguA2TimMn+BAS3GP0eFFrfN12P7
fn0CwRhuFtjo5+f+4en3MdRObwzGkzkrh9BHZVwGwB+5AnMhQgToD5bQCyc4k8qq7C4u4zR0W/7T
9Te1jNuG4Hrycf72+OVpSsX9Cy36wmorLFed4kA3OUAhEFVTOC4UUD3oZhpofUTng1SzlxO6nH2n
lgGikF8MEWkfYHqROuoFQSwJXClEQL1chgScScYXnt8rQkRzQpJfcf/ipnrlyrRWvgysfBq+fMOt
wm848in04rqkFXBk1UWiHSYYlZWKLmMihuYiJa6uQabewtTtm/BKtZiBraNE8OHuCKY//zbDR4Kx
G0plMYc8KG28lqBvMSMmet+Z6GMnjDDcoQdDhrZX5bcWSLIDpw1BEH+Ou/lh+PXr92Hus+e4o7kU
8Byp7ixDIhIBFzkGDE47D7RNWE1SboqxHG8hDG8II0rRPQqz+R0exA2ZHgxSCzg/xmEuiQeaBmoA
VJohgN1BcRuN5J+JUJ+tapR6fjE05j+ggtoh/N93u+HrUSVRQCvo1RYKjC63qWMKs0YkZtpZaTp4
gYYzz62n7EWfahn5vDu4XK6lHhpS72W/OBjTiDe3PxXAC9agWDxLAGsR+BlfLJHAyr0DuKWQ+1jC
OxMIbDJhGRU+U2suu4XL4G3xy6W56D3brjFvzw/xohlETwDPAZdLTLTC76j+vWOcZNtRIUCnBueR
tLuOKMCO1DL49IrBYZfOkLr0phbdNNYjlhj+n5u7fz0XDyUtWooZ3MlBZwqnR3QhGbANvIBcQTvg
pSRa6Wi2r/JgHUdvS3y8Wsktt2ubBh9Onvay8X4MpQRw8uOYYkaSD1wFsMAB8/QwoIseZ/RZWcJ4
0kmqfKUcnpUQ9Rp2a8vYg804gtfvP949Ts4fwcA+4JEloDAIkMKOGkygsh5YHqg2AEPBG+BPWog/
i0rPBHxTr4E2FrYlx5fzw7t/LhOrXCIAgYAJFL4E6jmDelaxS05IrYgCpiiv81KmySuRNV17NXqt
JvP2y23OCyKRPbAqAppGZ45ZyiC8E4BOtOfwXyKes3QlInGavRLaNHIFe0OnGMdv/cMJ1zGCu0dK
zZzTGEwwEZAF8CAL7A+QtXBGADXSNC2A3WmQenLa0IRmheuwenv7BXU3vymRyPEHdFdk2LYCRAkc
/d+SwTk0Fl55ENTEQLP07MVXHt6dT/UJ72qBG3CsN3qZ43Nwez/++/7p0/B491g7vXUxQOV74Vs8
e8yZTwZBBXq+DfOmozLbbIz0mlw/8WV0bX9Yy7f2f0831Q9Cs9aD4IuI3WN/v0On63H/aFCfoyOc
RALYJblOeYSn6K7xSZHOS2EAZvkEdP6iN2E+8kK0xjE0w+ZCgPvmpw+nWLcCVCBKcjMp4FPCiczE
y044ht5ygKEuJtFJL3RUQScm6fVs7kmSM5vyQys0Dsx/vTGLO2CRlFTVIf1F8oO/ySE1llLB40f9
STFBmYAVzkqnYBMhiYWLKUnzcWvBGgZqQ9Enuj94V9jKuSJz1kp2MgU4EAaevMd0MJ8A4gJ7cZGa
qzlXWENk2nChbhiS9Eor3d1/np/rA9dkBEPxxknijeWYfwh6yTAF+ACVuxQ5uUwMKK1rkK/buQwV
6rz//KYWf9tYk6TH1/Brv/00BTCMQKxJI7MU8zsC4RgzNsB2eAbSJeD1cA8vyfrmnpiNVcsgWUOG
Xi7TN7b9F2yQhF1DS77Vvt8WP0jx9pakKS0ks6bTXOPDBfruuaedZjpKJ5VNwvxHPpC5omwJc0Zd
tm6tHgBvZL1vAJS1NFOdScQPrIUK5HD4dgygNBKA92mACXhiTWcjkOMAhCVYj2nk7NV5cC/nE61u
qxYmNG8szEzIZ9F2ANi0nVK1RBKOIo4I3MMXZLKaWIBBTAMBAISR2nagHrMWp+HR3YiBLgkWfs0f
sOfPw/D4WB60VEWwEiBDtyFRCiAl7ProMS0VdaKJEZ3eGSBGsMSq+JrHvJ7rDLVa3VevbGjsIDks
cwVWGhB3EB8P0KhkuQ8hM4f1eTRj9Bfj0ICjYibw5IMR1LE/rmQPFyvRlVwDevxwmYO/RjOAmdDf
IEp+TeKZUMydxXAI1wZroySW0wQBaAmeDqfXQUuNGxfrabwKpfoGdn08JshOKYEl2xaUFuE66o4S
CtSRJgVHmOqOmKSsdZlrcpV0hypH9zzUnW6pl2l2jWVasnhtv4QwV9GcOaJltJ3QcHY4un2t9AEM
uSdRAuKFs/OaYwPDtgWGC7WYtrW7+kkDwWH6+uX7jZ2QDx4CSgNsdbDNmQZ0+8AXL5LpVCJwuKPI
zsqayNTDVBKAfV9LgMnPE2Fd8lXhlfQA8jvgflidFpFHwfTRA2t1jjhp47X4aktgRVsCD4u6ysNA
/f2xTKFkQoF60EKg1wOxAQsaSAs1GCliQYExiO5VRSTT4BcX0ddK0IqG4FZPWPeHd0X/LB+3TIR5
bkJnM8psfQJLIxTABoD30XifA7nW454JUIne88Ym6YWAb9Uz7+8/uvv+y7+BduFj14ckVl1skgHG
zalXHaWmJJewzpoMpt+i4bdEsyiuzhjnIp15BLM76kWL5qKXLP+YwfjpDt/ZmMNICGIdzF8lWAFL
UgIjrIEmAuhDcB25VcDPXmIEr80LO0jw9vZymuPb22p9g22sb9guce3tdm7SGLp1mbyhaAmElpRi
RnL2Ed1X8MVgfJ2YCPCIKpXyq47TfIozlnl7xpwN+/Wh2rId2++Hcqjeufcu/H2VlKOTdphT3VGF
gQhLRecdAFKluFfWKAn//0mexLmE86VtJVlb6q2kSz739+FhMzx8fSxoe9JzxLicfEetcZiFmjsf
nAQ7nUOSMgEHugyTjoO2pT5ercUF4LsWVyxD++HT8/1nsNaHSad0GCnHKlMgcTFo10WKpc80gZJQ
OsCvGaybYoa0wn8NflBPc4Yd1DfVy9k1NpbcTUkn/wIy1t8D7pgUti6BWgcmxgeP7BMQhGPoBXAC
DofEfMDIAm8nUi/HWwgjGsIMk+kI/8gfnu+eTmG/4qTNLmkMawUpEuxxgyVHFmCboUqEaLWxsYYJ
9TCVBIqsHTVbRdVCWSBs/PjlYLwwXHUwYhwwAUnwWCLF/HJBPUAWrjsf4bkkpr0W/g8bsfFaLS7V
LXHNwq9U2i9OOUOKF9e2kQoxDbAMhzE1gAjJwklKEoCPYTobdsmlNB9yIZJtiDSII9D6Hj+8X0U8
sMKGMzD5MSJdNnCkDbzOLonEgxJZa6f/rIjHJN98WTsp18uCD/vjsp7vt1WlgWLwEDHviZpSiZwB
zjiCwWjlLWVSiTMHZBqoml6r9Yve6W2/4MzjAwpf7/d3Hw+NtkpKKT9w5mMSEbeOOUu6iAeXc4eV
Tkl2LAMCc1oChLkc12jMc67QaXVjta6+kYW3609Bmc3jr6fYeonys+ACIY51lEuG3UIcyF5Ov9JR
RGAaelEEORujnlutY9S7nTSXPNEjVDmk/hCtASAU1l5+KgUmLFmGDokEKp1HAcYITgRgQQAhBqix
ouF63uiTNGcU/3T9Tb1G21r4Mjj/y8Pz41PCvyVQ3pv7OM/akmUbCWcww0I4TFTXsE4HSAmT7YgH
nMsTe1VwuDXRGV7ZuLNa2r5R6TzQzXbREuTt7ZTMjnkXeDgADuHuUjmjN72jAZg/pzR3LmQAtCLz
CKafu3idtJzbiwnv0+U31Toa5hE+XPYKuv3pw/PBK2vHtdkxqBMJIHRPAmgidNEA9ussCRSYifZM
GJXMC9lV08jncikOlxdSm5bUy+LMbw9387d+8x5/P1INppBZpUQIGHsKagvd9ikwwOGadlIxSU0Q
ylpxjZfzvhZlfle5tFjeOgdyYNibh724vFGPHCrti9kw0TDJU2mDlMccJhtk6CQQd2+1SOaFbh1/
hDxOslxY81KJwBI3rXVPmvsf/e6uv98Oi/CRUFQYFmwXXPQA2YHrewJkUVoNht5F4Qm5UviolqAS
XvN1vGXQh5yYYoT/7+5+isNxWZI7tYkhcGnATAZ0NrPUeW5lRwDUe6GDl0KfMemn0WoxBGuJMYHv
8Snc+OkZUosp6AWAE8+4zAEITwIArjQgTadCBySCWQskT8eFGawHW8jRUCwlPmDqBM7/Gsv2AENq
PmY+4Xc8mllEsG26i0IwbC/lOisxFIvUmTritHghy+w49rkkzMPlSm6zb7xGu1UL1fKuB1D1aVYu
rdkNQ5/1+AOi4QDnixhbWk8BINICa5hcl4igLlNhMxPXM9u1POfcNfN7qlX3ZI2Zhp6KWdHTtzsA
w/97am7E8R0hGaIKNAr18KK4Kj3LQJEmWJyj0QUq6LmCp3rAWpxGguLQb5YtivBPI+yGp5JE+7gt
im8sleRy9FUEmx3Ig91FEDoxLMRXYKySyNQICrw+01f1NYCJ4nGi81ptdVu9qA1vLGoVsK+aLddJ
sTbFZDToCADaQEudNkCwsGC2+ACtcMSaSwRrPnQt2q6hNDZ0KojYPn97vJmi9lyPxZtcJSe4JJ3g
HrCak1hiDHyEEmWkz9HpKBYVGbNxKgE2fUuA3hZtATd/KVv3FK2eCsGdII4E0FSc0eLiFYBEEiaV
RPTdwBY0rvlI5iNWomwbvqNhu1IAm377+flblQ5wI8dQz834tqiVMLsyndBYvaaTAgIKuM/6kCls
P2Xsq/qW+MVM8x03Xqvk39k1Eh/Aii622UQtLej/Q72PyhEr5+GFeiwA82CIPKA5TNNJNpKoRzB3
dn81WOYwNNJU9nrQ2q5yjX946L99utsW/zem4hSHsLU3fHyewQQflBIdwfR9HrBChcPZth7etOZA
gMnLPOg4x/mY9/GO+Sr2pqGQMLy/4Mpvx54idY+9zAXWo+nO5uK8B2RivASz5hWznOiYzauaqxwG
P5d5Xy5WQm9bQm/FpHDiXf/x/usjNtceHh+xJ2yd+UoJGVW8J1mjWw44PRcM7FjgthO21J6Q6Je5
f5fHrUVU24aIq9Ykx0DBvuoOOAYMKBvrZEiOwWTJQf1gorTlpnMG6Lz0nAdOvHMvtCk5+vovdwl0
jftmS4Kzt1npD/hwp46m9Ldv09EDe4BHj43pWLCtYVdkIUGX5ghPWVDZKYCzgUQZFGs3P5iGq4XY
6ZYQw+K5AgDKH46PcuyXYhJTgVgA03DkYbcCAbfUsU6J5Cw2KqT8stusjHm2rUD+sJBz35BzPyUz
/37KRJX4kgVLJGADneAw+BAcqHv0hUQmUpQxCssWm/H3RhoqTkFb88rJ4OFfbZucm6yUYQWalPRY
pgt4Ijps86FBNzJOpQ2wu0g7N2o21EIEtRaB86FRhIG4oviGSk7E2C0jaaO5cIAnOdZg8OABaFJs
pEC8D86zZNWL2hAHPq8J8WolMheNt8XVMqGj0KnQf3t6PlHRQ8u3RLwCq4gFlBSbX3lQhR4wozWE
R6BqPl+Fbc8luJCvcrijXqNqHF+upx4m7+8/LugnldTD0QCelDT2LQG0bwhoyRwjTSwYGyO/Ev2c
Jq9FNnYtstgsvSG74fHz09dvj7MehKaUZZTv6Khi0qfASJcNeswzY0C4MPJqiaNOAhSQ5HVdwMpE
R6KBN5xrBra68U29hn69MKWnoq277TOi/lnPDQqHQxYkQ6wGANpRge8Ej6zlgBo0M04JQGExLNqB
Lcaq5FDrHnvw4TBpi/551jnGjHU7oMcDAGSDhAOAqTGYaeuRf2ghkwbV4UwtwWmUanLNN+vJtV4W
xP4cMYopC+wobsdAMyMa4FJMGeNGIXeeY/UQ5luTCPpcqau7fX6OZ2pMY72mvVivyaL/buUmXzcE
NvIQQ9fM+qhAm9CMPd+SxvYQwnRMZUaxbH5s8n1ZBb5k7et7qlX0oqHB4cOzPWZvxjgRvihcyOE3
XrocZhNJCBpQonGoRaQBvAiUgQQmBaOGaf+nhNXHa/U6d43t3++2i+4jYy/esWPRHP9y5oEmqgxY
BpPeHPHIzljHktcyZ67gXLwub/U4/qVewIu+RSjobi39hkx1zAfucne/n86wwJYDo38uCuqoVAAw
DHA4I2znWOCAhcFYJeAw8TLjPo36pp5etmQaFjLdf326289avtEbNtY0A+URXuTUZemwHgezZyWc
cqEcPFCpKWcX+4nOB64F2zRe9WD0flspm+/FZB0bj405SgDBKNhvrDkWdkw/MKBzu+Rc4BRsSLDk
aht4zLZqb+By7U29ANNa1W7Vp/fxs3vY3D0do5xjy2v4WhwNVEkJ9EJrgpXAwOc8w9RNmkHTAtHw
5jIuXox+ruluddNiFUNjFbv9whCMTYBQbZVOPGPPLXrouVXyRBLlyQgw817AnvaBAaHLsgNIBoRU
S/Gafo5l7PMas1yupC+Aeyk9fLhS+duvPWp6UyorEOhiF1obNeaHY2AZGL8j8FO0QAUipZaa9IK4
MOQ5UeFSLSZrQI49qnRVB/uqVs5jCX7p5SySTcx47EwPNkkBmTNA3rqkHA0SCEvI6epW9yTNudBf
w+lrKVn3WCgfLl9JwdzYMPiUyJxg08OCSBc8NmG0EjA89kQJ2bGkacRmUn8YyI/XalH7oSHqZlnh
9eFT/zAmXXM2Zq7id7Su1nBuhesYlodyJoBeY1g5O0lz9MrF6F7Vh3Wc4IxjYLxYCa7XOeP4YV/i
q5g4mv8H/9mwW+auAtUMgmt4pBjK4gSbtntDOkXg2CZskc2v9DcDFiIsxN+0xD8l3t7+f3FX1ts2
DoTf9Sv4UiABVgZJkZJYIA86KMN13BSJ0919MhRL6Rr10bWVHv9+ZyjZlmTJTrHFrh9yiPTMkOI1
nJlv2vGtnpYsTmDse4IaF2eEuobjN9ORZDQQAZXyF2lDB+YNkZ+c08WezblXR1P9kG5BDTqawEr7
l+/IAE2lthsgSncAh2UVhYmBihU01pHw3f8RTbUutNVsXGeLUwMxU7udbbjW7DUmBcPNWHKU8iOY
CIj5LNB5C/5KpGfLmAW4cDFHno0H7KDeFNI7VVJZ5h5uer6vlvxoYuBmy2UxzEt0/lAaMUA0rKWg
WdvUQwcoDqJ7SSvquEbEajJiHdyfDsGr9bSScNAy956J68NAljZoUbjEBT4GaqOROZJJrHWFi9bE
m+q6bGJ52tH0Z6etn0/yIs2qm57K/xvea2lMpAIxjDWoOgyNiYontvKgK0AMHVLq+1y7v86YuJek
B7+pKrWazTndNzll7dssVLFfFniyMukPnHLiMR8vwTEODJTzKsWG53MEyHOYTAJYRbzXRrY9jvpP
JY91L24QLz8dFJzxtpXxQ75F7H00+9c99IW5jcPNMA4jzxFK274wCEPG/ASDFWaTrxM4sHj6VYae
DkY93hOnFa1mG2RHw9z2xv60WUFDKrhsVbrxGcOtdLntxgjh5GGrMJ1SEmiqYfHWifeqMJ4QuHRb
rDarpqynuRUU5xR2dnYhSGwASyfmXyqTLzlGX5PC1b6KFbqgGl8rBqf00Lc5DCpX0pjzhP53SzgU
NNrKT3F/4KHLnzPewG892geEV6Y+Cj10IdMIIouLkZNEduD5nh27wqGh61BYtM9Ct54uS5x36Hrc
SYXJGWVuxDbrr8clWRjdIRQiZEyCkocgfD4IA2MitgMdudzhgZCu075Xq1Gxmqw6RqmTZa0l4z5f
bYr84yL/VgulKO+UjRHamNccmHcxOv8IfOMI2AyDOFChlDp83cnulE3fttyu12iU7NDs4aHabzRf
0lVtlysB6p1IYzBPbDzoKJyVQpa4NiyIQEtJ5kQtfOAajRbvjjVYOVnLSPl1YYJRk3Sel85iGGps
JhH+NleXPEwwLJeGaFOXGjYbxFpXDIZhHMCPSL6mS/cceiZQVWo1pT0953MDASPaF4PVFYSqcP4x
CM3VUWzThMG5E00zSicJAjRy4blJHCfyV4WIH9j3bzUnlxB83qEA8/nzwdt79/dyUeTOMT2L2fcp
d1WYKHSxwEAE2FpU5MOZREhfhgrmS9S6RW6QaQiQd9ymw8OnvQDLdP1pkR0PxZ7JowgLqouwEB5O
sSCErQ12Yxs2A54Y3Mu2S1idimXp71VWl8kmWzzvg9sfXlYr6H3MQBqly+WOrNIsJ08/yKb4K9+S
L9sNTKsdTPQi3X7KTRgtpu/eF5SZS4t09xlTeM++LLK3pMyAWSXTncPPIn9LaP3hLi8MIGn1vMn4
Enn678jDP7VWQQ8YfoiasFjnXfwc0DjEz/G0Pk4IJlyo9+891LpbL38QhNnEks0zOeh+b8l0U6TL
G05hDk3INt8tsnxd3Cg24JMrId5ck903mG95Ntu8FDMQ7WVtEMCBYXbDmI/VpPvm2vp9uygQBwFo
IP8DZSA0JN+gsMjXN4gZNr6iQPXACXZtt3xUY3RT1WowA0LojgC8iHWvh6O792T65wdNej4fR/fT
x+DWujl++qpWxVY0JDujBZOFSY/bXZsJOrbiCocAc77D4Cz9xttfEP6ATqx3D+TdaEo+lcDBQHy+
yfIOuv64p+oVdBbsM3l2XQkwoMP9l/ZFBN58mmWIHkBAMnTSrnXetTU2bl8kwCfkDg6NPV0hxtYk
uL29i8j5jxIDZ7KvepVmq8X6ureyw8fWwzSIxmT4GNzH/VSlix32UKTzzxf4E8Szn8B4nxkRgqk+
U9cR0LdVptiJ6ZR+SZHqbBYH0+CCAJwNJFYdTYKhvlBXchBgNrsdvR/rGF7wmX51sV9ns6n+Y3qh
AzDoBqs+vh9Fd/F5EaSAF7sy84sgIOWZZgmkWk2DFRx0tj/O0AWqPzG/pnfT4JZcfLMDOSyr/kZg
WL3sGoO8HNwlc+XB8gOrgfUPUEsDBBQAAgAIABeRe0aQ1eIOxysAAJeNAAA5ABwAY29tcG9zaXRp
bmcvYW5pbWF0aW9uL2FuaW1hdGlvbi1jb21wb3NpdGluZy1jcmFzaC1sb2cudHh0VVQJAAMe/xVV
7P4VVXV4CwABBPUBAAAEFAAAAORbWXPjRpJ+Xv4KPG1IbhdV96GYsQNHwdtj9TEtdduxDocCBEAJ
2yQhg2B3y79+swAeAAlS0ozfhg8iiSpkfZmVx5cF6n1VpvlyeeltXr/kk5+L+iZf1h9Wi0Veeb8J
hjH/ffQ+qe930+B18amcreb58uLTu6uPb+zFdxf7945eZ/miLqZFXl0OSx99yqtlUS52gvEoLLPc
u3l8yDcXf9USSe6dvU3q4kt+DkgqEOu930J//1jflwtASo2Sv48+5MuHcrEsJrO1iOW99xt1Onxc
gkKvo91qApPRKErq/OKmmG8XpJgIhBmiyiP6EqtLZsaKKQ9hhfHo3bXXR/0mST24+KtH8NiMhXdG
WMz4OeB4KKu6M5mQkb8oF4/zcrX0Pn5sgGjJje8zhizFFIkwipGKwhD5USADoqQwwo5Go7BKlvd5
5t3cV3mSOVmeFxXLh6RO770/VvkKwKflfJw8PMzycWvm8XVdVsld/iZZwN9qNLLf0vyhBiwb89pf
w9vAj279MLTX197Z9eufgo/X552JbjPAxD/bD29v3394d2PDm9fv3t7G/uurjx+sl9Qe/obbF8HM
cMMSsOinN96H/A7uX3pv86SCOdvBy5Ez2ac3t/7V1bvQv7Fdl9pJ0lMCH1D3AoUP3m9uGv/5d69C
6KL6irzrN3/3r1573gihH7zb2xv76423/9qX0hE7ydJWLDW6FfsNxH5zYsN3vxx38vG0Sub517L6
fLHe3+WFvx5rNLy9jfwb/wSUduUOlJTItYaUUQflK9pAef/h078IZdQ6jIcvL0/4yzwpFqhuZo4w
oMweZ5l39PVf7Zar6XQqphlnOmXe6zm42FWZZHkF4XD/LiznDxVEZ55dXk6LRWa/uVjIs+vH+aSc
naX34BUpIK2/+7577/rad+ftB++Vx8SIvBARy7FODhA9jWNSlrMn0HA8oi+1D4dPJ+0D7+XsS37z
tZzlX/LZWWfu5eVVsfgclos6/1a3KP57COIG/HP1eeVJNmIv1oRK9hxNntagh3MFufpuAcnNXf3e
Kxb1IOrvTy59lSzrq7L8vHpYa+6UpMKM+Eu1FFpNTi6VlQF4UuwWTP58XHvSVol9+MMG+FIWmXf2
3fnZefdzi5mMxEs9HmeJaO4ALwdcDl8HWwfNd117z8rFnVvS4JEEmbNi4kSM4U8xObUiGGiS0ixr
Vrxd1qvJ7QRWzKtbEEbYSMH0H3/80XsSfpP46NRkGGsPu/hinGvj/oz0EBk5IUTnBHjDLzcfLi/d
Dc7gVTmbuQ0oFkVdJLPiz/ys2Z2O9zWxQJWQ3ln/rnH68HDJtD4fmZcCyeRUDAPpfx8Gw5gYxEIo
YCH4hVgmiTSeS+9OMgbJ7vN4Pr8UGKSRF256Dr7mLeukcrmQbIsL8db05GSRGSYlrtzszzmuERRw
wybOuvHl5f/AmjcJsLy/NV+v66pY3H3vHX5paWj9aL/VVZLC+r1JTsz3HYlVUtTLrsgfnhrFq9kP
kBbyZDYrUyCTDaizzpxu0MGmu23msBft4Ov5w2x8fymk25GXWQMolcina4+ARAOrz9b2BVKbTJJl
DoDTz873Vg+Zg9Z+3YzGVTkfuisuZvnyzOEUCoBuLQ04mWDnTRF8GU6gfs/DWcxdhX5XFXfFYtc/
tGCoVt7ZibubQIEidd7Uth3AfyRfkuu0Kh4gqKp8AKDAfCoUkLbb/33LYOPML0Cn/uk8WGdrh7Zv
r2t2e0v0dLVIHTd+HX/5Yq29ncCmf74tFl/Kz7nDyLyzzZRkdkk4E+fbSKEnI8TF4noQzTvxAdeX
j8s6n9+Cjot81g/WbozmSWqkpN5nIBKLGpomCFPceFVH9kCsd2VMuJKcEu92M/92fld19TPN9r9M
IGFyT2BLN52H0a152OXL9dW5TGDjHP/9o5lf5fWqWvQ0X0t7aNfsiesBxWkyhUq0mXj79Y8tSsbw
Ru3nS8umE9Pmy64oqJAbhfl/msLES9ed7Neivnet/bql9a5rSE/emeRoUtTnrk2skm+Xu/YSc51y
zTgwlWrSHSBYJibNBBCGKu3dsX4lMJANDUzcIllxOdDDwsCy6N0COUKSNHerPxysnhrs7hgYUNi1
g5XejKhpnmmqMJWZ2/nK7A8Q6AvhOsF7gKcp1s0AOdCEYuk0IbQnizOcK8rdAOvhytQ0I6SRxQ/t
2A6IAd2FW6To67gpyF41ne3hAv5BIA2nFR0yMMgaXZV3BeRyL3z/sT1KkSNbVWXVnDqsD1e2d6oR
JPkH7+1qPtkcJxE+Go2A6ybVY8u4l+3pQnNbQ3+066iR17to0ulUea8OaNQZPvf+ZvwoZNRIFAmh
EBDRGGmhLQpjrCyzlktpf3jO0VdvyZQP4Ej5dAoJGmIJbnZ1yd19fV/M1wHW4GER9I+MMRRbwxFT
sY8M9gUS2ETYEGJsEA/hOSZ1D1c+hCuHYD4s7xRiE5NXMBvexmRMxSvA59NYMaYiFNDYIBYbhrSR
MRKcsUCGKlK+Pm4veursgvaxZoc2ZMLlnfREpR+CHPIYExso5OsIICtBUCAjhihRjPqRlcC0hyD3
RQ8j78/pKrA5wOorMMkmzgkOudQQcCNIoHy3+dRniGEKVjcxRT63PKDc+jQIfvjXT6zWmDjNJgdA
OQfe07d0e+dVfpekj4NwlVREgzMgLkIBdlYQSmBgFPBQGhxiFZ+C2wo+Bbqd0YMu0ukBdCHEgEMf
9Q5fq4BJLB1WSABUSRQQHyOfQeYSYP0wiI6gPu4W68FRi2ndtNNsh3V7UWJN1Lr5PwOqNebOkn7E
WWACJELrIxYqi4xmEvkYDGliE/pCAqbVsnJxf+Fu7iylheB6fykN7UYCK3bN0maLb+B8TKoxdTe0
HwBCoHGEtYyQYT4ETcgE0hIDjpDFUYSpipnbzOuGKVxcFZMKkvJFvDHG8mIjfNhAm9FRH+FkADYD
2KYL+yd3cs3HbiIdO6ycW0N4YFEAmBGzWCDDIcpD31jBjB/7gp7EChKHYcJAH2FCDxGahLoC00EY
l6sFNF/uPP1Mjg3MB7eUYyIBLOWMG4o1AqeDoI4FmFiEIQqYMpLIOLCxPgl2J3wIc9gZ70FPpuwQ
egIu6EIFvCj89Ob6/WwFTdj16sF1ZJuqZMaA3HkEcAvLOUcy9i1iJAAra8IREYoKoig1oTwJ/N1D
vvjpatjQ7fQCAuw4lJ46eZYfqpPndC/yw3I+LxfvE+DYS+8MYn4s4R7jNkIGsBN+HEFpjWE3VKiQ
gbhCRNKQQO1XImCnPTypJsOb4PcDYQfhWDDsZvSVzNmQkmxPST9N81leNXSaNO7WuQIXQFmgD0FA
lY98Kym4HgQ2BLdGOMAygkIYxuL05u0kDuuwG9/TgA9pkO8FTHOc1D4+y6v1poMuuFEGQti5HxU+
NjaEJEgJ5Gn4pCVsHBYBdAnKYhvZQw3eV8UXwNTdjoGljmzLwMyectNsIF9Nc7WnnPP7qKhydxD1
uNUKyMfY4CayYki0wFA0ihX8YZRCiY8giUmfSuDiSpkwfjKytisMK9Ob0tciPywWAIfsOVlUtCcc
1eN1Xn0p0ryNJ5eEsXZ11GVaLDQKfEekhbXI9yHNReBiVjNBqIqeLBgb0U8G1SGa4VsO5436atIB
3c3kIIvMyur6cZG6umOaytO8N1lRyMCAntBIkDada2DFSPkutDTTKjpde3xYAZoih/LZ2m/xHMsn
6+G+riYd0HVduzpN/yypp2W1bUoo37gpkICIRb7z0AAoARQyKAAQhpE2gfGJVLhJmBtW0sq7OCa5
jy1hQ9gg0WUNNue9Lc0uFncf62JzYHIGxQeQERNjq6RB2GhAhiHFQdUPoDNR0hpsjRKmg+y4wD4o
xy33QRGSHjjHzm9fLyBVLKDDPSOat2Hu3h1HiawvODiGJpEEjhIFEB4sRATYHDdAQaH8Pyt9Dax2
nGLtzxz1VckG9KPQpU4ao6flw+O0AA03tsaQsWjjCmFMTRTHErKvM7gwGLyeQ0amljIiQYrVg67Q
l9mHI/gAHL1f7KJ8srprn3O5DIRlw65cQbckiCyQVmiXGLBmGXNoUiPonyMRKkJj7IfqOSburnAk
q3Rm9HXQYkgHs4mx+7yYZ8kMJcsF2ZiV0Z1ZfUtJHEM3rSRwQ2OAFiropSw0/bG1MaWc9v34UGAf
jyEDeHKzV6FaVdZZyKV17oxKIcONqWtHtG91AFU3iIlr7Bg0djqUSLEgVhwDtjh4jmF7ywxbtjel
p4rOpoeqwMUT0eidiYY/mKalkhBlwqKYKJciohg6G+ildSAwCy0YNxL/ZnnqzuhBNzg5hG6U2oN+
nSdVet8cBsAONFWmeXdVxgQ6EgS6Ugq9IJMBBvTWIKIIl5GBHMfFX1dct0CO7NFmuK+kGqARTSVt
+4u4XNTuN0LLGijKJqNQl719BcUSOlZIiFA9WRhq2BWpkTRGizASoGH4l5dQ/+ZIy/chX5arKm07
kUPQfZ3TAZ80mdrovC582WK53JyinwlKN+HOYogiHwNbwtzVBK3d2WOMIhPaOOTM51icKqgduX1Y
2dBWZHqThT7nj/O7alvgHXtjvq8jDeYPYwwtdBAx5APfRpZqS3xGfWgWBqF0ZfVATMhA6smUaEr6
zumXebqqihp4sWo8XgiuyJjwMW16ThZKEhqCrHFV0xVMSIoxklKAX0QEKAk/6RrXa/HHPLkdHfUx
ygHgJtvjSYu8duJ2NImMGSDWAbEkJhGYD5p6FkCr7C4hPwg1hyLvM8lP7WlPbB+XyQdw5enG2VII
8bR6fKjLbXhJ0vYXzCgWUo0ID8CKGEsEzWCAMI4iFWMD2NSRat0X2ceTD9CHbKr3asvbvPZX9T04
fru/TT4LNSFWOppmQyh0geJIYw3dqRKRpDxmVD6roqyFD+/uerAHOucDqTgX+wc4y4c8T+/HoH15
535L0i1XrgegTYVs3t05rQ6CgFmOJGVQW2xMkMEB1BZufRwxSN2S/BUnCdcNqg9DoHpevT+tbwFx
2LQqjPWUtu5dTv4vHfvbbCVaF/LBUSKjOaIKnJlh4FbgyQTJgGJGYBdVcxzYYSZdOaPeWgMHUYrg
fC++5s2PK7bhxcak7UKgjkPHD8ZmGgogYxRiSymKgJAyYllMmD6ZNLtyR30Ih8lcUQn8k3VdI1ll
RTmuy3I2Kb+Nffftpv3iyjZpqzZxTi5NQBVkdSR8DTaLQ4UCDdk+JDKQwPAkje3putYRfuTUpTOj
p4yZHJYAZVK6SxbuyCnspQtIe9xRJe0emISQ/JkGAgqtCrBQIoCFShpFlGhlSXQkXewL7WNK2RAm
tlcRWgOvwHWXrXk/LlpK1LOt46OECSSEDylNAF32WdNYSUN9FdlAxU/b1kk+YVg3vKfBYYuiJmzb
QgdX/vWuWzJ8LABqZA3zXYckYh/YM/UpgmY5RCJSkYIYgr41/reO3jpTv+QpCBie1sPXU2syGUgJ
k8k2Iju/F9s+ouAEKwXlA8UGQxgGkLy1ZBYp6lugMzayZPgwYCdsD8Nh9GnFxF5iBqrXPi1rm2sq
RUsUTBQSBuEGORdqL9OQhw18d94LdYYIFUT2KQ55hPCG67FRH5kZgCvIHtyf8oXbuOaXQetfMIEJ
W2ovcUMYJFfcBNC1YkoArw/s1wTcQHMVQYYIsAFrPqcUDix15JnG4cS+aiIbUE3u5+dkuT2EoUSN
SeMVUog4YJxBCw4sjVkaQ+rgEQqggRW+b2PDo1PJeSu0j0gO+YZie4iWdQIpY/PUojlddQYOhdYW
awq0mgeQKqCLMrHxkfIjzQAspo1rHMXUEdtDlSSHUaOTjG9Qpa9eJZNig4ebpnpR4kMJAHYtFYPd
5pBWA/egVHFo52JDZBTjfh3tiumvn4mB9afbs4Z/vLc/7ZIRd9sTuFNybgmKVQyZHTPtngIwBN2j
jCICjX14+qFe86OL1++e0TntVu+Dnh7yL/c7or24ebOa1UVdrtL7gxN6R7XFmAAfcEfP64+ug9EU
wsVQFEoGrueaF2MU8PCIgvPRWDOmnxNHJ5buKnswradmNqRmjvmemhNo39Yda/vz2Ln7P6d1gmif
bdKIKkgHGhi7K8YR9IgBFuC90gBh1j6VMXuiA9qTf6wV2pvW1cckyWEEQjGc7HGjf66Sqv6zfdRO
xto9T2a0CcIgktqPgfBHTEK54GEE1B8qYcB9zqiQRsb+STV2oofx78ZHfYzpAHC1PeP8tpzV4+1R
HGnyhVHuF0sSSQbtJgMqBFAVgXAhwOohN5OQ9EO0K6S3ehOh+6tncv8BURg/+YhIBSEszy0iAceO
S0KvFEbAepkILfRMInrCfs94RNRtSOJnzN+b1Nf8/4m7subGjST9rl+yERNQ1H081mlrp73umbY3
5m0CJMFuRbfVPTq8Hv/6zSyQIAooUgovwxsxI6oJuJCFqsr8vrykTGvmy8DKp+HLN9wq/JYjn0Iv
rktaAUdWXSTaYYJRmanoMiZiaC5S4uoaZOp7eHT7JrxSTWZg6ygRfLk7gunPv83wkWDsllJZzCEP
ShuvJehbzIiJ3ncm+tgJIwx36MGQoe1V+a0FkuzAaUMQxJ/jbn4cfvn66zD32XPc0VwKeI9Ud5Yh
EYmAixwDBqedB9omrCYpN8VYjrcQhjeEEWS/J0WYze/wIm7J9GKQWsD5MQ5zSTzQNFADoNIMAewO
ittoJP9MhPpsVaPUzxdD4/kHVFA7hP/7fjd8PaokCmgFvdpCgdHlNnVMYdaIxEw7K00HC2g489x6
yl71qZaRz7uDy+Va6qEh9V72i4MxjXh792MBvGANisWzBLAWgd9xYYkEVu4dwC2F3McS3plAYJMJ
y6jwmVpz2S1cBm+LXy7NRe/Zdo15e36IF80gegJ4DrhcYqIVfqL6945xkm1HhQCdGpxH0u46ogA7
Usvg2ysGh106Q+rSTS26acxHLDH8z5v7f70UDyUtWooZ3MlBZwqnR3QhGbANvIBcQTvgpSRa6Wi2
b/JgHUdvS3y8Wsktt2ubBl9Onvay8X4IX+7R2B/9OKaYkeQDVwEscMA8PQzooscZfVaWMJ50kipf
KYdnJUQ9h93aMvZgM47g9dcf7p8m549gYB/wyBJQGARIYUcNJlBZDywPVBuAoeAN8CctxJ9FpWcC
3tRzoI2Jbclxcb579/MyscolAhAImEDhS6CeM6hnFbvkhNSKKGCK8jqLMj28ElnTtVej12oybz/d
5bwgEtkDqyKgaXTmmKUMwjsB6ER7Dv9LxHOWrkQkTk+vhDaNXMHe0CnG8Vv/eMJ1jODukVIz5zQG
E0wEZAE8yAL7A2QtnBFAjTRNC2B3GqR+OG1oQrPCdV9hXbZfUHfz2xKJHH9Bd0WGbStAlMDR/y0Z
nENjYcmDoCYGmqVnry55eHc+1Se8qwVuwLHe6GWOz8Ht/fTvh+dPw9P9U+301sUAlc/Ct3j2mDOf
DIIK9Hwb5k1HZbbZGOk1uX7iy+ja/rCWb+3/nm6qX4RmrRfBFxG7p/5hh07X4/7RoD5HRziJBLBL
cp3yCE/RXeOTIp2XwgDM8gno/EVvwnzkhWiNY2iGzYUA9+2PH06xbgWoQJTkZlLAp4QTmYmXnXAM
veUAQ11MopNe6KiCTkzS69nckyRnNuWHVmgcmP96YxZ3wCIpqapE+g/JD/4mh9RYSgWvH/UnxQRl
AlY4K52CTYQkFi6mJM3HrQVrGKgN3QzHjfKf79nKuSJz1kp2MgU4EAbevMd0MJ8A4gJ7cZGaqzlX
WENk2nChbhiS9Eor3T98np/rA9dkBEPxxknijeWYfwh6yTAF+ACVuxQ5uUwMKK1rkK+7uQwV6nz4
fFOLv23MSdLjMvzSbz9NAQwjEGvSyCzF/I5AOMaMDbAdnoF0CVge7mGRrG/uidlYtQySNWTo5TJ9
Y9t/wZJZ7DlT8q32/bb4QYq3tyRNaSGZNZ3mGl8u0HfPPe0001E6qWwS5v/kA5krypYwZ9Rl69bq
BfBG1vsGQFlLM9WZRPzAWqhADoerYwClkQC8TwNMwBNrOhuBHAcgLMF6TCNnb86Dez2faHVbNTGh
eWNiZkI+i3pXYNN2StUSSTiKOCJwDz+QyWpiAQYxDQQAEEZq24F6zFqchkd3Iwa6JFj4M384dqgo
L1qqIlgJkKHbkCgFkBJ2ffSYloo60cSITu8MECNYYlV8y2teP+sMtVrdV89saOwgOSxzBVYaEHcQ
Hw/QqGS5DyEzh/V5NGP0F+PQgKNiJvDmgxHUsT+uZA8XK9GVXAN6/HKZg79GM4CZ0N8gSn5N4plQ
zJ3FcAjXBmujJJbTBAFoCd4Op9dBS40bF/NpLIVSfQO7Ph0TZKeUwJJtC0qLcB11RwkF6kiTgiNM
dUdMUta6zDW5SrpDlaN7HupOt9TTNLvGNC1ZLNtPIcxVNGeOaBltJzScHY5uXyt9AEPuSZSAeOHs
vOXYwLBtgeFCLaZt7a5+0kBjg51bOyEfPASUBtjqYJszDej2gR9eJNOpROBwR5GdlTWRqYepJAD7
vpYAk58nwrrkq8Ir6QHkd8D9sDotIo+Cx0cPrNU54qSN1+KrLYEVbQk8LOoqDwP1D8cyhZIJBepB
C4FeD8QGLGggLdRgpIgFBcYgujcVkUyDX5xEXytBKxqCWz1h3e/eFf2zfN0yEea5CZ3NKLP1CSyN
UAAbAN5H430O5FqveyZAJXrPG5ukFwI+qnfeP3x0D/2XfwPtwteuD0msutgkA4ybU686Sk1JLmGd
NRlMv0XDb4lmUVydMc5FOvMKZnfUkxbNSS9Z/jGD8dM9rtmYw0gIYh3MXyVYAUtSAiOsgSYC6ENw
HblVwM9eYwRvzQs7SPD93eU0x+/vqvkNtjG/YbvEtXfbuUlj6NZl8paiJRBaUooZydlHdF/BD4Px
dWIiwCOqVMpvOk7zR5yxzNsz5mzYrw/Vlu3Yfj+UQ/XOvXfhr6ukHJ20w5zqjioMRFgqOu8AkCrF
vbJGSfj/n+RJnEs4n9pWkrWl3kq65HN/HR43w+PXp4K2Jz1HjMvJd9Qah1moufPBSbDTOSQpE3Cg
yzDpOGhb6uPVWlwAvmtxxTK0Hz69PHwGa3146JQOI+VYZQokLgbtukix9JkmUBJKB/hnBuummCGt
8F+DH9SPOcMO6pvq6ewaG0vupqSTfwEZ6x8Ad0wKW5dArQMT44NH9gkIwjH0AjgBh0NiPmBkgbcT
qZfjLYQRDWGGyXSEv+cPL/fPp7BfcdJmlzSGtYIUCfa4wZIjC7DNUCVCtNrYWMOEephKAkXWjpqt
omqhLBA2fvxyMF4YrjoYMQ6YgCR4LZFifrmgHiAL152P8F4S014L/4eN2HitFpfqlrhm4VcqrZym
nCHFi2vbSIWYBliGw5gaQIRk4SQlCcDHMJ0Nu+RSmg+5EMk2RBrEEWj9Gj+8X0U8sMKGMzD5MSJd
NnCkDSxnl0TiQYmstdN/VsRjkm8+rZ2U62nBl/1xWi8P26rSQDF4iZj3RE2pRM4AZxzBYLTyljKp
xJkDMg1UPV6r9ULv9LZfcObxBYWvD/v7jy+PU53TIY2ITklE3DrmLOkiHlzOHVY6JdmxDAjMaQkQ
5nJco/Gcc4VOqxurefWNLLxdfwrKbJ5+OcXWS5SfBRcIcayjXDLsFuJA9nL6lY4iAtPQiyLI2Rj1
s9U6Rr3bSXPJEz1ClUPqD9EaAEJh7eW3UmDCkmXokEig0nkUYIzgRAAWBBBigBorGq7njT5Jc0bx
T9dv6jna1sSXwfmfHl+entOv/ZeXsm7u4zxrS5ZtJJzBDAvhMFFdwzwdICVMtiMecC5P7E3B4daD
zvDKxp3V1PaNSueBbraLliDf303J7Jh3gYcD4BDuLpUzetM7GoD5c0pz50IGQCsyj2D6uYvXScu5
u5jwPl2+qebRMI/wpV50sLn78cPLwStrx7nZMagTCSB0TwJoInTRAPbrLAkUmIn2TBiVzCvZVdPI
53IpDpcXUpuW1MvizG+P9/NVv32P/z5SDaaQWaVECBh7CmoL3fYpMMDhmnZSMUlNEMpacY3FeV+L
Mr+rXFpMb50DOTAGn+zV6Y165FBpX8yGiYZJnkobpDzmMNkgQyeBuHurRTKvdOv4I+RxkuXCnJdK
BKa4ac170tx/73f3/cN2WISPhKLCsGC74KIHyA5c3xMgi9JqMPQuCk/IlcJHtQSV8Jqv4y2DPuTE
FCP8P/cPUxyOy5LcqU0MgUsDZjKgs5mlznMrOwKg3gsdvBT6jEk/jVaLIVhLjAl8j2/h1k/vkFpM
QS8AnHjGZQ5AeBIAcKUBaToVOiARzFogeTouzGA92EKOhmIp8QFTJ3D+11i2BxhS8zHzCT/xaGYR
wbbpLgrBsL2U66zEUCxSZ+qI0+KVLLPj2OeSMA+XK7nNvrGMdqsWquVdD6Dq06xcWrNbhj7r8RdE
wwHOFzG2tJ4CQKQF1jC5LhFBXabCZiauZ7Zrec65a+b3VLPuyRozDT0Vs6Knb/cAhv95am7EcY2Q
DFEFGoV6WCiuSs8yUKQJJudodIEKeq7gqR6wFqeRoDj0m2WLol3/3O+G55JE+7Qtim8sleRy9FUE
mx3Ig91FEDoxLMRXYKySyNQICrw+0zf1NYAHxeODzmu11W31pDa8MalVwL5qa1onxdoUk9GgIwBo
Ay112gDBwoLZ4gO0whFrLhGs+dC1aLuG0tjQqSBi+/Lt6XaK2nM9Fm9ylZzgknSCe8BqTmKJMfAR
SpSRPkeno1hUZMzGqQTY9C0Belu0Bdz8pWzdU7R6KgR3gjgSQFNxRouLVwASSZhUEtF3A1vQuOYr
mY9YibJt+I6G7UoBbPrt55dvVTrArRxDPbfjalEr4enKdEJj9ZpOCggo4D7rQ6aw/ZSxb+pb4hdP
mu+48Vol/86ukfgAVnSxzSZqaUH/H+p9VI5YOQ8L6rEAzIMh8oDmME0n2UiiHsHc2f3VYJnD0EhT
2etBa7vKNf7usf/26X5b/N+YilMcwtbe8vF9BhN8UEp0BNP3ecAKFQ5n23pYac2BAJPXedDxGedj
3sc75rPYm4ZCwvD+git/P/YUqXvsZS6wHk13NhfnPSAT4yWYNa+Y5UTHbN7UXOUw+LnM+3KxEnrb
EhpbqR52QrzvPz58fXq+3/4wPD1hT9g685USMqp4T7JGtxxwei4Y2LHAbSdsqT0h0S9z/y6PW4uo
tg0RV61JjoGCfdUdcAwYUDbWyZAcg8mSg/rBRGnLTecM0HnpOQ+ceOdeaVNy9PVf7hLoGvfNpgRn
b7PSH/DlTh1N6W/fpqMH9gCPHhvTsWBbw67IQoIuzRHesqCyUwBnA4kyKNZufjANVwux0y0hlt09
AQDlD8dXOfZLMYmpQCyAaTjysFuBgFvqWKdEchYbFVJ+2W1WxjzbViB/WMi5b8i5n5KZfz9lokpc
ZMESCdhAJzgMPgQH6h59IZGJFGWMwrLFZvy9kYaKj6Ct58rJ4PXbTxPNUKyUYQWalPRYpgt4Ijps
86FBNzJOpQ2wu0g7N2o21EIEtRaB86FRhIG4oviGSk7E2C0jaaO5cIAnOdZg8OABaFJspEC8D86z
ZNWr2hAHPq8J8WolMheN1eJqmdBR6FTovz2/nKjooeVbIl6BVcQCSorNrzyoQg+Y0RrCI1A1n6/C
tucSXMhXOdxRz1E1ji/XUw+T9w8fF/STSurhaABPShr7lgDaNwS0ZI6RJhaMjZFfiX5OD69FNnYt
stgsvSG74enz89dvT7MehKaUZZRPdFQx6VNgpMsGPeaZMSBcGHm1xFEnAQpI8rYuYOVBR6KBN5xr
Bra68aaeQ7+emNJT0db99gVR/6znBoXDIQuSIVYDAO2owDXBI2s5oAbNjFMCUFgMi3Zgi7EqOdS6
xx58OUzaon+ZdY4xY90O6PEAANkg4QBgagxm2nrkH1rIpEF1OFNLcBqlerjmm/XDtV4WxP4tYhRT
FthR3I6BZkY0wKWYMsaNQu48x+ohzLcmEfS5Uld3+/wtnqkxjfWc9mI9J4v+u5WbfN0Q2MhDDF0z
66MCbUIz9nxLGttDCNMxlRnFsvmxyfdlFfiata/vqWbRi4YGhy/P9pi9HeNEuFA4kcO/eOlymE0k
IWhAicahFpEG8CJQBhKYFIwapv2fElYfr9Xz3DW2f7/bLrqPjL14x45Fc/zLmQeaqDJgGUx6c8Qj
O2MdS17LnLmCc/G2vNXj+Jd6AS/6FqGgu7X0GzLVMR+4y/3DfjrDAlsOjP65KKijUgHAMMDhjLCd
Y4EDFgZjlYDDxMuM+zTqTf142ZJpWMj08PX5fj9r+UZv2VjTDJRHeJFTl6XDehzMnpVwyoVy8EKl
ppxd7Cc6H7gWbNNY6sHo/bZSNr8Wk3VsPDbmKAEEo2C/seZY2DH9wIDO7ZJzgVOwIcGSq23gMduq
vYHLtZt6AqY1q92qT+/TZ/e4uX8+RjnHltfwszgaqJIS6IXWBCuBgc95hqmbNIOmBaLhzWVcvBj9
XNPd6qbFLIbGLHb7hSEYmwCh2iqdeMaeW/TQc6vkiSTKkxFg5r2APe0DA0KX8a+4UiCkWoq39HMs
Y5/XmOVyJX0B3Evp4cuVyt9+7VHTm1JZgUAXu9DaqDE/HAPLwPgdgd+iBSoQKbXUpFfEhSHPiQqX
ajFZA3LsUaWrOthXtXIeS/BLL2eRbGLGY2d6sEkKyJwB8tYl5WiQQFhCTle3uidpzoX+Gk5fS8m6
x0L5crkkBXNjw+BTInOCTQ8TIl3w2ITRSsDw2BMlZMeSphGbSf1hID9eq0Xth4aom2WF14dP/eOY
dM3ZmLmKn2hdreHcCtcxLA/lTAC9xrBydpLm6JWL0b2pD+v4gDOOgfFiJbhe54zjl32Jr2LiaP4H
/mfDbpm7ClQzCK7hlWIoixNs2u4N6RSBY5uwRTa/0t8MWIiwEH/TEv+UeHu3rG/VSdKYYe9rQUqK
M7a6BvhNU5CUOOGIlFdiQ9PDK5E3fK3s6ZbpeTfV9/0j0KBTCGyMfxkuHYZKO+WwS7cDsGyDz6VV
rCAxBWHU/2M31bnQN/XkmjPuS4uZmXe2Sq05MiYL261Ecqw1AQ4C9nwWmLwFv2WpOxmpQ8VFubxY
D9gYvRZSr0kq3anJ0/PbL1/YKcTAismlEc4lJn/YhD1AEuhSYNYd0ZgAxUB0nRdVx7NBbuoH0cbT
N1Px6vYvf5n1sil2R2RlYCPLDlgUqjhnsFAbg8xB5pjSoS9a3W+q5WyiQ9+Y+p4v+fkPw3O/O3h6
DvnfsK5jMJEI7GGcgOpQDCZaljur4VWAGMkTYgxL6nrBxKMkZ/o3Ha7e1NNZ201G6NKbhRT75R6R
VfnzB3w8eNSgExzrwICcH/7EhjYMG+RxKrMDLaLfWtn28915VPLzPIsbxBvWm4JRtowyvh8esfc+
hv3nGfqieOPQGEYfNBc2dUaUDkMl/ASbFU6TSRkAi05vCvQ0HnQme2J94009B9mYmFoa9s3XX2Ai
h3bZdkzjK4FbqVinIrZw0v/b29H1KIoE3/kV/bLJmJwGmm6ESXzg07jKeHGY2b0nwgozS1ZlTpmd
nX9/VQ0oIOhs7nI8aOwuq6qbrq7+qA9sFaZT8kxXdmHydr3xh9x4LKDSfWOVbZu8nudWMCiVQbMr
V5zERjB1Yv6lIvmSKvZrnGmubjgGmqAKWysFVumWPqQwqDQuO5R68v83hUNFo630PO4PFGr0KaaN
+K2n+wE2LlIfWWM0IXMxiCxORqpnD82xPh46GlNlS1NlmLQvhm49n5Yo7djrUTViImeUOBHLdj9P
UzITeweLMUtROGzyMAifDszAmHCGpmtrVKUm45raPlerYZGapDpGqRrHrSljlWyzPHlMk7eaK0Vx
piwuocX1mgpy56DxD8M3jgGbYRCbhsW5a31sZXdOpk8tt+EajeIdO3soNCpF8xJta1quCFCv2i46
8zjCgk6GtZKleNoQJkTAZXBFtVvxgWs4WrQ75mBDjVuXlD9T4YzqReukMBZDV2MhRPgtji6p5aFb
rmzhnTp3QdlgrHVDgWHomPBh8490aUWhR4DKWqnJ7fk6n4oQMKx9MFgeQRhlnH90QtNc2xnKngLr
TryaMVzPwwCNlI01z3E8/l+5iB/J96uas0MIuu7YANP109Ha+/D3Js0T9ZSeReh9mWqG5RloYoGO
CKBaDFuHNQnjOrcMkBe7dYrcQNNgIOk4TYfCbxUDm2j3nManRfFY5FGECVXDsBBjFDHTAtUG2ngI
yoB6Iu5l2ySsjkWS3F9lVhc/i9Onyrn9/nW7hd7HDKR2tNkcyDaKE/LtnWT592RPXvYZiNUBBD2P
9s+JcKPNv4PWLSuKzKV5dPgRghoMX9L4lihFWZGadw2feXJL5HrhIclFQNKyvEn4Gnr536GHH7VW
QQ8Iehg1Id0lXfRUhfHfbJL06BNMuFDv3xVALXebd4JhNrEmeyLHvd8tCbI82kyoDDLkk31ySDGH
+MRQRtS/YezTgBzeQN6SOMxe8xBYe91VadvjiaLoCMa1TwPpyz7NMQ4C4ED6R8yAaEreoDJPdhOV
avL8RgasR0oqr4pqhCZlUYMYIEJzBKBFpJU7nS3vSPDXny7peR5nq+DBXEiT09MHWlZL9pQcxC6Y
pCI9bje0wuS5dMxKDqoNBmdhN97+A9NHsi99viefZwF5LgIHA/J1FicdePV5D+gNdBbomSQelAyM
5Gn1p6qKwJuP4hijBxDgDI20a503kObC7IuYWEKWu3XS0xVsLvnmYrG0yeVHh7WWX4HeRPE23Q16
gVU6l+4D056T6YO5cvqxcg077D6P1j+u0CeGToHXRz8ULJiBewFWZdC3ZaZYX3RKP6cjxZfC0DED
8woDVBlxBJ355tS9AsspMBCGi9nd3HXgBV9olob9GoaB+zW4jFNBpxsEfbib2UvnMgucQWdthXwR
DEh5oVkMsZZisIWFzv79Al7A+hvyFSwDc3HtxaLt3LQA/YPAsHo9NAZ5MbhL8eIjzYfZQPoHUEsD
BBQAAgAIABeRe0aGj4ykwysAAMWMAAAyABwAY29tcG9zaXRpbmcvYW5pbWF0aW9uL2J1c3ktaW5k
aWNhdG9yLWNyYXNoLWxvZy50eHRVVAkAAx7/FVX7/hVVdXgLAAEE9QEAAAQUAAAA5FtZk9tGkn4e
/go8tkYudt0HY9YRhcvbY13TbMmOdTgYIAh2Y8XLICir59dvFsADAEFKPTNvywg1SVQh68usPL4s
UB+KdZpttyPv8Polm/6clw/ZtrzfrVZZ4f0mGCbk98GHpHw6TYPX7af1YrfMtref3r/5+Da6/ett
997B3Sxblfk8z4pRv/TBp6zY5uvVSTAeBOtZ5j08b7LDxV+1RJJ7N++SMv+SvQIkBYj1Phyhf3gu
n9YrQEqNkr8P7rPtZr3a5tPFXsT2yfuNYv774OMWFLoLT6sJTAaDMCmz24d8eVyQYiIQZogqj+gR
ViMhh1goD2GF8eD92GujfpukHlz81SN4aIbCuyEsZvwV4Nisi7IxmZCBXa1Xz8v1but9/FgB0ZIb
axlDEcUUiSCMkQqDANnQlz5RUhgRDQaDoEi2T9nMe3gqsmQG9zHPC/PtJinTJ++PXbYD8Ol6OUw2
m0U2rM08HJfrInnM3iYr+FsMBtHXNNuUgOVg3ujXYOLbcGKDIBqPvZvx3U/+x/GrxkS3GWDin6P7
d5MP9+8fouDh7v27SWzv3ny8j7yk9PBXXL8IljOdsAQs+umtd589wv1b712WFDDnODgaOJN9ejux
b968D+xD1HSphiRG4ANqXmDwwfvNTdM//+4VCN3CP2/89r/Gt9bzBgj96E0mD9GvD1731ZVyEqsw
mdViqdG8Evv1tvjzqxMbvP/lspMP50WyzP5cF59v9/u7vbX7sUrDySS0D/YylP3KTShC7TWkjDoo
f6IDlA/3n/5FKIPaYTw8Gl3xl2WSr1BZzRxgQLnIp9vnbZktJ5+zYpUthrNnuHTQ4S/1lqv5fK6z
JOUJSbxlkj5NltvHSVkkG+81hMKAvFQQmxF9FAQyJB/QlozVGpLJ80UZBk+xmhrh7SdOINq/ZMWk
AFeE+4tJ+pSlnyfUwaNiwF4qe8p55u1Ft2WCRCrwgLckJtuOuh2NtRJZqqeem3hAvN5kKxBm6EC8
WJaRU8+J2sugwgwkTDvtchC/y0rnJxeEZEoIRsF8kyD+eP8mgJ3IRqPmt5vGZxC82pZ//cFbrFeP
h79u8rgs8tXjcfjs0qvK/kwM1EvRcZNm3glBAP5aZk5VhQe6JSxe71azpMpgvcKEIpJy5qHf3o2P
CuWrvPwlL5/eZst18RwkmyTNy+fRLN9+bn2pKuHvTgvFB6avZrZef2lmSDZjSs28Xx7uRyN3Q7Be
lcV6sYAKOdosknK+LpZ3gCNPFvk/MzeafS1vnMkE827ad0DdGS6XI8LoqwHBL4ORZgSqbC+M/Lj8
Tb4qf/DSJ8jg9dZVe0eVkF0ow3SzGTGtAQh5IZCZnIt+IO3v/WAYE71YCHVY6AuxTBNpPJcMnWQM
kt1nZ2OBQRqrIhLCcHYWi+cepqbTTMxn3rZMgAOArxxTMZTAF+dYnckEIsmFxx/V/CIrd8WqL9Fu
6jzeEteUNsVpMsfaO0yc/PlH/aGyJu6k3O+QNptPTa1mUxRhR4Xp1drjTLofRMs9U3mxfYyU1Puc
fQFeCEyxaZWD7J4ta+nBleSUeJPD/MnysZjkqy/rz1WGYeZgmBcIJEx2BB7NI+jRPMzbk7urZuqn
dLiV9eo5Vzx8xhI2ddEWj0b/DWs+JMCR/1Z9rVP0D975l5rEl8/RV6jtKazfmuTE/NCQWCR5uW2K
/PFbo3i3+HE0mmXJYrFOIaFXoG4ac6CI7IDOP66A/0IScGHPITbrwbvlZjF8AobuIvSF1tCJyOb7
DDEavYHVF3v7QkuQTJNtBoDTzy4X7TYzB63+ehiNi/Wy7644X2TbOmkrAHq0NOBkgr2qPOllOIE4
fx/OfOl6jvdF/pivTt1XDYZq5d1cubtKnFQCQNYC+PfkSzJOi3wDSbbIegAazufQHk0mk/95x2Dj
zC+Qp/7hPFgfvD96Ny7ZZEL0fLdKXV2+i798iaJoMoVN/9wMNO/mMCVZjAhn4tUxUvj/t8zJvHTf
9/0JvMQ1wvsG0BuXjvrcSI6mefnKNVVF8nV0asYw1ynXjAMDLKbNAYLNXNGZAL5UpK079q8EBmZ9
A1O3yCwf9XR8MLDNW7eAT0gCbA1W35ytnhrs7ugZACIHZir0YQQshTnYFuii2/nC9OBysgjuDMxT
rKsBcnYHxdJpQmh7EU4ISbkbYE1chKj5jJBKFj+3Yz0genQXbpF80zFXnYC9Yr7o4CKYOoKRFrTP
wCBr8Gb9mEPsesGHj6P9UUlUFOui6tH3RxHHO9XgwTVi73bL6eHwhfDBYODnq6R49u6WEP7buhev
bqvoj3bGRF7r4iydz5X3+oxG3eBX3t+MDQNGjUShEAoxzmOkhY5QEGMVsSjiUkY/fs9BUXNJXm9q
GwdcnM+hskMswc0uD7m7x0/5ch9gFR4Wco4ZYyiODEdMxRYZbAUS2ITYEGIiP+7Dc0lqB5fuw6Uh
mM/TOYXYxOQ1zIa3IRlS8RrwWRorxlSIfBobxGLDkDYyRgJ83JeBCpXVl+1Fr3X6tI2V8HOsZgpQ
0yuZvQ9ywGNMIl8hq0OArARBvgwZokQxasNIAtPug9wW3Y+8PaelwP64p6WAwiR1TnBeO/uAG0F8
Zd3mU8sQpBCwuokpsjziPuWRpb7/479+vnPApMj0HCgEQcfS9Z1vssckfe6Fq6QiGpwBcREIsLOC
UAIDI58H0uAAq/ga3FrwNdD1jBb0BM/PoGtjsnOHvugdViufSSwdVkgAVEnkE4uRZZgZAdYP/PAC
6stusR8c1JhcsYReHasT1uNFlmiiPM+1ZN4NcPQhd5a0IWe+8ZEIIotYoCJkNJPIQgRgE5vACgmY
dtvCxf2tu7mxlBaC6+5SGuhlMoc+tXleUWWLr+B8TKohdTfUHwCCr3GItQyRYRaCJmACaYkBR8Di
MMRUxcxt5rhiCrdv8mkBSfk2Phhje3sQ3m+gw+igjXDaA5sBbNOE/ZM75+VDN5EOHVbOI0O4HyEf
MCMWYYEMhygPrIkEMza2gl7FChL7YcJAG2FCzxGahLoC0392cyOHBuYTLOSQSAALW84NxRqB00FQ
xwJMLIIA+UwZSWTsR7G+CvYkvA9z0BhvQU/m7Bx6MhdVqIAXBZ/ejj8sdkC6x7uNY+CHqmSGgNx5
hIKUwzlHMrYRYsQHK2vCERGKCqIoNYG8Cvz9Jlv99Kbf0PX0HALsMpSWOtksO1cny2gn8oP1crle
fUiAY2+9G4j5oYR7jNsI6cNO2DiE0hrDbqhAIQNxhYikAYHar4TPrnt4Ukz7N8G2A+EE4VIwnGa0
lcxYn5Kso6RN02yRFRWdJpW7Na7ABVAW6IPvU2WRjSQF14PAhuDWCPtYhlAIg1hc37yTxH4dTuMd
DXifBlknYKrjg/phU1bsNx10wZUyEMLO/aiw2EQBJEFKIE/DJy1h47DwoUtQEY7C6FyDD0X+BTA1
t6NnqQvb0jOzpdx81pOv5pnqKOf8PsyLzB08PB+1AvIxNLiKrBgSLTAUjWIFfxilUOJDSGLSUokx
FFITxN+MrOMK/cq0prS1yM6LBcAhHScL87qjLZ7HWfElT7M6nlwSxtrVUZdpsdDIt45IiyhC1kKa
C8HFIs0EoSr8ZsE4iP5mUJ2j6b/lfN6grSbt0b1ime0sslgX4+dV6uqOqSpP9V5lRSF9A3pCI0Hq
dK6BFSNlXWhpplV4vfZYWAGaIofyu7U/4rmUT/bDbV1N2qPrvnY1mv79Ef4h/VN+cFMgASELrfNQ
HygBFDIoABCGoTa+sUQqXCXMAyup5d1ektzGlrA+bJDoZhU25701zc5Xjx/L/HBgcgPFB5ARE+NI
SYOw0YAMQ4qDqu9DZ6JkZHBklDANZJcFtkHN8Tko4gj8vMuiDjt3t4JUsYIO94ZoXoe5e3ccJYys
4OAYmoQSOEroQ3iwABFgc9wABYXy/13pq2e1yxSrO3PQVmXWox/l8/m0Mnq63jzPc9DwYGsMGYtW
rhDE1IRxLCH7OoMLg8HrOWRkGlFGJEiJdK8rtGW24QjeA0d3i12YTXeP4+fldF1VdCwrduUKekT8
MALSCu0SA9YsYw5Nagj9cygCRWiMbaC+x8TNFS5klcaMtg5a9OlgDjH2lOXLWbJAyXZFDmZl9GRW
G1ESx9BNKwnc0BighQp6qQia/jiKYko5bfvxucA2HkN68GSmU6FqVfZZyKV17oxKIcMNqWtHtI20
D1XXj4lr7Bg0djqQSDE/VhwDttj/HsO2lum3bGtKSxU9m5+rAhevRKN3Iyr+YKqWSkKUiQjFRLkU
EcbQ2UAvrX2BWRCBcUPxb5an5owWdIOTc+hGqQ70cZYU6VN1GAA7UFWZ6t1VGePrUBDoSin0gkz6
GNBHBhFFuAwN5Dgu/nPF9Qjkwh4dhttKqh4aUVXSur+I16vyvvrJQfF8zCjUZW+roFhCxwoJEaon
CwINuyI1ksZoEYQCNAz+4yXUPlxo+e6z7XpXpHUncg66rXPa45Nmpg467wvfbLXdHk7RbwSlh3Bn
MUSRxcCWMHc1QWt39hij0ARRHHBmORbXCmpDbhvWrG8rZvqQhT5nz8vH4ljgHXtj1upQg/mDGEML
7YcMWeDbKKI6IpZRC81CL5SmrBaIKelJPTMlqpJ+cvptlu6KvARerCqPF4IrMiR8SKuekwWSBIag
yLiq6QomJMUYSSnAL0IClIRfdY3xXvwlT65HB22Msge4mXV40qr+qceJJpEhA8TaJxGJSQjmg6ae
+dAqu0vI+oHmUOQtk/zanrbEtnGZrAdXlh6cLYUQT4vnTbk+hpckdX/BjGIB1YhwH6yIsUTQDPoI
4zBUMTaATV2o1m2RbTxZD32YzXWntrzLSrsrn8Dx6/2t8lmgCYmko2lRAIXOVxxprKE7VSKUlMeM
yu+qKHvh/bu7H2yBznhPKs5E9wBnu8my9GkI2q8f3W9JmuXK9QC0qpDVuzun1b7vs4gjSRnUligm
yGAfaguPLA4ZpG5J/hMnCeMK1X0fqJZXd6e1LSDOm1aFsZ7T2r3X0/9Nh/aYrUTtQhYcJTSaI6rA
mRkGbgWeTJD0KWYEdlFVx4ENZtKUM2it1XMQpQjOOvG1rB6mH8OLDUndhUAdh44fjM00FEDGKMSW
UhQBIWUkYjFh+mrSbModtCGcJ3NFJfBP1nSNZDfL18NyvV5M11+H1n17qL+4sk3qqk2ck0vjUwVZ
HQmrwWZxoJCvIdsHRPoSGJ6kcXS9rjWEXzh1acxoKWOm5yVAmZSekoU7cgpa6QLSHndUSbsHJgEk
f6aBgEKrAiyUCGChkoYhJVpFJLyQLrpC25hS1oeJdSpCbeAduO62Nu/HVU2JWrZ1fJQwgYSwkNIE
0GXLqsZKGmpVGPkq/rZtneQrhnXDHQ3OWxQ1ZccW2n9jx6duyfChAKhhZJh1HZKILbBnaimCZjlA
IlShghiCvjX+t47eGlO/ZCkI6J/WwtdSazrtSQnT6TEiG78XOz6i4O7BEZQPFBsMYehD8taSRUhR
GwGdicKI9B8GnIR1MJxHn1ZMdBIzUL36aVndXFMpaqJgwoAwCDfIuVB7mYY8bOC7816oM0QoP4y+
xSEvEN5gPzZoIzM9cAXpwP0pW7mNq34Jsv/FCpiwpvYSV4RBcsWND10rpgTwWmC/xucGmqsQMoSP
DVjze0phz1IXnmmcT2yrJmY9qslufj79nveGEjUklVdIIWKfcQYtOLA0FtEYUgcPkQ8NrLA2ig0P
ryXno9A2ItnnG4p1EG3LBFLG4alFdbrqDBwIrSOsKdBq7kOqgC7KxMYiZUPNACymlWtcxNQQ20KV
JOdRo5MZP6BKX79OpvkBDzdV9aLEQgkAdi0Vg93mkFZ996BUcWjnYkNkGON2HW2Kaa8/Ez3rz49n
DX//EP10SkbcbY/vTsl5RFCsYsjsmGn3FIAh6B5lGBJo7IPrD/WqH13cvf+Ozum0ehv0/Jx/ud8R
deLm7W5R5uV6lz6dndA7qi2GBPiAO3ref3QdjKYQLoaiQDJwPde8GKOAh4cUnI/GmjH9PXF0Zemm
smfTWmrO+tTMMO+oOYX2bd+x1j+HXLr/FbRPEPWzTRpSBelAA2N3xTiEHtHHArxXGiDM2lIZs290
QB35l1qhzrSmPiZJziMQiuG0w43+sUuK8p/1o3Yy1O55MqNVEPqh1DYGwh8yCeWCByFQf6iEPrec
USGNjO1VNU6i+/GfxgdtjGkPcHU84/y6XZTD41EcqfKFUYYbJpFk0G4yoEIAVREIFwKsHnIzCUg7
RJtCWqtXEdpdfSa7D4iC+JuPiJQfwPI8+j/irqw5biNJv/OXOGICjLqPxzot7shhzcie2Fd0Nygx
RFMaHlqPf/1mFrrRKKC6yfB2eCNm2FQDrsoCqjK/Ly921AuCWBK4UoiAerkMCTiTjK88vzeEiOaE
JL/h/sVN9cqVaa18GVj5PNx/w63CrznyKfTiuqQVcGTVRaIdJhiVlYouYyKG5iIlri5Bpt7B1O2b
8Eq1mIGto0Tw5e4Apr/8PsNHgrFrSmUxhzwobbyWoG8xIyZ635noYyeMMNyhB0OGtlfl9xZIsgOn
DUEQf467+XH47ev3Ye6z57ijuRTwHKnuLEMiEgEXOQYMTjsPtE1YTVJuirEcbyEMbwgjyO0tKcJs
/oAHcU2mB4PUAs6PcZhL4oGmgRoAlWYIYHdQ3EYj+Wci1GerGqWeXwyN+feooHYI/+tuN3w9qCQK
aAW92kKB0eU2dUxh1ojETDsrTQcv0HDmufWUvepTLSOfdgeXy7XUQ0PqW9kvDsY04vXNzwXwgjUo
Fs8SwFoEfscXSySwcu8AbinkPpbwzgQCm0xYRoXP1JrzbuEyeFv8cmkueo9Jr0vRe76PF80gegJ4
DrhcYqIVfqL6945xkm1HhQCdGpxH0u46ogA7Usvg2wsGh106QerSVS26aaxHLDH8r5u7f78UDyUt
WooZ3MlBZwqnR3QhGbANvIBcQTvgpSRa6Wi2b/JgHUZvS3y4Wsktt2ubBl9Onvay8X4K93do7A9+
HFPMSPKBqwAWOGCeHgZ00eOMPitLGE86SZUvlMOzEqJew25tGXuwGQfw+v2nu6fJ+SMY2Ac8sgQU
BgFS2FGDCVTWA8sD1QZgKHgD/EkL8VdR6ZmAV/UaaGNhW3J4OT++/3WZWOUSAQgETKDwJVDPGdSz
il1yQmpFFDBFeZmXMk1eiazp2qvRazWZt19ucl4QieyBVRHQNDpzzFIG4Z0AdKI9h/8l4jlLFyIS
x9kroU0jV7A3dIpx/N4/HnEdI7h7pNTMOY3BBBMBWQAPssD+AFkLZwRQI03TAtgdB6knpw1NaFa4
DstYt/eou/l1iUSOv6C7IsO2FSBK4Oj/lgzOobHwyoOgJgaapWevvvLw/nSqT3hfC9yAY73Ryxyf
vdv76T8Pz5+Hp7un2umtiwEqn4Vv8ewxZz4ZBBXo+TbMm47KbLMx0mty+cSX0bX9cS3f2v893VQ/
CM1aD4IvInZP/cMOna6H/aNBfY6OcBIJYJfkOuURnqK7xidFOi+FAZjlE9D5s96E+cgL0RrH0Ayb
MwHu658/HmPdClCBKMnNpIBPCScyEy874Rh6ywGGuphEJ73QUQWdmKSXs7lHSU5syo+t0Dgw//XG
LO6ARVJSVYn0g+R7f5NDaiylgseP+pNigjIBK5yVTsEmQhILZ1OS5uPWgjUM1IZuhsNG+a8PbOVc
kTlrJTuZAhwIA0/eYzqYTwBxgb24SM3FnCusITJtuFA3DEl6pZXuHr7Mz/WeazKCoXjjJPHGcsw/
BL1kmAJ8gMpdipxcJgaU1iXI181chgp1Pny5qsXfNtYk6eE1YK+FKYBhBGJNGpmlmN8RCMeYsQG2
wzOQLgGvh3t4SdY398RsrFoGyRoy9HKZvrHt77FEEju0lHyr235b/CDF21uSprSQzJpOc40PF+i7
5552mukonVQ2CfN/8oHMFWVLmBPqsnVr9QB4I+t9A6CspZnqTCK+Zy1UIIfDt2MApZEAvE8DTMAT
azobgRwHICzBekwjZ2/Og3s9n2h1W7UwoXljYWZCPotCaWDTdkrVEkk4ijgicA8/kMlqYgEGMQ0E
ABBGatuBesxanIZHdyMGuiRY+DN/DF9/+/Y4PD2VBy1VEawEyNBtSJQCSAm7PnpMS0WdaGJEp3cG
iBEssSq+5TGv5zpBrVb31SsbGjtIDstcgZUGxB3ExwM0KlnuQ8jMYX0ezRj9xTg04KiYCTz5YAR1
7M8r2f3FSnQl14Aev1zm4K/RDGAm9DeIkl+TeCYUc2cxHMK1wdooieU0QQBagqfD6WXQUuPGxXoa
r0KpvoFdnw4JslNKYMm2BaVFuI66o4QCdaRJwRGmuiMmKWtd5ppcJN2hytE9DXWnW+plml1jmZYs
XtsvIcxVNGeOaBltJzScHY5uXyt9AEPuSZSAeOHsvOXYwLBtgeFCLaZt7a5+0kBwmL7ef7+2E/LB
Q0BpgK0OtjnTgG4f+OFFMp1KBA53FNlZWROZephKArDvawkw+XkirEu+KrySHkB+B9wPq9Mi8iiY
Pnpgrc4RJ228FF9tCaxoS+BhUVe5H6h/OJQplEwoUA9aCPR6IDZgQQNpoQYjRSwoMAbRvamIZBr8
7CL6Wgla0RDc6gnr/vi+6J/l45aJMM9N6GxGma1PYGmEAtgA8D4a73Mgl3rcMwEq0Xve2CS9EPBR
PfP+4ZN76O//A7QLH7veJ7HqYpMMMG5OveooNSW5hHXWZDD9Fg2/JZpFcXHGOBfpxCOY3VEvWjQX
vWT5hwzGz3f4zsYcRkIQ62D+KsEKWJISGGENNBFAH4LryK0CfvYaI3hrXthegnc359Mc391U6xts
Y33Ddolrb7Zzk8bQrcvkNUVLILSkFDOSs4/ovoIfBuPrxESAR1SplN90nOZTnLDM2xPmbLhdH6ot
27Hb26Ecqvfugwt/XyXl6KQd5lR3VGEgwlLReQeAVCnulTVKwv//Ik/iXML50raSrC31VtIln/v7
8LgZHr8+FbQ96TliXE6+o9Y4zELNnQ9Ogp3OIUmZgAOdh0mHQdtSH67W4jLdEFcsQ/vh88vDF7DW
+0mndBgpxypTIHExaNdFiqXPNIGSUDrAPzNYN8UMaYX/GvygnuYEO6hvqpeza2wsuZuSTv4NZKx/
ANwxKWxdArUOTIwPHtknIAjH0AvgBBwOifmAkQXeTqRejrcQRjSEGSbTEf6ZP77cPR/DfsVJm13S
GNYKUiTY4wZLjizANkOVCNFqY2MNE+phKgkUWTtqtoqqhbJA2Pjpfm+8MFy1N2IcMAFJ8Fgixfxy
QT1AFq47H+G5JKa9Fv5PG7HxWi0u1S1xzcKvVFr3TDlDihfXtpEKMQ2wDIcxNYAIycJJShKAj2E6
G3bOpTQfciGSbYg0iAPQ+h4/flhFPLDChjMw+TEiXTZwpA28zi6JxIMSWWun/6qIxyTffFk7KdfL
gi/7w7JeHrZVpYFi8BAx74maUomcAc44gsFo5S1lUokTB2QaqJpeq/WL3ultv+DM4wMKXx9u7z69
PE51Tvs0IjolEXHrmLOki3hwOXdY6ZRkxzIgMKclQJjzcY3GPKcKnVY3VuvqG1l4u/4YlNk8/XaM
rZcoPwsuEOJYR7lk2C3Egezl9CsdRQSmoRdFkLMx6rnVOka920lzzhM9QpV96g/RGgBCYe3lt1Jg
wpJl6JBIoNJ5FGCM4EQAFgQQYoAaKxou540+SnNC8U/Xr+o12tbCl8H5Xx5fnp7T9/7+pbw392me
tSXLNhLOYIaFcJiormGdDpASJtsRDziXJ/am4HBrohO8snFntbTbRqXzQDfbRUuQdzdTMjvmXeDh
ADiEu0vljN70jgZg/pzS3LmQAdCKzCOYfu7iZdJybs4mvE+Xr6p1NMwjfKkXHWxufv74svfK2nFt
dgzqRAII3ZMAmghdNID9OksCBWaiPRNGJfNKdtU08qlciv3lhdSmJfWyOPPb4938rV9/wH8fqAZT
yKxSIgSMPQW1hW77FFiH/WE7qZikJghlrbjEy/lQizK/q1xaLG+dAzkwBp/s1eWNemRfaV/MhomG
SZ5KG6Q85jDZIEMngbh7q0Uyr3Tr+DPkcZLlzJqXSgSWuGmte9Lc/+x3d/3DdliEj4SiwrBgu+Ci
B8gOXN8TIIvSajD0LgpPyIXCR7UElfCar+Mtg97nxBQj/D93D1McjsuS3KlNDIFLA2YyoLOZpc5z
KzsCoN4LHbwU+oRJP45WiyFYS4wJfI9P4dpPz5BaTEEvAJx4xmUOQHgSAHClAWk6FTogEcxaIHk6
LsxgPdhCjoZiKfEB0278/IPSfMx8wk88mllEsG26i0IwbC/lOisxFIvUmTritHgly+ww9qkkzP3l
Sm5z23iNdqsWquV9D6Dq86xcWrNrhj7r8RdEwwHOFzG2tJ4CQKQF1jC5LhFBXabCZiYuZ7ZreU65
a+b3VKvuyRozDT0Vs6Knb3f32E79+biD8egBGaIKNAr18KK4Kj3LQJEmWJyj0QUq6KmCp3rAWpxG
guLQb5Ytinb9c78bnksS7dO2KL6xVJLL0VcRbHYgD3YXQejEsBBfgbFKIlMjKPD6TN/U1wAmioeJ
Tmu11W31oja8sahVwL5qa1onxdoUk9GgIwBoAy112gDBwoLZ4gO0whFrzhGs+dC1aLuG0tjQqSBi
+/Lt6XqK2nM9Fm9ylZzgknSCe8BqTmKJMfARSpSRPkeno1hUZMzGqQTY9C0Belu0Bdx8X7buMVo9
FYI7QRwJoKk4o8XFKwCJJEwqiei7gS1oXPORzEesRNk2fEfDdqUANv32y8u3Kh3gWo6hnuvxbVEr
YXZlOqGxek0nBQQUcJ/1IVPYfsrYN/Ut8YuZ5jtuvFbJv7NrJD6AFV1ss4laWtD/+3oflSNWzsML
9VgA5sEQeUBzmKaTbCRRj2Du5P5qsMxhaKSp3OpBa7vKNf7xsf/2+W5b/N+YilMcwtZe8/F5BhN8
UEp0BNP3ecAKFQ5n23p405oDASav86DDHKdj3oc75qu4NQ2FhOH9BVd+N/YUqXvsZS6wHk13Nhfn
PSAT4yWYNa+Y5UTHbN7UXGU/+KnM+3KxEnrbEnorJoUT7/pPD1+fnu+2Pw1PT9gTts58pYSMKt6T
rNEtB5yeCwZ2LHDbCVtqT0j0y9y/8+PWIqptQ8RVa5JDoOC26g44BgwoG+tkSI7BZMlB/WCitOWm
cwbovPScB068c6+0KTn4+s93CXSN+2ZLgrO3WekP+HKnDqb092/T0QN7gEePjelYsK1hV2QhQZfm
CE9ZUNkpgLOBRBkUazc/mIarhdjplhDL7p4AgPLHw6Mc+6WYxFQgFsA0HHnYrUDALXWsUyI5i40K
KT/vNitjnmwrkD8u5LxtyHk7JTP/ccxElfiSBUskYAOd4DD4EByoe/SFRCZSlDEKyxab8Y9GGipO
QVvzysng4d8EmZybrJRhBZqU9FimC3giOmzzoUE3Mk6lDbC7SDs3ajbUQgS1FoHzoVGEgbii+IZK
TsTYLSNpo7lwgCc51mDw4AFoUmykQLwPzrNk1avaEAc+rQnxaiUyF423xdUyoaPQqdB/e345UtF9
y7dEvAKriAWUFJtfeVCFHjCjNYRHoGo+X4RtzyU4k6+yv6Neo2ocX66nHiYfHj4t6CeV1MPRAJ6U
NPYtAbRvCGjJHCNNLBgbI78Q/Zwmr0U2di2y2Cy9Ibvh6cvz129Psx6EppRllE90VDHpU2CkywY9
5pkxIFwYebXEUScBCkjyti5gZaID0cAbTjUDW914Va+hXy9M6alo6277gqh/1nODwuGQBckQqwGA
dlTgO8EjazmgBs2MUwJQWAyLdmCLsSo51LrHHnw5TNqif5l1jjFj3Q7o8QAA2SDhAGBqDGbaeuQf
WsikQXU4U0twHKWaXPPNenKtlwWx/4gYxZQFdhS3Y6CZEQ1wKaaMcaOQO8+xegjzrUkEfa7Uxd0+
/4gnakxjvaZbsV6TRf/dyk2+bghs5D6Grpn1UYE2oRl7viWN7SGE6ZjKjGLZ/Njk+7wKfM3a1/dU
q+hFQ4PDlyd7zF6PcSJ8UbiQ/b946XKYTSQhaECJxqEWkQbwIlAGEpgUjBqm/V8SVh+v1evcNbZ/
j38bYLduGDx2LJrjX8480ESVActg0psjHtkZ61jyWubMFZyLt+WtHsY/1wt40bcIBd2tpd+QqY55
z13uHm6nMyyw5cDon4uCOioVAAwDHM4I2zkWOGBhMFYJOEw8z7iPo17V08uWTMNCpurP0v1AGb1m
Y00zUB7hRU5dlg7rcTB7VsIpF8rBA5Wacna2n+h84FqwTeNVD0bfbitl872YrEPjsTFHCSAYBfuN
NcfCjukHBnRul5wLnIINCZZcbAOP2VbtDVyuXdULMK1V7VZ9ep++uMfN3fMhyjm2vIafxdFAlZRA
L7QmWAkMfM4zTN2kGTQtEA1vzuPixeinmu5WNy1WMTRWsbtdGIKxCRCqrdKJZ+y5Rfc9t0qeSKI8
GQFm3gvY0z4wIHQZ/+YpBUKqpXhLP8cy9mmNWS5X0hfAvZQevlyp/O3XHjW9KZUVCHSxC62NGvPD
MbAMjN8R+C1aoAKRUktNekVcGPKUqHCpFpM1IMctqnRVB/uqVs5jCX7p5SySTcx47EwPNkkBmTNA
3rqkHA0SCEvI6eJW9yjNqdBfw+lrKVn3WChfLl9JwdzYMPiYyJxg08OCSBc8NmG0EjA89kQJ2bGk
acRmUn8ayI/XalH7oSHqZlnh9fFz/zgmXXM2Zq7iJ1pXazi3wnUMy0M5E0CvMaycnaQ5euVidG/q
wzpOcMIxMF6sBNfrnHH8si/xVUwczf+N/9mwW+auAtUMgmt4pBjK4gSbtntDOkXg2CZskc0v9DcD
FiIsxN+0xD8m3t4s61t1kjRm2PtakJLijK2uAX7TFCQlTjgi5YXY0DR5JfKGr5U93TI976b6oX8E
GnQMgY3xL8Olw1Bppxx26XYAlm3wubSKFSSmIIz6f+ymOhf6ql5cc8V9aTEz885WqTUHxmRhu5VI
jrUmwEHAns8Ck7fgtyx1JyN1qLgol2frARuj10LqNUmlOzV5en7/7Z4dQwysmFwa4Vxi8odN2AMk
gS4FZt0RjQlQDETXeVF1PBvkqp6INmbfTMWr27/9bdbLptgdkZWBjSw7YFGo4pzBQm0MMgeZY0r7
vmh1v6mWs4kOfWPpt3zJz38anvvd3tOzz/+G9zoGE4nAHsYJqA7FYKJlubMaHgWIkTwhxrCkLhdM
PEhyon/T/upVvZy13WSELr1ZSLFf7hBZlT9/wMeDRw06wbEODMj5/k9saMOwQR6nMjvQIvqtlW2/
3pxGJb/Os7hBvGG9KRhlyyjjh+ERe+9j2H+eoS+KNw6NYfRBc2FTZ0TpMFTCT7BZ4TSZlAGw6PSm
QE9johPZE//b29H1NooD3/kVflmpkS4RGJtApTzwGWUTmlNKe3dPiAbaRRtCL6Hb7b+/GUMSIJB0
dafjIVHsyczYeDz+mI9zQKnZBt7RMK2t2J/yDBpShcs2SjM+cXHLNTrUHAzhNMZWYTolz3RlFyZv
1xt/yo3HAirdN1Z51uT1PLeCQakMml254iQ2gqkT8y+VyZdUsV/jTHN1wzHQBFXYWimwSrf0IYVB
pXHZodST/78pHCoabaXncX+gUKPPMW3Ebz3dD7BxmfrIGqMJmYtBZHEyUj17aI718dDRmCpbmirD
pH0xdOv5tERpx16PqhETOaPEiVi+/XGakpnYO1iMWYrCYZOHQfh0YAbGhDM0XVujKjUZ19T2uVoN
i9Qk1TFK1ThuTRmrJMuL5DFN3muuFOWZsriEFtdrKsidg8Y/DN84BmyGQWwaFueu9bmV3TmZPrXc
hms0infs7KHQOCia1yirabkyQL1qu+jM4wgLOhnWSpbiaUOYEAGXwRXVbsUHruFo0e6Ygw01bl1S
/kiFM6oXrZPSWAxdjYUQ4bc4uqSWh265soV36twFZYOx1g0FhqFjwofNP9OlBwo9AlTVSk1uz9f5
VISAYe2DweoIwqji/KMTmubazlD2FFh34tWM4XoeBmikbKx5juPx/8pF/Ei+X9WcHULQdccGmK6f
j9be+783aZGop/QsQu/LVDMsz0ATC3REANVi2DqsSRjXuWWAvNitU+QGmgYDScdpOhQ+HRjYRNuX
ND4tiscijyJMqBqGhRijiJkWqDbQxkNQBtQTcS/bJmF1LJLk/qyyuvh5nD4fnNvv37IMeh8zkNrR
ZrMnWRQn5OmD5MW3ZEdedzmI1R4EvYh2L4lwoy2+gdatKsrMpUW0/x6CGgxf0/iWKGVZmZp3DZ9F
ckvkeuE+KURA0qq8SfgaevnfoYcftVZBDwh6GDUh3SZd9FSFcfZrNKVHn2DChXr/rgBqud18EAyz
iTX5Mznu/W5JkBfRZkJlkCGf7JJ9ijmjJ4Yyov4NY18GZP8O8pbEYf5WhMDa2/aQpjueKIqOYFz7
MpD+2KUFxkEAHEj/iBkQTck7VBbJdoKxKuc3MmA9UlK5xsqiGqGJXBY1iAEiNEcAWkRaudPZ8o4E
f/3ukp7ncbYKHsyFNDk9faBVtWRPyV7sgkkq0uN2QytMnkvHPO2g2mBwlnbj7T8wfST70td78nUW
kJcycDAgX+dx0oFXn/eA3kBngZ5J4kHFwEieHv50qCLw5qM4xugBBDhDI+1a5w2kuTD7IiaWkOV2
nfR0BZtLvrlYLG1y+THoSPUPoDdRnKXbQS+wSufSfWDaczJ9MFdOP1auYYfdF9H6O7nGgE6B10c/
FCyYgXsBVmXQt1WmWF90Sj+nI8WXwtAxA/MKA1QZcQSd+ebUvQLLKTAQhovZ3dx14AVfaJaG/RqG
gftncBmngk43CPpwN7OXzmUWOIPOyoR8EQxIeaFZDLFWYpDBQmf3cQEvYP0F+QqWgbm49mLRdm5a
gv5GYFi97RuDvBzcJXGDjTQfZgPpH1BLAwQUAAIACAAXkXtG2mQJN5QrAADmiwAAPwAcAGNvbXBv
c2l0aW5nL2FuaW1hdGlvbi9jb21wdXRlZC1zdHlsZS1kdXJpbmctZGVsYXktY3Jhc2gtbG9nLnR4
dFVUCQADHv8VVQv/FVV1eAsAAQT1AQAABBQAAADkW1lz20iSfh7+CjzMgzzuouo+GLMdUbh6NW3L
HlF2d2xHhwIEQQlrXg2CtjW/frMAHgAI0vJMv60eTBJVyPoyK48vC/D7YpVmm83I2//9kk1+zsv7
bFPebZfLrPB+EwwT/vvgfVI+HafB3/XH1Xy7yDbXH9+9+fA2uv7bdffewc00W5b5LM+KUb/0wces
2OSr5VEwHgSraebdP6+z/cVftUSSe1e3SZl/zl4BkgLEeu8P0N8/l0+rJSClRsnfB3fZZr1abvLJ
fCdi8+T9RjHo8GEDCt2Ex9UEJoNBmJTZ9X2+OCxIMREIM0SVR/QI6xEhQ8Wph7DCePBu7LVRv01S
Dy7+6hE8NEPhXREWM/4KcKxXRdmYTMjALlfL58Vqu/E+fKiAaMmNtYyhiGKKRBDGSIVBgGzoS58o
KYyIBoNBUCSbp2zq3T8VWTJ1sjwvzDfrpEyfvD+22RbAp6vFMFmv59mwNvNwXK6K5DF7myzh32Iw
iL6m2boELHvzRr8GD74NH2wQROOxdzW++cn/MH7VmOg2A0z8c3R3+/D+7t19FNzfvLt9iO3Nmw93
kZeUHv6K6z+CZ2mSsAQs+vGtd5c9wv0b7zZLCphzGBwNnMkeHt7c3P4chTf3TY/yjpIMcV9QQzS4
Icbebx5jHP/8u1cgdF18+eqN3/5X8O6XPm/8R/I5GadFvi6DVZENZ0WyyL6sik/Xuw3ZXNvOnAFC
PwK0++jXNqw2tBpJA9qMTWto1GheQfv6DWi7/emFVI/trBTae3sBSr1yE4pSNRSPMuqgfDlY6f3d
x38TyqB2Og+PRhd8bpHkS1RWMwcYUM7zyeZ5U2aLh/U8KWerYjGcPsPFWoe/1G6jZrOZlthkkySD
GLLlapGnwWqxhhC3y+n4S7Jm1E+KAlLIXz/auxt7e//Xxdp77dEBaS2SbOZN+SeLaCUynVAP5j2s
1tkSRAg9oDDrqEIQ32alM8IZGZkSglEB+xLEH+7eBEn6lI1GzV9Xje8geLkp//aDN18tH/f/usnj
ssiXj4fhk0uvABuhTAzY96LjJs28I4IANqPMnLEUHvCWsHi1XU6TKsR7hQlFJOXMQ7/djg8K5cu8
/CUvn95mi1XxHCTrJM3L59E033xq/ahKxe9OC8UHoq+otP7+0kwhdMaUmnq/3N+NRu6GYLUsi9V8
DiVktHekG8CRJ/P8X5kbzb6WV85kgnlX7TsgMQ8XixFh9NVAfieMLCNQhnph5Iflr/Jl+YOXPkGK
q7eu2juqhOxCGabr9Yhp/WqgvhfIVM5EP5D2734wjIleLIQCFv29WCaJNJ6LdCcZg2T33dlY4FcD
UwckROH0JBRPPUxNJpmYTb1NmUCRBF855Bni7ardxXzTX+Nwy8vrORc0SkXCJs668Wj037DmfQKk
4e/Vzzokf/BOf9SspnyOvpZFksL6rUlOzA8NiUWSl5umyB+/NYq38x9Ho2mWzOerFAK4AnXVmANJ
Ywv85nEJhAA23W0zh72oB28W6/nwaSQk7Aj5TmskichmO48Yjd7A6vOdfYEjJZNkkwHg9JPzve16
6qDVP/ejcbFa9N0V5/NsUwepAqAHSwNOJtirThp+CU5gEi/DmS8cCXtX5I/58khHazBUK+/qwt1V
oFAJANuZuM0aegBqqWdCQWZ/+J9bBhtnfoG0/U/nwXq6c+jodlyyhweiZ9tl6vLwTfz5cxRFDxPY
9E8P+fLz6lOVuiGr7ack8xHhTLw6RAq9GCEuFneDaNGIj2PRBB2XWadutkpKkhopqfcp+wyWAw4O
YYr3hXcvuyfWmzImXElOifewn/+weCya+plq+79PIGGyI7BmHs7D6ME8bPT9+upMJrBxrs7+Uc0v
snJbLFua73lNvWZLXAsoTpMZ1t5+4sOXPw4oGcN7tV8ubTqbmDpfNkURdlCY/39TmHjprjH6ArzE
dYq7Dskbl476XEmOJnn5ynUdRfJ1dOxWMNcp14wDLygmzQFCgCjiqYDaWKStO3Z/CQxM+wYmbpFp
PuppiWBgk7dugRyREGBrsPr6ZPXUYHdHzwAQOTBTofcjCkrYZGIw0EW384XpweVkEdwZmKVYVwPk
5A6KpdOE0PYiKZ5OGXcDrIXLqNmUkEoWP7VjPSB6dBdukXzdMVddkL1iNu/gIpgSSMNpQfsMDLIG
b1aPOeRyL3j/oe7M6SAqilVRNbG7Xv1wpxpAkl97t9vFZH86QTg02n6+TIpn72YB6XJTN6vVbRX9
0c6YyGtdnKXQdXmvT2jUFX7l/d3YMGDUSBQKoRDjPEZa6AgFMVYRiyIuZfTjS05Smksyqk5xwMXZ
DBI0xBLc7OqSu3v8lO/brgoPCznHjDEUR4YjpmKLDLYCCWxCbGAvIz/uw3NOahsXwz24GHSls9Py
TiE2MXkNs+FjSIZUvAZ8lsaKMRUin8YGsdgwpI2MkeCM+TJQobL6vL3opTaWdrD27KXO2GyWXqj0
fZADHmMS+QpZHQJkJQjyZcgQJYpRG0YSmPaPf87xRBPr7jykrcCMpc4JTrlUH3AjiK+s23xqGWKY
gtVNTJHlEfcpjyz1/R///cOLGhPBkqVdoAQrZTqWru98kz0m6XMvXCUV0eAMiItAgJ0VhBIYGPk8
kAYHWMWX4NaCL4GuZ7SgG0ZOoBOd9jj0We+wWvlMYumwQgKgSiKfWIwsw8wIsH7gh2dQn3eL3eCg
xuSKpTQzSo9YDxeF0AQaTteSeVdAtYbcWdKGnPnGRyKILGKBipDRTCKLwZAmNoEVEjBtN4WL+2t3
c2MpLQTX3aU0tBvJDPrU5nlFlS2+gvMxqYbU3VB/AQi+xiHWMkSGWQiagAmkJQYcAYvDEFMVM7eZ
44opXL/JJwUk5et4b4zN9V54v4H2o4M2wkkPbAawTRP2T+4glA/dRDp0WDmPDOF+hHzAjFiEBTIc
ojywJhLM2NgKehErSOyHCQNthAk9RWgS6gpM/9nNlRwamE+wkEMiASzljBuKNQKng6COBZhYBAHy
mTKSyNiPYn0R7FF4H+agMd6CnszYKfRkJqpQAS8KPr4dv59voQkbb9euI9tXJTME5M4jFKQczjmS
sY0QIz5YWROOiFBUEEWpCeRF4O/W2fKnN/2GrqfnEGDnobTUyabZqTpZRjuRH6wWi9XyfQIce+Nd
QcwPJdxj3EZIH3bCxiGU1hh2QwUKGYgrRCQNCNR+JXx22cOTYtK/CbYdCEcI54LhOKOtZMb6lGQd
JW2aZvOsqOg0qdytcQUugLJAH3yfKotsJCm4HgQ2BLdG2McyhEIYxOLy5h0l9utwHO9owPs0yDoB
Ux0n1U9jsmK36aALrpSBEHbuR4XFJgogCVICeRq+aQkbh4UPXYKKcBRGpxq8L/LPgKm5HT1LndmW
npkt5WbTnnw1y1RHOef3YV5k7iDq+aAVkI+hwVVkxZBogaFoFCv4h1EKJT6EJCYtlRhDITVB/M3I
OqzQr0xrSluL7LRYABzScbIwr084iudxVnzO06yOJ5eEsXZ11GVaLDTyrSPSIoqQtZDmQnCxSDNB
qAq/WTD2or8ZVKdo+m85nTdoq0l7dDeTkywyXxXj52Xq6o6pKk/1WWVFIX0DekIjQep0roEVI2Vd
aGmmVXi59lhYAZoih/LF2h/wnMsnu+G2ribt0XVXu84+C7qifO+mQAJCFlrnoT5QAihkUAAgDENt
fGOJVLhKmHtWUsu7Pie5jS1hfdgg0U0rbM57a5qdLx8/lPn+wOQKig8gIybGkZIGYaMBGYYUB1Xf
h85EycjgyChhGsjOC2yDmuFTUISkJ85x9NubJaSKJXS4V0TzOszdp+MoYWQFB8fQJJTAUUIfwoMF
iACb4wYoKJT/F6WvntXOU6zuzEFblWmPfpTPZpPK6Olq/TzLQcO9rTFkLFq5QhBTE8axhOzrDC4M
Bq/nkJFpRBmRICXSva7QltmGI3gPHN0tdmE22T6OnxeTVVXRsazYlSvoEfHDCEgrtEsMWLOMOTSp
IfTPoQgUoTG2gXqJiZsrnMkqjRltHbTo08HsY+wpyxfTZI6SzZLszcro0aw2oiSOoZtWErihMUAL
FfRSETT9cRTFlHLa9uNTgW08hvTgyUynQtWq7LKQS+vcGZVChhtS145oG2kfqq4fE9fYMWjsdCCR
Yn6sOAZssf8Sw7aW6bdsa0pLFT2dnaoCFy9Eo3clKv5gqpZKQpSJCMVEuRQRxtDZQC+tfYFZEIFx
Q/EflqfmjBZ0g5NT6EapDvRxlhTpU3UYADtQVZnq01UZ4+tQEOhKKfSCTPoY0EcGEUW4DA3kOC7+
vOJ6AHJmj/bDbSVVD42oKmndX8SrZeleOdmUQFH2GYW67G0VFEvoWCEhQvVkQaBhV6RG0hgtglCA
hsGfXkLt/ZmW7y7brLZFWncip6DbOqc9Pmmmaq/zrvBNl5vN/hT9SlC6D3cWQxRZDGwJc1cTtHZn
jzEKTRDFAWeWY3GpoDbktmFN+7ZiqvdZ6FP2vHgsDgXesTdmrQ41mD+IMbTQfsiQBb6NIqojYhm1
0Cz0QmnKaoGYkJ7UM1WiKulHp99k6bbIS+DFqvJ4IbgiQ8KHtOo5WSBJYAiKjKuarmBCUoyRlAL8
IiRASfhF1xjvxJ/z5Hp00MYoe4CbaYcnLetXPY40iQwZINY+iUhMQjAfNPXMh1bZXULWDzSHIm+Z
5Jf2tCW2jctkPbiydO9sKYR4Wjyvy9UhvCSp+wtmFAuoRoT7YEWMJYJm0EcYh6GKsQFs6ky1bots
48l66MN0pju15TYr7bZ8Asev97fKZ4EmJJKOpkUBFDpfcaSxhu5UiVBSHjMqX1RRdsL7d3c32AKd
8Z5UnInuAc5mnWXp0xC0Xz26d0ma5cr1ALSqkNWnO6fVvu+ziCNJGdSWKCbIYB9qC48sDhmkbkn+
jJOEcYXqrg9Uy6u709oWEKdNq8JYz2jt3qvJ/6ZDe8hWonYhC44SGs0RVeDMDAO3Ak8mSPoUMwK7
qKrjwAYzacoZtNbqOYhSBGed+FpUL1ccwosNSd2FQB2Hjh+MzTQUQMYoxJZSFAEhZSRiMWH6YtJs
yh20IZwmc0Ul8E/WdI1kO81Xw3K1mk9WX4fW/bqvf7iyTeqqTZyTS+NTBVkdCavBZnGgkK8h2wdE
+hIYnqRxdLmuNYSfOXVpzGgpYyanJUCZlB6ThTtyClrpAtIed1RJuwcmASR/poGAQqsCLJQIYKGS
hiElWkUkPJMuukLbmFLWh4l1KkJt4C247qY274dlTYlatnV8lDCBhLCQ0gTQZcuqxkoaalUY+Sr+
tm2d5AuGdcMdDU5bFDVhhxbaf2PHx27J8KEAqGFkmHUdkogtsGdqKYJmOUAiVKGCGIK+Nf6Pjt4a
Uz9nKQjon9bC11JrMulJCZPJISIb74sdHlFw94gIygeKDYYw9CF5a8kipKiNgM5EYUT6DwOOwjoY
TqNPKyY6iRmoXv20rG6uqRQ1UTBhQBiEG+RcqL1MQx428Nt5L9QZIpQfRt/ikGcIb7AbG7SRmR64
gnTg/pQt3cZVbwbt3mACE9bUXuKKMEiuuPGha8WUAF4L7Nf43EBzFUKG8LEBa76kFPYsdeaZxunE
tmpi2qOa7Obn4+u8V5SoIam8QgoR+4wzaMGBpbGIxpA6eIh8aGCFtVFseHgpOR+EthHJPt9QrINo
UyaQMvZPLarTVWfgQGgdYU2BVnMfUgV0USY2FikbagZgMa1c4yymhtgWqiQ5jRqdTPkeVfr6dTLJ
93i4qaoXJRZKALBrqRjsNoe06rsHpYpDOxcbIsMYt+toU0x7/anoWX92OGv4x/vop2My4m57fHdK
ziOCYhVDZsdMu6cADEH3KMOQQGMfXH6oV710cfPuBZ3TcfU26Nkp/3LvEXXi5u12Xublaps+nZzQ
O6othgT4gDt63n11HYymEC6GokAycD3XvBijgIeHFJyPxpox/ZI4urB0U9mTaS01p31qZph31JxA
+7brWOvXYxfuv83sEkT9bJOGVEE60MDYXTEOoUf0sQDvlQYIs7ZUxuwbHVBH/rlWqDOtqY9JktMI
hGI46XCjf26TovxX/aidDLV7nsxoFYR+KLWNgfCHTEK54EEI1B8qoc8tZ1RII2N7UY2j6H78x/FB
G2PaA1wdzji/bubl8HAUR6p8YZThhkkkGbSbDKgQQFUEwoUAq4fcTALSDtGmkNbqVYR2V5/K7gOi
IP7mIyLlB7A8jxDxOXZcEnqlIATWy0QQQc8kwm/Y7wWPiJoNSfyC+Z1Jbc2l7tO8+2DlKZuvnauw
IXP91P8Rd2W9cRvZ+l2/ZIABhdqXx1oTYRzEM04G9+2C3c22BduSR4tvJr/+nlPsplhkdUvINDJA
oqVJV50iq875vrMJvbguaQUcWXWRaIcJRmWlosuYiKG5SImrS5CpH2Hq9k14pVrMsM7cwA93RzD9
+bcZPhKMXVMqiznkQWnjtQR9ixkx0fvORB87YYThDj0YMrS9Kr+1QJIdOG0Igvhz3M0Pw9f778Pc
Z89xR3Mp4DlS3VmGRCQCLnIMGJx2HmibsJqk3BRjOd5CGN4QRpD9nhRhNr/Dg7gm04NBagHnxzjM
JfFA00ANgEozBLA7KG6jkfwzEeqzVY1Szy+GxvwHVFA7hP95uxvujyqJAlpBr7ZQYHS5TR1TmDUi
MdPOStPBCzSceW49Za/6VMvIp93B5XIt9dCQei/7xcGYRry++bkAXrAGxeJZAliLwM/4YokEVu4d
wC2F3McS3plAYJMJy6jwmVpz3i1cBm+LXy7NRe/Zdo15e36IF80gegJ4DrhcYqIVfkf17x3jJNuO
CgE6NTiPpN11RAF2pJbBpxcMDrt0gtSlq1p001iPWGL4Xze3/3ouHkpatBQzuJODzhROj+hCMmAb
eAG5gnbAS0m00tFs3+TBOo7elvh4tZJbbtc2DT6cPO1l4/0UvtyisT/6cUwxI8kHrgJY4IB5ehjQ
RY8z+qwwQTnpJFW+UA7PSoh6Dbu1ZezBZhzB6/efbh8n549gYB/wyBJQGARIYUcNJlBZDywPVBuA
oeAN8CctxJ9FpWcCXtVroI2FHTIS4eYf3v26TKxyiQAEAiZQ+BKo5wzqWcUuOSG1IgqYorzMS5km
r0TWdO3V6LWazNsvNzkviET2wKoIaBqdOWYpg/BOADrRnsN/iXjO0oWIxMvsldCmkSvYGzrFOH7r
H15wHSO4e6TUzDmNwQQTAVkAD7LA/gBZC2cEUCNN0wLYvQxST04bmtCscB1WsW6/oO7m1yUSOf6A
7ooM21aAKIGj/1syOIfGwisPgpoYaJaevfrKw7vTqT7hXS1wA471Ri9zfA5u78d/3z19Gh5vH2un
ty4GqHwvfItnjznzySCoQM+3Yd50VGabjZFek8snvoyu7Q9r+db+7+mm+kFo1noQfBGxe+zvduh0
Pe4fDepzdISTSAC7JNcpj/AU3TU+KdJ5KQzALJ+Azp/1JsxHXojWOIZm2JwJcF///OEl1q0AFYiS
3EwK+JRwIjPxshOOobccYKiLSXTSCx1V0IlJejmb+yLJiU35oRUaB+a/3pjFHbBISqoqkf4i+cHf
5JAaS6ng8aP+pJigTMAKZ6VTsImQxMLZlKT5uLVgDQO1oegT3R+8K2zlXJE5ayU7mQIcCANP3mM6
mE8AcYG9uEjNxZwrrCEybbhQNwxJeqWVbu8+z8/1gWsygqF44yTxxnLMPwS9ZJgCfIDKXYqcXCYG
lNYlyNfNXIYKdd59vqrF3zbWJOnxNXztt5+mAIYRiDVpZJZifkcgHGPGBtgOz0C6BLwe7uElWd/c
E7Oxahkka8jQy2X6xrb/giWz2MKk5Fvt+23xgxRvb0ma0kIyazrNNT5coO+ee9pppqN0UtkkzH/k
A5krypYwJ9Rl69bqAfBG1vsGQFlLM9WZRPzAWqhADodvxwBKIwF4nwaYgCfWdDYCOQ5AWIL1mEbO
3pwH93o+0eq2amFC88bCzIR8FvWuwKbtlKolknAUcUTgHr4gk9XEAgxiGggAIIzUtgP1mLU4DY/u
Rgx0SbDwa/6ATTgehsfH8qClKoKVABm6DYlSAClh10ePaamoE02M6PTOADGCJVbFtzzm9VwnqNXq
vnplQ2MHyWGZK7DSgLiD+HiARiXLfQiZOazPoxmjvxiHBhwVM4EnH4ygjv1xJXu4WImu5BrQ44fL
HPw1mgHMhP4GUfJrEs+EYu4shkO4NlgbJbGcJghAS/B0OL0MWmrcuFhP41Uo1Tew6+MxQXZKCSzZ
tqC0CNdRd5RQoI40KTjCVHfEJGWty1yTi6Q7VDm6p6HudEu9TLNrLNMuK8N+CWGuojlzRMtoO6Hh
7HB0+1rpAxhyT6IExAtn5y3HBoZtCwwXajFta3f1kwaCw3T/5fu1nZAPHgJKA2x1sM2ZBnT7wBcv
kulUInC4o8jOyprI1MNUEoB9X0uAyc8TYV3yVeGV9ADyO+B+WJ0WkUfB9NEDa3WOOGnjpfhqS2BF
WwIPi7rKw0D93bFMoWRCgXrQQqDXA7EBCxpICzUYKWJBgTGI7k1FJNPgZxfR10rQiobgVk9Y94d3
Rf8sH7dMhHluQmczymx9AksjFMAGgPfReJ8DudTjnglQid7zxibphYBv1TPv7z66u/7Lv4F24WPX
hyRWXWySAcbNqVcdpaYkl7DOmgym36Lht0SzKC7OGOcinXgEszvqRYvmopcs/5jB+OkW39mYw0gI
Yh3MXyVYAUtSAiOsgSYC6ENwHblVwM9eYwRvzQs7SPDjzfk0xx9vqvUNtrG+YbvEtTfbuUlj6NZl
8pqiJRBaUooZydlHdF/BF4PxdWIiwCOqVMpvOk7zKU5Y5u0Jczbs14dqy3Zsvx/KoXrn3rvwt1VS
jk7aYU51RxUGIiwVnXcASJXiXlmjJPz/J3kS5xLOl7aVZG2pt5Iu+dzfhofN8HD/WND2pOeIcTn5
jlrjMAs1dz44CXY6hyRlAg50HiYdB21LfbxaiztvejB9KJah/fDp+e4zWOvDpFM6jJRjlSmQuBi0
6yLF0meaQEkoHeDXDNZNMUNa4b8GP6inOcEO6pvq5ewaG0vupqSTfwEZ6+8Ad0wKW5dArQMT44NH
9gkIwjH0AjgBh0NiPmBkgbcTqZfjLYQRDWGGyXSEf+QPz7dPL2G/4qTNLmkMawUpEuxxgyVHFmCb
oUqEaLWxsYYJ9TCVBIqsHTVbRdVCWSBs/PjlYLwwXHUwYhwwAUnwWCLF/HJBPUAWrjsf4bkkpr0W
/g8bsfFaLS7VLXHNwq9UWjlNOUOKF9e2kQoxDbAMhzE1gAjJwklKEoCPYTobds6lNB9yIZJtiDSI
I9D6Hj+8X0U8sMKGMzD5MSJdNnCkDbzOLonEgxJZa6f/rIjHJN98WTsp18uCD/vjsp7vtlWlgWLw
EDHviZpSiZwBzjiCwWjlLWVSiRMHZBqoml6r9Yve6W2/4MzjAwr3d/vbj88PU53TIY2ITklE3Drm
LOkiHlzOHVY6JdmxDAjMaQkQ5nxcozHPqUKn1Y3VuvpGFt6ufwnKbB6/vsTWS5SfBRcIcayjXDLs
FuJA9nL6lY4iAtPQiyLI2Rj13Godo97tpDnniR6hyiH1h2gNAKGw9vJTKTBhyTJ0SCRQ6TwKMEZw
IgALAggxQI0VDZfzRr9Ic0LxT9ev6jXa1sKXwflfHp4fn9L3/stzeW/u4zxrS5ZtJJzBDAvhMFFd
wzodICVMtiMecC5P7E3B4dZEJ3hl485qaftGpfNAN9tFS5Afb6Zkdsy7wMMBcAh3l8oZvekdDcD8
OaW5cyEDoBWZRzD93MXLpOXcnE14ny5fVetomEf4UC862Nz8/OH54JW149rsGNSJBBC6JwE0Ebpo
APt1lgQKzER7JoxK5pXsqmnkU7kUh8sLqU1L6mVx5reH2/lbv36Pvx+pBlPIrFIiBIw9BbWFbvsU
WIf9YTupmKQmCGWtuMTLeV+LMr+rXFosb50DOTBsgsVeXd6oRw6V9sVsmGiY5Km0QcpjDpMNMnQS
iLu3WiTzSreOP0IeJ1nOrHmpRGCJm9a6J839j353299th0X4SCgqDAu2Cy56gOzA9T0BsiitBkPv
ovCEXCh8VEtQCa/5Ot4y6ENOTDHC/3d7N8XhuCzJndrEELg0YCYDOptZ6jy3siMA6r3QwUuhT5j0
l9FqMQRriTGB7/EpXPvpGVKLKegFgBPPuMwBCE8CAK40IE2nQgckglkLJE/HhRmsB1vI0VAsJT5g
2o2f/6I0HzOf8DsezSwi2DbdRSEYtpdynZUYikXqTB1xWrySZXYc+1QS5uFyJbfZN16j3aqFannX
A6j6NCuX1uyaoc96/AHRcIDzRYwtracAEGmBNUyuS0RQl6mwmYnLme1anlPumvk91ap7ssZMQ0/F
rOjp2y2A4f99aW7E8R0hGaIKNAr18KK4Kj3LQJEmWJyj0QUq6KmCp3rAWpxGguLQb5Ytinb9U78b
nkoS7eO2KL6xVJLL0VcRbHYgD3YXQejEsBBfgbFKIlMjKPD6TN/U1wAmiseJTmu11W31oja8sahV
wL5qa1onxdoUk9GgIwBoAy112gDBwoLZ4gO0whFrzhGs+dC1aLuG0tjQqSBi+/zt8XqK2nM9Fm9y
lZzgknSCe8BqTmKJMfARSpSRPkeno1hUZMzGqQTY9C0Belu0Bdz8pWzdl2j1VAjuBHEkgKbijBYX
rwAkkjCpJKLvBragcc1HMh+xEmXb8B0N25UC2PTbz8/fqnSAazmGeq7Ht0WthNmV6YTG6jWdFBBQ
wH3Wh0xh+ylj39S3xC9mmu+48Vol/86ukfgAVnSxzSZqaUH/H+p9VI5YOQ8v1GMBmAdD5AHNYZpO
spFEPYK5k/urwTKHoZGmsteD1naVa/zDQ//t0+22+L8xFac4hK295uPzDCb4oJToCKbv84AVKhzO
tvXwpjUHAkxe50HHOU7HvI93zFexNw2FhOH9BVf+cewpUvfYy1xgPZrubC7Oe0Amxkswa14xy4mO
2bypucph8FOZ9+ViJfS2JfRWTAon3vYf7+4fn263Pw2Pj9gTts58pYSMKt6TrNEtB5yeCwZ2LHDb
CVtqT0j0y9y/8+PWIqptQ8RVa5JjoGBfdQccAwaUjXUyJMdgsuSgfjBR2nLTOQN0XnrOAyfeuVfa
lBx9/ee7BLrGfbMlwdnbrPQHfLhTR1P627fp6IE9wKPHxnQs2NawK7KQoEtzhKcsqOwUwNlAogyK
tZsfTMPVQux0S4hh8VwBAOUPx0c59ksxialALIBpOPKwW4GAW+pYp0RyFhsVUn7ebVbGPNlWIH9Y
yLlvyLmfkpl/f8lElfiSBUskYAOd4DD4EByoe/SFRCZSlDEKyxab8fdGGipOQVvzysng4d8EmZyb
rJRhBZqU9FimC3giOmzzoUE3Mk6lDbC7SDs3ajbUQgS1FoHzoVGEgbii+IZKTsTYLSNpo7lwgCc5
1mDw4AFoUmykQLwPzrNk1avaEAc+rQnxaiUyF423xdUyoaPQqdB/e3p+oaKHlm+JeAVWEQsoKTa/
8qAKPWBGawiPQNV8vgjbnktwJl/lcEe9RtU4vlxPPUze331c0E8qqYejATwpaexbAmjfENCSOUaa
WDA2Rn4h+jlNXots7FpksVl6Q3bD4+en+2+Psx6EppRllO/oqGLSp8BIlw16zDNjQLgw8mqJo04C
FJDkbV3AykRHooE3nGoGtrrxql5Dv16Y0lPR1u32GVH/rOcGhcMhC5IhVgMA7ajAd4JH1nJADZoZ
pwSgsBgW7cAWY1VyqHWPPfhwmLRF/zzrHGPGuh3Q4wEAskHCAcDUGMy09cg/tJBJg+pwppbgZZRq
cs0368m1XhbE/j1iFFMW2FHcjoFmRjTApZgyxo1C7jzH6iHMtyYR9LlSF3f7/D2eqDGN9Zr2Yr0m
i/67lZt83RDYyEMMXTProwJtQjP2fEsa20MI0zGVGcWy+bHJ93kV+Jq1r++pVtGLhgaHD0/2mL0e
40T4onAhh9946XKYTSQhaECJxqEWkQbwIlAGEpgUjBqm/Z8SVh+v1evcNbZ/v9suuo+MvXjHjkVz
/MuZB5qoMmAZTHpzxCM7Yx1LXsucuYJz8ba81eP453oBL/oWoaC7tfQbMtUxH7jL7d1+OsMCWw6M
/rkoqKNSAcAwwOGMsJ1jgQMWBmOVgMPE84z7ZdSrenrZkmlYyHR3/3S7n7V8o9dsrGkGyiO8yKnL
0mE9DmbPSjjlQjl4oFJTzs72E50PXAu2abzqwej9tlI234vJOjYeG3OUAIJRsN9YcyzsmH5gQOd2
ybnAKdiQYMnFNvCYbdXewOXaVb0A01rVbtWn9/Gze9jcPh2jnGPLa/haHA1USQn0QmuClcDA5zzD
1E2aQdMC0fDmPC5ejH6q6W5102IVQ2MVu/3CEIxNgFBtlU48Y88teui5VfJEEuXJCDDzXsCe9oEB
ocv4R0EpEFItxVv6OZaxT2vMcrmSvgDupfR7SlYqf3vfo6Y3pbICgS52obVRY344BpaB8TsCP0UL
VCBSaqlJr4gLQ54SFS7VYrIG5NijSld1sK9q5TyW4JdeziLZxIzHzvRgkxSQOQPkrUvK0SCBsISc
Lm51X6Q5FfprOH0tJeseC+XD5SspmBsbBr8kMifY9LAg0gWPTRitBAyPPVFCdixpGrGZ1B8G8uO1
WtR+aIi6WVZ4ffjUP4xJ15yNmav4Ha2rNZxb4TqG5aGcCaDXGFbOTtIcvXIxujf1YR0nOOEYGC9W
gut1zjh+2Jf4KiaO5v/BfzbslrmrQDWD4BoeKYayOMGm7d6QThE4tglbZPML/c2AhQgL8Tct8V8S
b2+W9a06SRoz7H0tSElxxlbXAL9pCpISJxyR8kJsaJq8EnnD18qebpmed1N93z8ADXoJgY3xL8Ol
w1Bppxx26XYAlm3wubSKFSSmIIz6L3ZTnQt9VS+uueK+tJiZeWer1JojY7Kw3Uokx1oT4CBgz2eB
yVvwU5a6k5E6VFyUy7P1gI3RayH1mqTSnZo8Pb99/cJeQgysmFwa4Vxi8odN2AMkgS4FZt0RjQlQ
DETXeVF1PBvkqp6INmbfTMWr27/+ddbLptgdkZWBjSw7YFGo4pzBQm0MMgeZY0qHvmh1v6mWs4kO
fWPpe77k5z8NT/3u4Ok55H/Dex2DiURgD+MEVIdiMNGy3FkNjwLESJ4QY1hSlwsmHiU50b/pcPWq
Xs7abjJCl94spNjPt4isyp8/4OPBowad4FgHBuT88Cc2tGHYII9TmR1oEf3WyrZfb06jkl/nWdwg
3rDeFIyyZZTx/fCAvfcx7D/P0BfFG4fGMPqgubCpM6J0GCrhJ9iscJpMygBYdHpToKcx0YnsifWN
V/UaZGNhamnYN/dfYSGHdtl2TOMrgVupWKcitnDSuCr8c0rZJZJAeaes31TG42GWdsTq/uv/93Zs
u2krwXd/xb5UClJB9l58icSDr4iCQ0WcnHOeLBc7qVUuKThN8/edWRuwDYZW5+jwQJTdYWa83pnZ
y1yavJ7WVrAoVcGya1eCxAagOrH+Ull8icn9muC6b1qehS6o0tdKg1W6Y/YpTCpdqB6lgfr/qXDo
aDwrPc37A406fUppI3/r8X6AG2XpI8dAFzIfk8iiMmKB27cN0+h7OmeqozMVlPbF1K2naonSM3s9
yhIua0bJE7HN+sdRJXO5d3A4dzRNwCYPk/CZwAzMCa9v+65OGbW50Fn7XK2GRWmSOjNLWZq2VMY8
W22K7DHP3mqhFOWZsryEltdrDOTOQ+cfjm8cEzbDJLYtRwjf+b2V3SmZLrPchms8lDizs4dGa29o
XpJVzcqVCeqZ62Mwjyc96FRYKzlaoPdBIQIuS2jMbeUHruFo0T6jgy2Wti4pf+QyGDVIFlnpLIah
xlKI8K88uqROgGG5qoN36sIHY4O51i0NpqFnw5crfmdI9xQ6BKjqVZrcnq7zqUwBw9sHg9URhFXl
+ccgNN13vb4aaLDuxKsZyw8CTNBIuaEHnheI/ypE/EC+29ScHELQxZkNMF08Hby9d9+XeZGxY3kW
afdVqltOYKGLBQYigGmxXBPWJFyYwrFAXtzWKXIDTYOB7MxpOjR+2TOwTNbPeXpcFBuyjiIoVB3T
QhgoYrYDpg2scR+MAQ1k3su2S1gdi6L4P6uqLuEmzZ/2we33r6sVjD5WIHWT5XJHVkmakS/vZFN8
zbbkZbsBsdqBoBfJ9jmTYbTFV7C6VUdZubRIdt9iMIPxS57eEq1sK0vzLuC7yG6JWm/cZYVMSFq1
NwlfQ6/+O/TwT+2pYAQkPcyakK+zc/SYxoX1ZzSVx5BgwYX6+M4BarZevhNMs4k9mydy2PvdkmhT
JMshVUGGQrLNdjnWEB9a2oCGN5x/6JHdG8hblsab1yIG1l7X+7Lt6VDTTAQT+oee8tc2LzAPAuBA
+gfMgGhE3qCzyNZDRi06uVEB64ESE9wsm2qEhmrZ1CAGiNAdAWgRZe6PxrM7Ev3z2Scdn8fxPHqw
p8rw+OkCrboVd0R2chdMclke9zy0xtWJcqhKDqYNJmfpN97+ATcHaqh8uiefxhF5LhMHA/LFJs3O
4DUnHaA3MFhgZ7K0VzEwUEf7H+27CLz5JE0xewABztBJuzZ4PWUi3b6IjS1ktl5kHUPBJ0poT6cz
l1z+GGLAwj3oTZKu8nWvE5jRiXIf2e6EjB7sudeNVeg4YPdFsvh2hT6xTAq8PoaxZMGO/AuwDKaY
UlWKDeWgdHM60EIljj07sq8wQLWBQNBxaI/8K7CCAgNxPB3fTXwPXvCFx9JxXOM48v+OLuPUMOgG
QR/uxu7Mu8yC4DBYKylfBBNSXngsjlgrMVjBQmf7fgEvYP0D+YpmkT299mLRd25Ugn4kMK1ed41J
Xk7ukrhhDPQQtIHyC1BLAwQKAAAAAAAVkXtGAAAAAAAAAAAAAAAAIAAcAGNvbXBvc2l0aW5nL2Jh
Y2tmYWNlLXZpc2liaWxpdHkvVVQJAAMZ/xVVIf8VVXV4CwABBPUBAAAEFAAAAFBLAwQKAAIAAAAV
kXtGQckNUi8AAAAvAAAARAAcAGNvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2Zh
Y2UtdmlzaWJpbGl0eS0zZC1jcmFzaC1sb2cudHh0VVQJAAMZ/xVVGf8VVXV4CwABBPUBAAAEFAAA
AE5vIGNyYXNoIGxvZyBmb3VuZCBmb3IgV2ViS2l0VGVzdFJ1bm5lcjo1Mjk4MS4KUEsDBAoAAAAA
ABWRe0YAAAAAAAAAAAAAAAAUABwAY29tcG9zaXRpbmcvYmFja2luZy9VVAkAAxn/FVUh/xVVdXgL
AAEE9QEAAAQUAAAAUEsDBAoAAgAAABWRe0bztYBWLwAAAC8AAAA6ABwAY29tcG9zaXRpbmcvYmFj
a2luZy9iYWNrZmFjZS12aXNpYmlsaXR5LWZsaXAtY3Jhc2gtbG9nLnR4dFVUCQADGf8VVRn/FVV1
eAsAAQT1AQAABBQAAABObyBjcmFzaCBsb2cgZm91bmQgZm9yIFdlYktpdFRlc3RSdW5uZXI6NTI5
ODcuClBLAwQUAAIACAAXkXtG3eIYpMArAAAJjQAAOAAcAGNvbXBvc2l0aW5nL2JvdW5kcy1pbi1m
bGlwcGVkLXdyaXRpbmctbW9kZS1jcmFzaC1sb2cudHh0VVQJAAMe/xVVDP8VVXV4CwABBPUBAAAE
FAAAAORb2XLbSLJ9Hn4FHuVxF1X7wphxBNa+mrZljSi7O6ajgwGARQnX3BoE3dZ8/c0CuIEEaWmm
364ezKWqsk5m5XKyQN+Vi9yuVgNv+/ezzX4qqge7qu7X87ktvV8Fw0T81rtLq6f9NPi7/ryYrmd2
df354/tPH+Lrv14fr+3djO28KiaFLQfd0nufbbkqFvO9YNwLF2PrPTwv7fbLX7REkntXt2lVfLVv
AEkJYr27HfS75+ppMQek1ChAem9Xy8V8VWTTjYjVk/crxfy33qcVKHQT7XcTmPR6UVrZ64dittuQ
gsIIM0SVR/QA6wEhfa2xh7DCuPdx6LVRf0hzD778xSO4b/rCuyIsYfwN4FguyupgMiE9f76YP88W
65X36VMNREtufJ8xFFNMkQijBKkoDJEfBTIgSgoj4l6vF5bp6smOvYen0qZjWMc8LypWy7TKn7zf
13YN4PPFrJ8ul1Pbb8zcH1aLMn20H9I5/Fv2evG33C4rwLI1b/xLOAr8aOSHYTwcelfDmx+DT8M3
BxPdYYCJf4rvb0d39x8f4vDh5uPtKPFv3n+6j7208vA33PwRnNkJZSlY9PMH794+wvqVd2vTEubs
Bgc9Z7LR6P3N7U9xdPNw6FHeXlImNLxBB6JNBm+8Xz3GOP7pN69E6Lr845s3/PD38OPPXd74j/Rr
OszLYlmFi9L2J2U6s38syi/XmwNZXftHc3oIvQNoD/EvbVhtaA2SPbScaNFAo0bzGtq370DbnE8n
pGZsY6XIf/DPQ9nsfAglmzRQPMqog/LHzkp395//Qyi9xuk8PBhc8LlZWsxRVc/sYUA5LbLV86qy
s9EXW87ttD9+hq+2OvylcRs1mUy0TXOektSbpfnTaLZ6HFVluvTeQjj1yGsFsTHRO0EgQ/IebcmY
LyAhPZ+VYXCGVWaEt5k4gozx1ZajEtwZ1pej/MnmX0bUwaOix14rO+PcehvRbZkgkQrc4y2J6epI
3SONtRI215nnJm4RL5Z2DsIM7YlXyzIy85yojQwqTE/CtP0ph8mtrZyfnBFilRCMgvlGYfLp/n0I
J2EHg8NPVwfvQfB8Vf31B2+6mD9u/3WTh1VZzB93wydfvantz0RPvRYdN7n19ghC8NfKOlUV7umW
sGSxno/TOgt2ChOKSMqZh369He4UKuZF9XNRPX2ws0X5HKbLNC+q58G4WH1pfair6W9OC8V7pqvu
tv7+cphlBRsrNfZ+frgfDNyCcDGvysV0ClV2sJym1WRRzm4AR5FOi39bN2q/VVfOZIJ5V+0VULv6
s9mAMPqmR/ArYWgClboTRrHb/qqYVz94+RNUgebo6rOjSshjKP18uRwwrQEIeSUQJSeiG0j7czcY
xkQnFkIdFvpKLCKVxnPJ0EnGINm9dzYWGKSxOiIhDMcnsXjqYSrLrJiMvVWVAo8AX9mlYiijr86x
2soUIsmFx+/1/NJW63LelWiXTR5viTuUluE8nWDtbSeO/vi9eVNbEx+l3BdIG08y06h5KIqwncL0
Yu1xJt0MotmG7bzaPkZK6n2xX4FbAts8tMpWdseRtfTgSnJKvNF2/mj2WI6K+dfFlzrDMLM1zCsE
EiaPBO7MI+jOPMzbEMSLZuqmhbiV9Zo5FzzcppRlLtqSweB/YM+HFHj23+qPTYr+wTv90DQC1XP8
DWp7Dvu3JjkxPxxILNOiWh2KfPe9UbyevhsMxjadThc5JPQa1NXBHCgia2gJHufAoSEJuLDnEJvN
4M1sOe0/DYR0EfpKa0yosJNNhhgM3sPu0419oa1Is3RlAXD+xeWi9XLsoDUft6NJuZh1rUqKqV01
SVsB0J2lAScT7E3tSa/DCeT7ZTiLmetbPpbFYzHfd3ANGKqVd3VhdZ04qQSArAWwTbQ7AKYZnggF
+Wn0r1sGB2d+hjz1T+fBeuv98e2wYqMR0ZP1PHd1+Sb5+jWO41EGh/7lMNC8q+2UdDognIk3u0jh
/98yJ/PyTe/4B/AS10xvmkhvWDnqcyU5yorqjWvMyvTbYN/QYa5zrhkHBlhmhwOEUILZWABfKvPW
is1fCgPjroHMbTIuBh1dIwysitYS8AlKgK3B7suT3XOD3YqOASByYKZSb0fUxNAxNI0YWiM3YDpw
OVkEHw1McqzrAXKygmLpNCG0tQmx2GrM3QBr4RJqMiaklsVP7dgMiA7dhdukWB6Zq0nAXjmZHuEi
mDqCkZe0y8Agq/d+8VhA7Hrh3afm8oL34rJclHWfv7nO2K1UvQfXiN2uZ9n2AofwXq8XFPO0fPZu
ZhD+q6afr5fV9Ic6YyKv9SWXk4ny3p7QqCv8xvub8aOQUSNRJIRCjPMEaaFjFCZYxSyOuZTxu5dc
NrW2lLYDh7STCVR2iCVY7PKQWz18KmabAKvxsIhzzBhDSWw4YirxkcG+QAKbCBtCTBwkXXjOSW3j
UrIDF9DXyeQ0nVOITUzewmx46ZM+FW8Bn08TxZiKUEATg1hiGNJGJkhwxgIZqkj5+ry96KVOn7ax
anyKNaPZZJJfyOxdkEOeYBIHCvk6AshKEBTIiCFKFKN+FEtg2u/+nBucQ6ybK6OWAjnR3DnBae3s
Am4ECZTvDp/6DDFMweomocjnMQ8oj30aBO/+8/udLSat2SlQk+MjSzcr39vHNH/uhKukIhqcAXER
CrCzglACA6OAh9LgEKvkEtxG8CXQzYwW9EyZE+jjDOtThz7rHb5WAZNYOqyQAKiSKCA+Rj7DzAiw
fhhEZ1Cfd4vNYK/B5IqlVHqs91i3XxqcaaI8z7Vk3hVw9D53lvQjzgITIBHGPmKhipHRTCIfgyFN
YkJfSMC0XpUu7q/d4oOttBD8ZCsN9DKdQJ96eF9RZ4tv4HxMqj51C5o3ACHQOMJaRsgwH4ImZAJp
iQFHyJIowlQlzB3msGYK1++LrISkfJ1sjbG63grvNtB2tNdGmHXAZgDbHML+0d0V876bSPsOK+ex
ITyIUQCYEYuxQIZDlIe+iQUzfuILehErSOyGCQNthCk9RWhS6gpM993NlewbmE+wkH0iASzljBuK
NQKng6BOBJhYhCEKmDKSyCSIE30R7F54F+bwYLwFPZ2wU+jpRNShAl4Ufv4wvJuugXQP10vHwLdV
yfQBufMIBSmHc45k4seIkQCsrAlHQC+oIIpSE8qLwD8u7fzH992GbqYXEGDnobTUsWN7qo619Cjy
w8VstpjfpcCxV94VxHxfwhrjDkIGcBJ+EkFpTeA0VKiQgbhCRNKQQO1XImCXPTwts+5D8NuBsIdw
Lhj2M9pKWtalJDtS0s9zO7VlTadJ7W4H38AXoCzQhyCgykd+LCm4HgQ2BLdGOMAygkIYJuLy4e0l
duuwHz/SgHdpYI8Cpr4+aB5Y2XJz6KALrpWBEHbuR4WPTRxCEqQE8jS80xIODosAugQV4ziKTzW4
K4uvgOnwODq2OnMsHTNbyk3GHflqYtWRcs7vo6K07uLheacVkI++wXVkJZBogaFolCj4h1EKJT6C
JCZ9CnwNCqkJk+9G1m6HbmVaU9pa2NNiAXDIkZNFRdPRls9DW34tctvEk0vCWLs66jItFhoFviPS
Io6R70Oai8DFYs0EoSr6bsHYiv5uUJ2i6V5yOq/XVpN26G6ykywyXZTD53nu6o6pK0/9WmdFIQMD
ekIjQZp0roEVI+W70NJMq+hy7fFhB2iKHMoXa7/Dcy6fbIbbugKlO9V1U7sOmv7NFf42/VO+dVMg
ARGLfOehAVACKGRQACAMI20C4xOpcJ0wt6ykkXd9TnIbW8q6sEGiG9fYnPc2NLuYP36qiu2FyRUU
H0BGTIJjJQ3CRgMyDCkOqn4AnYmSscGxUcIcIDsvsA1qgk9BEZKfOMfeb2/mkCrm0OFeAdFvwty9
Oo4Sxb7g4BiaRBI4ShRAeLAQEWBz3AAFhfL/ovTVsdt5inU8s9dWZdyhH4UGJauNni+Wz5MCNNza
GkPGorUrhAk1UZJIyL7O4MJg8HoOGZnGlBEJUmLd6QptmW04gnfA0cfFLrLZ+nH4PMsWdUXHsmZX
rqDHJIhiIK3QLjFgzTLh0KRG0D9HIlSEJtgP1UtMfLjDmaxyMKOtQ/Ms/lgHs42xJ1vMxukUpas5
2ZqV0b1Z/ZiSJIFuWknghsYALVTQS8XQ9CdxnFDKaduPTwW28RjSgceaowrVqLLJQi6tc2dUChmu
T107ov1YB1B1g4S4xo5BY6dDiRQLEsUxYEuClxi2tU23ZVtTWqro8eRUFfjyQjR6V6LmD6ZuqSRE
mYhRQpRLEVECnQ300joQmIUxGDcS/2V5OpzRgm5wegrdKHUEfWjTMn+qLwPgBOoqU7+6KmMCHQkC
XSmFXpDJAAP62CCiCJeRgRzHxZ9XXHdAzpzRdritpOqgEXUlbfqLZDGv7uufHJTPu4xCXfb2FRRL
6FghIUL1ZGGo4VSkRtIYLcJIgIbhn15C/YczLd+9XS3WZd50Iqeg2zrnHT5pxmqr86bwjeer1fYW
/UpQug13lkAU+RjYEuauJmjt7h4TFJkwTkLOfI7FpYJ6ILcNa9x1FGO9zUJf7PPssdwVeMfemO/r
SIP5wwRDCx1EDPnAt1FMdUx8Rn1oFjqhHMpqgchIR+oZK1GX9L3Tr2y+LosKeLGqPV4Irkif8D6t
e04WShIagmLjqqYrmJAUEySlAL+ICFASftE1hhvx5zy5Ge21McoO4GZ8xJPmzU899jSJ9Bkg1gGJ
SUIiMB809SyAVtl9hfwg1ByKvM8kv3SmLbFtXMZ24LL51tlyCPG8fF5Wi114SdL0F8woFlKNCA/A
ihhLBM1ggDCOIpVgA9jUmWrdFtnGYzvow3iij2rLra38dfUEjt+cb53PQk1ILB1Ni0ModIHiSGMN
3akSkaQ8YVS+qKJshHef7mawBdryjlRsxfEFzmppbf7UB+0Xj+63JIflyvUAtK6Q9au7p9VBELCY
I0kZ1JY4IcjgAGoLj30cMUjdkvwZNwnDGtV9F6iWVx9Pa1tAnDatCmM9oY17L7L/zfv+LluJxoV8
cJTIaI6oAmdmGLgVeDJBMqCYEThFVV8HHjCTQzm91l4dF1GKYHsUX7P6YfouvFifNF0I1HHo+MHY
TEMBZIxCbClFERBSRmKWEKYvJs1Dub02hNNkrqgE/skOXSNdj4tFv1osptniW993nx6aD65sk6Zq
E+fk0gRUQVZHwtdgsyRUKNCQ7UMiAwkMT9IkvlzXDoSfuXU5mNFSxmSnJUCZnO6ThbtyClvpAtIe
d1RJuwcmISR/poGAQqsCLJQIYKGSRhElWsUkOpMujoW2MeWsCxM7qgiNgdfguqvGvJ/mDSVq2dbx
UcIEEsKHlCaALvusbqykob6K4kAl37etk3zBsG74SIPTFkVlbNdCB+/94b5bMrwvAGoUG+a7Dkkk
PrBn6lMEzXKIRKQiBTEEfWvyX129HUz9anMQ0D2tha+lVpZ1pIQs20Xkwe/Fdo8oOMFKQflAicEQ
hgEkby1ZjBT1Y6AzcRST7suAvbAjDKfRpxUTR4kZqF7ztKxprqkUDVEwUUgYhBvkXKi9TEMeNvDZ
eS/UGSJUEMXf45BnCG+4Geu1kZkOuIIcwf3Rzt3B1b8E2fxiBUzYUHuJa8IgueImgK4VUwJ4fWC/
JuAGmqsIMkSADVjzJaWwY6szzzROJ7ZVE+MO1eRxft7/nveKEtUntVdIIZKAcQYtOLA0FtMEUgeP
UAANrPD9ODE8upScd0LbiGSXbyh2hGhVpZAytk8t6ttVZ+BQaB1jTYFW8wBSBXRRJjE+Un6kGYDF
tHaNs5gOxLZQpelp1Oh0zLeo8rdv06zY4uGmrl6U+FACgF1LxeC0OaTVwD0oVRzaucQQGSW4XUcP
xbT3H4uO/Se7u4Z/3MU/7pMRd8cTuFtyHhOUqAQyO2baPQVgCLpHGUUEGvvw8kO9+kcXNx9f0Dnt
d2+DnpzyL/c7oqO4+bCeVkW1WOdPJzf0jmqLPgE+4K6eN29dB6MphIuhKJQMXM81L8Yo4OERBeej
iWZMvySOLmx9qOzJtJaa4y41LeZHambQvm061ubnkDP3P4s2CaJ5tkkjqiAdaGDsrhhH0CMGWID3
SgOEWftUJuw7HdCR/HOt0NG0Q31Mmp5GIBTD7Igb/XOdltW/m0ftpK/d82RG6yAMIqn9BAh/xCSU
Cx5GQP2hEgbc54wKaWTiX1RjL7ob/36818aYdwBXuzvOb6tp1d9dxZE6XxhluGESSQbtJgMqBFAV
gXAhwOohN5OQtEP0UEhr9zpCj3cfy+MHRGHy3UdE/0fctfXGbSTrd/2SAAsKfb889jUW1kG86+Tg
vHJmOLZgRfbq4pPNrz9VzRmKTfaMhOwgC+xq5CHTrG52V31f3aR9gMeL1FEvCGJJ4EohAurlMiTg
TDK+sn5vCBHNCUl+w/2Lm+qZK9Oa+TKw8nm4+4ZbhV9z5FPoxXVJK+DIqotEO0wwKjMVXcZEDM1F
Slxdgky9g0e3b8Ir1WQGto4SwZe7I5j+8vsMHwnGrimVxRzyoLTxWoK+xYyY6H1noo+dMMJwhx4M
Gdpeld9bIMkOnDYEQfw57uaH4bev34e5z57jjuZSwDpS3VmGRCQCLnIMGJx2HmibsJqk3BRjOd5C
GN4QRpD9nhRhNn/AQlyTaWGQWsD5MQ5zSTzQNFADoNIMAewOittoJP9MhPpsVaPUzxdD4/kHVFA7
hP/ndjd8PaokCmgFvdpCgdHlNnVMYdaIxEw7K00HL9Bw5rn1lL3qUy0jn3YHl8u11END6r3sFwdj
GvH65ucCeMEaFItnCWAtAr/jiyUSWLl3ALcUch9LeGcCgU0mLKPCZ2rNebdwGbwtfrk0F71n2zXm
7fkhXjSD6AngOeByiYlW+Inq3zvGSbYdFQJ0anAeSbvriALsSC2Dby8YHHbpBKlLV7XopjEfscTw
v25u//VcPJS0aClmcCcHnSmcHtGFZMA28AJyBe2Al5JopaPZvsmDdRy9LfHxaiW33K5tGnw5edrL
xvsp3N2isT/6cUwxI8kHrgJY4IB5ehjQRY8z+qwsYTzpJFW+UA7PSoh6Dru1ZezBZhzB6/efbh8n
549gYB/wyBJQGARIYUcNJlBZDywPVBuAoeAN8CctxF9FpWcCXtVzoI2JYTLl+HJ+fP/rMrHKJQIQ
CJhA4UugnjOoZxW75AQm7CpgivIyL2V6eCWypmuvRq/VZN5+ucl5QSSyD5if6zudOWYpg/BOADrR
nsP/EvGcpQsRiZenV0KbRq5gb+gU4/i9f3jBdYzg7pFSM+c0BhNMBGQBPMgC+wNkLZwRQI00TQtg
9zJI/XDa0IRmheuwjHV7h7qbX5dI5PgLuisybFsBogSO/m/J4BwaC688CGpioFl69uorD+9Pp/qE
97XADTjWG73M8Tm4vR//ff/0eXi8fayd3roYoPJZ+BbPHnPmk0FQgZ5vw7zpqMw2GyO9JpdPfBld
2x/X8q3939NN9UJo1loIvojYPfb3O3S6HvePBvU5OsJJJIBdkuuUR3iK7hqfFOm8FAZglk9A5896
E+YjL0RrHEMzbM4EuK9//vgS61aACkRJbiYFfEo4kZl42QnH0FsOMNTFJDrphY4q6MQkvZzNfZHk
xKb82AqNA/Nfb8ziDlgkJVWVSD9IfvA3OaTGUipYftSfFBOUCVjhrHQKNhGSWDibkjQftxasYaA2
FH2i+4N3ha2cKzJnrWQnU4ADYWDlPaaD+QQQF9iLi9RczLnCGiLThgt1w5CkV1rp9v7L/FwfuCYj
GIo3ThJvLMf8Q9BLhinAB6jcpcjJZWJAaV2CfN3MZahQ5/2Xq1r8bWNOkh5fA/ZamAIYRiDWpJFZ
ivkdgXCMGRtgOzwD6RLweriHl2R9c0/MxqplkKwhQy+X6Rvb/g5LJLHLS8m32vfb4gcp3t6SNKWF
ZNZ0mmtcXKDvnnvaaaajdFLZJMx/5AOZK8qWMCfUZevWagF4I+t9A6CspZnqTCJ+YC1UIIfDt2MA
pZEAvE8DTMATazobgRwHICzBekwjZ2/Og3s9n2h1WzUxoXljYmZCPotCaWDTdkrVEkk4ijgicA8/
kMlqYgEGMQ0EABBGatuBesxanIZHdyMGuiRY+DN/DF9/+/YwPD6WhZaqCFYCZOg2JEoBpIRdHz2m
paJONDGi0zsDxAiWWBXfsszrZ52gVqv76pkNjR0kh2WuwEoD4g7i4wEalSz3IWTmsD6PZoz+Yhwa
cFTMBFY+GEEd+/NK9nCxEl3JNaDHL5c5+Gs0A5gJ/Q2i5NckngnF3FkMh3BtsDZKYjlNEICWYHU4
vQxaaty4mE/jVSjVN7Dr4zFBdkoJLNm2oLQI11F3lFCgjjQpOMJUd8QkZa3LXJOLpDtUObqnoe50
Sz1Ns2tM05LFa/slhLmK5swRLaPthIazw9Hta6UPYMg9iRIQL5ydtxwbGLYtMFyoxbSt3dVPGggO
09e779d2Qj54CCgNsNXBNmca0O0DP7xIplOJwOGOIjsrayJTD1NJAPZ9LQEmP0+EdclXhVfSA8jv
gPthdVpEHgWPjx5Yq3PESRsvxVdbAivaEnhY1FUeBurvj2UKJRMK1IMWAr0eiA1Y0EBaqMFIEQsK
jEF0byoimQY/O4m+VoJWNAS3esK6P74v+me53DIR5rkJnc0os/UJLI1QABsA3kfjfQ7kUss9E6AS
veeNTdILAR/Vmvf3n9x9f/dvoF247PqQxKqLTTLAuDn1qqPUlOQS1lmTwfRbNPyWaBbFxRnjXKQT
SzC7o560aE56yfKPGYyfb/GdjTmMhCDWwfxVghWwJCUwwhpoIoA+BNeRWwX87DVG8Na8sIME727O
pzm+u6nmN9jG/IbtEtfebOcmjaFbl8lripZAaEkpZiRnH9F9BT8MxteJiQCPqFIpv+k4zR9xwjJv
T5izYb8+VFu2Y/v9UA7Ve/fBhb+vknJ00g5zqjuqMBBhqei8A0CqFPfKGiXh/3+RJ3Eu4XxqW0nW
lnor6ZLP/X142AwPXx8L2p70HDEuJ99RaxxmoebOByfBTueQpEzAgc7DpOOgbamPV2txAfiuxRXL
0H74/Hz/Baz14aFTOoyUY5UpkLgYtOsixdJnmkBJKB3gnxmsm2KGtMJ/DX5QP+YEO6hvqqeza2ws
uZuSTv4FZKy/B9wxKWxdArUOTIwPHtknIAjH0AvgBBwOifmAkQXeTqRejrcQRjSEGSbTEf6ZPz7f
Pr2E/YqTNrukMawVpEiwxw2WHFmAbYYqEaLVxsYaJtTDVBIosnbUbBVdto5A2Pjp7mC8MFx1MGIc
MAFJsCyRYn65oB4gC9edj7AuiWmvhf/TRmy8VotLdUtcs/ArldY9U86Q4sW1baRCTAMsw2FMDSBC
snCSkgTgY5jOhp1zKc2HXIhkGyIN4gi0vsePH1YRD6yw4QxMfoxIlw0caQOvs0si8aBE1trpvyri
Mck3n9ZOyvW04Mv+OK3n+21VaaAYLCLmPVFTKpEzwBlHMBitvKVMKnHigEwDVY/Xav2id3rbLzjz
uEDh6/3+9tPzw1TndEgjolMSEbeOOUu6iAeXc4eVTkl2LAMCc1oChDkf12g851Sh0+rGal59Iwtv
178EZTaPv73E1kuUnwUXCHGso1wy7BbiQPZy+pWOIgLT0IsiyNkY9bPVOka920lzzhM9QpVD6g/R
GgBCYe3lt1JgwpJl6JBIoNJ5FGCM4EQAFgQQYoAaKxou541+keaE4p+uX9VztK2JL4Pzvzw8Pz6l
7/3dc3lv7tM8a0uWbSScwQwL4TBRXcM8HSAlTLYjHnAuT+xNweHWg07wysad1dT2jUrngW62i5Yg
726mZHbMu8DDAXAId5fKGb3pHQ3A/DmluXMhA6AVmUcw/dzFy6Tl3JxNeJ8uX1XzaJhH+FIvOtjc
/Pzx+eCVtePc7BjUiQQQuicBNBG6aAD7dZYECsxEeyaMSuaV7Kpp5FO5FIfLC6lNS+plcea3h9v5
W7/+gP8+Ug2mkFmlRAgYewpqC932KbAO+8N2UjFJTRDKWnGJl/OhFmV+V7m0mN46B3JgDD7Zq9Mb
9cih0r6YDRMNkzyVNkh5zGGyQYZOAnH3VotkXunW8WfI4yTLmTkvlQhMcdOa96S5/9nvbvv77bAI
HwlFhWHBdsFFD5AduL4nQBal1WDoXRSekAuFj2oJKuE1X8dbBn3IiSlG+P9u76c4HJcluVObGAKX
BsxkQGczS53nVnYEQL0XOngp9AmT/jJaLYZgLTEm8D2uwrWf1pBaTEEvAJx4xmUOQHgSAHClAWk6
FTogEcxaIHk6LsxgPdhCjoZiKfEB0278/IPSfMx8wk88mllEsG26i0IwbC/lOisxFIvUmTritHgl
y+w49qkkzMPlSm6zb7xGu1UL1fK+B1D1eVYurdk1Q5/1+Aui4QDnixhbWk8BINICa5hcl4igLlNh
MxOXM9u1PKfcNfN7qln3ZI2Zhp6KWdHTt9s7bKf+9LKD8egBGaIKNAr18KK4Kj3LQJEmmJyj0QUq
6KmCp3rAWpxGguLQb5Ytinb9U78bnkoS7eO2KL6xVJLL0VcRbHYgD3YXQejEsBBfgbFKIlMjKPD6
TN/U1wAeFI8POq3VVrfVk9rwxqRWAfuqrWmdFGtTTEaDjgCgDbTUaQMECwtmiw/QCkesOUew5kPX
ou0aSmNDp4KI7fO3x+spas/1WLzJVXKCS9IJ7gGrOYklxsBHKFFG+hydjmJRkTEbpxJg07cE6G3R
FnDzXdm6L9HqqRDcCeJIAE3FGS0uXgFIJGFSSUTfDWxB45pLMh+xEmXb8B0N25UC2PTbL8/fqnSA
azmGeq7Ht0WthKcr0wmN1Ws6KSCggPusD5nC9lPGvqlviV88ab7jxmuV/Du7RuIDWNHFNpuopQX9
f6j3UTli5Ty8UI8FYB4MkQc0h2k6yUYS9QjmTu6vBsschkaayl4PWttVrvGPD/23z7fb4v/GVJzi
ELb2mo/rGUzwQSnREUzf5wErVDicbevhTWsOBJi8zoOOzzgd8z7eMZ/F3jQUEob3F1z53dhTpO6x
l7nAejTd2Vyc94BMjJdg1rxilhMds3lTc5XD4Kcy78vFSuhtS+itmBROvO0/3X99fLrd/jQ8PmJP
2DrzlRIyqnhPska3HHB6LhjYscBtJ2ypPSHRL3P/zo9bi6i2DRFXrUmOgYJ91R1wDBhQNtbJkByD
yZKD+sFEactN5wzQeek5D5x4515pU3L09Z/vEuga982mBGdvs9If8OVOHU3p79+mowf2AI8eG9Ox
YFvDrshCgi7NEVZZUNkpgLOBRBkUazc/mIarhdjplhDDYl0BAOWPx6Uc+6WYxFQgFsA0HHnYrUDA
LXWsUyI5i40KKT/vNitjnmwrkD8u5Nw35NxPycx/vGSiSnzJgiUSsIFOcBh8CA7UPfpCIhMpyhiF
ZYvN+EcjDRUfQVvPlZPBw78JMjk3WSnDCjQp6bFMF/BEdNjmQ4NuZJxKG2B3kXZu1GyohQhqLQLn
Q6MIA3FF8Q2VnIixW0bSRnPhAE9yrMHgwQPQpNhIgXgfnGfJqle1IQ58WhPi1UpkLhpvi6tlQkeh
U6H/9vT8QkUPLd8S8QqsIhZQUmx+5UEVesCM1hAegar5fBG2PZfgTL7K4Y56jqpxfLmeeph8uP+0
oJ9UUg9HA3hS0ti3BNC+IaAlc4w0sWBsjPxC9HN6eC2ysWuRxWbpDdkNj1+evn57nPUgNKUso3yi
o4pJnwIjXTboMc+MAeHCyKsljjoJUECSt3UBKw86Eg284VQzsNWNV/Uc+vXElJ6Ktm63z4j6Zz03
KBwOWZAMsRoAaEcFvhM8spYDatDMOCUAhcWwaAe2GKuSQ6177MGXw6Qt+udZ5xgz1u2AHg8AkA0S
DgCmxmCmrUf+oYVMGlSHM7UEL6NUD9d8s3641suC2H9EjGLKAjuK2zHQzIgGuBRTxrhRyJ3nWD2E
+dYkgj5X6uJun3/EEzWmsZ7TXqznZNF/t3KTrxsCG3mIoWtmfVSgTWjGnm9JY3sIYTqmMqNYNj82
+T6vAl+z9vU91Sx60dDgvVAne8xej3EifFE4kcO/eOlymE0kIWhAicahFpEG8CJQBhKYFIwapv1f
ElYfr9Xz3DW2f7/bLrqPjL14x45Fc/zLmQeaqDJgGUx6c8QjO2MdS17LnLmCc/G2vNXj+Od6AS/6
FqGgu7X0GzLVMR+4y+39fjrDAlsOjP65KKijUgHAMMDhjLCdY4EDFgZjlYDDxPOM+2XUq/rxsiXT
sJCp+rN0P1BGr9lY0wyUR3iRU5elw3oczJ6VcMqFcrCgUlPOzvYTnQ9cC7ZpvOrB6P22Ujbfi8k6
Nh4bc5QAglGw31hzLOyYfmBA53bJucAp2JBgycU28Jht1d7A5dpVPQHTmtVu1af38Yt72Nw+HaOc
Y8tr+FkcDVRJCfRCa4KVwMDnPMPUTZpB0wLR8OY8Ll6MfqrpbnXTYhZDYxa7/cIQjE2AUG2VTjxj
zy166LlV8kQS5ckIMPNewJ72gQGhy/h3U6nCv8Mq3tLPsYx9WmOWy5X0BXAvpYcvVyp/+7VHTW9K
ZQUCXexCa6PG/HAMLAPjdwR+ixaoQKTUUpNeEReGPCUqXKrFZA3IsUeVrupgX9XKeSzBL72cRbKJ
GY+d6cEmKSBzBshbl5SjQQJhCTld3Oq+SHMq9Ndw+lpK1j0WypfLV1IwNzYMfklkTrDpYUKkCx6b
MFoJGB57ooTsWNI0YjOpPw3kx2u1qP3QEHWzrPD6+Ll/GJOuORszV/ETras1nFvhOobloZwJoNcY
Vs5O0hy9cjG6N/VhHR9wwjEwXqwE1+uccfyyL/FVTBzN/4v/2bBb5q4C1QyCa1hSDGVxgk3bvSGd
InBsE7bI5hf6mwELERbib1rivyTe3izrW3WSNGbY+1qQkuKMra4BftMUJCVOOCLlhdjQ9PBK5A1f
K3u6ZXreTfVD/wA06CUENsa/DJcOQ6Wdctil2wFYtsHn0ipWkJiCMOq/2E11LvRVPbnmjPvSYmbm
na1Sa46MycJ2K5Eca02Ag4A9nwUmb8FvWepORupQcVEuz9YDNkavhdRrkkp3avL0/P7bHXsJMbBi
cmmEc4nJHzZhD5AEuhSYdUc0JkAxEF3nRdXxbJCr+kG08fTNVLy6/dvfZr1sit0RWRnYyLIDFoUq
zhks1MYgc5A5pnToi1b3m2o5m+jQN6a+50t+/tPw1O8Onp5D/je81zGYSAT2ME5AdSgGEy3LndWw
FCBG8oQYw5K6XDDxKMmJ/k2Hq1f1dNZ2kxG69GYhxX6+RWRV/vwBHw8eNegExzowIOeHP7GhDcMG
eZzK7ECL6LdWtv16cxqV/DrP4gbxhvWmYJQto4wfhgfsvY9h/3mGvijeODSG0QfNhU2dEaXDUAk/
wWaF02RSBsCi0//3dnS9iePA9/wKv6xUpAMljm2SSjzkE7GQcqJp7+4pSknajRZID9Lt9t/fjBM+
EhLo6k6XBxD2MDN2PB5/zMenLnpaCHVYT5wDKvU28JaGiaZif8rX0JAqXLZZmvHJi1suaF+4GMJp
iK3CdEq+5akeTN6eP/yUG48NVNpvrPJ1ndfz3AompSpodu2Kk9gApk7Mv1QmX9Llfo0z4Rmma6IJ
qrS10mCVbht9CoNKcNWl1Ff/vykcKmptpedxf6BQ0OeE1uK3Hu8H2LBMfWQP0YTMwyCyOBnpvtO3
hsaw7wqmq7bQVZi0L4ZuPZ+WKG3Z61E9ZjJnlDwRyzc/jlMyk3sHmzFb0zhs8jAInwHMwJhw+5bn
CKpTi3GhN8/VTrAodVIto1RPksaUsUjXeZE+Zun7iStFeaYsL6Hl9ZoOcuei8Q/DN44Bm2EQW6bN
uWd/bmV3TqZLLTfhao3iLTt7KDT3iuY1Xp9ouTJAve546MzjSgs6FdZKtuaLPkyIgMvkmu404gOf
4GjQbpmDTT1pXFL+yKQzqh8v09JYDF2NpRDhtzy6pLaPbrmqjXfq3ANlg7HWTQ2GoWvBh8M/06V7
Ch0CVNUqdW7P1/lUhoBhzYPB6gjCrOL8oxOa8By3r/oarDvxasb0fB8DNFI2FL7r+vy/chE/kO9W
NWeHEHTZsgGmy+eDtffu71VWpPoxPYvU+yoVpu2baGKBjgigWkzHgDUJ4wa3TZAXp3GKXENTYyBt
OU2Hwqc9A6t485Ilx0XxUOZRhAlVYFiIIYqYZYNqA23cB2VAfRn3smkSdopFUbyfVVaXIE+y571z
+/3beg29jxlInXi12pF1nKTk6YPkxbd0S163OYjVDgS9iLcvqXSjLb6B1q0qysylRbz7HoEajF6z
5JZoZVmZmncJn0V6S9TTwl1ayICkVXmd8DX06r9DDz9OWgU9IOlh1IRsk7bR0zUmfrFJymNAMOHC
af8uAGq+WX0QDLOJNfkzOez9bkmYF/FqRFWQoYBs012GOaNHpjagwQ1jX3pk9w7yliZR/lZEwNrb
Zp+mOxlpmoFgXHzpKX9sswLjIAAOpH/ADIjG5B0qi3Qz0qlg0xsVsB4o6XxfdEJopJZFNWKACM0R
gBZRFt54Mr8j4V+/e6TjeZwswgdrpoyOTxdoVa04Y7KTu2CSyfS47dAaU6fKIU87qDYYnKXdePMP
zBiogfL1nnydhOSlDBwMyJd5krbgNaYdoDfQWaBn0qRXMTBQx/s/7asIvPk4STB6AAHO0Ej7pPN6
ylSafRELS8h8s0w7uoJNlcCazeYOufzAANGDPehNnKyzTa8TWKdT5T60nCkZP1gLtxsrF9hh90W8
/E6uMWBQ4PUxiCQLVuhdgNUZ9G2VKTaQndLN6UALlChyrdC6wgDVBhxBJ4E19q7AcgoMRNFscjf1
XHjBF5olsF+jKPT+DC/j1NDpBkEf7ibO3L3MAmfQWWspXwQDUl5oFkOslRisYaGz/biAF7D+gnyF
89CaXXuxaDs3LkF/IzCs3na1QV4O7pI47FdEALOB8g9QSwMECgAAAAAAFZF7RgAAAAAAAAAAAAAA
ABUAHABjb21wb3NpdGluZy9jbGlwcGluZy9VVAkAAxr/FVUh/xVVdXgLAAEE9QEAAAQUAAAAUEsD
BAoAAgAAABWRe0b5mB5cLwAAAC8AAABRABwAY29tcG9zaXRpbmcvY2xpcHBpbmcvYm9yZGVyLXJh
ZGl1cy1vdmVyZmxvdy1oaWRkZW4tc3RhY2tpbmctY29udGV4dC1jcmFzaC1sb2cudHh0VVQJAAMa
/xVVGv8VVXV4CwABBPUBAAAEFAAAAE5vIGNyYXNoIGxvZyBmb3VuZCBmb3IgV2ViS2l0VGVzdFJ1
bm5lcjo1Mjk4OS4KUEsDBAoAAAAAABWRe0YAAAAAAAAAAAAAAAAbABwAY29tcG9zaXRpbmcvY29s
b3ItbWF0Y2hpbmcvVVQJAAMa/xVVIf8VVXV4CwABBPUBAAAEFAAAAFBLAwQKAAIAAAAVkXtGJK6x
6i8AAAAvAAAAPQAcAGNvbXBvc2l0aW5nL2NvbG9yLW1hdGNoaW5nL2ltYWdlLWNvbG9yLW1hdGNo
aW5nLWNyYXNoLWxvZy50eHRVVAkAAxr/FVUa/xVVdXgLAAEE9QEAAAQUAAAATm8gY3Jhc2ggbG9n
IGZvdW5kIGZvciBXZWJLaXRUZXN0UnVubmVyOjUyOTkxLgpQSwMECgAAAAAAFZF7RgAAAAAAAAAA
AAAAABQAHABjb21wb3NpdGluZy9jb2x1bW5zL1VUCQADGv8VVSH/FVV1eAsAAQT1AQAABBQAAABQ
SwMECgACAAAAFZF7Rkp6NekvAAAALwAAAD8AHABjb21wb3NpdGluZy9jb2x1bW5zL2FuY2VzdG9y
LWNsaXBwZWQtaW4tcGFnaW5hdGVkLWNyYXNoLWxvZy50eHRVVAkAAxr/FVUa/xVVdXgLAAEE9QEA
AAQUAAAATm8gY3Jhc2ggbG9nIGZvdW5kIGZvciBXZWJLaXRUZXN0UnVubmVyOjUyOTkzLgpQSwME
CgAAAAAAD5F7RgAAAAAAAAAAAAAAABwAHABjb21wb3NpdGluZy9jb250ZW50cy1vcGFxdWUvVVQJ
AAMN/xVVIf8VVXV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAAPkXtG2qKjL5IAAAD+AAAAOQAcAGNv
bXBvc2l0aW5nL2NvbnRlbnRzLW9wYXF1ZS9iYWNrZ3JvdW5kLWNsaXAtY3Jhc2gtbG9nLnR4dFVU
CQADDf8VVQ3/FVV1eAsAAQT1AQAABBQAAAC1zksKwjAQANC9p5idq5o2WpCurRuLQlBciJR8xjZQ
MjKTIr29XsJ3gtcaczENHG2cMEAmYLQB1uomyKLcHKfgKKsuOra8qI4GUYdoh0SSozf4Js6i7uhO
MV9RsplTQu51WdVFuS30rqh0vS91jx+pynrj2cq4buDRMicC/YQzgcx+hNdvAMQQIqPPxEvz98bq
C1BLAwQKAAAAAAAPkXtGAAAAAAAAAAAAAAAAGwAcAGNvbXBvc2l0aW5nL2NvbnRlbnRzLXNjYWxl
L1VUCQADDf8VVSH/FVV1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAD5F7RrKCfPGSAAAA/gAAADIA
HABjb21wb3NpdGluZy9jb250ZW50cy1zY2FsZS9hbmltYXRpbmctY3Jhc2gtbG9nLnR4dFVUCQAD
Df8VVQ3/FVV1eAsAAQT1AQAABBQAAAC1zkEKwjAQAMC7r9ibp5omWoSerReLQlA8iJSkWdtAycpu
ivT3+gnnBdNYe7E1HF2cMEAmYHQB1uomyKL8HKfgKas2ena8qJYGUYfohkSSY2/xTZxF3dGfYr6i
ZDunhNyZUldFuS3MrtCm2mvd4Ud0WW16djKua3g0zInAPOFMIHM/wus3AGIIkbHPxEv998bqC1BL
AwQKAAAAAAAVkXtGAAAAAAAAAAAAAAAAFAAcAGNvbXBvc2l0aW5nL2N1bGxpbmcvVVQJAAMa/xVV
If8VVXV4CwABBPUBAAAEFAAAAFBLAwQKAAIAAAAVkXtGnP+i5C8AAAAvAAAANAAcAGNvbXBvc2l0
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
aWJpbGl0eS1vYmplY3QtZGV0YWNoZWQtY3Jhc2gtbG9nLnR4dFVUBQADHv8VVXV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIABeRe0Y54Pk8wisAAPqNAABKABgAAAAAAAEAAACkgb6GAABhY2Nlc3Np
YmlsaXR5L2FkamFjZW50LWNvbnRpbnVhdGlvbnMtY2F1c2UtYXNzZXJ0aW9uLWZhaWx1cmUtY3Jh
c2gtbG9nLnR4dFVUBQADHv8VVXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAA+Re0YAAAAAAAAA
AAAAAAALABgAAAAAAAAAEADtQQSzAABhbmltYXRpb25zL1VUBQADDf8VVXV4CwABBPUBAAAEFAAA
AFBLAQIeAwoAAAAAAA6Re0YAAAAAAAAAAAAAAAAOABgAAAAAAAAAEADtQUmzAABhbmltYXRpb25z
LzNkL1VUBQADC/8VVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPSQe0ZjEmfNyC0AAL+bAAA5
ABgAAAAAAAEAAACkgZGzAABhbmltYXRpb25zLzNkL2NoYW5nZS10cmFuc2Zvcm0taW4tZW5kLWV2
ZW50LWNyYXNoLWxvZy50eHRVVAUAA9z+FVV1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAXkXtG
3h5P5sorAADGjAAAOwAYAAAAAAABAAAApIHM4QAAYW5pbWF0aW9ucy8zZC9tYXRyaXgtdHJhbnNm
b3JtLXR5cGUtYW5pbWF0aW9uLWNyYXNoLWxvZy50eHRVVAUAAx7/FVV1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAXkXtGISzpVdUrAABDjQAANQAYAAAAAAABAAAApIELDgEAYW5pbWF0aW9ucy8z
ZC9yZXBsYWNlLWZpbGxpbmctdHJhbnNmb3JtLWNyYXNoLWxvZy50eHRVVAUAAx7/FVV1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAAXkXtG+nK5GsErAAC2jQAAOAAYAAAAAAABAAAApIFPOgEAYW5p
bWF0aW9ucy8zZC9zdGF0ZS1hdC1lbmQtZXZlbnQtdHJhbnNmb3JtLWNyYXNoLWxvZy50eHRVVAUA
Ax7/FVV1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD1kHtGQt8o1tEtAACwnAAALgAYAAAAAAAB
AAAApIGCZgEAYW5pbWF0aW9ucy9hZGRlZC13aGlsZS1zdXNwZW5kZWQtY3Jhc2gtbG9nLnR4dFVU
BQAD3v4VVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABeRe0bYRWxbuysAAMWMAAA2ABgAAAAA
AAEAAACkgbuUAQBhbmltYXRpb25zL2FkZGl0aXZlLXRyYW5zZm9ybS1hbmltYXRpb25zLWNyYXNo
LWxvZy50eHRVVAUAAx7/FVV1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAXkXtGIiLz2cYrAAC2
jQAAOAAYAAAAAAABAAAApIHmwAEAYW5pbWF0aW9ucy9hbmltYXRpb24tYWRkLWV2ZW50cy1pbi1o
YW5kbGVyLWNyYXNoLWxvZy50eHRVVAUAAx7/FVV1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAX
kXtG2CC8D8IrAAD/jAAAMgAYAAAAAAABAAAApIEe7QEAYW5pbWF0aW9ucy9hbmltYXRpb24tYm9y
ZGVyLW92ZXJmbG93LWNyYXNoLWxvZy50eHRVVAUAAx7/FVV1eAsAAQT1AQAABBQAAABQSwECHgMK
AAAAAAAVkXtGAAAAAAAAAAAAAAAABwAYAAAAAAAAABAA7UFMGQIAY2FudmFzL1VUBQADGf8VVXV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAABWRe0YAAAAAAAAAAAAAAAAOABgAAAAAAAAAEADtQY0Z
AgBjYW52YXMvcGhpbGlwL1VUBQADGf8VVXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAABWRe0YA
AAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQdUZAgBjYW52YXMvcGhpbGlwL3Rlc3RzL1VUBQADGf8V
VXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAABWRe0alpeMOLwAAAC8AAAA0ABgAAAAAAAEAAACk
gSMaAgBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNhbnZhcy5yZWFkb25seS1jcmFzaC1sb2cudHh0
VVQFAAMZ/xVVdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAFZF7RgAAAAAAAAAAAAAAAAwAGAAA
AAAAAAAQAO1BwBoCAGNvbXBvc2l0aW5nL1VUBQADGv8VVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAPSQe0YgFWM+ry0AAEqcAAA7ABgAAAAAAAEAAACkgQYbAgBjb21wb3NpdGluZy9hYnNvbHV0
ZS1pbnNpZGUtb3V0LW9mLXZpZXctZml4ZWQtY3Jhc2gtbG9nLnR4dFVUBQAD2/4VVXV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIABeRe0bCr+OisisAALaNAABHABgAAAAAAAEAAACkgSpJAgBjb21w
b3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLWluLWNvbXBvc2l0ZWQtbGF5ZXItY3Jh
c2gtbG9nLnR4dFVUBQADHv8VVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABeRe0YP8ky1wSsA
AMWMAABQABgAAAAAAAEAAACkgV11AgBjb21wb3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFu
Z2VkLXdpdGgtY29tcG9zaXRlZC1wYXJlbnQtbGF5ZXItY3Jhc2gtbG9nLnR4dFVUBQADHv8VVXV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAA6Re0YAAAAAAAAAAAAAAAAWABgAAAAAAAAAEADtQaih
AgBjb21wb3NpdGluZy9hbmltYXRpb24vVVQFAAML/xVVdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgA9JB7Rqvyoo+tLQAAWZsAAEUAGAAAAAAAAQAAAKSB+KECAGNvbXBvc2l0aW5nL2FuaW1hdGlv
bi9hbmltYXRlZC1jb21wb3NpdGVkLWluc2lkZS1oaWRkZW4tY3Jhc2gtbG9nLnR4dFVUBQAD2/4V
VXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABeRe0aQ1eIOxysAAJeNAAA5ABgAAAAAAAEAAACk
gSTQAgBjb21wb3NpdGluZy9hbmltYXRpb24vYW5pbWF0aW9uLWNvbXBvc2l0aW5nLWNyYXNoLWxv
Zy50eHRVVAUAAx7/FVV1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAXkXtGho+MpMMrAADFjAAA
MgAYAAAAAAABAAAApIFe/AIAY29tcG9zaXRpbmcvYW5pbWF0aW9uL2J1c3ktaW5kaWNhdG9yLWNy
YXNoLWxvZy50eHRVVAUAAx7/FVV1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAXkXtG2mQJN5Qr
AADmiwAAPwAYAAAAAAABAAAApIGNKAMAY29tcG9zaXRpbmcvYW5pbWF0aW9uL2NvbXB1dGVkLXN0
eWxlLWR1cmluZy1kZWxheS1jcmFzaC1sb2cudHh0VVQFAAMe/xVVdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAAFZF7RgAAAAAAAAAAAAAAACAAGAAAAAAAAAAQAO1BmlQDAGNvbXBvc2l0aW5nL2Jh
Y2tmYWNlLXZpc2liaWxpdHkvVVQFAAMZ/xVVdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAFZF7
RkHJDVIvAAAALwAAAEQAGAAAAAAAAQAAAKSB9FQDAGNvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2li
aWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS0zZC1jcmFzaC1sb2cudHh0VVQFAAMZ/xVVdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAAFZF7RgAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BoVUDAGNv
bXBvc2l0aW5nL2JhY2tpbmcvVVQFAAMZ/xVVdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAFZF7
RvO1gFYvAAAALwAAADoAGAAAAAAAAQAAAKSB71UDAGNvbXBvc2l0aW5nL2JhY2tpbmcvYmFja2Zh
Y2UtdmlzaWJpbGl0eS1mbGlwLWNyYXNoLWxvZy50eHRVVAUAAxn/FVV1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAXkXtG3eIYpMArAAAJjQAAOAAYAAAAAAABAAAApIGSVgMAY29tcG9zaXRpbmcv
Ym91bmRzLWluLWZsaXBwZWQtd3JpdGluZy1tb2RlLWNyYXNoLWxvZy50eHRVVAUAAx7/FVV1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAAAVkXtGAAAAAAAAAAAAAAAAFQAYAAAAAAAAABAA7UHEggMA
Y29tcG9zaXRpbmcvY2xpcHBpbmcvVVQFAAMa/xVVdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAA
FZF7RvmYHlwvAAAALwAAAFEAGAAAAAAAAQAAAKSBE4MDAGNvbXBvc2l0aW5nL2NsaXBwaW5nL2Jv
cmRlci1yYWRpdXMtb3ZlcmZsb3ctaGlkZGVuLXN0YWNraW5nLWNvbnRleHQtY3Jhc2gtbG9nLnR4
dFVUBQADGv8VVXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAABWRe0YAAAAAAAAAAAAAAAAbABgA
AAAAAAAAEADtQc2DAwBjb21wb3NpdGluZy9jb2xvci1tYXRjaGluZy9VVAUAAxr/FVV1eAsAAQT1
AQAABBQAAABQSwECHgMKAAIAAAAVkXtGJK6x6i8AAAAvAAAAPQAYAAAAAAABAAAApIEihAMAY29t
cG9zaXRpbmcvY29sb3ItbWF0Y2hpbmcvaW1hZ2UtY29sb3ItbWF0Y2hpbmctY3Jhc2gtbG9nLnR4
dFVUBQADGv8VVXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAABWRe0YAAAAAAAAAAAAAAAAUABgA
AAAAAAAAEADtQciEAwBjb21wb3NpdGluZy9jb2x1bW5zL1VUBQADGv8VVXV4CwABBPUBAAAEFAAA
AFBLAQIeAwoAAgAAABWRe0ZKejXpLwAAAC8AAAA/ABgAAAAAAAEAAACkgRaFAwBjb21wb3NpdGlu
Zy9jb2x1bW5zL2FuY2VzdG9yLWNsaXBwZWQtaW4tcGFnaW5hdGVkLWNyYXNoLWxvZy50eHRVVAUA
Axr/FVV1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAPkXtGAAAAAAAAAAAAAAAAHAAYAAAAAAAA
ABAA7UG+hQMAY29tcG9zaXRpbmcvY29udGVudHMtb3BhcXVlL1VUBQADDf8VVXV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAA+Re0baoqMvkgAAAP4AAAA5ABgAAAAAAAEAAACkgRSGAwBjb21wb3Np
dGluZy9jb250ZW50cy1vcGFxdWUvYmFja2dyb3VuZC1jbGlwLWNyYXNoLWxvZy50eHRVVAUAAw3/
FVV1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAPkXtGAAAAAAAAAAAAAAAAGwAYAAAAAAAAABAA
7UEZhwMAY29tcG9zaXRpbmcvY29udGVudHMtc2NhbGUvVVQFAAMN/xVVdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAD5F7RrKCfPGSAAAA/gAAADIAGAAAAAAAAQAAAKSBbocDAGNvbXBvc2l0aW5n
L2NvbnRlbnRzLXNjYWxlL2FuaW1hdGluZy1jcmFzaC1sb2cudHh0VVQFAAMN/xVVdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgAAAAAAFZF7RgAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BbIgDAGNvbXBv
c2l0aW5nL2N1bGxpbmcvVVQFAAMa/xVVdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAFZF7Rpz/
ouQvAAAALwAAADQAGAAAAAAAAQAAAKSBuogDAGNvbXBvc2l0aW5nL2N1bGxpbmcvY2xlYXItZml4
ZWQtaWZyYW1lLWNyYXNoLWxvZy50eHRVVAUAAxr/FVV1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AAAVkXtGAAAAAAAAAAAAAAAAFgAYAAAAAAAAABAA7UFXiQMAY29tcG9zaXRpbmcvZnJhbWVzZXRz
L1VUBQADGv8VVXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAABWRe0YUhHFSLwAAAC8AAAA+ABgA
AAAAAAEAAACkgaeJAwBjb21wb3NpdGluZy9mcmFtZXNldHMvY29tcG9zaXRlZC1mcmFtZS1hbGln
bm1lbnQtY3Jhc2gtbG9nLnR4dFVUBQADGv8VVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABaR
e0a8ZX7NywAAAC4BAAANABgAAAAAAAEAAACkgU6KAwBlcnJvcl9sb2cudHh0VVQFAAMb/xVVdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAGJF7Rr4B5MQTAwAAQA0AABEAGAAAAAAAAQAAAKSBYIsD
AGZ1bGxfcmVzdWx0cy5qc29uVVQFAAMf/xVVdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA5JB7
RuqKfEJhBQAABQ8AAAoAGAAAAAAAAQAAAKSBvo4DAGh0dHBkLmNvbmZVVAUAA7z+FVV1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAADlkHtGAAAAAAAAAAAAAAAAKwAYAAAAAAAAAAAApIFjlAMAcHl3
ZWJzb2NrZXQud3MubG9nLTI3TWFyMjAxNS0xODA3MDktZXJyLnR4dFVUBQADvf4VVXV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAOWQe0YAAAAAAAAAAAAAAAArABgAAAAAAAAAAACkgciUAwBweXdl
YnNvY2tldC53cy5sb2ctMjdNYXIyMDE1LTE4MDcwOS1vdXQudHh0VVQFAAO9/hVVdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAGJF7RndMSBKlJgAA3KQAAAwAGAAAAAAAAQAAAKSBLZUDAHJlc3Vs
dHMuaHRtbFVUBQADIP8VVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABiRe0Ylpdr2lwMAAFIK
AAAKABgAAAAAAAEAAACkgRi8AwBzdGF0cy5qc29uVVQFAAMf/xVVdXgLAAEE9QEAAAQUAAAAUEsF
BgAAAAA3ADcA9RcAAPO/AwAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249630</attachid>
            <date>2015-03-27 18:37:47 -0700</date>
            <delta_ts>2015-03-27 19:17:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143158-20150327183708.patch</filename>
            <type>text/plain</type>
            <size>100825</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODIwODkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE1LTAzLTI3ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGlubGluZSBjYXBhY2l0eSB0
byBIYXNoU2V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQzMTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3dGYvSGFzaE1hcC5oOgorICAgICAgICAqIHd0Zi9IYXNoVGFibGUuaDoKKyAgICAgICAg
KiB3dGYvTGlzdEhhc2hTZXQuaDoKKyAgICAgICAgQWRkZWQgaW5saW5lQ2FwYWNpdHkgdGVtcGxh
dGUgcGFyYW1ldGVyLCB3aGljaCBpcyBjdXJyZW50bHkgdW51c2VkLgorICAgICAgICBUaGVyZSBz
aG91bGQgYmUgbm8gY2hhbmdlIGluIGJlaGF2aW9yLCAKKyAgICAgICAgZXhjZXB0IHRoYXQgSGFz
aFRhYmxlOjpjbGVhciBub3cgY29ycmVjdGx5IHNldHMgZGVsZXRlZENvdW50IHRvIDAuCisKIDIw
MTUtMDMtMjcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTdXBwb3J0IGJ1aWxkaW5nIFdURiBvbiBXaW5kb3dzIHdpdGhvdXQgQ3lnd2luCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
SGFzaE1hcC5oCShyZXZpc2lvbiAxODIwODkpCisrKyBTb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAx
MywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTMyLDcgKzMyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEtleVZhbHVl
UGFpcgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcs
IHR5cGVuYW1lIEhhc2hBcmcgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxLZXlBcmc+OjpIYXNoLAot
ICAgIHR5cGVuYW1lIEtleVRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8S2V5QXJnPiwgdHlwZW5hbWUg
TWFwcGVkVHJhaXRzQXJnID0gSGFzaFRyYWl0czxNYXBwZWRBcmc+PgorICAgIHR5cGVuYW1lIEtl
eVRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8S2V5QXJnPiwgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJn
ID0gSGFzaFRyYWl0czxNYXBwZWRBcmc+LCBzaXplX3QgaW5saW5lQ2FwYWNpdHkgPSAwPgogY2xh
c3MgSGFzaE1hcCBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwcml2YXRl
OgpAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaEFyZyBIYXNoRnVu
Y3Rpb25zOwogCiAgICAgdHlwZWRlZiBIYXNoVGFibGU8S2V5VHlwZSwgS2V5VmFsdWVQYWlyVHlw
ZSwgS2V5VmFsdWVQYWlyS2V5RXh0cmFjdG9yPEtleVZhbHVlUGFpclR5cGU+LAotICAgICAgICBI
YXNoRnVuY3Rpb25zLCBLZXlWYWx1ZVBhaXJUcmFpdHMsIEtleVRyYWl0cz4gSGFzaFRhYmxlVHlw
ZTsKKyAgICAgICAgSGFzaEZ1bmN0aW9ucywgS2V5VmFsdWVQYWlyVHJhaXRzLCBLZXlUcmFpdHMs
IGlubGluZUNhcGFjaXR5PiBIYXNoVGFibGVUeXBlOwogCiAgICAgY2xhc3MgSGFzaE1hcEtleXNQ
cm94eTsKICAgICBjbGFzcyBIYXNoTWFwVmFsdWVzUHJveHk7CkBAIC0xODgsOTggKzE4OCw5OCBA
QCBzdHJ1Y3QgSGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVyIHsKICAgICB9CiB9OwogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFt
ZSBYPgotaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6c3dhcChIYXNoTWFwJiBv
dGhlcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBW
LCBXLCBYLCBZPjo6c3dhcChIYXNoTWFwJiBvdGhlcikKIHsKICAgICBtX2ltcGwuc3dhcChvdGhl
ci5tX2ltcGwpOyAKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSB1bnNpZ25lZCBIYXNoTWFwPFQs
IFUsIFYsIFcsIFg+OjpzaXplKCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5l
IHVuc2lnbmVkIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OnNpemUoKSBjb25zdAogewogICAg
IHJldHVybiBtX2ltcGwuc2l6ZSgpOyAKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSB1bnNpZ25l
ZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpjYXBhY2l0eSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBz
aXplX3QgWT4KK2lubGluZSB1bnNpZ25lZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjpjYXBh
Y2l0eSgpIGNvbnN0CiB7IAogICAgIHJldHVybiBtX2ltcGwuY2FwYWNpdHkoKTsgCiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5
cGVuYW1lIFg+Ci1pbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojppc0VtcHR5KCkg
Y29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5lIGJvb2wgSGFzaE1hcDxULCBVLCBW
LCBXLCBYLCBZPjo6aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW1wbC5pc0VtcHR5
KCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5
cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjpiZWdpbigpIC0+IGl0ZXJhdG9yCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KK2lubGluZSBhdXRv
IEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmJlZ2luKCkgLT4gaXRlcmF0b3IKIHsKICAgICBy
ZXR1cm4gbV9pbXBsLmJlZ2luKCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNo
TWFwPFQsIFUsIFYsIFcsIFg+OjplbmQoKSAtPiBpdGVyYXRvcgordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90
IFk+CitpbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjplbmQoKSAtPiBpdGVy
YXRvcgogewogICAgIHJldHVybiBtX2ltcGwuZW5kKCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxp
bmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpiZWdpbigpIGNvbnN0IC0+IGNvbnN0X2l0
ZXJhdG9yCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBl
bmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KK2lubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwg
ViwgVywgWCwgWT46OmJlZ2luKCkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKIHsKICAgICByZXR1
cm4gbV9pbXBsLmJlZ2luKCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUs
IHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjplbmQoKSBjb25zdCAtPiBjb25zdF9pdGVyYXRvcgordGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUg
WCwgc2l6ZV90IFk+CitpbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjplbmQo
KSBjb25zdCAtPiBjb25zdF9pdGVyYXRvcgogewogICAgIHJldHVybiBtX2ltcGwuZW5kKCk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpmaW5k
KGNvbnN0IEtleVR5cGUmIGtleSkgLT4gaXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgor
aW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6ZmluZChjb25zdCBLZXlUeXBl
JiBrZXkpIC0+IGl0ZXJhdG9yCiB7CiAgICAgcmV0dXJuIG1faW1wbC5maW5kKGtleSk7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcs
IHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpmaW5kKGNv
bnN0IEtleVR5cGUmIGtleSkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNp
emVfdCBZPgoraW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6ZmluZChjb25z
dCBLZXlUeXBlJiBrZXkpIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yCiB7CiAgICAgcmV0dXJuIG1f
aW1wbC5maW5kKGtleSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYm9vbCBIYXNoTWFwPFQs
IFUsIFYsIFcsIFg+Ojpjb250YWlucyhjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFt
ZSBYLCBzaXplX3QgWT4KK2lubGluZSBib29sIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmNv
bnRhaW5zKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbXBsLmNv
bnRhaW5zKGtleSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KIHRl
bXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUWVBFPgotaW5saW5lIHR5
cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yCi1IYXNoTWFwPFQsIFUsIFYs
IFcsIFg+OjpmaW5kKGNvbnN0IFRZUEUmIHZhbHVlKQoraW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8
VCwgVSwgViwgVywgWCwgWT46Oml0ZXJhdG9yCitIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+Ojpm
aW5kKGNvbnN0IFRZUEUmIHZhbHVlKQogewogICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmlu
ZDxIYXNoTWFwVHJhbnNsYXRvckFkYXB0ZXI8S2V5VmFsdWVQYWlyVHJhaXRzLCBIYXNoVHJhbnNs
YXRvcj4+KHZhbHVlKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgog
dGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFRZUEU+Ci1pbmxpbmUg
dHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3IgCi1IYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjpmaW5kKGNvbnN0IFRZUEUmIHZhbHVlKSBjb25zdAoraW5saW5lIHR5
cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmNvbnN0X2l0ZXJhdG9yCitIYXNoTWFw
PFQsIFUsIFYsIFcsIFgsIFk+OjpmaW5kKGNvbnN0IFRZUEUmIHZhbHVlKSBjb25zdAogewogICAg
IHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmluZDxIYXNoTWFwVHJhbnNsYXRvckFkYXB0ZXI8S2V5
VmFsdWVQYWlyVHJhaXRzLCBIYXNoVHJhbnNsYXRvcj4+KHZhbHVlKTsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUg
WD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgogdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0
b3IsIHR5cGVuYW1lIFRZUEU+Ci1pbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpj
b250YWlucyhjb25zdCBUWVBFJiB2YWx1ZSkgY29uc3QKK2lubGluZSBib29sIEhhc2hNYXA8VCwg
VSwgViwgVywgWCwgWT46OmNvbnRhaW5zKGNvbnN0IFRZUEUmIHZhbHVlKSBjb25zdAogewogICAg
IHJldHVybiBtX2ltcGwudGVtcGxhdGUgY29udGFpbnM8SGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVy
PEtleVZhbHVlUGFpclRyYWl0cywgSGFzaFRyYW5zbGF0b3I+Pih2YWx1ZSk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJn
LCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KK3RlbXBs
YXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJn
LCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZywgc2l6ZV90
IGlubGluZUNhcGFjaXR5PgogdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLWF1dG8g
SGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRU
cmFpdHNBcmc+OjppbmxpbmVTZXQoSyYmIGtleSwgViYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKK2F1
dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBw
ZWRUcmFpdHNBcmcsIGlubGluZUNhcGFjaXR5Pjo6aW5saW5lU2V0KEsmJiBrZXksIFYmJiB2YWx1
ZSkgLT4gQWRkUmVzdWx0CiB7CiAgICAgQWRkUmVzdWx0IHJlc3VsdCA9IGlubGluZUFkZChzdGQ6
OmZvcndhcmQ8Sz4oa2V5KSwgc3RkOjpmb3J3YXJkPFY+KHZhbHVlKSk7CiAgICAgaWYgKCFyZXN1
bHQuaXNOZXdFbnRyeSkgewpAQCAtMjg5LDY0ICsyODksNjQgQEAgYXV0byBIYXNoTWFwPEtleUFy
ZywgTWFwcGVkQXJnLCBIYXNoQXJnLAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0
eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KK3RlbXBsYXRl
PHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0
eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZywgc2l6ZV90IGlu
bGluZUNhcGFjaXR5PgogdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLUFMV0FZU19J
TkxJTkUgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNB
cmcsIE1hcHBlZFRyYWl0c0FyZz46OmlubGluZUFkZChLJiYga2V5LCBWJiYgdmFsdWUpIC0+IEFk
ZFJlc3VsdAorQUxXQVlTX0lOTElORSBhdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhh
c2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnLCBpbmxpbmVDYXBhY2l0eT46Omlu
bGluZUFkZChLJiYga2V5LCBWJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAogewogICAgIHJldHVybiBt
X2ltcGwudGVtcGxhdGUgYWRkPEhhc2hNYXBUcmFuc2xhdG9yPEtleVZhbHVlUGFpclRyYWl0cywg
SGFzaEZ1bmN0aW9ucz4+KHN0ZDo6Zm9yd2FyZDxLPihrZXkpLCBzdGQ6OmZvcndhcmQ8Vj4odmFs
dWUpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcs
IHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVk
VHJhaXRzQXJnPgordGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcs
IHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVk
VHJhaXRzQXJnLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
YXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1h
cHBlZFRyYWl0c0FyZz46OnNldChjb25zdCBLZXlUeXBlJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFk
ZFJlc3VsdAorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFp
dHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgaW5saW5lQ2FwYWNpdHk+OjpzZXQoY29uc3QgS2V5VHlw
ZSYga2V5LCBUJiYgbWFwcGVkKSAtPiBBZGRSZXN1bHQKIHsKICAgICByZXR1cm4gaW5saW5lU2V0
KGtleSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5
VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5
VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eT4KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1hdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcs
IEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6c2V0KEtleVR5cGUmJiBr
ZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVk
QXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgaW5saW5lQ2FwYWNp
dHk+OjpzZXQoS2V5VHlwZSYmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CiB7CiAgICAg
cmV0dXJuIGlubGluZVNldChXVEY6Om1vdmUoa2V5KSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkp
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlw
ZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFp
dHNBcmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlw
ZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFp
dHNBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFu
c2xhdG9yLCB0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgotYXV0byBIYXNoTWFwPEtleUFyZywgTWFw
cGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChLJiYg
a2V5LCBWJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVk
QXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgaW5saW5lQ2FwYWNp
dHk+OjphZGQoSyYmIGtleSwgViYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKICAgICByZXR1cm4g
bV9pbXBsLnRlbXBsYXRlIGFkZFBhc3NpbmdIYXNoQ29kZTxIYXNoTWFwVHJhbnNsYXRvckFkYXB0
ZXI8S2V5VmFsdWVQYWlyVHJhaXRzLCBIYXNoVHJhbnNsYXRvcj4+KHN0ZDo6Zm9yd2FyZDxLPihr
ZXkpLCBzdGQ6OmZvcndhcmQ8Vj4odmFsdWUpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgS2V5
QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRy
YWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgordGVtcGxhdGU8dHlwZW5hbWUgS2V5
QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRy
YWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBI
YXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChjb25zdCBLZXlUeXBl
JiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAorYXV0byBIYXNoTWFwPEtleUFyZywgTWFw
cGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgaW5saW5lQ2Fw
YWNpdHk+OjphZGQoY29uc3QgS2V5VHlwZSYga2V5LCBUJiYgbWFwcGVkKSAtPiBBZGRSZXN1bHQK
IHsKICAgICByZXR1cm4gaW5saW5lQWRkKGtleSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5h
bWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNB
cmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5h
bWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNB
cmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1hdXRvIEhh
c2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJh
aXRzQXJnPjo6YWRkKEtleVR5cGUmJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAorYXV0
byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBl
ZFRyYWl0c0FyZywgaW5saW5lQ2FwYWNpdHk+OjphZGQoS2V5VHlwZSYmIGtleSwgVCYmIG1hcHBl
ZCkgLT4gQWRkUmVzdWx0CiB7CiAgICAgcmV0dXJuIGlubGluZUFkZChXVEY6Om1vdmUoa2V5KSwg
c3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcs
IHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRz
QXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcs
IHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRz
QXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1h
cHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjpmYXN0QWRk
KGNvbnN0IEtleVR5cGUmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CitBTFdBWVNfSU5M
SU5FIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJn
LCBNYXBwZWRUcmFpdHNBcmcsIGlubGluZUNhcGFjaXR5Pjo6ZmFzdEFkZChjb25zdCBLZXlUeXBl
JiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAogewogICAgIHJldHVybiBpbmxpbmVBZGQo
a2V5LCBzdGQ6OmZvcndhcmQ8VD4obWFwcGVkKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEtl
eUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlU
cmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KK3RlbXBsYXRlPHR5cGVuYW1lIEtl
eUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlU
cmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZywgc2l6ZV90IGlubGluZUNhcGFjaXR5
PgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgYXV0byBIYXNoTWFwPEtleUFy
ZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmZh
c3RBZGQoS2V5VHlwZSYmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CitBTFdBWVNfSU5M
SU5FIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJn
LCBNYXBwZWRUcmFpdHNBcmcsIGlubGluZUNhcGFjaXR5Pjo6ZmFzdEFkZChLZXlUeXBlJiYga2V5
LCBUJiYgbWFwcGVkKSAtPiBBZGRSZXN1bHQKIHsKICAgICByZXR1cm4gaW5saW5lQWRkKFdURjo6
bW92ZShrZXkpLCBzdGQ6OmZvcndhcmQ8VD4obWFwcGVkKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIE1hcHBl
ZFRyYWl0cz4KLWF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+OjpnZXQoY29u
c3QgS2V5VHlwZSYga2V5KSBjb25zdCAtPiBNYXBwZWRQZWVrVHlwZQordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6
ZV90IFk+CithdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmdldChjb25zdCBLZXlUeXBl
JiBrZXkpIGNvbnN0IC0+IE1hcHBlZFBlZWtUeXBlCiB7CiAgICAgS2V5VmFsdWVQYWlyVHlwZSog
ZW50cnkgPSBjb25zdF9jYXN0PEhhc2hUYWJsZVR5cGUmPihtX2ltcGwpLmxvb2t1cChrZXkpOwog
ICAgIGlmICghZW50cnkpCkBAIC0zNTQsOCArMzU0LDggQEAgYXV0byBIYXNoTWFwPFQsIFUsIFYs
IFcsIE1hcHBlZFRyYWl0cz46OgogICAgIHJldHVybiBNYXBwZWRUcmFpdHM6OnBlZWsoZW50cnkt
PnZhbHVlKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
ViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSBib29sIEhhc2hNYXA8VCwgVSwgViwg
VywgWD46OnJlbW92ZShpdGVyYXRvciBpdCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5l
IGJvb2wgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQogewog
ICAgIGlmIChpdC5tX2ltcGwgPT0gbV9pbXBsLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zNjQsMjcgKzM2NCwyNyBAQCBpbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjpyZW1vCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBz
aXplX3QgWT4KIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci1pbmxpbmUgdm9pZCBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjpyZW1vdmVJZihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoraW5saW5l
IHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6cmVtb3ZlSWYoY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikKIHsKICAgICBtX2ltcGwucmVtb3ZlSWYoZnVuY3Rvcik7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1l
IFg+Ci1pbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpyZW1vdmUoY29uc3QgS2V5
VHlwZSYga2V5KQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwg
dHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+CitpbmxpbmUgYm9vbCBIYXNoTWFwPFQs
IFUsIFYsIFcsIFgsIFk+OjpyZW1vdmUoY29uc3QgS2V5VHlwZSYga2V5KQogewogICAgIHJldHVy
biByZW1vdmUoZmluZChrZXkpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSB2b2lkIEhhc2hN
YXA8VCwgVSwgViwgVywgWD46OmNsZWFyKCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5l
IHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6Y2xlYXIoKQogewogICAgIG1faW1wbC5j
bGVhcigpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
LCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHM+Ci1hdXRvIEhhc2hNYXA8VCwgVSwg
ViwgVywgTWFwcGVkVHJhaXRzPjo6dGFrZShjb25zdCBLZXlUeXBlJiBrZXkpIC0+IE1hcHBlZFR5
cGUKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgorYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+
Ojp0YWtlKGNvbnN0IEtleVR5cGUmIGtleSkgLT4gTWFwcGVkVHlwZQogewogICAgIGl0ZXJhdG9y
IGl0ID0gZmluZChrZXkpOwogICAgIGlmIChpdCA9PSBlbmQoKSkKQEAgLTM5NCwzMCArMzk0LDMw
IEBAIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+OjoKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KIHRlbXBsYXRl
PHR5cGVuYW1lIEs+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpmaW5kKHR5
cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSBrZXkpIC0+IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVlLCBpdGVyYXRvcj46OnR5cGUKK2lubGluZSBhdXRv
IEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmZpbmQodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+
OjpQdHJUeXBlIGtleSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6
dmFsdWUsIGl0ZXJhdG9yPjo6dHlwZQogewogICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmlu
ZDxIYXNoTWFwVHJhbnNsYXRvcjxLZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+Pihr
ZXkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0
eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBLPgotaW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZmluZCh0eXBl
bmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUga2V5KSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgY29uc3RfaXRlcmF0b3I+Ojp0eXBlCitp
bmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjpmaW5kKHR5cGVuYW1lIEdldFB0
ckhlbHBlcjxLPjo6UHRyVHlwZSBrZXkpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PElzU21hcnRQdHI8Sz46OnZhbHVlLCBjb25zdF9pdGVyYXRvcj46OnR5cGUKIHsKICAgICByZXR1
cm4gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8SGFzaE1hcFRyYW5zbGF0b3I8S2V5VmFsdWVQYWlyVHJh
aXRzLCBIYXNoRnVuY3Rpb25zPj4oa2V5KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgs
IHNpemVfdCBZPgogdGVtcGxhdGU8dHlwZW5hbWUgSz4KLWlubGluZSBhdXRvIEhhc2hNYXA8VCwg
VSwgViwgVywgWD46OmNvbnRhaW5zKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSBr
ZXkpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVl
LCBib29sPjo6dHlwZQoraW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6Y29u
dGFpbnModHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBlIGtleSkgY29uc3QgLT4gdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6dmFsdWUsIGJvb2w+Ojp0eXBlCiB7
CiAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBjb250YWluczxIYXNoTWFwVHJhbnNsYXRvcjxL
ZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+PihrZXkpOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBY
PgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUg
VywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBLPgotaW5saW5lIGF1
dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aW5saW5lR2V0KHR5cGVuYW1lIEdldFB0ckhlbHBl
cjxLPjo6UHRyVHlwZSBrZXkpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21h
cnRQdHI8Sz46OnZhbHVlLCBNYXBwZWRQZWVrVHlwZT46OnR5cGUKK2lubGluZSBhdXRvIEhhc2hN
YXA8VCwgVSwgViwgVywgWCwgWT46OmlubGluZUdldCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46
OlB0clR5cGUga2V5KSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRy
PEs+Ojp2YWx1ZSwgTWFwcGVkUGVla1R5cGU+Ojp0eXBlCiB7CiAgICAgS2V5VmFsdWVQYWlyVHlw
ZSogZW50cnkgPSBjb25zdF9jYXN0PEhhc2hUYWJsZVR5cGUmPihtX2ltcGwpLnRlbXBsYXRlIGxv
b2t1cDxIYXNoTWFwVHJhbnNsYXRvcjxLZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+
PihrZXkpOwogICAgIGlmICghZW50cnkpCkBAIC00MjUsMjMgKzQyNSwyMyBAQCBpbmxpbmUgYXV0
byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjppbmxpCiAgICAgcmV0dXJuIE1hcHBlZFRyYWl0czo6
cGVlayhlbnRyeS0+dmFsdWUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90
IFk+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBLPgotYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpn
ZXQodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBlIGtleSkgY29uc3QgLT4gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6dmFsdWUsIE1hcHBlZFBlZWtUeXBlPjo6
dHlwZQorYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjpnZXQodHlwZW5hbWUgR2V0UHRy
SGVscGVyPEs+OjpQdHJUeXBlIGtleSkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
SXNTbWFydFB0cjxLPjo6dmFsdWUsIE1hcHBlZFBlZWtUeXBlPjo6dHlwZQogewogICAgIHJldHVy
biBpbmxpbmVHZXQoa2V5KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZ
PgogdGVtcGxhdGU8dHlwZW5hbWUgSz4KLWlubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywg
WD46OnJlbW92ZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUga2V5KSAtPiB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgYm9vbD46OnR5cGUKK2lu
bGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OnJlbW92ZSh0eXBlbmFtZSBHZXRQ
dHJIZWxwZXI8Sz46OlB0clR5cGUga2V5KSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1Nt
YXJ0UHRyPEs+Ojp2YWx1ZSwgYm9vbD46OnR5cGUKIHsKICAgICByZXR1cm4gcmVtb3ZlKGZpbmQo
a2V5KSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KIHRlbXBsYXRl
PHR5cGVuYW1lIEs+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojp0YWtlKHR5
cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSBrZXkpIC0+IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVlLCBNYXBwZWRUeXBlPjo6dHlwZQoraW5saW5lIGF1
dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6dGFrZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8
Sz46OlB0clR5cGUga2V5KSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+
Ojp2YWx1ZSwgTWFwcGVkVHlwZT46OnR5cGUKIHsKICAgICBpdGVyYXRvciBpdCA9IGZpbmQoa2V5
KTsKICAgICBpZiAoaXQgPT0gZW5kKCkpCkBAIC00NTEsMTQgKzQ1MSwxNCBAQCBpbmxpbmUgYXV0
byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojp0YWtlCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0
eXBlbmFtZSBYPgotaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y2hlY2tDb25z
aXN0ZW5jeSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KK2lubGluZSB2b2lkIEhhc2hN
YXA8VCwgVSwgViwgVywgWCwgWT46OmNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogewogICAgIG1f
aW1wbC5jaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSBi
b29sIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmlzVmFsaWRLZXkoY29uc3QgS2V5VHlwZSYga2V5
KQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUg
VywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+CitpbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcs
IFgsIFk+Ojppc1ZhbGlkS2V5KGNvbnN0IEtleVR5cGUmIGtleSkKIHsKICAgICBpZiAoS2V5VHJh
aXRzOjppc0RlbGV0ZWRWYWx1ZShrZXkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NzQs
MTMgKzQ3NCwxMyBAQCBpbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojppc1ZhCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1ib29sIG9wZXJhdG9yPT0oY29uc3Qg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgYSwgY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYg
YikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgorYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhc2hNYXA8
VCwgVSwgViwgVywgWCwgWT4mIGEsIGNvbnN0IEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT4mIGIp
CiB7CiAgICAgaWYgKGEuc2l6ZSgpICE9IGIuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNvbnN0X2l0
ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBV
LCBWLCBXLCBYLCBZPjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CiAKICAgICBjb25z
dF9pdGVyYXRvciBlbmQgPSBhLmVuZCgpOwogICAgIGNvbnN0X2l0ZXJhdG9yIG5vdEZvdW5kID0g
Yi5lbmQoKTsKQEAgLTQ5MywxNiArNDkzLDE2IEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNo
TWFwPFQsIFUsIFYsIFcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgYSwgY29uc3Qg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgYikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+JiBhLCBjb25z
dCBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+JiBiKQogewogICAgIHJldHVybiAhKGEgPT0gYik7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+Ci1pbmxpbmUgdm9pZCBjb3B5VG9WZWN0b3Io
Y29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgY29sbGVjdGlvbiwgWSYgdmVjdG9yKQordGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlw
ZW5hbWUgWCwgc2l6ZV90IFksIHR5cGVuYW1lIFo+CitpbmxpbmUgdm9pZCBjb3B5VG9WZWN0b3Io
Y29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPiYgY29sbGVjdGlvbiwgWiYgdmVjdG9yKQog
ewotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRl
cmF0b3IgaXRlcmF0b3I7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcs
IFgsIFk+Ojpjb25zdF9pdGVyYXRvciBpdGVyYXRvcjsKIAogICAgIHZlY3Rvci5yZXNpemUoY29s
bGVjdGlvbi5zaXplKCkpOwogCkBAIC01MTIsMTAgKzUxMiwxMCBAQCBpbmxpbmUgdm9pZCBjb3B5
VG9WZWN0b3IoY29uc3QgSGFzaE1hcDxUCiAgICAgICAgIHZlY3RvcltpXSA9IHsgKCppdCkua2V5
LCAoKml0KS52YWx1ZSB9OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgotaW5saW5lIHZv
aWQgY29weUtleXNUb1ZlY3Rvcihjb25zdCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+JiBjb2xsZWN0
aW9uLCBZJiB2ZWN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWSwgdHlwZW5hbWUgWj4KK2lubGlu
ZSB2b2lkIGNvcHlLZXlzVG9WZWN0b3IoY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPiYg
Y29sbGVjdGlvbiwgWiYgdmVjdG9yKQogewotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxU
LCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3I6OktleXMgaXRlcmF0b3I7CisgICAgdHlwZWRl
ZiB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+Ojpjb25zdF9pdGVyYXRvcjo6S2V5
cyBpdGVyYXRvcjsKICAgICAKICAgICB2ZWN0b3IucmVzaXplKGNvbGxlY3Rpb24uc2l6ZSgpKTsK
ICAgICAKQEAgLTUyNSwxMCArNTI1LDEwIEBAIGlubGluZSB2b2lkIGNvcHlLZXlzVG9WZWN0b3Io
Y29uc3QgSGFzaE0KICAgICAgICAgdmVjdG9yW2ldID0gKml0OwogfSAgCiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgs
IHR5cGVuYW1lIFk+Ci1pbmxpbmUgdm9pZCBjb3B5VmFsdWVzVG9WZWN0b3IoY29uc3QgSGFzaE1h
cDxULCBVLCBWLCBXLCBYPiYgY29sbGVjdGlvbiwgWSYgdmVjdG9yKQordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6
ZV90IFksIHR5cGVuYW1lIFo+CitpbmxpbmUgdm9pZCBjb3B5VmFsdWVzVG9WZWN0b3IoY29uc3Qg
SGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPiYgY29sbGVjdGlvbiwgWiYgdmVjdG9yKQogewotICAg
IHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3I6
OlZhbHVlcyBpdGVyYXRvcjsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwg
VywgWCwgWT46OmNvbnN0X2l0ZXJhdG9yOjpWYWx1ZXMgaXRlcmF0b3I7CiAgICAgCiAgICAgdmVj
dG9yLnJlc2l6ZShjb2xsZWN0aW9uLnNpemUoKSk7CiAgICAgCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9IYXNoU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvSGFzaFNldC5oCShyZXZp
c2lvbiAxODIwODkpCisrKyBTb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4LCAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMwLDEwICsz
MCwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHN0cnVjdCBJZGVudGl0eUV4dHJhY3RvcjsK
ICAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzPiBjbGFzcyBIYXNoU2V0OworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4gY2xhc3MgSGFzaFNldDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZh
bHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8VmFsdWVBcmc+
OjpIYXNoLAotICAgICAgICB0eXBlbmFtZSBUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFZhbHVlQXJn
Pj4gY2xhc3MgSGFzaFNldCBmaW5hbCB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcs
IHR5cGVuYW1lIEhhc2hBcmcgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxWYWx1ZUFyZz46Okhhc2gs
IHR5cGVuYW1lIFRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8VmFsdWVBcmc+LCBzaXplX3QgaW5saW5l
Q2FwYWNpdHkgPSAwPgorICAgIGNsYXNzIEhhc2hTZXQgZmluYWwgewogICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBwcml2YXRlOgogICAgICAgICB0eXBlZGVmIEhhc2hBcmcg
SGFzaEZ1bmN0aW9uczsKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxWYWx1ZVR5cGUsIFZhbHVlVHlwZSwg
SWRlbnRpdHlFeHRyYWN0b3IsCi0gICAgICAgICAgICBIYXNoRnVuY3Rpb25zLCBWYWx1ZVRyYWl0
cywgVmFsdWVUcmFpdHM+IEhhc2hUYWJsZVR5cGU7CisgICAgICAgICAgICBIYXNoRnVuY3Rpb25z
LCBWYWx1ZVRyYWl0cywgVmFsdWVUcmFpdHMsIGlubGluZUNhcGFjaXR5PiBIYXNoVGFibGVUeXBl
OwogCiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JB
ZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4gaXRlcmF0b3I7CkBAIC0xNDIsOTAgKzE0
Miw5MCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSB2b2lkIEhh
c2hTZXQ8VCwgVSwgVj46OnN3YXAoSGFzaFNldCYgb3RoZXIpCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6ZV90IFc+CisgICAgaW5saW5lIHZvaWQg
SGFzaFNldDxULCBVLCBWLCBXPjo6c3dhcChIYXNoU2V0JiBvdGhlcikKICAgICB7CiAgICAgICAg
IG1faW1wbC5zd2FwKG90aGVyLm1faW1wbCk7IAogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAgaW5saW5lIHVuc2lnbmVkIEhhc2hT
ZXQ8VCwgVSwgVj46OnNpemUoKSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFYsIHNpemVfdCBXPgorICAgIGlubGluZSB1bnNpZ25lZCBIYXNoU2V0
PFQsIFUsIFYsIFc+OjpzaXplKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwu
c2l6ZSgpOyAKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWPgotICAgIGlubGluZSB1bnNpZ25lZCBIYXNoU2V0PFQsIFUsIFY+OjpjYXBhY2l0
eSgpIGNvbnN0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
Viwgc2l6ZV90IFc+CisgICAgaW5saW5lIHVuc2lnbmVkIEhhc2hTZXQ8VCwgVSwgViwgVz46OmNh
cGFjaXR5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwuY2FwYWNpdHkoKTsg
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
Vj4KLSAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+Ojppc0VtcHR5KCkgY29uc3QKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4K
KyAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFYsIFc+Ojppc0VtcHR5KCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwuaXNFbXB0eSgpOyAKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBhdXRv
IEhhc2hTZXQ8VCwgVSwgVj46OmJlZ2luKCkgY29uc3QgLT4gaXRlcmF0b3IKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KKyAgICBpbmxp
bmUgYXV0byBIYXNoU2V0PFQsIFUsIFYsIFc+OjpiZWdpbigpIGNvbnN0IC0+IGl0ZXJhdG9yCiAg
ICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLmJlZ2luKCk7IAogICAgIH0KIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAgaW5saW5lIGF1dG8g
SGFzaFNldDxULCBVLCBWPjo6ZW5kKCkgY29uc3QgLT4gaXRlcmF0b3IKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KKyAgICBpbmxpbmUg
YXV0byBIYXNoU2V0PFQsIFUsIFYsIFc+OjplbmQoKSBjb25zdCAtPiBpdGVyYXRvcgogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1faW1wbC5lbmQoKTsgCiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgYXV0byBIYXNoU2V0
PFQsIFUsIFY+OjpmaW5kKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNvbnN0IC0+IGl0ZXJhdG9y
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6ZV90
IFc+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWLCBXPjo6ZmluZChjb25zdCBWYWx1
ZVR5cGUmIHZhbHVlKSBjb25zdCAtPiBpdGVyYXRvcgogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
aW1wbC5maW5kKHZhbHVlKTsgCiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+Ojpj
b250YWlucyhjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHNpemVfdCBXPgorICAgIGlubGluZSBib29s
IEhhc2hTZXQ8VCwgVSwgViwgVz46OmNvbnRhaW5zKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLmNvbnRhaW5zKHZhbHVlKTsgCiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+Ci0gICAgaW5s
aW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6ZmluZChjb25z
dCBUJiB2YWx1ZSkgY29uc3QgLT4gaXRlcmF0b3IKKyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFZh
bHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6ZmluZChjb25zdCBU
JiB2YWx1ZSkgY29uc3QgLT4gaXRlcmF0b3IKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwu
dGVtcGxhdGUgZmluZDxIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2
YWx1ZSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1l
IFQ+Ci0gICAgaW5saW5lIGJvb2wgSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
Pjo6Y29udGFpbnMoY29uc3QgVCYgdmFsdWUpIGNvbnN0CisgICAgaW5saW5lIGJvb2wgSGFzaFNl
dDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmNvbnRhaW5z
KGNvbnN0IFQmIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1w
bGF0ZSBjb250YWluczxIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2
YWx1ZSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgVj4KLSAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFQsIFUsIFY+OjphZGQoY29uc3QgVmFs
dWVUeXBlJiB2YWx1ZSkgLT4gQWRkUmVzdWx0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6ZV90IFc+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxU
LCBVLCBWLCBXPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIC0+IEFkZFJlc3VsdAogICAg
IHsKICAgICAgICAgcmV0dXJuIG1faW1wbC5hZGQodmFsdWUpOwogICAgIH0KIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAgaW5saW5lIGF1dG8g
SGFzaFNldDxULCBVLCBWPjo6YWRkKFZhbHVlVHlwZSYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4K
KyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFQsIFUsIFYsIFc+OjphZGQoVmFsdWVUeXBlJiYgdmFs
dWUpIC0+IEFkZFJlc3VsdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC5hZGQoV1RGOjpt
b3ZlKHZhbHVlKSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5
cGVuYW1lIFQ+Ci0gICAgaW5saW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzPjo6YWRkKGNvbnN0IFQmIHZhbHVlKSAtPiBBZGRSZXN1bHQKKyAgICBpbmxpbmUgYXV0
byBIYXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6
YWRkKGNvbnN0IFQmIHZhbHVlKSAtPiBBZGRSZXN1bHQKICAgICB7CiAgICAgICAgIHJldHVybiBt
X2ltcGwudGVtcGxhdGUgYWRkUGFzc2luZ0hhc2hDb2RlPEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRl
cjxIYXNoVHJhbnNsYXRvcj4+KHZhbHVlLCB2YWx1ZSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBJdGVyYXRvclR5cGU+Ci0gICAgaW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBWPjo6YWRk
KEl0ZXJhdG9yVHlwZSBiZWdpbiwgSXRlcmF0b3JUeXBlIGVuZCkKKyAgICBpbmxpbmUgYm9vbCBI
YXNoU2V0PFQsIFUsIFYsIFc+OjphZGQoSXRlcmF0b3JUeXBlIGJlZ2luLCBJdGVyYXRvclR5cGUg
ZW5kKQogICAgIHsKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIGZvciAo
SXRlcmF0b3JUeXBlIGl0ZXIgPSBiZWdpbjsgaXRlciAhPSBlbmQ7ICsraXRlcikKQEAgLTIzMyw4
ICsyMzMsOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAg
ICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6ZV90IFc+Cisg
ICAgaW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBWLCBXPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQog
ICAgIHsKICAgICAgICAgaWYgKGl0Lm1faW1wbCA9PSBtX2ltcGwuZW5kKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0yNDMsMjAgKzI0MywyMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+Ojpy
ZW1vdmUoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KKyAgICBpbmxpbmUgYm9vbCBIYXNoU2V0
PFQsIFUsIFYsIFc+OjpyZW1vdmUoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiByZW1vdmUoZmluZCh2YWx1ZSkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAgaW5saW5lIHZvaWQgSGFzaFNl
dDxULCBVLCBWPjo6Y2xlYXIoKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUs
IHR5cGVuYW1lIFYsIHNpemVfdCBXPgorICAgIGlubGluZSB2b2lkIEhhc2hTZXQ8VCwgVSwgViwg
Vz46OmNsZWFyKCkKICAgICB7CiAgICAgICAgIG1faW1wbC5jbGVhcigpOyAKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGlu
ZSBhdXRvIEhhc2hTZXQ8VCwgVSwgVj46OnRha2UoaXRlcmF0b3IgaXQpIC0+IFZhbHVlVHlwZQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHNpemVfdCBX
PgorICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VCwgVSwgViwgVz46OnRha2UoaXRlcmF0b3IgaXQp
IC0+IFZhbHVlVHlwZQogICAgIHsKICAgICAgICAgaWYgKGl0ID09IGVuZCgpKQogICAgICAgICAg
ICAgcmV0dXJuIFZhbHVlVHJhaXRzOjplbXB0eVZhbHVlKCk7CkBAIC0yNjYsNDggKzI2Niw0OCBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBh
dXRvIEhhc2hTZXQ8VCwgVSwgVj46OnRha2UoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gVmFs
dWVUeXBlCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwg
c2l6ZV90IFc+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWLCBXPjo6dGFrZShjb25z
dCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBWYWx1ZVR5cGUKICAgICB7CiAgICAgICAgIHJldHVybiB0
YWtlKGZpbmQodmFsdWUpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VCwgVSwgVj46OnRh
a2VBbnkoKSAtPiBWYWx1ZVR5cGUKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KKyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFQsIFUsIFYs
IFc+Ojp0YWtlQW55KCkgLT4gVmFsdWVUeXBlCiAgICAgewogICAgICAgICByZXR1cm4gdGFrZShi
ZWdpbigpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHNpemVfdCBpbmxp
bmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPgotICAgIGlubGluZSBhdXRvIEhh
c2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmZpbmQodHlwZW5hbWUgR2V0UHRy
SGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgaXRlcmF0b3I+Ojp0eXBlCisgICAgaW5saW5lIGF1dG8g
SGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmZp
bmQodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSBjb25zdCAtPiB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgaXRlcmF0b3I+Ojp0eXBl
CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8SGFzaFNldFRyYW5z
bGF0b3I8SGFzaEZ1bmN0aW9ucz4+KHZhbHVlKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBW
PgotICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46
OmNvbnRhaW5zKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgY29uc3Qg
LT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0
eXBlCisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBpbmxpbmVDYXBhY2l0eT46OmNvbnRhaW5zKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRy
VHlwZSB2YWx1ZSkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxW
Pjo6dmFsdWUsIGJvb2w+Ojp0eXBlCiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBs
YXRlIGNvbnRhaW5zPEhhc2hTZXRUcmFuc2xhdG9yPEhhc2hGdW5jdGlvbnM+Pih2YWx1ZSk7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFZhbHVl
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpyZW1vdmUodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+
OjpQdHJUeXBlIHZhbHVlKSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+
Ojp2YWx1ZSwgYm9vbD46OnR5cGUKKyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFZhbHVlLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6cmVtb3ZlKHR5cGVuYW1lIEdldFB0
ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNT
bWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0eXBlCiAgICAgewogICAgICAgICByZXR1cm4gcmVt
b3ZlKGZpbmQodmFsdWUpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPgotICAgIGlubGlu
ZSBhdXRvIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OnRha2UodHlwZW5h
bWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgVmFsdWVUeXBlPjo6dHlwZQorICAgIGlubGluZSBh
dXRvIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgaW5saW5lQ2FwYWNpdHk+
Ojp0YWtlKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgLT4gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIFZhbHVlVHlwZT46OnR5cGUK
ICAgICB7CiAgICAgICAgIHJldHVybiB0YWtlKGZpbmQodmFsdWUpKTsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBi
b29sIEhhc2hTZXQ8VCwgVSwgVj46OmlzVmFsaWRWYWx1ZShjb25zdCBWYWx1ZVR5cGUmIHZhbHVl
KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHNpemVf
dCBXPgorICAgIGlubGluZSBib29sIEhhc2hTZXQ8VCwgVSwgViwgVz46OmlzVmFsaWRWYWx1ZShj
b25zdCBWYWx1ZVR5cGUmIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKFZhbHVlVHJhaXRzOjpp
c0RlbGV0ZWRWYWx1ZSh2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMzYs
OCArMzM2LDggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICB2ZWN0b3JbaV0gPSAqaXQ7
CiAgICAgfSAgCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWPgotICAgIGlubGluZSBib29sIEhhc2hTZXQ8VCwgVSwgVj46Om9wZXJhdG9yPT0oY29uc3Qg
SGFzaFNldCYgb3RoZXIpIGNvbnN0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgViwgc2l6ZV90IFc+CisgICAgaW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBW
LCBXPjo6b3BlcmF0b3I9PShjb25zdCBIYXNoU2V0JiBvdGhlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIGlmIChzaXplKCkgIT0gb3RoZXIuc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpJbmRleDogU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvSGFzaFRhYmxlLmgJKHJldmlzaW9uIDE4MjA4OSkKKysrIFNvdXJjZS9XVEYvd3Rm
L0hhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMTEsIDIwMTIsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA4IERhdmlkIExldmluIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgpAQCAtNzMsNDUgKzczLDQ1IEBAIG5hbWVzcGFjZSBXVEYgewogCiAjZW5kaWYKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMs
IHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgIGNsYXNzIEhh
c2hUYWJsZTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAg
ICBjbGFzcyBIYXNoVGFibGVJdGVyYXRvcjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4KICAgICBjbGFzcyBIYXNoVGFibGVDb25zdEl0ZXJhdG9yOwogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cz4KLSAgICB2b2lkIGFkZEl0ZXJhdG9yKGNvbnN0IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBF
eHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiosCi0gICAgICAgIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz4qKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CisgICAgdm9pZCBhZGRJdGVyYXRvcihjb25zdCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+KiwK
KyAgICAgICAgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4qKTsKIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHM+Ci0gICAgdm9pZCByZW1vdmVJdGVyYXRvcihIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Kik7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHZvaWQgcmVtb3ZlSXRlcmF0
b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4qKTsKIAogI2lmICFDSEVD
S19IQVNIVEFCTEVfSVRFUkFUT1JTCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGlubGluZSB2b2lkIGFkZEl0
ZXJhdG9yKGNvbnN0IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPiosCi0gICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4q
KSB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgaW5saW5lIHZvaWQg
YWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5PiosCisgICAgICAgIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+KikgeyB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgot
ICAgIGlubGluZSB2b2lkIHJlbW92ZUl0ZXJhdG9yKEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5
LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qKSB7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgaW5saW5lIHZvaWQgcmVt
b3ZlSXRlcmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3Is
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4qKSB7IH0K
IAogI2VuZGlmCiAKICAgICB0eXBlZGVmIGVudW0geyBIYXNoSXRlbUtub3duR29vZCB9IEhhc2hJ
dGVtS25vd25Hb29kVGFnOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHk+CiAgICAgY2xhc3MgSGFzaFRhYmxlQ29uc3RJdGVyYXRvciB7CiAgICAgcHJpdmF0ZToK
LSAgICAgICAgdHlwZWRlZiBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gSGFzaFRhYmxlVHlwZTsKLSAgICAgICAgdHlwZWRl
ZiBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPiBpdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVD
b25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+IGNvbnN0X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxL
ZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBp
bmxpbmVDYXBhY2l0eT4gSGFzaFRhYmxlVHlwZTsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJ
dGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4gaXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgSGFzaFRh
YmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4gY29uc3RfaXRlcmF0b3I7CiAgICAgICAg
IHR5cGVkZWYgVmFsdWUgVmFsdWVUeXBlOwogICAgICAgICB0eXBlZGVmIGNvbnN0IFZhbHVlVHlw
ZSYgUmVmZXJlbmNlVHlwZTsKICAgICAgICAgdHlwZWRlZiBjb25zdCBWYWx1ZVR5cGUqIFBvaW50
ZXJUeXBlOwogCi0gICAgICAgIGZyaWVuZCBjbGFzcyBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz47Ci0gICAgICAgIGZyaWVu
ZCBjbGFzcyBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
LCBpbmxpbmVDYXBhY2l0eT47CisgICAgICAgIGZyaWVuZCBjbGFzcyBIYXNoVGFibGVJdGVyYXRv
cjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
LCBpbmxpbmVDYXBhY2l0eT47CiAKICAgICAgICAgdm9pZCBza2lwRW1wdHlCdWNrZXRzKCkKICAg
ICAgICAgewpAQCAtMjM2LDE3ICsyMzYsMTcgQEAgbmFtZXNwYWNlIFdURiB7CiAjZW5kaWYKICAg
ICB9OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5
cGVuYW1lIEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1l
IFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAg
Y2xhc3MgSGFzaFRhYmxlSXRlcmF0b3IgewogICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYg
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7Ci0gICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0
b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz4gaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXks
IFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBjb25z
dF9pdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+IEhh
c2hUYWJsZVR5cGU7CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2Fw
YWNpdHk+IGl0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywg
aW5saW5lQ2FwYWNpdHk+IGNvbnN0X2l0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIFZhbHVlIFZh
bHVlVHlwZTsKICAgICAgICAgdHlwZWRlZiBWYWx1ZVR5cGUmIFJlZmVyZW5jZVR5cGU7CiAgICAg
ICAgIHR5cGVkZWYgVmFsdWVUeXBlKiBQb2ludGVyVHlwZTsKIAotICAgICAgICBmcmllbmQgY2xh
c3MgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+OworICAgICAgICBmcmllbmQgY2xhc3MgSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFj
aXR5PjsKIAogICAgICAgICBIYXNoVGFibGVJdGVyYXRvcihIYXNoVGFibGVUeXBlKiB0YWJsZSwg
UG9pbnRlclR5cGUgcG9zLCBQb2ludGVyVHlwZSBlbmQpIDogbV9pdGVyYXRvcih0YWJsZSwgcG9z
LCBlbmQpIHsgfQogICAgICAgICBIYXNoVGFibGVJdGVyYXRvcihIYXNoVGFibGVUeXBlKiB0YWJs
ZSwgUG9pbnRlclR5cGUgcG9zLCBQb2ludGVyVHlwZSBlbmQsIEhhc2hJdGVtS25vd25Hb29kVGFn
IHRhZykgOiBtX2l0ZXJhdG9yKHRhYmxlLCBwb3MsIGVuZCwgdGFnKSB7IH0KQEAgLTI4OSwxMSAr
Mjg5LDExIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBib29sIGlzTmV3RW50cnk7CiAgICAg
fTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
IEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBl
bmFtZSBLZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgIGNs
YXNzIEhhc2hUYWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUl0
ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHM+IGl0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4g
Y29uc3RfaXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBW
YWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5l
Q2FwYWNpdHk+IGl0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0
b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cywgaW5saW5lQ2FwYWNpdHk+IGNvbnN0X2l0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIFRyYWl0
cyBWYWx1ZVRyYWl0czsKICAgICAgICAgdHlwZWRlZiBLZXkgS2V5VHlwZTsKICAgICAgICAgdHlw
ZWRlZiBWYWx1ZSBWYWx1ZVR5cGU7CkBAIC0zNDksMTAgKzM0OSwxMCBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAgICAgfkhhc2hUYWJsZSgpIAogICAgICAgICB7CiAgICAgICAgICAgICBpbnZhbGlk
YXRlSXRlcmF0b3JzKCk7IAotICAgICAgICAgICAgaWYgKG1fdGFibGUpCi0gICAgICAgICAgICAg
ICAgZGVhbGxvY2F0ZVRhYmxlKG1fdGFibGUsIG1fdGFibGVTaXplKTsKKyAgICAgICAgICAgIGlm
IChtX3N0b3JhZ2UudGFibGUudGFibGUpCisgICAgICAgICAgICAgICAgZGVhbGxvY2F0ZVRhYmxl
KG1fc3RvcmFnZS50YWJsZS50YWJsZSwgbV9zdG9yYWdlLnRhYmxlLnNpemUpOwogI2lmIENIRUNL
X0hBU0hUQUJMRV9VU0VfQUZURVJfREVTVFJVQ1RJT04KLSAgICAgICAgICAgIG1fdGFibGUgPSAo
VmFsdWVUeXBlKikodWludHB0cl90KTB4YmJhZGJlZWY7CisgICAgICAgICAgICBtX3N0b3JhZ2Uu
dGFibGUudGFibGUgPSAoVmFsdWVUeXBlKikodWludHB0cl90KTB4YmJhZGJlZWY7CiAjZW5kaWYK
ICAgICAgICAgfQogCkBAIC0zNjYsMTMgKzM2NiwxMyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgLy8gV2hlbiB0aGUgaGFzaCB0YWJsZSBpcyBlbXB0eSwganVzdCByZXR1cm4gdGhlIHNhbWUg
aXRlcmF0b3IgZm9yIGVuZCBhcyBmb3IgYmVnaW4uCiAgICAgICAgIC8vIFRoaXMgaXMgbW9yZSBl
ZmZpY2llbnQgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIHRvIHNraXAgYWxsIHRoZSBlbXB0eSBhbmQg
ZGVsZXRlZAogICAgICAgICAvLyBidWNrZXRzLCBhbmQgaXRlcmF0aW5nIGFuIGVtcHR5IHRhYmxl
IGlzIGEgY29tbW9uIGNhc2UgdGhhdCdzIHdvcnRoIG9wdGltaXppbmcuCi0gICAgICAgIGl0ZXJh
dG9yIGJlZ2luKCkgeyByZXR1cm4gaXNFbXB0eSgpID8gZW5kKCkgOiBtYWtlSXRlcmF0b3IobV90
YWJsZSk7IH0KLSAgICAgICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gbWFrZUtub3duR29vZEl0
ZXJhdG9yKG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0KLSAgICAgICAgY29uc3RfaXRlcmF0b3Ig
YmVnaW4oKSBjb25zdCB7IHJldHVybiBpc0VtcHR5KCkgPyBlbmQoKSA6IG1ha2VDb25zdEl0ZXJh
dG9yKG1fdGFibGUpOyB9Ci0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0
dXJuIG1ha2VLbm93bkdvb2RDb25zdEl0ZXJhdG9yKG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0K
KyAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBpc0VtcHR5KCkgPyBlbmQoKSA6IG1h
a2VJdGVyYXRvcihtX3N0b3JhZ2UudGFibGUudGFibGUpOyB9CisgICAgICAgIGl0ZXJhdG9yIGVu
ZCgpIHsgcmV0dXJuIG1ha2VLbm93bkdvb2RJdGVyYXRvcihtX3N0b3JhZ2UudGFibGUudGFibGUg
KyBtX3N0b3JhZ2UudGFibGUuc2l6ZSk7IH0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4o
KSBjb25zdCB7IHJldHVybiBpc0VtcHR5KCkgPyBlbmQoKSA6IG1ha2VDb25zdEl0ZXJhdG9yKG1f
c3RvcmFnZS50YWJsZS50YWJsZSk7IH0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29u
c3QgeyByZXR1cm4gbWFrZUtub3duR29vZENvbnN0SXRlcmF0b3IobV9zdG9yYWdlLnRhYmxlLnRh
YmxlICsgbV9zdG9yYWdlLnRhYmxlLnNpemUpOyB9CiAKICAgICAgICAgdW5zaWduZWQgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fa2V5Q291bnQ7IH0KLSAgICAgICAgdW5zaWduZWQgY2FwYWNpdHko
KSBjb25zdCB7IHJldHVybiBtX3RhYmxlU2l6ZTsgfQorICAgICAgICB1bnNpZ25lZCBjYXBhY2l0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS50YWJsZS5zaXplOyB9CiAgICAgICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2tleUNvdW50OyB9CiAKICAgICAgICAgQWRkUmVz
dWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSB7IHJldHVybiBhZGQ8SWRlbnRpdHlUcmFu
c2xhdG9yVHlwZT4oRXh0cmFjdG9yOjpleHRyYWN0KHZhbHVlKSwgdmFsdWUpOyB9CkBAIC00Mzcs
MTEgKzQzNywxMSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdm9pZCByZW1vdmVBbmRJbnZh
bGlkYXRlKFZhbHVlVHlwZSopOwogICAgICAgICB2b2lkIHJlbW92ZShWYWx1ZVR5cGUqKTsKIAot
ICAgICAgICBib29sIHNob3VsZEV4cGFuZCgpIGNvbnN0IHsgcmV0dXJuIChtX2tleUNvdW50ICsg
bV9kZWxldGVkQ291bnQpICogbV9tYXhMb2FkID49IG1fdGFibGVTaXplOyB9Ci0gICAgICAgIGJv
b2wgbXVzdFJlaGFzaEluUGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2tleUNvdW50ICogbV9taW5M
b2FkIDwgbV90YWJsZVNpemUgKiAyOyB9Ci0gICAgICAgIGJvb2wgc2hvdWxkU2hyaW5rKCkgY29u
c3QgeyByZXR1cm4gbV9rZXlDb3VudCAqIG1fbWluTG9hZCA8IG1fdGFibGVTaXplICYmIG1fdGFi
bGVTaXplID4gS2V5VHJhaXRzOjptaW5pbXVtVGFibGVTaXplOyB9CisgICAgICAgIGJvb2wgc2hv
dWxkRXhwYW5kKCkgY29uc3QgeyByZXR1cm4gKG1fa2V5Q291bnQgKyBtX3N0b3JhZ2UudGFibGUu
ZGVsZXRlZENvdW50KSAqIG1fbWF4TG9hZCA+PSBtX3N0b3JhZ2UudGFibGUuc2l6ZTsgfQorICAg
ICAgICBib29sIG11c3RSZWhhc2hJblBsYWNlKCkgY29uc3QgeyByZXR1cm4gbV9rZXlDb3VudCAq
IG1fbWluTG9hZCA8IG1fc3RvcmFnZS50YWJsZS5zaXplICogMjsgfQorICAgICAgICBib29sIHNo
b3VsZFNocmluaygpIGNvbnN0IHsgcmV0dXJuIG1fa2V5Q291bnQgKiBtX21pbkxvYWQgPCBtX3N0
b3JhZ2UudGFibGUuc2l6ZSAmJiBtX3N0b3JhZ2UudGFibGUuc2l6ZSA+IEtleVRyYWl0czo6bWlu
aW11bVRhYmxlU2l6ZTsgfQogICAgICAgICBWYWx1ZVR5cGUqIGV4cGFuZChWYWx1ZVR5cGUqIGVu
dHJ5ID0gbnVsbHB0cik7Ci0gICAgICAgIHZvaWQgc2hyaW5rKCkgeyByZWhhc2gobV90YWJsZVNp
emUgLyAyLCBudWxscHRyKTsgfQorICAgICAgICB2b2lkIHNocmluaygpIHsgcmVoYXNoKG1fc3Rv
cmFnZS50YWJsZS5zaXplIC8gMiwgbnVsbHB0cik7IH0KIAogICAgICAgICBWYWx1ZVR5cGUqIHJl
aGFzaCh1bnNpZ25lZCBuZXdUYWJsZVNpemUsIFZhbHVlVHlwZSogZW50cnkpOwogICAgICAgICBW
YWx1ZVR5cGUqIHJlaW5zZXJ0KFZhbHVlVHlwZSYmKTsKQEAgLTQ1MiwxMCArNDUyLDEwIEBAIG5h
bWVzcGFjZSBXVEYgewogICAgICAgICBGdWxsTG9va3VwVHlwZSBtYWtlTG9va3VwUmVzdWx0KFZh
bHVlVHlwZSogcG9zaXRpb24sIGJvb2wgZm91bmQsIHVuc2lnbmVkIGhhc2gpCiAgICAgICAgICAg
ICB7IHJldHVybiBGdWxsTG9va3VwVHlwZShMb29rdXBUeXBlKHBvc2l0aW9uLCBmb3VuZCksIGhh
c2gpOyB9CiAKLSAgICAgICAgaXRlcmF0b3IgbWFrZUl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSB7
IHJldHVybiBpdGVyYXRvcih0aGlzLCBwb3MsIG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0KLSAg
ICAgICAgY29uc3RfaXRlcmF0b3IgbWFrZUNvbnN0SXRlcmF0b3IoVmFsdWVUeXBlKiBwb3MpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJsZSArIG1fdGFibGVT
aXplKTsgfQotICAgICAgICBpdGVyYXRvciBtYWtlS25vd25Hb29kSXRlcmF0b3IoVmFsdWVUeXBl
KiBwb3MpIHsgcmV0dXJuIGl0ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJsZSArIG1fdGFibGVTaXpl
LCBIYXNoSXRlbUtub3duR29vZCk7IH0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgbWFrZUtub3du
R29vZENvbnN0SXRlcmF0b3IoVmFsdWVUeXBlKiBwb3MpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2l0
ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJsZSArIG1fdGFibGVTaXplLCBIYXNoSXRlbUtub3duR29v
ZCk7IH0KKyAgICAgICAgaXRlcmF0b3IgbWFrZUl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSB7IHJl
dHVybiBpdGVyYXRvcih0aGlzLCBwb3MsIG1fc3RvcmFnZS50YWJsZS50YWJsZSArIG1fc3RvcmFn
ZS50YWJsZS5zaXplKTsgfQorICAgICAgICBjb25zdF9pdGVyYXRvciBtYWtlQ29uc3RJdGVyYXRv
cihWYWx1ZVR5cGUqIHBvcykgY29uc3QgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IodGhpcywgcG9z
LCBtX3N0b3JhZ2UudGFibGUudGFibGUgKyBtX3N0b3JhZ2UudGFibGUuc2l6ZSk7IH0KKyAgICAg
ICAgaXRlcmF0b3IgbWFrZUtub3duR29vZEl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSB7IHJldHVy
biBpdGVyYXRvcih0aGlzLCBwb3MsIG1fc3RvcmFnZS50YWJsZS50YWJsZSArIG1fc3RvcmFnZS50
YWJsZS5zaXplLCBIYXNoSXRlbUtub3duR29vZCk7IH0KKyAgICAgICAgY29uc3RfaXRlcmF0b3Ig
bWFrZUtub3duR29vZENvbnN0SXRlcmF0b3IoVmFsdWVUeXBlKiBwb3MpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0X2l0ZXJhdG9yKHRoaXMsIHBvcywgbV9zdG9yYWdlLnRhYmxlLnRhYmxlICsgbV9zdG9y
YWdlLnRhYmxlLnNpemUsIEhhc2hJdGVtS25vd25Hb29kKTsgfQogCiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAogICAgICAgICB2b2lkIGNoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKSBjb25z
dDsKQEAgLTQ3MSwxMiArNDcxLDE2IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBtX21heExvYWQgPSAyOwogICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgbV9taW5Mb2FkID0gNjsKLQotICAgICAgICBWYWx1ZVR5cGUqIG1fdGFibGU7Ci0gICAg
ICAgIHVuc2lnbmVkIG1fdGFibGVTaXplOwotICAgICAgICB1bnNpZ25lZCBtX3RhYmxlU2l6ZU1h
c2s7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgVmFsdWVUeXBl
IGFycmF5W2lubGluZUNhcGFjaXR5XSBhbmQgdXNlIGl0IGZvciBzbWFsbCBzZXRzLgorICAgICAg
ICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBWYWx1ZVR5cGUqIHRhYmxlOworICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHNpemU7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgc2l6ZU1h
c2s7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgZGVsZXRlZENvdW50OworICAgICAgICAgICAg
fSB0YWJsZTsKKyAgICAgICAgfSBtX3N0b3JhZ2U7CiAgICAgICAgIHVuc2lnbmVkIG1fa2V5Q291
bnQ7Ci0gICAgICAgIHVuc2lnbmVkIG1fZGVsZXRlZENvdW50OwogCiAjaWYgQ0hFQ0tfSEFTSFRB
QkxFX0lURVJBVE9SUwogICAgIHB1YmxpYzoKQEAgLTUzMCwxMyArNTM0LDkgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgIENPTVBJTEVfQVNTRVJUKHZhbHVlID4gKDIgKiBzaXplKSwgSGFzaFRh
YmxlQ2FwYWNpdHlIb2xkc0NvbnRlbnRTaXplKTsKICAgICB9OwogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICBp
bmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUoKQotICAgICAgICA6IG1fdGFibGUoMCkKLSAgICAg
ICAgLCBtX3RhYmxlU2l6ZSgwKQotICAgICAgICAsIG1fdGFibGVTaXplTWFzaygwKQotICAgICAg
ICAsIG1fa2V5Q291bnQoMCkKLSAgICAgICAgLCBtX2RlbGV0ZWRDb3VudCgwKQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFj
aXR5Pjo6SGFzaFRhYmxlKCkKKyAgICAgICAgOiBtX2tleUNvdW50KDApCiAjaWYgQ0hFQ0tfSEFT
SFRBQkxFX0lURVJBVE9SUwogICAgICAgICAsIG1faXRlcmF0b3JzKDApCiAgICAgICAgICwgbV9t
dXRleChzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6bXV0ZXg+KCkpCkBAIC01NTksMTcgKzU1OSwxNyBA
QCBuYW1lc3BhY2UgV1RGIHsKIAogI2lmIEFTU0VSVF9ESVNBQkxFRAogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0
b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5
VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFz
aFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpjaGVj
a0tleShjb25zdCBUJikKKyAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+
OjpjaGVja0tleShjb25zdCBUJikKICAgICB7CiAgICAgfQogCiAjZWxzZQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRy
YWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUg
S2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNoZWNrS2V5
KGNvbnN0IFQmIGtleSkKKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3Is
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmNoZWNr
S2V5KGNvbnN0IFQmIGtleSkKICAgICB7CiAgICAgICAgIGlmICghSGFzaEZ1bmN0aW9uczo6c2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC01ODMs
MTUgKzU4MywxNSBAQCBuYW1lc3BhY2UgV1RGIHsKIAogI2VuZGlmCiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1l
IEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNo
VHJhbnNsYXRvciwgdHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBW
YWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Omxvb2t1
cChjb25zdCBUJiBrZXkpIC0+IFZhbHVlVHlwZSoKKyAgICBpbmxpbmUgYXV0byBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywg
aW5saW5lQ2FwYWNpdHk+Ojpsb29rdXAoY29uc3QgVCYga2V5KSAtPiBWYWx1ZVR5cGUqCiAgICAg
ewogICAgICAgICBjaGVja0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKIAogICAgICAgICB1bnNp
Z25lZCBrID0gMDsKLSAgICAgICAgdW5zaWduZWQgc2l6ZU1hc2sgPSBtX3RhYmxlU2l6ZU1hc2s7
Ci0gICAgICAgIFZhbHVlVHlwZSogdGFibGUgPSBtX3RhYmxlOworICAgICAgICB1bnNpZ25lZCBz
aXplTWFzayA9IG1fc3RvcmFnZS50YWJsZS5zaXplTWFzazsKKyAgICAgICAgVmFsdWVUeXBlKiB0
YWJsZSA9IG1fc3RvcmFnZS50YWJsZS50YWJsZTsKICAgICAgICAgdW5zaWduZWQgaCA9IEhhc2hU
cmFuc2xhdG9yOjpoYXNoKGtleSk7CiAgICAgICAgIHVuc2lnbmVkIGkgPSBoICYgc2l6ZU1hc2s7
CiAKQEAgLTYzOSwxNiArNjM5LDE2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB9CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
RXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVu
YW1lIEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIGF1
dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+Ojpsb29rdXBGb3JXcml0aW5nKGNvbnN0IFQmIGtleSkgLT4gTG9va3VwVHlw
ZQorICAgIGlubGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46Omxvb2t1cEZvcldy
aXRpbmcoY29uc3QgVCYga2V5KSAtPiBMb29rdXBUeXBlCiAgICAgewotICAgICAgICBBU1NFUlQo
bV90YWJsZSk7CisgICAgICAgIEFTU0VSVChtX3N0b3JhZ2UudGFibGUudGFibGUpOwogICAgICAg
ICBjaGVja0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKIAogICAgICAgICB1bnNpZ25lZCBrID0g
MDsKLSAgICAgICAgVmFsdWVUeXBlKiB0YWJsZSA9IG1fdGFibGU7Ci0gICAgICAgIHVuc2lnbmVk
IHNpemVNYXNrID0gbV90YWJsZVNpemVNYXNrOworICAgICAgICBWYWx1ZVR5cGUqIHRhYmxlID0g
bV9zdG9yYWdlLnRhYmxlLnRhYmxlOworICAgICAgICB1bnNpZ25lZCBzaXplTWFzayA9IG1fc3Rv
cmFnZS50YWJsZS5zaXplTWFzazsKICAgICAgICAgdW5zaWduZWQgaCA9IEhhc2hUcmFuc2xhdG9y
OjpoYXNoKGtleSk7CiAgICAgICAgIHVuc2lnbmVkIGkgPSBoICYgc2l6ZU1hc2s7CiAKQEAgLTcw
MCwxNiArNzAwLDE2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB9CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIGF1dG8gSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHM+OjpmdWxsTG9va3VwRm9yV3JpdGluZyhjb25zdCBUJiBrZXkpIC0+IEZ1bGxMb29rdXBUeXBl
CisgICAgaW5saW5lIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6ZnVsbExvb2t1cEZv
cldyaXRpbmcoY29uc3QgVCYga2V5KSAtPiBGdWxsTG9va3VwVHlwZQogICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fdGFibGUpOworICAgICAgICBBU1NFUlQobV9zdG9yYWdlLnRhYmxlLnRhYmxlKTsK
ICAgICAgICAgY2hlY2tLZXk8SGFzaFRyYW5zbGF0b3I+KGtleSk7CiAKICAgICAgICAgdW5zaWdu
ZWQgayA9IDA7Ci0gICAgICAgIFZhbHVlVHlwZSogdGFibGUgPSBtX3RhYmxlOwotICAgICAgICB1
bnNpZ25lZCBzaXplTWFzayA9IG1fdGFibGVTaXplTWFzazsKKyAgICAgICAgVmFsdWVUeXBlKiB0
YWJsZSA9IG1fc3RvcmFnZS50YWJsZS50YWJsZTsKKyAgICAgICAgdW5zaWduZWQgc2l6ZU1hc2sg
PSBtX3N0b3JhZ2UudGFibGUuc2l6ZU1hc2s7CiAgICAgICAgIHVuc2lnbmVkIGggPSBIYXNoVHJh
bnNsYXRvcjo6aGFzaChrZXkpOwogICAgICAgICB1bnNpZ25lZCBpID0gaCAmIHNpemVNYXNrOwog
CkBAIC03ODAsMzAgKzc4MCwzMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgfQogICAgIH07
CiAgICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5
cGVuYW1lIEtleVRyYWl0cz4KLSAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmluaXRpYWxpemVC
dWNrZXQoVmFsdWVUeXBlJiBidWNrZXQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0
eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5
PgorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmluaXRpYWxpemVC
dWNrZXQoVmFsdWVUeXBlJiBidWNrZXQpCiAgICAgewogICAgICAgICBIYXNoVGFibGVCdWNrZXRJ
bml0aWFsaXplcjxUcmFpdHM6OmVtcHR5VmFsdWVJc1plcm8+Ojp0ZW1wbGF0ZSBpbml0aWFsaXpl
PFRyYWl0cz4oYnVja2V0KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlw
ZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+Ci0gICAgQUxXQVlTX0lOTElORSBhdXRvIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6YWRkKFQmJiBrZXksIEV4dHJhJiYgZXh0cmEpIC0+IEFkZFJlc3VsdAorICAgIEFMV0FZU19J
TkxJTkUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjphZGQoVCYmIGtleSwgRXh0cmEm
JiBleHRyYSkgLT4gQWRkUmVzdWx0CiAgICAgewogICAgICAgICBjaGVja0tleTxIYXNoVHJhbnNs
YXRvcj4oa2V5KTsKIAogICAgICAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7CiAKLSAgICAgICAg
aWYgKCFtX3RhYmxlKQorICAgICAgICBpZiAoIW1fc3RvcmFnZS50YWJsZS50YWJsZSkKICAgICAg
ICAgICAgIGV4cGFuZChudWxscHRyKTsKIAogICAgICAgICBpbnRlcm5hbENoZWNrVGFibGVDb25z
aXN0ZW5jeSgpOwogCi0gICAgICAgIEFTU0VSVChtX3RhYmxlKTsKKyAgICAgICAgQVNTRVJUKG1f
c3RvcmFnZS50YWJsZS50YWJsZSk7CiAKICAgICAgICAgdW5zaWduZWQgayA9IDA7Ci0gICAgICAg
IFZhbHVlVHlwZSogdGFibGUgPSBtX3RhYmxlOwotICAgICAgICB1bnNpZ25lZCBzaXplTWFzayA9
IG1fdGFibGVTaXplTWFzazsKKyAgICAgICAgVmFsdWVUeXBlKiB0YWJsZSA9IG1fc3RvcmFnZS50
YWJsZS50YWJsZTsKKyAgICAgICAgdW5zaWduZWQgc2l6ZU1hc2sgPSBtX3N0b3JhZ2UudGFibGUu
c2l6ZU1hc2s7CiAgICAgICAgIHVuc2lnbmVkIGggPSBIYXNoVHJhbnNsYXRvcjo6aGFzaChrZXkp
OwogICAgICAgICB1bnNpZ25lZCBpID0gaCAmIHNpemVNYXNrOwogCkBAIC04NTcsNyArODU3LDcg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIGlmIChkZWxldGVkRW50cnkpIHsKICAgICAgICAg
ICAgIGluaXRpYWxpemVCdWNrZXQoKmRlbGV0ZWRFbnRyeSk7CiAgICAgICAgICAgICBlbnRyeSA9
IGRlbGV0ZWRFbnRyeTsKLSAgICAgICAgICAgIC0tbV9kZWxldGVkQ291bnQ7IAorICAgICAgICAg
ICAgLS1tX3N0b3JhZ2UudGFibGUuZGVsZXRlZENvdW50OwogICAgICAgICB9CiAKICAgICAgICAg
SGFzaFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSgqZW50cnksIHN0ZDo6Zm9yd2FyZDxUPihrZXkpLCBz
dGQ6OmZvcndhcmQ8RXh0cmE+KGV4dHJhKSk7CkBAIC04NzEsMTUgKzg3MSwxNSBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRlcmF0b3Io
ZW50cnkpLCB0cnVlKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1
bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxp
bmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5h
bWUgVCwgdHlwZW5hbWUgRXh0cmE+Ci0gICAgaW5saW5lIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphZGRQYXNz
aW5nSGFzaENvZGUoVCYmIGtleSwgRXh0cmEmJiBleHRyYSkgLT4gQWRkUmVzdWx0CisgICAgaW5s
aW5lIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6YWRkUGFzc2luZ0hhc2hDb2RlKFQm
JiBrZXksIEV4dHJhJiYgZXh0cmEpIC0+IEFkZFJlc3VsdAogICAgIHsKICAgICAgICAgY2hlY2tL
ZXk8SGFzaFRyYW5zbGF0b3I+KGtleSk7CiAKICAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygp
OwogCi0gICAgICAgIGlmICghbV90YWJsZSkKKyAgICAgICAgaWYgKCFtX3N0b3JhZ2UudGFibGUu
dGFibGUpCiAgICAgICAgICAgICBleHBhbmQoKTsKIAogICAgICAgICBpbnRlcm5hbENoZWNrVGFi
bGVDb25zaXN0ZW5jeSgpOwpAQCAtODk1LDcgKzg5NSw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAg
ICAgICAKICAgICAgICAgaWYgKGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKSB7CiAgICAgICAgICAg
ICBpbml0aWFsaXplQnVja2V0KCplbnRyeSk7Ci0gICAgICAgICAgICAtLW1fZGVsZXRlZENvdW50
OworICAgICAgICAgICAgLS1tX3N0b3JhZ2UudGFibGUuZGVsZXRlZENvdW50OwogICAgICAgICB9
CiAKICAgICAgICAgSGFzaFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSgqZW50cnksIHN0ZDo6Zm9yd2Fy
ZDxUPihrZXkpLCBzdGQ6OmZvcndhcmQ8RXh0cmE+KGV4dHJhKSwgaCk7CkBAIC05MDksMTAgKzkw
OSwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25v
d25Hb29kSXRlcmF0b3IoZW50cnkpLCB0cnVlKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGlu
bGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPjo6cmVpbnNlcnQoVmFsdWVUeXBlJiYgZW50cnkpIC0+IFZhbHVl
VHlwZSoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgaW5saW5lIGF1dG8g
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6cmVpbnNlcnQoVmFsdWVUeXBlJiYgZW50cnkpIC0+
IFZhbHVlVHlwZSoKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3RhYmxlKTsKKyAgICAgICAgQVNT
RVJUKG1fc3RvcmFnZS50YWJsZS50YWJsZSk7CiAgICAgICAgIEFTU0VSVCghbG9va3VwRm9yV3Jp
dGluZyhFeHRyYWN0b3I6OmV4dHJhY3QoZW50cnkpKS5zZWNvbmQpOwogICAgICAgICBBU1NFUlQo
IWlzRGVsZXRlZEJ1Y2tldCgqKGxvb2t1cEZvcldyaXRpbmcoRXh0cmFjdG9yOjpleHRyYWN0KGVu
dHJ5KSkuZmlyc3QpKSk7CiAjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFMKQEAgLTkyOSwxMSArOTI5
LDExIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZXR1cm4gbmV3RW50cnk7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiAKLSAgICBhdXRvIEhhc2hU
YWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJh
aXRzPjo6ZmluZChjb25zdCBUJiBrZXkpIC0+IGl0ZXJhdG9yCisgICAgYXV0byBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywg
aW5saW5lQ2FwYWNpdHk+OjpmaW5kKGNvbnN0IFQmIGtleSkgLT4gaXRlcmF0b3IKICAgICB7Ci0g
ICAgICAgIGlmICghbV90YWJsZSkKKyAgICAgICAgaWYgKCFtX3N0b3JhZ2UudGFibGUudGFibGUp
CiAgICAgICAgICAgICByZXR1cm4gZW5kKCk7CiAKICAgICAgICAgVmFsdWVUeXBlKiBlbnRyeSA9
IGxvb2t1cDxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKQEAgLTk0MywxMSArOTQzLDExIEBAIG5hbWVz
cGFjZSBXVEYgewogICAgICAgICByZXR1cm4gbWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KTsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+IAotICAgIGF1
dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+OjpmaW5kKGNvbnN0IFQmIGtleSkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IK
KyAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmZpbmQoY29uc3QgVCYga2V5KSBj
b25zdCAtPiBjb25zdF9pdGVyYXRvcgogICAgIHsKLSAgICAgICAgaWYgKCFtX3RhYmxlKQorICAg
ICAgICBpZiAoIW1fc3RvcmFnZS50YWJsZS50YWJsZSkKICAgICAgICAgICAgIHJldHVybiBlbmQo
KTsKIAogICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0gY29uc3RfY2FzdDxIYXNoVGFibGUqPih0
aGlzKS0+bG9va3VwPEhhc2hUcmFuc2xhdG9yPihrZXkpOwpAQCAtOTU3LDMzICs5NTcsMzMgQEAg
bmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiBtYWtlS25vd25Hb29kQ29uc3RJdGVyYXRv
cihlbnRyeSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHk+CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBU
PiAKLSAgICBib29sIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y29udGFpbnMoY29uc3QgVCYga2V5KSBjb25zdAorICAg
IGJvb2wgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6Y29udGFpbnMoY29uc3QgVCYga2V5KSBj
b25zdAogICAgIHsKLSAgICAgICAgaWYgKCFtX3RhYmxlKQorICAgICAgICBpZiAoIW1fc3RvcmFn
ZS50YWJsZS50YWJsZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICByZXR1
cm4gY29uc3RfY2FzdDxIYXNoVGFibGUqPih0aGlzKS0+bG9va3VwPEhhc2hUcmFuc2xhdG9yPihr
ZXkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZUFuZElu
dmFsaWRhdGVXaXRob3V0RW50cnlDb25zaXN0ZW5jeUNoZWNrKFZhbHVlVHlwZSogcG9zKQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVD
YXBhY2l0eT46OnJlbW92ZUFuZEludmFsaWRhdGVXaXRob3V0RW50cnlDb25zaXN0ZW5jeUNoZWNr
KFZhbHVlVHlwZSogcG9zKQogICAgIHsKICAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwog
ICAgICAgICByZW1vdmUocG9zKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIHZvaWQgSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHM+OjpyZW1vdmVBbmRJbnZhbGlkYXRlKFZhbHVlVHlwZSogcG9zKQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eT4KKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OnJl
bW92ZUFuZEludmFsaWRhdGUoVmFsdWVUeXBlKiBwb3MpCiAgICAgewogICAgICAgICBpbnZhbGlk
YXRlSXRlcmF0b3JzKCk7CiAgICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7
CiAgICAgICAgIHJlbW92ZShwb3MpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtl
eSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0
aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9pZCBIYXNo
VGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRy
YWl0cz46OnJlbW92ZShWYWx1ZVR5cGUqIHBvcykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHk+CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjpyZW1vdmUoVmFsdWVU
eXBlKiBwb3MpCiAgICAgewogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTCiAgICAgICAgICsrSGFz
aFRhYmxlU3RhdHM6Om51bVJlbW92ZXM7CkBAIC05OTMsNyArOTkzLDcgQEAgbmFtZXNwYWNlIFdU
RiB7CiAjZW5kaWYKIAogICAgICAgICBkZWxldGVCdWNrZXQoKnBvcyk7Ci0gICAgICAgICsrbV9k
ZWxldGVkQ291bnQ7CisgICAgICAgICsrbV9zdG9yYWdlLnRhYmxlLmRlbGV0ZWRDb3VudDsKICAg
ICAgICAgLS1tX2tleUNvdW50OwogCiAgICAgICAgIGlmIChzaG91bGRTaHJpbmsoKSkKQEAgLTEw
MDIsOCArMTAwMiw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBpbnRlcm5hbENoZWNrVGFi
bGVDb25zaXN0ZW5jeSgpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgaW5saW5lIHZvaWQgSGFz
aFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHM+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFj
aXR5PgorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OnJlbW92ZShp
dGVyYXRvciBpdCkKICAgICB7CiAgICAgICAgIGlmIChpdCA9PSBlbmQoKSkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTEwMTEsOCArMTAxMSw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBy
ZW1vdmVBbmRJbnZhbGlkYXRlKGNvbnN0X2Nhc3Q8VmFsdWVUeXBlKj4oaXQubV9pdGVyYXRvci5t
X3Bvc2l0aW9uKSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICBpbmxpbmUgdm9pZCBIYXNoVGFi
bGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz46OnJlbW92ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soaXRlcmF0b3IgaXQpCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxL
ZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBp
bmxpbmVDYXBhY2l0eT46OnJlbW92ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soaXRlcmF0
b3IgaXQpCiAgICAgewogICAgICAgICBpZiAoaXQgPT0gZW5kKCkpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0xMDIwLDggKzEwMjAsOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmVtb3Zl
QW5kSW52YWxpZGF0ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soY29uc3RfY2FzdDxWYWx1
ZVR5cGUqPihpdC5tX2l0ZXJhdG9yLm1fcG9zaXRpb24pKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgot
ICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVtb3ZlV2l0aG91dEVudHJ5Q29uc2lzdGVuY3lD
aGVjayhjb25zdF9pdGVyYXRvciBpdCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CisgICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6cmVtb3ZlV2l0aG91
dEVudHJ5Q29uc2lzdGVuY3lDaGVjayhjb25zdF9pdGVyYXRvciBpdCkKICAgICB7CiAgICAgICAg
IGlmIChpdCA9PSBlbmQoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwMjksMjUgKzEwMjks
MjUgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJlbW92ZUFuZEludmFsaWRhdGVXaXRob3V0
RW50cnlDb25zaXN0ZW5jeUNoZWNrKGNvbnN0X2Nhc3Q8VmFsdWVUeXBlKj4oaXQubV9wb3NpdGlv
bikpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpyZW1v
dmUoY29uc3QgS2V5VHlwZSYga2V5KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlw
ZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4K
KyAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjpyZW1vdmUoY29uc3Qg
S2V5VHlwZSYga2V5KQogICAgIHsKICAgICAgICAgcmVtb3ZlKGZpbmQoa2V5KSk7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZUlm
KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGlu
ZUNhcGFjaXR5Pjo6cmVtb3ZlSWYoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fdGFibGVTaXplOyBpLS07KSB7Ci0gICAgICAgICAgICBp
ZiAoaXNFbXB0eU9yRGVsZXRlZEJ1Y2tldChtX3RhYmxlW2ldKSkKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gbV9zdG9yYWdlLnRhYmxlLnNpemU7IGktLTspIHsKKyAgICAgICAgICAgIGlmIChp
c0VtcHR5T3JEZWxldGVkQnVja2V0KG1fc3RvcmFnZS50YWJsZS50YWJsZVtpXSkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghZnVuY3Rv
cihtX3RhYmxlW2ldKSkKKyAgICAgICAgICAgIGlmICghZnVuY3RvcihtX3N0b3JhZ2UudGFibGUu
dGFibGVbaV0pKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBkZWxldGVCdWNrZXQobV90YWJsZVtpXSk7Ci0gICAgICAgICAgICArK21fZGVsZXRl
ZENvdW50OworICAgICAgICAgICAgZGVsZXRlQnVja2V0KG1fc3RvcmFnZS50YWJsZS50YWJsZVtp
XSk7CisgICAgICAgICAgICArK21fc3RvcmFnZS50YWJsZS5kZWxldGVkQ291bnQ7CiAgICAgICAg
ICAgICAtLW1fa2V5Q291bnQ7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xMDU3LDggKzEwNTcs
OCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVu
Y3koKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphbGxvY2F0ZVRh
YmxlKHVuc2lnbmVkIHNpemUpIC0+IFZhbHVlVHlwZSoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+CisgICAgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjphbGxvY2F0ZVRh
YmxlKHVuc2lnbmVkIHNpemUpIC0+IFZhbHVlVHlwZSoKICAgICB7CiAgICAgICAgIC8vIHdvdWxk
IHVzZSBhIHRlbXBsYXRlIG1lbWJlciBmdW5jdGlvbiB3aXRoIGV4cGxpY2l0IHNwZWNpYWxpemF0
aW9ucyBoZXJlLCBidXQKICAgICAgICAgLy8gZ2NjIGRvZXNuJ3QgYXBwZWFyIHRvIHN1cHBvcnQg
dGhhdApAQCAtMTA3MCw4ICsxMDcwLDggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6ZGVhbGxv
Y2F0ZVRhYmxlKFZhbHVlVHlwZSogdGFibGUsIHVuc2lnbmVkIHNpemUpCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6
ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6
ZGVhbGxvY2F0ZVRhYmxlKFZhbHVlVHlwZSogdGFibGUsIHVuc2lnbmVkIHNpemUpCiAgICAgewog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgICAg
ICBpZiAoIWlzRGVsZXRlZEJ1Y2tldCh0YWJsZVtpXSkpCkBAIC0xMDgwLDI3ICsxMDgwLDI3IEBA
IG5hbWVzcGFjZSBXVEYgewogICAgICAgICBmYXN0RnJlZSh0YWJsZSk7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cz4KLSAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6ZXhwYW5kKFZhbHVlVHlwZSogZW50cnkpIC0+IFZh
bHVlVHlwZSoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgYXV0byBIYXNo
VGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRy
YWl0cywgaW5saW5lQ2FwYWNpdHk+OjpleHBhbmQoVmFsdWVUeXBlKiBlbnRyeSkgLT4gVmFsdWVU
eXBlKgogICAgIHsKICAgICAgICAgdW5zaWduZWQgbmV3U2l6ZTsKLSAgICAgICAgaWYgKG1fdGFi
bGVTaXplID09IDApCisgICAgICAgIGlmICghbV9zdG9yYWdlLnRhYmxlLnNpemUpCiAgICAgICAg
ICAgICBuZXdTaXplID0gS2V5VHJhaXRzOjptaW5pbXVtVGFibGVTaXplOwogICAgICAgICBlbHNl
IGlmIChtdXN0UmVoYXNoSW5QbGFjZSgpKQotICAgICAgICAgICAgbmV3U2l6ZSA9IG1fdGFibGVT
aXplOworICAgICAgICAgICAgbmV3U2l6ZSA9IG1fc3RvcmFnZS50YWJsZS5zaXplOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBuZXdTaXplID0gbV90YWJsZVNpemUgKiAyOworICAgICAgICAg
ICAgbmV3U2l6ZSA9IG1fc3RvcmFnZS50YWJsZS5zaXplICogMjsKIAogICAgICAgICByZXR1cm4g
cmVoYXNoKG5ld1NpemUsIGVudHJ5KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGF1dG8gSGFz
aFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHM+OjpyZWhhc2godW5zaWduZWQgbmV3VGFibGVTaXplLCBWYWx1ZVR5cGUqIGVudHJ5KSAt
PiBWYWx1ZVR5cGUqCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFp
dHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIGF1dG8g
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6cmVoYXNoKHVuc2lnbmVkIG5ld1RhYmxlU2l6ZSwg
VmFsdWVUeXBlKiBlbnRyeSkgLT4gVmFsdWVUeXBlKgogICAgIHsKICAgICAgICAgaW50ZXJuYWxD
aGVja1RhYmxlQ29uc2lzdGVuY3lFeGNlcHRTaXplKCk7CiAKLSAgICAgICAgdW5zaWduZWQgb2xk
VGFibGVTaXplID0gbV90YWJsZVNpemU7Ci0gICAgICAgIFZhbHVlVHlwZSogb2xkVGFibGUgPSBt
X3RhYmxlOworICAgICAgICB1bnNpZ25lZCBvbGRUYWJsZVNpemUgPSBtX3N0b3JhZ2UudGFibGUu
c2l6ZTsKKyAgICAgICAgVmFsdWVUeXBlKiBvbGRUYWJsZSA9IG1fc3RvcmFnZS50YWJsZS50YWJs
ZTsKIAogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTCiAgICAgICAgIGlmIChvbGRUYWJsZVNpemUg
IT0gMCkKQEAgLTExMTIsOSArMTExMiw5IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAg
KyttX3N0YXRzLT5udW1SZWhhc2hlczsKICNlbmRpZgogCi0gICAgICAgIG1fdGFibGVTaXplID0g
bmV3VGFibGVTaXplOwotICAgICAgICBtX3RhYmxlU2l6ZU1hc2sgPSBuZXdUYWJsZVNpemUgLSAx
OwotICAgICAgICBtX3RhYmxlID0gYWxsb2NhdGVUYWJsZShuZXdUYWJsZVNpemUpOworICAgICAg
ICBtX3N0b3JhZ2UudGFibGUuc2l6ZSA9IG5ld1RhYmxlU2l6ZTsKKyAgICAgICAgbV9zdG9yYWdl
LnRhYmxlLnNpemVNYXNrID0gbmV3VGFibGVTaXplIC0gMTsKKyAgICAgICAgbV9zdG9yYWdlLnRh
YmxlLnRhYmxlID0gYWxsb2NhdGVUYWJsZShuZXdUYWJsZVNpemUpOwogCiAgICAgICAgIFZhbHVl
KiBuZXdFbnRyeSA9IG51bGxwdHI7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0g
b2xkVGFibGVTaXplOyArK2kpIHsKQEAgLTExMzAsNyArMTEzMCw3IEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgbV9kZWxldGVkQ291bnQgPSAw
OworICAgICAgICBtX3N0b3JhZ2UudGFibGUuZGVsZXRlZENvdW50ID0gMDsKIAogICAgICAgICBk
ZWFsbG9jYXRlVGFibGUob2xkVGFibGUsIG9sZFRhYmxlU2l6ZSk7CiAKQEAgLTExMzgsMjcgKzEx
MzgsMjUgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiBuZXdFbnRyeTsKICAgICB9
CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzPgotICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpjbGVhcigpCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6
ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6
Y2xlYXIoKQogICAgIHsKICAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwotICAgICAgICBp
ZiAoIW1fdGFibGUpCisgICAgICAgIGlmICghbV9zdG9yYWdlLnRhYmxlLnRhYmxlKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGRlYWxsb2NhdGVUYWJsZShtX3RhYmxlLCBtX3RhYmxl
U2l6ZSk7Ci0gICAgICAgIG1fdGFibGUgPSAwOwotICAgICAgICBtX3RhYmxlU2l6ZSA9IDA7Ci0g
ICAgICAgIG1fdGFibGVTaXplTWFzayA9IDA7CisgICAgICAgIGRlYWxsb2NhdGVUYWJsZShtX3N0
b3JhZ2UudGFibGUudGFibGUsIG1fc3RvcmFnZS50YWJsZS5zaXplKTsKKyAgICAgICAgbV9zdG9y
YWdlLnRhYmxlLnRhYmxlID0gbnVsbHB0cjsKKyAgICAgICAgbV9zdG9yYWdlLnRhYmxlLmRlbGV0
ZWRDb3VudCA9IDA7CisgICAgICAgIG1fc3RvcmFnZS50YWJsZS5zaXplID0gMDsKKyAgICAgICAg
bV9zdG9yYWdlLnRhYmxlLnNpemVNYXNrID0gMDsKICAgICAgICAgbV9rZXlDb3VudCA9IDA7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5
cGVuYW1lIEtleVRyYWl0cz4KLSAgICBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Okhhc2hUYWJsZShjb25zdCBIYXNoVGFi
bGUmIG90aGVyKQotICAgICAgICA6IG1fdGFibGUoMCkKLSAgICAgICAgLCBtX3RhYmxlU2l6ZSgw
KQotICAgICAgICAsIG1fdGFibGVTaXplTWFzaygwKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtl
eSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0
aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eT4KKyAgICBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjpIYXNoVGFibGUoY29uc3Qg
SGFzaFRhYmxlJiBvdGhlcikKKyAgICAgICAgOiBtX3N0b3JhZ2Uoe3tudWxscHRyLCAwLCAwLCAw
fX0pCiAgICAgICAgICwgbV9rZXlDb3VudCgwKQotICAgICAgICAsIG1fZGVsZXRlZENvdW50KDAp
CiAjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUwogICAgICAgICAsIG1faXRlcmF0b3JzKDAp
CiAgICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6bXV0ZXg+KCkpCkBAIC0x
MTc2LDI1ICsxMTc0LDI1IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgYWRkKCppdCk7
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMs
IHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRy
YWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6c3dhcChIYXNoVGFibGUm
IG90aGVyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICB2b2lkIEhhc2hU
YWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJh
aXRzLCBpbmxpbmVDYXBhY2l0eT46OnN3YXAoSGFzaFRhYmxlJiBvdGhlcikKICAgICB7CiAgICAg
ICAgIGludmFsaWRhdGVJdGVyYXRvcnMoKTsKICAgICAgICAgb3RoZXIuaW52YWxpZGF0ZUl0ZXJh
dG9ycygpOwogCi0gICAgICAgIHN0ZDo6c3dhcChtX3RhYmxlLCBvdGhlci5tX3RhYmxlKTsKLSAg
ICAgICAgc3RkOjpzd2FwKG1fdGFibGVTaXplLCBvdGhlci5tX3RhYmxlU2l6ZSk7Ci0gICAgICAg
IHN0ZDo6c3dhcChtX3RhYmxlU2l6ZU1hc2ssIG90aGVyLm1fdGFibGVTaXplTWFzayk7CisgICAg
ICAgIHN0ZDo6c3dhcChtX3N0b3JhZ2UudGFibGUudGFibGUsIG90aGVyLm1fc3RvcmFnZS50YWJs
ZS50YWJsZSk7CisgICAgICAgIHN0ZDo6c3dhcChtX3N0b3JhZ2UudGFibGUuc2l6ZSwgb3RoZXIu
bV9zdG9yYWdlLnRhYmxlLnNpemUpOworICAgICAgICBzdGQ6OnN3YXAobV9zdG9yYWdlLnRhYmxl
LnNpemVNYXNrLCBvdGhlci5tX3N0b3JhZ2UudGFibGUuc2l6ZU1hc2spOwogICAgICAgICBzdGQ6
OnN3YXAobV9rZXlDb3VudCwgb3RoZXIubV9rZXlDb3VudCk7Ci0gICAgICAgIHN0ZDo6c3dhcCht
X2RlbGV0ZWRDb3VudCwgb3RoZXIubV9kZWxldGVkQ291bnQpOworICAgICAgICBzdGQ6OnN3YXAo
bV9zdG9yYWdlLnRhYmxlLmRlbGV0ZWRDb3VudCwgb3RoZXIubV9zdG9yYWdlLnRhYmxlLmRlbGV0
ZWRDb3VudCk7CiAKICNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUKICAgICAgICAg
bV9zdGF0cy5zd2FwKG90aGVyLm1fc3RhdHMpOwogI2VuZGlmCiAgICAgfQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4K
LSAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPjo6b3BlcmF0b3I9KGNvbnN0IEhhc2hUYWJsZSYgb3RoZXIpIC0+
IEhhc2hUYWJsZSYKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgYXV0byBI
YXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjpvcGVyYXRvcj0oY29uc3QgSGFzaFRhYmxlJiBvdGhl
cikgLT4gSGFzaFRhYmxlJgogICAgIHsKICAgICAgICAgLy8gRklYTUU6IEl0J3MgbGlrZWx5IHRo
YXQgdGhpcyBjYW4gYmUgaW1wcm92ZWQsIGZvciBzdGF0aWMgYW5hbHlzZXMgdGhhdCB1c2UKICAg
ICAgICAgLy8gSGFzaFNldHMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTg0NTUKQEAgLTEyMDMsOCArMTIwMSw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBy
ZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICBpbmxpbmUgSGFzaFRhYmxlPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpI
YXNoVGFibGUoSGFzaFRhYmxlJiYgb3RoZXIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFj
aXR5PgorICAgIGlubGluZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjpIYXNoVGFibGUoSGFz
aFRhYmxlJiYgb3RoZXIpCiAjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUwogICAgICAgICA6
IG1faXRlcmF0b3JzKG51bGxwdHIpCiAgICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVl
PHN0ZDo6bXV0ZXg+KCkpCkBAIC0xMjEyLDE3ICsxMjEwLDE3IEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgIHsKICAgICAgICAgb3RoZXIuaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwogCi0gICAgICAgIG1f
dGFibGUgPSBvdGhlci5tX3RhYmxlOwotICAgICAgICBtX3RhYmxlU2l6ZSA9IG90aGVyLm1fdGFi
bGVTaXplOwotICAgICAgICBtX3RhYmxlU2l6ZU1hc2sgPSBvdGhlci5tX3RhYmxlU2l6ZU1hc2s7
CisgICAgICAgIG1fc3RvcmFnZS50YWJsZS50YWJsZSA9IG90aGVyLm1fc3RvcmFnZS50YWJsZS50
YWJsZTsKKyAgICAgICAgbV9zdG9yYWdlLnRhYmxlLnNpemUgPSBvdGhlci5tX3N0b3JhZ2UudGFi
bGUuc2l6ZTsKKyAgICAgICAgbV9zdG9yYWdlLnRhYmxlLnNpemVNYXNrID0gb3RoZXIubV9zdG9y
YWdlLnRhYmxlLnNpemVNYXNrOwogICAgICAgICBtX2tleUNvdW50ID0gb3RoZXIubV9rZXlDb3Vu
dDsKLSAgICAgICAgbV9kZWxldGVkQ291bnQgPSBvdGhlci5tX2RlbGV0ZWRDb3VudDsKKyAgICAg
ICAgbV9zdG9yYWdlLnRhYmxlLmRlbGV0ZWRDb3VudCA9IG90aGVyLm1fc3RvcmFnZS50YWJsZS5k
ZWxldGVkQ291bnQ7CiAKLSAgICAgICAgb3RoZXIubV90YWJsZSA9IG51bGxwdHI7Ci0gICAgICAg
IG90aGVyLm1fdGFibGVTaXplID0gMDsKLSAgICAgICAgb3RoZXIubV90YWJsZVNpemVNYXNrID0g
MDsKKyAgICAgICAgb3RoZXIubV9zdG9yYWdlLnRhYmxlLnRhYmxlID0gbnVsbHB0cjsKKyAgICAg
ICAgb3RoZXIubV9zdG9yYWdlLnRhYmxlLnNpemUgPSAwOworICAgICAgICBvdGhlci5tX3N0b3Jh
Z2UudGFibGUuc2l6ZU1hc2sgPSAwOwogICAgICAgICBvdGhlci5tX2tleUNvdW50ID0gMDsKLSAg
ICAgICAgb3RoZXIubV9kZWxldGVkQ291bnQgPSAwOworICAgICAgICBvdGhlci5tX3N0b3JhZ2Uu
dGFibGUuZGVsZXRlZENvdW50ID0gMDsKIAogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9U
QUJMRQogICAgICAgICBtX3N0YXRzID0gV1RGOjptb3ZlKG90aGVyLm1fc3RhdHMpOwpAQCAtMTIz
MCw4ICsxMjI4LDggQEAgbmFtZXNwYWNlIFdURiB7CiAjZW5kaWYKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRz
PgotICAgIGlubGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6b3BlcmF0b3I9KEhhc2hUYWJsZSYmIG90aGVy
KSAtPiBIYXNoVGFibGUmCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIGlu
bGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46Om9wZXJhdG9yPShIYXNoVGFibGUm
JiBvdGhlcikgLT4gSGFzaFRhYmxlJgogICAgIHsKICAgICAgICAgSGFzaFRhYmxlIHRlbXAgPSBX
VEY6Om1vdmUob3RoZXIpOwogICAgICAgICBzd2FwKHRlbXApOwpAQCAtMTI0MCwyNCArMTIzOCwy
NCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+
Ci0gICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz46OmNoZWNrVGFibGVDb25zaXN0ZW5jeSgpIGNvbnN0CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNh
cGFjaXR5Pjo6Y2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkgY29uc3QKICAgICB7CiAgICAgICAgIGNo
ZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKTsKLSAgICAgICAgQVNTRVJUKCFtX3RhYmxl
IHx8ICFzaG91bGRFeHBhbmQoKSk7CisgICAgICAgIEFTU0VSVCghbV9zdG9yYWdlLnRhYmxlLnRh
YmxlIHx8ICFzaG91bGRFeHBhbmQoKSk7CiAgICAgICAgIEFTU0VSVCghc2hvdWxkU2hyaW5rKCkp
OwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5
cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRz
LCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNoZWNrVGFibGVDb25z
aXN0ZW5jeUV4Y2VwdFNpemUoKSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eT4KKyAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmNoZWNrVGFibGVDb25zaXN0
ZW5jeUV4Y2VwdFNpemUoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKCFtX3RhYmxlKQorICAg
ICAgICBpZiAoIW1fc3RvcmFnZS50YWJsZS50YWJsZSkKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAgICAgICAgIHVuc2lnbmVkIGRlbGV0ZWRDb3Vu
dCA9IDA7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBtX3RhYmxlU2l6ZTsgKytq
KSB7Ci0gICAgICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0gbV90YWJsZSArIGo7CisgICAgICAg
IGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBtX3N0b3JhZ2UudGFibGUuc2l6ZTsgKytqKSB7Cisg
ICAgICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0gbV9zdG9yYWdlLnRhYmxlLnRhYmxlICsgajsK
ICAgICAgICAgICAgIGlmIChpc0VtcHR5QnVja2V0KCplbnRyeSkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAKQEAgLTEyNzQsMTggKzEyNzIsMTggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAg
ICAgIH0KIAogICAgICAgICBBU1NFUlQoY291bnQgPT0gbV9rZXlDb3VudCk7Ci0gICAgICAgIEFT
U0VSVChkZWxldGVkQ291bnQgPT0gbV9kZWxldGVkQ291bnQpOwotICAgICAgICBBU1NFUlQobV90
YWJsZVNpemUgPj0gS2V5VHJhaXRzOjptaW5pbXVtVGFibGVTaXplKTsKLSAgICAgICAgQVNTRVJU
KG1fdGFibGVTaXplTWFzayk7Ci0gICAgICAgIEFTU0VSVChtX3RhYmxlU2l6ZSA9PSBtX3RhYmxl
U2l6ZU1hc2sgKyAxKTsKKyAgICAgICAgQVNTRVJUKGRlbGV0ZWRDb3VudCA9PSBtX3N0b3JhZ2Uu
dGFibGUuZGVsZXRlZENvdW50KTsKKyAgICAgICAgQVNTRVJUKG1fc3RvcmFnZS50YWJsZS5zaXpl
ID49IEtleVRyYWl0czo6bWluaW11bVRhYmxlU2l6ZSk7CisgICAgICAgIEFTU0VSVChtX3N0b3Jh
Z2UudGFibGUuc2l6ZU1hc2spOworICAgICAgICBBU1NFUlQobV9zdG9yYWdlLnRhYmxlLnNpemUg
PT0gbV9zdG9yYWdlLnRhYmxlLnNpemVNYXNrICsgMSk7CiAgICAgfQogCiAjZW5kaWYgLy8gQVNT
RVJUX0RJU0FCTEVECiAKICNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRz
PgotICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzLCBLZXlUcmFpdHM+OjppbnZhbGlkYXRlSXRlcmF0b3JzKCkKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBz
aXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+
OjppbnZhbGlkYXRlSXRlcmF0b3JzKCkKICAgICB7CiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxz
dGQ6Om11dGV4PiBsb2NrKCptX211dGV4KTsKICAgICAgICAgY29uc3RfaXRlcmF0b3IqIG5leHQ7
CkBAIC0xMjk4LDkgKzEyOTYsOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgbV9pdGVyYXRv
cnMgPSAwOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFs
dWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9pZCBhZGRJdGVyYXRvcihjb25zdCBI
YXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz4qIHRhYmxlLAotICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiBpdCkKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0
b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5
VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgdm9pZCBhZGRJdGVyYXRvcihjb25z
dCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMs
IEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+KiB0YWJsZSwKKyAgICAgICAgSGFzaFRhYmxlQ29u
c3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywg
S2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4qIGl0KQogICAgIHsKICAgICAgICAgaXQtPm1fdGFi
bGUgPSB0YWJsZTsKICAgICAgICAgaXQtPm1fcHJldmlvdXMgPSAwOwpAQCAtMTMyMCw4ICsxMzE4
LDggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1l
IEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAg
IHZvaWQgcmVtb3ZlSXRlcmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBF
eHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiogaXQpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0
cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHZvaWQgcmVtb3ZlSXRlcmF0b3IoSGFzaFRh
YmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4qIGl0KQogICAgIHsKICAgICAgICAgLy8g
RGVsZXRlIGl0ZXJhdG9yIGZyb20gZG91Ymx5LWxpbmtlZCBsaXN0IG9mIGl0ZXJhdG9ycy4KICAg
ICAgICAgaWYgKCFpdC0+bV90YWJsZSkgewpJbmRleDogU291cmNlL1dURi93dGYvTGlzdEhhc2hT
ZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCShyZXZpc2lv
biAxODIwODkpCisrKyBTb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTIsIDIwMTMs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDExLCBCZW5qYW1pbiBQb3VsYWluIDxpa2lwb3VAZ21haWwuY29tPgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAg
LTM4LDE3ICszOCwxNyBAQCBuYW1lc3BhY2UgV1RGIHsKIC8vIGd1YXJhbnRlZWQgc2FmZSBhZ2Fp
bnN0IG11dGF0aW9uIG9mIHRoZSBMaXN0SGFzaFNldCwgZXhjZXB0IGZvcgogLy8gcmVtb3ZhbCBv
ZiB0aGUgaXRlbSBjdXJyZW50bHkgcG9pbnRlZCB0byBieSBhIGdpdmVuIGl0ZXJhdG9yLgogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4gY2xhc3MgTGlz
dEhhc2hTZXQ7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PiBjbGFzcyBMaXN0SGFzaFNldDsKIAotdGVtcGxhdGU8
dHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmc+IGNsYXNzIExpc3RIYXNoU2V0SXRl
cmF0b3I7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZz4gY2xh
c3MgTGlzdEhhc2hTZXRDb25zdEl0ZXJhdG9yOwordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcs
IHR5cGVuYW1lIEhhc2hBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gY2xhc3MgTGlzdEhhc2hT
ZXRJdGVyYXRvcjsKK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJn
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGNsYXNzIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcjsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmc+IHN0cnVjdCBMaXN0SGFzaFNldE5vZGU7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hBcmc+IHN0cnVjdCBMaXN0SGFzaFNldE5vZGVIYXNoRnVu
Y3Rpb25zOwogdGVtcGxhdGU8dHlwZW5hbWUgSGFzaEFyZz4gc3RydWN0IExpc3RIYXNoU2V0VHJh
bnNsYXRvcjsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcg
PSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxWYWx1ZUFyZz46Okhhc2g+IGNsYXNzIExpc3RIYXNoU2V0
IHsKK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnID0gdHlwZW5h
bWUgRGVmYXVsdEhhc2g8VmFsdWVBcmc+OjpIYXNoLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkgPSAw
PiBjbGFzcyBMaXN0SGFzaFNldCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwcml2
YXRlOgogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXROb2RlPFZhbHVlQXJnPiBOb2RlOwpAQCAtNjIs
OSArNjIsOSBAQCBwcml2YXRlOgogcHVibGljOgogICAgIHR5cGVkZWYgVmFsdWVBcmcgVmFsdWVU
eXBlOwogCi0gICAgdHlwZWRlZiBMaXN0SGFzaFNldEl0ZXJhdG9yPFZhbHVlVHlwZSwgSGFzaEFy
Zz4gaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldENvbnN0SXRlcmF0b3I8VmFsdWVU
eXBlLCBIYXNoQXJnPiBjb25zdF9pdGVyYXRvcjsKLSAgICBmcmllbmQgY2xhc3MgTGlzdEhhc2hT
ZXRDb25zdEl0ZXJhdG9yPFZhbHVlVHlwZSwgSGFzaEFyZz47CisgICAgdHlwZWRlZiBMaXN0SGFz
aFNldEl0ZXJhdG9yPFZhbHVlVHlwZSwgSGFzaEFyZywgaW5saW5lQ2FwYWNpdHk+IGl0ZXJhdG9y
OworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRDb25zdEl0ZXJhdG9yPFZhbHVlVHlwZSwgSGFzaEFy
ZywgaW5saW5lQ2FwYWNpdHk+IGNvbnN0X2l0ZXJhdG9yOworICAgIGZyaWVuZCBjbGFzcyBMaXN0
SGFzaFNldENvbnN0SXRlcmF0b3I8VmFsdWVUeXBlLCBIYXNoQXJnLCBpbmxpbmVDYXBhY2l0eT47
CiAKICAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj4gcmV2ZXJzZV9p
dGVyYXRvcjsKICAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRv
cj4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKQEAgLTE1MCw3ICsxNTAsNyBAQCBwcml2YXRlOgog
ICAgIGl0ZXJhdG9yIG1ha2VJdGVyYXRvcihOb2RlKik7CiAgICAgY29uc3RfaXRlcmF0b3IgbWFr
ZUNvbnN0SXRlcmF0b3IoTm9kZSopIGNvbnN0OwogCi0gICAgSGFzaFRhYmxlPE5vZGUqLCBOb2Rl
KiwgSWRlbnRpdHlFeHRyYWN0b3IsIE5vZGVIYXNoLCBOb2RlVHJhaXRzLCBOb2RlVHJhaXRzPiBt
X2ltcGw7CisgICAgSGFzaFRhYmxlPE5vZGUqLCBOb2RlKiwgSWRlbnRpdHlFeHRyYWN0b3IsIE5v
ZGVIYXNoLCBOb2RlVHJhaXRzLCBOb2RlVHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4gbV9pbXBsOwog
ICAgIE5vZGUqIG1faGVhZDsKICAgICBOb2RlKiBtX3RhaWw7CiB9OwpAQCAtMTc3LDE1ICsxNzcs
MTUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaEFyZz4gc3RydWN0IExpc3RIYQogICAgIHN0YXRp
YyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7CiB9Owog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZz4gY2xhc3MgTGlz
dEhhc2hTZXRJdGVyYXRvciB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUg
SGFzaEFyZywgc2l6ZV90IGlubGluZUNhcGFjaXR5PiBjbGFzcyBMaXN0SGFzaFNldEl0ZXJhdG9y
IHsKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldDxWYWx1ZUFyZywgSGFzaEFyZz4g
TGlzdEhhc2hTZXRUeXBlOwotICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRJdGVyYXRvcjxWYWx1ZUFy
ZywgSGFzaEFyZz4gaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldENvbnN0SXRlcmF0
b3I8VmFsdWVBcmcsIEhhc2hBcmc+IGNvbnN0X2l0ZXJhdG9yOworICAgIHR5cGVkZWYgTGlzdEhh
c2hTZXQ8VmFsdWVBcmcsIEhhc2hBcmcsIGlubGluZUNhcGFjaXR5PiBMaXN0SGFzaFNldFR5cGU7
CisgICAgdHlwZWRlZiBMaXN0SGFzaFNldEl0ZXJhdG9yPFZhbHVlQXJnLCBIYXNoQXJnLCBpbmxp
bmVDYXBhY2l0eT4gaXRlcmF0b3I7CisgICAgdHlwZWRlZiBMaXN0SGFzaFNldENvbnN0SXRlcmF0
b3I8VmFsdWVBcmcsIEhhc2hBcmcsIGlubGluZUNhcGFjaXR5PiBjb25zdF9pdGVyYXRvcjsKICAg
ICB0eXBlZGVmIExpc3RIYXNoU2V0Tm9kZTxWYWx1ZUFyZz4gTm9kZTsKICAgICB0eXBlZGVmIFZh
bHVlQXJnIFZhbHVlVHlwZTsKIAotICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNldDxWYWx1ZUFy
ZywgSGFzaEFyZz47CisgICAgZnJpZW5kIGNsYXNzIExpc3RIYXNoU2V0PFZhbHVlQXJnLCBIYXNo
QXJnLCBpbmxpbmVDYXBhY2l0eT47CiAKICAgICBMaXN0SGFzaFNldEl0ZXJhdG9yKGNvbnN0IExp
c3RIYXNoU2V0VHlwZSogc2V0LCBOb2RlKiBwb3NpdGlvbikgOiBtX2l0ZXJhdG9yKHNldCwgcG9z
aXRpb24pIHsgfQogCkBAIC0yMjQsMTYgKzIyNCwxNiBAQCBwcml2YXRlOgogICAgIGNvbnN0X2l0
ZXJhdG9yIG1faXRlcmF0b3I7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlw
ZW5hbWUgSGFzaEFyZz4gY2xhc3MgTGlzdEhhc2hTZXRDb25zdEl0ZXJhdG9yIHsKK3RlbXBsYXRl
PHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCBzaXplX3QgaW5saW5lQ2FwYWNp
dHk+IGNsYXNzIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvciB7CiBwcml2YXRlOgotICAgIHR5cGVk
ZWYgTGlzdEhhc2hTZXQ8VmFsdWVBcmcsIEhhc2hBcmc+IExpc3RIYXNoU2V0VHlwZTsKLSAgICB0
eXBlZGVmIExpc3RIYXNoU2V0SXRlcmF0b3I8VmFsdWVBcmcsIEhhc2hBcmc+IGl0ZXJhdG9yOwot
ICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRDb25zdEl0ZXJhdG9yPFZhbHVlQXJnLCBIYXNoQXJnPiBj
b25zdF9pdGVyYXRvcjsKKyAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFZhbHVlQXJnLCBIYXNoQXJn
LCBpbmxpbmVDYXBhY2l0eT4gTGlzdEhhc2hTZXRUeXBlOworICAgIHR5cGVkZWYgTGlzdEhhc2hT
ZXRJdGVyYXRvcjxWYWx1ZUFyZywgSGFzaEFyZywgaW5saW5lQ2FwYWNpdHk+IGl0ZXJhdG9yOwor
ICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRDb25zdEl0ZXJhdG9yPFZhbHVlQXJnLCBIYXNoQXJnLCBp
bmxpbmVDYXBhY2l0eT4gY29uc3RfaXRlcmF0b3I7CiAgICAgdHlwZWRlZiBMaXN0SGFzaFNldE5v
ZGU8VmFsdWVBcmc+IE5vZGU7CiAgICAgdHlwZWRlZiBWYWx1ZUFyZyBWYWx1ZVR5cGU7CiAKLSAg
ICBmcmllbmQgY2xhc3MgTGlzdEhhc2hTZXQ8VmFsdWVBcmcsIEhhc2hBcmc+OwotICAgIGZyaWVu
ZCBjbGFzcyBMaXN0SGFzaFNldEl0ZXJhdG9yPFZhbHVlQXJnLCBIYXNoQXJnPjsKKyAgICBmcmll
bmQgY2xhc3MgTGlzdEhhc2hTZXQ8VmFsdWVBcmcsIEhhc2hBcmcsIGlubGluZUNhcGFjaXR5PjsK
KyAgICBmcmllbmQgY2xhc3MgTGlzdEhhc2hTZXRJdGVyYXRvcjxWYWx1ZUFyZywgSGFzaEFyZywg
aW5saW5lQ2FwYWNpdHk+OwogCiAgICAgTGlzdEhhc2hTZXRDb25zdEl0ZXJhdG9yKGNvbnN0IExp
c3RIYXNoU2V0VHlwZSogc2V0LCBOb2RlKiBwb3NpdGlvbikKICAgICAgICAgOiBtX3NldChzZXQp
CkBAIC0zMDgsMTUgKzMwOCwxNSBAQCBzdHJ1Y3QgTGlzdEhhc2hTZXRUcmFuc2xhdG9yIHsKICAg
ICB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIExpc3RI
YXNoU2V0PFQsIFU+OjpMaXN0SGFzaFNldCgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVLCBzaXplX3QgVj4KK2lubGluZSBMaXN0SGFzaFNldDxULCBVLCBWPjo6TGlzdEhhc2hTZXQo
KQogICAgIDogbV9oZWFkKDApCiAgICAgLCBtX3RhaWwoMCkKIHsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBMaXN0SGFzaFNldDxULCBVPjo6TGlzdEhhc2hT
ZXQoY29uc3QgTGlzdEhhc2hTZXQmIG90aGVyKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgc2l6ZV90IFY+CitpbmxpbmUgTGlzdEhhc2hTZXQ8VCwgVSwgVj46Okxpc3RIYXNoU2V0
KGNvbnN0IExpc3RIYXNoU2V0JiBvdGhlcikKICAgICA6IG1faGVhZCgwKQogICAgICwgbV90YWls
KDApCiB7CkBAIC0zMjQsNjEgKzMyNCw2MSBAQCBpbmxpbmUgTGlzdEhhc2hTZXQ8VCwgVT46Okxp
c3RIYXNoU2V0KGNvCiAgICAgICAgIGFkZCgqaXQpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPgotaW5saW5lIExpc3RIYXNoU2V0PFQsIFU+JiBMaXN0SGFzaFNldDxULCBV
Pjo6b3BlcmF0b3I9KGNvbnN0IExpc3RIYXNoU2V0JiBvdGhlcikKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIExpc3RIYXNoU2V0PFQsIFUsIFY+JiBM
aXN0SGFzaFNldDxULCBVLCBWPjo6b3BlcmF0b3I9KGNvbnN0IExpc3RIYXNoU2V0JiBvdGhlcikK
IHsKICAgICBMaXN0SGFzaFNldCB0bXAob3RoZXIpOwogICAgIHN3YXAodG1wKTsKICAgICByZXR1
cm4gKnRoaXM7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUg
dm9pZCBMaXN0SGFzaFNldDxULCBVPjo6c3dhcChMaXN0SGFzaFNldCYgb3RoZXIpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSB2b2lkIExpc3RIYXNo
U2V0PFQsIFUsIFY+Ojpzd2FwKExpc3RIYXNoU2V0JiBvdGhlcikKIHsKICAgICBtX2ltcGwuc3dh
cChvdGhlci5tX2ltcGwpOwogICAgIHN0ZDo6c3dhcChtX2hlYWQsIG90aGVyLm1faGVhZCk7CiAg
ICAgc3RkOjpzd2FwKG1fdGFpbCwgb3RoZXIubV90YWlsKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBMaXN0SGFzaFNldDxULCBVPjo6fkxpc3RIYXNoU2V0
KCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIExp
c3RIYXNoU2V0PFQsIFUsIFY+Ojp+TGlzdEhhc2hTZXQoKQogewogICAgIGRlbGV0ZUFsbE5vZGVz
KCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgdW5zaWdu
ZWQgTGlzdEhhc2hTZXQ8VCwgVT46OnNpemUoKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUgdW5zaWduZWQgTGlzdEhhc2hTZXQ8VCwgVSwg
Vj46OnNpemUoKSBjb25zdAogewogICAgIHJldHVybiBtX2ltcGwuc2l6ZSgpOyAKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSB1bnNpZ25lZCBMaXN0SGFzaFNl
dDxULCBVPjo6Y2FwYWNpdHkoKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgc2l6ZV90IFY+CitpbmxpbmUgdW5zaWduZWQgTGlzdEhhc2hTZXQ8VCwgVSwgVj46OmNhcGFj
aXR5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbXBsLmNhcGFjaXR5KCk7IAogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIGJvb2wgTGlzdEhhc2hTZXQ8VCwg
VT46OmlzRW1wdHkoKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6
ZV90IFY+CitpbmxpbmUgYm9vbCBMaXN0SGFzaFNldDxULCBVLCBWPjo6aXNFbXB0eSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1faW1wbC5pc0VtcHR5KCk7IAogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIFQmIExpc3RIYXNoU2V0PFQsIFU+OjpmaXJzdCgpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBUJiBMaXN0
SGFzaFNldDxULCBVLCBWPjo6Zmlyc3QoKQogewogICAgIEFTU0VSVCghaXNFbXB0eSgpKTsKICAg
ICByZXR1cm4gbV9oZWFkLT5tX3ZhbHVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPgotaW5saW5lIHZvaWQgTGlzdEhhc2hTZXQ8VCwgVT46OnJlbW92ZUZpcnN0KCkKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIHZvaWQgTGlz
dEhhc2hTZXQ8VCwgVSwgVj46OnJlbW92ZUZpcnN0KCkKIHsKICAgICB0YWtlRmlyc3QoKTsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBUIExpc3RIYXNoU2V0
PFQsIFU+Ojp0YWtlRmlyc3QoKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6
ZV90IFY+CitpbmxpbmUgVCBMaXN0SGFzaFNldDxULCBVLCBWPjo6dGFrZUZpcnN0KCkKIHsKICAg
ICBBU1NFUlQoIWlzRW1wdHkoKSk7CiAgICAgYXV0byBpdCA9IG1faW1wbC5maW5kKG1faGVhZCk7
CkBAIC0zOTAsMzUgKzM5MCwzNSBAQCBpbmxpbmUgVCBMaXN0SGFzaFNldDxULCBVPjo6dGFrZUZp
cnN0KCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPgotaW5saW5lIGNvbnN0IFQmIExpc3RIYXNoU2V0PFQsIFU+OjpmaXJzdCgpIGNvbnN0
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBjb25z
dCBUJiBMaXN0SGFzaFNldDxULCBVLCBWPjo6Zmlyc3QoKSBjb25zdAogewogICAgIEFTU0VSVCgh
aXNFbXB0eSgpKTsKICAgICByZXR1cm4gbV9oZWFkLT5tX3ZhbHVlOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIFQmIExpc3RIYXNoU2V0PFQsIFU+OjpsYXN0
KCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIFQm
IExpc3RIYXNoU2V0PFQsIFUsIFY+OjpsYXN0KCkKIHsKICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7
CiAgICAgcmV0dXJuIG1fdGFpbC0+bV92YWx1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4KLWlubGluZSBjb25zdCBUJiBMaXN0SGFzaFNldDxULCBVPjo6bGFzdCgpIGNv
bnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBj
b25zdCBUJiBMaXN0SGFzaFNldDxULCBVLCBWPjo6bGFzdCgpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KCFpc0VtcHR5KCkpOwogICAgIHJldHVybiBtX3RhaWwtPm1fdmFsdWU7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6
cmVtb3ZlTGFzdCgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4K
K2lubGluZSB2b2lkIExpc3RIYXNoU2V0PFQsIFUsIFY+OjpyZW1vdmVMYXN0KCkKIHsKICAgICB0
YWtlTGFzdCgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5l
IFQgTGlzdEhhc2hTZXQ8VCwgVT46OnRha2VMYXN0KCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIFQgTGlzdEhhc2hTZXQ8VCwgVSwgVj46OnRha2VM
YXN0KCkKIHsKICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7CiAgICAgYXV0byBpdCA9IG1faW1wbC5m
aW5kKG1fdGFpbCk7CkBAIC00MzAsOCArNDMwLDggQEAgaW5saW5lIFQgTGlzdEhhc2hTZXQ8VCwg
VT46OnRha2VMYXN0KCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46OmZpbmQoY29u
c3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gaXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVSwgVj46OmZp
bmQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gaXRlcmF0b3IKIHsKICAgICBhdXRvIGl0ID0g
bV9pbXBsLnRlbXBsYXRlIGZpbmQ8QmFzZVRyYW5zbGF0b3I+KHZhbHVlKTsKICAgICBpZiAoaXQg
PT0gbV9pbXBsLmVuZCgpKQpAQCAtNDM5LDggKzQzOSw4IEBAIGlubGluZSBhdXRvIExpc3RIYXNo
U2V0PFQsIFU+OjpmaW5kKGNvbnMKICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yKCppdCk7IAogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIGF1dG8gTGlzdEhhc2hT
ZXQ8VCwgVT46OmZpbmQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgY29uc3QgLT4gY29uc3RfaXRl
cmF0b3IKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5l
IGF1dG8gTGlzdEhhc2hTZXQ8VCwgVSwgVj46OmZpbmQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkg
Y29uc3QgLT4gY29uc3RfaXRlcmF0b3IKIHsKICAgICBhdXRvIGl0ID0gbV9pbXBsLnRlbXBsYXRl
IGZpbmQ8QmFzZVRyYW5zbGF0b3I+KHZhbHVlKTsKICAgICBpZiAoaXQgPT0gbV9pbXBsLmVuZCgp
KQpAQCAtNDU0LDkgKzQ1NCw5IEBAIHN0cnVjdCBMaXN0SGFzaFNldFRyYW5zbGF0b3JBZGFwdGVy
IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBUJiBhLCBjb25zdCBVJiBiKSB7IHJldHVybiBUcmFuc2xhdG9yOjplcXVhbChhLT5t
X3ZhbHVlLCBiKTsgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFt
ZSBVPgordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBVLCBzaXplX3QgVj4K
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPgotaW5saW5lIGF1
dG8gTGlzdEhhc2hTZXQ8VmFsdWVUeXBlLCBVPjo6ZmluZChjb25zdCBUJiB2YWx1ZSkgLT4gaXRl
cmF0b3IKK2lubGluZSBhdXRvIExpc3RIYXNoU2V0PFZhbHVlVHlwZSwgVSwgVj46OmZpbmQoY29u
c3QgVCYgdmFsdWUpIC0+IGl0ZXJhdG9yCiB7CiAgICAgYXV0byBpdCA9IG1faW1wbC50ZW1wbGF0
ZSBmaW5kPExpc3RIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2YWx1
ZSk7CiAgICAgaWYgKGl0ID09IG1faW1wbC5lbmQoKSkKQEAgLTQ2NCw5ICs0NjQsOSBAQCBpbmxp
bmUgYXV0byBMaXN0SGFzaFNldDxWYWx1ZVR5cGUsIFU+OjpmCiAgICAgcmV0dXJuIG1ha2VJdGVy
YXRvcigqaXQpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFU+
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+Ci1pbmxpbmUgYXV0byBM
aXN0SGFzaFNldDxWYWx1ZVR5cGUsIFU+OjpmaW5kKGNvbnN0IFQmIHZhbHVlKSBjb25zdCAtPiBj
b25zdF9pdGVyYXRvcgoraW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VmFsdWVUeXBlLCBVLCBWPjo6
ZmluZChjb25zdCBUJiB2YWx1ZSkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKIHsKICAgICBhdXRv
IGl0ID0gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8TGlzdEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlcjxI
YXNoVHJhbnNsYXRvcj4+KHZhbHVlKTsKICAgICBpZiAoaXQgPT0gbV9pbXBsLmVuZCgpKQpAQCAt
NDc0LDIxICs0NzQsMjEgQEAgaW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VmFsdWVUeXBlLCBVPjo6
ZgogICAgIHJldHVybiBtYWtlQ29uc3RJdGVyYXRvcigqaXQpOwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFU+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUs
IHR5cGVuYW1lIFUsIHNpemVfdCBWPgogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFz
aFRyYW5zbGF0b3I+Ci1pbmxpbmUgYm9vbCBMaXN0SGFzaFNldDxWYWx1ZVR5cGUsIFU+Ojpjb250
YWlucyhjb25zdCBUJiB2YWx1ZSkgY29uc3QKK2lubGluZSBib29sIExpc3RIYXNoU2V0PFZhbHVl
VHlwZSwgVSwgVj46OmNvbnRhaW5zKGNvbnN0IFQmIHZhbHVlKSBjb25zdAogewogICAgIHJldHVy
biBtX2ltcGwudGVtcGxhdGUgY29udGFpbnM8TGlzdEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlcjxI
YXNoVHJhbnNsYXRvcj4+KHZhbHVlKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KLWlubGluZSBib29sIExpc3RIYXNoU2V0PFQsIFU+Ojpjb250YWlucyhjb25zdCBWYWx1
ZVR5cGUmIHZhbHVlKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6
ZV90IFY+CitpbmxpbmUgYm9vbCBMaXN0SGFzaFNldDxULCBVLCBWPjo6Y29udGFpbnMoY29uc3Qg
VmFsdWVUeXBlJiB2YWx1ZSkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGNv
bnRhaW5zPEJhc2VUcmFuc2xhdG9yPih2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+Ci1hdXRvIExpc3RIYXNoU2V0PFQsIFU+OjphZGQoY29uc3QgVmFsdWVUeXBl
JiB2YWx1ZSkgLT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBz
aXplX3QgVj4KK2F1dG8gTGlzdEhhc2hTZXQ8VCwgVSwgVj46OmFkZChjb25zdCBWYWx1ZVR5cGUm
IHZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0
ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KHZhbHVlLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0Lmlz
TmV3RW50cnkpCkBAIC00OTYsOCArNDk2LDggQEAgYXV0byBMaXN0SGFzaFNldDxULCBVPjo6YWRk
KGNvbnN0IFZhbHVlVAogICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUl0ZXJhdG9yKCpyZXN1bHQu
aXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+Ci1hdXRvIExpc3RIYXNoU2V0PFQsIFU+OjphZGQoVmFsdWVUeXBlJiYgdmFs
dWUpIC0+IEFkZFJlc3VsdAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90
IFY+CithdXRvIExpc3RIYXNoU2V0PFQsIFUsIFY+OjphZGQoVmFsdWVUeXBlJiYgdmFsdWUpIC0+
IEFkZFJlc3VsdAogewogICAgIGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNl
VHJhbnNsYXRvcj4oV1RGOjptb3ZlKHZhbHVlKSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5p
c05ld0VudHJ5KQpAQCAtNTA1LDggKzUwNSw4IEBAIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46OmFk
ZChWYWx1ZVR5cGUmJiAKICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJdGVyYXRvcigqcmVzdWx0
Lml0ZXJhdG9yKSwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPgotYXV0byBMaXN0SGFzaFNldDxULCBVPjo6YXBwZW5kT3JNb3ZlVG9MYXN0
KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIC0+IEFkZFJlc3VsdAordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CithdXRvIExpc3RIYXNoU2V0PFQsIFUsIFY+OjphcHBl
bmRPck1vdmVUb0xhc3QoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gQWRkUmVzdWx0CiB7CiAg
ICAgYXV0byByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VUcmFuc2xhdG9yPih2YWx1
ZSwgbnVsbHB0cik7CiAgICAgTm9kZSogbm9kZSA9ICpyZXN1bHQuaXRlcmF0b3I7CkBAIC01MTcs
OCArNTE3LDggQEAgYXV0byBMaXN0SGFzaFNldDxULCBVPjo6YXBwZW5kT3JNb3ZlVG9MYQogICAg
IHJldHVybiBBZGRSZXN1bHQobWFrZUl0ZXJhdG9yKCpyZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQu
aXNOZXdFbnRyeSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1hdXRv
IExpc3RIYXNoU2V0PFQsIFU+OjphcHBlbmRPck1vdmVUb0xhc3QoVmFsdWVUeXBlJiYgdmFsdWUp
IC0+IEFkZFJlc3VsdAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+
CithdXRvIExpc3RIYXNoU2V0PFQsIFUsIFY+OjphcHBlbmRPck1vdmVUb0xhc3QoVmFsdWVUeXBl
JiYgdmFsdWUpIC0+IEFkZFJlc3VsdAogewogICAgIGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBs
YXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4oV1RGOjptb3ZlKHZhbHVlKSwgbnVsbHB0cik7CiAgICAg
Tm9kZSogbm9kZSA9ICpyZXN1bHQuaXRlcmF0b3I7CkBAIC01MjksOCArNTI5LDggQEAgYXV0byBM
aXN0SGFzaFNldDxULCBVPjo6YXBwZW5kT3JNb3ZlVG9MYQogICAgIHJldHVybiBBZGRSZXN1bHQo
bWFrZUl0ZXJhdG9yKCpyZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1hdXRvIExpc3RIYXNoU2V0PFQsIFU+
OjpwcmVwZW5kT3JNb3ZlVG9GaXJzdChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBBZGRSZXN1
bHQKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgorYXV0byBMaXN0
SGFzaFNldDxULCBVLCBWPjo6cHJlcGVuZE9yTW92ZVRvRmlyc3QoY29uc3QgVmFsdWVUeXBlJiB2
YWx1ZSkgLT4gQWRkUmVzdWx0CiB7CiAgICAgYXV0byByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUg
YWRkPEJhc2VUcmFuc2xhdG9yPih2YWx1ZSwgbnVsbHB0cik7CiAgICAgTm9kZSogbm9kZSA9ICpy
ZXN1bHQuaXRlcmF0b3I7CkBAIC01NDEsOCArNTQxLDggQEAgYXV0byBMaXN0SGFzaFNldDxULCBV
Pjo6cHJlcGVuZE9yTW92ZVRvRgogICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUl0ZXJhdG9yKCpy
ZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+Ci1hdXRvIExpc3RIYXNoU2V0PFQsIFU+OjpwcmVwZW5kT3JNb3Zl
VG9GaXJzdChWYWx1ZVR5cGUmJiB2YWx1ZSkgLT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2F1dG8gTGlzdEhhc2hTZXQ8VCwgVSwgVj46OnBy
ZXBlbmRPck1vdmVUb0ZpcnN0KFZhbHVlVHlwZSYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKICAg
ICBhdXRvIHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KFdURjo6
bW92ZSh2YWx1ZSksIG51bGxwdHIpOwogICAgIE5vZGUqIG5vZGUgPSAqcmVzdWx0Lml0ZXJhdG9y
OwpAQCAtNTUzLDIwICs1NTMsMjAgQEAgYXV0byBMaXN0SGFzaFNldDxULCBVPjo6cHJlcGVuZE9y
TW92ZVRvRgogICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUl0ZXJhdG9yKCpyZXN1bHQuaXRlcmF0
b3IpLCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+Ci1hdXRvIExpc3RIYXNoU2V0PFQsIFU+OjppbnNlcnRCZWZvcmUoY29uc3QgVmFsdWVU
eXBlJiBiZWZvcmVWYWx1ZSwgY29uc3QgVmFsdWVUeXBlJiBuZXdWYWx1ZSkgLT4gQWRkUmVzdWx0
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2F1dG8gTGlzdEhh
c2hTZXQ8VCwgVSwgVj46Omluc2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUmIGJlZm9yZVZhbHVl
LCBjb25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKICAgICByZXR1cm4g
aW5zZXJ0QmVmb3JlKGZpbmQoYmVmb3JlVmFsdWUpLCBuZXdWYWx1ZSk7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1hdXRvIExpc3RIYXNoU2V0PFQsIFU+OjppbnNlcnRC
ZWZvcmUoY29uc3QgVmFsdWVUeXBlJiBiZWZvcmVWYWx1ZSwgVmFsdWVUeXBlJiYgbmV3VmFsdWUp
IC0+IEFkZFJlc3VsdAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+
CithdXRvIExpc3RIYXNoU2V0PFQsIFUsIFY+OjppbnNlcnRCZWZvcmUoY29uc3QgVmFsdWVUeXBl
JiBiZWZvcmVWYWx1ZSwgVmFsdWVUeXBlJiYgbmV3VmFsdWUpIC0+IEFkZFJlc3VsdAogewogICAg
IHJldHVybiBpbnNlcnRCZWZvcmUoZmluZChiZWZvcmVWYWx1ZSksIFdURjo6bW92ZShuZXdWYWx1
ZSkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotYXV0byBMaXN0SGFz
aFNldDxULCBVPjo6aW5zZXJ0QmVmb3JlKGl0ZXJhdG9yIGl0LCBjb25zdCBWYWx1ZVR5cGUmIG5l
d1ZhbHVlKSAtPiBBZGRSZXN1bHQKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNp
emVfdCBWPgorYXV0byBMaXN0SGFzaFNldDxULCBVLCBWPjo6aW5zZXJ0QmVmb3JlKGl0ZXJhdG9y
IGl0LCBjb25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKICAgICBhdXRv
IHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KG5ld1ZhbHVlLCBu
dWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCkBAIC01NzQsOCArNTc0LDggQEAg
YXV0byBMaXN0SGFzaFNldDxULCBVPjo6aW5zZXJ0QmVmb3JlKGl0ZQogICAgIHJldHVybiBBZGRS
ZXN1bHQobWFrZUl0ZXJhdG9yKCpyZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRyeSk7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1hdXRvIExpc3RIYXNoU2V0
PFQsIFU+OjppbnNlcnRCZWZvcmUoaXRlcmF0b3IgaXQsIFZhbHVlVHlwZSYmIG5ld1ZhbHVlKSAt
PiBBZGRSZXN1bHQKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgor
YXV0byBMaXN0SGFzaFNldDxULCBVLCBWPjo6aW5zZXJ0QmVmb3JlKGl0ZXJhdG9yIGl0LCBWYWx1
ZVR5cGUmJiBuZXdWYWx1ZSkgLT4gQWRkUmVzdWx0CiB7CiAgICAgYXV0byByZXN1bHQgPSBtX2lt
cGwudGVtcGxhdGUgYWRkPEJhc2VUcmFuc2xhdG9yPihXVEY6Om1vdmUobmV3VmFsdWUpLCBudWxs
cHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCkBAIC01ODMsOCArNTgzLDggQEAgYXV0
byBMaXN0SGFzaFNldDxULCBVPjo6aW5zZXJ0QmVmb3JlKGl0ZQogICAgIHJldHVybiBBZGRSZXN1
bHQobWFrZUl0ZXJhdG9yKCpyZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgYm9vbCBMaXN0SGFz
aFNldDxULCBVPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUgYm9vbCBMaXN0SGFzaFNldDxULCBVLCBWPjo6cmVt
b3ZlKGl0ZXJhdG9yIGl0KQogewogICAgIGlmIChpdCA9PSBlbmQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtNTkzLDE0ICs1OTMsMTQgQEAgaW5saW5lIGJvb2wgTGlzdEhhc2hTZXQ8VCwg
VT46OnJlbW92ZShpdAogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPgotaW5saW5lIGJvb2wgTGlzdEhhc2hTZXQ8VCwgVT46OnJlbW92ZShjb25z
dCBWYWx1ZVR5cGUmIHZhbHVlKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6
ZV90IFY+CitpbmxpbmUgYm9vbCBMaXN0SGFzaFNldDxULCBVLCBWPjo6cmVtb3ZlKGNvbnN0IFZh
bHVlVHlwZSYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHJlbW92ZShmaW5kKHZhbHVlKSk7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgdm9pZCBMaXN0SGFzaFNl
dDxULCBVPjo6Y2xlYXIoKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90
IFY+CitpbmxpbmUgdm9pZCBMaXN0SGFzaFNldDxULCBVLCBWPjo6Y2xlYXIoKQogewogICAgIGRl
bGV0ZUFsbE5vZGVzKCk7CiAgICAgbV9pbXBsLmNsZWFyKCk7IApAQCAtNjA4LDggKzYwOCw4IEBA
IGlubGluZSB2b2lkIExpc3RIYXNoU2V0PFQsIFU+OjpjbGVhcigpCiAgICAgbV90YWlsID0gMDsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXZvaWQgTGlzdEhhc2hTZXQ8
VCwgVT46OnVubGluayhOb2RlKiBub2RlKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgc2l6ZV90IFY+Cit2b2lkIExpc3RIYXNoU2V0PFQsIFUsIFY+Ojp1bmxpbmsoTm9kZSogbm9k
ZSkKIHsKICAgICBpZiAoIW5vZGUtPm1fcHJldikgewogICAgICAgICBBU1NFUlQobm9kZSA9PSBt
X2hlYWQpOwpAQCAtNjI4LDE1ICs2MjgsMTUgQEAgdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6dW5s
aW5rKE5vZGUqIG5vZAogICAgIH0KIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4KLXZvaWQgTGlzdEhhc2hTZXQ8VCwgVT46OnVubGlua0FuZERlbGV0ZShOb2RlKiBub2RlKQor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+Cit2b2lkIExpc3RIYXNo
U2V0PFQsIFUsIFY+Ojp1bmxpbmtBbmREZWxldGUoTm9kZSogbm9kZSkKIHsKICAgICB1bmxpbmso
bm9kZSk7CiAgICAgZGVsZXRlIG5vZGU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+Ci12b2lkIExpc3RIYXNoU2V0PFQsIFU+OjphcHBlbmROb2RlKE5vZGUqIG5vZGUpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK3ZvaWQgTGlzdEhhc2hT
ZXQ8VCwgVSwgVj46OmFwcGVuZE5vZGUoTm9kZSogbm9kZSkKIHsKICAgICBub2RlLT5tX3ByZXYg
PSBtX3RhaWw7CiAgICAgbm9kZS0+bV9uZXh0ID0gMDsKQEAgLTY1Miw4ICs2NTIsOCBAQCB2b2lk
IExpc3RIYXNoU2V0PFQsIFU+OjphcHBlbmROb2RlKE5vZGUqCiAgICAgbV90YWlsID0gbm9kZTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXZvaWQgTGlzdEhhc2hTZXQ8
VCwgVT46OnByZXBlbmROb2RlKE5vZGUqIG5vZGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCBzaXplX3QgVj4KK3ZvaWQgTGlzdEhhc2hTZXQ8VCwgVSwgVj46OnByZXBlbmROb2Rl
KE5vZGUqIG5vZGUpCiB7CiAgICAgbm9kZS0+bV9wcmV2ID0gMDsKICAgICBub2RlLT5tX25leHQg
PSBtX2hlYWQ7CkBAIC02NjYsOCArNjY2LDggQEAgdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6cHJl
cGVuZE5vZGUoTm9kZQogICAgIG1faGVhZCA9IG5vZGU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+Ci12b2lkIExpc3RIYXNoU2V0PFQsIFU+OjppbnNlcnROb2RlQmVmb3Jl
KE5vZGUqIGJlZm9yZU5vZGUsIE5vZGUqIG5ld05vZGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVLCBzaXplX3QgVj4KK3ZvaWQgTGlzdEhhc2hTZXQ8VCwgVSwgVj46Omluc2VydE5v
ZGVCZWZvcmUoTm9kZSogYmVmb3JlTm9kZSwgTm9kZSogbmV3Tm9kZSkKIHsKICAgICBpZiAoIWJl
Zm9yZU5vZGUpCiAgICAgICAgIHJldHVybiBhcHBlbmROb2RlKG5ld05vZGUpOwpAQCAtNjgyLDgg
KzY4Miw4IEBAIHZvaWQgTGlzdEhhc2hTZXQ8VCwgVT46Omluc2VydE5vZGVCZWZvcmUKICAgICAg
ICAgbV9oZWFkID0gbmV3Tm9kZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4KLXZvaWQgTGlzdEhhc2hTZXQ8VCwgVT46OmRlbGV0ZUFsbE5vZGVzKCkKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgordm9pZCBMaXN0SGFzaFNldDxULCBVLCBW
Pjo6ZGVsZXRlQWxsTm9kZXMoKQogewogICAgIGlmICghbV9oZWFkKQogICAgICAgICByZXR1cm47
CkBAIC02OTIsMTQgKzY5MiwxNCBAQCB2b2lkIExpc3RIYXNoU2V0PFQsIFU+OjpkZWxldGVBbGxO
b2RlcygpCiAgICAgICAgIGRlbGV0ZSBub2RlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPgotaW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46Om1ha2VJdGVyYXRvcihO
b2RlKiBwb3NpdGlvbikgLT4gaXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHNpemVfdCBWPgoraW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVSwgVj46Om1ha2VJdGVy
YXRvcihOb2RlKiBwb3NpdGlvbikgLT4gaXRlcmF0b3IKIHsKICAgICByZXR1cm4gaXRlcmF0b3Io
dGhpcywgcG9zaXRpb24pOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgot
aW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46Om1ha2VDb25zdEl0ZXJhdG9yKE5vZGUqIHBv
c2l0aW9uKSBjb25zdCAtPiBjb25zdF9pdGVyYXRvcgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUgYXV0byBMaXN0SGFzaFNldDxULCBVLCBWPjo6bWFr
ZUNvbnN0SXRlcmF0b3IoTm9kZSogcG9zaXRpb24pIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yCiB7
IAogICAgIHJldHVybiBjb25zdF9pdGVyYXRvcih0aGlzLCBwb3NpdGlvbik7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249635</attachid>
            <date>2015-03-27 19:17:33 -0700</date>
            <delta_ts>2015-03-30 16:46:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143158-20150327191659.patch</filename>
            <type>text/plain</type>
            <size>100844</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODIwOTcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE1LTAzLTI3ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGlubGluZSBjYXBhY2l0eSB0
byBIYXNoU2V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQzMTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3dGYvSGFzaE1hcC5oOgorICAgICAgICAqIHd0Zi9IYXNoVGFibGUuaDoKKyAgICAgICAg
KiB3dGYvTGlzdEhhc2hTZXQuaDoKKyAgICAgICAgQWRkZWQgaW5saW5lQ2FwYWNpdHkgdGVtcGxh
dGUgcGFyYW1ldGVyLCB3aGljaCBpcyBjdXJyZW50bHkgdW51c2VkLgorICAgICAgICBUaGVyZSBz
aG91bGQgYmUgbm8gY2hhbmdlIGluIGJlaGF2aW9yLCAKKyAgICAgICAgZXhjZXB0IHRoYXQgSGFz
aFRhYmxlOjpjbGVhciBub3cgY29ycmVjdGx5IHNldHMgZGVsZXRlZENvdW50IHRvIDAuCisKIDIw
MTUtMDMtMjcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTdXBwb3J0IGJ1aWxkaW5nIFdURiBvbiBXaW5kb3dzIHdpdGhvdXQgQ3lnd2luCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
SGFzaE1hcC5oCShyZXZpc2lvbiAxODIwOTcpCisrKyBTb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAx
MywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTMyLDcgKzMyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEtleVZhbHVl
UGFpcgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcs
IHR5cGVuYW1lIEhhc2hBcmcgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxLZXlBcmc+OjpIYXNoLAot
ICAgIHR5cGVuYW1lIEtleVRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8S2V5QXJnPiwgdHlwZW5hbWUg
TWFwcGVkVHJhaXRzQXJnID0gSGFzaFRyYWl0czxNYXBwZWRBcmc+PgorICAgIHR5cGVuYW1lIEtl
eVRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8S2V5QXJnPiwgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJn
ID0gSGFzaFRyYWl0czxNYXBwZWRBcmc+LCBzaXplX3QgaW5saW5lQ2FwYWNpdHkgPSAwPgogY2xh
c3MgSGFzaE1hcCBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwcml2YXRl
OgpAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaEFyZyBIYXNoRnVu
Y3Rpb25zOwogCiAgICAgdHlwZWRlZiBIYXNoVGFibGU8S2V5VHlwZSwgS2V5VmFsdWVQYWlyVHlw
ZSwgS2V5VmFsdWVQYWlyS2V5RXh0cmFjdG9yPEtleVZhbHVlUGFpclR5cGU+LAotICAgICAgICBI
YXNoRnVuY3Rpb25zLCBLZXlWYWx1ZVBhaXJUcmFpdHMsIEtleVRyYWl0cz4gSGFzaFRhYmxlVHlw
ZTsKKyAgICAgICAgSGFzaEZ1bmN0aW9ucywgS2V5VmFsdWVQYWlyVHJhaXRzLCBLZXlUcmFpdHMs
IGlubGluZUNhcGFjaXR5PiBIYXNoVGFibGVUeXBlOwogCiAgICAgY2xhc3MgSGFzaE1hcEtleXNQ
cm94eTsKICAgICBjbGFzcyBIYXNoTWFwVmFsdWVzUHJveHk7CkBAIC0xODgsOTggKzE4OCw5OCBA
QCBzdHJ1Y3QgSGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVyIHsKICAgICB9CiB9OwogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFt
ZSBYPgotaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6c3dhcChIYXNoTWFwJiBv
dGhlcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBW
LCBXLCBYLCBZPjo6c3dhcChIYXNoTWFwJiBvdGhlcikKIHsKICAgICBtX2ltcGwuc3dhcChvdGhl
ci5tX2ltcGwpOyAKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSB1bnNpZ25lZCBIYXNoTWFwPFQs
IFUsIFYsIFcsIFg+OjpzaXplKCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5l
IHVuc2lnbmVkIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OnNpemUoKSBjb25zdAogewogICAg
IHJldHVybiBtX2ltcGwuc2l6ZSgpOyAKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSB1bnNpZ25l
ZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpjYXBhY2l0eSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBz
aXplX3QgWT4KK2lubGluZSB1bnNpZ25lZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjpjYXBh
Y2l0eSgpIGNvbnN0CiB7IAogICAgIHJldHVybiBtX2ltcGwuY2FwYWNpdHkoKTsgCiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5
cGVuYW1lIFg+Ci1pbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojppc0VtcHR5KCkg
Y29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5lIGJvb2wgSGFzaE1hcDxULCBVLCBW
LCBXLCBYLCBZPjo6aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW1wbC5pc0VtcHR5
KCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5
cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjpiZWdpbigpIC0+IGl0ZXJhdG9yCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KK2lubGluZSBhdXRv
IEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmJlZ2luKCkgLT4gaXRlcmF0b3IKIHsKICAgICBy
ZXR1cm4gbV9pbXBsLmJlZ2luKCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNo
TWFwPFQsIFUsIFYsIFcsIFg+OjplbmQoKSAtPiBpdGVyYXRvcgordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90
IFk+CitpbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjplbmQoKSAtPiBpdGVy
YXRvcgogewogICAgIHJldHVybiBtX2ltcGwuZW5kKCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxp
bmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpiZWdpbigpIGNvbnN0IC0+IGNvbnN0X2l0
ZXJhdG9yCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBl
bmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KK2lubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwg
ViwgVywgWCwgWT46OmJlZ2luKCkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKIHsKICAgICByZXR1
cm4gbV9pbXBsLmJlZ2luKCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUs
IHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjplbmQoKSBjb25zdCAtPiBjb25zdF9pdGVyYXRvcgordGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUg
WCwgc2l6ZV90IFk+CitpbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjplbmQo
KSBjb25zdCAtPiBjb25zdF9pdGVyYXRvcgogewogICAgIHJldHVybiBtX2ltcGwuZW5kKCk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpmaW5k
KGNvbnN0IEtleVR5cGUmIGtleSkgLT4gaXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgor
aW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6ZmluZChjb25zdCBLZXlUeXBl
JiBrZXkpIC0+IGl0ZXJhdG9yCiB7CiAgICAgcmV0dXJuIG1faW1wbC5maW5kKGtleSk7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcs
IHR5cGVuYW1lIFg+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpmaW5kKGNv
bnN0IEtleVR5cGUmIGtleSkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNp
emVfdCBZPgoraW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6ZmluZChjb25z
dCBLZXlUeXBlJiBrZXkpIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yCiB7CiAgICAgcmV0dXJuIG1f
aW1wbC5maW5kKGtleSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgYm9vbCBIYXNoTWFwPFQs
IFUsIFYsIFcsIFg+Ojpjb250YWlucyhjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFt
ZSBYLCBzaXplX3QgWT4KK2lubGluZSBib29sIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmNv
bnRhaW5zKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbXBsLmNv
bnRhaW5zKGtleSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KIHRl
bXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUWVBFPgotaW5saW5lIHR5
cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yCi1IYXNoTWFwPFQsIFUsIFYs
IFcsIFg+OjpmaW5kKGNvbnN0IFRZUEUmIHZhbHVlKQoraW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8
VCwgVSwgViwgVywgWCwgWT46Oml0ZXJhdG9yCitIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+Ojpm
aW5kKGNvbnN0IFRZUEUmIHZhbHVlKQogewogICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmlu
ZDxIYXNoTWFwVHJhbnNsYXRvckFkYXB0ZXI8S2V5VmFsdWVQYWlyVHJhaXRzLCBIYXNoVHJhbnNs
YXRvcj4+KHZhbHVlKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgog
dGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFRZUEU+Ci1pbmxpbmUg
dHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3IgCi1IYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjpmaW5kKGNvbnN0IFRZUEUmIHZhbHVlKSBjb25zdAoraW5saW5lIHR5
cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmNvbnN0X2l0ZXJhdG9yCitIYXNoTWFw
PFQsIFUsIFYsIFcsIFgsIFk+OjpmaW5kKGNvbnN0IFRZUEUmIHZhbHVlKSBjb25zdAogewogICAg
IHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmluZDxIYXNoTWFwVHJhbnNsYXRvckFkYXB0ZXI8S2V5
VmFsdWVQYWlyVHJhaXRzLCBIYXNoVHJhbnNsYXRvcj4+KHZhbHVlKTsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUg
WD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgogdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0
b3IsIHR5cGVuYW1lIFRZUEU+Ci1pbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpj
b250YWlucyhjb25zdCBUWVBFJiB2YWx1ZSkgY29uc3QKK2lubGluZSBib29sIEhhc2hNYXA8VCwg
VSwgViwgVywgWCwgWT46OmNvbnRhaW5zKGNvbnN0IFRZUEUmIHZhbHVlKSBjb25zdAogewogICAg
IHJldHVybiBtX2ltcGwudGVtcGxhdGUgY29udGFpbnM8SGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVy
PEtleVZhbHVlUGFpclRyYWl0cywgSGFzaFRyYW5zbGF0b3I+Pih2YWx1ZSk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJn
LCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KK3RlbXBs
YXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJn
LCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZywgc2l6ZV90
IGlubGluZUNhcGFjaXR5PgogdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLWF1dG8g
SGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRU
cmFpdHNBcmc+OjppbmxpbmVTZXQoSyYmIGtleSwgViYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKK2F1
dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBw
ZWRUcmFpdHNBcmcsIGlubGluZUNhcGFjaXR5Pjo6aW5saW5lU2V0KEsmJiBrZXksIFYmJiB2YWx1
ZSkgLT4gQWRkUmVzdWx0CiB7CiAgICAgQWRkUmVzdWx0IHJlc3VsdCA9IGlubGluZUFkZChzdGQ6
OmZvcndhcmQ8Sz4oa2V5KSwgc3RkOjpmb3J3YXJkPFY+KHZhbHVlKSk7CiAgICAgaWYgKCFyZXN1
bHQuaXNOZXdFbnRyeSkgewpAQCAtMjg5LDY0ICsyODksNjQgQEAgYXV0byBIYXNoTWFwPEtleUFy
ZywgTWFwcGVkQXJnLCBIYXNoQXJnLAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0
eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KK3RlbXBsYXRl
PHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0
eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZywgc2l6ZV90IGlu
bGluZUNhcGFjaXR5PgogdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLUFMV0FZU19J
TkxJTkUgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNB
cmcsIE1hcHBlZFRyYWl0c0FyZz46OmlubGluZUFkZChLJiYga2V5LCBWJiYgdmFsdWUpIC0+IEFk
ZFJlc3VsdAorQUxXQVlTX0lOTElORSBhdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhh
c2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnLCBpbmxpbmVDYXBhY2l0eT46Omlu
bGluZUFkZChLJiYga2V5LCBWJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAogewogICAgIHJldHVybiBt
X2ltcGwudGVtcGxhdGUgYWRkPEhhc2hNYXBUcmFuc2xhdG9yPEtleVZhbHVlUGFpclRyYWl0cywg
SGFzaEZ1bmN0aW9ucz4+KHN0ZDo6Zm9yd2FyZDxLPihrZXkpLCBzdGQ6OmZvcndhcmQ8Vj4odmFs
dWUpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcs
IHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVk
VHJhaXRzQXJnPgordGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcs
IHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVk
VHJhaXRzQXJnLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
YXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1h
cHBlZFRyYWl0c0FyZz46OnNldChjb25zdCBLZXlUeXBlJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFk
ZFJlc3VsdAorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFp
dHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgaW5saW5lQ2FwYWNpdHk+OjpzZXQoY29uc3QgS2V5VHlw
ZSYga2V5LCBUJiYgbWFwcGVkKSAtPiBBZGRSZXN1bHQKIHsKICAgICByZXR1cm4gaW5saW5lU2V0
KGtleSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5
VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5
VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eT4KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1hdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcs
IEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6c2V0KEtleVR5cGUmJiBr
ZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVk
QXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgaW5saW5lQ2FwYWNp
dHk+OjpzZXQoS2V5VHlwZSYmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CiB7CiAgICAg
cmV0dXJuIGlubGluZVNldChXVEY6Om1vdmUoa2V5KSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkp
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlw
ZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFp
dHNBcmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlw
ZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFp
dHNBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFu
c2xhdG9yLCB0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgotYXV0byBIYXNoTWFwPEtleUFyZywgTWFw
cGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChLJiYg
a2V5LCBWJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVk
QXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgaW5saW5lQ2FwYWNp
dHk+OjphZGQoSyYmIGtleSwgViYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKICAgICByZXR1cm4g
bV9pbXBsLnRlbXBsYXRlIGFkZFBhc3NpbmdIYXNoQ29kZTxIYXNoTWFwVHJhbnNsYXRvckFkYXB0
ZXI8S2V5VmFsdWVQYWlyVHJhaXRzLCBIYXNoVHJhbnNsYXRvcj4+KHN0ZDo6Zm9yd2FyZDxLPihr
ZXkpLCBzdGQ6OmZvcndhcmQ8Vj4odmFsdWUpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgS2V5
QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRy
YWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgordGVtcGxhdGU8dHlwZW5hbWUgS2V5
QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRy
YWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBI
YXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChjb25zdCBLZXlUeXBl
JiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAorYXV0byBIYXNoTWFwPEtleUFyZywgTWFw
cGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZywgaW5saW5lQ2Fw
YWNpdHk+OjphZGQoY29uc3QgS2V5VHlwZSYga2V5LCBUJiYgbWFwcGVkKSAtPiBBZGRSZXN1bHQK
IHsKICAgICByZXR1cm4gaW5saW5lQWRkKGtleSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5h
bWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNB
cmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5h
bWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNB
cmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1hdXRvIEhh
c2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJh
aXRzQXJnPjo6YWRkKEtleVR5cGUmJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAorYXV0
byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBl
ZFRyYWl0c0FyZywgaW5saW5lQ2FwYWNpdHk+OjphZGQoS2V5VHlwZSYmIGtleSwgVCYmIG1hcHBl
ZCkgLT4gQWRkUmVzdWx0CiB7CiAgICAgcmV0dXJuIGlubGluZUFkZChXVEY6Om1vdmUoa2V5KSwg
c3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcs
IHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRz
QXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcs
IHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRz
QXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1h
cHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjpmYXN0QWRk
KGNvbnN0IEtleVR5cGUmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CitBTFdBWVNfSU5M
SU5FIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJn
LCBNYXBwZWRUcmFpdHNBcmcsIGlubGluZUNhcGFjaXR5Pjo6ZmFzdEFkZChjb25zdCBLZXlUeXBl
JiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAogewogICAgIHJldHVybiBpbmxpbmVBZGQo
a2V5LCBzdGQ6OmZvcndhcmQ8VD4obWFwcGVkKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEtl
eUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlU
cmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KK3RlbXBsYXRlPHR5cGVuYW1lIEtl
eUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlU
cmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZywgc2l6ZV90IGlubGluZUNhcGFjaXR5
PgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgYXV0byBIYXNoTWFwPEtleUFy
ZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmZh
c3RBZGQoS2V5VHlwZSYmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CitBTFdBWVNfSU5M
SU5FIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJn
LCBNYXBwZWRUcmFpdHNBcmcsIGlubGluZUNhcGFjaXR5Pjo6ZmFzdEFkZChLZXlUeXBlJiYga2V5
LCBUJiYgbWFwcGVkKSAtPiBBZGRSZXN1bHQKIHsKICAgICByZXR1cm4gaW5saW5lQWRkKFdURjo6
bW92ZShrZXkpLCBzdGQ6OmZvcndhcmQ8VD4obWFwcGVkKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIE1hcHBl
ZFRyYWl0cz4KLWF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+OjpnZXQoY29u
c3QgS2V5VHlwZSYga2V5KSBjb25zdCAtPiBNYXBwZWRQZWVrVHlwZQordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6
ZV90IFk+CithdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmdldChjb25zdCBLZXlUeXBl
JiBrZXkpIGNvbnN0IC0+IE1hcHBlZFBlZWtUeXBlCiB7CiAgICAgS2V5VmFsdWVQYWlyVHlwZSog
ZW50cnkgPSBjb25zdF9jYXN0PEhhc2hUYWJsZVR5cGUmPihtX2ltcGwpLmxvb2t1cChrZXkpOwog
ICAgIGlmICghZW50cnkpCkBAIC0zNTQsOCArMzU0LDggQEAgYXV0byBIYXNoTWFwPFQsIFUsIFYs
IFcsIE1hcHBlZFRyYWl0cz46OgogICAgIHJldHVybiBNYXBwZWRUcmFpdHM6OnBlZWsoZW50cnkt
PnZhbHVlKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
ViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSBib29sIEhhc2hNYXA8VCwgVSwgViwg
VywgWD46OnJlbW92ZShpdGVyYXRvciBpdCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5l
IGJvb2wgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQogewog
ICAgIGlmIChpdC5tX2ltcGwgPT0gbV9pbXBsLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zNjQsMjcgKzM2NCwyNyBAQCBpbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjpyZW1vCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBz
aXplX3QgWT4KIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci1pbmxpbmUgdm9pZCBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjpyZW1vdmVJZihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoraW5saW5l
IHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6cmVtb3ZlSWYoY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikKIHsKICAgICBtX2ltcGwucmVtb3ZlSWYoZnVuY3Rvcik7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1l
IFg+Ci1pbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpyZW1vdmUoY29uc3QgS2V5
VHlwZSYga2V5KQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwg
dHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+CitpbmxpbmUgYm9vbCBIYXNoTWFwPFQs
IFUsIFYsIFcsIFgsIFk+OjpyZW1vdmUoY29uc3QgS2V5VHlwZSYga2V5KQogewogICAgIHJldHVy
biByZW1vdmUoZmluZChrZXkpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSB2b2lkIEhhc2hN
YXA8VCwgVSwgViwgVywgWD46OmNsZWFyKCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5l
IHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6Y2xlYXIoKQogewogICAgIG1faW1wbC5j
bGVhcigpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
LCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHM+Ci1hdXRvIEhhc2hNYXA8VCwgVSwg
ViwgVywgTWFwcGVkVHJhaXRzPjo6dGFrZShjb25zdCBLZXlUeXBlJiBrZXkpIC0+IE1hcHBlZFR5
cGUKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgorYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+
Ojp0YWtlKGNvbnN0IEtleVR5cGUmIGtleSkgLT4gTWFwcGVkVHlwZQogewogICAgIGl0ZXJhdG9y
IGl0ID0gZmluZChrZXkpOwogICAgIGlmIChpdCA9PSBlbmQoKSkKQEAgLTM5NCwzMCArMzk0LDMw
IEBAIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+OjoKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KIHRlbXBsYXRl
PHR5cGVuYW1lIEs+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpmaW5kKHR5
cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSBrZXkpIC0+IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVlLCBpdGVyYXRvcj46OnR5cGUKK2lubGluZSBhdXRv
IEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OmZpbmQodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+
OjpQdHJUeXBlIGtleSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6
dmFsdWUsIGl0ZXJhdG9yPjo6dHlwZQogewogICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmlu
ZDxIYXNoTWFwVHJhbnNsYXRvcjxLZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+Pihr
ZXkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0
eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBLPgotaW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZmluZCh0eXBl
bmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUga2V5KSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgY29uc3RfaXRlcmF0b3I+Ojp0eXBlCitp
bmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjpmaW5kKHR5cGVuYW1lIEdldFB0
ckhlbHBlcjxLPjo6UHRyVHlwZSBrZXkpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PElzU21hcnRQdHI8Sz46OnZhbHVlLCBjb25zdF9pdGVyYXRvcj46OnR5cGUKIHsKICAgICByZXR1
cm4gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8SGFzaE1hcFRyYW5zbGF0b3I8S2V5VmFsdWVQYWlyVHJh
aXRzLCBIYXNoRnVuY3Rpb25zPj4oa2V5KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgs
IHNpemVfdCBZPgogdGVtcGxhdGU8dHlwZW5hbWUgSz4KLWlubGluZSBhdXRvIEhhc2hNYXA8VCwg
VSwgViwgVywgWD46OmNvbnRhaW5zKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSBr
ZXkpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVl
LCBib29sPjo6dHlwZQoraW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6Y29u
dGFpbnModHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBlIGtleSkgY29uc3QgLT4gdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6dmFsdWUsIGJvb2w+Ojp0eXBlCiB7
CiAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBjb250YWluczxIYXNoTWFwVHJhbnNsYXRvcjxL
ZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+PihrZXkpOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBY
PgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUg
VywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBLPgotaW5saW5lIGF1
dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aW5saW5lR2V0KHR5cGVuYW1lIEdldFB0ckhlbHBl
cjxLPjo6UHRyVHlwZSBrZXkpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21h
cnRQdHI8Sz46OnZhbHVlLCBNYXBwZWRQZWVrVHlwZT46OnR5cGUKK2lubGluZSBhdXRvIEhhc2hN
YXA8VCwgVSwgViwgVywgWCwgWT46OmlubGluZUdldCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46
OlB0clR5cGUga2V5KSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRy
PEs+Ojp2YWx1ZSwgTWFwcGVkUGVla1R5cGU+Ojp0eXBlCiB7CiAgICAgS2V5VmFsdWVQYWlyVHlw
ZSogZW50cnkgPSBjb25zdF9jYXN0PEhhc2hUYWJsZVR5cGUmPihtX2ltcGwpLnRlbXBsYXRlIGxv
b2t1cDxIYXNoTWFwVHJhbnNsYXRvcjxLZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+
PihrZXkpOwogICAgIGlmICghZW50cnkpCkBAIC00MjUsMjMgKzQyNSwyMyBAQCBpbmxpbmUgYXV0
byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjppbmxpCiAgICAgcmV0dXJuIE1hcHBlZFRyYWl0czo6
cGVlayhlbnRyeS0+dmFsdWUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6ZV90
IFk+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBLPgotYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpn
ZXQodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBlIGtleSkgY29uc3QgLT4gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6dmFsdWUsIE1hcHBlZFBlZWtUeXBlPjo6
dHlwZQorYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+OjpnZXQodHlwZW5hbWUgR2V0UHRy
SGVscGVyPEs+OjpQdHJUeXBlIGtleSkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
SXNTbWFydFB0cjxLPjo6dmFsdWUsIE1hcHBlZFBlZWtUeXBlPjo6dHlwZQogewogICAgIHJldHVy
biBpbmxpbmVHZXQoa2V5KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZ
PgogdGVtcGxhdGU8dHlwZW5hbWUgSz4KLWlubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywg
WD46OnJlbW92ZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUga2V5KSAtPiB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgYm9vbD46OnR5cGUKK2lu
bGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT46OnJlbW92ZSh0eXBlbmFtZSBHZXRQ
dHJIZWxwZXI8Sz46OlB0clR5cGUga2V5KSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1Nt
YXJ0UHRyPEs+Ojp2YWx1ZSwgYm9vbD46OnR5cGUKIHsKICAgICByZXR1cm4gcmVtb3ZlKGZpbmQo
a2V5KSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KIHRlbXBsYXRl
PHR5cGVuYW1lIEs+Ci1pbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojp0YWtlKHR5
cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSBrZXkpIC0+IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVlLCBNYXBwZWRUeXBlPjo6dHlwZQoraW5saW5lIGF1
dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPjo6dGFrZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8
Sz46OlB0clR5cGUga2V5KSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+
Ojp2YWx1ZSwgTWFwcGVkVHlwZT46OnR5cGUKIHsKICAgICBpdGVyYXRvciBpdCA9IGZpbmQoa2V5
KTsKICAgICBpZiAoaXQgPT0gZW5kKCkpCkBAIC00NTEsMTQgKzQ1MSwxNCBAQCBpbmxpbmUgYXV0
byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojp0YWtlCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0
eXBlbmFtZSBYPgotaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y2hlY2tDb25z
aXN0ZW5jeSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWT4KK2lubGluZSB2b2lkIEhhc2hN
YXA8VCwgVSwgViwgVywgWCwgWT46OmNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogewogICAgIG1f
aW1wbC5jaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGluZSBi
b29sIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmlzVmFsaWRLZXkoY29uc3QgS2V5VHlwZSYga2V5
KQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUg
VywgdHlwZW5hbWUgWCwgc2l6ZV90IFk+CitpbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcs
IFgsIFk+Ojppc1ZhbGlkS2V5KGNvbnN0IEtleVR5cGUmIGtleSkKIHsKICAgICBpZiAoS2V5VHJh
aXRzOjppc0RlbGV0ZWRWYWx1ZShrZXkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NzQs
MTMgKzQ3NCwxMyBAQCBpbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojppc1ZhCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1ib29sIG9wZXJhdG9yPT0oY29uc3Qg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgYSwgY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYg
YikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgorYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhc2hNYXA8
VCwgVSwgViwgVywgWCwgWT4mIGEsIGNvbnN0IEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT4mIGIp
CiB7CiAgICAgaWYgKGEuc2l6ZSgpICE9IGIuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNvbnN0X2l0
ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBV
LCBWLCBXLCBYLCBZPjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CiAKICAgICBjb25z
dF9pdGVyYXRvciBlbmQgPSBhLmVuZCgpOwogICAgIGNvbnN0X2l0ZXJhdG9yIG5vdEZvdW5kID0g
Yi5lbmQoKTsKQEAgLTQ5MywxNiArNDkzLDE2IEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNo
TWFwPFQsIFUsIFYsIFcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLWlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgYSwgY29uc3Qg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgYikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHNpemVfdCBZPgoraW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+JiBhLCBjb25z
dCBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+JiBiKQogewogICAgIHJldHVybiAhKGEgPT0gYik7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+Ci1pbmxpbmUgdm9pZCBjb3B5VG9WZWN0b3Io
Y29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgY29sbGVjdGlvbiwgWSYgdmVjdG9yKQordGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlw
ZW5hbWUgWCwgc2l6ZV90IFksIHR5cGVuYW1lIFo+CitpbmxpbmUgdm9pZCBjb3B5VG9WZWN0b3Io
Y29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPiYgY29sbGVjdGlvbiwgWiYgdmVjdG9yKQog
ewotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRl
cmF0b3IgaXRlcmF0b3I7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcs
IFgsIFk+Ojpjb25zdF9pdGVyYXRvciBpdGVyYXRvcjsKIAogICAgIHZlY3Rvci5yZXNpemUoY29s
bGVjdGlvbi5zaXplKCkpOwogCkBAIC01MTIsMTAgKzUxMiwxMCBAQCBpbmxpbmUgdm9pZCBjb3B5
VG9WZWN0b3IoY29uc3QgSGFzaE1hcDxUCiAgICAgICAgIHZlY3RvcltpXSA9IHsgKCppdCkua2V5
LCAoKml0KS52YWx1ZSB9OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgotaW5saW5lIHZv
aWQgY29weUtleXNUb1ZlY3Rvcihjb25zdCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+JiBjb2xsZWN0
aW9uLCBZJiB2ZWN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCBzaXplX3QgWSwgdHlwZW5hbWUgWj4KK2lubGlu
ZSB2b2lkIGNvcHlLZXlzVG9WZWN0b3IoY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPiYg
Y29sbGVjdGlvbiwgWiYgdmVjdG9yKQogewotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxU
LCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3I6OktleXMgaXRlcmF0b3I7CisgICAgdHlwZWRl
ZiB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsIFk+Ojpjb25zdF9pdGVyYXRvcjo6S2V5
cyBpdGVyYXRvcjsKICAgICAKICAgICB2ZWN0b3IucmVzaXplKGNvbGxlY3Rpb24uc2l6ZSgpKTsK
ICAgICAKQEAgLTUyNSwxMCArNTI1LDEwIEBAIGlubGluZSB2b2lkIGNvcHlLZXlzVG9WZWN0b3Io
Y29uc3QgSGFzaE0KICAgICAgICAgdmVjdG9yW2ldID0gKml0OwogfSAgCiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgs
IHR5cGVuYW1lIFk+Ci1pbmxpbmUgdm9pZCBjb3B5VmFsdWVzVG9WZWN0b3IoY29uc3QgSGFzaE1h
cDxULCBVLCBWLCBXLCBYPiYgY29sbGVjdGlvbiwgWSYgdmVjdG9yKQordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgc2l6
ZV90IFksIHR5cGVuYW1lIFo+CitpbmxpbmUgdm9pZCBjb3B5VmFsdWVzVG9WZWN0b3IoY29uc3Qg
SGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPiYgY29sbGVjdGlvbiwgWiYgdmVjdG9yKQogewotICAg
IHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3I6
OlZhbHVlcyBpdGVyYXRvcjsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwg
VywgWCwgWT46OmNvbnN0X2l0ZXJhdG9yOjpWYWx1ZXMgaXRlcmF0b3I7CiAgICAgCiAgICAgdmVj
dG9yLnJlc2l6ZShjb2xsZWN0aW9uLnNpemUoKSk7CiAgICAgCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9IYXNoU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvSGFzaFNldC5oCShyZXZp
c2lvbiAxODIwOTcpCisrKyBTb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4LCAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMwLDEwICsz
MCwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHN0cnVjdCBJZGVudGl0eUV4dHJhY3RvcjsK
ICAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzPiBjbGFzcyBIYXNoU2V0OworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4gY2xhc3MgSGFzaFNldDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZh
bHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8VmFsdWVBcmc+
OjpIYXNoLAotICAgICAgICB0eXBlbmFtZSBUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFZhbHVlQXJn
Pj4gY2xhc3MgSGFzaFNldCBmaW5hbCB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcs
IHR5cGVuYW1lIEhhc2hBcmcgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxWYWx1ZUFyZz46Okhhc2gs
IHR5cGVuYW1lIFRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8VmFsdWVBcmc+LCBzaXplX3QgaW5saW5l
Q2FwYWNpdHkgPSAwPgorICAgIGNsYXNzIEhhc2hTZXQgZmluYWwgewogICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBwcml2YXRlOgogICAgICAgICB0eXBlZGVmIEhhc2hBcmcg
SGFzaEZ1bmN0aW9uczsKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxWYWx1ZVR5cGUsIFZhbHVlVHlwZSwg
SWRlbnRpdHlFeHRyYWN0b3IsCi0gICAgICAgICAgICBIYXNoRnVuY3Rpb25zLCBWYWx1ZVRyYWl0
cywgVmFsdWVUcmFpdHM+IEhhc2hUYWJsZVR5cGU7CisgICAgICAgICAgICBIYXNoRnVuY3Rpb25z
LCBWYWx1ZVRyYWl0cywgVmFsdWVUcmFpdHMsIGlubGluZUNhcGFjaXR5PiBIYXNoVGFibGVUeXBl
OwogCiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JB
ZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4gaXRlcmF0b3I7CkBAIC0xNDIsOTAgKzE0
Miw5MCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSB2b2lkIEhh
c2hTZXQ8VCwgVSwgVj46OnN3YXAoSGFzaFNldCYgb3RoZXIpCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6ZV90IFc+CisgICAgaW5saW5lIHZvaWQg
SGFzaFNldDxULCBVLCBWLCBXPjo6c3dhcChIYXNoU2V0JiBvdGhlcikKICAgICB7CiAgICAgICAg
IG1faW1wbC5zd2FwKG90aGVyLm1faW1wbCk7IAogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAgaW5saW5lIHVuc2lnbmVkIEhhc2hT
ZXQ8VCwgVSwgVj46OnNpemUoKSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFYsIHNpemVfdCBXPgorICAgIGlubGluZSB1bnNpZ25lZCBIYXNoU2V0
PFQsIFUsIFYsIFc+OjpzaXplKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwu
c2l6ZSgpOyAKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWPgotICAgIGlubGluZSB1bnNpZ25lZCBIYXNoU2V0PFQsIFUsIFY+OjpjYXBhY2l0
eSgpIGNvbnN0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
Viwgc2l6ZV90IFc+CisgICAgaW5saW5lIHVuc2lnbmVkIEhhc2hTZXQ8VCwgVSwgViwgVz46OmNh
cGFjaXR5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwuY2FwYWNpdHkoKTsg
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
Vj4KLSAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+Ojppc0VtcHR5KCkgY29uc3QKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4K
KyAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFYsIFc+Ojppc0VtcHR5KCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwuaXNFbXB0eSgpOyAKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBhdXRv
IEhhc2hTZXQ8VCwgVSwgVj46OmJlZ2luKCkgY29uc3QgLT4gaXRlcmF0b3IKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KKyAgICBpbmxp
bmUgYXV0byBIYXNoU2V0PFQsIFUsIFYsIFc+OjpiZWdpbigpIGNvbnN0IC0+IGl0ZXJhdG9yCiAg
ICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLmJlZ2luKCk7IAogICAgIH0KIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAgaW5saW5lIGF1dG8g
SGFzaFNldDxULCBVLCBWPjo6ZW5kKCkgY29uc3QgLT4gaXRlcmF0b3IKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KKyAgICBpbmxpbmUg
YXV0byBIYXNoU2V0PFQsIFUsIFYsIFc+OjplbmQoKSBjb25zdCAtPiBpdGVyYXRvcgogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1faW1wbC5lbmQoKTsgCiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgYXV0byBIYXNoU2V0
PFQsIFUsIFY+OjpmaW5kKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNvbnN0IC0+IGl0ZXJhdG9y
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6ZV90
IFc+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWLCBXPjo6ZmluZChjb25zdCBWYWx1
ZVR5cGUmIHZhbHVlKSBjb25zdCAtPiBpdGVyYXRvcgogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
aW1wbC5maW5kKHZhbHVlKTsgCiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+Ojpj
b250YWlucyhjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHNpemVfdCBXPgorICAgIGlubGluZSBib29s
IEhhc2hTZXQ8VCwgVSwgViwgVz46OmNvbnRhaW5zKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLmNvbnRhaW5zKHZhbHVlKTsgCiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+Ci0gICAgaW5s
aW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6ZmluZChjb25z
dCBUJiB2YWx1ZSkgY29uc3QgLT4gaXRlcmF0b3IKKyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFZh
bHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6ZmluZChjb25zdCBU
JiB2YWx1ZSkgY29uc3QgLT4gaXRlcmF0b3IKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwu
dGVtcGxhdGUgZmluZDxIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2
YWx1ZSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1l
IFQ+Ci0gICAgaW5saW5lIGJvb2wgSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
Pjo6Y29udGFpbnMoY29uc3QgVCYgdmFsdWUpIGNvbnN0CisgICAgaW5saW5lIGJvb2wgSGFzaFNl
dDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmNvbnRhaW5z
KGNvbnN0IFQmIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1w
bGF0ZSBjb250YWluczxIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2
YWx1ZSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgVj4KLSAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFQsIFUsIFY+OjphZGQoY29uc3QgVmFs
dWVUeXBlJiB2YWx1ZSkgLT4gQWRkUmVzdWx0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6ZV90IFc+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxU
LCBVLCBWLCBXPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIC0+IEFkZFJlc3VsdAogICAg
IHsKICAgICAgICAgcmV0dXJuIG1faW1wbC5hZGQodmFsdWUpOwogICAgIH0KIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAgaW5saW5lIGF1dG8g
SGFzaFNldDxULCBVLCBWPjo6YWRkKFZhbHVlVHlwZSYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4K
KyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFQsIFUsIFYsIFc+OjphZGQoVmFsdWVUeXBlJiYgdmFs
dWUpIC0+IEFkZFJlc3VsdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC5hZGQoV1RGOjpt
b3ZlKHZhbHVlKSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5
cGVuYW1lIFQ+Ci0gICAgaW5saW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzPjo6YWRkKGNvbnN0IFQmIHZhbHVlKSAtPiBBZGRSZXN1bHQKKyAgICBpbmxpbmUgYXV0
byBIYXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6
YWRkKGNvbnN0IFQmIHZhbHVlKSAtPiBBZGRSZXN1bHQKICAgICB7CiAgICAgICAgIHJldHVybiBt
X2ltcGwudGVtcGxhdGUgYWRkUGFzc2luZ0hhc2hDb2RlPEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRl
cjxIYXNoVHJhbnNsYXRvcj4+KHZhbHVlLCB2YWx1ZSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBJdGVyYXRvclR5cGU+Ci0gICAgaW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBWPjo6YWRk
KEl0ZXJhdG9yVHlwZSBiZWdpbiwgSXRlcmF0b3JUeXBlIGVuZCkKKyAgICBpbmxpbmUgYm9vbCBI
YXNoU2V0PFQsIFUsIFYsIFc+OjphZGQoSXRlcmF0b3JUeXBlIGJlZ2luLCBJdGVyYXRvclR5cGUg
ZW5kKQogICAgIHsKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIGZvciAo
SXRlcmF0b3JUeXBlIGl0ZXIgPSBiZWdpbjsgaXRlciAhPSBlbmQ7ICsraXRlcikKQEAgLTIzMyw4
ICsyMzMsOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAg
ICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgc2l6ZV90IFc+Cisg
ICAgaW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBWLCBXPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQog
ICAgIHsKICAgICAgICAgaWYgKGl0Lm1faW1wbCA9PSBtX2ltcGwuZW5kKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0yNDMsMjAgKzI0MywyMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+Ojpy
ZW1vdmUoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KKyAgICBpbmxpbmUgYm9vbCBIYXNoU2V0
PFQsIFUsIFYsIFc+OjpyZW1vdmUoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiByZW1vdmUoZmluZCh2YWx1ZSkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAgaW5saW5lIHZvaWQgSGFzaFNl
dDxULCBVLCBWPjo6Y2xlYXIoKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUs
IHR5cGVuYW1lIFYsIHNpemVfdCBXPgorICAgIGlubGluZSB2b2lkIEhhc2hTZXQ8VCwgVSwgViwg
Vz46OmNsZWFyKCkKICAgICB7CiAgICAgICAgIG1faW1wbC5jbGVhcigpOyAKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGlu
ZSBhdXRvIEhhc2hTZXQ8VCwgVSwgVj46OnRha2UoaXRlcmF0b3IgaXQpIC0+IFZhbHVlVHlwZQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHNpemVfdCBX
PgorICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VCwgVSwgViwgVz46OnRha2UoaXRlcmF0b3IgaXQp
IC0+IFZhbHVlVHlwZQogICAgIHsKICAgICAgICAgaWYgKGl0ID09IGVuZCgpKQogICAgICAgICAg
ICAgcmV0dXJuIFZhbHVlVHJhaXRzOjplbXB0eVZhbHVlKCk7CkBAIC0yNjYsNDggKzI2Niw0OCBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBh
dXRvIEhhc2hTZXQ8VCwgVSwgVj46OnRha2UoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gVmFs
dWVUeXBlCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwg
c2l6ZV90IFc+CisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWLCBXPjo6dGFrZShjb25z
dCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBWYWx1ZVR5cGUKICAgICB7CiAgICAgICAgIHJldHVybiB0
YWtlKGZpbmQodmFsdWUpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VCwgVSwgVj46OnRh
a2VBbnkoKSAtPiBWYWx1ZVR5cGUKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCBzaXplX3QgVz4KKyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFQsIFUsIFYs
IFc+Ojp0YWtlQW55KCkgLT4gVmFsdWVUeXBlCiAgICAgewogICAgICAgICByZXR1cm4gdGFrZShi
ZWdpbigpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHNpemVfdCBpbmxp
bmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPgotICAgIGlubGluZSBhdXRvIEhh
c2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmZpbmQodHlwZW5hbWUgR2V0UHRy
SGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgaXRlcmF0b3I+Ojp0eXBlCisgICAgaW5saW5lIGF1dG8g
SGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmZp
bmQodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSBjb25zdCAtPiB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgaXRlcmF0b3I+Ojp0eXBl
CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8SGFzaFNldFRyYW5z
bGF0b3I8SGFzaEZ1bmN0aW9ucz4+KHZhbHVlKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBW
PgotICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46
OmNvbnRhaW5zKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgY29uc3Qg
LT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0
eXBlCisgICAgaW5saW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBpbmxpbmVDYXBhY2l0eT46OmNvbnRhaW5zKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRy
VHlwZSB2YWx1ZSkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxW
Pjo6dmFsdWUsIGJvb2w+Ojp0eXBlCiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBs
YXRlIGNvbnRhaW5zPEhhc2hTZXRUcmFuc2xhdG9yPEhhc2hGdW5jdGlvbnM+Pih2YWx1ZSk7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFZhbHVl
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpyZW1vdmUodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+
OjpQdHJUeXBlIHZhbHVlKSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+
Ojp2YWx1ZSwgYm9vbD46OnR5cGUKKyAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFZhbHVlLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6cmVtb3ZlKHR5cGVuYW1lIEdldFB0
ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNT
bWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0eXBlCiAgICAgewogICAgICAgICByZXR1cm4gcmVt
b3ZlKGZpbmQodmFsdWUpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eT4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPgotICAgIGlubGlu
ZSBhdXRvIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OnRha2UodHlwZW5h
bWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgVmFsdWVUeXBlPjo6dHlwZQorICAgIGlubGluZSBh
dXRvIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgaW5saW5lQ2FwYWNpdHk+
Ojp0YWtlKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgLT4gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIFZhbHVlVHlwZT46OnR5cGUK
ICAgICB7CiAgICAgICAgIHJldHVybiB0YWtlKGZpbmQodmFsdWUpKTsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBi
b29sIEhhc2hTZXQ8VCwgVSwgVj46OmlzVmFsaWRWYWx1ZShjb25zdCBWYWx1ZVR5cGUmIHZhbHVl
KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHNpemVf
dCBXPgorICAgIGlubGluZSBib29sIEhhc2hTZXQ8VCwgVSwgViwgVz46OmlzVmFsaWRWYWx1ZShj
b25zdCBWYWx1ZVR5cGUmIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKFZhbHVlVHJhaXRzOjpp
c0RlbGV0ZWRWYWx1ZSh2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMzYs
OCArMzM2LDggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICB2ZWN0b3JbaV0gPSAqaXQ7
CiAgICAgfSAgCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWPgotICAgIGlubGluZSBib29sIEhhc2hTZXQ8VCwgVSwgVj46Om9wZXJhdG9yPT0oY29uc3Qg
SGFzaFNldCYgb3RoZXIpIGNvbnN0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgViwgc2l6ZV90IFc+CisgICAgaW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBW
LCBXPjo6b3BlcmF0b3I9PShjb25zdCBIYXNoU2V0JiBvdGhlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIGlmIChzaXplKCkgIT0gb3RoZXIuc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpJbmRleDogU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvSGFzaFRhYmxlLmgJKHJldmlzaW9uIDE4MjA5NykKKysrIFNvdXJjZS9XVEYvd3Rm
L0hhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMTEsIDIwMTIsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA4IERhdmlkIExldmluIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgpAQCAtNzMsNDUgKzczLDQ1IEBAIG5hbWVzcGFjZSBXVEYgewogCiAjZW5kaWYKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMs
IHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgIGNsYXNzIEhh
c2hUYWJsZTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KICAg
ICBjbGFzcyBIYXNoVGFibGVJdGVyYXRvcjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4KICAgICBjbGFzcyBIYXNoVGFibGVDb25zdEl0ZXJhdG9yOwogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cz4KLSAgICB2b2lkIGFkZEl0ZXJhdG9yKGNvbnN0IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBF
eHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiosCi0gICAgICAgIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz4qKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
CisgICAgdm9pZCBhZGRJdGVyYXRvcihjb25zdCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+KiwK
KyAgICAgICAgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4qKTsKIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHM+Ci0gICAgdm9pZCByZW1vdmVJdGVyYXRvcihIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Kik7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHZvaWQgcmVtb3ZlSXRlcmF0
b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4qKTsKIAogI2lmICFDSEVD
S19IQVNIVEFCTEVfSVRFUkFUT1JTCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGlubGluZSB2b2lkIGFkZEl0
ZXJhdG9yKGNvbnN0IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPiosCi0gICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4q
KSB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgaW5saW5lIHZvaWQg
YWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5PiosCisgICAgICAgIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+KikgeyB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgot
ICAgIGlubGluZSB2b2lkIHJlbW92ZUl0ZXJhdG9yKEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5
LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qKSB7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgaW5saW5lIHZvaWQgcmVt
b3ZlSXRlcmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3Is
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4qKSB7IH0K
IAogI2VuZGlmCiAKICAgICB0eXBlZGVmIGVudW0geyBIYXNoSXRlbUtub3duR29vZCB9IEhhc2hJ
dGVtS25vd25Hb29kVGFnOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHk+CiAgICAgY2xhc3MgSGFzaFRhYmxlQ29uc3RJdGVyYXRvciB7CiAgICAgcHJpdmF0ZToK
LSAgICAgICAgdHlwZWRlZiBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gSGFzaFRhYmxlVHlwZTsKLSAgICAgICAgdHlwZWRl
ZiBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPiBpdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVD
b25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+IGNvbnN0X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxL
ZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBp
bmxpbmVDYXBhY2l0eT4gSGFzaFRhYmxlVHlwZTsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJ
dGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4gaXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgSGFzaFRh
YmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT4gY29uc3RfaXRlcmF0b3I7CiAgICAgICAg
IHR5cGVkZWYgVmFsdWUgVmFsdWVUeXBlOwogICAgICAgICB0eXBlZGVmIGNvbnN0IFZhbHVlVHlw
ZSYgUmVmZXJlbmNlVHlwZTsKICAgICAgICAgdHlwZWRlZiBjb25zdCBWYWx1ZVR5cGUqIFBvaW50
ZXJUeXBlOwogCi0gICAgICAgIGZyaWVuZCBjbGFzcyBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz47Ci0gICAgICAgIGZyaWVu
ZCBjbGFzcyBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
LCBpbmxpbmVDYXBhY2l0eT47CisgICAgICAgIGZyaWVuZCBjbGFzcyBIYXNoVGFibGVJdGVyYXRv
cjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
LCBpbmxpbmVDYXBhY2l0eT47CiAKICAgICAgICAgdm9pZCBza2lwRW1wdHlCdWNrZXRzKCkKICAg
ICAgICAgewpAQCAtMjM2LDE3ICsyMzYsMTcgQEAgbmFtZXNwYWNlIFdURiB7CiAjZW5kaWYKICAg
ICB9OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5
cGVuYW1lIEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1l
IFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAg
Y2xhc3MgSGFzaFRhYmxlSXRlcmF0b3IgewogICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYg
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7Ci0gICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0
b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz4gaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXks
IFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBjb25z
dF9pdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+IEhh
c2hUYWJsZVR5cGU7CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2Fw
YWNpdHk+IGl0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywg
aW5saW5lQ2FwYWNpdHk+IGNvbnN0X2l0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIFZhbHVlIFZh
bHVlVHlwZTsKICAgICAgICAgdHlwZWRlZiBWYWx1ZVR5cGUmIFJlZmVyZW5jZVR5cGU7CiAgICAg
ICAgIHR5cGVkZWYgVmFsdWVUeXBlKiBQb2ludGVyVHlwZTsKIAotICAgICAgICBmcmllbmQgY2xh
c3MgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+OworICAgICAgICBmcmllbmQgY2xhc3MgSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFj
aXR5PjsKIAogICAgICAgICBIYXNoVGFibGVJdGVyYXRvcihIYXNoVGFibGVUeXBlKiB0YWJsZSwg
UG9pbnRlclR5cGUgcG9zLCBQb2ludGVyVHlwZSBlbmQpIDogbV9pdGVyYXRvcih0YWJsZSwgcG9z
LCBlbmQpIHsgfQogICAgICAgICBIYXNoVGFibGVJdGVyYXRvcihIYXNoVGFibGVUeXBlKiB0YWJs
ZSwgUG9pbnRlclR5cGUgcG9zLCBQb2ludGVyVHlwZSBlbmQsIEhhc2hJdGVtS25vd25Hb29kVGFn
IHRhZykgOiBtX2l0ZXJhdG9yKHRhYmxlLCBwb3MsIGVuZCwgdGFnKSB7IH0KQEAgLTI4OSwxMSAr
Mjg5LDExIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBib29sIGlzTmV3RW50cnk7CiAgICAg
fTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
IEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBl
bmFtZSBLZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgIGNs
YXNzIEhhc2hUYWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUl0
ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHM+IGl0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4g
Y29uc3RfaXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBW
YWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5l
Q2FwYWNpdHk+IGl0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0
b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cywgaW5saW5lQ2FwYWNpdHk+IGNvbnN0X2l0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIFRyYWl0
cyBWYWx1ZVRyYWl0czsKICAgICAgICAgdHlwZWRlZiBLZXkgS2V5VHlwZTsKICAgICAgICAgdHlw
ZWRlZiBWYWx1ZSBWYWx1ZVR5cGU7CkBAIC0zNDksMTAgKzM0OSwxMCBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAgICAgfkhhc2hUYWJsZSgpIAogICAgICAgICB7CiAgICAgICAgICAgICBpbnZhbGlk
YXRlSXRlcmF0b3JzKCk7IAotICAgICAgICAgICAgaWYgKG1fdGFibGUpCi0gICAgICAgICAgICAg
ICAgZGVhbGxvY2F0ZVRhYmxlKG1fdGFibGUsIG1fdGFibGVTaXplKTsKKyAgICAgICAgICAgIGlm
IChtX3N0b3JhZ2UudGFibGUudGFibGUpCisgICAgICAgICAgICAgICAgZGVhbGxvY2F0ZVRhYmxl
KG1fc3RvcmFnZS50YWJsZS50YWJsZSwgbV9zdG9yYWdlLnRhYmxlLnNpemUpOwogI2lmIENIRUNL
X0hBU0hUQUJMRV9VU0VfQUZURVJfREVTVFJVQ1RJT04KLSAgICAgICAgICAgIG1fdGFibGUgPSAo
VmFsdWVUeXBlKikodWludHB0cl90KTB4YmJhZGJlZWY7CisgICAgICAgICAgICBtX3N0b3JhZ2Uu
dGFibGUudGFibGUgPSAoVmFsdWVUeXBlKikodWludHB0cl90KTB4YmJhZGJlZWY7CiAjZW5kaWYK
ICAgICAgICAgfQogCkBAIC0zNjYsMTMgKzM2NiwxMyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgLy8gV2hlbiB0aGUgaGFzaCB0YWJsZSBpcyBlbXB0eSwganVzdCByZXR1cm4gdGhlIHNhbWUg
aXRlcmF0b3IgZm9yIGVuZCBhcyBmb3IgYmVnaW4uCiAgICAgICAgIC8vIFRoaXMgaXMgbW9yZSBl
ZmZpY2llbnQgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIHRvIHNraXAgYWxsIHRoZSBlbXB0eSBhbmQg
ZGVsZXRlZAogICAgICAgICAvLyBidWNrZXRzLCBhbmQgaXRlcmF0aW5nIGFuIGVtcHR5IHRhYmxl
IGlzIGEgY29tbW9uIGNhc2UgdGhhdCdzIHdvcnRoIG9wdGltaXppbmcuCi0gICAgICAgIGl0ZXJh
dG9yIGJlZ2luKCkgeyByZXR1cm4gaXNFbXB0eSgpID8gZW5kKCkgOiBtYWtlSXRlcmF0b3IobV90
YWJsZSk7IH0KLSAgICAgICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gbWFrZUtub3duR29vZEl0
ZXJhdG9yKG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0KLSAgICAgICAgY29uc3RfaXRlcmF0b3Ig
YmVnaW4oKSBjb25zdCB7IHJldHVybiBpc0VtcHR5KCkgPyBlbmQoKSA6IG1ha2VDb25zdEl0ZXJh
dG9yKG1fdGFibGUpOyB9Ci0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0
dXJuIG1ha2VLbm93bkdvb2RDb25zdEl0ZXJhdG9yKG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0K
KyAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBpc0VtcHR5KCkgPyBlbmQoKSA6IG1h
a2VJdGVyYXRvcihtX3N0b3JhZ2UudGFibGUudGFibGUpOyB9CisgICAgICAgIGl0ZXJhdG9yIGVu
ZCgpIHsgcmV0dXJuIG1ha2VLbm93bkdvb2RJdGVyYXRvcihtX3N0b3JhZ2UudGFibGUudGFibGUg
KyBtX3N0b3JhZ2UudGFibGUuc2l6ZSk7IH0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4o
KSBjb25zdCB7IHJldHVybiBpc0VtcHR5KCkgPyBlbmQoKSA6IG1ha2VDb25zdEl0ZXJhdG9yKG1f
c3RvcmFnZS50YWJsZS50YWJsZSk7IH0KKyAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29u
c3QgeyByZXR1cm4gbWFrZUtub3duR29vZENvbnN0SXRlcmF0b3IobV9zdG9yYWdlLnRhYmxlLnRh
YmxlICsgbV9zdG9yYWdlLnRhYmxlLnNpemUpOyB9CiAKICAgICAgICAgdW5zaWduZWQgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fa2V5Q291bnQ7IH0KLSAgICAgICAgdW5zaWduZWQgY2FwYWNpdHko
KSBjb25zdCB7IHJldHVybiBtX3RhYmxlU2l6ZTsgfQorICAgICAgICB1bnNpZ25lZCBjYXBhY2l0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS50YWJsZS5zaXplOyB9CiAgICAgICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2tleUNvdW50OyB9CiAKICAgICAgICAgQWRkUmVz
dWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSB7IHJldHVybiBhZGQ8SWRlbnRpdHlUcmFu
c2xhdG9yVHlwZT4oRXh0cmFjdG9yOjpleHRyYWN0KHZhbHVlKSwgdmFsdWUpOyB9CkBAIC00Mzcs
MTEgKzQzNywxMSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdm9pZCByZW1vdmVBbmRJbnZh
bGlkYXRlKFZhbHVlVHlwZSopOwogICAgICAgICB2b2lkIHJlbW92ZShWYWx1ZVR5cGUqKTsKIAot
ICAgICAgICBib29sIHNob3VsZEV4cGFuZCgpIGNvbnN0IHsgcmV0dXJuIChtX2tleUNvdW50ICsg
bV9kZWxldGVkQ291bnQpICogbV9tYXhMb2FkID49IG1fdGFibGVTaXplOyB9Ci0gICAgICAgIGJv
b2wgbXVzdFJlaGFzaEluUGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2tleUNvdW50ICogbV9taW5M
b2FkIDwgbV90YWJsZVNpemUgKiAyOyB9Ci0gICAgICAgIGJvb2wgc2hvdWxkU2hyaW5rKCkgY29u
c3QgeyByZXR1cm4gbV9rZXlDb3VudCAqIG1fbWluTG9hZCA8IG1fdGFibGVTaXplICYmIG1fdGFi
bGVTaXplID4gS2V5VHJhaXRzOjptaW5pbXVtVGFibGVTaXplOyB9CisgICAgICAgIGJvb2wgc2hv
dWxkRXhwYW5kKCkgY29uc3QgeyByZXR1cm4gKG1fa2V5Q291bnQgKyBtX3N0b3JhZ2UudGFibGUu
ZGVsZXRlZENvdW50KSAqIG1fbWF4TG9hZCA+PSBtX3N0b3JhZ2UudGFibGUuc2l6ZTsgfQorICAg
ICAgICBib29sIG11c3RSZWhhc2hJblBsYWNlKCkgY29uc3QgeyByZXR1cm4gbV9rZXlDb3VudCAq
IG1fbWluTG9hZCA8IG1fc3RvcmFnZS50YWJsZS5zaXplICogMjsgfQorICAgICAgICBib29sIHNo
b3VsZFNocmluaygpIGNvbnN0IHsgcmV0dXJuIG1fa2V5Q291bnQgKiBtX21pbkxvYWQgPCBtX3N0
b3JhZ2UudGFibGUuc2l6ZSAmJiBtX3N0b3JhZ2UudGFibGUuc2l6ZSA+IEtleVRyYWl0czo6bWlu
aW11bVRhYmxlU2l6ZTsgfQogICAgICAgICBWYWx1ZVR5cGUqIGV4cGFuZChWYWx1ZVR5cGUqIGVu
dHJ5ID0gbnVsbHB0cik7Ci0gICAgICAgIHZvaWQgc2hyaW5rKCkgeyByZWhhc2gobV90YWJsZVNp
emUgLyAyLCBudWxscHRyKTsgfQorICAgICAgICB2b2lkIHNocmluaygpIHsgcmVoYXNoKG1fc3Rv
cmFnZS50YWJsZS5zaXplIC8gMiwgbnVsbHB0cik7IH0KIAogICAgICAgICBWYWx1ZVR5cGUqIHJl
aGFzaCh1bnNpZ25lZCBuZXdUYWJsZVNpemUsIFZhbHVlVHlwZSogZW50cnkpOwogICAgICAgICBW
YWx1ZVR5cGUqIHJlaW5zZXJ0KFZhbHVlVHlwZSYmKTsKQEAgLTQ1MiwxMCArNDUyLDEwIEBAIG5h
bWVzcGFjZSBXVEYgewogICAgICAgICBGdWxsTG9va3VwVHlwZSBtYWtlTG9va3VwUmVzdWx0KFZh
bHVlVHlwZSogcG9zaXRpb24sIGJvb2wgZm91bmQsIHVuc2lnbmVkIGhhc2gpCiAgICAgICAgICAg
ICB7IHJldHVybiBGdWxsTG9va3VwVHlwZShMb29rdXBUeXBlKHBvc2l0aW9uLCBmb3VuZCksIGhh
c2gpOyB9CiAKLSAgICAgICAgaXRlcmF0b3IgbWFrZUl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSB7
IHJldHVybiBpdGVyYXRvcih0aGlzLCBwb3MsIG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0KLSAg
ICAgICAgY29uc3RfaXRlcmF0b3IgbWFrZUNvbnN0SXRlcmF0b3IoVmFsdWVUeXBlKiBwb3MpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJsZSArIG1fdGFibGVT
aXplKTsgfQotICAgICAgICBpdGVyYXRvciBtYWtlS25vd25Hb29kSXRlcmF0b3IoVmFsdWVUeXBl
KiBwb3MpIHsgcmV0dXJuIGl0ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJsZSArIG1fdGFibGVTaXpl
LCBIYXNoSXRlbUtub3duR29vZCk7IH0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgbWFrZUtub3du
R29vZENvbnN0SXRlcmF0b3IoVmFsdWVUeXBlKiBwb3MpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2l0
ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJsZSArIG1fdGFibGVTaXplLCBIYXNoSXRlbUtub3duR29v
ZCk7IH0KKyAgICAgICAgaXRlcmF0b3IgbWFrZUl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSB7IHJl
dHVybiBpdGVyYXRvcih0aGlzLCBwb3MsIG1fc3RvcmFnZS50YWJsZS50YWJsZSArIG1fc3RvcmFn
ZS50YWJsZS5zaXplKTsgfQorICAgICAgICBjb25zdF9pdGVyYXRvciBtYWtlQ29uc3RJdGVyYXRv
cihWYWx1ZVR5cGUqIHBvcykgY29uc3QgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IodGhpcywgcG9z
LCBtX3N0b3JhZ2UudGFibGUudGFibGUgKyBtX3N0b3JhZ2UudGFibGUuc2l6ZSk7IH0KKyAgICAg
ICAgaXRlcmF0b3IgbWFrZUtub3duR29vZEl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSB7IHJldHVy
biBpdGVyYXRvcih0aGlzLCBwb3MsIG1fc3RvcmFnZS50YWJsZS50YWJsZSArIG1fc3RvcmFnZS50
YWJsZS5zaXplLCBIYXNoSXRlbUtub3duR29vZCk7IH0KKyAgICAgICAgY29uc3RfaXRlcmF0b3Ig
bWFrZUtub3duR29vZENvbnN0SXRlcmF0b3IoVmFsdWVUeXBlKiBwb3MpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0X2l0ZXJhdG9yKHRoaXMsIHBvcywgbV9zdG9yYWdlLnRhYmxlLnRhYmxlICsgbV9zdG9y
YWdlLnRhYmxlLnNpemUsIEhhc2hJdGVtS25vd25Hb29kKTsgfQogCiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAogICAgICAgICB2b2lkIGNoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKSBjb25z
dDsKQEAgLTQ3MSwxMiArNDcxLDE2IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBtX21heExvYWQgPSAyOwogICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgbV9taW5Mb2FkID0gNjsKLQotICAgICAgICBWYWx1ZVR5cGUqIG1fdGFibGU7Ci0gICAg
ICAgIHVuc2lnbmVkIG1fdGFibGVTaXplOwotICAgICAgICB1bnNpZ25lZCBtX3RhYmxlU2l6ZU1h
c2s7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgVmFsdWVUeXBl
IGFycmF5W2lubGluZUNhcGFjaXR5XSBhbmQgdXNlIGl0IGZvciBzbWFsbCBzZXRzLgorICAgICAg
ICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBWYWx1ZVR5cGUqIHRhYmxlOworICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHNpemU7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgc2l6ZU1h
c2s7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgZGVsZXRlZENvdW50OworICAgICAgICAgICAg
fSB0YWJsZTsKKyAgICAgICAgfSBtX3N0b3JhZ2U7CiAgICAgICAgIHVuc2lnbmVkIG1fa2V5Q291
bnQ7Ci0gICAgICAgIHVuc2lnbmVkIG1fZGVsZXRlZENvdW50OwogCiAjaWYgQ0hFQ0tfSEFTSFRB
QkxFX0lURVJBVE9SUwogICAgIHB1YmxpYzoKQEAgLTUzMCwxMyArNTM0LDEwIEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgICAgICBDT01QSUxFX0FTU0VSVCh2YWx1ZSA+ICgyICogc2l6ZSksIEhhc2hU
YWJsZUNhcGFjaXR5SG9sZHNDb250ZW50U2l6ZSk7CiAgICAgfTsKIAotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAg
aW5saW5lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cywgS2V5VHJhaXRzPjo6SGFzaFRhYmxlKCkKLSAgICAgICAgOiBtX3RhYmxlKDApCi0gICAg
ICAgICwgbV90YWJsZVNpemUoMCkKLSAgICAgICAgLCBtX3RhYmxlU2l6ZU1hc2soMCkKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3Is
IHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJh
aXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgaW5saW5lIEhhc2hUYWJsZTxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVD
YXBhY2l0eT46Okhhc2hUYWJsZSgpCisgICAgICAgIDogbV9zdG9yYWdlKHt7bnVsbHB0ciwgMCwg
MCwgMH19KQogICAgICAgICAsIG1fa2V5Q291bnQoMCkKLSAgICAgICAgLCBtX2RlbGV0ZWRDb3Vu
dCgwKQogI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKICAgICAgICAgLCBtX2l0ZXJhdG9y
cygwKQogICAgICAgICAsIG1fbXV0ZXgoc3RkOjptYWtlX3VuaXF1ZTxzdGQ6Om11dGV4PigpKQpA
QCAtNTU5LDE3ICs1NjAsMTcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICNpZiBBU1NFUlRfRElTQUJM
RUQKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
IEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBl
bmFtZSBLZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPgotICAgIGlubGluZSB2
b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPjo6Y2hlY2tLZXkoY29uc3QgVCYpCisgICAgaW5saW5lIHZvaWQgSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHMsIGlubGluZUNhcGFjaXR5Pjo6Y2hlY2tLZXkoY29uc3QgVCYpCiAgICAgewogICAgIH0KIAog
I2Vsc2UKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPgotICAgIHZvaWQg
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+OjpjaGVja0tleShjb25zdCBUJiBrZXkpCisgICAgdm9pZCBIYXNoVGFibGU8S2V5
LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5s
aW5lQ2FwYWNpdHk+OjpjaGVja0tleShjb25zdCBUJiBrZXkpCiAgICAgewogICAgICAgICBpZiAo
IUhhc2hGdW5jdGlvbnM6OnNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtNTgzLDE1ICs1ODQsMTUgQEAgbmFtZXNwYWNlIFdURiB7CiAKICNlbmRp
ZgogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
RXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVu
YW1lIEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIGF1
dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+Ojpsb29rdXAoY29uc3QgVCYga2V5KSAtPiBWYWx1ZVR5cGUqCisgICAgaW5s
aW5lIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6bG9va3VwKGNvbnN0IFQmIGtleSkg
LT4gVmFsdWVUeXBlKgogICAgIHsKICAgICAgICAgY2hlY2tLZXk8SGFzaFRyYW5zbGF0b3I+KGtl
eSk7CiAKICAgICAgICAgdW5zaWduZWQgayA9IDA7Ci0gICAgICAgIHVuc2lnbmVkIHNpemVNYXNr
ID0gbV90YWJsZVNpemVNYXNrOwotICAgICAgICBWYWx1ZVR5cGUqIHRhYmxlID0gbV90YWJsZTsK
KyAgICAgICAgdW5zaWduZWQgc2l6ZU1hc2sgPSBtX3N0b3JhZ2UudGFibGUuc2l6ZU1hc2s7Cisg
ICAgICAgIFZhbHVlVHlwZSogdGFibGUgPSBtX3N0b3JhZ2UudGFibGUudGFibGU7CiAgICAgICAg
IHVuc2lnbmVkIGggPSBIYXNoVHJhbnNsYXRvcjo6aGFzaChrZXkpOwogICAgICAgICB1bnNpZ25l
ZCBpID0gaCAmIHNpemVNYXNrOwogCkBAIC02MzksMTYgKzY0MCwxNiBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAgICAgfQogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlw
ZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
S2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5PgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFt
ZSBUPgotICAgIGlubGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6bG9va3VwRm9yV3JpdGluZyhjb25zdCBU
JiBrZXkpIC0+IExvb2t1cFR5cGUKKyAgICBpbmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2Fw
YWNpdHk+Ojpsb29rdXBGb3JXcml0aW5nKGNvbnN0IFQmIGtleSkgLT4gTG9va3VwVHlwZQogICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fdGFibGUpOworICAgICAgICBBU1NFUlQobV9zdG9yYWdlLnRh
YmxlLnRhYmxlKTsKICAgICAgICAgY2hlY2tLZXk8SGFzaFRyYW5zbGF0b3I+KGtleSk7CiAKICAg
ICAgICAgdW5zaWduZWQgayA9IDA7Ci0gICAgICAgIFZhbHVlVHlwZSogdGFibGUgPSBtX3RhYmxl
OwotICAgICAgICB1bnNpZ25lZCBzaXplTWFzayA9IG1fdGFibGVTaXplTWFzazsKKyAgICAgICAg
VmFsdWVUeXBlKiB0YWJsZSA9IG1fc3RvcmFnZS50YWJsZS50YWJsZTsKKyAgICAgICAgdW5zaWdu
ZWQgc2l6ZU1hc2sgPSBtX3N0b3JhZ2UudGFibGUuc2l6ZU1hc2s7CiAgICAgICAgIHVuc2lnbmVk
IGggPSBIYXNoVHJhbnNsYXRvcjo6aGFzaChrZXkpOwogICAgICAgICB1bnNpZ25lZCBpID0gaCAm
IHNpemVNYXNrOwogCkBAIC03MDAsMTYgKzcwMSwxNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgfQogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0
eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5
PgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPgotICAg
IGlubGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6ZnVsbExvb2t1cEZvcldyaXRpbmcoY29uc3QgVCYga2V5
KSAtPiBGdWxsTG9va3VwVHlwZQorICAgIGlubGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVl
LCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBh
Y2l0eT46OmZ1bGxMb29rdXBGb3JXcml0aW5nKGNvbnN0IFQmIGtleSkgLT4gRnVsbExvb2t1cFR5
cGUKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3RhYmxlKTsKKyAgICAgICAgQVNTRVJUKG1fc3Rv
cmFnZS50YWJsZS50YWJsZSk7CiAgICAgICAgIGNoZWNrS2V5PEhhc2hUcmFuc2xhdG9yPihrZXkp
OwogCiAgICAgICAgIHVuc2lnbmVkIGsgPSAwOwotICAgICAgICBWYWx1ZVR5cGUqIHRhYmxlID0g
bV90YWJsZTsKLSAgICAgICAgdW5zaWduZWQgc2l6ZU1hc2sgPSBtX3RhYmxlU2l6ZU1hc2s7Cisg
ICAgICAgIFZhbHVlVHlwZSogdGFibGUgPSBtX3N0b3JhZ2UudGFibGUudGFibGU7CisgICAgICAg
IHVuc2lnbmVkIHNpemVNYXNrID0gbV9zdG9yYWdlLnRhYmxlLnNpemVNYXNrOwogICAgICAgICB1
bnNpZ25lZCBoID0gSGFzaFRyYW5zbGF0b3I6Omhhc2goa2V5KTsKICAgICAgICAgdW5zaWduZWQg
aSA9IGggJiBzaXplTWFzazsKIApAQCAtNzgwLDMwICs3ODEsMzAgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgICAgIH0KICAgICB9OwogICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgaW5saW5lIHZvaWQgSGFz
aFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHM+Ojppbml0aWFsaXplQnVja2V0KFZhbHVlVHlwZSYgYnVja2V0KQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2Fw
YWNpdHk+Ojppbml0aWFsaXplQnVja2V0KFZhbHVlVHlwZSYgYnVja2V0KQogICAgIHsKICAgICAg
ICAgSGFzaFRhYmxlQnVja2V0SW5pdGlhbGl6ZXI8VHJhaXRzOjplbXB0eVZhbHVlSXNaZXJvPjo6
dGVtcGxhdGUgaW5pdGlhbGl6ZTxUcmFpdHM+KGJ1Y2tldCk7CiAgICAgfQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRy
YWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUg
S2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJhPgotICAgIEFMV0FZU19J
TkxJTkUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZChUJiYga2V5LCBFeHRyYSYmIGV4dHJhKSAtPiBBZGRS
ZXN1bHQKKyAgICBBTFdBWVNfSU5MSU5FIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6
YWRkKFQmJiBrZXksIEV4dHJhJiYgZXh0cmEpIC0+IEFkZFJlc3VsdAogICAgIHsKICAgICAgICAg
Y2hlY2tLZXk8SGFzaFRyYW5zbGF0b3I+KGtleSk7CiAKICAgICAgICAgaW52YWxpZGF0ZUl0ZXJh
dG9ycygpOwogCi0gICAgICAgIGlmICghbV90YWJsZSkKKyAgICAgICAgaWYgKCFtX3N0b3JhZ2Uu
dGFibGUudGFibGUpCiAgICAgICAgICAgICBleHBhbmQobnVsbHB0cik7CiAKICAgICAgICAgaW50
ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKIAotICAgICAgICBBU1NFUlQobV90YWJsZSk7
CisgICAgICAgIEFTU0VSVChtX3N0b3JhZ2UudGFibGUudGFibGUpOwogCiAgICAgICAgIHVuc2ln
bmVkIGsgPSAwOwotICAgICAgICBWYWx1ZVR5cGUqIHRhYmxlID0gbV90YWJsZTsKLSAgICAgICAg
dW5zaWduZWQgc2l6ZU1hc2sgPSBtX3RhYmxlU2l6ZU1hc2s7CisgICAgICAgIFZhbHVlVHlwZSog
dGFibGUgPSBtX3N0b3JhZ2UudGFibGUudGFibGU7CisgICAgICAgIHVuc2lnbmVkIHNpemVNYXNr
ID0gbV9zdG9yYWdlLnRhYmxlLnNpemVNYXNrOwogICAgICAgICB1bnNpZ25lZCBoID0gSGFzaFRy
YW5zbGF0b3I6Omhhc2goa2V5KTsKICAgICAgICAgdW5zaWduZWQgaSA9IGggJiBzaXplTWFzazsK
IApAQCAtODU3LDcgKzg1OCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBpZiAoZGVsZXRl
ZEVudHJ5KSB7CiAgICAgICAgICAgICBpbml0aWFsaXplQnVja2V0KCpkZWxldGVkRW50cnkpOwog
ICAgICAgICAgICAgZW50cnkgPSBkZWxldGVkRW50cnk7Ci0gICAgICAgICAgICAtLW1fZGVsZXRl
ZENvdW50OyAKKyAgICAgICAgICAgIC0tbV9zdG9yYWdlLnRhYmxlLmRlbGV0ZWRDb3VudDsKICAg
ICAgICAgfQogCiAgICAgICAgIEhhc2hUcmFuc2xhdG9yOjp0cmFuc2xhdGUoKmVudHJ5LCBzdGQ6
OmZvcndhcmQ8VD4oa2V5KSwgc3RkOjpmb3J3YXJkPEV4dHJhPihleHRyYSkpOwpAQCAtODcxLDE1
ICs4NzIsMTUgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFr
ZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0
b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5
VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFz
aFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJhPgotICAgIGlubGluZSBhdXRv
IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywg
S2V5VHJhaXRzPjo6YWRkUGFzc2luZ0hhc2hDb2RlKFQmJiBrZXksIEV4dHJhJiYgZXh0cmEpIC0+
IEFkZFJlc3VsdAorICAgIGlubGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmFk
ZFBhc3NpbmdIYXNoQ29kZShUJiYga2V5LCBFeHRyYSYmIGV4dHJhKSAtPiBBZGRSZXN1bHQKICAg
ICB7CiAgICAgICAgIGNoZWNrS2V5PEhhc2hUcmFuc2xhdG9yPihrZXkpOwogCiAgICAgICAgIGlu
dmFsaWRhdGVJdGVyYXRvcnMoKTsKIAotICAgICAgICBpZiAoIW1fdGFibGUpCisgICAgICAgIGlm
ICghbV9zdG9yYWdlLnRhYmxlLnRhYmxlKQogICAgICAgICAgICAgZXhwYW5kKCk7CiAKICAgICAg
ICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKQEAgLTg5NSw3ICs4OTYsNyBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICAgICAgCiAgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVu
dHJ5KSkgewogICAgICAgICAgICAgaW5pdGlhbGl6ZUJ1Y2tldCgqZW50cnkpOwotICAgICAgICAg
ICAgLS1tX2RlbGV0ZWRDb3VudDsKKyAgICAgICAgICAgIC0tbV9zdG9yYWdlLnRhYmxlLmRlbGV0
ZWRDb3VudDsKICAgICAgICAgfQogCiAgICAgICAgIEhhc2hUcmFuc2xhdG9yOjp0cmFuc2xhdGUo
KmVudHJ5LCBzdGQ6OmZvcndhcmQ8VD4oa2V5KSwgc3RkOjpmb3J3YXJkPEV4dHJhPihleHRyYSks
IGgpOwpAQCAtOTA5LDEwICs5MTAsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVy
biBBZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cz4KLSAgICBpbmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlaW5zZXJ0KFZhbHVlVHlw
ZSYmIGVudHJ5KSAtPiBWYWx1ZVR5cGUqCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0
eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5
PgorICAgIGlubGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OnJlaW5zZXJ0KFZh
bHVlVHlwZSYmIGVudHJ5KSAtPiBWYWx1ZVR5cGUqCiAgICAgewotICAgICAgICBBU1NFUlQobV90
YWJsZSk7CisgICAgICAgIEFTU0VSVChtX3N0b3JhZ2UudGFibGUudGFibGUpOwogICAgICAgICBB
U1NFUlQoIWxvb2t1cEZvcldyaXRpbmcoRXh0cmFjdG9yOjpleHRyYWN0KGVudHJ5KSkuc2Vjb25k
KTsKICAgICAgICAgQVNTRVJUKCFpc0RlbGV0ZWRCdWNrZXQoKihsb29rdXBGb3JXcml0aW5nKEV4
dHJhY3Rvcjo6ZXh0cmFjdChlbnRyeSkpLmZpcnN0KSkpOwogI2lmIERVTVBfSEFTSFRBQkxFX1NU
QVRTCkBAIC05MjksMTEgKzkzMCwxMSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJu
IG5ld0VudHJ5OwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNh
cGFjaXR5PgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUg
VD4gCi0gICAgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmZpbmQoY29uc3QgVCYga2V5KSAtPiBpdGVyYXRvcgor
ICAgIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6ZmluZChjb25zdCBUJiBrZXkpIC0+
IGl0ZXJhdG9yCiAgICAgewotICAgICAgICBpZiAoIW1fdGFibGUpCisgICAgICAgIGlmICghbV9z
dG9yYWdlLnRhYmxlLnRhYmxlKQogICAgICAgICAgICAgcmV0dXJuIGVuZCgpOwogCiAgICAgICAg
IFZhbHVlVHlwZSogZW50cnkgPSBsb29rdXA8SGFzaFRyYW5zbGF0b3I+KGtleSk7CkBAIC05NDMs
MTEgKzk0NCwxMSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIG1ha2VLbm93bkdv
b2RJdGVyYXRvcihlbnRyeSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHk+CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0
eXBlbmFtZSBUPiAKLSAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6ZmluZChjb25zdCBUJiBrZXkpIGNvbnN0
IC0+IGNvbnN0X2l0ZXJhdG9yCisgICAgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+Ojpm
aW5kKGNvbnN0IFQmIGtleSkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKICAgICB7Ci0gICAgICAg
IGlmICghbV90YWJsZSkKKyAgICAgICAgaWYgKCFtX3N0b3JhZ2UudGFibGUudGFibGUpCiAgICAg
ICAgICAgICByZXR1cm4gZW5kKCk7CiAKICAgICAgICAgVmFsdWVUeXBlKiBlbnRyeSA9IGNvbnN0
X2Nhc3Q8SGFzaFRhYmxlKj4odGhpcyktPmxvb2t1cDxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKQEAg
LTk1NywzMyArOTU4LDMzIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZXR1cm4gbWFrZUtu
b3duR29vZENvbnN0SXRlcmF0b3IoZW50cnkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0
cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoVHJh
bnNsYXRvciwgdHlwZW5hbWUgVD4gCi0gICAgYm9vbCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNvbnRhaW5zKGNvbnN0
IFQmIGtleSkgY29uc3QKKyAgICBib29sIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3Is
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmNvbnRh
aW5zKGNvbnN0IFQmIGtleSkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmICghbV90YWJsZSkKKyAg
ICAgICAgaWYgKCFtX3N0b3JhZ2UudGFibGUudGFibGUpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4odGhpcyktPmxvb2t1
cDxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIHZvaWQgSGFz
aFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHM+OjpyZW1vdmVBbmRJbnZhbGlkYXRlV2l0aG91dEVudHJ5Q29uc2lzdGVuY3lDaGVjayhW
YWx1ZVR5cGUqIHBvcykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgdm9p
ZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMs
IEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjpyZW1vdmVBbmRJbnZhbGlkYXRlV2l0aG91dEVu
dHJ5Q29uc2lzdGVuY3lDaGVjayhWYWx1ZVR5cGUqIHBvcykKICAgICB7CiAgICAgICAgIGludmFs
aWRhdGVJdGVyYXRvcnMoKTsKICAgICAgICAgcmVtb3ZlKHBvcyk7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0
cz4KLSAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVtb3ZlQW5kSW52YWxpZGF0ZShWYWx1ZVR5cGUqIHBv
cykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgdm9pZCBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywg
aW5saW5lQ2FwYWNpdHk+OjpyZW1vdmVBbmRJbnZhbGlkYXRlKFZhbHVlVHlwZSogcG9zKQogICAg
IHsKICAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwogICAgICAgICBpbnRlcm5hbENoZWNr
VGFibGVDb25zaXN0ZW5jeSgpOwogICAgICAgICByZW1vdmUocG9zKTsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3Is
IHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJh
aXRzPgotICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpyZW1vdmUoVmFsdWVUeXBlKiBwb3MpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0
cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFj
aXR5Pjo6cmVtb3ZlKFZhbHVlVHlwZSogcG9zKQogICAgIHsKICNpZiBEVU1QX0hBU0hUQUJMRV9T
VEFUUwogICAgICAgICArK0hhc2hUYWJsZVN0YXRzOjpudW1SZW1vdmVzOwpAQCAtOTkzLDcgKzk5
NCw3IEBAIG5hbWVzcGFjZSBXVEYgewogI2VuZGlmCiAKICAgICAgICAgZGVsZXRlQnVja2V0KCpw
b3MpOwotICAgICAgICArK21fZGVsZXRlZENvdW50OworICAgICAgICArK21fc3RvcmFnZS50YWJs
ZS5kZWxldGVkQ291bnQ7CiAgICAgICAgIC0tbV9rZXlDb3VudDsKIAogICAgICAgICBpZiAoc2hv
dWxkU2hyaW5rKCkpCkBAIC0xMDAyLDggKzEwMDMsOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgot
ICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBW
YWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5l
Q2FwYWNpdHk+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCiAgICAgewogICAgICAgICBpZiAoaXQgPT0g
ZW5kKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDExLDggKzEwMTIsOCBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAgICAgcmVtb3ZlQW5kSW52YWxpZGF0ZShjb25zdF9jYXN0PFZhbHVlVHlw
ZSo+KGl0Lm1faXRlcmF0b3IubV9wb3NpdGlvbikpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAg
aW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzLCBLZXlUcmFpdHM+OjpyZW1vdmVXaXRob3V0RW50cnlDb25zaXN0ZW5jeUNoZWNr
KGl0ZXJhdG9yIGl0KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBpbmxp
bmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+OjpyZW1vdmVXaXRob3V0RW50cnlDb25z
aXN0ZW5jeUNoZWNrKGl0ZXJhdG9yIGl0KQogICAgIHsKICAgICAgICAgaWYgKGl0ID09IGVuZCgp
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTAyMCw4ICsxMDIxLDggQEAgbmFtZXNwYWNlIFdU
RiB7CiAgICAgICAgIHJlbW92ZUFuZEludmFsaWRhdGVXaXRob3V0RW50cnlDb25zaXN0ZW5jeUNo
ZWNrKGNvbnN0X2Nhc3Q8VmFsdWVUeXBlKj4oaXQubV9pdGVyYXRvci5tX3Bvc2l0aW9uKSk7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5
cGVuYW1lIEtleVRyYWl0cz4KLSAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZVdpdGhv
dXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soY29uc3RfaXRlcmF0b3IgaXQpCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6
ZV90IGlubGluZUNhcGFjaXR5PgorICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVl
LCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBh
Y2l0eT46OnJlbW92ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soY29uc3RfaXRlcmF0b3Ig
aXQpCiAgICAgewogICAgICAgICBpZiAoaXQgPT0gZW5kKCkpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xMDI5LDI1ICsxMDMwLDI1IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZW1vdmVB
bmRJbnZhbGlkYXRlV2l0aG91dEVudHJ5Q29uc2lzdGVuY3lDaGVjayhjb25zdF9jYXN0PFZhbHVl
VHlwZSo+KGl0Lm1fcG9zaXRpb24pKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGlubGluZSB2
b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPjo6cmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtleSkKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1l
IEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHk+CisgICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFj
aXR5Pjo6cmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtleSkKICAgICB7CiAgICAgICAgIHJlbW92ZShm
aW5kKGtleSkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNh
cGFjaXR5PgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgaW5saW5lIHZvaWQg
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+OjpyZW1vdmVJZihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIGlubGluZSB2
b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OnJlbW92ZUlmKGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCiAgICAgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3RhYmxlU2l6ZTsgaS0t
OykgewotICAgICAgICAgICAgaWYgKGlzRW1wdHlPckRlbGV0ZWRCdWNrZXQobV90YWJsZVtpXSkp
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fc3RvcmFnZS50YWJsZS5zaXplOyBpLS07KSB7
CisgICAgICAgICAgICBpZiAoaXNFbXB0eU9yRGVsZXRlZEJ1Y2tldChtX3N0b3JhZ2UudGFibGUu
dGFibGVbaV0pKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBpZiAoIWZ1bmN0b3IobV90YWJsZVtpXSkpCisgICAgICAgICAgICBpZiAoIWZ1bmN0
b3IobV9zdG9yYWdlLnRhYmxlLnRhYmxlW2ldKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgZGVsZXRlQnVja2V0KG1fdGFibGVbaV0pOwotICAg
ICAgICAgICAgKyttX2RlbGV0ZWRDb3VudDsKKyAgICAgICAgICAgIGRlbGV0ZUJ1Y2tldChtX3N0
b3JhZ2UudGFibGUudGFibGVbaV0pOworICAgICAgICAgICAgKyttX3N0b3JhZ2UudGFibGUuZGVs
ZXRlZENvdW50OwogICAgICAgICAgICAgLS1tX2tleUNvdW50OwogICAgICAgICB9CiAgICAgICAg
IApAQCAtMTA1Nyw4ICsxMDU4LDggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIGludGVybmFs
Q2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
S2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICBhdXRvIEhh
c2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzPjo6YWxsb2NhdGVUYWJsZSh1bnNpZ25lZCBzaXplKSAtPiBWYWx1ZVR5cGUqCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNh
cGFjaXR5Pjo6YWxsb2NhdGVUYWJsZSh1bnNpZ25lZCBzaXplKSAtPiBWYWx1ZVR5cGUqCiAgICAg
ewogICAgICAgICAvLyB3b3VsZCB1c2UgYSB0ZW1wbGF0ZSBtZW1iZXIgZnVuY3Rpb24gd2l0aCBl
eHBsaWNpdCBzcGVjaWFsaXphdGlvbnMgaGVyZSwgYnV0CiAgICAgICAgIC8vIGdjYyBkb2Vzbid0
IGFwcGVhciB0byBzdXBwb3J0IHRoYXQKQEAgLTEwNzAsOCArMTA3MSw4IEBAIG5hbWVzcGFjZSBX
VEYgewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9p
ZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMs
IEtleVRyYWl0cz46OmRlYWxsb2NhdGVUYWJsZShWYWx1ZVR5cGUqIHRhYmxlLCB1bnNpZ25lZCBz
aXplKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
IEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBl
bmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICB2b2lkIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
LCBpbmxpbmVDYXBhY2l0eT46OmRlYWxsb2NhdGVUYWJsZShWYWx1ZVR5cGUqIHRhYmxlLCB1bnNp
Z25lZCBzaXplKQogICAgIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7
ICsraSkgewogICAgICAgICAgICAgaWYgKCFpc0RlbGV0ZWRCdWNrZXQodGFibGVbaV0pKQpAQCAt
MTA4MCwyNyArMTA4MSwyNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgZmFzdEZyZWUodGFi
bGUpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmV4cGFuZChWYWx1
ZVR5cGUqIGVudHJ5KSAtPiBWYWx1ZVR5cGUqCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFj
aXR5PgorICAgIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6ZXhwYW5kKFZhbHVlVHlw
ZSogZW50cnkpIC0+IFZhbHVlVHlwZSoKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG5ld1NpemU7
Ci0gICAgICAgIGlmIChtX3RhYmxlU2l6ZSA9PSAwKQorICAgICAgICBpZiAoIW1fc3RvcmFnZS50
YWJsZS5zaXplKQogICAgICAgICAgICAgbmV3U2l6ZSA9IEtleVRyYWl0czo6bWluaW11bVRhYmxl
U2l6ZTsKICAgICAgICAgZWxzZSBpZiAobXVzdFJlaGFzaEluUGxhY2UoKSkKLSAgICAgICAgICAg
IG5ld1NpemUgPSBtX3RhYmxlU2l6ZTsKKyAgICAgICAgICAgIG5ld1NpemUgPSBtX3N0b3JhZ2Uu
dGFibGUuc2l6ZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbmV3U2l6ZSA9IG1fdGFibGVT
aXplICogMjsKKyAgICAgICAgICAgIG5ld1NpemUgPSBtX3N0b3JhZ2UudGFibGUuc2l6ZSAqIDI7
CiAKICAgICAgICAgcmV0dXJuIHJlaGFzaChuZXdTaXplLCBlbnRyeSk7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cz4KLSAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVoYXNoKHVuc2lnbmVkIG5ld1RhYmxlU2l6ZSwg
VmFsdWVUeXBlKiBlbnRyeSkgLT4gVmFsdWVUeXBlKgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtl
eSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0
aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eT4KKyAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OnJlaGFzaCh1bnNp
Z25lZCBuZXdUYWJsZVNpemUsIFZhbHVlVHlwZSogZW50cnkpIC0+IFZhbHVlVHlwZSoKICAgICB7
CiAgICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpOwogCi0g
ICAgICAgIHVuc2lnbmVkIG9sZFRhYmxlU2l6ZSA9IG1fdGFibGVTaXplOwotICAgICAgICBWYWx1
ZVR5cGUqIG9sZFRhYmxlID0gbV90YWJsZTsKKyAgICAgICAgdW5zaWduZWQgb2xkVGFibGVTaXpl
ID0gbV9zdG9yYWdlLnRhYmxlLnNpemU7CisgICAgICAgIFZhbHVlVHlwZSogb2xkVGFibGUgPSBt
X3N0b3JhZ2UudGFibGUudGFibGU7CiAKICNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUwogICAgICAg
ICBpZiAob2xkVGFibGVTaXplICE9IDApCkBAIC0xMTEyLDkgKzExMTMsOSBAQCBuYW1lc3BhY2Ug
V1RGIHsKICAgICAgICAgICAgICsrbV9zdGF0cy0+bnVtUmVoYXNoZXM7CiAjZW5kaWYKIAotICAg
ICAgICBtX3RhYmxlU2l6ZSA9IG5ld1RhYmxlU2l6ZTsKLSAgICAgICAgbV90YWJsZVNpemVNYXNr
ID0gbmV3VGFibGVTaXplIC0gMTsKLSAgICAgICAgbV90YWJsZSA9IGFsbG9jYXRlVGFibGUobmV3
VGFibGVTaXplKTsKKyAgICAgICAgbV9zdG9yYWdlLnRhYmxlLnNpemUgPSBuZXdUYWJsZVNpemU7
CisgICAgICAgIG1fc3RvcmFnZS50YWJsZS5zaXplTWFzayA9IG5ld1RhYmxlU2l6ZSAtIDE7Cisg
ICAgICAgIG1fc3RvcmFnZS50YWJsZS50YWJsZSA9IGFsbG9jYXRlVGFibGUobmV3VGFibGVTaXpl
KTsKIAogICAgICAgICBWYWx1ZSogbmV3RW50cnkgPSBudWxscHRyOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpICE9IG9sZFRhYmxlU2l6ZTsgKytpKSB7CkBAIC0xMTMwLDcgKzExMzEs
NyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAg
IG1fZGVsZXRlZENvdW50ID0gMDsKKyAgICAgICAgbV9zdG9yYWdlLnRhYmxlLmRlbGV0ZWRDb3Vu
dCA9IDA7CiAKICAgICAgICAgZGVhbGxvY2F0ZVRhYmxlKG9sZFRhYmxlLCBvbGRUYWJsZVNpemUp
OwogCkBAIC0xMTM4LDI3ICsxMTM5LDI1IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZXR1
cm4gbmV3RW50cnk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICB2b2lkIEhhc2hUYWJsZTxLZXks
IFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y2xl
YXIoKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
IEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBl
bmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICB2b2lkIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
LCBpbmxpbmVDYXBhY2l0eT46OmNsZWFyKCkKICAgICB7CiAgICAgICAgIGludmFsaWRhdGVJdGVy
YXRvcnMoKTsKLSAgICAgICAgaWYgKCFtX3RhYmxlKQorICAgICAgICBpZiAoIW1fc3RvcmFnZS50
YWJsZS50YWJsZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBkZWFsbG9jYXRlVGFi
bGUobV90YWJsZSwgbV90YWJsZVNpemUpOwotICAgICAgICBtX3RhYmxlID0gMDsKLSAgICAgICAg
bV90YWJsZVNpemUgPSAwOwotICAgICAgICBtX3RhYmxlU2l6ZU1hc2sgPSAwOworICAgICAgICBk
ZWFsbG9jYXRlVGFibGUobV9zdG9yYWdlLnRhYmxlLnRhYmxlLCBtX3N0b3JhZ2UudGFibGUuc2l6
ZSk7CisgICAgICAgIG1fc3RvcmFnZS50YWJsZS50YWJsZSA9IG51bGxwdHI7CisgICAgICAgIG1f
c3RvcmFnZS50YWJsZS5kZWxldGVkQ291bnQgPSAwOworICAgICAgICBtX3N0b3JhZ2UudGFibGUu
c2l6ZSA9IDA7CisgICAgICAgIG1fc3RvcmFnZS50YWJsZS5zaXplTWFzayA9IDA7CiAgICAgICAg
IG1fa2V5Q291bnQgPSAwOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNo
VGFibGUoY29uc3QgSGFzaFRhYmxlJiBvdGhlcikKLSAgICAgICAgOiBtX3RhYmxlKDApCi0gICAg
ICAgICwgbV90YWJsZVNpemUoMCkKLSAgICAgICAgLCBtX3RhYmxlU2l6ZU1hc2soMCkKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3Is
IHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJh
aXRzLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4
dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5
Pjo6SGFzaFRhYmxlKGNvbnN0IEhhc2hUYWJsZSYgb3RoZXIpCisgICAgICAgIDogbV9zdG9yYWdl
KHt7bnVsbHB0ciwgMCwgMCwgMH19KQogICAgICAgICAsIG1fa2V5Q291bnQoMCkKLSAgICAgICAg
LCBtX2RlbGV0ZWRDb3VudCgwKQogI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKICAgICAg
ICAgLCBtX2l0ZXJhdG9ycygwKQogICAgICAgICAsIG1fbXV0ZXgoc3RkOjptYWtlX3VuaXF1ZTxz
dGQ6Om11dGV4PigpKQpAQCAtMTE3NiwyNSArMTE3NSwyNSBAQCBuYW1lc3BhY2UgV1RGIHsKICAg
ICAgICAgICAgIGFkZCgqaXQpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwg
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9pZCBIYXNoVGFi
bGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz46OnN3YXAoSGFzaFRhYmxlJiBvdGhlcikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBzaXplX3QgaW5saW5lQ2FwYWNp
dHk+CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+Ojpzd2FwKEhhc2hUYWJsZSYg
b3RoZXIpCiAgICAgewogICAgICAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7CiAgICAgICAgIG90
aGVyLmludmFsaWRhdGVJdGVyYXRvcnMoKTsKIAotICAgICAgICBzdGQ6OnN3YXAobV90YWJsZSwg
b3RoZXIubV90YWJsZSk7Ci0gICAgICAgIHN0ZDo6c3dhcChtX3RhYmxlU2l6ZSwgb3RoZXIubV90
YWJsZVNpemUpOwotICAgICAgICBzdGQ6OnN3YXAobV90YWJsZVNpemVNYXNrLCBvdGhlci5tX3Rh
YmxlU2l6ZU1hc2spOworICAgICAgICBzdGQ6OnN3YXAobV9zdG9yYWdlLnRhYmxlLnRhYmxlLCBv
dGhlci5tX3N0b3JhZ2UudGFibGUudGFibGUpOworICAgICAgICBzdGQ6OnN3YXAobV9zdG9yYWdl
LnRhYmxlLnNpemUsIG90aGVyLm1fc3RvcmFnZS50YWJsZS5zaXplKTsKKyAgICAgICAgc3RkOjpz
d2FwKG1fc3RvcmFnZS50YWJsZS5zaXplTWFzaywgb3RoZXIubV9zdG9yYWdlLnRhYmxlLnNpemVN
YXNrKTsKICAgICAgICAgc3RkOjpzd2FwKG1fa2V5Q291bnQsIG90aGVyLm1fa2V5Q291bnQpOwot
ICAgICAgICBzdGQ6OnN3YXAobV9kZWxldGVkQ291bnQsIG90aGVyLm1fZGVsZXRlZENvdW50KTsK
KyAgICAgICAgc3RkOjpzd2FwKG1fc3RvcmFnZS50YWJsZS5kZWxldGVkQ291bnQsIG90aGVyLm1f
c3RvcmFnZS50YWJsZS5kZWxldGVkQ291bnQpOwogCiAjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFNf
UEVSX1RBQkxFCiAgICAgICAgIG1fc3RhdHMuc3dhcChvdGhlci5tX3N0YXRzKTsKICNlbmRpZgog
ICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Om9wZXJhdG9yPShjb25zdCBI
YXNoVGFibGUmIG90aGVyKSAtPiBIYXNoVGFibGUmCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNh
cGFjaXR5PgorICAgIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5Pjo6b3BlcmF0b3I9KGNv
bnN0IEhhc2hUYWJsZSYgb3RoZXIpIC0+IEhhc2hUYWJsZSYKICAgICB7CiAgICAgICAgIC8vIEZJ
WE1FOiBJdCdzIGxpa2VseSB0aGF0IHRoaXMgY2FuIGJlIGltcHJvdmVkLCBmb3Igc3RhdGljIGFu
YWx5c2VzIHRoYXQgdXNlCiAgICAgICAgIC8vIEhhc2hTZXRzLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NDU1CkBAIC0xMjAzLDggKzEyMDIsOCBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAg
aW5saW5lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cywgS2V5VHJhaXRzPjo6SGFzaFRhYmxlKEhhc2hUYWJsZSYmIG90aGVyKQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFj
aXR5Pjo6SGFzaFRhYmxlKEhhc2hUYWJsZSYmIG90aGVyKQogI2lmIENIRUNLX0hBU0hUQUJMRV9J
VEVSQVRPUlMKICAgICAgICAgOiBtX2l0ZXJhdG9ycyhudWxscHRyKQogICAgICAgICAsIG1fbXV0
ZXgoc3RkOjptYWtlX3VuaXF1ZTxzdGQ6Om11dGV4PigpKQpAQCAtMTIxMiwxNyArMTIxMSwxNyBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICB7CiAgICAgICAgIG90aGVyLmludmFsaWRhdGVJdGVyYXRv
cnMoKTsKIAotICAgICAgICBtX3RhYmxlID0gb3RoZXIubV90YWJsZTsKLSAgICAgICAgbV90YWJs
ZVNpemUgPSBvdGhlci5tX3RhYmxlU2l6ZTsKLSAgICAgICAgbV90YWJsZVNpemVNYXNrID0gb3Ro
ZXIubV90YWJsZVNpemVNYXNrOworICAgICAgICBtX3N0b3JhZ2UudGFibGUudGFibGUgPSBvdGhl
ci5tX3N0b3JhZ2UudGFibGUudGFibGU7CisgICAgICAgIG1fc3RvcmFnZS50YWJsZS5zaXplID0g
b3RoZXIubV9zdG9yYWdlLnRhYmxlLnNpemU7CisgICAgICAgIG1fc3RvcmFnZS50YWJsZS5zaXpl
TWFzayA9IG90aGVyLm1fc3RvcmFnZS50YWJsZS5zaXplTWFzazsKICAgICAgICAgbV9rZXlDb3Vu
dCA9IG90aGVyLm1fa2V5Q291bnQ7Ci0gICAgICAgIG1fZGVsZXRlZENvdW50ID0gb3RoZXIubV9k
ZWxldGVkQ291bnQ7CisgICAgICAgIG1fc3RvcmFnZS50YWJsZS5kZWxldGVkQ291bnQgPSBvdGhl
ci5tX3N0b3JhZ2UudGFibGUuZGVsZXRlZENvdW50OwogCi0gICAgICAgIG90aGVyLm1fdGFibGUg
PSBudWxscHRyOwotICAgICAgICBvdGhlci5tX3RhYmxlU2l6ZSA9IDA7Ci0gICAgICAgIG90aGVy
Lm1fdGFibGVTaXplTWFzayA9IDA7CisgICAgICAgIG90aGVyLm1fc3RvcmFnZS50YWJsZS50YWJs
ZSA9IG51bGxwdHI7CisgICAgICAgIG90aGVyLm1fc3RvcmFnZS50YWJsZS5zaXplID0gMDsKKyAg
ICAgICAgb3RoZXIubV9zdG9yYWdlLnRhYmxlLnNpemVNYXNrID0gMDsKICAgICAgICAgb3RoZXIu
bV9rZXlDb3VudCA9IDA7Ci0gICAgICAgIG90aGVyLm1fZGVsZXRlZENvdW50ID0gMDsKKyAgICAg
ICAgb3RoZXIubV9zdG9yYWdlLnRhYmxlLmRlbGV0ZWRDb3VudCA9IDA7CiAKICNpZiBEVU1QX0hB
U0hUQUJMRV9TVEFUU19QRVJfVEFCTEUKICAgICAgICAgbV9zdGF0cyA9IFdURjo6bW92ZShvdGhl
ci5tX3N0YXRzKTsKQEAgLTEyMzAsOCArMTIyOSw4IEBAIG5hbWVzcGFjZSBXVEYgewogI2VuZGlm
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMs
IHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICBpbmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Om9wZXJhdG9y
PShIYXNoVGFibGUmJiBvdGhlcikgLT4gSGFzaFRhYmxlJgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1
bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxp
bmVDYXBhY2l0eT4KKyAgICBpbmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+Ojpv
cGVyYXRvcj0oSGFzaFRhYmxlJiYgb3RoZXIpIC0+IEhhc2hUYWJsZSYKICAgICB7CiAgICAgICAg
IEhhc2hUYWJsZSB0ZW1wID0gV1RGOjptb3ZlKG90aGVyKTsKICAgICAgICAgc3dhcCh0ZW1wKTsK
QEAgLTEyNDAsMjQgKzEyMzksMjQgQEAgbmFtZXNwYWNlIFdURiB7CiAKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpjaGVja1RhYmxlQ29uc2lz
dGVuY3koKSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICB2b2lk
IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywg
S2V5VHJhaXRzLCBpbmxpbmVDYXBhY2l0eT46OmNoZWNrVGFibGVDb25zaXN0ZW5jeSgpIGNvbnN0
CiAgICAgewogICAgICAgICBjaGVja1RhYmxlQ29uc2lzdGVuY3lFeGNlcHRTaXplKCk7Ci0gICAg
ICAgIEFTU0VSVCghbV90YWJsZSB8fCAhc2hvdWxkRXhwYW5kKCkpOworICAgICAgICBBU1NFUlQo
IW1fc3RvcmFnZS50YWJsZS50YWJsZSB8fCAhc2hvdWxkRXhwYW5kKCkpOwogICAgICAgICBBU1NF
UlQoIXNob3VsZFNocmluaygpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIHZvaWQgSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHM+OjpjaGVja1RhYmxlQ29uc2lzdGVuY3lFeGNlcHRTaXplKCkgY29uc3QKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzLCBz
aXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+
OjpjaGVja1RhYmxlQ29uc2lzdGVuY3lFeGNlcHRTaXplKCkgY29uc3QKICAgICB7Ci0gICAgICAg
IGlmICghbV90YWJsZSkKKyAgICAgICAgaWYgKCFtX3N0b3JhZ2UudGFibGUudGFibGUpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgdW5zaWduZWQgY291bnQgPSAwOwogICAgICAgICB1
bnNpZ25lZCBkZWxldGVkQ291bnQgPSAwOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBq
IDwgbV90YWJsZVNpemU7ICsraikgewotICAgICAgICAgICAgVmFsdWVUeXBlKiBlbnRyeSA9IG1f
dGFibGUgKyBqOworICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgbV9zdG9yYWdlLnRh
YmxlLnNpemU7ICsraikgeworICAgICAgICAgICAgVmFsdWVUeXBlKiBlbnRyeSA9IG1fc3RvcmFn
ZS50YWJsZS50YWJsZSArIGo7CiAgICAgICAgICAgICBpZiAoaXNFbXB0eUJ1Y2tldCgqZW50cnkp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0xMjc0LDE4ICsxMjczLDE4IEBAIG5h
bWVzcGFjZSBXVEYgewogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKGNvdW50ID09IG1fa2V5
Q291bnQpOwotICAgICAgICBBU1NFUlQoZGVsZXRlZENvdW50ID09IG1fZGVsZXRlZENvdW50KTsK
LSAgICAgICAgQVNTRVJUKG1fdGFibGVTaXplID49IEtleVRyYWl0czo6bWluaW11bVRhYmxlU2l6
ZSk7Ci0gICAgICAgIEFTU0VSVChtX3RhYmxlU2l6ZU1hc2spOwotICAgICAgICBBU1NFUlQobV90
YWJsZVNpemUgPT0gbV90YWJsZVNpemVNYXNrICsgMSk7CisgICAgICAgIEFTU0VSVChkZWxldGVk
Q291bnQgPT0gbV9zdG9yYWdlLnRhYmxlLmRlbGV0ZWRDb3VudCk7CisgICAgICAgIEFTU0VSVCht
X3N0b3JhZ2UudGFibGUuc2l6ZSA+PSBLZXlUcmFpdHM6Om1pbmltdW1UYWJsZVNpemUpOworICAg
ICAgICBBU1NFUlQobV9zdG9yYWdlLnRhYmxlLnNpemVNYXNrKTsKKyAgICAgICAgQVNTRVJUKG1f
c3RvcmFnZS50YWJsZS5zaXplID09IG1fc3RvcmFnZS50YWJsZS5zaXplTWFzayArIDEpOwogICAg
IH0KIAogI2VuZGlmIC8vIEFTU0VSVF9ESVNBQkxFRAogCiAjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lU
RVJBVE9SUwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMs
IHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRy
YWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6aW52YWxpZGF0ZUl0ZXJh
dG9ycygpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5
cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHZvaWQgSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHMsIGlubGluZUNhcGFjaXR5Pjo6aW52YWxpZGF0ZUl0ZXJhdG9ycygpCiAgICAgewogICAgICAg
ICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9jaygqbV9tdXRleCk7CiAgICAgICAgIGNv
bnN0X2l0ZXJhdG9yKiBuZXh0OwpAQCAtMTI5OCw5ICsxMjk3LDkgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgICAgIG1faXRlcmF0b3JzID0gMDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIHZvaWQg
YWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiB0YWJsZSwKLSAgICAgICAgSGFzaFRhYmxlQ29u
c3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywg
S2V5VHJhaXRzPiogaXQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cywgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHZv
aWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHMsIGlubGluZUNhcGFjaXR5PiogdGFibGUsCisg
ICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+KiBpdCkKICAgICB7
CiAgICAgICAgIGl0LT5tX3RhYmxlID0gdGFibGU7CiAgICAgICAgIGl0LT5tX3ByZXZpb3VzID0g
MDsKQEAgLTEzMjAsOCArMTMxOSw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB9CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
RXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVu
YW1lIEtleVRyYWl0cz4KLSAgICB2b2lkIHJlbW92ZUl0ZXJhdG9yKEhhc2hUYWJsZUNvbnN0SXRl
cmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRy
YWl0cz4qIGl0KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5
cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRz
LCB0eXBlbmFtZSBLZXlUcmFpdHMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICB2b2lkIHJl
bW92ZUl0ZXJhdG9yKEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9y
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cywgaW5saW5lQ2FwYWNpdHk+KiBpdCkK
ICAgICB7CiAgICAgICAgIC8vIERlbGV0ZSBpdGVyYXRvciBmcm9tIGRvdWJseS1saW5rZWQgbGlz
dCBvZiBpdGVyYXRvcnMuCiAgICAgICAgIGlmICghaXQtPm1fdGFibGUpIHsKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTGlz
dEhhc2hTZXQuaAkocmV2aXNpb24gMTgyMDk3KQorKysgU291cmNlL1dURi93dGYvTGlzdEhhc2hT
ZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
LCAyMDExLCAyMDEyLCAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxMSwgQmVuamFtaW4gUG91bGFpbiA8aWtpcG91QGdtYWlsLmNv
bT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCkBAIC0zOCwxNyArMzgsMTcgQEAgbmFtZXNwYWNlIFdURiB7CiAvLyBn
dWFyYW50ZWVkIHNhZmUgYWdhaW5zdCBtdXRhdGlvbiBvZiB0aGUgTGlzdEhhc2hTZXQsIGV4Y2Vw
dCBmb3IKIC8vIHJlbW92YWwgb2YgdGhlIGl0ZW0gY3VycmVudGx5IHBvaW50ZWQgdG8gYnkgYSBn
aXZlbiBpdGVyYXRvci4KIAotdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnM+IGNsYXNzIExpc3RIYXNoU2V0OwordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gY2xhc3MgTGlzdEhh
c2hTZXQ7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnPiBj
bGFzcyBMaXN0SGFzaFNldEl0ZXJhdG9yOwotdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcsIHR5
cGVuYW1lIEhhc2hBcmc+IGNsYXNzIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcjsKK3RlbXBsYXRl
PHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCBzaXplX3QgaW5saW5lQ2FwYWNp
dHk+IGNsYXNzIExpc3RIYXNoU2V0SXRlcmF0b3I7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFy
ZywgdHlwZW5hbWUgSGFzaEFyZywgc2l6ZV90IGlubGluZUNhcGFjaXR5PiBjbGFzcyBMaXN0SGFz
aFNldENvbnN0SXRlcmF0b3I7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnPiBzdHJ1Y3Qg
TGlzdEhhc2hTZXROb2RlOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoQXJnPiBzdHJ1Y3QgTGlz
dEhhc2hTZXROb2RlSGFzaEZ1bmN0aW9uczsKIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hBcmc+IHN0
cnVjdCBMaXN0SGFzaFNldFRyYW5zbGF0b3I7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJn
LCB0eXBlbmFtZSBIYXNoQXJnID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8VmFsdWVBcmc+OjpIYXNo
PiBjbGFzcyBMaXN0SGFzaFNldCB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5h
bWUgSGFzaEFyZyA9IHR5cGVuYW1lIERlZmF1bHRIYXNoPFZhbHVlQXJnPjo6SGFzaCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5ID0gMD4gY2xhc3MgTGlzdEhhc2hTZXQgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHJpdmF0ZToKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0Tm9kZTxWYWx1
ZUFyZz4gTm9kZTsKQEAgLTYyLDkgKzYyLDkgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIFZhbHVlQXJnIFZhbHVlVHlwZTsKIAotICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRJdGVyYXRv
cjxWYWx1ZVR5cGUsIEhhc2hBcmc+IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRD
b25zdEl0ZXJhdG9yPFZhbHVlVHlwZSwgSGFzaEFyZz4gY29uc3RfaXRlcmF0b3I7Ci0gICAgZnJp
ZW5kIGNsYXNzIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcjxWYWx1ZVR5cGUsIEhhc2hBcmc+Owor
ICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRJdGVyYXRvcjxWYWx1ZVR5cGUsIEhhc2hBcmcsIGlubGlu
ZUNhcGFjaXR5PiBpdGVyYXRvcjsKKyAgICB0eXBlZGVmIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRv
cjxWYWx1ZVR5cGUsIEhhc2hBcmcsIGlubGluZUNhcGFjaXR5PiBjb25zdF9pdGVyYXRvcjsKKyAg
ICBmcmllbmQgY2xhc3MgTGlzdEhhc2hTZXRDb25zdEl0ZXJhdG9yPFZhbHVlVHlwZSwgSGFzaEFy
ZywgaW5saW5lQ2FwYWNpdHk+OwogCiAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8
aXRlcmF0b3I+IHJldmVyc2VfaXRlcmF0b3I7CiAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRl
cmF0b3I8Y29uc3RfaXRlcmF0b3I+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CkBAIC0xNTAsNyAr
MTUwLDcgQEAgcHJpdmF0ZToKICAgICBpdGVyYXRvciBtYWtlSXRlcmF0b3IoTm9kZSopOwogICAg
IGNvbnN0X2l0ZXJhdG9yIG1ha2VDb25zdEl0ZXJhdG9yKE5vZGUqKSBjb25zdDsKIAotICAgIEhh
c2hUYWJsZTxOb2RlKiwgTm9kZSosIElkZW50aXR5RXh0cmFjdG9yLCBOb2RlSGFzaCwgTm9kZVRy
YWl0cywgTm9kZVRyYWl0cz4gbV9pbXBsOworICAgIEhhc2hUYWJsZTxOb2RlKiwgTm9kZSosIElk
ZW50aXR5RXh0cmFjdG9yLCBOb2RlSGFzaCwgTm9kZVRyYWl0cywgTm9kZVRyYWl0cywgaW5saW5l
Q2FwYWNpdHk+IG1faW1wbDsKICAgICBOb2RlKiBtX2hlYWQ7CiAgICAgTm9kZSogbV90YWlsOwog
fTsKQEAgLTE3NywxNSArMTc3LDE1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hBcmc+IHN0cnVj
dCBMaXN0SGEKICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVs
ZXRlZCA9IGZhbHNlOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1l
IEhhc2hBcmc+IGNsYXNzIExpc3RIYXNoU2V0SXRlcmF0b3IgewordGVtcGxhdGU8dHlwZW5hbWUg
VmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gY2xhc3Mg
TGlzdEhhc2hTZXRJdGVyYXRvciB7CiBwcml2YXRlOgotICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8
VmFsdWVBcmcsIEhhc2hBcmc+IExpc3RIYXNoU2V0VHlwZTsKLSAgICB0eXBlZGVmIExpc3RIYXNo
U2V0SXRlcmF0b3I8VmFsdWVBcmcsIEhhc2hBcmc+IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgTGlz
dEhhc2hTZXRDb25zdEl0ZXJhdG9yPFZhbHVlQXJnLCBIYXNoQXJnPiBjb25zdF9pdGVyYXRvcjsK
KyAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFZhbHVlQXJnLCBIYXNoQXJnLCBpbmxpbmVDYXBhY2l0
eT4gTGlzdEhhc2hTZXRUeXBlOworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRJdGVyYXRvcjxWYWx1
ZUFyZywgSGFzaEFyZywgaW5saW5lQ2FwYWNpdHk+IGl0ZXJhdG9yOworICAgIHR5cGVkZWYgTGlz
dEhhc2hTZXRDb25zdEl0ZXJhdG9yPFZhbHVlQXJnLCBIYXNoQXJnLCBpbmxpbmVDYXBhY2l0eT4g
Y29uc3RfaXRlcmF0b3I7CiAgICAgdHlwZWRlZiBMaXN0SGFzaFNldE5vZGU8VmFsdWVBcmc+IE5v
ZGU7CiAgICAgdHlwZWRlZiBWYWx1ZUFyZyBWYWx1ZVR5cGU7CiAKLSAgICBmcmllbmQgY2xhc3Mg
TGlzdEhhc2hTZXQ8VmFsdWVBcmcsIEhhc2hBcmc+OworICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFz
aFNldDxWYWx1ZUFyZywgSGFzaEFyZywgaW5saW5lQ2FwYWNpdHk+OwogCiAgICAgTGlzdEhhc2hT
ZXRJdGVyYXRvcihjb25zdCBMaXN0SGFzaFNldFR5cGUqIHNldCwgTm9kZSogcG9zaXRpb24pIDog
bV9pdGVyYXRvcihzZXQsIHBvc2l0aW9uKSB7IH0KIApAQCAtMjI0LDE2ICsyMjQsMTYgQEAgcHJp
dmF0ZToKICAgICBjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yOwogfTsKIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmc+IGNsYXNzIExpc3RIYXNoU2V0Q29uc3RJ
dGVyYXRvciB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZywg
c2l6ZV90IGlubGluZUNhcGFjaXR5PiBjbGFzcyBMaXN0SGFzaFNldENvbnN0SXRlcmF0b3Igewog
cHJpdmF0ZToKLSAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFZhbHVlQXJnLCBIYXNoQXJnPiBMaXN0
SGFzaFNldFR5cGU7Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldEl0ZXJhdG9yPFZhbHVlQXJnLCBI
YXNoQXJnPiBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcjxW
YWx1ZUFyZywgSGFzaEFyZz4gY29uc3RfaXRlcmF0b3I7CisgICAgdHlwZWRlZiBMaXN0SGFzaFNl
dDxWYWx1ZUFyZywgSGFzaEFyZywgaW5saW5lQ2FwYWNpdHk+IExpc3RIYXNoU2V0VHlwZTsKKyAg
ICB0eXBlZGVmIExpc3RIYXNoU2V0SXRlcmF0b3I8VmFsdWVBcmcsIEhhc2hBcmcsIGlubGluZUNh
cGFjaXR5PiBpdGVyYXRvcjsKKyAgICB0eXBlZGVmIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcjxW
YWx1ZUFyZywgSGFzaEFyZywgaW5saW5lQ2FwYWNpdHk+IGNvbnN0X2l0ZXJhdG9yOwogICAgIHR5
cGVkZWYgTGlzdEhhc2hTZXROb2RlPFZhbHVlQXJnPiBOb2RlOwogICAgIHR5cGVkZWYgVmFsdWVB
cmcgVmFsdWVUeXBlOwogCi0gICAgZnJpZW5kIGNsYXNzIExpc3RIYXNoU2V0PFZhbHVlQXJnLCBI
YXNoQXJnPjsKLSAgICBmcmllbmQgY2xhc3MgTGlzdEhhc2hTZXRJdGVyYXRvcjxWYWx1ZUFyZywg
SGFzaEFyZz47CisgICAgZnJpZW5kIGNsYXNzIExpc3RIYXNoU2V0PFZhbHVlQXJnLCBIYXNoQXJn
LCBpbmxpbmVDYXBhY2l0eT47CisgICAgZnJpZW5kIGNsYXNzIExpc3RIYXNoU2V0SXRlcmF0b3I8
VmFsdWVBcmcsIEhhc2hBcmcsIGlubGluZUNhcGFjaXR5PjsKIAogICAgIExpc3RIYXNoU2V0Q29u
c3RJdGVyYXRvcihjb25zdCBMaXN0SGFzaFNldFR5cGUqIHNldCwgTm9kZSogcG9zaXRpb24pCiAg
ICAgICAgIDogbV9zZXQoc2V0KQpAQCAtMzA4LDE1ICszMDgsMTUgQEAgc3RydWN0IExpc3RIYXNo
U2V0VHJhbnNsYXRvciB7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KLWlubGluZSBMaXN0SGFzaFNldDxULCBVPjo6TGlzdEhhc2hTZXQoKQordGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUgTGlzdEhhc2hTZXQ8VCwg
VSwgVj46Okxpc3RIYXNoU2V0KCkKICAgICA6IG1faGVhZCgwKQogICAgICwgbV90YWlsKDApCiB7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgTGlzdEhhc2hT
ZXQ8VCwgVT46Okxpc3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0JiBvdGhlcikKK3RlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIExpc3RIYXNoU2V0PFQs
IFUsIFY+OjpMaXN0SGFzaFNldChjb25zdCBMaXN0SGFzaFNldCYgb3RoZXIpCiAgICAgOiBtX2hl
YWQoMCkKICAgICAsIG1fdGFpbCgwKQogewpAQCAtMzI0LDYxICszMjQsNjEgQEAgaW5saW5lIExp
c3RIYXNoU2V0PFQsIFU+OjpMaXN0SGFzaFNldChjbwogICAgICAgICBhZGQoKml0KTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBMaXN0SGFzaFNldDxULCBV
PiYgTGlzdEhhc2hTZXQ8VCwgVT46Om9wZXJhdG9yPShjb25zdCBMaXN0SGFzaFNldCYgb3RoZXIp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBMaXN0
SGFzaFNldDxULCBVLCBWPiYgTGlzdEhhc2hTZXQ8VCwgVSwgVj46Om9wZXJhdG9yPShjb25zdCBM
aXN0SGFzaFNldCYgb3RoZXIpCiB7CiAgICAgTGlzdEhhc2hTZXQgdG1wKG90aGVyKTsKICAgICBz
d2FwKHRtcCk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPgotaW5saW5lIHZvaWQgTGlzdEhhc2hTZXQ8VCwgVT46OnN3YXAoTGlzdEhhc2hT
ZXQmIG90aGVyKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+Citp
bmxpbmUgdm9pZCBMaXN0SGFzaFNldDxULCBVLCBWPjo6c3dhcChMaXN0SGFzaFNldCYgb3RoZXIp
CiB7CiAgICAgbV9pbXBsLnN3YXAob3RoZXIubV9pbXBsKTsKICAgICBzdGQ6OnN3YXAobV9oZWFk
LCBvdGhlci5tX2hlYWQpOwogICAgIHN0ZDo6c3dhcChtX3RhaWwsIG90aGVyLm1fdGFpbCk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgTGlzdEhhc2hTZXQ8
VCwgVT46On5MaXN0SGFzaFNldCgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBz
aXplX3QgVj4KK2lubGluZSBMaXN0SGFzaFNldDxULCBVLCBWPjo6fkxpc3RIYXNoU2V0KCkKIHsK
ICAgICBkZWxldGVBbGxOb2RlcygpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPgotaW5saW5lIHVuc2lnbmVkIExpc3RIYXNoU2V0PFQsIFU+OjpzaXplKCkgY29uc3QKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIHVuc2lnbmVk
IExpc3RIYXNoU2V0PFQsIFUsIFY+OjpzaXplKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbXBs
LnNpemUoKTsgCiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUg
dW5zaWduZWQgTGlzdEhhc2hTZXQ8VCwgVT46OmNhcGFjaXR5KCkgY29uc3QKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIHVuc2lnbmVkIExpc3RIYXNo
U2V0PFQsIFUsIFY+OjpjYXBhY2l0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW1wbC5jYXBh
Y2l0eSgpOyAKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBi
b29sIExpc3RIYXNoU2V0PFQsIFU+Ojppc0VtcHR5KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIGJvb2wgTGlzdEhhc2hTZXQ8VCwgVSwg
Vj46OmlzRW1wdHkoKSBjb25zdAogewogICAgIHJldHVybiBtX2ltcGwuaXNFbXB0eSgpOyAKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBUJiBMaXN0SGFzaFNl
dDxULCBVPjo6Zmlyc3QoKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90
IFY+CitpbmxpbmUgVCYgTGlzdEhhc2hTZXQ8VCwgVSwgVj46OmZpcnN0KCkKIHsKICAgICBBU1NF
UlQoIWlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIG1faGVhZC0+bV92YWx1ZTsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSB2b2lkIExpc3RIYXNoU2V0PFQsIFU+
OjpyZW1vdmVGaXJzdCgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3Qg
Vj4KK2lubGluZSB2b2lkIExpc3RIYXNoU2V0PFQsIFUsIFY+OjpyZW1vdmVGaXJzdCgpCiB7CiAg
ICAgdGFrZUZpcnN0KCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1p
bmxpbmUgVCBMaXN0SGFzaFNldDxULCBVPjo6dGFrZUZpcnN0KCkKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIFQgTGlzdEhhc2hTZXQ8VCwgVSwgVj46
OnRha2VGaXJzdCgpCiB7CiAgICAgQVNTRVJUKCFpc0VtcHR5KCkpOwogICAgIGF1dG8gaXQgPSBt
X2ltcGwuZmluZChtX2hlYWQpOwpAQCAtMzkwLDM1ICszOTAsMzUgQEAgaW5saW5lIFQgTGlzdEhh
c2hTZXQ8VCwgVT46OnRha2VGaXJzdCgpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBjb25zdCBUJiBMaXN0SGFzaFNldDxU
LCBVPjo6Zmlyc3QoKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6
ZV90IFY+CitpbmxpbmUgY29uc3QgVCYgTGlzdEhhc2hTZXQ8VCwgVSwgVj46OmZpcnN0KCkgY29u
c3QKIHsKICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIG1faGVhZC0+bV92YWx1
ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBUJiBMaXN0
SGFzaFNldDxULCBVPjo6bGFzdCgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBz
aXplX3QgVj4KK2lubGluZSBUJiBMaXN0SGFzaFNldDxULCBVLCBWPjo6bGFzdCgpCiB7CiAgICAg
QVNTRVJUKCFpc0VtcHR5KCkpOwogICAgIHJldHVybiBtX3RhaWwtPm1fdmFsdWU7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgY29uc3QgVCYgTGlzdEhhc2hT
ZXQ8VCwgVT46Omxhc3QoKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
c2l6ZV90IFY+CitpbmxpbmUgY29uc3QgVCYgTGlzdEhhc2hTZXQ8VCwgVSwgVj46Omxhc3QoKSBj
b25zdAogewogICAgIEFTU0VSVCghaXNFbXB0eSgpKTsKICAgICByZXR1cm4gbV90YWlsLT5tX3Zh
bHVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIHZvaWQg
TGlzdEhhc2hTZXQ8VCwgVT46OnJlbW92ZUxhc3QoKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgc2l6ZV90IFY+CitpbmxpbmUgdm9pZCBMaXN0SGFzaFNldDxULCBVLCBWPjo6cmVt
b3ZlTGFzdCgpCiB7CiAgICAgdGFrZUxhc3QoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4KLWlubGluZSBUIExpc3RIYXNoU2V0PFQsIFU+Ojp0YWtlTGFzdCgpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBUIExpc3RIYXNo
U2V0PFQsIFUsIFY+Ojp0YWtlTGFzdCgpCiB7CiAgICAgQVNTRVJUKCFpc0VtcHR5KCkpOwogICAg
IGF1dG8gaXQgPSBtX2ltcGwuZmluZChtX3RhaWwpOwpAQCAtNDMwLDggKzQzMCw4IEBAIGlubGlu
ZSBUIExpc3RIYXNoU2V0PFQsIFU+Ojp0YWtlTGFzdCgpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBhdXRvIExpc3RIYXNo
U2V0PFQsIFU+OjpmaW5kKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIC0+IGl0ZXJhdG9yCit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBhdXRvIExpc3RI
YXNoU2V0PFQsIFUsIFY+OjpmaW5kKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIC0+IGl0ZXJhdG9y
CiB7CiAgICAgYXV0byBpdCA9IG1faW1wbC50ZW1wbGF0ZSBmaW5kPEJhc2VUcmFuc2xhdG9yPih2
YWx1ZSk7CiAgICAgaWYgKGl0ID09IG1faW1wbC5lbmQoKSkKQEAgLTQzOSw4ICs0MzksOCBAQCBp
bmxpbmUgYXV0byBMaXN0SGFzaFNldDxULCBVPjo6ZmluZChjb25zCiAgICAgcmV0dXJuIG1ha2VJ
dGVyYXRvcigqaXQpOyAKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlu
bGluZSBhdXRvIExpc3RIYXNoU2V0PFQsIFU+OjpmaW5kKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUp
IGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCBzaXplX3QgVj4KK2lubGluZSBhdXRvIExpc3RIYXNoU2V0PFQsIFUsIFY+OjpmaW5kKGNvbnN0
IFZhbHVlVHlwZSYgdmFsdWUpIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yCiB7CiAgICAgYXV0byBp
dCA9IG1faW1wbC50ZW1wbGF0ZSBmaW5kPEJhc2VUcmFuc2xhdG9yPih2YWx1ZSk7CiAgICAgaWYg
KGl0ID09IG1faW1wbC5lbmQoKSkKQEAgLTQ1NCw5ICs0NTQsOSBAQCBzdHJ1Y3QgTGlzdEhhc2hT
ZXRUcmFuc2xhdG9yQWRhcHRlciB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4gc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVCYgYSwgY29uc3QgVSYgYikgeyByZXR1cm4gVHJh
bnNsYXRvcjo6ZXF1YWwoYS0+bV92YWx1ZSwgYik7IH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFZhbHVlVHlwZSwgdHlwZW5hbWUgVT4KK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlw
ZW5hbWUgVSwgc2l6ZV90IFY+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJh
bnNsYXRvcj4KLWlubGluZSBhdXRvIExpc3RIYXNoU2V0PFZhbHVlVHlwZSwgVT46OmZpbmQoY29u
c3QgVCYgdmFsdWUpIC0+IGl0ZXJhdG9yCitpbmxpbmUgYXV0byBMaXN0SGFzaFNldDxWYWx1ZVR5
cGUsIFUsIFY+OjpmaW5kKGNvbnN0IFQmIHZhbHVlKSAtPiBpdGVyYXRvcgogewogICAgIGF1dG8g
aXQgPSBtX2ltcGwudGVtcGxhdGUgZmluZDxMaXN0SGFzaFNldFRyYW5zbGF0b3JBZGFwdGVyPEhh
c2hUcmFuc2xhdG9yPj4odmFsdWUpOwogICAgIGlmIChpdCA9PSBtX2ltcGwuZW5kKCkpCkBAIC00
NjQsOSArNDY0LDkgQEAgaW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VmFsdWVUeXBlLCBVPjo6Zgog
ICAgIHJldHVybiBtYWtlSXRlcmF0b3IoKml0KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVmFs
dWVUeXBlLCB0eXBlbmFtZSBVPgordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFt
ZSBVLCBzaXplX3QgVj4KIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xh
dG9yPgotaW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VmFsdWVUeXBlLCBVPjo6ZmluZChjb25zdCBU
JiB2YWx1ZSkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKK2lubGluZSBhdXRvIExpc3RIYXNoU2V0
PFZhbHVlVHlwZSwgVSwgVj46OmZpbmQoY29uc3QgVCYgdmFsdWUpIGNvbnN0IC0+IGNvbnN0X2l0
ZXJhdG9yCiB7CiAgICAgYXV0byBpdCA9IG1faW1wbC50ZW1wbGF0ZSBmaW5kPExpc3RIYXNoU2V0
VHJhbnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2YWx1ZSk7CiAgICAgaWYgKGl0ID09
IG1faW1wbC5lbmQoKSkKQEAgLTQ3NCwyMSArNDc0LDIxIEBAIGlubGluZSBhdXRvIExpc3RIYXNo
U2V0PFZhbHVlVHlwZSwgVT46OmYKICAgICByZXR1cm4gbWFrZUNvbnN0SXRlcmF0b3IoKml0KTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBVPgordGVtcGxhdGU8
dHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPgotaW5saW5lIGJvb2wgTGlzdEhhc2hTZXQ8
VmFsdWVUeXBlLCBVPjo6Y29udGFpbnMoY29uc3QgVCYgdmFsdWUpIGNvbnN0CitpbmxpbmUgYm9v
bCBMaXN0SGFzaFNldDxWYWx1ZVR5cGUsIFUsIFY+Ojpjb250YWlucyhjb25zdCBUJiB2YWx1ZSkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGNvbnRhaW5zPExpc3RIYXNoU2V0
VHJhbnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2YWx1ZSk7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1pbmxpbmUgYm9vbCBMaXN0SGFzaFNldDxULCBVPjo6
Y29udGFpbnMoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIGJvb2wgTGlzdEhhc2hTZXQ8VCwgVSwg
Vj46OmNvbnRhaW5zKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1faW1wbC50ZW1wbGF0ZSBjb250YWluczxCYXNlVHJhbnNsYXRvcj4odmFsdWUpOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotYXV0byBMaXN0SGFzaFNldDxULCBVPjo6
YWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIC0+IEFkZFJlc3VsdAordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CithdXRvIExpc3RIYXNoU2V0PFQsIFUsIFY+Ojph
ZGQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gQWRkUmVzdWx0CiB7CiAgICAgYXV0byByZXN1
bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VUcmFuc2xhdG9yPih2YWx1ZSwgbnVsbHB0cik7
CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQpAQCAtNDk2LDggKzQ5Niw4IEBAIGF1dG8gTGlz
dEhhc2hTZXQ8VCwgVT46OmFkZChjb25zdCBWYWx1ZVQKICAgICByZXR1cm4gQWRkUmVzdWx0KG1h
a2VJdGVyYXRvcigqcmVzdWx0Lml0ZXJhdG9yKSwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotYXV0byBMaXN0SGFzaFNldDxULCBVPjo6
YWRkKFZhbHVlVHlwZSYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHNpemVfdCBWPgorYXV0byBMaXN0SGFzaFNldDxULCBVLCBWPjo6YWRkKFZh
bHVlVHlwZSYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1faW1w
bC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KFdURjo6bW92ZSh2YWx1ZSksIG51bGxwdHIp
OwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKQEAgLTUwNSw4ICs1MDUsOCBAQCBhdXRvIExp
c3RIYXNoU2V0PFQsIFU+OjphZGQoVmFsdWVUeXBlJiYgCiAgICAgcmV0dXJuIEFkZFJlc3VsdCht
YWtlSXRlcmF0b3IoKnJlc3VsdC5pdGVyYXRvciksIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46
OmFwcGVuZE9yTW92ZVRvTGFzdChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBBZGRSZXN1bHQK
K3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgorYXV0byBMaXN0SGFz
aFNldDxULCBVLCBWPjo6YXBwZW5kT3JNb3ZlVG9MYXN0KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUp
IC0+IEFkZFJlc3VsdAogewogICAgIGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxC
YXNlVHJhbnNsYXRvcj4odmFsdWUsIG51bGxwdHIpOwogICAgIE5vZGUqIG5vZGUgPSAqcmVzdWx0
Lml0ZXJhdG9yOwpAQCAtNTE3LDggKzUxNyw4IEBAIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46OmFw
cGVuZE9yTW92ZVRvTGEKICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJdGVyYXRvcigqcmVzdWx0
Lml0ZXJhdG9yKSwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPgotYXV0byBMaXN0SGFzaFNldDxULCBVPjo6YXBwZW5kT3JNb3ZlVG9MYXN0
KFZhbHVlVHlwZSYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHNpemVfdCBWPgorYXV0byBMaXN0SGFzaFNldDxULCBVLCBWPjo6YXBwZW5kT3JN
b3ZlVG9MYXN0KFZhbHVlVHlwZSYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKICAgICBhdXRvIHJl
c3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KFdURjo6bW92ZSh2YWx1
ZSksIG51bGxwdHIpOwogICAgIE5vZGUqIG5vZGUgPSAqcmVzdWx0Lml0ZXJhdG9yOwpAQCAtNTI5
LDggKzUyOSw4IEBAIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46OmFwcGVuZE9yTW92ZVRvTGEKICAg
ICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJdGVyYXRvcigqcmVzdWx0Lml0ZXJhdG9yKSwgcmVzdWx0
LmlzTmV3RW50cnkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotYXV0
byBMaXN0SGFzaFNldDxULCBVPjo6cHJlcGVuZE9yTW92ZVRvRmlyc3QoY29uc3QgVmFsdWVUeXBl
JiB2YWx1ZSkgLT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBz
aXplX3QgVj4KK2F1dG8gTGlzdEhhc2hTZXQ8VCwgVSwgVj46OnByZXBlbmRPck1vdmVUb0ZpcnN0
KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIC0+IEFkZFJlc3VsdAogewogICAgIGF1dG8gcmVzdWx0
ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4odmFsdWUsIG51bGxwdHIpOwog
ICAgIE5vZGUqIG5vZGUgPSAqcmVzdWx0Lml0ZXJhdG9yOwpAQCAtNTQxLDggKzU0MSw4IEBAIGF1
dG8gTGlzdEhhc2hTZXQ8VCwgVT46OnByZXBlbmRPck1vdmVUb0YKICAgICByZXR1cm4gQWRkUmVz
dWx0KG1ha2VJdGVyYXRvcigqcmVzdWx0Lml0ZXJhdG9yKSwgcmVzdWx0LmlzTmV3RW50cnkpOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotYXV0byBMaXN0SGFzaFNldDxU
LCBVPjo6cHJlcGVuZE9yTW92ZVRvRmlyc3QoVmFsdWVUeXBlJiYgdmFsdWUpIC0+IEFkZFJlc3Vs
dAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+CithdXRvIExpc3RI
YXNoU2V0PFQsIFUsIFY+OjpwcmVwZW5kT3JNb3ZlVG9GaXJzdChWYWx1ZVR5cGUmJiB2YWx1ZSkg
LT4gQWRkUmVzdWx0CiB7CiAgICAgYXV0byByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJh
c2VUcmFuc2xhdG9yPihXVEY6Om1vdmUodmFsdWUpLCBudWxscHRyKTsKICAgICBOb2RlKiBub2Rl
ID0gKnJlc3VsdC5pdGVyYXRvcjsKQEAgLTU1MywyMCArNTUzLDIwIEBAIGF1dG8gTGlzdEhhc2hT
ZXQ8VCwgVT46OnByZXBlbmRPck1vdmVUb0YKICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJdGVy
YXRvcigqcmVzdWx0Lml0ZXJhdG9yKSwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotYXV0byBMaXN0SGFzaFNldDxULCBVPjo6aW5zZXJ0
QmVmb3JlKGNvbnN0IFZhbHVlVHlwZSYgYmVmb3JlVmFsdWUsIGNvbnN0IFZhbHVlVHlwZSYgbmV3
VmFsdWUpIC0+IEFkZFJlc3VsdAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6
ZV90IFY+CithdXRvIExpc3RIYXNoU2V0PFQsIFUsIFY+OjppbnNlcnRCZWZvcmUoY29uc3QgVmFs
dWVUeXBlJiBiZWZvcmVWYWx1ZSwgY29uc3QgVmFsdWVUeXBlJiBuZXdWYWx1ZSkgLT4gQWRkUmVz
dWx0CiB7CiAgICAgcmV0dXJuIGluc2VydEJlZm9yZShmaW5kKGJlZm9yZVZhbHVlKSwgbmV3VmFs
dWUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotYXV0byBMaXN0SGFz
aFNldDxULCBVPjo6aW5zZXJ0QmVmb3JlKGNvbnN0IFZhbHVlVHlwZSYgYmVmb3JlVmFsdWUsIFZh
bHVlVHlwZSYmIG5ld1ZhbHVlKSAtPiBBZGRSZXN1bHQKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHNpemVfdCBWPgorYXV0byBMaXN0SGFzaFNldDxULCBVLCBWPjo6aW5zZXJ0QmVm
b3JlKGNvbnN0IFZhbHVlVHlwZSYgYmVmb3JlVmFsdWUsIFZhbHVlVHlwZSYmIG5ld1ZhbHVlKSAt
PiBBZGRSZXN1bHQKIHsKICAgICByZXR1cm4gaW5zZXJ0QmVmb3JlKGZpbmQoYmVmb3JlVmFsdWUp
LCBXVEY6Om1vdmUobmV3VmFsdWUpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KLWF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46Omluc2VydEJlZm9yZShpdGVyYXRvciBpdCwg
Y29uc3QgVmFsdWVUeXBlJiBuZXdWYWx1ZSkgLT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2F1dG8gTGlzdEhhc2hTZXQ8VCwgVSwgVj46Omlu
c2VydEJlZm9yZShpdGVyYXRvciBpdCwgY29uc3QgVmFsdWVUeXBlJiBuZXdWYWx1ZSkgLT4gQWRk
UmVzdWx0CiB7CiAgICAgYXV0byByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VUcmFu
c2xhdG9yPihuZXdWYWx1ZSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQpA
QCAtNTc0LDggKzU3NCw4IEBAIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46Omluc2VydEJlZm9yZShp
dGUKICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJdGVyYXRvcigqcmVzdWx0Lml0ZXJhdG9yKSwg
cmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PgotYXV0byBMaXN0SGFzaFNldDxULCBVPjo6aW5zZXJ0QmVmb3JlKGl0ZXJhdG9yIGl0LCBWYWx1
ZVR5cGUmJiBuZXdWYWx1ZSkgLT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCBzaXplX3QgVj4KK2F1dG8gTGlzdEhhc2hTZXQ8VCwgVSwgVj46Omluc2VydEJlZm9y
ZShpdGVyYXRvciBpdCwgVmFsdWVUeXBlJiYgbmV3VmFsdWUpIC0+IEFkZFJlc3VsdAogewogICAg
IGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4oV1RGOjpt
b3ZlKG5ld1ZhbHVlKSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQpAQCAt
NTgzLDggKzU4Myw4IEBAIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46Omluc2VydEJlZm9yZShpdGUK
ICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJdGVyYXRvcigqcmVzdWx0Lml0ZXJhdG9yKSwgcmVz
dWx0LmlzTmV3RW50cnkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgot
aW5saW5lIGJvb2wgTGlzdEhhc2hTZXQ8VCwgVT46OnJlbW92ZShpdGVyYXRvciBpdCkKK3RlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIGJvb2wgTGlzdEhh
c2hTZXQ8VCwgVSwgVj46OnJlbW92ZShpdGVyYXRvciBpdCkKIHsKICAgICBpZiAoaXQgPT0gZW5k
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU5MywxNCArNTkzLDE0IEBAIGlubGluZSBi
b29sIExpc3RIYXNoU2V0PFQsIFU+OjpyZW1vdmUoaXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBib29sIExpc3RIYXNoU2V0
PFQsIFU+OjpyZW1vdmUoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIGJvb2wgTGlzdEhhc2hTZXQ8VCwgVSwg
Vj46OnJlbW92ZShjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKQogewogICAgIHJldHVybiByZW1vdmUo
ZmluZCh2YWx1ZSkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5s
aW5lIHZvaWQgTGlzdEhhc2hTZXQ8VCwgVT46OmNsZWFyKCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIHZvaWQgTGlzdEhhc2hTZXQ8VCwgVSwgVj46
OmNsZWFyKCkKIHsKICAgICBkZWxldGVBbGxOb2RlcygpOwogICAgIG1faW1wbC5jbGVhcigpOyAK
QEAgLTYwOCw4ICs2MDgsOCBAQCBpbmxpbmUgdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6Y2xlYXIo
KQogICAgIG1fdGFpbCA9IDA7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
Ci12b2lkIExpc3RIYXNoU2V0PFQsIFU+Ojp1bmxpbmsoTm9kZSogbm9kZSkKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgordm9pZCBMaXN0SGFzaFNldDxULCBVLCBW
Pjo6dW5saW5rKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2RlLT5tX3ByZXYpIHsKICAgICAg
ICAgQVNTRVJUKG5vZGUgPT0gbV9oZWFkKTsKQEAgLTYyOCwxNSArNjI4LDE1IEBAIHZvaWQgTGlz
dEhhc2hTZXQ8VCwgVT46OnVubGluayhOb2RlKiBub2QKICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci12b2lkIExpc3RIYXNoU2V0PFQsIFU+Ojp1bmxpbmtBbmRE
ZWxldGUoTm9kZSogbm9kZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVf
dCBWPgordm9pZCBMaXN0SGFzaFNldDxULCBVLCBWPjo6dW5saW5rQW5kRGVsZXRlKE5vZGUqIG5v
ZGUpCiB7CiAgICAgdW5saW5rKG5vZGUpOwogICAgIGRlbGV0ZSBub2RlOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6YXBwZW5k
Tm9kZShOb2RlKiBub2RlKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90
IFY+Cit2b2lkIExpc3RIYXNoU2V0PFQsIFUsIFY+OjphcHBlbmROb2RlKE5vZGUqIG5vZGUpCiB7
CiAgICAgbm9kZS0+bV9wcmV2ID0gbV90YWlsOwogICAgIG5vZGUtPm1fbmV4dCA9IDA7CkBAIC02
NTIsOCArNjUyLDggQEAgdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6YXBwZW5kTm9kZShOb2RlKgog
ICAgIG1fdGFpbCA9IG5vZGU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
Ci12b2lkIExpc3RIYXNoU2V0PFQsIFU+OjpwcmVwZW5kTm9kZShOb2RlKiBub2RlKQordGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+Cit2b2lkIExpc3RIYXNoU2V0PFQs
IFUsIFY+OjpwcmVwZW5kTm9kZShOb2RlKiBub2RlKQogewogICAgIG5vZGUtPm1fcHJldiA9IDA7
CiAgICAgbm9kZS0+bV9uZXh0ID0gbV9oZWFkOwpAQCAtNjY2LDggKzY2Niw4IEBAIHZvaWQgTGlz
dEhhc2hTZXQ8VCwgVT46OnByZXBlbmROb2RlKE5vZGUKICAgICBtX2hlYWQgPSBub2RlOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotdm9pZCBMaXN0SGFzaFNldDxULCBV
Pjo6aW5zZXJ0Tm9kZUJlZm9yZShOb2RlKiBiZWZvcmVOb2RlLCBOb2RlKiBuZXdOb2RlKQordGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgc2l6ZV90IFY+Cit2b2lkIExpc3RIYXNoU2V0
PFQsIFUsIFY+OjppbnNlcnROb2RlQmVmb3JlKE5vZGUqIGJlZm9yZU5vZGUsIE5vZGUqIG5ld05v
ZGUpCiB7CiAgICAgaWYgKCFiZWZvcmVOb2RlKQogICAgICAgICByZXR1cm4gYXBwZW5kTm9kZShu
ZXdOb2RlKTsKQEAgLTY4Miw4ICs2ODIsOCBAQCB2b2lkIExpc3RIYXNoU2V0PFQsIFU+OjppbnNl
cnROb2RlQmVmb3JlCiAgICAgICAgIG1faGVhZCA9IG5ld05vZGU7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci12b2lkIExpc3RIYXNoU2V0PFQsIFU+OjpkZWxldGVBbGxO
b2RlcygpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK3ZvaWQg
TGlzdEhhc2hTZXQ8VCwgVSwgVj46OmRlbGV0ZUFsbE5vZGVzKCkKIHsKICAgICBpZiAoIW1faGVh
ZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNjkyLDE0ICs2OTIsMTQgQEAgdm9pZCBMaXN0SGFzaFNl
dDxULCBVPjo6ZGVsZXRlQWxsTm9kZXMoKQogICAgICAgICBkZWxldGUgbm9kZTsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBhdXRvIExpc3RIYXNoU2V0PFQs
IFU+OjptYWtlSXRlcmF0b3IoTm9kZSogcG9zaXRpb24pIC0+IGl0ZXJhdG9yCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgVj4KK2lubGluZSBhdXRvIExpc3RIYXNoU2V0
PFQsIFUsIFY+OjptYWtlSXRlcmF0b3IoTm9kZSogcG9zaXRpb24pIC0+IGl0ZXJhdG9yCiB7CiAg
ICAgcmV0dXJuIGl0ZXJhdG9yKHRoaXMsIHBvc2l0aW9uKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBhdXRvIExpc3RIYXNoU2V0PFQsIFU+OjptYWtlQ29u
c3RJdGVyYXRvcihOb2RlKiBwb3NpdGlvbikgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKK3RlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBWPgoraW5saW5lIGF1dG8gTGlzdEhh
c2hTZXQ8VCwgVSwgVj46Om1ha2VDb25zdEl0ZXJhdG9yKE5vZGUqIHBvc2l0aW9uKSBjb25zdCAt
PiBjb25zdF9pdGVyYXRvcgogeyAKICAgICByZXR1cm4gY29uc3RfaXRlcmF0b3IodGhpcywgcG9z
aXRpb24pOwogfQo=
</data>
<flag name="review"
          id="274462"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>