<?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>204896</bug_id>
          
          <creation_ts>2019-12-05 09:53:46 -0800</creation_ts>
          <short_desc>Move InProcessIDBServer to WebKitLegacy</short_desc>
          <delta_ts>2019-12-05 15:41:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1595855</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-12-05 09:53:46 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595858</commentid>
    <comment_count>1</comment_count>
      <attachid>384914</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-12-05 09:57:15 -0800</bug_when>
    <thetext>Created attachment 384914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595889</commentid>
    <comment_count>2</comment_count>
      <attachid>384922</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-12-05 11:01:52 -0800</bug_when>
    <thetext>Created attachment 384922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595989</commentid>
    <comment_count>3</comment_count>
      <attachid>384922</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-05 14:13:07 -0800</bug_when>
    <thetext>Comment on attachment 384922
Patch

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

Mac-debug-wk1 not happy yet. Make sure it is :)

&gt; Source/WebKitLegacy/Storage/WebDatabaseProvider.h:34
&gt; +#include &lt;InProcessIDBServer.h&gt;

&quot;&quot;, not &lt;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596022</commentid>
    <comment_count>4</comment_count>
      <attachid>384958</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-12-05 14:44:48 -0800</bug_when>
    <thetext>Created attachment 384958
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596025</commentid>
    <comment_count>5</comment_count>
      <attachid>384959</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-12-05 14:49:01 -0800</bug_when>
    <thetext>Created attachment 384959
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596028</commentid>
    <comment_count>6</comment_count>
      <attachid>384961</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-12-05 14:51:14 -0800</bug_when>
    <thetext>Created attachment 384961
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596060</commentid>
    <comment_count>7</comment_count>
      <attachid>384961</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-05 15:40:55 -0800</bug_when>
    <thetext>Comment on attachment 384961
Patch for landing

Clearing flags on attachment: 384961

Committed r253178: &lt;https://trac.webkit.org/changeset/253178&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596061</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-05 15:40:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596062</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-05 15:41:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/57680412&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384914</attachid>
            <date>2019-12-05 09:57:15 -0800</date>
            <delta_ts>2019-12-05 11:01:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204896-20191205095714.patch</filename>
            <type>text/plain</type>
            <size>82736</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjUyZjhiNzA0Yzk3MWY1
NzQ5YTBmNDI3NzBlYzc1NDBiZGRkYTM5ZS4uZWFmMjU2YmExOGMyNzY2NDhkOTkyODQ2MzQ5MzY0
YzEyZjNmMTYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTEyLTA1ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgSW5Qcm9jZXNzSURC
U2VydmVyIHRvIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA0ODk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2Ugb25seSB1c2UgSW5Qcm9jZXNzSURCU2VydmVyIGluIFdlYktpdExl
Z2FjeSBub3cuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogSGVh
ZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmg6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5o
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5j
cHA6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKwogMjAxOS0xMi0wNSAgeW91ZW5uIGZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgaW5zcGVjdG9yL3BhZ2Uvb3ZlcnJpZGVT
ZXR0aW5nLU1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQuaHRtbCBpcyBmYWlsaW5nIGFmdGVyIHJl
bW92YWwgb2YgaW50ZXJuYWxzLnNldE1vY2tNZWRpYUNhcHR1cmVEZXZpY2VzRW5hYmxlZCBBUEkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMmI3NWFmNmQyMTQwNTc0MzdjNDdhN2M2Y2YxYTBjODAxZGZiNjk1OC4uYmVi
MjIyNDA0OGIyNzg0NjYwZTlmN2ViNWIyY2VjMWZlM2I5MmQ4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxOS0xMi0wNSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKwor
ICAgICAgICBNb3ZlIEluUHJvY2Vzc0lEQlNlcnZlciB0byBXZWJLaXRMZWdhY3kKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDg5NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9EYXRh
YmFzZXMvV2ViRGF0YWJhc2VQcm92aWRlci5oOgorCiAyMDE5LTEyLTA1ICBQaGlsaXBwZSBOb3Jt
YW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR0xpYl0gRGlzcGxheSBHU3Ry
ZWFtZXIgdmVyc2lvbiBpbiBhYm91dDpncHUgcGFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBk
Zjk4MzViYWFkYjM4MTU4OWFhMTBkMzU3OTQzODZhYzJkNWY1ZGM1Li4wZmQ3MmRhNmU0OGUzOWRi
ZTVjODJjZGRlNDQ4YWQyNDViZGIwMTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDc2IEBACisyMDE5LTEyLTA1ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisg
ICAgICAgIE1vdmUgSW5Qcm9jZXNzSURCU2VydmVyIHRvIFdlYktpdExlZ2FjeQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0ODk2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBTdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVy
LmNwcC4KKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKToKKyAgICAgICAgKElu
UHJvY2Vzc0lEQlNlcnZlcjo6cXVvdGFNYW5hZ2VyKToKKyAgICAgICAgKHN0b3JhZ2VRdW90YU1h
bmFnZXJTcGFjZVJlcXVlc3Rlcik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OkluUHJv
Y2Vzc0lEQlNlcnZlcik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmlkZW50aWZpZXIg
Y29uc3QpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpjb25uZWN0aW9uVG9TZXJ2ZXIg
Y29uc3QpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpjb25uZWN0aW9uVG9DbGllbnQg
Y29uc3QpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVEYXRhYmFzZSk6Cisg
ICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZURhdGFiYXNlKToKKyAgICAgICAg
KEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKEluUHJvY2Vzc0lE
QlNlcnZlcjo6ZGlkT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6
ZGlkQWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENv
bW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ3JlYXRl
T2JqZWN0U3RvcmUpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxldGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZFJlbmFtZU9iamVjdFN0
b3JlKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ2xlYXJPYmplY3RTdG9yZSk6
CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENyZWF0ZUluZGV4KToKKyAgICAgICAg
KEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRlSW5kZXgpOgorICAgICAgICAoSW5Qcm9jZXNz
SURCU2VydmVyOjpkaWRSZW5hbWVJbmRleCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6
OmRpZFB1dE9yQWRkKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0UmVjb3Jk
KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxsUmVjb3Jkcyk6CisgICAg
ICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldENvdW50KToKKyAgICAgICAgKEluUHJvY2Vz
c0lEQlNlcnZlcjo6ZGlkRGVsZXRlUmVjb3JkKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZl
cjo6ZGlkT3BlbkN1cnNvcik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEl0ZXJh
dGVDdXJzb3IpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9u
KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAg
ICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0
b3JlKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlT2JqZWN0U3RvcmUpOgor
ICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAg
IChJblByb2Nlc3NJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoSW5Qcm9j
ZXNzSURCU2VydmVyOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6
OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6cmVuYW1lSW5kZXgp
OgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpwdXRPckFkZCk6CisgICAgICAgIChJblBy
b2Nlc3NJREJTZXJ2ZXI6OmdldFJlY29yZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6
OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRDb3VudCk6
CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZVJlY29yZCk6CisgICAgICAgIChJ
blByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5DdXJzb3IpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2Vy
dmVyOjppdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZXN0YWJs
aXNoVHJhbnNhY3Rpb24pOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpmaXJlVmVyc2lv
bkNoYW5nZUV2ZW50KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkU3RhcnRUcmFu
c2FjdGlvbik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENsb3NlRnJvbVNlcnZl
cik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9j
a2VkKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVu
ZGluZ0Nsb3NlKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0
aW9uQ2xvc2VkKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRPcGVuQW5kVXBn
cmFkZU5lZWRlZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEZpcmVWZXJzaW9u
Q2hhbmdlRXZlbnQpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuREJSZXF1ZXN0
Q2FuY2VsbGVkKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29uZmlybURpZENsb3Nl
RnJvbVNlcnZlcik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFsbERhdGFiYXNl
TmFtZXMpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5h
bWVzKToKKyAgICAgICAgKiBTdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViRGF0
YWJhc2VQcm92aWRlcjo6aWRiQ29ubmVjdGlvblRvU2VydmVyRm9yU2Vzc2lvbik6CisgICAgICAg
IChXZWJEYXRhYmFzZVByb3ZpZGVyOjpkZWxldGVBbGxEYXRhYmFzZXMpOgorICAgICAgICAqIFN0
b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5oOgorICAgICAgICAqIFdlYktpdExlZ2FjeS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTEyLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgUGFnZUNvbmZpZ3VyYXRpb246OnByb2dyZXNzVHJhY2tl
ckNsaWVudCBzaG91bGQgdXNlIGEgc21hcnQgcG9pbnRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXgg
ODgyOTQ2YjhiNWZkNzk2MDc3NTk5ZGMzYjhmODc5ZjNmMjhjZGNiZC4uMTM3ZmM3OGY4NThhZmEx
MmIxOTRjMzZmY2UzZTk3N2E5Nzc3YjAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC03OSw3ICs3
OSw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBNb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmgKICAgICBNb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oCi0gICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lu
UHJvY2Vzc0lEQlNlcnZlci5oCiAKICAgICBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Np
b25FdmVudHMuaAogICAgIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRh
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJ2ZXIuaAppbmRleCBmYzE2MDRmNzY1YWUyNWM2M2EwOWE0YTkzMWQ1MDA0Y2VjMDUwYWMxLi44
ODc0NmVlZTZkMzI3Nzk0NmY4YTU2YWVhZWJjN2FkN2MzMjkzNjM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCkBAIC01OCw3
ICs1OCw3IEBAIGVudW0gY2xhc3MgU2hvdWxkRm9yY2VTdG9wIDogYm9vbCB7IE5vLCBZZXMgfTsK
IGNsYXNzIElEQlNlcnZlciA6IHB1YmxpYyBSZWZDb3VudGVkPElEQlNlcnZlcj4sIHB1YmxpYyBD
cm9zc1RocmVhZFRhc2tIYW5kbGVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SURCU2VydmVyPiB7
CiBwdWJsaWM6CiAgICAgdXNpbmcgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyID0g
RnVuY3Rpb248U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24oY29uc3QgQ2xpZW50T3JpZ2lu
JiwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpPjsKLSAgICBzdGF0aWMgUmVmPElEQlNlcnZlcj4g
Y3JlYXRlKFBBTDo6U2Vzc2lvbklELCBTdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXIm
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxJREJTZXJ2ZXI+IGNyZWF0ZShQQUw6
OlNlc3Npb25JRCwgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyJiYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8SURCU2VydmVyPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBTdG9yYWdlUXVvdGFNYW5hZ2Vy
U3BhY2VSZXF1ZXN0ZXImJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVyQ29u
bmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKaW5kZXggNTNi
N2I2MmQzMTRjMGJhNjU2ZTViMmJjNTk2MDg4ZDRlNGYxNWZmZi4uYTRjODVmNjcwYWJkMjU3ZjY3
N2EwNDZkYWU5NDAxM2VhYmIyYWVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKQEAgLTQ5LDcgKzQ5LDcg
QEAgY2xhc3MgSURCUmVxdWVzdERhdGEgewogcHVibGljOgogICAgIElEQlJlcXVlc3REYXRhKGNv
bnN0IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiwgY29uc3QgSURCT3BlbkRCUmVxdWVz
dCYpOwogICAgIGV4cGxpY2l0IElEQlJlcXVlc3REYXRhKElEQkNsaWVudDo6VHJhbnNhY3Rpb25P
cGVyYXRpb24mKTsKLSAgICBJREJSZXF1ZXN0RGF0YShjb25zdCBJREJSZXF1ZXN0RGF0YSYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIElEQlJlcXVlc3REYXRhKGNvbnN0IElEQlJlcXVlc3REYXRhJik7
CiAgICAgSURCUmVxdWVzdERhdGEoSURCUmVxdWVzdERhdGEmJikgPSBkZWZhdWx0OwogICAgIElE
QlJlcXVlc3REYXRhJiBvcGVyYXRvcj0oSURCUmVxdWVzdERhdGEmJikgPSBkZWZhdWx0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJh
bnNhY3Rpb25JbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCVHJhbnNhY3Rpb25JbmZvLmgKaW5kZXggN2I5NDc3ZThlYzU1NGM5MTNkMmE0OGJlNTU4ZTE2
MzNkOTNmY2U5Yi4uYjhiNDhhOWQzOWRkMTQ5ZGE1NzcyNTI2MjdiYTdjNDhkZjA3M2QwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5z
YWN0aW9uSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJUcmFuc2FjdGlvbkluZm8uaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElEQlRyYW5zYWN0aW9uSW5mbyBjbGllbnRUcmFuc2FjdGlvbihjb25zdCBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Qcm94eSYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvYmplY3RTdG9yZXMs
IElEQlRyYW5zYWN0aW9uTW9kZSk7CiAgICAgc3RhdGljIElEQlRyYW5zYWN0aW9uSW5mbyB2ZXJz
aW9uQ2hhbmdlKGNvbnN0IElEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiwgY29uc3Qg
SURCRGF0YWJhc2VJbmZvJiBvcmlnaW5hbERhdGFiYXNlSW5mbywgdWludDY0X3QgbmV3VmVyc2lv
bik7CiAKLSAgICBJREJUcmFuc2FjdGlvbkluZm8oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgSURCVHJhbnNhY3Rpb25JbmZvKGNvbnN0IElEQlRyYW5zYWN0
aW9uSW5mbyYpOwogICAgIElEQlRyYW5zYWN0aW9uSW5mbyhJREJUcmFuc2FjdGlvbkluZm8mJikg
PSBkZWZhdWx0OwogICAgIElEQlRyYW5zYWN0aW9uSW5mbyYgb3BlcmF0b3I9KElEQlRyYW5zYWN0
aW9uSW5mbyYmKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2NWJkNWE3NjcyYTM4MDU2NzE2ZDM2YTVjY2IxMzhm
OTFiMzFhOTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZl
ci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJblByb2Nlc3NJREJTZXJ2ZXIuaCIKLQotI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQotCi0jaW5jbHVkZSAiSURCQ29ubmVjdGlvblRvQ2xpZW50
LmgiCi0jaW5jbHVkZSAiSURCQ29ubmVjdGlvblRvU2VydmVyLmgiCi0jaW5jbHVkZSAiSURCQ3Vy
c29ySW5mby5oIgotI2luY2x1ZGUgIklEQkdldFJlY29yZERhdGEuaCIKLSNpbmNsdWRlICJJREJJ
dGVyYXRlQ3Vyc29yRGF0YS5oIgotI2luY2x1ZGUgIklEQktleVJhbmdlRGF0YS5oIgotI2luY2x1
ZGUgIklEQk9wZW5EQlJlcXVlc3QuaCIKLSNpbmNsdWRlICJJREJSZXF1ZXN0RGF0YS5oIgotI2lu
Y2x1ZGUgIklEQlJlc3VsdERhdGEuaCIKLSNpbmNsdWRlICJJREJWYWx1ZS5oIgotI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJQcm9jZXNzSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1SZWY8SW5Qcm9jZXNzSURCU2VydmVyPiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNy
ZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi17Ci0gICAgUmVmPEluUHJvY2Vzc0lEQlNl
cnZlcj4gc2VydmVyID0gYWRvcHRSZWYoKm5ldyBJblByb2Nlc3NJREJTZXJ2ZXIoc2Vzc2lvbklE
KSk7Ci0gICAgc2VydmVyLT5tX3NlcnZlci0+cmVnaXN0ZXJDb25uZWN0aW9uKHNlcnZlci0+Y29u
bmVjdGlvblRvQ2xpZW50KCkpOwotICAgIHJldHVybiBzZXJ2ZXI7Ci19Ci0KLVJlZjxJblByb2Nl
c3NJREJTZXJ2ZXI+IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgpCi17Ci0gICAgUmVm
PEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VydmVyID0gYWRvcHRSZWYoKm5ldyBJblByb2Nlc3NJREJT
ZXJ2ZXIoc2Vzc2lvbklELCBkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKLSAgICBzZXJ2ZXItPm1f
c2VydmVyLT5yZWdpc3RlckNvbm5lY3Rpb24oc2VydmVyLT5jb25uZWN0aW9uVG9DbGllbnQoKSk7
Ci0gICAgcmV0dXJuIHNlcnZlcjsKLX0KLQotSW5Qcm9jZXNzSURCU2VydmVyOjp+SW5Qcm9jZXNz
SURCU2VydmVyKCkgPSBkZWZhdWx0OwotCi1TdG9yYWdlUXVvdGFNYW5hZ2VyKiBJblByb2Nlc3NJ
REJTZXJ2ZXI6OnF1b3RhTWFuYWdlcihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKLXsKLSAg
ICByZXR1cm4gbV9xdW90YU1hbmFnZXJzLmVuc3VyZShvcmlnaW4sIFtdIHsKLSAgICAgICAgcmV0
dXJuIFN0b3JhZ2VRdW90YU1hbmFnZXI6OmNyZWF0ZShTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZh
dWx0UXVvdGEoKSwgW10gewotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0sIFtdKHVp
bnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVh
c2UsIGF1dG8gY2FsbGJhY2spIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHF1b3RhICsgY3VycmVu
dFNwYWNlICsgc3BhY2VJbmNyZWFzZSk7Ci0gICAgICAgIH0pOwotICAgIH0pLml0ZXJhdG9yLT52
YWx1ZS5nZXQoKTsKLX0KLQotc3RhdGljIGlubGluZSBJREJTZXJ2ZXI6OklEQlNlcnZlcjo6U3Rv
cmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyIHN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJl
cXVlc3RlcihJblByb2Nlc3NJREJTZXJ2ZXImIHNlcnZlcikKLXsKLSAgICByZXR1cm4gW3NlcnZl
ciA9ICZzZXJ2ZXIsIHdlYWtTZXJ2ZXIgPSBtYWtlV2Vha1B0cihzZXJ2ZXIpXShjb25zdCBDbGll
bnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpIG11dGFibGUgewotICAg
ICAgICBhdXRvKiBzdG9yYWdlUXVvdGFNYW5hZ2VyID0gd2Vha1NlcnZlciA/IHNlcnZlci0+cXVv
dGFNYW5hZ2VyKG9yaWdpbikgOiBudWxscHRyOwotICAgICAgICByZXR1cm4gc3RvcmFnZVF1b3Rh
TWFuYWdlciA/IHN0b3JhZ2VRdW90YU1hbmFnZXItPnJlcXVlc3RTcGFjZU9uQmFja2dyb3VuZFRo
cmVhZChzcGFjZVJlcXVlc3RlZCkgOiBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVu
eTsKLSAgICB9OwotfQotCi1JblByb2Nlc3NJREJTZXJ2ZXI6OkluUHJvY2Vzc0lEQlNlcnZlcihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgOiBtX3NlcnZlcihJREJTZXJ2ZXI6OklEQlNl
cnZlcjo6Y3JlYXRlKHNlc3Npb25JRCwgc3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVy
KCp0aGlzKSkpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICByZWxheEFkb3B0
aW9uUmVxdWlyZW1lbnQoKTsKLSAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlciA9IElEQkNsaWVudDo6
SURCQ29ubmVjdGlvblRvU2VydmVyOjpjcmVhdGUoKnRoaXMpOwotICAgIG1fY29ubmVjdGlvblRv
Q2xpZW50ID0gSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSgqdGhpcyk7
Ci19Ci0KLUluUHJvY2Vzc0lEQlNlcnZlcjo6SW5Qcm9jZXNzSURCU2VydmVyKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgpCi0gICAg
OiBtX3NlcnZlcihJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y3JlYXRlKHNlc3Npb25JRCwgZGF0YWJh
c2VEaXJlY3RvcnlQYXRoLCBzdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXIoKnRoaXMp
KSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHJlbGF4QWRvcHRpb25SZXF1
aXJlbWVudCgpOwotICAgIG1fY29ubmVjdGlvblRvU2VydmVyID0gSURCQ2xpZW50OjpJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZSgqdGhpcyk7Ci0gICAgbV9jb25uZWN0aW9uVG9DbGllbnQg
PSBJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKCp0aGlzKTsKLX0KLQot
SURCQ29ubmVjdGlvbklkZW50aWZpZXIgSW5Qcm9jZXNzSURCU2VydmVyOjppZGVudGlmaWVyKCkg
Y29uc3QKLXsKLSAgICAvLyBBbiBpbnN0YW5jZSBvZiBJblByb2Nlc3NJREJTZXJ2ZXIgYWx3YXlz
IGhhcyBhIDE6MSByZWxhdGlvbnNoaXAgd2l0aCBpdHMgaW5zdGFuY2Ugb2YgSURCU2VydmVyLgot
ICAgIC8vIFRoZXJlZm9yZSB0aGUgY29ubmVjdGlvbiBpZGVudGlmaWVyIGJldHdlZW4gdGhlIHR3
byBjYW4gYWx3YXlzIGJlICIxIi4KLSAgICByZXR1cm4gUHJvY2Vzczo6aWRlbnRpZmllcigpOwot
fQotCi1JREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgSW5Qcm9jZXNzSURCU2VydmVy
Ojpjb25uZWN0aW9uVG9TZXJ2ZXIoKSBjb25zdAotewotICAgIHJldHVybiAqbV9jb25uZWN0aW9u
VG9TZXJ2ZXI7Ci19Ci0KLUlEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiBJblByb2Nl
c3NJREJTZXJ2ZXI6OmNvbm5lY3Rpb25Ub0NsaWVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICpt
X2Nvbm5lY3Rpb25Ub0NsaWVudDsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0
ZURhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKLXsKLSAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgcmVxdWVzdERhdGFdIHsKLSAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZURhdGFiYXNlKHJl
cXVlc3REYXRhKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERl
bGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCi17Ci0gICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHJlc3VsdERhdGFdIHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZERl
bGV0ZURhdGFiYXNlKHJlc3VsdERhdGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkK
LXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGFdIHsKLSAgICAgICAgbV9zZXJ2ZXItPm9wZW5E
YXRhYmFzZShyZXF1ZXN0RGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2Vy
dmVyOjpkaWRPcGVuRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKLXsK
LSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0gewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZl
ci0+ZGlkT3BlbkRhdGFiYXNlKHJlc3VsdERhdGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGlkQWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQotewot
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yXSB7Ci0gICAgICAgIG1f
Y29ubmVjdGlvblRvU2VydmVyLT5kaWRBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgZXJyb3IpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlk
Q29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJvcikKLXsKLSAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcl0gewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZl
ci0+ZGlkQ29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcik7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDcmVhdGVPYmplY3RTdG9y
ZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQotewotICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1
bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRDcmVhdGVPYmplY3RT
dG9yZShyZXN1bHREYXRhKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
OmRpZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCi17
Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2
ZXItPmRpZERlbGV0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpOwotICAgIH0pOwotfQotCi12b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkUmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0
RGF0YSYgcmVzdWx0RGF0YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0gewotICAgICAg
ICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkUmVuYW1lT2JqZWN0U3RvcmUocmVzdWx0RGF0YSk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDbGVhck9iamVjdFN0
b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJl
c3VsdERhdGFdIHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZENsZWFyT2JqZWN0
U3RvcmUocmVzdWx0RGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpkaWRDcmVhdGVJbmRleChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQotewotICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5k
aWRDcmVhdGVJbmRleChyZXN1bHREYXRhKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRpZERlbGV0ZUluZGV4KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEp
Ci17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9T
ZXJ2ZXItPmRpZERlbGV0ZUluZGV4KHJlc3VsdERhdGEpOwotICAgIH0pOwotfQotCi12b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkUmVuYW1lSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVz
dWx0RGF0YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0gewotICAgICAgICBtX2Nvbm5l
Y3Rpb25Ub1NlcnZlci0+ZGlkUmVuYW1lSW5kZXgocmVzdWx0RGF0YSk7Ci0gICAgfSk7Ci19Ci0K
LXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRQdXRPckFkZChjb25zdCBJREJSZXN1bHREYXRh
JiByZXN1bHREYXRhKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7Ci0gICAgICAgIG1f
Y29ubmVjdGlvblRvU2VydmVyLT5kaWRQdXRPckFkZChyZXN1bHREYXRhKTsKLSAgICB9KTsKLX0K
LQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldFJlY29yZChjb25zdCBJREJSZXN1bHRE
YXRhJiByZXN1bHREYXRhKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7Ci0gICAgICAg
IG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRSZWNvcmQocmVzdWx0RGF0YSk7Ci0gICAgfSk7
Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRBbGxSZWNvcmRzKGNvbnN0IElE
QlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsK
LSAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZEdldEFsbFJlY29yZHMocmVzdWx0RGF0
YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRDb3VudChj
b25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHRE
YXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRDb3VudChyZXN1bHRE
YXRhKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZVJl
Y29yZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQotewotICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBy
ZXN1bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWREZWxldGVSZWNv
cmQocmVzdWx0RGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpk
aWRPcGVuQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCi17Ci0gICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHJlc3VsdERhdGFdIHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZE9w
ZW5DdXJzb3IocmVzdWx0RGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2Vy
dmVyOjpkaWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCi17
Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2
ZXItPmRpZEl0ZXJhdGVDdXJzb3IocmVzdWx0RGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgcmVzb3VyY2VJZGVudGlmaWVyKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXNvdXJjZUlkZW50
aWZpZXJdIHsKLSAgICAgICAgbV9zZXJ2ZXItPmFib3J0VHJhbnNhY3Rpb24ocmVzb3VyY2VJZGVu
dGlmaWVyKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbW1pdFRy
YW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVzb3VyY2VJZGVudGlmaWVy
KQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCByZXNvdXJjZUlkZW50aWZpZXJdIHsKLSAgICAgICAgbV9zZXJ2
ZXItPmNvbW1pdFRyYW5zYWN0aW9uKHJlc291cmNlSWRlbnRpZmllcik7Ci0gICAgfSk7Ci19Ci0K
LXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKLXsKLSAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVy
XSB7Ci0gICAgICAgIG1fc2VydmVyLT5kaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZp
ZXIpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlT2JqZWN0
U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlc3VsdERhdGEsIGNvbnN0IElEQk9iamVjdFN0
b3JlSW5mbyYgaW5mbykKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YSwgaW5mb10gewotICAg
ICAgICBtX3NlcnZlci0+Y3JlYXRlT2JqZWN0U3RvcmUocmVzdWx0RGF0YSwgaW5mbyk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVPYmplY3RTdG9yZShjb25z
dCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVO
YW1lKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lXSB7Ci0g
ICAgICAgIG1fc2VydmVyLT5kZWxldGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3Rv
cmVOYW1lKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZU9i
amVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCi17Ci0gICAgUnVuTG9v
cDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWVdIHsKLSAgICAg
ICAgbV9zZXJ2ZXItPnJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIG5ld05hbWUpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6Y2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERh
dGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcl0gewotICAgICAgICBtX3NlcnZlci0+Y2xlYXJPYmpl
Y3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKLSAgICB9KTsKLX0K
LQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQotewotICAgIFJ1bkxv
b3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCByZXF1ZXN0RGF0YSwgaW5mb10gewotICAgICAgICBtX3NlcnZlci0+Y3JlYXRlSW5kZXgo
cmVxdWVzdERhdGEsIGluZm8pOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6ZGVsZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQotewotICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWVd
IHsKLSAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIGluZGV4TmFtZSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpyZW5hbWVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIG5ld05hbWUpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZV0gewotICAgICAgICBt
X3NlcnZlci0+cmVuYW1lSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwg
aW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
c3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCBjb25zdCBJbmRl
eGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlKQotewotICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCByZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGVdIHsKLSAg
ICAgICAgbV9zZXJ2ZXItPnB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3Zl
cndyaXRlTW9kZSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRS
ZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRSZWNv
cmREYXRhJiBnZXRSZWNvcmREYXRhKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwgZ2V0
UmVjb3JkRGF0YV0gewotICAgICAgICBtX3NlcnZlci0+Z2V0UmVjb3JkKHJlcXVlc3REYXRhLCBn
ZXRSZWNvcmREYXRhKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Omdl
dEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJH
ZXRBbGxSZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJl
cXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YV0gewotICAgICAgICBtX3NlcnZlci0+Z2V0QWxs
UmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEpOwotICAgIH0pOwotfQotCi12
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKLXsKLSAgICBS
dW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YV0gewotICAgICAgICBtX3NlcnZlci0+
Z2V0Q291bnQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQg
SW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKLXsKLSAgICBS
dW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YV0gewotICAgICAgICBtX3NlcnZlci0+
ZGVsZXRlUmVjb3JkKHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEpOwotICAgIH0pOwotfQotCi12
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCi17Ci0gICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHJlcXVlc3REYXRhLCBpbmZvXSB7Ci0gICAgICAgIG1fc2VydmVyLT5vcGVuQ3Vyc29yKHJlcXVl
c3REYXRhLCBpbmZvKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Oml0
ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJ
dGVyYXRlQ3Vyc29yRGF0YSYgZGF0YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIGRh
dGFdIHsKLSAgICAgICAgbV9zZXJ2ZXItPml0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGRhdGEp
OwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZXN0YWJsaXNoVHJhbnNh
Y3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJh
bnNhY3Rpb25JbmZvJiBpbmZvKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBpbmZvXSB7Ci0gICAgICAgIG1fc2VydmVyLT5lc3RhYmxpc2hUcmFuc2FjdGlv
bihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBpbmZvKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoSURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24p
Ci17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0
aW9uLmlkZW50aWZpZXIoKSwgcmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3RlZFZlcnNpb25dIHsK
LSAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3RlZFZl
cnNpb24pOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkU3RhcnRU
cmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGVycm9yXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRT
dGFydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3IpOwotICAgIH0pOwot
fQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ2xvc2VGcm9tU2VydmVyKElEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJREJFcnJv
ciYgZXJyb3IpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIg
PSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKSwgZXJyb3JdIHsKLSAgICAgICAgbV9jb25uZWN0aW9u
VG9TZXJ2ZXItPmRpZENsb3NlRnJvbVNlcnZlcihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
LCBlcnJvcik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpub3RpZnlP
cGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKQotewot
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgb2xkVmVyc2lvbiwgbmV3VmVyc2lvbl0g
ewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2Nr
ZWQocmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pOwotICAgIH0pOwot
fQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Ns
b3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCi17Ci0gICAgUnVuTG9v
cDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXJdIHsKLSAgICAgICAgbV9zZXJ2ZXItPmRh
dGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZShkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
KTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVj
dGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQotewotICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyXSB7Ci0gICAgICAgIG1fc2Vy
dmVyLT5kYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
cik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjphYm9ydE9wZW5BbmRV
cGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQotewotICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZp
ZXJdIHsKLSAgICAgICAgbV9zZXJ2ZXItPmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICB9KTsK
LX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQo
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSW5kZXhlZERCOjpDb25uZWN0aW9u
Q2xvc2VkT25CZWhhbGZPZlNlcnZlciBjb25uZWN0aW9uQ2xvc2VkKQotewotICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgY29ubmVj
dGlvbkNsb3NlZF0gewotICAgICAgICBtX3NlcnZlci0+ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVu
dChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgY29ubmVj
dGlvbkNsb3NlZCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVu
REJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKLXsK
LSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGFdIHsKLSAgICAgICAgbV9zZXJ2ZXItPm9wZW5EQlJl
cXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6Y29uZmlybURpZENsb3NlRnJvbVNlcnZlcih1aW50NjRfdCBkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyXSB7Ci0gICAgICAgIG1fc2VydmVyLT5jb25maXJtRGlkQ2xvc2VGcm9tU2VydmVy
KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lcyhjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIG1haW5GcmFtZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3Jp
Z2luLCB1aW50NjRfdCBjYWxsYmFja0lEKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluRnJhbWVPcmln
aW4sIG9wZW5pbmdPcmlnaW4sIGNhbGxiYWNrSURdIHsKLSAgICAgICAgbV9zZXJ2ZXItPmdldEFs
bERhdGFiYXNlTmFtZXMobV9jb25uZWN0aW9uVG9TZXJ2ZXItPmlkZW50aWZpZXIoKSwgbWFpbkZy
YW1lT3JpZ2luLCBvcGVuaW5nT3JpZ2luLCBjYWxsYmFja0lEKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbERhdGFiYXNlTmFtZXModWludDY0X3QgY2Fs
bGJhY2tJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRhdGFiYXNlTmFtZXMpCi17Ci0gICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNhbGxiYWNrSUQsIGRhdGFiYXNlTmFtZXNdIHsKLSAgICAgICAgbV9jb25uZWN0aW9u
VG9TZXJ2ZXItPmRpZEdldEFsbERhdGFiYXNlTmFtZXMoY2FsbGJhY2tJRCwgZGF0YWJhc2VOYW1l
cyk7Ci0gICAgfSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA4ZTczNmE3ODA5MTkxZTQzN2I4NjNjM2RiZGRhMmFiNDhlZTA2
NWRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQotI2luY2x1ZGUgIklEQkNvbm5lY3Rp
b25Ub0NsaWVudC5oIgotI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgotI2luY2x1
ZGUgIklEQlNlcnZlci5oIgotI2luY2x1ZGUgIlN0b3JhZ2VRdW90YU1hbmFnZXIuaCIKLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgUEFMIHsKLWNsYXNzIFNlc3Npb25JRDsKLX0K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgQ2xpZW50T3JpZ2luOwotCi1uYW1lc3Bh
Y2UgSURCQ2xpZW50IHsKLWNsYXNzIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjsKLX0KLQotbmFtZXNw
YWNlIElEQlNlcnZlciB7Ci1jbGFzcyBJREJTZXJ2ZXI7Ci19Ci0KLWNsYXNzIEluUHJvY2Vzc0lE
QlNlcnZlciBmaW5hbCA6IHB1YmxpYyBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlckRl
bGVnYXRlLCBwdWJsaWMgSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZSwg
cHVibGljIFJlZkNvdW50ZWQ8SW5Qcm9jZXNzSURCU2VydmVyPiB7Ci1wdWJsaWM6Ci0gICAgdXNp
bmcgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZTo6d2Vha1B0ckZhY3Rv
cnk7Ci0gICAgdXNpbmcgV2Vha1ZhbHVlVHlwZSA9IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblRv
U2VydmVyRGVsZWdhdGU6OldlYWtWYWx1ZVR5cGU7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklEKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4gY3JlYXRlKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7Ci0KLSAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JblByb2Nlc3NJREJTZXJ2ZXIoKTsKLQotICAgIFdFQkNP
UkVfRVhQT1JUIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyJiBjb25uZWN0aW9uVG9T
ZXJ2ZXIoKSBjb25zdDsKLSAgICBJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29u
bmVjdGlvblRvQ2xpZW50KCkgY29uc3Q7Ci0gICAgSURCU2VydmVyOjpJREJTZXJ2ZXImIHNlcnZl
cigpIHsgcmV0dXJuIG1fc2VydmVyLmdldCgpOyB9Ci0gICAgSURCU2VydmVyOjpJREJTZXJ2ZXIm
IGlkYlNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyLmdldCgpOyB9Ci0KLSAgICAvLyBJREJDb25u
ZWN0aW9uVG9TZXJ2ZXIKLSAgICB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3RE
YXRhJikgZmluYWw7Ci0gICAgdm9pZCBvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEm
KSBmaW5hbDsKLSAgICB2b2lkIGFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJikgZmluYWw7Ci0gICAgdm9pZCBjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZpbmlzaEhhbmRsaW5nVmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIs
IGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYpIGZpbmFsOwotICAgIHZvaWQgY3JlYXRlT2Jq
ZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8m
KSBmaW5hbDsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRh
JiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpIGZpbmFsOwotICAgIHZvaWQgcmVuYW1l
T2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkgZmluYWw7Ci0gICAgdm9pZCBjbGVhck9i
amVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRh
JiwgY29uc3QgSURCSW5kZXhJbmZvJikgZmluYWw7Ci0gICAgdm9pZCBkZWxldGVJbmRleChjb25z
dCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBpbmRleE5hbWUpIGZpbmFsOwotICAgIHZvaWQgcmVuYW1lSW5kZXgoY29uc3QgSURC
UmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGlu
ZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKSBmaW5hbDsKLSAgICB2b2lkIHB1
dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElE
QlZhbHVlJiwgY29uc3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpIGZpbmFs
OwotICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0
UmVjb3JkRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJikgZmluYWw7Ci0gICAgdm9pZCBn
ZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpIGZp
bmFsOwotICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJikgZmluYWw7Ci0gICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpIGZpbmFsOwotICAgIHZvaWQgaXRlcmF0
ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRh
JikgZmluYWw7Ci0gICAgdm9pZCBlc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKSBmaW5hbDsK
LSAgICB2b2lkIGRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFiYXNlQ29ubmVjdGlv
bkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSBmaW5hbDsKLSAg
ICB2b2lkIGFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIpIGZpbmFsOwotICAgIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50
NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9z
ZWRPbkJlaGFsZk9mU2VydmVyID0gSW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZP
ZlNlcnZlcjo6Tm8pIGZpbmFsOwotICAgIHZvaWQgb3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25z
dCBJREJSZXF1ZXN0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgY29uZmlybURpZENsb3NlRnJvbVNl
cnZlcih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2
b2lkIGdldEFsbERhdGFiYXNlTmFtZXMoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBtYWluRnJh
bWVPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgdWludDY0
X3QgY2FsbGJhY2tJRCkgZmluYWw7Ci0KLSAgICAvLyBJREJDb25uZWN0aW9uVG9DbGllbnQKLSAg
ICBJREJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7Ci0gICAg
dm9pZCBkaWREZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJikgZmluYWw7Ci0gICAg
dm9pZCBkaWRPcGVuRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZv
aWQgZGlkQWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKSBmaW5hbDsKLSAgICB2b2lkIGRpZENv
bW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYpIGZpbmFsOwotICAgIHZvaWQgZGlkQ3JlYXRlT2Jq
ZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGlkRGVsZXRl
T2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVu
YW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGlk
Q2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJikgZmluYWw7Ci0gICAgdm9pZCBk
aWRDcmVhdGVJbmRleChjb25zdCBJREJSZXN1bHREYXRhJikgZmluYWw7Ci0gICAgdm9pZCBkaWRE
ZWxldGVJbmRleChjb25zdCBJREJSZXN1bHREYXRhJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZW5h
bWVJbmRleChjb25zdCBJREJSZXN1bHREYXRhJikgZmluYWw7Ci0gICAgdm9pZCBkaWRQdXRPckFk
ZChjb25zdCBJREJSZXN1bHREYXRhJikgZmluYWw7Ci0gICAgdm9pZCBkaWRHZXRSZWNvcmQoY29u
c3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGlkR2V0QWxsUmVjb3Jkcyhjb25z
dCBJREJSZXN1bHREYXRhJikgZmluYWw7Ci0gICAgdm9pZCBkaWRHZXRDb3VudChjb25zdCBJREJS
ZXN1bHREYXRhJikgZmluYWw7Ci0gICAgdm9pZCBkaWREZWxldGVSZWNvcmQoY29uc3QgSURCUmVz
dWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGlkT3BlbkN1cnNvcihjb25zdCBJREJSZXN1bHRE
YXRhJikgZmluYWw7Ci0gICAgdm9pZCBkaWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERh
dGEmKSBmaW5hbDsKLSAgICB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoSURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFN0YXJ0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJikgZmluYWw7Ci0gICAgdm9pZCBk
aWRDbG9zZUZyb21TZXJ2ZXIoSURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24m
LCBjb25zdCBJREJFcnJvciYpIGZpbmFsOwotICAgIHZvaWQgbm90aWZ5T3BlbkRCUmVxdWVzdEJs
b2NrZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWlu
dDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbikgZmluYWw7Ci0gICAgdm9pZCBk
aWRHZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkYXRhYmFzZU5hbWVzKSBmaW5hbDsKLQotICAgIHZvaWQgcmVmKCkgb3ZlcnJpZGUg
eyBSZWZDb3VudGVkPEluUHJvY2Vzc0lEQlNlcnZlcj46OnJlZigpOyB9Ci0gICAgdm9pZCBkZXJl
ZigpIG92ZXJyaWRlIHsgUmVmQ291bnRlZDxJblByb2Nlc3NJREJTZXJ2ZXI+OjpkZXJlZigpOyB9
Ci0KLSAgICBTdG9yYWdlUXVvdGFNYW5hZ2VyKiBxdW90YU1hbmFnZXIoY29uc3QgQ2xpZW50T3Jp
Z2luJik7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgSW5Qcm9jZXNzSURCU2VydmVyKFBBTDo6
U2Vzc2lvbklEKTsKLSAgICBJblByb2Nlc3NJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKLQotICAgIFJlZjxJREJTZXJ2ZXI6OklE
QlNlcnZlcj4gbV9zZXJ2ZXI7Ci0gICAgUmVmUHRyPElEQkNsaWVudDo6SURCQ29ubmVjdGlvblRv
U2VydmVyPiBtX2Nvbm5lY3Rpb25Ub1NlcnZlcjsKLSAgICBSZWZQdHI8SURCU2VydmVyOjpJREJD
b25uZWN0aW9uVG9DbGllbnQ+IG1fY29ubmVjdGlvblRvQ2xpZW50OwotCi0gICAgSGFzaE1hcDxD
bGllbnRPcmlnaW4sIFJlZlB0cjxTdG9yYWdlUXVvdGFNYW5hZ2VyPj4gbV9xdW90YU1hbmFnZXJz
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDkxNzQ4N2UxMWQzYTNhNmRlZmU1NGVkMDdi
N2ZiOGJjZTk3OWRmZjMuLjVmZTcyM2I0ZTUxMDQ0MTg1MzdjNmI4Mjk3NjBkODYwZjNmOTNmMjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC0xNDIsNyArMTQyLDYgQEAgTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQlJlcXVlc3REYXRhLmNwcAogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291
cmNlSWRlbnRpZmllci5jcHAKIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRh
LmNwcAogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5jcHAKLU1v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuY3BwCiAKIE1vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMv
TWVkaWFDYXBhYmlsaXRpZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjMwM2Q3ZDVkNDkxMmQyOTU1YmUxMDRiNzMzNmJl
MWNiYmNhODA1MC4uMjJlNGY3MTY0ZjY5MTUzMmUxMzA5Y2U5NzNjNDdlYTRlN2Q4MDQyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTM4OCw3ICsxMzg4LDYgQEAKIAkJNTEwNThBRTIxRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tH
YW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMDU4QURBMUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEwNUYw
NjkxRDRCQTlEOTAwRkI4MEJDIC8qIElEQkdldFJlY29yZERhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDVGMDY4MUQ0QkE1NDEwMEZCODBCQyAv
KiBJREJHZXRSZWNvcmREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTEwNkQ3QkUxOEJEQjc2RjAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29u
dGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEw
NkQ3QkMxOEJEQjc2RjAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxMEE1OEU1MUJBQTQwQjEw
MEMxOTI4MiAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEE1OEUzMUJBQTQwQUUwMEMxOTI4MiAvKiBJblByb2Nl
c3NJREJTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MTBBNThGQTFCQUNDN0YyMDBDMTkyODIgLyogSURCUmVxdWVzdERhdGEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEE1OEY2MUJBQ0M0
QTUwMEMxOTI4MiAvKiBJREJSZXF1ZXN0RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMEQ0QTM0MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2Nr
ZXRTdHJlYW1FcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEwRDRBMkUxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEwRDRBMzcx
MDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8q
IFNvY2tldFN0cmVhbUhhbmRsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC04MDQ0LDggKzgwNDMsNiBAQAogCQk1MTA1RjA2QTFENEJCMEJDMDBG
QjgwQkMgLyogSURCR2V0UmVjb3JkRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJREJHZXRSZWNvcmREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTEwNkQ3QkIxOEJEQjc2RjAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZXh0TWVudUNvbnRleHQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTA2RDdCQzE4QkRCNzZGMDAwQUIx
NjYgLyogQ29udGV4dE1lbnVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvbnRleHRNZW51Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1
MTBBNThFMjFCQUE0MEFFMDBDMTkyODIgLyogSW5Qcm9jZXNzSURCU2VydmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluUHJvY2Vzc0lEQlNlcnZlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxMEE1OEUzMUJBQTQwQUUwMEMxOTI4MiAvKiBJ
blByb2Nlc3NJREJTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5Q
cm9jZXNzSURCU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEE1OEVG
MUJBQjcyMEYwMEMxOTI4MiAvKiBJREJTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSURCU2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTEwQTU4RjAxQkFCNzIwRjAwQzE5MjgyIC8qIElEQlNlcnZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJREJTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTEwQTU4RjUxQkFDQzRBNTAwQzE5MjgyIC8qIElEQlJlcXVlc3REYXRhLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlJlcXVlc3REYXRhLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4OTI0LDggKzE4OTIxLDYgQEAKIAkJCQk1MTk4
RjdBQjFCQkREM0UzMDBFMkNDNUYgLyogSURCVHJhbnNhY3Rpb25JbmZvLmggKi8sCiAJCQkJNTE3
MTM4RUQxQkVEMUQxNzAwMEQ1RjAxIC8qIEluZGV4S2V5LmNwcCAqLywKIAkJCQk1MTcxMzhFRTFC
RUQxRDE3MDAwRDVGMDEgLyogSW5kZXhLZXkuaCAqLywKLQkJCQk1MTBBNThFMjFCQUE0MEFFMDBD
MTkyODIgLyogSW5Qcm9jZXNzSURCU2VydmVyLmNwcCAqLywKLQkJCQk1MTBBNThFMzFCQUE0MEFF
MDBDMTkyODIgLyogSW5Qcm9jZXNzSURCU2VydmVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHNo
YXJlZDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMDIzNSw3ICszMDIzMCw2IEBA
CiAJCQkJQkNFQTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8qIElubGluZVRleHRCb3guaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFDMDEwNzAxMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGMUNDMURFMjI1RjhCNDkwMDcyMEFEMiAvKiBJbmxp
bmVUZXh0SXRlbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTEwQTU4RTUxQkFBNDBCMTAwQzE5Mjgy
IC8qIEluUHJvY2Vzc0lEQlNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVCNzY3NTcxREEx
OUJERjAwM0UyM0I1IC8qIElucHV0RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU1MkVGREY0
MjExMjg3NUEwMEFEMjgyQSAvKiBJbnB1dE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RTM1
MjREMTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA2MDBlZjdiNmJhYzg2Y2E2ZjRjMTVh
MWZjZjA2MTg5YWQ5ODU5MzRmLi43NzllOTE0YTllY2I3Y2E0YWM1ZDFhYzkwZmJjMGMwYTZhZjg1
MGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtNTAsNyArNTAs
NyBAQAogI2luY2x1ZGUgIkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1M
Rm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgotI2luY2x1ZGUgIkluUHJv
Y2Vzc0lEQlNlcnZlci5oIgorI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCkBAIC0xMjMsMTAgKzEyMyw0NiBA
QCBjbGFzcyBFbXB0eUNvbnRleHRNZW51Q2xpZW50IGZpbmFsIDogcHVibGljIENvbnRleHRNZW51
Q2xpZW50IHsKIAogY2xhc3MgRW1wdHlEYXRhYmFzZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIERh
dGFiYXNlUHJvdmlkZXIgewogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotICAgIElEQkNs
aWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyJiBpZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNz
aW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpIGZpbmFsCisgICAgc3RydWN0IEVt
cHR5SURCQ29ubmVjdGlvblRvU2VydmVyRGVsZXRlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBJREJDbGll
bnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlIHsKKyAgICAgICAgSURCQ29ubmVjdGlv
bklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorICAg
ICAgICB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJikgZmluYWwgeyB9
CisgICAgICAgIHZvaWQgb3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJikgZmluYWwg
eyB9CisgICAgICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBjb21taXRUcmFuc2FjdGlvbihjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBkaWRGaW5pc2hI
YW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCwgY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUo
Y29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKSBmaW5hbCB7
IH0KKyAgICAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3Jl
KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3QsIGNvbnN0IFN0cmluZyYpIGZpbmFsIHsg
fQorICAgICAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1
aW50NjRfdCkgZmluYWwgeyB9CisgICAgICAgIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgSURCUmVx
dWVzdERhdGEmLCBjb25zdCBJREJJbmRleEluZm8mKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBk
ZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90LCBjb25zdCBTdHJpbmcm
KSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCByZW5hbWVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIHVpbnQ2NF90LCB1aW50NjRfdCwgY29uc3QgU3RyaW5nJikgZmluYWwgeyB9CisgICAgICAg
IHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwg
Y29uc3QgSURCVmFsdWUmLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9k
ZSkgZmluYWwgeyB9CisgICAgICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRh
JiwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGdldEFs
bFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0
YSYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRh
JiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgZGVsZXRl
UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgZmlu
YWwgeyB9CisgICAgICAgIHZvaWQgb3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNv
bnN0IElEQkN1cnNvckluZm8mKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBpdGVyYXRlQ3Vyc29y
KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmKSBmaW5h
bCB7IH0KKyAgICAgICAgdm9pZCBlc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCwgY29uc3Qg
SURCVHJhbnNhY3Rpb25JbmZvJikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgZGF0YWJhc2VDb25u
ZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90KSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBkYXRh
YmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGFi
b3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QsIGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQo
dWludDY0X3QsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IEluZGV4ZWREQjo6
Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIpIGZpbmFsIHsgfQorICAgICAgICB2b2lk
IG9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgSURCUmVxdWVzdERhdGEmKSBmaW5hbCB7IH0K
KyAgICAgICAgdm9pZCBnZXRBbGxEYXRhYmFzZU5hbWVzKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIHVpbnQ2NF90KSBmaW5hbCB7IH0KKyAgICAg
ICAgfkVtcHR5SURCQ29ubmVjdGlvblRvU2VydmVyRGVsZXRlZ2F0ZSgpIHsgfQorICAgICAgICAK
KyAgICAgICAgdm9pZCBjb25maXJtRGlkQ2xvc2VGcm9tU2VydmVyKHVpbnQ2NF90KSBmaW5hbCB7
IH0KKyAgICAgICAgdm9pZCByZWYoKSB7IH0KKyAgICAgICAgdm9pZCBkZXJlZigpIHsgfQorICAg
IH07CisKKyAgICBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgaWRiQ29ubmVjdGlv
blRvU2VydmVyRm9yU2Vzc2lvbihjb25zdCBQQUw6OlNlc3Npb25JRCYpIGZpbmFsCiAgICAgewot
ICAgICAgICBzdGF0aWMgYXV0byYgc2hhcmVkQ29ubmVjdGlvbiA9IEluUHJvY2Vzc0lEQlNlcnZl
cjo6Y3JlYXRlKHNlc3Npb25JRCkubGVha1JlZigpOwotICAgICAgICByZXR1cm4gc2hhcmVkQ29u
bmVjdGlvbi5jb25uZWN0aW9uVG9TZXJ2ZXIoKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEVtcHR5SURCQ29ubmVjdGlvblRvU2VydmVyRGVsZXRlZ2F0ZT4gZW1wdHlEZWxlZ2F0ZTsK
KyAgICAgICAgc3RhdGljIGF1dG8mIGVtcHR5Q29ubmVjdGlvbiA9IElEQkNsaWVudDo6SURCQ29u
bmVjdGlvblRvU2VydmVyOjpjcmVhdGUoZW1wdHlEZWxlZ2F0ZS5nZXQoKSkubGVha1JlZigpOwor
ICAgICAgICByZXR1cm4gZW1wdHlDb25uZWN0aW9uOwogICAgIH0KICNlbmRpZgogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCmluZGV4IDdmMGUwMGRkMjhkZDlmOWExNDA0MDY3NjQ2ZjQ2MDVhOTI0Y2U1NzMu
LjIwM2Y1YWU5YjQyODRmZTEwZGVhMmU0ZjhiNmVkYjAxNDI5YWQwOGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcApAQCAtMTUwLDcgKzE1MCw2IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
ICNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKLSNpbmNsdWRlICJJblByb2Nlc3NJ
REJTZXJ2ZXIuaCIKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL1dlYkRhdGFiYXNlUHJv
dmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2ViRGF0YWJhc2VQ
cm92aWRlci5oCmluZGV4IGQ0ZTdmMWNmMDQwMmNjOTcyYWVjNjFhYjEyMGRiMDgzOTRiMjUwZGYu
LjhlOWYyOGI3NWMzZDhlNThlZDhmMTJlZjFlZDhlZjRkMjQ2Yzk0YzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2ViRGF0YWJhc2VQcm92aWRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2ViRGF0YWJhc2VQcm92aWRl
ci5oCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIFdlYkRhdGFiYXNlUHJvdmlkZXJfaAogCiAj
aW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVByb3ZpZGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9J
blByb2Nlc3NJREJTZXJ2ZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NNYWtlTGlzdHMudHh0CmluZGV4IDBjM2Y1MjQ4ZTA0
YjQxMjdiNmJmZGI2MDU5ZDVjZThmM2VjMGE5N2YuLjAyNjY1YmQ2MjQ2YTI2MWNhM2E3NDcwMzc5
NGVhZDFjYTlmYzEyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DTWFrZUxpc3RzLnR4dApAQCAtMyw2ICsz
LDcgQEAgaW5jbHVkZShXZWJLaXRDb21tb24pCiBzZXRfcHJvcGVydHkoRElSRUNUT1JZIC4gUFJP
UEVSVFkgRk9MREVSICJXZWJLaXRMZWdhY3kiKQogCiBzZXQoV2ViS2l0TGVnYWN5X1NPVVJDRVMK
KyAgICBTdG9yYWdlL0lucHJvY2Vzc0lEQlNlcnZlci5jcHAKICAgICBTdG9yYWdlL1N0b3JhZ2VB
cmVhSW1wbC5jcHAKICAgICBTdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKICAgICBTdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZmUzYjhmYjhhYTA3NGE1
NzNhMGIzN2E4MThhZWMwMmQ3ZjcwODQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKQEAgLTAsMCArMSw0NjMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiSW5Qcm9jZXNzSURCU2VydmVyLmgiCisKKyNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgPFdlYkNvcmUvSURCQ3Vyc29ySW5mby5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvSURCR2V0UmVjb3JkRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvSURCSXRlcmF0ZUN1cnNvckRhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lEQktleVJhbmdl
RGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSURCT3BlbkRCUmVxdWVzdC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvSURCUmVxdWVzdERhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lEQlJlc3VsdERh
dGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lEQlRyYW5zYWN0aW9uSW5mby5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvSURCVmFsdWUuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4gSW5Qcm9jZXNzSURC
U2VydmVyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAgIFJlZjxJblBy
b2Nlc3NJREJTZXJ2ZXI+IHNlcnZlciA9IGFkb3B0UmVmKCpuZXcgSW5Qcm9jZXNzSURCU2VydmVy
KHNlc3Npb25JRCkpOworICAgIHNlcnZlci0+bV9zZXJ2ZXItPnJlZ2lzdGVyQ29ubmVjdGlvbihz
ZXJ2ZXItPmNvbm5lY3Rpb25Ub0NsaWVudCgpKTsKKyAgICByZXR1cm4gc2VydmVyOworfQorCitS
ZWY8SW5Qcm9jZXNzSURCU2VydmVyPiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKQor
eworICAgIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlcnZlciA9IGFkb3B0UmVmKCpuZXcgSW5Q
cm9jZXNzSURCU2VydmVyKHNlc3Npb25JRCwgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSk7CisgICAg
c2VydmVyLT5tX3NlcnZlci0+cmVnaXN0ZXJDb25uZWN0aW9uKHNlcnZlci0+Y29ubmVjdGlvblRv
Q2xpZW50KCkpOworICAgIHJldHVybiBzZXJ2ZXI7Cit9CisKK0luUHJvY2Vzc0lEQlNlcnZlcjo6
fkluUHJvY2Vzc0lEQlNlcnZlcigpID0gZGVmYXVsdDsKKworU3RvcmFnZVF1b3RhTWFuYWdlciog
SW5Qcm9jZXNzSURCU2VydmVyOjpxdW90YU1hbmFnZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmln
aW4pCit7CisgICAgcmV0dXJuIG1fcXVvdGFNYW5hZ2Vycy5lbnN1cmUob3JpZ2luLCBbXSB7Cisg
ICAgICAgIHJldHVybiBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpjcmVhdGUoU3RvcmFnZVF1b3RhTWFu
YWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICB9LCBbXSh1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBz
cGFjZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7CisgICAgICAgICAgICBjYWxsYmFjayhxdW90
YSArIGN1cnJlbnRTcGFjZSArIHNwYWNlSW5jcmVhc2UpOworICAgICAgICB9KTsKKyAgICB9KS5p
dGVyYXRvci0+dmFsdWUuZ2V0KCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSURCU2VydmVyOjpJREJT
ZXJ2ZXI6OlN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciBzdG9yYWdlUXVvdGFNYW5h
Z2VyU3BhY2VSZXF1ZXN0ZXIoSW5Qcm9jZXNzSURCU2VydmVyJiBzZXJ2ZXIpCit7CisgICAgcmV0
dXJuIFtzZXJ2ZXIgPSAmc2VydmVyLCB3ZWFrU2VydmVyID0gbWFrZVdlYWtQdHIoc2VydmVyKV0o
Y29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKSBtdXRh
YmxlIHsKKyAgICAgICAgYXV0byogc3RvcmFnZVF1b3RhTWFuYWdlciA9IHdlYWtTZXJ2ZXIgPyBz
ZXJ2ZXItPnF1b3RhTWFuYWdlcihvcmlnaW4pIDogbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN0
b3JhZ2VRdW90YU1hbmFnZXIgPyBzdG9yYWdlUXVvdGFNYW5hZ2VyLT5yZXF1ZXN0U3BhY2VPbkJh
Y2tncm91bmRUaHJlYWQoc3BhY2VSZXF1ZXN0ZWQpIDogU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVj
aXNpb246OkRlbnk7CisgICAgfTsKK30KKworSW5Qcm9jZXNzSURCU2VydmVyOjpJblByb2Nlc3NJ
REJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIDogbV9zZXJ2ZXIoSURCU2Vy
dmVyOjpJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQsIHN0b3JhZ2VRdW90YU1hbmFnZXJTcGFj
ZVJlcXVlc3RlcigqdGhpcykpKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
cmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CisgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIgPSBJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICBtX2Nv
bm5lY3Rpb25Ub0NsaWVudCA9IElEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVh
dGUoKnRoaXMpOworfQorCitJblByb2Nlc3NJREJTZXJ2ZXI6OkluUHJvY2Vzc0lEQlNlcnZlcihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQ
YXRoKQorICAgIDogbV9zZXJ2ZXIoSURCU2VydmVyOjpJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9u
SUQsIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgc3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVz
dGVyKCp0aGlzKSkpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICByZWxheEFk
b3B0aW9uUmVxdWlyZW1lbnQoKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlciA9IElEQkNsaWVu
dDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjpjcmVhdGUoKnRoaXMpOworICAgIG1fY29ubmVjdGlv
blRvQ2xpZW50ID0gSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSgqdGhp
cyk7Cit9CisKK0lEQkNvbm5lY3Rpb25JZGVudGlmaWVyIEluUHJvY2Vzc0lEQlNlcnZlcjo6aWRl
bnRpZmllcigpIGNvbnN0Cit7CisgICAgLy8gQW4gaW5zdGFuY2Ugb2YgSW5Qcm9jZXNzSURCU2Vy
dmVyIGFsd2F5cyBoYXMgYSAxOjEgcmVsYXRpb25zaGlwIHdpdGggaXRzIGluc3RhbmNlIG9mIElE
QlNlcnZlci4KKyAgICAvLyBUaGVyZWZvcmUgdGhlIGNvbm5lY3Rpb24gaWRlbnRpZmllciBiZXR3
ZWVuIHRoZSB0d28gY2FuIGFsd2F5cyBiZSAiMSIuCisgICAgcmV0dXJuIFByb2Nlc3M6OmlkZW50
aWZpZXIoKTsKK30KKworSURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXImIEluUHJvY2Vz
c0lEQlNlcnZlcjo6Y29ubmVjdGlvblRvU2VydmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKm1f
Y29ubmVjdGlvblRvU2VydmVyOworfQorCitJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVu
dCYgSW5Qcm9jZXNzSURCU2VydmVyOjpjb25uZWN0aW9uVG9DbGllbnQoKSBjb25zdAoreworICAg
IHJldHVybiAqbV9jb25uZWN0aW9uVG9DbGllbnQ7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2Vy
dmVyOjpkZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7
CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhXSB7CisgICAgICAgIG1fc2VydmVyLT5kZWxldGVE
YXRhYmFzZShyZXF1ZXN0RGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2Vy
dmVyOjpkaWREZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQor
eworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7CisgICAgICAgIG1fY29ubmVjdGlvblRvU2Vy
dmVyLT5kaWREZWxldGVEYXRhYmFzZShyZXN1bHREYXRhKTsKKyAgICB9KTsKK30KKwordm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhXSB7CisgICAgICAgIG1fc2Vy
dmVyLT5vcGVuRGF0YWJhc2UocmVxdWVzdERhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGlkT3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3Vs
dERhdGEpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKKyAgICAgICAgbV9jb25uZWN0
aW9uVG9TZXJ2ZXItPmRpZE9wZW5EYXRhYmFzZShyZXN1bHREYXRhKTsKKyAgICB9KTsKK30KKwor
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBl
cnJvcikKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcl0gewor
ICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQWJvcnRUcmFuc2FjdGlvbih0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIGVycm9yKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJT
ZXJ2ZXI6OmRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3IpCit7CisgICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3JdIHsKKyAgICAgICAgbV9jb25uZWN0
aW9uVG9TZXJ2ZXItPmRpZENvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
ZXJyb3IpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ3JlYXRl
T2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgcmVzdWx0RGF0YV0geworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQ3Jl
YXRlT2JqZWN0U3RvcmUocmVzdWx0RGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjpkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1
bHREYXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7CisgICAgICAgIG1fY29ubmVj
dGlvblRvU2VydmVyLT5kaWREZWxldGVPYmplY3RTdG9yZShyZXN1bHREYXRhKTsKKyAgICB9KTsK
K30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZFJlbmFtZU9iamVjdFN0b3JlKGNvbnN0
IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFd
IHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZFJlbmFtZU9iamVjdFN0b3JlKHJl
c3VsdERhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ2xl
YXJPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCByZXN1bHREYXRhXSB7CisgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRD
bGVhck9iamVjdFN0b3JlKHJlc3VsdERhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6ZGlkQ3JlYXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0
YSkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0geworICAgICAgICBtX2Nvbm5lY3Rpb25U
b1NlcnZlci0+ZGlkQ3JlYXRlSW5kZXgocmVzdWx0RGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQg
SW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxldGVJbmRleChjb25zdCBJREJSZXN1bHREYXRhJiBy
ZXN1bHREYXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7CisgICAgICAgIG1fY29u
bmVjdGlvblRvU2VydmVyLT5kaWREZWxldGVJbmRleChyZXN1bHREYXRhKTsKKyAgICB9KTsKK30K
Kwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZFJlbmFtZUluZGV4KGNvbnN0IElEQlJlc3Vs
dERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKKyAgICAg
ICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZFJlbmFtZUluZGV4KHJlc3VsdERhdGEpOworICAg
IH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkUHV0T3JBZGQoY29uc3QgSURC
UmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0gewor
ICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkUHV0T3JBZGQocmVzdWx0RGF0YSk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRSZWNvcmQoY29uc3Qg
SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0g
eworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkR2V0UmVjb3JkKHJlc3VsdERhdGEp
OworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxsUmVjb3Jk
cyhjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1
bHREYXRhXSB7CisgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRBbGxSZWNvcmRz
KHJlc3VsdERhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlk
R2V0Q291bnQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgcmVzdWx0RGF0YV0geworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkR2V0Q291
bnQocmVzdWx0RGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpk
aWREZWxldGVSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBS
dW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcmVzdWx0RGF0YV0geworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlk
RGVsZXRlUmVjb3JkKHJlc3VsdERhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6ZGlkT3BlbkN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQor
eworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7CisgICAgICAgIG1fY29ubmVjdGlvblRvU2Vy
dmVyLT5kaWRPcGVuQ3Vyc29yKHJlc3VsdERhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1
bHREYXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7CisgICAgICAgIG1fY29ubmVj
dGlvblRvU2VydmVyLT5kaWRJdGVyYXRlQ3Vyc29yKHJlc3VsdERhdGEpOworICAgIH0pOworfQor
Cit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVz
b3VyY2VJZGVudGlmaWVyXSB7CisgICAgICAgIG1fc2VydmVyLT5hYm9ydFRyYW5zYWN0aW9uKHJl
c291cmNlSWRlbnRpZmllcik7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
Ojpjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlc291cmNl
SWRlbnRpZmllcikKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzb3VyY2VJZGVudGlmaWVyXSB7CisgICAg
ICAgIG1fc2VydmVyLT5jb21taXRUcmFuc2FjdGlvbihyZXNvdXJjZUlkZW50aWZpZXIpOworICAg
IH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCit7
CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9u
SWRlbnRpZmllcl0geworICAgICAgICBtX3NlcnZlci0+ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNy
ZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXN1bHREYXRhLCBjb25zdCBJ
REJPYmplY3RTdG9yZUluZm8mIGluZm8pCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGEsIGlu
Zm9dIHsKKyAgICAgICAgbV9zZXJ2ZXItPmNyZWF0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEsIGlu
Zm8pOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlT2JqZWN0
U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBTdHJpbmcmIG9i
amVjdFN0b3JlTmFtZSkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIG9iamVjdFN0b3Jl
TmFtZV0geworICAgICAgICBtX3NlcnZlci0+ZGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEs
IG9iamVjdFN0b3JlTmFtZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQorewor
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1l
XSB7CisgICAgICAgIG1fc2VydmVyLT5yZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCit7CisgICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXJdIHsKKyAgICAgICAgbV9zZXJ2ZXIt
PmNsZWFyT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcik7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVJbmRleChjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKK3sK
KyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIGluZm9dIHsKKyAgICAgICAgbV9zZXJ2ZXItPmNy
ZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBpbmZvKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmRlbGV0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFt
ZSkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwg
aW5kZXhOYW1lXSB7CisgICAgICAgIG1fc2VydmVyLT5kZWxldGVJbmRleChyZXF1ZXN0RGF0YSwg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUpOworICAgIH0pOworfQorCit2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6cmVuYW1lSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0
RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWVdIHsK
KyAgICAgICAgbV9zZXJ2ZXItPnJlbmFtZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7CisgICAgfSk7Cit9CisKK3ZvaWQg
SW5Qcm9jZXNzSURCU2VydmVyOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwg
Y29uc3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkK
K3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBvdmVyd3JpdGVN
b2RlXSB7CisgICAgICAgIG1fc2VydmVyLT5wdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwg
dmFsdWUsIG92ZXJ3cml0ZU1vZGUpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3Qg
SURCR2V0UmVjb3JkRGF0YSYgZ2V0UmVjb3JkRGF0YSkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVz
dERhdGEsIGdldFJlY29yZERhdGFdIHsKKyAgICAgICAgbV9zZXJ2ZXItPmdldFJlY29yZChyZXF1
ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwg
Y29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQoreworICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCByZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGFdIHsKKyAgICAgICAgbV9zZXJ2
ZXItPmdldEFsbFJlY29yZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKTsKKyAgICB9
KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldENvdW50KGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEp
Cit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsKKyAgICAgICAg
bV9zZXJ2ZXItPmdldENvdW50KHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEpOworICAgIH0pOwor
fQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEp
Cit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsKKyAgICAgICAg
bV9zZXJ2ZXItPmRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKKyAgICB9
KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQoreworICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwgaW5mb10geworICAgICAgICBtX3NlcnZlci0+b3BlbkN1
cnNvcihyZXF1ZXN0RGF0YSwgaW5mbyk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwg
Y29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmIGRhdGEpCit7CisgICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVl
c3REYXRhLCBkYXRhXSB7CisgICAgICAgIG1fc2VydmVyLT5pdGVyYXRlQ3Vyc29yKHJlcXVlc3RE
YXRhLCBkYXRhKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmVzdGFi
bGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNv
bnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgaW5mb10geworICAgICAgICBtX3NlcnZlci0+ZXN0YWJsaXNo
VHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mbyk7CisgICAgfSk7
Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KElE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0
ZWRWZXJzaW9uKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
ID0gY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0ZWRW
ZXJzaW9uXSB7CisgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5maXJlVmVyc2lvbkNoYW5n
ZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyLCBy
ZXF1ZXN0ZWRWZXJzaW9uKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
OmRpZFN0YXJ0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJvcikKK3sKKyAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcl0geworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1Nl
cnZlci0+ZGlkU3RhcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yKTsK
KyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENsb3NlRnJvbVNlcnZl
cihJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgSURCRXJyb3ImIGVycm9yKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyID0gY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIGVycm9yXSB7CisgICAgICAgIG1f
Y29ubmVjdGlvblRvU2VydmVyLT5kaWRDbG9zZUZyb21TZXJ2ZXIoZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgZXJyb3IpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVy
c2lvbikKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNpb24sIG5l
d1ZlcnNpb25dIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPm5vdGlmeU9wZW5EQlJl
cXVlc3RCbG9ja2VkKHJlcXVlc3RJZGVudGlmaWVyLCBvbGRWZXJzaW9uLCBuZXdWZXJzaW9uKTsK
KyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlv
blBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQorewor
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyXSB7CisgICAgICAgIG1f
c2VydmVyLT5kYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UoZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllcik7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkYXRh
YmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
cikKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcl0geworICAg
ICAgICBtX3NlcnZlci0+ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6YWJv
cnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikK
K3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rp
b25JZGVudGlmaWVyXSB7CisgICAgICAgIG1fc2VydmVyLT5hYm9ydE9wZW5BbmRVcGdyYWRlTmVl
ZGVkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7
CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNo
YW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IEluZGV4ZWREQjo6
Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIgY29ubmVjdGlvbkNsb3NlZCkKK3sKKyAg
ICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbm5lY3Rpb25DbG9zZWRdIHsKKyAgICAgICAgbV9zZXJ2ZXItPmRpZEZpcmVWZXJzaW9u
Q2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbm5lY3Rpb25DbG9zZWQpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhXSB7CisgICAgICAgIG1fc2VydmVy
LT5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVlc3REYXRhKTsKKyAgICB9KTsKK30KKwordm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbmZpcm1EaWRDbG9zZUZyb21TZXJ2ZXIodWludDY0X3Qg
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllcl0geworICAgICAgICBtX3NlcnZlci0+Y29uZmlybURpZENsb3Nl
RnJvbVNlcnZlcihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICB9KTsKK30KKwor
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXMoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBtYWluRnJhbWVPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
b3BlbmluZ09yaWdpbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWFp
bkZyYW1lT3JpZ2luLCBvcGVuaW5nT3JpZ2luLCBjYWxsYmFja0lEXSB7CisgICAgICAgIG1fc2Vy
dmVyLT5nZXRBbGxEYXRhYmFzZU5hbWVzKG1fY29ubmVjdGlvblRvU2VydmVyLT5pZGVudGlmaWVy
KCksIG1haW5GcmFtZU9yaWdpbiwgb3BlbmluZ09yaWdpbiwgY2FsbGJhY2tJRCk7CisgICAgfSk7
Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzKHVp
bnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVzKQor
eworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lELCBkYXRhYmFzZU5hbWVzXSB7CisgICAgICAgIG1f
Y29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRBbGxEYXRhYmFzZU5hbWVzKGNhbGxiYWNrSUQsIGRh
dGFiYXNlTmFtZXMpOworICAgIH0pOworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNz
SURCU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2Vy
dmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWJlYTI3ZTJmMTAzZTY1OTRkMjQzMjM0OTFmYTgyYTNhOWQxZjZj
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nl
c3NJREJTZXJ2ZXIuaApAQCAtMCwwICsxLDEzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0lE
QkNvbm5lY3Rpb25Ub0NsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSURCQ29ubmVjdGlvblRv
U2VydmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJTZXJ2ZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1N0b3JhZ2VRdW90YU1hbmFnZXIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1l
c3BhY2UgUEFMIHsKK2NsYXNzIFNlc3Npb25JRDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
c3RydWN0IENsaWVudE9yaWdpbjsKKworbmFtZXNwYWNlIElEQkNsaWVudCB7CitjbGFzcyBJREJD
b25uZWN0aW9uVG9TZXJ2ZXI7Cit9CisKK25hbWVzcGFjZSBJREJTZXJ2ZXIgeworY2xhc3MgSURC
U2VydmVyOworfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitjbGFzcyBJblByb2Nlc3NJREJT
ZXJ2ZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9T
ZXJ2ZXJEZWxlZ2F0ZSwgcHVibGljIFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRv
Q2xpZW50RGVsZWdhdGUsIHB1YmxpYyBSZWZDb3VudGVkPEluUHJvY2Vzc0lEQlNlcnZlcj4gewor
cHVibGljOgorICAgIHVzaW5nIFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2Vy
dmVyRGVsZWdhdGU6OndlYWtQdHJGYWN0b3J5OworICAgIHVzaW5nIFdlYWtWYWx1ZVR5cGUgPSBX
ZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlOjpXZWFrVmFs
dWVUeXBlOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxJblByb2Nlc3NJREJTZXJ2
ZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxJblByb2Nlc3NJREJTZXJ2ZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZURpcmVjdG9yeVBhdGgpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+
SW5Qcm9jZXNzSURCU2VydmVyKCk7CisKKyAgICBXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Ub1NlcnZlciYgY29ubmVjdGlvblRvU2VydmVyKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6
SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb25Ub0NsaWVudCgpIGNv
bnN0OworICAgIFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyJiBzZXJ2ZXIoKSB7IHJldHVy
biBtX3NlcnZlci5nZXQoKTsgfQorCisgICAgLy8gSURCQ29ubmVjdGlvblRvU2VydmVyCisgICAg
dm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYpIGZpbmFs
OworICAgIHZvaWQgb3BlbkRhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJikg
ZmluYWw7CisgICAgdm9pZCBhYm9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291
cmNlSWRlbnRpZmllciYpIGZpbmFsOworICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oY29uc3Qg
V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJikgZmluYWw7CisgICAgdm9pZCBkaWRGaW5p
c2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImKSBm
aW5hbDsKKyAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbmZvJikgZmluYWw7CisgICAg
dm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNv
bnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKSBmaW5hbDsKKyAgICB2b2lkIHJlbmFtZU9iamVj
dFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpIGZpbmFsOworICAgIHZvaWQgY2xl
YXJPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllcikgZmluYWw7CisgICAgdm9pZCBjcmVhdGVJbmRleChjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQkluZGV4SW5mbyYpIGZp
bmFsOworICAgIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
LCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1l
KSBmaW5hbDsKKyAgICB2b2lkIHJlbmFtZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkgZmluYWw7CisgICAgdm9pZCBwdXRPckFkZChj
b25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEm
LCBjb25zdCBXZWJDb3JlOjpJREJWYWx1ZSYsIGNvbnN0IFdlYkNvcmU6OkluZGV4ZWREQjo6T2Jq
ZWN0U3RvcmVPdmVyd3JpdGVNb2RlKSBmaW5hbDsKKyAgICB2b2lkIGdldFJlY29yZChjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQkdldFJlY29yZERhdGEm
KSBmaW5hbDsKKyAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJHZXRBbGxSZWNvcmRzRGF0YSYpIGZpbmFsOworICAg
IHZvaWQgZ2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJD
b3JlOjpJREJLZXlSYW5nZURhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZVJlY29yZChjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0
YSYpIGZpbmFsOworICAgIHZvaWQgb3BlbkN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQkN1cnNvckluZm8mKSBmaW5hbDsKKyAgICB2b2lkIGl0
ZXJhdGVDdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3Jl
OjpJREJJdGVyYXRlQ3Vyc29yRGF0YSYpIGZpbmFsOworICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNh
Y3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb25JbmZvJikgZmluYWw7CisgICAgdm9pZCBkYXRhYmFzZUNvbm5lY3Rp
b25QZW5kaW5nQ2xvc2UodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikgZmlu
YWw7CisgICAgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllcikgZmluYWw7CisgICAgdm9pZCBhYm9ydE9wZW5BbmRVcGdyYWRl
TmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSBmaW5hbDsK
KyAgICB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiBy
ZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SW5kZXhlZERCOjpDb25uZWN0aW9uQ2xv
c2VkT25CZWhhbGZPZlNlcnZlcikgZmluYWw7CisgICAgdm9pZCBvcGVuREJSZXF1ZXN0Q2FuY2Vs
bGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJikgZmluYWw7CisgICAgdm9pZCBjb25m
aXJtRGlkQ2xvc2VGcm9tU2VydmVyKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIpIGZpbmFsOworICAgIHZvaWQgZ2V0QWxsRGF0YWJhc2VOYW1lcyhjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmIG1haW5GcmFtZU9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCB1aW50NjRfdCBjYWxsYmFja0lEKSBmaW5hbDsK
KworICAgIC8vIElEQkNvbm5lY3Rpb25Ub0NsaWVudAorICAgIFdlYkNvcmU6OklEQkNvbm5lY3Rp
b25JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGRpZERlbGV0
ZURhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZE9wZW5EYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7Cisg
ICAgdm9pZCBkaWRBYm9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYp
IGZpbmFsOworICAgIHZvaWQgZGlkQ29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OklEQkVycm9yJikgZmluYWw7CisgICAgdm9pZCBkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBX
ZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWREZWxldGVPYmplY3RT
dG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRS
ZW5hbWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7Cisg
ICAgdm9pZCBkaWRDbGVhck9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEm
KSBmaW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlc3Vs
dERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZERlbGV0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklE
QlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlbmFtZUluZGV4KGNvbnN0IFdlYkNv
cmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFB1dE9yQWRkKGNvbnN0IFdl
YkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEdldFJlY29yZChjb25z
dCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRHZXRBbGxSZWNv
cmRzKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEdl
dENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZERlbGV0ZVJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAg
dm9pZCBkaWRPcGVuQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsK
KyAgICB2b2lkIGRpZEl0ZXJhdGVDdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYp
IGZpbmFsOworICAgIHZvaWQgZmlyZVZlcnNpb25DaGFuZ2VFdmVudChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291
cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNp
b24pIGZpbmFsOworICAgIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6SURCRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENsb3NlRnJvbVNlcnZlcihXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6
OklEQkVycm9yJikgZmluYWw7CisgICAgdm9pZCBub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChj
b25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKSBmaW5hbDsKKyAgICB2b2lk
IGRpZEdldEFsbERhdGFiYXNlTmFtZXModWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGRhdGFiYXNlTmFtZXMpIGZpbmFsOworCisgICAgdm9pZCByZWYoKSBvdmVycmlk
ZSB7IFJlZkNvdW50ZWQ8SW5Qcm9jZXNzSURCU2VydmVyPjo6cmVmKCk7IH0KKyAgICB2b2lkIGRl
cmVmKCkgb3ZlcnJpZGUgeyBSZWZDb3VudGVkPEluUHJvY2Vzc0lEQlNlcnZlcj46OmRlcmVmKCk7
IH0KKworICAgIFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXIqIHF1b3RhTWFuYWdlcihjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBJblBy
b2Nlc3NJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOworICAgIEluUHJvY2Vzc0lEQlNlcnZlcihQ
QUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgpOworCisg
ICAgUmVmPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyPiBtX3NlcnZlcjsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI+IG1fY29ubmVjdGlv
blRvU2VydmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25U
b0NsaWVudD4gbV9jb25uZWN0aW9uVG9DbGllbnQ7CisKKyAgICBIYXNoTWFwPFdlYkNvcmU6OkNs
aWVudE9yaWdpbiwgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI+PiBtX3F1b3Rh
TWFuYWdlcnM7Cit9OworCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5jcHAK
aW5kZXggN2YwMzhmM2FjYzhlOTllZDk4NTNjMmYyZmRiNDczNTQxYjhkMGU3OC4uYzJmNzFiYWYz
ZDE3ZjRlY2FjMDNlZGFmZjdjOTIzNmYzYzgyMWVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcApAQCAtNDYsMTQgKzQ2LDE0
IEBAIFdlYkRhdGFiYXNlUHJvdmlkZXI6On5XZWJEYXRhYmFzZVByb3ZpZGVyKCkKIFdlYkNvcmU6
OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyJiBXZWJEYXRhYmFzZVByb3ZpZGVyOjpp
ZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNzaW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNz
aW9uSUQpCiB7CiAgICAgcmV0dXJuIG1faWRiU2VydmVyTWFwLmVuc3VyZShzZXNzaW9uSUQsIFsm
c2Vzc2lvbklEXSB7Ci0gICAgICAgIHJldHVybiBzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFdl
YkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKHNlc3Npb25JRCkgOiBXZWJDb3JlOjpJ
blByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQsIGluZGV4ZWREYXRhYmFzZURpcmVj
dG9yeVBhdGgoKSk7CisgICAgICAgIHJldHVybiBzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IElu
UHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKHNlc3Npb25JRCkgOiBJblByb2Nlc3NJREJTZXJ2ZXI6
OmNyZWF0ZShzZXNzaW9uSUQsIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeVBhdGgoKSk7CiAgICAg
fSkuaXRlcmF0b3ItPnZhbHVlLT5jb25uZWN0aW9uVG9TZXJ2ZXIoKTsKIH0KIAogdm9pZCBXZWJE
YXRhYmFzZVByb3ZpZGVyOjpkZWxldGVBbGxEYXRhYmFzZXMoKQogewogICAgIGZvciAoYXV0byYg
c2VydmVyIDogbV9pZGJTZXJ2ZXJNYXAudmFsdWVzKCkpCi0gICAgICAgIHNlcnZlci0+aWRiU2Vy
dmVyKCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKC1XYWxsVGltZTo6aW5m
aW5pdHkoKSwgW10geyB9KTsKKyAgICAgICAgc2VydmVyLT5zZXJ2ZXIoKS5jbG9zZUFuZERlbGV0
ZURhdGFiYXNlc01vZGlmaWVkU2luY2UoLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbXSB7IH0pOwog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJE
YXRhYmFzZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViRGF0YWJh
c2VQcm92aWRlci5oCmluZGV4IGQ2NjdiODYzMTIyOTM5ZDk0YzhiOTRjM2JjZmExNTY5ODI5NGU4
NmYuLjUzNjNkNTgwNDhhMzg0ODIxYmQ2OGIxZjNlYjRkOWIwZmUxOWJhZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuaApAQCAtMzEs
NyArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQotI2luY2x1ZGUgPFdlYkNvcmUvSW5Qcm9jZXNzSURCU2VydmVyLmg+CisjaW5j
bHVkZSA8SW5Qcm9jZXNzSURCU2VydmVyLmg+CiAjZW5kaWYKIAogY2xhc3MgV2ViRGF0YWJhc2VQ
cm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpEYXRhYmFzZVByb3ZpZGVyIHsKQEAgLTUy
LDYgKzUyLDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgU3RyaW5nIGluZGV4ZWREYXRhYmFzZURp
cmVjdG9yeVBhdGgoKTsKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotICAgIEhhc2hN
YXA8UEFMOjpTZXNzaW9uSUQsIFJlZlB0cjxXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI+PiBt
X2lkYlNlcnZlck1hcDsKKyAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8SW5Qcm9j
ZXNzSURCU2VydmVyPj4gbV9pZGJTZXJ2ZXJNYXA7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYktpdExlZ2FjeS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBjZTZlYjM2MzFjOTY4NjczNTMwMDQ3YzZlZDQwZjg4Mzc1NmM3YzBlLi40MWI5
NDVjOTBjMTZiNjFmODYzZjU0Y2NlYTVmNGFjMTk5Y2NkZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1dlYktpdExlZ2FjeS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIyNyw2ICsyMjcsOCBAQAogCQk5MzRDMTE2NzBEODcxMEJCMDBDMzJBQkQgLyogV2Vi
RHluYW1pY1Njcm9sbEJhcnNWaWV3SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEMxMTY2MEQ4NzEwQkIwMEMzMkFCRCAvKiBXZWJEeW5h
bWljU2Nyb2xsQmFyc1ZpZXdJbnRlcm5hbC5oICovOyB9OwogCQk5MzRDNEE5MTBGMDE0MDZDMDA5
MzcyQzAgLyogV2ViTlNPYmplY3RFeHRyYXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRDNEE5MDBGMDE0MDZDMDA5MzcyQzAgLyogV2ViTlNPYmpl
Y3RFeHRyYXMubW0gKi87IH07CiAJCTkzNEM0QUEwMEYwMTQxRjcwMDkzNzJDMCAvKiBXZWJSZXNv
dXJjZUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzRDNEE5RjBGMDE0MUY3MDA5MzcyQzAgLyogV2ViUmVzb3VyY2VJbnRlcm5hbC5oICov
OyB9OworCQk5MzY0MDA2RTIzOTk2RTgxMDAxRTE4NUUgLyogSW5Qcm9jZXNzSURCU2VydmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNjQwMDZD
MjM5OTZFODAwMDFFMTg1RSAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuY3BwICovOyB9OworCQk5MzY0
MDA2RjIzOTk2RTgxMDAxRTE4NUUgLyogSW5Qcm9jZXNzSURCU2VydmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzY0MDA2RDIzOTk2RTgxMDAxRTE4
NUUgLyogSW5Qcm9jZXNzSURCU2VydmVyLmggKi87IH07CiAJCTkzNkEyREU4MEZEMkQwODAwMEQz
MTJEQiAvKiBXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzZBMkRFNzBGRDJEMDgwMDBEMzEyREIgLyog
V2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1tICovOyB9OwogCQk5MzZBMkRFQTBGRDJEMDg0
MDBEMzEyREIgLyogV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzZBMkRFOTBGRDJEMDg0MDBEMzEyREIg
LyogV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLmggKi87IH07CiAJCTkzOTFGMjc1MTIxQjM4
QkQwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkxRjI3MzEyMUIzOEJEMDBFQkY3RTgg
LyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oICovOyB9OwpAQCAtMTAyNCw2ICsxMDI2LDgg
QEAKIAkJOTM0QzExNjYwRDg3MTBCQjAwQzMyQUJEIC8qIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmll
d0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkR5bmFtaWNT
Y3JvbGxCYXJzVmlld0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
NEM0QTkwMEYwMTQwNkMwMDkzNzJDMCAvKiBXZWJOU09iamVjdEV4dHJhcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYk5TT2JqZWN0RXh0cmFzLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzRDNEE5RjBGMDE0MUY3MDA5MzcyQzAgLyogV2Vi
UmVzb3VyY2VJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJS
ZXNvdXJjZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNjQwMDZD
MjM5OTZFODAwMDFFMTg1RSAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSW5Qcm9jZXNzSURCU2VydmVyLmNwcDsgcGF0aCA9IFN0
b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OworCQk5MzY0MDA2RDIzOTk2RTgxMDAxRTE4NUUgLyogSW5Qcm9jZXNzSURCU2VydmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluUHJvY2Vzc0lEQlNlcnZlci5oOyBwYXRo
ID0gU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OwogCQk5MzZBMkRFNzBGRDJEMDgwMDBEMzEyREIgLyogV2ViVGV4dENvbXBsZXRpb25Db250
cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVGV4
dENvbXBsZXRpb25Db250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MzZBMkRFOTBGRDJEMDg0MDBEMzEyREIgLyogV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlRleHRDb21wbGV0aW9uQ29udHJv
bGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkxRjI3MzEyMUIzOEJEMDBF
QkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xODMzLDYgKzE4MzcsOCBAQAogCQk1MTFGM0ZDMzBDRUNDN0UyMDA4
NTI1NjUgLyogU3RvcmFnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJOTM2NDAwNkMyMzk5NkU4MDAwMUUxODVFIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5j
cHAgKi8sCisJCQkJOTM2NDAwNkQyMzk5NkU4MTAwMUUxODVFIC8qIEluUHJvY2Vzc0lEQlNlcnZl
ci5oICovLAogCQkJCTFBNkIzMTI0MUE1MUYzQTkwMDQyMjk3NSAvKiBTdG9yYWdlQXJlYUltcGwu
Y3BwICovLAogCQkJCTFBNkIzMTI1MUE1MUYzQTkwMDQyMjk3NSAvKiBTdG9yYWdlQXJlYUltcGwu
aCAqLywKIAkJCQkxQTZCMzEyNjFBNTFGM0E5MDA0MjI5NzUgLyogU3RvcmFnZUFyZWFTeW5jLmNw
cCAqLywKQEAgLTI4ODEsNiArMjg4Nyw3IEBACiAJCQkJOTNENDM3OTkxRDU3QUJFRjAwQUI4NUVB
IC8qIEV4Y2VwdGlvbkhhbmRsZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTYwNTE5NDE3NTAy
QTVEMDBCQzYyRjUgLyogSGlzdG9yeVByb3BlcnR5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUE4REVENTAwRUU4OEI4QTAwRjI1MDIyIC8qIEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk5MzY0MDA2RjIzOTk2RTgxMDAxRTE4NUUgLyogSW5Qcm9jZXNz
SURCU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTBDMUQzMjE4MjAyRkM1MDAzNjg4M0Eg
LyogTWVtb3J5TWVhc3VyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjVDRUEwRURERTFGRTAw
OEQ4ODNEIC8qIE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBQUY1Q0VDMEVEREUxRkUwMDhEODgzRCAvKiBOZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zNDAyLDYgKzM0MDksNyBAQAogCQkJCTVDOUE0RTUzMjJERTQ2Mjcw
MDdEQjM1MyAvKiBET01VSUtpdEV4dGVuc2lvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTYw
NTE5MzE3NTAyQTVEMDBCQzYyRjUgLyogSGlzdG9yeVByb3BlcnR5TGlzdC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBOERFRDUxMEVFODhCOEEwMEYyNTAyMiAvKiBIb3N0ZWROZXRzY2FwZVBsdWdp
blN0cmVhbS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTkzNjQwMDZFMjM5OTZFODEwMDFFMTg1RSAv
KiBJblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEwQzFEMzMxODIw
MkZDNTAwMzY4ODNBIC8qIE1lbW9yeU1lYXN1cmUubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUFG
NUNFQjBFRERFMUZFMDA4RDg4M0QgLyogTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTFBQUY1Q0VEMEVEREUxRkUwMDhEODgzRCAvKiBOZXRzY2FwZVBsdWdp
bkhvc3RQcm94eS5tbSBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384922</attachid>
            <date>2019-12-05 11:01:52 -0800</date>
            <delta_ts>2019-12-05 14:44:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204896-20191205110142.patch</filename>
            <type>text/plain</type>
            <size>84159</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjYzOGQ3N2ViN2I2MmNl
MmM3OTYxM2I2ZWJlY2Q3ZDQ4M2M3N2IwNC4uYTBiMzNmMWY4N2EyYmFjYzM2MWM3NjhmMjIzZjQ3
MDMzNDc1NTQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTEyLTA1ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgSW5Qcm9jZXNzSURC
U2VydmVyIHRvIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA0ODk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2Ugb25seSB1c2UgSW5Qcm9jZXNzSURCU2VydmVyIGluIFdlYktpdExl
Z2FjeSBub3cuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogSGVh
ZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmg6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5o
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2suY3BwOgorICAgICAgICAqIE1vZHVsZXMvcGljdHVyZWlucGljdHVyZS9IVE1MVmlkZW9FbGVt
ZW50UGljdHVyZUluUGljdHVyZS5jcHA6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9F
bXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisKIDIwMTktMTItMDUg
IHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIG1hcGxpa2Ugc2hv
dWxkIGRlZmluZSBhIHNldCBtZXRob2QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMmI3NWFmNmQyMTQwNTc0MzdjNDdh
N2M2Y2YxYTBjODAxZGZiNjk1OC4uYmViMjIyNDA0OGIyNzg0NjYwZTlmN2ViNWIyY2VjMWZlM2I5
MmQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0xMi0wNSAgU2lodWkgTGl1ICA8
c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIEluUHJvY2Vzc0lEQlNlcnZlciB0
byBXZWJLaXRMZWdhY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNDg5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2ViRGF0YWJhc2VQcm92aWRlci5oOgorCiAy
MDE5LTEyLTA1ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR0xpYl0gRGlzcGxheSBHU3RyZWFtZXIgdmVyc2lvbiBpbiBhYm91dDpncHUgcGFnZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L0NoYW5nZUxvZwppbmRleCBkZjk4MzViYWFkYjM4MTU4OWFhMTBkMzU3OTQzODZhYzJk
NWY1ZGM1Li4wZmQ3MmRhNmU0OGUzOWRiZTVjODJjZGRlNDQ4YWQyNDViZGIwMTMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE5LTEyLTA1ICBTaWh1aSBMaXUgIDxz
aWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgSW5Qcm9jZXNzSURCU2VydmVyIHRv
IFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA0ODk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTdG9yYWdlL0luUHJvY2Vzc0lEQlNl
cnZlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcC4KKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6cXVvdGFNYW5hZ2VyKToK
KyAgICAgICAgKHN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3Rlcik6CisgICAgICAgIChJ
blByb2Nlc3NJREJTZXJ2ZXI6OkluUHJvY2Vzc0lEQlNlcnZlcik6CisgICAgICAgIChJblByb2Nl
c3NJREJTZXJ2ZXI6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2Vy
dmVyOjpjb25uZWN0aW9uVG9TZXJ2ZXIgY29uc3QpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2Vy
dmVyOjpjb25uZWN0aW9uVG9DbGllbnQgY29uc3QpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2Vy
dmVyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERl
bGV0ZURhdGFiYXNlKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkRhdGFiYXNl
KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkT3BlbkRhdGFiYXNlKToKKyAgICAg
ICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRpZENvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoSW5Qcm9jZXNz
SURCU2VydmVyOjpkaWREZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChJblByb2Nlc3NJREJT
ZXJ2ZXI6OmRpZFJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZl
cjo6ZGlkQ2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRp
ZENyZWF0ZUluZGV4KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRlSW5k
ZXgpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRSZW5hbWVJbmRleCk6CisgICAg
ICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZFB1dE9yQWRkKToKKyAgICAgICAgKEluUHJvY2Vz
c0lEQlNlcnZlcjo6ZGlkR2V0UmVjb3JkKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6
ZGlkR2V0QWxsUmVjb3Jkcyk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldENv
dW50KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRlUmVjb3JkKToKKyAg
ICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkT3BlbkN1cnNvcik6CisgICAgICAgIChJblBy
b2Nlc3NJREJTZXJ2ZXI6OmRpZEl0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoSW5Qcm9jZXNzSURC
U2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6
Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRGaW5p
c2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6CisgICAgICAgIChJblByb2Nlc3NJ
REJTZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZl
cjo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpyZW5h
bWVPYmplY3RTdG9yZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0
U3RvcmUpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVJbmRleCk6CisgICAg
ICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKEluUHJvY2Vz
c0lEQlNlcnZlcjo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpw
dXRPckFkZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmdldFJlY29yZCk6CisgICAg
ICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoSW5Qcm9j
ZXNzSURCU2VydmVyOjpnZXRDb3VudCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRl
bGV0ZVJlY29yZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5DdXJzb3IpOgor
ICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjppdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKElu
UHJvY2Vzc0lEQlNlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24pOgorICAgICAgICAoSW5Qcm9j
ZXNzSURCU2VydmVyOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKEluUHJvY2Vz
c0lEQlNlcnZlcjo6ZGlkU3RhcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChJblByb2Nlc3NJREJT
ZXJ2ZXI6OmRpZENsb3NlRnJvbVNlcnZlcik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6
Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZl
cjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKToKKyAgICAgICAgKEluUHJvY2Vzc0lE
QlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKEluUHJvY2Vzc0lE
QlNlcnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAoSW5Qcm9jZXNz
SURCU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAgKEluUHJvY2Vzc0lE
QlNlcnZlcjo6Y29uZmlybURpZENsb3NlRnJvbVNlcnZlcik6CisgICAgICAgIChJblByb2Nlc3NJ
REJTZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXMpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2Vy
dmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKiBTdG9yYWdlL0luUHJvY2Vz
c0lEQlNlcnZlci5oOiBBZGRlZC4KKyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlk
ZXIuY3BwOgorICAgICAgICAoV2ViRGF0YWJhc2VQcm92aWRlcjo6aWRiQ29ubmVjdGlvblRvU2Vy
dmVyRm9yU2Vzc2lvbik6CisgICAgICAgIChXZWJEYXRhYmFzZVByb3ZpZGVyOjpkZWxldGVBbGxE
YXRhYmFzZXMpOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5oOgorICAg
ICAgICAqIFdlYktpdExlZ2FjeS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTEy
LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUGFnZUNvbmZp
Z3VyYXRpb246OnByb2dyZXNzVHJhY2tlckNsaWVudCBzaG91bGQgdXNlIGEgc21hcnQgcG9pbnRl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKaW5kZXggODgyOTQ2YjhiNWZkNzk2MDc3NTk5ZGMzYjhmODc5ZjNm
MjhjZGNiZC4uMTM3ZmM3OGY4NThhZmExMmIxOTRjMzZmY2UzZTk3N2E5Nzc3YjAwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCkBAIC03OSw3ICs3OSw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVu
dGlmaWVyLmgKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCiAg
ICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oCi0gICAgTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oCiAKICAgICBNb2R1bGVz
L21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25FdmVudHMuaAogICAgIE1vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAppbmRleCBmYzE2MDRmNzY1YWUyNWM2M2Ew
OWE0YTkzMWQ1MDA0Y2VjMDUwYWMxLi44ODc0NmVlZTZkMzI3Nzk0NmY4YTU2YWVhZWJjN2FkN2Mz
MjkzNjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5oCkBAIC01OCw3ICs1OCw3IEBAIGVudW0gY2xhc3MgU2hvdWxkRm9yY2VT
dG9wIDogYm9vbCB7IE5vLCBZZXMgfTsKIGNsYXNzIElEQlNlcnZlciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPElEQlNlcnZlcj4sIHB1YmxpYyBDcm9zc1RocmVhZFRhc2tIYW5kbGVyLCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8SURCU2VydmVyPiB7CiBwdWJsaWM6CiAgICAgdXNpbmcgU3RvcmFnZVF1b3Rh
TWFuYWdlclNwYWNlUmVxdWVzdGVyID0gRnVuY3Rpb248U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVj
aXNpb24oY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpPjsKLSAg
ICBzdGF0aWMgUmVmPElEQlNlcnZlcj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklELCBTdG9yYWdlUXVv
dGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxJREJTZXJ2ZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgU3RvcmFnZVF1b3RhTWFuYWdlclNw
YWNlUmVxdWVzdGVyJiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8SURCU2VydmVy
PiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQ
YXRoLCBTdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXImJik7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlZ2lzdGVyQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJS
ZXF1ZXN0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlJlcXVlc3REYXRhLmgKaW5kZXggNTNiN2I2MmQzMTRjMGJhNjU2ZTViMmJjNTk2MDg4ZDRlNGYx
NWZmZi4uYTRjODVmNjcwYWJkMjU3ZjY3N2EwNDZkYWU5NDAxM2VhYmIyYWVlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVl
c3REYXRhLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgSURCUmVxdWVzdERhdGEgewogcHVibGlj
OgogICAgIElEQlJlcXVlc3REYXRhKGNvbnN0IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5
JiwgY29uc3QgSURCT3BlbkRCUmVxdWVzdCYpOwogICAgIGV4cGxpY2l0IElEQlJlcXVlc3REYXRh
KElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mKTsKLSAgICBJREJSZXF1ZXN0RGF0YShj
b25zdCBJREJSZXF1ZXN0RGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIElEQlJlcXVlc3REYXRh
KGNvbnN0IElEQlJlcXVlc3REYXRhJik7CiAgICAgSURCUmVxdWVzdERhdGEoSURCUmVxdWVzdERh
dGEmJikgPSBkZWZhdWx0OwogICAgIElEQlJlcXVlc3REYXRhJiBvcGVyYXRvcj0oSURCUmVxdWVz
dERhdGEmJikgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmgKaW5kZXggN2I5NDc3
ZThlYzU1NGM5MTNkMmE0OGJlNTU4ZTE2MzNkOTNmY2U5Yi4uYjhiNDhhOWQzOWRkMTQ5ZGE1Nzcy
NTI2MjdiYTdjNDhkZjA3M2QwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaApAQCAtNDksNyAr
NDksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElEQlRyYW5zYWN0aW9uSW5mbyBjbGllbnRUcmFu
c2FjdGlvbihjb25zdCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBvYmplY3RTdG9yZXMsIElEQlRyYW5zYWN0aW9uTW9kZSk7CiAgICAgc3RhdGlj
IElEQlRyYW5zYWN0aW9uSW5mbyB2ZXJzaW9uQ2hhbmdlKGNvbnN0IElEQlNlcnZlcjo6SURCQ29u
bmVjdGlvblRvQ2xpZW50JiwgY29uc3QgSURCRGF0YWJhc2VJbmZvJiBvcmlnaW5hbERhdGFiYXNl
SW5mbywgdWludDY0X3QgbmV3VmVyc2lvbik7CiAKLSAgICBJREJUcmFuc2FjdGlvbkluZm8oY29u
c3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CisgICAgV0VCQ09SRV9FWFBPUlQgSURCVHJhbnNhY3Rp
b25JbmZvKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpOwogICAgIElEQlRyYW5zYWN0aW9uSW5m
byhJREJUcmFuc2FjdGlvbkluZm8mJikgPSBkZWZhdWx0OwogICAgIElEQlRyYW5zYWN0aW9uSW5m
byYgb3BlcmF0b3I9KElEQlRyYW5zYWN0aW9uSW5mbyYmKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJv
Y2Vzc0lEQlNlcnZlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2NWJkNWE3
NjcyYTM4MDU2NzE2ZDM2YTVjY2IxMzhmOTFiMzFhOTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NzAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJblByb2Nl
c3NJREJTZXJ2ZXIuaCIKLQotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotCi0jaW5jbHVk
ZSAiSURCQ29ubmVjdGlvblRvQ2xpZW50LmgiCi0jaW5jbHVkZSAiSURCQ29ubmVjdGlvblRvU2Vy
dmVyLmgiCi0jaW5jbHVkZSAiSURCQ3Vyc29ySW5mby5oIgotI2luY2x1ZGUgIklEQkdldFJlY29y
ZERhdGEuaCIKLSNpbmNsdWRlICJJREJJdGVyYXRlQ3Vyc29yRGF0YS5oIgotI2luY2x1ZGUgIklE
QktleVJhbmdlRGF0YS5oIgotI2luY2x1ZGUgIklEQk9wZW5EQlJlcXVlc3QuaCIKLSNpbmNsdWRl
ICJJREJSZXF1ZXN0RGF0YS5oIgotI2luY2x1ZGUgIklEQlJlc3VsdERhdGEuaCIKLSNpbmNsdWRl
ICJJREJWYWx1ZS5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJQcm9jZXNzSWRl
bnRpZmllci5oIgotI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8SW5Qcm9jZXNzSURCU2VydmVy
PiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi17
Ci0gICAgUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VydmVyID0gYWRvcHRSZWYoKm5ldyBJblBy
b2Nlc3NJREJTZXJ2ZXIoc2Vzc2lvbklEKSk7Ci0gICAgc2VydmVyLT5tX3NlcnZlci0+cmVnaXN0
ZXJDb25uZWN0aW9uKHNlcnZlci0+Y29ubmVjdGlvblRvQ2xpZW50KCkpOwotICAgIHJldHVybiBz
ZXJ2ZXI7Ci19Ci0KLVJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IEluUHJvY2Vzc0lEQlNlcnZlcjo6
Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURp
cmVjdG9yeVBhdGgpCi17Ci0gICAgUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VydmVyID0gYWRv
cHRSZWYoKm5ldyBJblByb2Nlc3NJREJTZXJ2ZXIoc2Vzc2lvbklELCBkYXRhYmFzZURpcmVjdG9y
eVBhdGgpKTsKLSAgICBzZXJ2ZXItPm1fc2VydmVyLT5yZWdpc3RlckNvbm5lY3Rpb24oc2VydmVy
LT5jb25uZWN0aW9uVG9DbGllbnQoKSk7Ci0gICAgcmV0dXJuIHNlcnZlcjsKLX0KLQotSW5Qcm9j
ZXNzSURCU2VydmVyOjp+SW5Qcm9jZXNzSURCU2VydmVyKCkgPSBkZWZhdWx0OwotCi1TdG9yYWdl
UXVvdGFNYW5hZ2VyKiBJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdlcihjb25zdCBDbGll
bnRPcmlnaW4mIG9yaWdpbikKLXsKLSAgICByZXR1cm4gbV9xdW90YU1hbmFnZXJzLmVuc3VyZShv
cmlnaW4sIFtdIHsKLSAgICAgICAgcmV0dXJuIFN0b3JhZ2VRdW90YU1hbmFnZXI6OmNyZWF0ZShT
dG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSwgW10gewotICAgICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgICAgIH0sIFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3Bh
Y2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKLSAgICAgICAgICAg
IGNhbGxiYWNrKHF1b3RhICsgY3VycmVudFNwYWNlICsgc3BhY2VJbmNyZWFzZSk7Ci0gICAgICAg
IH0pOwotICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKLX0KLQotc3RhdGljIGlubGluZSBJ
REJTZXJ2ZXI6OklEQlNlcnZlcjo6U3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyIHN0
b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlcihJblByb2Nlc3NJREJTZXJ2ZXImIHNlcnZl
cikKLXsKLSAgICByZXR1cm4gW3NlcnZlciA9ICZzZXJ2ZXIsIHdlYWtTZXJ2ZXIgPSBtYWtlV2Vh
a1B0cihzZXJ2ZXIpXShjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3Qgc3BhY2VS
ZXF1ZXN0ZWQpIG11dGFibGUgewotICAgICAgICBhdXRvKiBzdG9yYWdlUXVvdGFNYW5hZ2VyID0g
d2Vha1NlcnZlciA/IHNlcnZlci0+cXVvdGFNYW5hZ2VyKG9yaWdpbikgOiBudWxscHRyOwotICAg
ICAgICByZXR1cm4gc3RvcmFnZVF1b3RhTWFuYWdlciA/IHN0b3JhZ2VRdW90YU1hbmFnZXItPnJl
cXVlc3RTcGFjZU9uQmFja2dyb3VuZFRocmVhZChzcGFjZVJlcXVlc3RlZCkgOiBTdG9yYWdlUXVv
dGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueTsKLSAgICB9OwotfQotCi1JblByb2Nlc3NJREJTZXJ2
ZXI6OkluUHJvY2Vzc0lEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgOiBt
X3NlcnZlcihJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y3JlYXRlKHNlc3Npb25JRCwgc3RvcmFnZVF1
b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyKCp0aGlzKSkpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICByZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKLSAgICBtX2Nvbm5lY3Rp
b25Ub1NlcnZlciA9IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjpjcmVhdGUoKnRo
aXMpOwotICAgIG1fY29ubmVjdGlvblRvQ2xpZW50ID0gSURCU2VydmVyOjpJREJDb25uZWN0aW9u
VG9DbGllbnQ6OmNyZWF0ZSgqdGhpcyk7Ci19Ci0KLUluUHJvY2Vzc0lEQlNlcnZlcjo6SW5Qcm9j
ZXNzSURCU2VydmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRh
YmFzZURpcmVjdG9yeVBhdGgpCi0gICAgOiBtX3NlcnZlcihJREJTZXJ2ZXI6OklEQlNlcnZlcjo6
Y3JlYXRlKHNlc3Npb25JRCwgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBzdG9yYWdlUXVvdGFNYW5h
Z2VyU3BhY2VSZXF1ZXN0ZXIoKnRoaXMpKSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOwotICAgIG1fY29ubmVjdGlvblRvU2Vy
dmVyID0gSURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZSgqdGhpcyk7Ci0g
ICAgbV9jb25uZWN0aW9uVG9DbGllbnQgPSBJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVu
dDo6Y3JlYXRlKCp0aGlzKTsKLX0KLQotSURCQ29ubmVjdGlvbklkZW50aWZpZXIgSW5Qcm9jZXNz
SURCU2VydmVyOjppZGVudGlmaWVyKCkgY29uc3QKLXsKLSAgICAvLyBBbiBpbnN0YW5jZSBvZiBJ
blByb2Nlc3NJREJTZXJ2ZXIgYWx3YXlzIGhhcyBhIDE6MSByZWxhdGlvbnNoaXAgd2l0aCBpdHMg
aW5zdGFuY2Ugb2YgSURCU2VydmVyLgotICAgIC8vIFRoZXJlZm9yZSB0aGUgY29ubmVjdGlvbiBp
ZGVudGlmaWVyIGJldHdlZW4gdGhlIHR3byBjYW4gYWx3YXlzIGJlICIxIi4KLSAgICByZXR1cm4g
UHJvY2Vzczo6aWRlbnRpZmllcigpOwotfQotCi1JREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1Nl
cnZlciYgSW5Qcm9jZXNzSURCU2VydmVyOjpjb25uZWN0aW9uVG9TZXJ2ZXIoKSBjb25zdAotewot
ICAgIHJldHVybiAqbV9jb25uZWN0aW9uVG9TZXJ2ZXI7Ci19Ci0KLUlEQlNlcnZlcjo6SURCQ29u
bmVjdGlvblRvQ2xpZW50JiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbm5lY3Rpb25Ub0NsaWVudCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuICptX2Nvbm5lY3Rpb25Ub0NsaWVudDsKLX0KLQotdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGFdIHsKLSAgICAgICAgbV9z
ZXJ2ZXItPmRlbGV0ZURhdGFiYXNlKHJlcXVlc3REYXRhKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKLSAgICAgICAgbV9j
b25uZWN0aW9uVG9TZXJ2ZXItPmRpZERlbGV0ZURhdGFiYXNlKHJlc3VsdERhdGEpOwotICAgIH0p
OwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGFdIHsK
LSAgICAgICAgbV9zZXJ2ZXItPm9wZW5EYXRhYmFzZShyZXF1ZXN0RGF0YSk7Ci0gICAgfSk7Ci19
Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRPcGVuRGF0YWJhc2UoY29uc3QgSURCUmVz
dWx0RGF0YSYgcmVzdWx0RGF0YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0gewotICAg
ICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkT3BlbkRhdGFiYXNlKHJlc3VsdERhdGEpOwot
ICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQWJvcnRUcmFuc2FjdGlv
bihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29u
c3QgSURCRXJyb3ImIGVycm9yKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIGVycm9yXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRBYm9ydFRyYW5z
YWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3IpOwotICAgIH0pOwotfQotCi12b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJv
cikKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcl0gewotICAg
ICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQ29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rp
b25JZGVudGlmaWVyLCBlcnJvcik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2Vy
dmVyOjpkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRh
KQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRv
U2VydmVyLT5kaWRDcmVhdGVPYmplY3RTdG9yZShyZXN1bHREYXRhKTsKLSAgICB9KTsKLX0KLQot
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJl
c3VsdERhdGEmIHJlc3VsdERhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKLSAg
ICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZERlbGV0ZU9iamVjdFN0b3JlKHJlc3VsdERh
dGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkUmVuYW1lT2Jq
ZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKLXsKLSAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgcmVzdWx0RGF0YV0gewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkUmVuYW1l
T2JqZWN0U3RvcmUocmVzdWx0RGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpkaWRDbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERh
dGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKLSAgICAgICAgbV9jb25uZWN0aW9u
VG9TZXJ2ZXItPmRpZENsZWFyT2JqZWN0U3RvcmUocmVzdWx0RGF0YSk7Ci0gICAgfSk7Ci19Ci0K
LXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDcmVhdGVJbmRleChjb25zdCBJREJSZXN1bHRE
YXRhJiByZXN1bHREYXRhKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7Ci0gICAgICAg
IG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRDcmVhdGVJbmRleChyZXN1bHREYXRhKTsKLSAgICB9
KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZUluZGV4KGNvbnN0IElE
QlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsK
LSAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZERlbGV0ZUluZGV4KHJlc3VsdERhdGEp
OwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkUmVuYW1lSW5kZXgo
Y29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0
RGF0YV0gewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkUmVuYW1lSW5kZXgocmVz
dWx0RGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRQdXRP
ckFkZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQotewotICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBy
ZXN1bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRQdXRPckFkZChy
ZXN1bHREYXRhKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdl
dFJlY29yZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQotewotICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCByZXN1bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRSZWNv
cmQocmVzdWx0RGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpk
aWRHZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCi17Ci0gICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHJlc3VsdERhdGFdIHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRp
ZEdldEFsbFJlY29yZHMocmVzdWx0RGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjpkaWRHZXRDb3VudChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQot
ewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2Vy
dmVyLT5kaWRHZXRDb3VudChyZXN1bHREYXRhKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmRpZERlbGV0ZVJlY29yZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlv
blRvU2VydmVyLT5kaWREZWxldGVSZWNvcmQocmVzdWx0RGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRPcGVuQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKLSAgICAgICAgbV9j
b25uZWN0aW9uVG9TZXJ2ZXItPmRpZE9wZW5DdXJzb3IocmVzdWx0RGF0YSk7Ci0gICAgfSk7Ci19
Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJl
c3VsdERhdGEmIHJlc3VsdERhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKLSAg
ICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZEl0ZXJhdGVDdXJzb3IocmVzdWx0RGF0YSk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9u
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVzb3VyY2VJZGVudGlmaWVyKQotewotICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCByZXNvdXJjZUlkZW50aWZpZXJdIHsKLSAgICAgICAgbV9zZXJ2ZXItPmFib3J0
VHJhbnNhY3Rpb24ocmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgcmVzb3VyY2VJZGVudGlmaWVyKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXNvdXJjZUlkZW50
aWZpZXJdIHsKLSAgICAgICAgbV9zZXJ2ZXItPmNvbW1pdFRyYW5zYWN0aW9uKHJlc291cmNlSWRl
bnRpZmllcik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRGaW5p
c2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllcikKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyXSB7Ci0gICAgICAgIG1fc2VydmVyLT5kaWRGaW5pc2hI
YW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlc3Vs
dERhdGEsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKLXsKLSAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cmVzdWx0RGF0YSwgaW5mb10gewotICAgICAgICBtX3NlcnZlci0+Y3JlYXRlT2JqZWN0U3RvcmUo
cmVzdWx0RGF0YSwgaW5mbyk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNv
bnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0
YSwgb2JqZWN0U3RvcmVOYW1lXSB7Ci0gICAgICAgIG1fc2VydmVyLT5kZWxldGVPYmplY3RTdG9y
ZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IG5ld05hbWUpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIG5ld05hbWVdIHsKLSAgICAgICAgbV9zZXJ2ZXItPnJlbmFtZU9iamVjdFN0b3JlKHJl
cXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpOwotICAgIH0pOwotfQot
Ci12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKLXsK
LSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcl0gewotICAg
ICAgICBtX3NlcnZlci0+Y2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0
ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSW5kZXhJ
bmZvJiBpbmZvKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwgaW5mb10gewotICAgICAg
ICBtX3NlcnZlci0+Y3JlYXRlSW5kZXgocmVxdWVzdERhdGEsIGluZm8pOwotICAgIH0pOwotfQot
Ci12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgaW5kZXhOYW1lKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBpbmRleE5hbWVdIHsKLSAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZUluZGV4
KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSk7Ci0gICAgfSk7
Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpyZW5hbWVJbmRleChjb25zdCBJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWlu
dDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCi17Ci0gICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmll
ciwgbmV3TmFtZV0gewotICAgICAgICBtX3NlcnZlci0+cmVuYW1lSW5kZXgocmVxdWVzdERhdGEs
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKLSAgICB9
KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURC
VmFsdWUmIHZhbHVlLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBv
dmVyd3JpdGVNb2RlKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFs
dWUsIG92ZXJ3cml0ZU1vZGVdIHsKLSAgICAgICAgbV9zZXJ2ZXItPnB1dE9yQWRkKHJlcXVlc3RE
YXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQg
SW5Qcm9jZXNzSURCU2VydmVyOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmREYXRhKQotewotICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCByZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YV0gewotICAgICAgICBtX3NlcnZlci0+
Z2V0UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRSZWNvcmREYXRhKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0Rh
dGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YV0gewot
ICAgICAgICBtX3NlcnZlci0+Z2V0QWxsUmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jk
c0RhdGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0Q291bnQo
Y29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEm
IGtleVJhbmdlRGF0YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIGtleVJhbmdlRGF0
YV0gewotICAgICAgICBtX3NlcnZlci0+Z2V0Q291bnQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0
YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVSZWNvcmQo
Y29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEm
IGtleVJhbmdlRGF0YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIGtleVJhbmdlRGF0
YV0gewotICAgICAgICBtX3NlcnZlci0+ZGVsZXRlUmVjb3JkKHJlcXVlc3REYXRhLCBrZXlSYW5n
ZURhdGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkN1cnNv
cihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkN1cnNvckluZm8m
IGluZm8pCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBpbmZvXSB7Ci0gICAgICAgIG1f
c2VydmVyLT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBpbmZvKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgZGF0YSkKLXsKLSAgICBS
dW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcmVxdWVzdERhdGEsIGRhdGFdIHsKLSAgICAgICAgbV9zZXJ2ZXItPml0ZXJhdGVD
dXJzb3IocmVxdWVzdERhdGEsIGRhdGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQotewotICAgIFJ1bkxv
b3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBpbmZvXSB7Ci0gICAgICAgIG1fc2Vy
dmVyLT5lc3RhYmxpc2hUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBp
bmZvKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmZpcmVWZXJzaW9u
Q2hhbmdlRXZlbnQoSURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKSwgcmVxdWVzdElkZW50aWZp
ZXIsIHJlcXVlc3RlZFZlcnNpb25dIHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmZp
cmVWZXJzaW9uQ2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVz
dElkZW50aWZpZXIsIHJlcXVlc3RlZFZlcnNpb24pOwotICAgIH0pOwotfQotCi12b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQotewot
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yXSB7Ci0gICAgICAgIG1f
Y29ubmVjdGlvblRvU2VydmVyLT5kaWRTdGFydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgZXJyb3IpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlk
Q2xvc2VGcm9tU2VydmVyKElEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBjb25zdCBJREJFcnJvciYgZXJyb3IpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKSwgZXJyb3Jd
IHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZENsb3NlRnJvbVNlcnZlcihkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBlcnJvcik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1
aW50NjRfdCBuZXdWZXJzaW9uKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwg
b2xkVmVyc2lvbiwgbmV3VmVyc2lvbl0gewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+
bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQocmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNpb24s
IG5ld1ZlcnNpb24pOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGF0
YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXJd
IHsKLSAgICAgICAgbV9zZXJ2ZXItPmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZShkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyXSB7Ci0gICAgICAgIG1fc2VydmVyLT5kYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQoZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXJdIHsKLSAgICAgICAgbV9zZXJ2ZXItPmFib3J0T3Bl
bkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRp
ZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29u
c3QgSW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlciBjb25uZWN0aW9u
Q2xvc2VkKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBy
ZXF1ZXN0SWRlbnRpZmllciwgY29ubmVjdGlvbkNsb3NlZF0gewotICAgICAgICBtX3NlcnZlci0+
ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBy
ZXF1ZXN0SWRlbnRpZmllciwgY29ubmVjdGlvbkNsb3NlZCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQg
SW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGFdIHsKLSAg
ICAgICAgbV9zZXJ2ZXItPm9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEpOwotICAg
IH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29uZmlybURpZENsb3NlRnJvbVNl
cnZlcih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQotewotICAgIFJ1bkxv
b3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyXSB7Ci0gICAgICAgIG1fc2VydmVyLT5j
b25maXJtRGlkQ2xvc2VGcm9tU2VydmVyKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwot
ICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1l
cyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG1haW5GcmFtZU9yaWdpbiwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCB1aW50NjRfdCBjYWxsYmFja0lEKQotewotICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBtYWluRnJhbWVPcmlnaW4sIG9wZW5pbmdPcmlnaW4sIGNhbGxiYWNrSURdIHsK
LSAgICAgICAgbV9zZXJ2ZXItPmdldEFsbERhdGFiYXNlTmFtZXMobV9jb25uZWN0aW9uVG9TZXJ2
ZXItPmlkZW50aWZpZXIoKSwgbWFpbkZyYW1lT3JpZ2luLCBvcGVuaW5nT3JpZ2luLCBjYWxsYmFj
a0lEKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbERh
dGFiYXNlTmFtZXModWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRh
dGFiYXNlTmFtZXMpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSUQsIGRhdGFiYXNlTmFtZXNd
IHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZEdldEFsbERhdGFiYXNlTmFtZXMo
Y2FsbGJhY2tJRCwgZGF0YWJhc2VOYW1lcyk7Ci0gICAgfSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNl
cnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vz
c0lEQlNlcnZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTczNmE3ODA5MTkx
ZTQzN2I4NjNjM2RiZGRhMmFiNDhlZTA2NWRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JblByb2Nlc3NJREJTZXJ2ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
LQotI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIgotI2luY2x1ZGUgIklEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5oIgotI2luY2x1ZGUgIklEQlNlcnZlci5oIgotI2luY2x1ZGUgIlN0b3Jh
Z2VRdW90YU1hbmFnZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgUEFM
IHsKLWNsYXNzIFNlc3Npb25JRDsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3Qg
Q2xpZW50T3JpZ2luOwotCi1uYW1lc3BhY2UgSURCQ2xpZW50IHsKLWNsYXNzIElEQkNvbm5lY3Rp
b25Ub1NlcnZlcjsKLX0KLQotbmFtZXNwYWNlIElEQlNlcnZlciB7Ci1jbGFzcyBJREJTZXJ2ZXI7
Ci19Ci0KLWNsYXNzIEluUHJvY2Vzc0lEQlNlcnZlciBmaW5hbCA6IHB1YmxpYyBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLCBwdWJsaWMgSURCU2VydmVyOjpJREJDb25u
ZWN0aW9uVG9DbGllbnREZWxlZ2F0ZSwgcHVibGljIFJlZkNvdW50ZWQ8SW5Qcm9jZXNzSURCU2Vy
dmVyPiB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2
ZXJEZWxlZ2F0ZTo6d2Vha1B0ckZhY3Rvcnk7Ci0gICAgdXNpbmcgV2Vha1ZhbHVlVHlwZSA9IElE
QkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGU6OldlYWtWYWx1ZVR5cGU7Ci0K
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4gY3JlYXRl
KFBBTDo6U2Vzc2lvbklEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEluUHJvY2Vz
c0lEQlNlcnZlcj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNl
RGlyZWN0b3J5UGF0aCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JblByb2Nlc3NJ
REJTZXJ2ZXIoKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIElEQkNsaWVudDo6SURCQ29ubmVjdGlv
blRvU2VydmVyJiBjb25uZWN0aW9uVG9TZXJ2ZXIoKSBjb25zdDsKLSAgICBJREJTZXJ2ZXI6OklE
QkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50KCkgY29uc3Q7Ci0gICAgSURC
U2VydmVyOjpJREJTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyLmdldCgpOyB9Ci0g
ICAgSURCU2VydmVyOjpJREJTZXJ2ZXImIGlkYlNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyLmdl
dCgpOyB9Ci0KLSAgICAvLyBJREJDb25uZWN0aW9uVG9TZXJ2ZXIKLSAgICB2b2lkIGRlbGV0ZURh
dGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJikgZmluYWw7Ci0gICAgdm9pZCBvcGVuRGF0YWJh
c2UoY29uc3QgSURCUmVxdWVzdERhdGEmKSBmaW5hbDsKLSAgICB2b2lkIGFib3J0VHJhbnNhY3Rp
b24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJikgZmluYWw7Ci0gICAgdm9pZCBjb21taXRU
cmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImKSBmaW5hbDsKLSAgICB2b2lk
IGRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYpIGZp
bmFsOwotICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCBj
b25zdCBJREJPYmplY3RTdG9yZUluZm8mKSBmaW5hbDsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdFN0
b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUp
IGZpbmFsOwotICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEm
LCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkg
ZmluYWw7Ci0gICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZUlu
ZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSW5kZXhJbmZvJikgZmluYWw7Ci0g
ICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVj
dFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpIGZpbmFsOwotICAgIHZv
aWQgcmVuYW1lSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdO
YW1lKSBmaW5hbDsKLSAgICB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29u
c3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJiwgY29uc3QgSW5kZXhlZERCOjpPYmplY3RT
dG9yZU92ZXJ3cml0ZU1vZGUpIGZpbmFsOwotICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZ2V0
QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNE
YXRhJikgZmluYWw7Ci0gICAgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNv
bnN0IElEQktleVJhbmdlRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgZmluYWw7Ci0gICAgdm9p
ZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYp
IGZpbmFsOwotICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNv
bnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJikgZmluYWw7Ci0gICAgdm9pZCBlc3RhYmxpc2hUcmFu
c2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJU
cmFuc2FjdGlvbkluZm8mKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFiYXNlQ29ubmVjdGlvblBlbmRp
bmdDbG9zZSh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSBmaW5hbDsKLSAg
ICB2b2lkIGRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIGFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQo
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpIGZpbmFsOwotICAgIHZvaWQgZGlkRmly
ZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJ
bmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyID0gSW5kZXhlZERCOjpD
b25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlcjo6Tm8pIGZpbmFsOwotICAgIHZvaWQgb3Bl
bkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBJREJSZXF1ZXN0RGF0YSYpIGZpbmFsOwotICAgIHZv
aWQgY29uZmlybURpZENsb3NlRnJvbVNlcnZlcih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXMoY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBtYWluRnJhbWVPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgb3BlbmluZ09yaWdpbiwgdWludDY0X3QgY2FsbGJhY2tJRCkgZmluYWw7Ci0KLSAgICAvLyBJ
REJDb25uZWN0aW9uVG9DbGllbnQKLSAgICBJREJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyKCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBkaWREZWxldGVEYXRhYmFzZShjb25zdCBJREJS
ZXN1bHREYXRhJikgZmluYWw7Ci0gICAgdm9pZCBkaWRPcGVuRGF0YWJhc2UoY29uc3QgSURCUmVz
dWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGlkQWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3Im
KSBmaW5hbDsKLSAgICB2b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYpIGZpbmFs
OwotICAgIHZvaWQgZGlkQ3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZp
bmFsOwotICAgIHZvaWQgZGlkRGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYp
IGZpbmFsOwotICAgIHZvaWQgZGlkUmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0
YSYpIGZpbmFsOwotICAgIHZvaWQgZGlkQ2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHRE
YXRhJikgZmluYWw7Ci0gICAgdm9pZCBkaWRDcmVhdGVJbmRleChjb25zdCBJREJSZXN1bHREYXRh
JikgZmluYWw7Ci0gICAgdm9pZCBkaWREZWxldGVJbmRleChjb25zdCBJREJSZXN1bHREYXRhJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZW5hbWVJbmRleChjb25zdCBJREJSZXN1bHREYXRhJikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRQdXRPckFkZChjb25zdCBJREJSZXN1bHREYXRhJikgZmluYWw7Ci0g
ICAgdm9pZCBkaWRHZXRSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZv
aWQgZGlkR2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXN1bHREYXRhJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRHZXRDb3VudChjb25zdCBJREJSZXN1bHREYXRhJikgZmluYWw7Ci0gICAgdm9pZCBkaWRE
ZWxldGVSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGlkT3Bl
bkN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJikgZmluYWw7Ci0gICAgdm9pZCBkaWRJdGVyYXRl
Q3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmKSBmaW5hbDsKLSAgICB2b2lkIGZpcmVWZXJzaW9u
Q2hhbmdlRXZlbnQoSURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1
ZXN0ZWRWZXJzaW9uKSBmaW5hbDsKLSAgICB2b2lkIGRpZFN0YXJ0VHJhbnNhY3Rpb24oY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVy
cm9yJikgZmluYWw7Ci0gICAgdm9pZCBkaWRDbG9zZUZyb21TZXJ2ZXIoSURCU2VydmVyOjpVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBJREJFcnJvciYpIGZpbmFsOwotICAgIHZv
aWQgbm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVy
c2lvbikgZmluYWw7Ci0gICAgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IGNh
bGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVzKSBmaW5hbDsKLQot
ICAgIHZvaWQgcmVmKCkgb3ZlcnJpZGUgeyBSZWZDb3VudGVkPEluUHJvY2Vzc0lEQlNlcnZlcj46
OnJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZigpIG92ZXJyaWRlIHsgUmVmQ291bnRlZDxJblByb2Nl
c3NJREJTZXJ2ZXI+OjpkZXJlZigpOyB9Ci0KLSAgICBTdG9yYWdlUXVvdGFNYW5hZ2VyKiBxdW90
YU1hbmFnZXIoY29uc3QgQ2xpZW50T3JpZ2luJik7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQg
SW5Qcm9jZXNzSURCU2VydmVyKFBBTDo6U2Vzc2lvbklEKTsKLSAgICBJblByb2Nlc3NJREJTZXJ2
ZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsK
LQotICAgIFJlZjxJREJTZXJ2ZXI6OklEQlNlcnZlcj4gbV9zZXJ2ZXI7Ci0gICAgUmVmUHRyPElE
QkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyPiBtX2Nvbm5lY3Rpb25Ub1NlcnZlcjsKLSAg
ICBSZWZQdHI8SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQ+IG1fY29ubmVjdGlvblRv
Q2xpZW50OwotCi0gICAgSGFzaE1hcDxDbGllbnRPcmlnaW4sIFJlZlB0cjxTdG9yYWdlUXVvdGFN
YW5hZ2VyPj4gbV9xdW90YU1hbmFnZXJzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRleCA4
YWUzZDE1MWU5ZmI3YWUxOWQxYTkxMDJlM2RkOThhYjkxMzAzZmY5Li4yZGQ2Y2MzYzhlMDY2NWFh
ZTZmZThlMTgyZjMzNjE5ODJhYjhlN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTMzLDEyICszMywx
NSBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRl
ci5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNPdmVy
Y29uc3RyYWluZWRFcnJvci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRp
YUNvbnN0cmFpbnRzLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKICNpbmNsdWRlICJNZWRp
YVN0cmVhbVByaXZhdGUuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiT3ZlcmNvbnN0cmFpbmVkRXJyb3IuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bp
Y3R1cmVpbnBpY3R1cmUvSFRNTFZpZGVvRWxlbWVudFBpY3R1cmVJblBpY3R1cmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0hUTUxWaWRlb0VsZW1lbnRQaWN0
dXJlSW5QaWN0dXJlLmNwcAppbmRleCAwMmI3M2ZiMTIzNjFlNzJkN2RlZDIwNGM2YzAyMWYwMTM4
YTZmMjljLi42ZmQ4ZDI1OGNiYWU0OGI4OWJiM2RhYjk1MGM2MjU5YmM2YmI3YmJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvSFRNTFZpZGVvRWxl
bWVudFBpY3R1cmVJblBpY3R1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGlj
dHVyZWlucGljdHVyZS9IVE1MVmlkZW9FbGVtZW50UGljdHVyZUluUGljdHVyZS5jcHAKQEAgLTI5
LDYgKzI5LDcgQEAKIAogI2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQogCisjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNs
dWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTUGljdHVyZUluUGljdHVy
ZVdpbmRvdy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA5MTc0ODdlMTFkM2EzYTZkZWZlNTRlZDA3Yjdm
YjhiY2U5NzlkZmYzLi41ZmU3MjNiNGU1MTA0NDE4NTM3YzZiODI5NzYwZDg2MGYzZjkzZjI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMTQyLDcgKzE0Miw2IEBAIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJSZXF1ZXN0RGF0YS5jcHAKIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJj
ZUlkZW50aWZpZXIuY3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5j
cHAKIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwCi1Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAogTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0luZGV4S2V5LmNwcAogCiBNb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL01l
ZGlhQ2FwYWJpbGl0aWVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdkY2M4MjQzODFlZGM3MDNiZjllYTZhMjU4YTdhODEy
MWIyZjM1YTMuLjk2OTIxNTEzOTRmMDViODZmMGM4MWE1NDgxYTE1NTc5MTJlMmJiODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTEzOTAsNyArMTM5MCw2IEBACiAJCTUxMDU4QUUyMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2Ft
ZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTA1OEFEQTFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMDVGMDY5
MUQ0QkE5RDkwMEZCODBCQyAvKiBJREJHZXRSZWNvcmREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA1RjA2ODFENEJBNTQxMDBGQjgwQkMgLyog
SURCR2V0UmVjb3JkRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUxMDZEN0JFMThCREI3NkYwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRl
eHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDZE
N0JDMThCREI3NkYwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTBBNThFNTFCQUE0MEIxMDBD
MTkyODIgLyogSW5Qcm9jZXNzSURCU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBBNThFMzFCQUE0MEFFMDBDMTkyODIgLyogSW5Qcm9jZXNz
SURCU2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTEwQTU4RkExQkFDQzdGMjAwQzE5MjgyIC8qIElEQlJlcXVlc3REYXRhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBBNThGNjFCQUNDNEE1
MDBDMTkyODIgLyogSURCUmVxdWVzdERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTBENEEzNDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0
U3RyZWFtRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMEQ0QTJFMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMEQ0QTM3MTAz
MTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTMxMTAzMTY1RUUwMDQ5RUE1NCAvKiBT
b2NrZXRTdHJlYW1IYW5kbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtODA1MCw4ICs4MDQ5LDYgQEAKIAkJNTEwNUYwNkExRDRCQjBCQzAwRkI4
MEJDIC8qIElEQkdldFJlY29yZERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSURCR2V0UmVjb3JkRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxMDZEN0JCMThCREI3NkYwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGV4dE1lbnVDb250ZXh0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwNkQ3QkMxOEJEQjc2RjAwMEFCMTY2
IC8qIENvbnRleHRNZW51Q29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb250ZXh0TWVudUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTEw
QTU4RTIxQkFBNDBBRTAwQzE5MjgyIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJblByb2Nlc3NJREJTZXJ2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTBBNThFMzFCQUE0MEFFMDBDMTkyODIgLyogSW5Q
cm9jZXNzSURCU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluUHJv
Y2Vzc0lEQlNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBBNThFRjFC
QUI3MjBGMDBDMTkyODIgLyogSURCU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IElEQlNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxMEE1OEYwMUJBQjcyMEYwMEMxOTI4MiAvKiBJREJTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSURCU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxMEE1OEY1MUJBQ0M0QTUwMEMxOTI4MiAvKiBJREJSZXF1ZXN0RGF0YS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJSZXF1ZXN0RGF0YS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODkzNCw4ICsxODkzMSw2IEBACiAJCQkJNTE5OEY3
QUIxQkJERDNFMzAwRTJDQzVGIC8qIElEQlRyYW5zYWN0aW9uSW5mby5oICovLAogCQkJCTUxNzEz
OEVEMUJFRDFEMTcwMDBENUYwMSAvKiBJbmRleEtleS5jcHAgKi8sCiAJCQkJNTE3MTM4RUUxQkVE
MUQxNzAwMEQ1RjAxIC8qIEluZGV4S2V5LmggKi8sCi0JCQkJNTEwQTU4RTIxQkFBNDBBRTAwQzE5
MjgyIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5jcHAgKi8sCi0JCQkJNTEwQTU4RTMxQkFBNDBBRTAw
QzE5MjgyIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBzaGFy
ZWQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzAyNDUsNyArMzAyNDAsNiBAQAog
CQkJCUJDRUE0ODVBMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQzAxMDcwMTE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjFDQzFERTIyNUY4QjQ5MDA3MjBBRDIgLyogSW5saW5l
VGV4dEl0ZW0uaCBpbiBIZWFkZXJzICovLAotCQkJCTUxMEE1OEU1MUJBQTQwQjEwMEMxOTI4MiAv
KiBJblByb2Nlc3NJREJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFQjc2NzU3MURBMTlC
REYwMDNFMjNCNSAvKiBJbnB1dEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTJFRkRGNDIx
MTI4NzVBMDBBRDI4MkEgLyogSW5wdXRNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0UzNTI0
RDEyNDUwQzY2MDBCQUY1RDkgLyogSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggNjAwZWY3YjZiYWM4NmNhNmY0YzE1YTFm
Y2YwNjE4OWFkOTg1OTM0Zi4uNzc5ZTkxNGE5ZWNiN2NhNGFjNWQxYWM5MGZiYzBjMGE2YWY4NTBl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTUwLDcgKzUwLDcg
QEAKICNpbmNsdWRlICJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTEZv
cm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKLSNpbmNsdWRlICJJblByb2Nl
c3NJREJTZXJ2ZXIuaCIKKyNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgog
I2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgpAQCAtMTIzLDEwICsxMjMsNDYgQEAg
Y2xhc3MgRW1wdHlDb250ZXh0TWVudUNsaWVudCBmaW5hbCA6IHB1YmxpYyBDb250ZXh0TWVudUNs
aWVudCB7CiAKIGNsYXNzIEVtcHR5RGF0YWJhc2VQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBEYXRh
YmFzZVByb3ZpZGVyIHsKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBJREJDbGll
bnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgaWRiQ29ubmVjdGlvblRvU2VydmVyRm9yU2Vzc2lv
bihjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKSBmaW5hbAorICAgIHN0cnVjdCBFbXB0
eUlEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGV0ZWdhdGUgZmluYWwgOiBwdWJsaWMgSURCQ2xpZW50
OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZSB7CisgICAgICAgIElEQkNvbm5lY3Rpb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB7IH07IH0KKyAgICAg
ICAgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYpIGZpbmFsIHsgfQor
ICAgICAgICB2b2lkIG9wZW5EYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYpIGZpbmFsIHsg
fQorICAgICAgICB2b2lkIGFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgZGlkRmluaXNoSGFu
ZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QsIGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNv
bnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJikgZmluYWwgeyB9
CisgICAgICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCBj
b25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCByZW5hbWVPYmplY3RTdG9yZShj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0K
KyAgICAgICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWlu
dDY0X3QpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgY29uc3QgSURCSW5kZXhJbmZvJikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgZGVs
ZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCwgY29uc3QgU3RyaW5nJikg
ZmluYWwgeyB9CisgICAgICAgIHZvaWQgcmVuYW1lSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEm
LCB1aW50NjRfdCwgdWludDY0X3QsIGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgfQorICAgICAgICB2
b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNv
bnN0IElEQlZhbHVlJiwgY29uc3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUp
IGZpbmFsIHsgfQorICAgICAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IElEQkdldFJlY29yZERhdGEmKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBnZXRBbGxS
ZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEm
KSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IElEQktleVJhbmdlRGF0YSYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGRlbGV0ZVJl
Y29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpIGZpbmFs
IHsgfQorICAgICAgICB2b2lkIG9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25z
dCBJREJDdXJzb3JJbmZvJikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJikgZmluYWwg
eyB9CisgICAgICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QsIGNvbnN0IElE
QlRyYW5zYWN0aW9uSW5mbyYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGRhdGFiYXNlQ29ubmVj
dGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCkgZmluYWwgeyB9CisgICAgICAgIHZvaWQgZGF0YWJh
c2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90KSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBhYm9y
dE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90LCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVp
bnQ2NF90LCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBjb25zdCBJbmRleGVkREI6OkNv
bm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBv
cGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJlcXVlc3REYXRhJikgZmluYWwgeyB9Cisg
ICAgICAgIHZvaWQgZ2V0QWxsRGF0YWJhc2VOYW1lcyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCB1aW50NjRfdCkgZmluYWwgeyB9CisgICAgICAg
IH5FbXB0eUlEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGV0ZWdhdGUoKSB7IH0KKyAgICAgICAgCisg
ICAgICAgIHZvaWQgY29uZmlybURpZENsb3NlRnJvbVNlcnZlcih1aW50NjRfdCkgZmluYWwgeyB9
CisgICAgICAgIHZvaWQgcmVmKCkgeyB9CisgICAgICAgIHZvaWQgZGVyZWYoKSB7IH0KKyAgICB9
OworCisgICAgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXImIGlkYkNvbm5lY3Rpb25U
b1NlcnZlckZvclNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmKSBmaW5hbAogICAgIHsKLSAg
ICAgICAgc3RhdGljIGF1dG8mIHNoYXJlZENvbm5lY3Rpb24gPSBJblByb2Nlc3NJREJTZXJ2ZXI6
OmNyZWF0ZShzZXNzaW9uSUQpLmxlYWtSZWYoKTsKLSAgICAgICAgcmV0dXJuIHNoYXJlZENvbm5l
Y3Rpb24uY29ubmVjdGlvblRvU2VydmVyKCk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxFbXB0eUlEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGV0ZWdhdGU+IGVtcHR5RGVsZWdhdGU7Cisg
ICAgICAgIHN0YXRpYyBhdXRvJiBlbXB0eUNvbm5lY3Rpb24gPSBJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6Y3JlYXRlKGVtcHR5RGVsZWdhdGUuZ2V0KCkpLmxlYWtSZWYoKTsKKyAg
ICAgICAgcmV0dXJuIGVtcHR5Q29ubmVjdGlvbjsKICAgICB9CiAjZW5kaWYKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCA3ZjBlMDBkZDI4ZGQ5ZjlhMTQwNDA2NzY0NmY0NjA1YTkyNGNlNTczLi4y
MDNmNWFlOWI0Mjg0ZmUxMGRlYTJlNGY4YjZlZGIwMTQyOWFkMDhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTE1MCw3ICsxNTAsNiBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAj
aW5jbHVkZSAiSURCQ29ubmVjdGlvblRvU2VydmVyLmgiCi0jaW5jbHVkZSAiSW5Qcm9jZXNzSURC
U2VydmVyLmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJEYXRhYmFzZVByb3Zp
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL1dlYkRhdGFiYXNlUHJv
dmlkZXIuaAppbmRleCBkNGU3ZjFjZjA0MDJjYzk3MmFlYzYxYWIxMjBkYjA4Mzk0YjI1MGRmLi44
ZTlmMjhiNzVjM2Q4ZTU4ZWQ4ZjEyZWYxZWQ4ZWY0ZDI0NmM5NGMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL1dlYkRhdGFiYXNlUHJvdmlkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL1dlYkRhdGFiYXNlUHJvdmlkZXIu
aApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBXZWJEYXRhYmFzZVByb3ZpZGVyX2gKIAogI2lu
Y2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VQcm92aWRlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSW5Q
cm9jZXNzSURCU2VydmVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYktpdExlZ2FjeS9DTWFrZUxpc3RzLnR4dAppbmRleCAwYzNmNTI0OGUwNGI0
MTI3YjZiZmRiNjA1OWQ1Y2U4ZjNlYzBhOTdmLi4wMjY2NWJkNjI0NmEyNjFjYTNhNzQ3MDM3OTRl
YWQxY2E5ZmMxMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ01ha2VMaXN0cy50eHQKQEAgLTMsNiArMyw3
IEBAIGluY2x1ZGUoV2ViS2l0Q29tbW9uKQogc2V0X3Byb3BlcnR5KERJUkVDVE9SWSAuIFBST1BF
UlRZIEZPTERFUiAiV2ViS2l0TGVnYWN5IikKIAogc2V0KFdlYktpdExlZ2FjeV9TT1VSQ0VTCisg
ICAgU3RvcmFnZS9JbnByb2Nlc3NJREJTZXJ2ZXIuY3BwCiAgICAgU3RvcmFnZS9TdG9yYWdlQXJl
YUltcGwuY3BwCiAgICAgU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCiAgICAgU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWZlM2I4ZmI4YWEwNzRhNTcz
YTBiMzdhODE4YWVjMDJkN2Y3MDg0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC0wLDAgKzEsNDYzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgIkluUHJvY2Vzc0lEQlNlcnZlci5oIgorCisjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0lEQkN1cnNvckluZm8uaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0lEQkdldFJlY29yZERhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0lEQkl0ZXJhdGVDdXJzb3JEYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJLZXlSYW5nZURh
dGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lEQk9wZW5EQlJlcXVlc3QuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0lEQlJlcXVlc3REYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJSZXN1bHREYXRh
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJUcmFuc2FjdGlvbkluZm8uaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0lEQlZhbHVlLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK1JlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IEluUHJvY2Vzc0lEQlNl
cnZlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3sKKyAgICBSZWY8SW5Qcm9j
ZXNzSURCU2VydmVyPiBzZXJ2ZXIgPSBhZG9wdFJlZigqbmV3IEluUHJvY2Vzc0lEQlNlcnZlcihz
ZXNzaW9uSUQpKTsKKyAgICBzZXJ2ZXItPm1fc2VydmVyLT5yZWdpc3RlckNvbm5lY3Rpb24oc2Vy
dmVyLT5jb25uZWN0aW9uVG9DbGllbnQoKSk7CisgICAgcmV0dXJuIHNlcnZlcjsKK30KKworUmVm
PEluUHJvY2Vzc0lEQlNlcnZlcj4gSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGUoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkKK3sK
KyAgICBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPiBzZXJ2ZXIgPSBhZG9wdFJlZigqbmV3IEluUHJv
Y2Vzc0lEQlNlcnZlcihzZXNzaW9uSUQsIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOworICAgIHNl
cnZlci0+bV9zZXJ2ZXItPnJlZ2lzdGVyQ29ubmVjdGlvbihzZXJ2ZXItPmNvbm5lY3Rpb25Ub0Ns
aWVudCgpKTsKKyAgICByZXR1cm4gc2VydmVyOworfQorCitJblByb2Nlc3NJREJTZXJ2ZXI6On5J
blByb2Nlc3NJREJTZXJ2ZXIoKSA9IGRlZmF1bHQ7CisKK1N0b3JhZ2VRdW90YU1hbmFnZXIqIElu
UHJvY2Vzc0lEQlNlcnZlcjo6cXVvdGFNYW5hZ2VyKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2lu
KQoreworICAgIHJldHVybiBtX3F1b3RhTWFuYWdlcnMuZW5zdXJlKG9yaWdpbiwgW10geworICAg
ICAgICByZXR1cm4gU3RvcmFnZVF1b3RhTWFuYWdlcjo6Y3JlYXRlKFN0b3JhZ2VRdW90YU1hbmFn
ZXI6OmRlZmF1bHRRdW90YSgpLCBbXSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
fSwgW10odWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qgc3Bh
Y2VJbmNyZWFzZSwgYXV0byBjYWxsYmFjaykgeworICAgICAgICAgICAgY2FsbGJhY2socXVvdGEg
KyBjdXJyZW50U3BhY2UgKyBzcGFjZUluY3JlYXNlKTsKKyAgICAgICAgfSk7CisgICAgfSkuaXRl
cmF0b3ItPnZhbHVlLmdldCgpOworfQorCitzdGF0aWMgaW5saW5lIElEQlNlcnZlcjo6SURCU2Vy
dmVyOjpTdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXIgc3RvcmFnZVF1b3RhTWFuYWdl
clNwYWNlUmVxdWVzdGVyKEluUHJvY2Vzc0lEQlNlcnZlciYgc2VydmVyKQoreworICAgIHJldHVy
biBbc2VydmVyID0gJnNlcnZlciwgd2Vha1NlcnZlciA9IG1ha2VXZWFrUHRyKHNlcnZlcildKGNv
bnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkgbXV0YWJs
ZSB7CisgICAgICAgIGF1dG8qIHN0b3JhZ2VRdW90YU1hbmFnZXIgPSB3ZWFrU2VydmVyID8gc2Vy
dmVyLT5xdW90YU1hbmFnZXIob3JpZ2luKSA6IG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdG9y
YWdlUXVvdGFNYW5hZ2VyID8gc3RvcmFnZVF1b3RhTWFuYWdlci0+cmVxdWVzdFNwYWNlT25CYWNr
Z3JvdW5kVGhyZWFkKHNwYWNlUmVxdWVzdGVkKSA6IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lz
aW9uOjpEZW55OworICAgIH07Cit9CisKK0luUHJvY2Vzc0lEQlNlcnZlcjo6SW5Qcm9jZXNzSURC
U2VydmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKKyAgICA6IG1fc2VydmVyKElEQlNlcnZl
cjo6SURCU2VydmVyOjpjcmVhdGUoc2Vzc2lvbklELCBzdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VS
ZXF1ZXN0ZXIoKnRoaXMpKSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHJl
bGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOworICAgIG1fY29ubmVjdGlvblRvU2VydmVyID0gSURC
Q2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgbV9jb25u
ZWN0aW9uVG9DbGllbnQgPSBJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRl
KCp0aGlzKTsKK30KKworSW5Qcm9jZXNzSURCU2VydmVyOjpJblByb2Nlc3NJREJTZXJ2ZXIoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0
aCkKKyAgICA6IG1fc2VydmVyKElEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGUoc2Vzc2lvbklE
LCBkYXRhYmFzZURpcmVjdG9yeVBhdGgsIHN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3Rl
cigqdGhpcykpKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgcmVsYXhBZG9w
dGlvblJlcXVpcmVtZW50KCk7CisgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIgPSBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICBtX2Nvbm5lY3Rpb25U
b0NsaWVudCA9IElEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVhdGUoKnRoaXMp
OworfQorCitJREJDb25uZWN0aW9uSWRlbnRpZmllciBJblByb2Nlc3NJREJTZXJ2ZXI6OmlkZW50
aWZpZXIoKSBjb25zdAoreworICAgIC8vIEFuIGluc3RhbmNlIG9mIEluUHJvY2Vzc0lEQlNlcnZl
ciBhbHdheXMgaGFzIGEgMToxIHJlbGF0aW9uc2hpcCB3aXRoIGl0cyBpbnN0YW5jZSBvZiBJREJT
ZXJ2ZXIuCisgICAgLy8gVGhlcmVmb3JlIHRoZSBjb25uZWN0aW9uIGlkZW50aWZpZXIgYmV0d2Vl
biB0aGUgdHdvIGNhbiBhbHdheXMgYmUgIjEiLgorICAgIHJldHVybiBQcm9jZXNzOjppZGVudGlm
aWVyKCk7Cit9CisKK0lEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyJiBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmNvbm5lY3Rpb25Ub1NlcnZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuICptX2Nv
bm5lY3Rpb25Ub1NlcnZlcjsKK30KKworSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQm
IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29ubmVjdGlvblRvQ2xpZW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gKm1fY29ubmVjdGlvblRvQ2xpZW50OworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQorewor
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YV0geworICAgICAgICBtX3NlcnZlci0+ZGVsZXRlRGF0
YWJhc2UocmVxdWVzdERhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6ZGlkRGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sK
KyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0geworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZl
ci0+ZGlkRGVsZXRlRGF0YWJhc2UocmVzdWx0RGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YV0geworICAgICAgICBtX3NlcnZl
ci0+b3BlbkRhdGFiYXNlKHJlcXVlc3REYXRhKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmRpZE9wZW5EYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7CisgICAgICAgIG1fY29ubmVjdGlv
blRvU2VydmVyLT5kaWRPcGVuRGF0YWJhc2UocmVzdWx0RGF0YSk7CisgICAgfSk7Cit9CisKK3Zv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRBYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJy
b3IpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3JdIHsKKyAg
ICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZEFib3J0VHJhbnNhY3Rpb24odHJhbnNhY3Rp
b25JZGVudGlmaWVyLCBlcnJvcik7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2Vy
dmVyOjpkaWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQoreworICAgIFJ1bkxv
b3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yXSB7CisgICAgICAgIG1fY29ubmVjdGlv
blRvU2VydmVyLT5kaWRDb21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVy
cm9yKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENyZWF0ZU9i
amVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgUnVuTG9v
cDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHJlc3VsdERhdGFdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZENyZWF0
ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6ZGlkRGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0
RGF0YSkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0geworICAgICAgICBtX2Nvbm5lY3Rp
b25Ub1NlcnZlci0+ZGlkRGVsZXRlT2JqZWN0U3RvcmUocmVzdWx0RGF0YSk7CisgICAgfSk7Cit9
CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRSZW5hbWVPYmplY3RTdG9yZShjb25zdCBJ
REJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7
CisgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRSZW5hbWVPYmplY3RTdG9yZShyZXN1
bHREYXRhKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENsZWFy
T2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgcmVzdWx0RGF0YV0geworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQ2xl
YXJPYmplY3RTdG9yZShyZXN1bHREYXRhKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRpZENyZWF0ZUluZGV4KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEp
Cit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9T
ZXJ2ZXItPmRpZENyZWF0ZUluZGV4KHJlc3VsdERhdGEpOworICAgIH0pOworfQorCit2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVz
dWx0RGF0YSkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0geworICAgICAgICBtX2Nvbm5l
Y3Rpb25Ub1NlcnZlci0+ZGlkRGVsZXRlSW5kZXgocmVzdWx0RGF0YSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRSZW5hbWVJbmRleChjb25zdCBJREJSZXN1bHRE
YXRhJiByZXN1bHREYXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7CisgICAgICAg
IG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRSZW5hbWVJbmRleChyZXN1bHREYXRhKTsKKyAgICB9
KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZFB1dE9yQWRkKGNvbnN0IElEQlJl
c3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKKyAg
ICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZFB1dE9yQWRkKHJlc3VsdERhdGEpOworICAg
IH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0UmVjb3JkKGNvbnN0IElE
QlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsK
KyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZEdldFJlY29yZChyZXN1bHREYXRhKTsK
KyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbFJlY29yZHMo
Y29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0
RGF0YV0geworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkR2V0QWxsUmVjb3Jkcyhy
ZXN1bHREYXRhKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdl
dENvdW50KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHJlc3VsdERhdGFdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZEdldENvdW50
KHJlc3VsdERhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlk
RGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHJlc3VsdERhdGFdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZERl
bGV0ZVJlY29yZChyZXN1bHREYXRhKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJT
ZXJ2ZXI6OmRpZE9wZW5DdXJzb3IoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sK
KyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0geworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZl
ci0+ZGlkT3BlbkN1cnNvcihyZXN1bHREYXRhKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmRpZEl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0
RGF0YSkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0geworICAgICAgICBtX2Nvbm5lY3Rp
b25Ub1NlcnZlci0+ZGlkSXRlcmF0ZUN1cnNvcihyZXN1bHREYXRhKTsKKyAgICB9KTsKK30KKwor
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiByZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc291
cmNlSWRlbnRpZmllcl0geworICAgICAgICBtX3NlcnZlci0+YWJvcnRUcmFuc2FjdGlvbihyZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXNvdXJjZUlk
ZW50aWZpZXIpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc291cmNlSWRlbnRpZmllcl0geworICAgICAg
ICBtX3NlcnZlci0+Y29tbWl0VHJhbnNhY3Rpb24ocmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9
KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIs
IGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQorewor
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklk
ZW50aWZpZXJdIHsKKyAgICAgICAgbV9zZXJ2ZXItPmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9u
SWRlbnRpZmllcik7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVh
dGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVzdWx0RGF0YSwgY29uc3QgSURC
T2JqZWN0U3RvcmVJbmZvJiBpbmZvKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhLCBpbmZv
XSB7CisgICAgICAgIG1fc2VydmVyLT5jcmVhdGVPYmplY3RTdG9yZShyZXN1bHREYXRhLCBpbmZv
KTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0
b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RTdG9yZU5hbWUpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZU5h
bWVdIHsKKyAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBv
YmplY3RTdG9yZU5hbWUpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
cmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKK3sKKyAg
ICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZV0g
eworICAgICAgICBtX3NlcnZlci0+cmVuYW1lT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVj
dFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjpjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQoreworICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBy
ZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyXSB7CisgICAgICAgIG1fc2VydmVyLT5j
bGVhck9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOworICAg
IH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlSW5kZXgoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8pCit7Cisg
ICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBpbmZvXSB7CisgICAgICAgIG1fc2VydmVyLT5jcmVh
dGVJbmRleChyZXF1ZXN0RGF0YSwgaW5mbyk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjpkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUp
Cit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGlu
ZGV4TmFtZV0geworICAgICAgICBtX3NlcnZlci0+ZGVsZXRlSW5kZXgocmVxdWVzdERhdGEsIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lKTsKKyAgICB9KTsKK30KKwordm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERh
dGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lXSB7Cisg
ICAgICAgIG1fc2VydmVyLT5yZW5hbWVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOworICAgIH0pOworfQorCit2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIGNv
bnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCit7
CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9k
ZV0geworICAgICAgICBtX3NlcnZlci0+cHV0T3JBZGQocmVxdWVzdERhdGEsIGtleURhdGEsIHZh
bHVlLCBvdmVyd3JpdGVNb2RlKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElE
QkdldFJlY29yZERhdGEmIGdldFJlY29yZERhdGEpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RE
YXRhLCBnZXRSZWNvcmREYXRhXSB7CisgICAgICAgIG1fc2VydmVyLT5nZXRSZWNvcmQocmVxdWVz
dERhdGEsIGdldFJlY29yZERhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNv
bnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiBnZXRBbGxSZWNvcmRzRGF0YSkKK3sKKyAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgcmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhXSB7CisgICAgICAgIG1fc2VydmVy
LT5nZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQor
eworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhXSB7CisgICAgICAgIG1f
c2VydmVyLT5nZXRDb3VudChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKKyAgICB9KTsKK30K
Kwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQor
eworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhXSB7CisgICAgICAgIG1f
c2VydmVyLT5kZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKK3sKKyAgICBS
dW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcmVxdWVzdERhdGEsIGluZm9dIHsKKyAgICAgICAgbV9zZXJ2ZXItPm9wZW5DdXJz
b3IocmVxdWVzdERhdGEsIGluZm8pOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNv
bnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0
RGF0YSwgZGF0YV0geworICAgICAgICBtX3NlcnZlci0+aXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0
YSwgZGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjplc3RhYmxp
c2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIsIGluZm9dIHsKKyAgICAgICAgbV9zZXJ2ZXItPmVzdGFibGlzaFRy
YW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGluZm8pOworICAgIH0pOwor
fQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZmlyZVZlcnNpb25DaGFuZ2VFdmVudChJREJT
ZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgcmVxdWVzdGVk
VmVyc2lvbikKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciA9
IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCByZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdGVkVmVy
c2lvbl0geworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZmlyZVZlcnNpb25DaGFuZ2VF
dmVudChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgcmVx
dWVzdGVkVmVyc2lvbik7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpk
aWRTdGFydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3IpCit7CisgICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3JdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2
ZXItPmRpZFN0YXJ0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcik7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDbG9zZUZyb21TZXJ2ZXIo
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0
IElEQkVycm9yJiBlcnJvcikKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciA9IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCBlcnJvcl0geworICAgICAgICBtX2Nv
bm5lY3Rpb25Ub1NlcnZlci0+ZGlkQ2xvc2VGcm9tU2VydmVyKGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIsIGVycm9yKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
cmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNp
b24pCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCBvbGRWZXJzaW9uLCBuZXdW
ZXJzaW9uXSB7CisgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5ub3RpZnlPcGVuREJSZXF1
ZXN0QmxvY2tlZChyZXF1ZXN0SWRlbnRpZmllciwgb2xkVmVyc2lvbiwgbmV3VmVyc2lvbik7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25Q
ZW5kaW5nQ2xvc2UodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKK3sKKyAg
ICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcl0geworICAgICAgICBtX3Nl
cnZlci0+ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGF0YWJh
c2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIp
Cit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXJdIHsKKyAgICAg
ICAgbV9zZXJ2ZXItPmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0
T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCit7
CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9u
SWRlbnRpZmllcl0geworICAgICAgICBtX3NlcnZlci0+YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRl
ZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwor
ICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFu
Z2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJbmRleGVkREI6OkNv
bm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyIGNvbm5lY3Rpb25DbG9zZWQpCit7CisgICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVy
LCBjb25uZWN0aW9uQ2xvc2VkXSB7CisgICAgICAgIG1fc2VydmVyLT5kaWRGaXJlVmVyc2lvbkNo
YW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVy
LCBjb25uZWN0aW9uQ2xvc2VkKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YV0geworICAgICAgICBtX3NlcnZlci0+
b3BlbkRCUmVxdWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQg
SW5Qcm9jZXNzSURCU2VydmVyOjpjb25maXJtRGlkQ2xvc2VGcm9tU2VydmVyKHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXJdIHsKKyAgICAgICAgbV9zZXJ2ZXItPmNvbmZpcm1EaWRDbG9zZUZy
b21TZXJ2ZXIoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgfSk7Cit9CisKK3Zv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgbWFpbkZyYW1lT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9w
ZW5pbmdPcmlnaW4sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1haW5G
cmFtZU9yaWdpbiwgb3BlbmluZ09yaWdpbiwgY2FsbGJhY2tJRF0geworICAgICAgICBtX3NlcnZl
ci0+Z2V0QWxsRGF0YWJhc2VOYW1lcyhtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+aWRlbnRpZmllcigp
LCBtYWluRnJhbWVPcmlnaW4sIG9wZW5pbmdPcmlnaW4sIGNhbGxiYWNrSUQpOworICAgIH0pOwor
fQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1lcyh1aW50
NjRfdCBjYWxsYmFja0lELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGF0YWJhc2VOYW1lcykKK3sK
KyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRCwgZGF0YWJhc2VOYW1lc10geworICAgICAgICBtX2Nv
bm5lY3Rpb25Ub1NlcnZlci0+ZGlkR2V0QWxsRGF0YWJhc2VOYW1lcyhjYWxsYmFja0lELCBkYXRh
YmFzZU5hbWVzKTsKKyAgICB9KTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lE
QlNlcnZlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmViZWEyN2UyZjEwM2U2NTk0ZDI0MzIzNDkxZmE4MmEzYTlkMWY2YzQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNz
SURCU2VydmVyLmgKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSA8V2ViQ29yZS9JREJD
b25uZWN0aW9uVG9DbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lEQkNvbm5lY3Rpb25Ub1Nl
cnZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSURCU2VydmVyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TdG9yYWdlUXVvdGFNYW5hZ2VyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNw
YWNlIFBBTCB7CitjbGFzcyBTZXNzaW9uSUQ7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0
cnVjdCBDbGllbnRPcmlnaW47CisKK25hbWVzcGFjZSBJREJDbGllbnQgeworY2xhc3MgSURCQ29u
bmVjdGlvblRvU2VydmVyOworfQorCituYW1lc3BhY2UgSURCU2VydmVyIHsKK2NsYXNzIElEQlNl
cnZlcjsKK30KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworY2xhc3MgSW5Qcm9jZXNzSURCU2Vy
dmVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2Vy
dmVyRGVsZWdhdGUsIHB1YmxpYyBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0Ns
aWVudERlbGVnYXRlLCBwdWJsaWMgUmVmQ291bnRlZDxJblByb2Nlc3NJREJTZXJ2ZXI+IHsKK3B1
YmxpYzoKKyAgICB1c2luZyBXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZl
ckRlbGVnYXRlOjp3ZWFrUHRyRmFjdG9yeTsKKyAgICB1c2luZyBXZWFrVmFsdWVUeXBlID0gV2Vi
Q29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZTo6V2Vha1ZhbHVl
VHlwZTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8SW5Qcm9jZXNzSURCU2VydmVy
PiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
SW5Qcm9jZXNzSURCU2VydmVyPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfklu
UHJvY2Vzc0lEQlNlcnZlcigpOworCisgICAgV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0
aW9uVG9TZXJ2ZXImIGNvbm5lY3Rpb25Ub1NlcnZlcigpIGNvbnN0OworICAgIFdlYkNvcmU6OklE
QlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiBjb25uZWN0aW9uVG9DbGllbnQoKSBjb25z
dDsKKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlciYgc2VydmVyKCkgeyByZXR1cm4g
bV9zZXJ2ZXIuZ2V0KCk7IH0KKworICAgIC8vIElEQkNvbm5lY3Rpb25Ub1NlcnZlcgorICAgIHZv
aWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKSBmaW5hbDsK
KyAgICB2b2lkIG9wZW5EYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYpIGZp
bmFsOworICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXImKSBmaW5hbDsKKyAgICB2b2lkIGNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdl
YkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYpIGZpbmFsOworICAgIHZvaWQgZGlkRmluaXNo
SGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJikgZmlu
YWw7CisgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbyYpIGZpbmFsOworICAgIHZv
aWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25z
dCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkgZmluYWw7CisgICAgdm9pZCByZW5hbWVPYmplY3RT
dG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFy
T2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJJbmRleEluZm8mKSBmaW5h
bDsKKyAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkg
ZmluYWw7CisgICAgdm9pZCByZW5hbWVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpIGZpbmFsOworICAgIHZvaWQgcHV0T3JBZGQoY29u
c3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwg
Y29uc3QgV2ViQ29yZTo6SURCVmFsdWUmLCBjb25zdCBXZWJDb3JlOjpJbmRleGVkREI6Ok9iamVj
dFN0b3JlT3ZlcndyaXRlTW9kZSkgZmluYWw7CisgICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJHZXRSZWNvcmREYXRhJikg
ZmluYWw7CisgICAgdm9pZCBnZXRBbGxSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiwgY29uc3QgV2ViQ29yZTo6SURCR2V0QWxsUmVjb3Jkc0RhdGEmKSBmaW5hbDsKKyAgICB2
b2lkIGdldENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29y
ZTo6SURCS2V5UmFuZ2VEYXRhJikgZmluYWw7CisgICAgdm9pZCBkZWxldGVSZWNvcmQoY29uc3Qg
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEm
KSBmaW5hbDsKKyAgICB2b2lkIG9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmLCBjb25zdCBXZWJDb3JlOjpJREJDdXJzb3JJbmZvJikgZmluYWw7CisgICAgdm9pZCBpdGVy
YXRlQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6
SURCSXRlcmF0ZUN1cnNvckRhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGVzdGFibGlzaFRyYW5zYWN0
aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uSW5mbyYpIGZpbmFsOworICAgIHZvaWQgZGF0YWJhc2VDb25uZWN0aW9u
UGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpIGZpbmFs
OworICAgIHZvaWQgZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgYWJvcnRPcGVuQW5kVXBncmFkZU5l
ZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikgZmluYWw7Cisg
ICAgdm9pZCBkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVx
dWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3Nl
ZE9uQmVoYWxmT2ZTZXJ2ZXIpIGZpbmFsOworICAgIHZvaWQgb3BlbkRCUmVxdWVzdENhbmNlbGxl
ZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgY29uZmly
bURpZENsb3NlRnJvbVNlcnZlcih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
KSBmaW5hbDsKKyAgICB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXMoY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiBtYWluRnJhbWVPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgdWludDY0X3QgY2FsbGJhY2tJRCkgZmluYWw7CisK
KyAgICAvLyBJREJDb25uZWN0aW9uVG9DbGllbnQKKyAgICBXZWJDb3JlOjpJREJDb25uZWN0aW9u
SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBkaWREZWxldGVE
YXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBk
aWRPcGVuRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAg
IHZvaWQgZGlkQWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBm
aW5hbDsKKyAgICB2b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJ
REJFcnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlkQ3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkRGVsZXRlT2JqZWN0U3Rv
cmUoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVu
YW1lT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAg
IHZvaWQgZGlkQ2xlYXJPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikg
ZmluYWw7CisgICAgdm9pZCBkaWRDcmVhdGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHRE
YXRhJikgZmluYWw7CisgICAgdm9pZCBkaWREZWxldGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJS
ZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRSZW5hbWVJbmRleChjb25zdCBXZWJDb3Jl
OjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRQdXRPckFkZChjb25zdCBXZWJD
b3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRHZXRSZWNvcmQoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkR2V0QWxsUmVjb3Jk
cyhjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRHZXRD
b3VudChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBkaWRE
ZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZv
aWQgZGlkT3BlbkN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7Cisg
ICAgdm9pZCBkaWRJdGVyYXRlQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBm
aW5hbDsKKyAgICB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9u
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFN0YXJ0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OklEQkVycm9yJikgZmluYWw7CisgICAgdm9pZCBkaWRDbG9zZUZyb21TZXJ2ZXIoV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJ
REJFcnJvciYpIGZpbmFsOworICAgIHZvaWQgbm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29u
c3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWlu
dDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbikgZmluYWw7CisgICAgdm9pZCBk
aWRHZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkYXRhYmFzZU5hbWVzKSBmaW5hbDsKKworICAgIHZvaWQgcmVmKCkgb3ZlcnJpZGUg
eyBSZWZDb3VudGVkPEluUHJvY2Vzc0lEQlNlcnZlcj46OnJlZigpOyB9CisgICAgdm9pZCBkZXJl
ZigpIG92ZXJyaWRlIHsgUmVmQ291bnRlZDxJblByb2Nlc3NJREJTZXJ2ZXI+OjpkZXJlZigpOyB9
CisKKyAgICBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyKiBxdW90YU1hbmFnZXIoY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgSW5Qcm9j
ZXNzSURCU2VydmVyKFBBTDo6U2Vzc2lvbklEKTsKKyAgICBJblByb2Nlc3NJREJTZXJ2ZXIoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKKworICAg
IFJlZjxXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcj4gbV9zZXJ2ZXI7CisgICAgUmVmUHRy
PFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyPiBtX2Nvbm5lY3Rpb25U
b1NlcnZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9D
bGllbnQ+IG1fY29ubmVjdGlvblRvQ2xpZW50OworCisgICAgSGFzaE1hcDxXZWJDb3JlOjpDbGll
bnRPcmlnaW4sIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyPj4gbV9xdW90YU1h
bmFnZXJzOworfTsKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuY3BwCmlu
ZGV4IDdmMDM4ZjNhY2M4ZTk5ZWQ5ODUzYzJmMmZkYjQ3MzU0MWI4ZDBlNzguLmMyZjcxYmFmM2Qx
N2Y0ZWNhYzAzZWRhZmY3YzkyMzZmM2M4MjFlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5jcHAKQEAgLTQ2LDE0ICs0NiwxNCBA
QCBXZWJEYXRhYmFzZVByb3ZpZGVyOjp+V2ViRGF0YWJhc2VQcm92aWRlcigpCiBXZWJDb3JlOjpJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgV2ViRGF0YWJhc2VQcm92aWRlcjo6aWRi
Q29ubmVjdGlvblRvU2VydmVyRm9yU2Vzc2lvbihjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lv
bklEKQogewogICAgIHJldHVybiBtX2lkYlNlcnZlck1hcC5lbnN1cmUoc2Vzc2lvbklELCBbJnNl
c3Npb25JRF0gewotICAgICAgICByZXR1cm4gc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgPyBXZWJD
b3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQpIDogV2ViQ29yZTo6SW5Q
cm9jZXNzSURCU2VydmVyOjpjcmVhdGUoc2Vzc2lvbklELCBpbmRleGVkRGF0YWJhc2VEaXJlY3Rv
cnlQYXRoKCkpOworICAgICAgICByZXR1cm4gc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgPyBJblBy
b2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQpIDogSW5Qcm9jZXNzSURCU2VydmVyOjpj
cmVhdGUoc2Vzc2lvbklELCBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkpOwogICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZS0+Y29ubmVjdGlvblRvU2VydmVyKCk7CiB9CiAKIHZvaWQgV2ViRGF0
YWJhc2VQcm92aWRlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKCkKIHsKICAgICBmb3IgKGF1dG8mIHNl
cnZlciA6IG1faWRiU2VydmVyTWFwLnZhbHVlcygpKQotICAgICAgICBzZXJ2ZXItPmlkYlNlcnZl
cigpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZSgtV2FsbFRpbWU6OmluZmlu
aXR5KCksIFtdIHsgfSk7CisgICAgICAgIHNlcnZlci0+c2VydmVyKCkuY2xvc2VBbmREZWxldGVE
YXRhYmFzZXNNb2RpZmllZFNpbmNlKC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW10geyB9KTsKIH0K
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViRGF0
YWJhc2VQcm92aWRlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYkRhdGFiYXNl
UHJvdmlkZXIuaAppbmRleCBkNjY3Yjg2MzEyMjkzOWQ5NGM4Yjk0YzNiY2ZhMTU2OTgyOTRlODZm
Li41MzYzZDU4MDQ4YTM4NDgyMWJkNjhiMWYzZWI0ZDliMGZlMTliYWRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmgKQEAgLTMxLDcg
KzMxLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKLSNpbmNsdWRlIDxXZWJDb3JlL0luUHJvY2Vzc0lEQlNlcnZlci5oPgorI2luY2x1
ZGUgPEluUHJvY2Vzc0lEQlNlcnZlci5oPgogI2VuZGlmCiAKIGNsYXNzIFdlYkRhdGFiYXNlUHJv
dmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RGF0YWJhc2VQcm92aWRlciB7CkBAIC01Miw2
ICs1Miw2IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFN0cmluZyBpbmRleGVkRGF0YWJhc2VEaXJl
Y3RvcnlQYXRoKCk7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBIYXNoTWFw
PFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8V2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyPj4gbV9p
ZGJTZXJ2ZXJNYXA7CisgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmUHRyPEluUHJvY2Vz
c0lEQlNlcnZlcj4+IG1faWRiU2VydmVyTWFwOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggY2U2ZWIzNjMxYzk2ODY3MzUzMDA0N2M2ZWQ0MGY4ODM3NTZjN2MwZS4uNDFiOTQ1
YzkwYzE2YjYxZjg2M2Y1NGNjZWE1ZjRhYzE5OWNjZGU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYktpdExlZ2FjeS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0yMjcsNiArMjI3LDggQEAKIAkJOTM0QzExNjcwRDg3MTBCQjAwQzMyQUJEIC8qIFdlYkR5
bmFtaWNTY3JvbGxCYXJzVmlld0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRDMTE2NjBEODcxMEJCMDBDMzJBQkQgLyogV2ViRHluYW1p
Y1Njcm9sbEJhcnNWaWV3SW50ZXJuYWwuaCAqLzsgfTsKIAkJOTM0QzRBOTEwRjAxNDA2QzAwOTM3
MkMwIC8qIFdlYk5TT2JqZWN0RXh0cmFzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTM0QzRBOTAwRjAxNDA2QzAwOTM3MkMwIC8qIFdlYk5TT2JqZWN0
RXh0cmFzLm1tICovOyB9OwogCQk5MzRDNEFBMDBGMDE0MUY3MDA5MzcyQzAgLyogV2ViUmVzb3Vy
Y2VJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTM0QzRBOUYwRjAxNDFGNzAwOTM3MkMwIC8qIFdlYlJlc291cmNlSW50ZXJuYWwuaCAqLzsg
fTsKKwkJOTM2NDAwNkUyMzk5NkU4MTAwMUUxODVFIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzY0MDA2QzIz
OTk2RTgwMDAxRTE4NUUgLyogSW5Qcm9jZXNzSURCU2VydmVyLmNwcCAqLzsgfTsKKwkJOTM2NDAw
NkYyMzk5NkU4MTAwMUUxODVFIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM2NDAwNkQyMzk5NkU4MTAwMUUxODVF
IC8qIEluUHJvY2Vzc0lEQlNlcnZlci5oICovOyB9OwogCQk5MzZBMkRFODBGRDJEMDgwMDBEMzEy
REIgLyogV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM2QTJERTcwRkQyRDA4MDAwRDMxMkRCIC8qIFdl
YlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbSAqLzsgfTsKIAkJOTM2QTJERUEwRkQyRDA4NDAw
RDMxMkRCIC8qIFdlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM2QTJERTkwRkQyRDA4NDAwRDMxMkRCIC8q
IFdlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5oICovOyB9OwogCQk5MzkxRjI3NTEyMUIzOEJE
MDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MUYyNzMxMjFCMzhCRDAwRUJGN0U4IC8q
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCAqLzsgfTsKQEAgLTEwMjQsNiArMTAyNiw4IEBA
CiAJCTkzNEMxMTY2MEQ4NzEwQkIwMEMzMkFCRCAvKiBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXdJ
bnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEeW5hbWljU2Ny
b2xsQmFyc1ZpZXdJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzRD
NEE5MDBGMDE0MDZDMDA5MzcyQzAgLyogV2ViTlNPYmplY3RFeHRyYXMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJOU09iamVjdEV4dHJhcy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0QzRBOUYwRjAxNDFGNzAwOTM3MkMwIC8qIFdlYlJl
c291cmNlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVz
b3VyY2VJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzY0MDA2QzIz
OTk2RTgwMDAxRTE4NUUgLyogSW5Qcm9jZXNzSURCU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEluUHJvY2Vzc0lEQlNlcnZlci5jcHA7IHBhdGggPSBTdG9y
YWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
KwkJOTM2NDAwNkQyMzk5NkU4MTAwMUUxODVFIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJblByb2Nlc3NJREJTZXJ2ZXIuaDsgcGF0aCA9
IFN0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsg
fTsKIAkJOTM2QTJERTcwRkQyRDA4MDAwRDMxMkRCIC8qIFdlYlRleHRDb21wbGV0aW9uQ29udHJv
bGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlRleHRD
b21wbGV0aW9uQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM2
QTJERTkwRkQyRDA4NDAwRDMxMkRCIC8qIFdlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MUYyNzMxMjFCMzhCRDAwRUJG
N0U4IC8qIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTgzMyw2ICsxODM3LDggQEAKIAkJNTExRjNGQzMwQ0VDQzdFMjAwODUy
NTY1IC8qIFN0b3JhZ2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCTkzNjQwMDZDMjM5OTZFODAwMDFFMTg1RSAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuY3Bw
ICovLAorCQkJCTkzNjQwMDZEMjM5OTZFODEwMDFFMTg1RSAvKiBJblByb2Nlc3NJREJTZXJ2ZXIu
aCAqLywKIAkJCQkxQTZCMzEyNDFBNTFGM0E5MDA0MjI5NzUgLyogU3RvcmFnZUFyZWFJbXBsLmNw
cCAqLywKIAkJCQkxQTZCMzEyNTFBNTFGM0E5MDA0MjI5NzUgLyogU3RvcmFnZUFyZWFJbXBsLmgg
Ki8sCiAJCQkJMUE2QjMxMjYxQTUxRjNBOTAwNDIyOTc1IC8qIFN0b3JhZ2VBcmVhU3luYy5jcHAg
Ki8sCkBAIC0yODgxLDYgKzI4ODcsNyBAQAogCQkJCTkzRDQzNzk5MUQ1N0FCRUYwMEFCODVFQSAv
KiBFeGNlcHRpb25IYW5kbGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2MDUxOTQxNzUwMkE1
RDAwQkM2MkY1IC8qIEhpc3RvcnlQcm9wZXJ0eUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
OERFRDUwMEVFODhCOEEwMEYyNTAyMiAvKiBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTM2NDAwNkYyMzk5NkU4MTAwMUUxODVFIC8qIEluUHJvY2Vzc0lE
QlNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEwQzFEMzIxODIwMkZDNTAwMzY4ODNBIC8q
IE1lbW9yeU1lYXN1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUY1Q0VBMEVEREUxRkUwMDhE
ODgzRCAvKiBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUFGNUNFQzBFRERFMUZFMDA4RDg4M0QgLyogTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzQwMiw2ICszNDA5LDcgQEAKIAkJCQk1QzlBNEU1MzIyREU0NjI3MDA3
REIzNTMgLyogRE9NVUlLaXRFeHRlbnNpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2MDUx
OTMxNzUwMkE1RDAwQkM2MkY1IC8qIEhpc3RvcnlQcm9wZXJ0eUxpc3QubW0gaW4gU291cmNlcyAq
LywKIAkJCQkxQThERUQ1MTBFRTg4QjhBMDBGMjUwMjIgLyogSG9zdGVkTmV0c2NhcGVQbHVnaW5T
dHJlYW0ubW0gaW4gU291cmNlcyAqLywKKwkJCQk5MzY0MDA2RTIzOTk2RTgxMDAxRTE4NUUgLyog
SW5Qcm9jZXNzSURCU2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExMEMxRDMzMTgyMDJG
QzUwMDM2ODgzQSAvKiBNZW1vcnlNZWFzdXJlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBRjVD
RUIwRURERTFGRTAwOEQ4ODNEIC8qIE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0gaW4gU291
cmNlcyAqLywKIAkJCQkxQUFGNUNFRDBFRERFMUZFMDA4RDg4M0QgLyogTmV0c2NhcGVQbHVnaW5I
b3N0UHJveHkubW0gaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384958</attachid>
            <date>2019-12-05 14:44:48 -0800</date>
            <delta_ts>2019-12-05 14:48:59 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-204896-20191205144447.patch</filename>
            <type>text/plain</type>
            <size>60342</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjUyZjhiNzA0Yzk3MWY1
NzQ5YTBmNDI3NzBlYzc1NDBiZGRkYTM5ZS4uMjEyZjE4MmY5ZDY5ZmQ3NmJhYzA3MTZmNmU5MTVj
Mzk1NWUwOTU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTEyLTA1ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgSW5Qcm9jZXNzSURC
U2VydmVyIHRvIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA0ODk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29u
LgorCisgICAgICAgIFdlIG9ubHkgdXNlIEluUHJvY2Vzc0lEQlNlcnZlciBpbiBXZWJLaXRMZWdh
Y3kgbm93LgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIEhlYWRl
cnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5o
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaDoK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvSFRNTFZpZGVvRWxlbWVu
dFBpY3R1cmVJblBpY3R1cmUuY3BwOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvRW1w
dHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorCiAyMDE5LTEyLTA1ICB5
b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBpbnNwZWN0b3IvcGFn
ZS9vdmVycmlkZVNldHRpbmctTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZC5odG1sIGlzIGZhaWxp
bmcgYWZ0ZXIgcmVtb3ZhbCBvZiBpbnRlcm5hbHMuc2V0TW9ja01lZGlhQ2FwdHVyZURldmljZXNF
bmFibGVkIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAyYjc1YWY2ZDIxNDA1NzQzN2M0N2E3YzZjZjFhMGM4MDFk
ZmI2OTU4Li40MmRhNjUyNjNlMTU2OGE4ZGZlOTY0NjEyYjIwNTgyZGVmOWU1YTMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDE5LTEyLTA1ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBw
bGUuY29tPgorCisgICAgICAgIE1vdmUgSW5Qcm9jZXNzSURCU2VydmVyIHRvIFdlYktpdExlZ2Fj
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0ODk2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9EYXRhYmFzZXMvV2ViRGF0YWJhc2VQcm92aWRlci5oOgorCiAyMDE5LTEyLTA1ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR0xpYl0gRGlz
cGxheSBHU3RyZWFtZXIgdmVyc2lvbiBpbiBhYm91dDpncHUgcGFnZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZwppbmRleCBkZjk4MzViYWFkYjM4MTU4OWFhMTBkMzU3OTQzODZhYzJkNWY1ZGM1Li43M2FmODM0
OTM4ZTc4MjZjYmNhZWEwMDJkMDIwZTBiOWY5ZTk2ODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDc2IEBACisyMDE5LTEyLTA1ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUu
Y29tPgorCisgICAgICAgIE1vdmUgSW5Qcm9jZXNzSURCU2VydmVyIHRvIFdlYktpdExlZ2FjeQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0ODk2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lE
QlNlcnZlci5jcHAuCisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdlcik6CisgICAgICAgIChzdG9yYWdl
UXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXIpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVy
OjpJblByb2Nlc3NJREJTZXJ2ZXIpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjppZGVu
dGlmaWVyIGNvbnN0KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29ubmVjdGlvblRv
U2VydmVyIGNvbnN0KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29ubmVjdGlvblRv
Q2xpZW50IGNvbnN0KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlRGF0YWJh
c2UpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxldGVEYXRhYmFzZSk6Cisg
ICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChJblBy
b2Nlc3NJREJTZXJ2ZXI6OmRpZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChJblByb2Nlc3NJREJT
ZXJ2ZXI6OmRpZEFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVy
OjpkaWRDb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRp
ZENyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVs
ZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRSZW5hbWVP
YmplY3RTdG9yZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENsZWFyT2JqZWN0
U3RvcmUpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDcmVhdGVJbmRleCk6Cisg
ICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZUluZGV4KToKKyAgICAgICAgKElu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkUmVuYW1lSW5kZXgpOgorICAgICAgICAoSW5Qcm9jZXNzSURC
U2VydmVyOjpkaWRQdXRPckFkZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdl
dFJlY29yZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbFJlY29yZHMp
OgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRDb3VudCk6CisgICAgICAgIChJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZVJlY29yZCk6CisgICAgICAgIChJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRpZE9wZW5DdXJzb3IpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpk
aWRJdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRUcmFu
c2FjdGlvbik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9u
KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVP
YmplY3RTdG9yZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0
b3JlKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6cmVuYW1lT2JqZWN0U3RvcmUpOgor
ICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAg
KEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoSW5Qcm9jZXNzSURC
U2VydmVyOjpkZWxldGVJbmRleCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFt
ZUluZGV4KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6cHV0T3JBZGQpOgorICAgICAg
ICAoSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRSZWNvcmQpOgorICAgICAgICAoSW5Qcm9jZXNzSURC
U2VydmVyOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0
Q291bnQpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVSZWNvcmQpOgorICAg
ICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKEluUHJvY2Vz
c0lEQlNlcnZlcjo6aXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6
OmVzdGFibGlzaFRyYW5zYWN0aW9uKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Zmly
ZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZFN0
YXJ0VHJhbnNhY3Rpb24pOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDbG9zZUZy
b21TZXJ2ZXIpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpub3RpZnlPcGVuREJSZXF1
ZXN0QmxvY2tlZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVj
dGlvblBlbmRpbmdDbG9zZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNl
Q29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0T3Bl
bkFuZFVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRGaXJl
VmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkRC
UmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbmZpcm1E
aWRDbG9zZUZyb21TZXJ2ZXIpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxE
YXRhYmFzZU5hbWVzKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxsRGF0
YWJhc2VOYW1lcyk6CisgICAgICAgICogU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuaDogQWRk
ZWQuCisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYkRhdGFiYXNlUHJvdmlkZXI6OmlkYkNvbm5lY3Rpb25Ub1NlcnZlckZvclNlc3Npb24pOgor
ICAgICAgICAoV2ViRGF0YWJhc2VQcm92aWRlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKToKKyAgICAg
ICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJLaXRMZWdh
Y3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0xMi0wNCAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFBhZ2VDb25maWd1cmF0aW9uOjpwcm9ncmVz
c1RyYWNrZXJDbGllbnQgc2hvdWxkIHVzZSBhIHNtYXJ0IHBvaW50ZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwppbmRleCA0MjQ5NmM2NWMzNjQ4ZDIzYjAzNGUzMmZhMzU1YWQ0NTZkMTUwZDAw
Li5lMmM0YjhkMmY4NjliNjViNzM5Yjk4N2IwMTZjMzBjNWQxM2E0MTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMTItMDUgIFNpaHVpIExpdSAg
PHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzYWJsZSBXZWJTUUwgZXZlcnl3aGVy
ZSBieSBkZWZhdWx0IGV4Y2VwdCBpbiB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0OTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkg
RWlkc29uLgorCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaDoK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoLVtXZWJQcmVm
ZXJlbmNlcyB3ZWJTUUxFbmFibGVkXSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNldFdl
YlNRTEVuYWJsZWQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUu
aDoKKwogMjAxOS0xMi0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFBhZ2VDb25maWd1cmF0aW9uOjpwcm9ncmVzc1RyYWNrZXJDbGllbnQgc2hvdWxkIHVzZSBh
IHNtYXJ0IHBvaW50ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDg4Mjk0NmI4YjVmZDc5NjA3NzU5
OWRjM2I4Zjg3OWYzZjI4Y2RjYmQuLjEzN2ZjNzhmODU4YWZhMTJiMTk0YzM2ZmNlM2U5NzdhOTc3
N2IwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNzksNyArNzksNiBAQCBzZXQoV2ViQ29yZV9Q
UklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlJlc291cmNlSWRlbnRpZmllci5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
c3VsdERhdGEuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbklu
Zm8uaAotICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaAog
CiAgICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uRXZlbnRzLmgKICAgICBNb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0YS5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggZmMxNjA0
Zjc2NWFlMjVjNjNhMDlhNGE5MzFkNTAwNGNlYzA1MGFjMS4uODg3NDZlZWU2ZDMyNzc5NDZmOGE1
NmFlYWViYzdhZDdjMzI5MzYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaApAQCAtNTgsNyArNTgsNyBAQCBlbnVtIGNsYXNz
IFNob3VsZEZvcmNlU3RvcCA6IGJvb2wgeyBObywgWWVzIH07CiBjbGFzcyBJREJTZXJ2ZXIgOiBw
dWJsaWMgUmVmQ291bnRlZDxJREJTZXJ2ZXI+LCBwdWJsaWMgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxl
ciwgcHVibGljIENhbk1ha2VXZWFrUHRyPElEQlNlcnZlcj4gewogcHVibGljOgogICAgIHVzaW5n
IFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciA9IEZ1bmN0aW9uPFN0b3JhZ2VRdW90
YU1hbmFnZXI6OkRlY2lzaW9uKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNwYWNlUmVx
dWVzdGVkKT47Ci0gICAgc3RhdGljIFJlZjxJREJTZXJ2ZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25J
RCwgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyJiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8SURCU2VydmVyPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIFN0b3JhZ2VR
dW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPElEQlNlcnZlcj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlRGlyZWN0b3J5UGF0aCwgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyJiYpOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RlckNvbm5lY3Rpb24oSURCQ29ubmVjdGlv
blRvQ2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCmluZGV4IDUzYjdiNjJkMzE0YzBiYTY1NmU1YjJi
YzU5NjA4OGQ0ZTRmMTVmZmYuLmE0Yzg1ZjY3MGFiZDI1N2Y2NzdhMDQ2ZGFlOTQwMTNlYWJiMmFl
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJSZXF1ZXN0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJSZXF1ZXN0RGF0YS5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIElEQlJlcXVlc3RE
YXRhIHsKIHB1YmxpYzoKICAgICBJREJSZXF1ZXN0RGF0YShjb25zdCBJREJDbGllbnQ6OklEQkNv
bm5lY3Rpb25Qcm94eSYsIGNvbnN0IElEQk9wZW5EQlJlcXVlc3QmKTsKICAgICBleHBsaWNpdCBJ
REJSZXF1ZXN0RGF0YShJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJik7Ci0gICAgSURC
UmVxdWVzdERhdGEoY29uc3QgSURCUmVxdWVzdERhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJ
REJSZXF1ZXN0RGF0YShjb25zdCBJREJSZXF1ZXN0RGF0YSYpOwogICAgIElEQlJlcXVlc3REYXRh
KElEQlJlcXVlc3REYXRhJiYpID0gZGVmYXVsdDsKICAgICBJREJSZXF1ZXN0RGF0YSYgb3BlcmF0
b3I9KElEQlJlcXVlc3REYXRhJiYpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5o
CmluZGV4IDdiOTQ3N2U4ZWM1NTRjOTEzZDJhNDhiZTU1OGUxNjMzZDkzZmNlOWIuLmI4YjQ4YTlk
MzlkZDE0OWRhNTc3MjUyNjI3YmE3YzQ4ZGYwNzNkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZv
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJREJUcmFuc2FjdGlvbklu
Zm8gY2xpZW50VHJhbnNhY3Rpb24oY29uc3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkm
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVzLCBJREJUcmFuc2FjdGlvbk1vZGUp
OwogICAgIHN0YXRpYyBJREJUcmFuc2FjdGlvbkluZm8gdmVyc2lvbkNoYW5nZShjb25zdCBJREJT
ZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYsIGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgb3Jp
Z2luYWxEYXRhYmFzZUluZm8sIHVpbnQ2NF90IG5ld1ZlcnNpb24pOwogCi0gICAgSURCVHJhbnNh
Y3Rpb25JbmZvKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpOworICAgIFdFQkNPUkVfRVhQT1JU
IElEQlRyYW5zYWN0aW9uSW5mbyhjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKTsKICAgICBJREJU
cmFuc2FjdGlvbkluZm8oSURCVHJhbnNhY3Rpb25JbmZvJiYpID0gZGVmYXVsdDsKICAgICBJREJU
cmFuc2FjdGlvbkluZm8mIG9wZXJhdG9yPShJREJUcmFuc2FjdGlvbkluZm8mJikgPSBkZWZhdWx0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkNjViZDVhNzY3MmEzODA1NjcxNmQzNmE1Y2NiMTM4ZjkxYjMxYTkzLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiSW5Qcm9jZXNzSURCU2VydmVyLmgiCi0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKLQotI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIgotI2luY2x1ZGUgIklEQkNv
bm5lY3Rpb25Ub1NlcnZlci5oIgotI2luY2x1ZGUgIklEQkN1cnNvckluZm8uaCIKLSNpbmNsdWRl
ICJJREJHZXRSZWNvcmREYXRhLmgiCi0jaW5jbHVkZSAiSURCSXRlcmF0ZUN1cnNvckRhdGEuaCIK
LSNpbmNsdWRlICJJREJLZXlSYW5nZURhdGEuaCIKLSNpbmNsdWRlICJJREJPcGVuREJSZXF1ZXN0
LmgiCi0jaW5jbHVkZSAiSURCUmVxdWVzdERhdGEuaCIKLSNpbmNsdWRlICJJREJSZXN1bHREYXRh
LmgiCi0jaW5jbHVkZSAiSURCVmFsdWUuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVk
ZSAiUHJvY2Vzc0lkZW50aWZpZXIuaCIKLSNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgotI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPEluUHJv
Y2Vzc0lEQlNlcnZlcj4gSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQotewotICAgIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlcnZlciA9IGFkb3B0
UmVmKCpuZXcgSW5Qcm9jZXNzSURCU2VydmVyKHNlc3Npb25JRCkpOwotICAgIHNlcnZlci0+bV9z
ZXJ2ZXItPnJlZ2lzdGVyQ29ubmVjdGlvbihzZXJ2ZXItPmNvbm5lY3Rpb25Ub0NsaWVudCgpKTsK
LSAgICByZXR1cm4gc2VydmVyOwotfQotCi1SZWY8SW5Qcm9jZXNzSURCU2VydmVyPiBJblByb2Nl
c3NJREJTZXJ2ZXI6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKQotewotICAgIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+
IHNlcnZlciA9IGFkb3B0UmVmKCpuZXcgSW5Qcm9jZXNzSURCU2VydmVyKHNlc3Npb25JRCwgZGF0
YWJhc2VEaXJlY3RvcnlQYXRoKSk7Ci0gICAgc2VydmVyLT5tX3NlcnZlci0+cmVnaXN0ZXJDb25u
ZWN0aW9uKHNlcnZlci0+Y29ubmVjdGlvblRvQ2xpZW50KCkpOwotICAgIHJldHVybiBzZXJ2ZXI7
Ci19Ci0KLUluUHJvY2Vzc0lEQlNlcnZlcjo6fkluUHJvY2Vzc0lEQlNlcnZlcigpID0gZGVmYXVs
dDsKLQotU3RvcmFnZVF1b3RhTWFuYWdlciogSW5Qcm9jZXNzSURCU2VydmVyOjpxdW90YU1hbmFn
ZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCi17Ci0gICAgcmV0dXJuIG1fcXVvdGFNYW5h
Z2Vycy5lbnN1cmUob3JpZ2luLCBbXSB7Ci0gICAgICAgIHJldHVybiBTdG9yYWdlUXVvdGFNYW5h
Z2VyOjpjcmVhdGUoU3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdIHsKLSAg
ICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9LCBbXSh1aW50NjRfdCBxdW90YSwgdWludDY0
X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7
Ci0gICAgICAgICAgICBjYWxsYmFjayhxdW90YSArIGN1cnJlbnRTcGFjZSArIHNwYWNlSW5jcmVh
c2UpOwotICAgICAgICB9KTsKLSAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7Ci19Ci0KLXN0
YXRpYyBpbmxpbmUgSURCU2VydmVyOjpJREJTZXJ2ZXI6OlN0b3JhZ2VRdW90YU1hbmFnZXJTcGFj
ZVJlcXVlc3RlciBzdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXIoSW5Qcm9jZXNzSURC
U2VydmVyJiBzZXJ2ZXIpCi17Ci0gICAgcmV0dXJuIFtzZXJ2ZXIgPSAmc2VydmVyLCB3ZWFrU2Vy
dmVyID0gbWFrZVdlYWtQdHIoc2VydmVyKV0oY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIHVp
bnQ2NF90IHNwYWNlUmVxdWVzdGVkKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byogc3RvcmFnZVF1
b3RhTWFuYWdlciA9IHdlYWtTZXJ2ZXIgPyBzZXJ2ZXItPnF1b3RhTWFuYWdlcihvcmlnaW4pIDog
bnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIHN0b3JhZ2VRdW90YU1hbmFnZXIgPyBzdG9yYWdlUXVv
dGFNYW5hZ2VyLT5yZXF1ZXN0U3BhY2VPbkJhY2tncm91bmRUaHJlYWQoc3BhY2VSZXF1ZXN0ZWQp
IDogU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnk7Ci0gICAgfTsKLX0KLQotSW5Q
cm9jZXNzSURCU2VydmVyOjpJblByb2Nlc3NJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKQotICAgIDogbV9zZXJ2ZXIoSURCU2VydmVyOjpJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9u
SUQsIHN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlcigqdGhpcykpKQotewotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7Ci0g
ICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIgPSBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6Y3JlYXRlKCp0aGlzKTsKLSAgICBtX2Nvbm5lY3Rpb25Ub0NsaWVudCA9IElEQlNlcnZlcjo6
SURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVhdGUoKnRoaXMpOwotfQotCi1JblByb2Nlc3NJREJT
ZXJ2ZXI6OkluUHJvY2Vzc0lEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKQotICAgIDogbV9zZXJ2ZXIoSURCU2VydmVy
OjpJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQsIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgc3Rv
cmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyKCp0aGlzKSkpCi17Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLSAgICByZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKLSAgICBtX2Nv
bm5lY3Rpb25Ub1NlcnZlciA9IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjpjcmVh
dGUoKnRoaXMpOwotICAgIG1fY29ubmVjdGlvblRvQ2xpZW50ID0gSURCU2VydmVyOjpJREJDb25u
ZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSgqdGhpcyk7Ci19Ci0KLUlEQkNvbm5lY3Rpb25JZGVudGlm
aWVyIEluUHJvY2Vzc0lEQlNlcnZlcjo6aWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgLy8gQW4g
aW5zdGFuY2Ugb2YgSW5Qcm9jZXNzSURCU2VydmVyIGFsd2F5cyBoYXMgYSAxOjEgcmVsYXRpb25z
aGlwIHdpdGggaXRzIGluc3RhbmNlIG9mIElEQlNlcnZlci4KLSAgICAvLyBUaGVyZWZvcmUgdGhl
IGNvbm5lY3Rpb24gaWRlbnRpZmllciBiZXR3ZWVuIHRoZSB0d28gY2FuIGFsd2F5cyBiZSAiMSIu
Ci0gICAgcmV0dXJuIFByb2Nlc3M6OmlkZW50aWZpZXIoKTsKLX0KLQotSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uVG9TZXJ2ZXImIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29ubmVjdGlvblRvU2VydmVy
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gKm1fY29ubmVjdGlvblRvU2VydmVyOwotfQotCi1JREJT
ZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgSW5Qcm9jZXNzSURCU2VydmVyOjpjb25uZWN0
aW9uVG9DbGllbnQoKSBjb25zdAotewotICAgIHJldHVybiAqbV9jb25uZWN0aW9uVG9DbGllbnQ7
Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVEYXRhYmFzZShjb25zdCBJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhXSB7
Ci0gICAgICAgIG1fc2VydmVyLT5kZWxldGVEYXRhYmFzZShyZXF1ZXN0RGF0YSk7Ci0gICAgfSk7
Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxldGVEYXRhYmFzZShjb25zdCBJ
REJSZXN1bHREYXRhJiByZXN1bHREYXRhKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7
Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWREZWxldGVEYXRhYmFzZShyZXN1bHRE
YXRhKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5EYXRhYmFz
ZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJl
cXVlc3REYXRhXSB7Ci0gICAgICAgIG1fc2VydmVyLT5vcGVuRGF0YWJhc2UocmVxdWVzdERhdGEp
OwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkT3BlbkRhdGFiYXNl
KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3Vs
dERhdGFdIHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZE9wZW5EYXRhYmFzZShy
ZXN1bHREYXRhKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEFi
b3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJvcikKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBlcnJvcl0gewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+
ZGlkQWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yKTsKLSAgICB9
KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENvbW1pdFRyYW5zYWN0aW9uKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJ
REJFcnJvciYgZXJyb3IpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
ZXJyb3JdIHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZENvbW1pdFRyYW5zYWN0
aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3IpOwotICAgIH0pOwotfQotCi12b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0
YSYgcmVzdWx0RGF0YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0gewotICAgICAgICBt
X2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQ3JlYXRlT2JqZWN0U3RvcmUocmVzdWx0RGF0YSk7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxldGVPYmplY3RTdG9y
ZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQotewotICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1
bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWREZWxldGVPYmplY3RT
dG9yZShyZXN1bHREYXRhKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
OmRpZFJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCi17
Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2
ZXItPmRpZFJlbmFtZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpOwotICAgIH0pOwotfQotCi12b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHRE
YXRhJiByZXN1bHREYXRhKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7Ci0gICAgICAg
IG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRDbGVhck9iamVjdFN0b3JlKHJlc3VsdERhdGEpOwot
ICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ3JlYXRlSW5kZXgoY29u
c3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0
YV0gewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQ3JlYXRlSW5kZXgocmVzdWx0
RGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxldGVJ
bmRleChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQotewotICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBy
ZXN1bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWREZWxldGVJbmRl
eChyZXN1bHREYXRhKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRp
ZFJlbmFtZUluZGV4KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCi17Ci0gICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHJlc3VsdERhdGFdIHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZFJl
bmFtZUluZGV4KHJlc3VsdERhdGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGlkUHV0T3JBZGQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKLXsKLSAg
ICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0gewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+
ZGlkUHV0T3JBZGQocmVzdWx0RGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpkaWRHZXRSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKLXsK
LSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0gewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZl
ci0+ZGlkR2V0UmVjb3JkKHJlc3VsdERhdGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6ZGlkR2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlv
blRvU2VydmVyLT5kaWRHZXRBbGxSZWNvcmRzKHJlc3VsdERhdGEpOwotICAgIH0pOwotfQotCi12
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0Q291bnQoY29uc3QgSURCUmVzdWx0RGF0YSYg
cmVzdWx0RGF0YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0gewotICAgICAgICBtX2Nv
bm5lY3Rpb25Ub1NlcnZlci0+ZGlkR2V0Q291bnQocmVzdWx0RGF0YSk7Ci0gICAgfSk7Ci19Ci0K
LXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxldGVSZWNvcmQoY29uc3QgSURCUmVzdWx0
RGF0YSYgcmVzdWx0RGF0YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0gewotICAgICAg
ICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkRGVsZXRlUmVjb3JkKHJlc3VsdERhdGEpOwotICAg
IH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkT3BlbkN1cnNvcihjb25zdCBJ
REJSZXN1bHREYXRhJiByZXN1bHREYXRhKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7
Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRPcGVuQ3Vyc29yKHJlc3VsdERhdGEp
OwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkSXRlcmF0ZUN1cnNv
cihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQotewotICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1
bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRJdGVyYXRlQ3Vyc29y
KHJlc3VsdERhdGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6YWJv
cnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlc291cmNlSWRlbnRp
ZmllcikKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzb3VyY2VJZGVudGlmaWVyXSB7Ci0gICAgICAgIG1f
c2VydmVyLT5hYm9ydFRyYW5zYWN0aW9uKHJlc291cmNlSWRlbnRpZmllcik7Ci0gICAgfSk7Ci19
Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHJlc291cmNlSWRlbnRpZmllcikKLXsKLSAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cmVzb3VyY2VJZGVudGlmaWVyXSB7Ci0gICAgICAgIG1fc2VydmVyLT5jb21taXRUcmFuc2FjdGlv
bihyZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3Qg
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcl0gewotICAgICAgICBtX3NlcnZl
ci0+ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICB9KTsKLX0KLQot
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXN1bHREYXRhLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8pCi17Ci0g
ICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHJlc3VsdERhdGEsIGluZm9dIHsKLSAgICAgICAgbV9zZXJ2ZXItPmNyZWF0
ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEsIGluZm8pOwotICAgIH0pOwotfQotCi12b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKLXsKLSAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgcmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZV0gewotICAgICAgICBtX3NlcnZlci0+ZGVs
ZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZSk7Ci0gICAgfSk7Ci19
Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBuZXdOYW1lKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lXSB7Ci0gICAgICAgIG1fc2VydmVyLT5yZW5hbWVP
YmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsK
LSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUo
Y29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50
aWZpZXJdIHsKLSAgICAgICAgbV9zZXJ2ZXItPmNsZWFyT2JqZWN0U3RvcmUocmVxdWVzdERhdGEs
IG9iamVjdFN0b3JlSWRlbnRpZmllcik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNv
bnN0IElEQkluZGV4SW5mbyYgaW5mbykKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIGlu
Zm9dIHsKLSAgICAgICAgbV9zZXJ2ZXItPmNyZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBpbmZvKTsK
LSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZUluZGV4KGNvbnN0
IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERh
dGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lXSB7Ci0gICAgICAgIG1fc2VydmVy
LT5kZWxldGVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5h
bWUpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6cmVuYW1lSW5kZXgo
Y29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1l
KQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBp
bmRleElkZW50aWZpZXIsIG5ld05hbWVdIHsKLSAgICAgICAgbV9zZXJ2ZXItPnJlbmFtZUluZGV4
KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3
TmFtZSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpwdXRPckFkZChj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleURhdGEmIGtleURh
dGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwgY29uc3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92
ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEs
IGtleURhdGEsIHZhbHVlLCBvdmVyd3JpdGVNb2RlXSB7Ci0gICAgICAgIG1fc2VydmVyLT5wdXRP
ckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGUpOwotICAgIH0p
OwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYgZ2V0UmVjb3JkRGF0
YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIGdldFJlY29yZERhdGFdIHsKLSAgICAg
ICAgbV9zZXJ2ZXItPmdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdl
dEFsbFJlY29yZHNEYXRhKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwgZ2V0QWxsUmVj
b3Jkc0RhdGFdIHsKLSAgICAgICAgbV9zZXJ2ZXItPmdldEFsbFJlY29yZHMocmVxdWVzdERhdGEs
IGdldEFsbFJlY29yZHNEYXRhKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6OmdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURC
S2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRh
LCBrZXlSYW5nZURhdGFdIHsKLSAgICAgICAgbV9zZXJ2ZXItPmdldENvdW50KHJlcXVlc3REYXRh
LCBrZXlSYW5nZURhdGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
ZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURC
S2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRh
LCBrZXlSYW5nZURhdGFdIHsKLSAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZVJlY29yZChyZXF1ZXN0
RGF0YSwga2V5UmFuZ2VEYXRhKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJ
REJDdXJzb3JJbmZvJiBpbmZvKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwgaW5mb10g
ewotICAgICAgICBtX3NlcnZlci0+b3BlbkN1cnNvcihyZXF1ZXN0RGF0YSwgaW5mbyk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmIGRh
dGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBkYXRhXSB7Ci0gICAgICAgIG1fc2Vy
dmVyLT5pdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBkYXRhKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykK
LXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mb10gewot
ICAgICAgICBtX3NlcnZlci0+ZXN0YWJsaXNoVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgaW5mbyk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KElEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKQotewotICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIHJl
cXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0ZWRWZXJzaW9uXSB7Ci0gICAgICAgIG1fY29ubmVjdGlv
blRvU2VydmVyLT5maXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0ZWRWZXJzaW9uKTsKLSAgICB9KTsKLX0K
LQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZFN0YXJ0VHJhbnNhY3Rpb24oY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9y
JiBlcnJvcikKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcl0g
ewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkU3RhcnRUcmFuc2FjdGlvbih0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGVycm9yKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRpZENsb3NlRnJvbVNlcnZlcihJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgSURCRXJyb3ImIGVycm9yKQotewotICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi5pZGVudGlm
aWVyKCksIGVycm9yXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRDbG9zZUZy
b21TZXJ2ZXIoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgZXJyb3IpOwotICAgIH0pOwot
fQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qg
b2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbikKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVz
dElkZW50aWZpZXIsIG9sZFZlcnNpb24sIG5ld1ZlcnNpb25dIHsKLSAgICAgICAgbV9jb25uZWN0
aW9uVG9TZXJ2ZXItPm5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKHJlcXVlc3RJZGVudGlmaWVy
LCBvbGRWZXJzaW9uLCBuZXdWZXJzaW9uKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyXSB7Ci0gICAgICAgIG1fc2VydmVyLT5kYXRhYmFzZUNvbm5lY3Rpb25QZW5k
aW5nQ2xvc2UoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7Ci0gICAgfSk7Ci19Ci0KLXZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3Qg
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllcl0gewotICAgICAgICBtX3NlcnZlci0+ZGF0YWJhc2VDb25uZWN0
aW9uQ2xvc2VkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwotICAgIH0pOwotfQotCi12
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRf
dCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyXSB7Ci0gICAgICAgIG1fc2Vy
dmVyLT5hYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElk
ZW50aWZpZXIsIGNvbnN0IEluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2
ZXIgY29ubmVjdGlvbkNsb3NlZCkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIGNvbm5lY3Rpb25DbG9zZWRdIHsKLSAgICAg
ICAgbV9zZXJ2ZXItPmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIGNvbm5lY3Rpb25DbG9zZWQpOwotICAgIH0p
OwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZChj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVl
c3REYXRhXSB7Ci0gICAgICAgIG1fc2VydmVyLT5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVl
c3REYXRhKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbmZpcm1E
aWRDbG9zZUZyb21TZXJ2ZXIodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikK
LXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcl0gewotICAgICAg
ICBtX3NlcnZlci0+Y29uZmlybURpZENsb3NlRnJvbVNlcnZlcihkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFs
bERhdGFiYXNlTmFtZXMoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBtYWluRnJhbWVPcmlnaW4s
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgdWludDY0X3QgY2FsbGJh
Y2tJRCkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWFpbkZyYW1lT3JpZ2luLCBvcGVuaW5nT3JpZ2luLCBj
YWxsYmFja0lEXSB7Ci0gICAgICAgIG1fc2VydmVyLT5nZXRBbGxEYXRhYmFzZU5hbWVzKG1fY29u
bmVjdGlvblRvU2VydmVyLT5pZGVudGlmaWVyKCksIG1haW5GcmFtZU9yaWdpbiwgb3BlbmluZ09y
aWdpbiwgY2FsbGJhY2tJRCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVzKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lELCBk
YXRhYmFzZU5hbWVzXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRBbGxE
YXRhYmFzZU5hbWVzKGNhbGxiYWNrSUQsIGRhdGFiYXNlTmFtZXMpOwotICAgIH0pOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
blByb2Nlc3NJREJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OGU3MzZhNzgwOTE5MWU0MzdiODYzYzNkYmRkYTJhYjQ4ZWUwNjVkZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwx
NDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCi0KLSNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9DbGllbnQuaCIKLSNpbmNs
dWRlICJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKLSNpbmNsdWRlICJJREJTZXJ2ZXIuaCIKLSNp
bmNsdWRlICJTdG9yYWdlUXVvdGFNYW5hZ2VyLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KLQot
bmFtZXNwYWNlIFBBTCB7Ci1jbGFzcyBTZXNzaW9uSUQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotc3RydWN0IENsaWVudE9yaWdpbjsKLQotbmFtZXNwYWNlIElEQkNsaWVudCB7Ci1jbGFz
cyBJREJDb25uZWN0aW9uVG9TZXJ2ZXI7Ci19Ci0KLW5hbWVzcGFjZSBJREJTZXJ2ZXIgewotY2xh
c3MgSURCU2VydmVyOwotfQotCi1jbGFzcyBJblByb2Nlc3NJREJTZXJ2ZXIgZmluYWwgOiBwdWJs
aWMgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZSwgcHVibGljIElEQlNl
cnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUsIHB1YmxpYyBSZWZDb3VudGVkPElu
UHJvY2Vzc0lEQlNlcnZlcj4gewotcHVibGljOgotICAgIHVzaW5nIElEQkNsaWVudDo6SURCQ29u
bmVjdGlvblRvU2VydmVyRGVsZWdhdGU6OndlYWtQdHJGYWN0b3J5OwotICAgIHVzaW5nIFdlYWtW
YWx1ZVR5cGUgPSBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlOjpXZWFr
VmFsdWVUeXBlOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxJblByb2Nlc3NJREJT
ZXJ2ZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB+SW5Qcm9jZXNzSURCU2VydmVyKCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgY29ubmVjdGlvblRvU2VydmVyKCkgY29uc3Q7Ci0gICAg
SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb25Ub0NsaWVudCgpIGNv
bnN0OwotICAgIElEQlNlcnZlcjo6SURCU2VydmVyJiBzZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZl
ci5nZXQoKTsgfQotICAgIElEQlNlcnZlcjo6SURCU2VydmVyJiBpZGJTZXJ2ZXIoKSB7IHJldHVy
biBtX3NlcnZlci5nZXQoKTsgfQotCi0gICAgLy8gSURCQ29ubmVjdGlvblRvU2VydmVyCi0gICAg
dm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYpIGZpbmFsOwotICAgIHZv
aWQgb3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJikgZmluYWw7Ci0gICAgdm9pZCBh
Ym9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYpIGZpbmFsOwotICAg
IHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1
aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImKSBmaW5hbDsKLSAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJikgZmluYWw7Ci0gICAgdm9pZCBk
ZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0U3RvcmVOYW1lKSBmaW5hbDsKLSAgICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElE
QlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG5ld05hbWUpIGZpbmFsOwotICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgZmluYWw7Ci0gICAg
dm9pZCBjcmVhdGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkluZGV4SW5m
byYpIGZpbmFsOwotICAgIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKSBm
aW5hbDsKLSAgICB2b2lkIHJlbmFtZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbmV3TmFtZSkgZmluYWw7Ci0gICAgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIGNvbnN0IEluZGV4
ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKSBmaW5hbDsKLSAgICB2b2lkIGdldFJlY29y
ZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldFJlY29yZERhdGEmKSBmaW5hbDsK
LSAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJH
ZXRBbGxSZWNvcmRzRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVx
dWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKSBmaW5hbDsKLSAgICB2b2lkIGRlbGV0
ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpIGZp
bmFsOwotICAgIHZvaWQgb3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElE
QkN1cnNvckluZm8mKSBmaW5hbDsKLSAgICB2b2lkIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVx
dWVzdERhdGEmLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYpIGZpbmFsOwotICAgIHZvaWQg
ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJikgZmluYWw7Ci0gICAgdm9pZCBkYXRhYmFzZUNv
bm5lY3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
cikgZmluYWw7Ci0gICAgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikgZmluYWw7Ci0gICAgdm9pZCBhYm9ydE9wZW5BbmRV
cGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRp
ZmllciwgY29uc3QgSW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlciA9
IEluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXI6Ok5vKSBmaW5hbDsK
LSAgICB2b2lkIG9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgSURCUmVxdWVzdERhdGEmKSBm
aW5hbDsKLSAgICB2b2lkIGNvbmZpcm1EaWRDbG9zZUZyb21TZXJ2ZXIodWludDY0X3QgZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllcikgZmluYWw7Ci0gICAgdm9pZCBnZXRBbGxEYXRhYmFzZU5h
bWVzKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgbWFpbkZyYW1lT3JpZ2luLCBjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmlnaW4sIHVpbnQ2NF90IGNhbGxiYWNrSUQpIGZpbmFs
OwotCi0gICAgLy8gSURCQ29ubmVjdGlvblRvQ2xpZW50Ci0gICAgSURCQ29ubmVjdGlvbklkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgZGlkRGVsZXRlRGF0YWJh
c2UoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGlkT3BlbkRhdGFiYXNl
KGNvbnN0IElEQlJlc3VsdERhdGEmKSBmaW5hbDsKLSAgICB2b2lkIGRpZEFib3J0VHJhbnNhY3Rp
b24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNv
bnN0IElEQkVycm9yJikgZmluYWw7Ci0gICAgdm9pZCBkaWRDb21taXRUcmFuc2FjdGlvbihjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURC
RXJyb3ImKSBmaW5hbDsKLSAgICB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJl
c3VsdERhdGEmKSBmaW5hbDsKLSAgICB2b2lkIGRpZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElE
QlJlc3VsdERhdGEmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlbmFtZU9iamVjdFN0b3JlKGNvbnN0
IElEQlJlc3VsdERhdGEmKSBmaW5hbDsKLSAgICB2b2lkIGRpZENsZWFyT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGlkQ3JlYXRlSW5kZXgoY29uc3Qg
SURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGlkRGVsZXRlSW5kZXgoY29uc3QgSURC
UmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVuYW1lSW5kZXgoY29uc3QgSURCUmVz
dWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUHV0T3JBZGQoY29uc3QgSURCUmVzdWx0RGF0
YSYpIGZpbmFsOwotICAgIHZvaWQgZGlkR2V0UmVjb3JkKGNvbnN0IElEQlJlc3VsdERhdGEmKSBm
aW5hbDsKLSAgICB2b2lkIGRpZEdldEFsbFJlY29yZHMoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZp
bmFsOwotICAgIHZvaWQgZGlkR2V0Q291bnQoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwot
ICAgIHZvaWQgZGlkRGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlc3VsdERhdGEmKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZE9wZW5DdXJzb3IoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZv
aWQgZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJikgZmluYWw7Ci0gICAgdm9p
ZCBmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KElEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uJiwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwg
dWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikgZmluYWw7Ci0gICAgdm9pZCBkaWRTdGFydFRyYW5z
YWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBJREJFcnJvciYpIGZpbmFsOwotICAgIHZvaWQgZGlkQ2xvc2VGcm9tU2VydmVyKElE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURCRXJyb3ImKSBm
aW5hbDsKLSAgICB2b2lkIG5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVp
bnQ2NF90IG5ld1ZlcnNpb24pIGZpbmFsOwotICAgIHZvaWQgZGlkR2V0QWxsRGF0YWJhc2VOYW1l
cyh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGF0YWJhc2VOYW1l
cykgZmluYWw7Ci0KLSAgICB2b2lkIHJlZigpIG92ZXJyaWRlIHsgUmVmQ291bnRlZDxJblByb2Nl
c3NJREJTZXJ2ZXI+OjpyZWYoKTsgfQotICAgIHZvaWQgZGVyZWYoKSBvdmVycmlkZSB7IFJlZkNv
dW50ZWQ8SW5Qcm9jZXNzSURCU2VydmVyPjo6ZGVyZWYoKTsgfQotCi0gICAgU3RvcmFnZVF1b3Rh
TWFuYWdlciogcXVvdGFNYW5hZ2VyKGNvbnN0IENsaWVudE9yaWdpbiYpOwotCi1wcml2YXRlOgot
ICAgIGV4cGxpY2l0IEluUHJvY2Vzc0lEQlNlcnZlcihQQUw6OlNlc3Npb25JRCk7Ci0gICAgSW5Q
cm9jZXNzSURCU2VydmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGly
ZWN0b3J5UGF0aCk7Ci0KLSAgICBSZWY8SURCU2VydmVyOjpJREJTZXJ2ZXI+IG1fc2VydmVyOwot
ICAgIFJlZlB0cjxJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcj4gbV9jb25uZWN0aW9u
VG9TZXJ2ZXI7Ci0gICAgUmVmUHRyPElEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50PiBt
X2Nvbm5lY3Rpb25Ub0NsaWVudDsKLQotICAgIEhhc2hNYXA8Q2xpZW50T3JpZ2luLCBSZWZQdHI8
U3RvcmFnZVF1b3RhTWFuYWdlcj4+IG1fcXVvdGFNYW5hZ2VyczsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay5jcHAKaW5kZXggOGFlM2QxNTFlOWZiN2FlMTlkMWE5MTAyZTNkZDk4YWI5MTMwM2ZmOS4uMmRk
NmNjM2M4ZTA2NjVhYWU2ZmU4ZTE4MmYzMzYxOTgyYWI4ZTdkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCkBA
IC0zMywxMiArMzMsMTUgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50
LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVk
ZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2lu
Y2x1ZGUgIkpTT3ZlcmNvbnN0cmFpbmVkRXJyb3IuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAj
aW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRl
eHQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIk92ZXJjb25zdHJh
aW5lZEVycm9yLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0hUTUxWaWRlb0VsZW1lbnRQaWN0dXJlSW5QaWN0
dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGljdHVyZWlucGljdHVyZS9IVE1MVmlk
ZW9FbGVtZW50UGljdHVyZUluUGljdHVyZS5jcHAKaW5kZXggMDJiNzNmYjEyMzYxZTcyZDdkZWQy
MDRjNmMwMjFmMDEzOGE2ZjI5Yy4uNmZkOGQyNThjYmFlNDhiODliYjNkYWI5NTBjNjI1OWJjNmJi
N2JiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJl
L0hUTUxWaWRlb0VsZW1lbnRQaWN0dXJlSW5QaWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvSFRNTFZpZGVvRWxlbWVudFBpY3R1cmVJblBpY3R1
cmUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJF
X0FQSSkKIAorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU1Bp
Y3R1cmVJblBpY3R1cmVXaW5kb3cuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOTE3NDg3ZTExZDNhM2E2
ZGVmZTU0ZWQwN2I3ZmI4YmNlOTc5ZGZmMy4uNWZlNzIzYjRlNTEwNDQxODUzN2M2YjgyOTc2MGQ4
NjBmM2Y5M2YyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE0Miw3ICsxNDIsNiBAQCBNb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmNwcAogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlJlc3VsdERhdGEuY3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25J
bmZvLmNwcAotTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAK
IE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JbmRleEtleS5jcHAKIAogTW9kdWxlcy9tZWRpYWNh
cGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGllcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MzAzZDdkNWQ0OTEyZDI5NTVi
ZTEwNGI3MzM2YmUxY2JiY2E4MDUwLi4yMmU0ZjcxNjRmNjkxNTMyZTEzMDljZTk3M2M0N2VhNGU3
ZDgwNDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMzg4LDcgKzEzODgsNiBAQAogCQk1MTA1OEFFMjFENjdDMjI5MDA5QTUz
OEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEwNThBREExRDY3OTI1NzAwOUE1MzhDIC8qIE1vY2tHYW1lcGFk
UHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTA1RjA2OTFENEJBOUQ5MDBGQjgwQkMgLyogSURCR2V0UmVjb3JkRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNUYwNjgxRDRCQTU0
MTAwRkI4MEJDIC8qIElEQkdldFJlY29yZERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTA2RDdCRTE4QkRCNzZGMDAwQUIxNjYgLyogQ29u
dGV4dE1lbnVDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTA2RDdCQzE4QkRCNzZGMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTEwQTU4
RTUxQkFBNDBCMTAwQzE5MjgyIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQTU4RTMxQkFBNDBBRTAwQzE5Mjgy
IC8qIEluUHJvY2Vzc0lEQlNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTUxMEE1OEZBMUJBQ0M3RjIwMEMxOTI4MiAvKiBJREJSZXF1ZXN0
RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEw
QTU4RjYxQkFDQzRBNTAwQzE5MjgyIC8qIElEQlJlcXVlc3REYXRhLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEwRDRBMzQxMDMxNjVFRTAwNDlF
QTU0IC8qIFNvY2tldFN0cmVhbUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEyRTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFt
RXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MTBENEEzNzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzMTEwMzE2NUVF
MDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgwNDQsOCArODA0Myw2IEBACiAJCTUxMDVGMDZB
MUQ0QkIwQkMwMEZCODBCQyAvKiBJREJHZXRSZWNvcmREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkdldFJlY29yZERhdGEuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTA2RDdCQjE4QkRCNzZGMDAwQUIxNjYgLyogQ29udGV4dE1lbnVD
b250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRleHRN
ZW51Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDZEN0JDMThC
REI3NkYwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29udGV4dE1lbnVDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTUxMEE1OEUyMUJBQTQwQUUwMEMxOTI4MiAvKiBJblByb2Nlc3NJREJTZXJ2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5Qcm9jZXNzSURCU2Vy
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTEwQTU4RTMxQkFBNDBBRTAw
QzE5MjgyIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJblByb2Nlc3NJREJTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTEwQTU4RUYxQkFCNzIwRjAwQzE5MjgyIC8qIElEQlNlcnZlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTBBNThGMDFCQUI3MjBGMDBDMTkyODIgLyogSURCU2VydmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlNlcnZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTBBNThGNTFCQUNDNEE1MDBDMTkyODIgLyogSURCUmVxdWVzdERh
dGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCUmVxdWVzdERh
dGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg5MjQsOCArMTg5MjEsNiBA
QAogCQkJCTUxOThGN0FCMUJCREQzRTMwMEUyQ0M1RiAvKiBJREJUcmFuc2FjdGlvbkluZm8uaCAq
LywKIAkJCQk1MTcxMzhFRDFCRUQxRDE3MDAwRDVGMDEgLyogSW5kZXhLZXkuY3BwICovLAogCQkJ
CTUxNzEzOEVFMUJFRDFEMTcwMDBENUYwMSAvKiBJbmRleEtleS5oICovLAotCQkJCTUxMEE1OEUy
MUJBQTQwQUUwMEMxOTI4MiAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuY3BwICovLAotCQkJCTUxMEE1
OEUzMUJBQTQwQUUwMEMxOTI4MiAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuaCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gc2hhcmVkOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMwMjM1LDcg
KzMwMjMwLDYgQEAKIAkJCQlCQ0VBNDg1QTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJv
eC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMwMTA3MDExOTI1OTRERjAwOEE0MjAxIC8qIElubGlu
ZVRleHRCb3hTdHlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkYxQ0MxREUyMjVGOEI0OTAwNzIw
QUQyIC8qIElubGluZVRleHRJdGVtLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTBBNThFNTFCQUE0
MEIxMDBDMTkyODIgLyogSW5Qcm9jZXNzSURCU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQky
RUI3Njc1NzFEQTE5QkRGMDAzRTIzQjUgLyogSW5wdXRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTUyRUZERjQyMTEyODc1QTAwQUQyODJBIC8qIElucHV0TW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzdFMzUyNEQxMjQ1MEM2NjAwQkFGNUQ5IC8qIElucHV0VHlwZS5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDYwMGVmN2I2YmFj
ODZjYTZmNGMxNWExZmNmMDYxODlhZDk4NTkzNGYuLjc3OWU5MTRhOWVjYjdjYTRhYzVkMWFjOTBm
YmMwYzBhNmFmODUwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBA
IC01MCw3ICs1MCw3IEBACiAjaW5jbHVkZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCi0jaW5j
bHVkZSAiSW5Qcm9jZXNzSURCU2VydmVyLmgiCisjaW5jbHVkZSAiSURCQ29ubmVjdGlvblRvU2Vy
dmVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiTGliV2ViUlRD
UHJvdmlkZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKQEAgLTEyMywx
MCArMTIzLDQ2IEBAIGNsYXNzIEVtcHR5Q29udGV4dE1lbnVDbGllbnQgZmluYWwgOiBwdWJsaWMg
Q29udGV4dE1lbnVDbGllbnQgewogCiBjbGFzcyBFbXB0eURhdGFiYXNlUHJvdmlkZXIgZmluYWwg
OiBwdWJsaWMgRGF0YWJhc2VQcm92aWRlciB7CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
Ci0gICAgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXImIGlkYkNvbm5lY3Rpb25Ub1Nl
cnZlckZvclNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkgZmluYWwKKyAg
ICBzdHJ1Y3QgRW1wdHlJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxldGVnYXRlIGZpbmFsIDogcHVi
bGljIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUgeworICAgICAgICBJ
REJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
eyB9OyB9CisgICAgICAgIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEm
KSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERh
dGEmKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBhYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGNvbW1pdFRyYW5zYWN0
aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYpIGZpbmFsIHsgfQorICAgICAgICB2b2lk
IGRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90LCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBjcmVhdGVP
YmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5m
byYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgcmVuYW1l
T2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCwgY29uc3QgU3RyaW5n
JikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIHVpbnQ2NF90KSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBjcmVhdGVJbmRleChj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkluZGV4SW5mbyYpIGZpbmFsIHsgfQorICAg
ICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3QsIGNv
bnN0IFN0cmluZyYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIHJlbmFtZUluZGV4KGNvbnN0IElE
QlJlcXVlc3REYXRhJiwgdWludDY0X3QsIHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmKSBmaW5hbCB7
IH0KKyAgICAgICAgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElE
QktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVP
dmVyd3JpdGVNb2RlKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURC
UmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJikgZmluYWwgeyB9CisgICAgICAg
IHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFs
bFJlY29yZHNEYXRhJikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgSURC
UmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKSBmaW5hbCB7IH0KKyAgICAgICAg
dm9pZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGl0
ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29y
RGF0YSYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2
NF90LCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBk
YXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3QpIGZpbmFsIHsgfQorICAgICAg
ICB2b2lkIGRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCkgZmluYWwgeyB9CisgICAg
ICAgIHZvaWQgYWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCwgY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgZGlkRmlyZVZlcnNpb25D
aGFuZ2VFdmVudCh1aW50NjRfdCwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3Qg
SW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlcikgZmluYWwgeyB9Cisg
ICAgICAgIHZvaWQgb3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBJREJSZXF1ZXN0RGF0YSYp
IGZpbmFsIHsgfQorICAgICAgICB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXMoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgdWludDY0X3QpIGZpbmFs
IHsgfQorICAgICAgICB+RW1wdHlJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxldGVnYXRlKCkgeyB9
CisgICAgICAgIAorICAgICAgICB2b2lkIGNvbmZpcm1EaWRDbG9zZUZyb21TZXJ2ZXIodWludDY0
X3QpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIHJlZigpIHsgfQorICAgICAgICB2b2lkIGRlcmVm
KCkgeyB9CisgICAgfTsKKworICAgIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyJiBp
ZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNzaW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJikgZmlu
YWwKICAgICB7Ci0gICAgICAgIHN0YXRpYyBhdXRvJiBzaGFyZWRDb25uZWN0aW9uID0gSW5Qcm9j
ZXNzSURCU2VydmVyOjpjcmVhdGUoc2Vzc2lvbklEKS5sZWFrUmVmKCk7Ci0gICAgICAgIHJldHVy
biBzaGFyZWRDb25uZWN0aW9uLmNvbm5lY3Rpb25Ub1NlcnZlcigpOworICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8RW1wdHlJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxldGVnYXRlPiBlbXB0
eURlbGVnYXRlOworICAgICAgICBzdGF0aWMgYXV0byYgZW1wdHlDb25uZWN0aW9uID0gSURCQ2xp
ZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZShlbXB0eURlbGVnYXRlLmdldCgpKS5s
ZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBlbXB0eUNvbm5lY3Rpb247CiAgICAgfQogI2VuZGlm
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggN2YwZTAwZGQyOGRkOWY5YTE0MDQwNjc2NDZmNDYw
NWE5MjRjZTU3My4uMjAzZjVhZTliNDI4NGZlMTBkZWEyZTRmOGI2ZWRiMDE0MjlhZDA4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCkBAIC0xNTAsNyArMTUwLDYgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQogI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgotI2luY2x1ZGUg
IkluUHJvY2Vzc0lEQlNlcnZlci5oIgogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFD
VElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2Vi
RGF0YWJhc2VQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9X
ZWJEYXRhYmFzZVByb3ZpZGVyLmgKaW5kZXggZDRlN2YxY2YwNDAyY2M5NzJhZWM2MWFiMTIwZGIw
ODM5NGIyNTBkZi4uOGU5ZjI4Yjc1YzNkOGU1OGVkOGYxMmVmMWVkOGVmNGQyNDZjOTRjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJEYXRhYmFzZVBy
b3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJEYXRh
YmFzZVByb3ZpZGVyLmgKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgV2ViRGF0YWJhc2VQcm92
aWRlcl9oCiAKICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlUHJvdmlkZXIuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0luUHJvY2Vzc0lEQlNlcnZlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ01ha2VMaXN0cy50eHQKaW5kZXgg
MGMzZjUyNDhlMDRiNDEyN2I2YmZkYjYwNTlkNWNlOGYzZWMwYTk3Zi4uMDI2NjViZDYyNDZhMjYx
Y2EzYTc0NzAzNzk0ZWFkMWNhOWZjMTI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NNYWtlTGlzdHMudHh0
CkBAIC0zLDYgKzMsNyBAQCBpbmNsdWRlKFdlYktpdENvbW1vbikKIHNldF9wcm9wZXJ0eShESVJF
Q1RPUlkgLiBQUk9QRVJUWSBGT0xERVIgIldlYktpdExlZ2FjeSIpCiAKIHNldChXZWJLaXRMZWdh
Y3lfU09VUkNFUworICAgIFN0b3JhZ2UvSW5wcm9jZXNzSURCU2VydmVyLmNwcAogICAgIFN0b3Jh
Z2UvU3RvcmFnZUFyZWFJbXBsLmNwcAogICAgIFN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAog
ICAgIFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5jcHAKaW5kZXggN2YwMzhmM2Fj
YzhlOTllZDk4NTNjMmYyZmRiNDczNTQxYjhkMGU3OC4uYzJmNzFiYWYzZDE3ZjRlY2FjMDNlZGFm
ZjdjOTIzNmYzYzgyMWVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L1dlYkRhdGFiYXNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcApAQCAtNDYsMTQgKzQ2LDE0IEBAIFdlYkRhdGFiYXNl
UHJvdmlkZXI6On5XZWJEYXRhYmFzZVByb3ZpZGVyKCkKIFdlYkNvcmU6OklEQkNsaWVudDo6SURC
Q29ubmVjdGlvblRvU2VydmVyJiBXZWJEYXRhYmFzZVByb3ZpZGVyOjppZGJDb25uZWN0aW9uVG9T
ZXJ2ZXJGb3JTZXNzaW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCiB7CiAgICAg
cmV0dXJuIG1faWRiU2VydmVyTWFwLmVuc3VyZShzZXNzaW9uSUQsIFsmc2Vzc2lvbklEXSB7Ci0g
ICAgICAgIHJldHVybiBzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFdlYkNvcmU6OkluUHJvY2Vz
c0lEQlNlcnZlcjo6Y3JlYXRlKHNlc3Npb25JRCkgOiBXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2
ZXI6OmNyZWF0ZShzZXNzaW9uSUQsIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeVBhdGgoKSk7Cisg
ICAgICAgIHJldHVybiBzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IEluUHJvY2Vzc0lEQlNlcnZl
cjo6Y3JlYXRlKHNlc3Npb25JRCkgOiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9u
SUQsIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeVBhdGgoKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZh
bHVlLT5jb25uZWN0aW9uVG9TZXJ2ZXIoKTsKIH0KIAogdm9pZCBXZWJEYXRhYmFzZVByb3ZpZGVy
OjpkZWxldGVBbGxEYXRhYmFzZXMoKQogewogICAgIGZvciAoYXV0byYgc2VydmVyIDogbV9pZGJT
ZXJ2ZXJNYXAudmFsdWVzKCkpCi0gICAgICAgIHNlcnZlci0+aWRiU2VydmVyKCkuY2xvc2VBbmRE
ZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW10geyB9
KTsKKyAgICAgICAgc2VydmVyLT5zZXJ2ZXIoKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlm
aWVkU2luY2UoLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbXSB7IH0pOwogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5oCmlu
ZGV4IGQ2NjdiODYzMTIyOTM5ZDk0YzhiOTRjM2JjZmExNTY5ODI5NGU4NmYuLmFkOWNiNGYwOGZi
YjgwNTJlNjdhMDA2YTcxZjRmYzc1MDg1ZTRkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuaApAQCAtMzEsNyArMzEsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotI2lu
Y2x1ZGUgPFdlYkNvcmUvSW5Qcm9jZXNzSURCU2VydmVyLmg+CisjaW5jbHVkZSAiSW5Qcm9jZXNz
SURCU2VydmVyLmgiCiAjZW5kaWYKIAogY2xhc3MgV2ViRGF0YWJhc2VQcm92aWRlciBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpEYXRhYmFzZVByb3ZpZGVyIHsKQEAgLTUyLDYgKzUyLDYgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgU3RyaW5nIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeVBhdGgoKTsK
IAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9u
SUQsIFJlZlB0cjxXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI+PiBtX2lkYlNlcnZlck1hcDsK
KyAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPj4g
bV9pZGJTZXJ2ZXJNYXA7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1dlYktpdExlZ2FjeS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjZTZl
YjM2MzFjOTY4NjczNTMwMDQ3YzZlZDQwZjg4Mzc1NmM3YzBlLi40MWI5NDVjOTBjMTZiNjFmODYz
ZjU0Y2NlYTVmNGFjMTk5Y2NkZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YktpdExlZ2FjeS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIyNyw2ICsy
MjcsOCBAQAogCQk5MzRDMTE2NzBEODcxMEJCMDBDMzJBQkQgLyogV2ViRHluYW1pY1Njcm9sbEJh
cnNWaWV3SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzNEMxMTY2MEQ4NzEwQkIwMEMzMkFCRCAvKiBXZWJEeW5hbWljU2Nyb2xsQmFyc1Zp
ZXdJbnRlcm5hbC5oICovOyB9OwogCQk5MzRDNEE5MTBGMDE0MDZDMDA5MzcyQzAgLyogV2ViTlNP
YmplY3RFeHRyYXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzRDNEE5MDBGMDE0MDZDMDA5MzcyQzAgLyogV2ViTlNPYmplY3RFeHRyYXMubW0gKi87
IH07CiAJCTkzNEM0QUEwMEYwMTQxRjcwMDkzNzJDMCAvKiBXZWJSZXNvdXJjZUludGVybmFsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRDNEE5RjBG
MDE0MUY3MDA5MzcyQzAgLyogV2ViUmVzb3VyY2VJbnRlcm5hbC5oICovOyB9OworCQk5MzY0MDA2
RTIzOTk2RTgxMDAxRTE4NUUgLyogSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNjQwMDZDMjM5OTZFODAwMDFFMTg1
RSAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuY3BwICovOyB9OworCQk5MzY0MDA2RjIzOTk2RTgxMDAx
RTE4NUUgLyogSW5Qcm9jZXNzSURCU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzY0MDA2RDIzOTk2RTgxMDAxRTE4NUUgLyogSW5Qcm9jZXNz
SURCU2VydmVyLmggKi87IH07CiAJCTkzNkEyREU4MEZEMkQwODAwMEQzMTJEQiAvKiBXZWJUZXh0
Q29tcGxldGlvbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzZBMkRFNzBGRDJEMDgwMDBEMzEyREIgLyogV2ViVGV4dENvbXBsZXRp
b25Db250cm9sbGVyLm1tICovOyB9OwogCQk5MzZBMkRFQTBGRDJEMDg0MDBEMzEyREIgLyogV2Vi
VGV4dENvbXBsZXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzZBMkRFOTBGRDJEMDg0MDBEMzEyREIgLyogV2ViVGV4dENvbXBs
ZXRpb25Db250cm9sbGVyLmggKi87IH07CiAJCTkzOTFGMjc1MTIxQjM4QkQwMEVCRjdFOCAvKiBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzkxRjI3MzEyMUIzOEJEMDBFQkY3RTggLyogV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5oICovOyB9OwpAQCAtMTAyNCw2ICsxMDI2LDggQEAKIAkJOTM0QzExNjYw
RDg3MTBCQjAwQzMyQUJEIC8qIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlld0ludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlld0lu
dGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNEM0QTkwMEYwMTQwNkMw
MDkzNzJDMCAvKiBXZWJOU09iamVjdEV4dHJhcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYk5TT2JqZWN0RXh0cmFzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzRDNEE5RjBGMDE0MUY3MDA5MzcyQzAgLyogV2ViUmVzb3VyY2VJbnRlcm5h
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUludGVybmFs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNjQwMDZDMjM5OTZFODAwMDFFMTg1
RSAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gSW5Qcm9jZXNzSURCU2VydmVyLmNwcDsgcGF0aCA9IFN0b3JhZ2UvSW5Qcm9jZXNz
SURCU2VydmVyLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk5MzY0MDA2RDIz
OTk2RTgxMDAxRTE4NUUgLyogSW5Qcm9jZXNzSURCU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEluUHJvY2Vzc0lEQlNlcnZlci5oOyBwYXRoID0gU3RvcmFnZS9JblBy
b2Nlc3NJREJTZXJ2ZXIuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk5MzZBMkRF
NzBGRDJEMDgwMDBEMzEyREIgLyogV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVGV4dENvbXBsZXRpb25Db250
cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzZBMkRFOTBGRDJEMDg0
MDBEMzEyREIgLyogV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkxRjI3MzEyMUIzOEJEMDBFQkY3RTggLyogV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xODMzLDYgKzE4MzcsOCBAQAogCQk1MTFGM0ZDMzBDRUNDN0UyMDA4NTI1NjUgLyogU3RvcmFn
ZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTM2NDAw
NkMyMzk5NkU4MDAwMUUxODVFIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5jcHAgKi8sCisJCQkJOTM2
NDAwNkQyMzk5NkU4MTAwMUUxODVFIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5oICovLAogCQkJCTFB
NkIzMTI0MUE1MUYzQTkwMDQyMjk3NSAvKiBTdG9yYWdlQXJlYUltcGwuY3BwICovLAogCQkJCTFB
NkIzMTI1MUE1MUYzQTkwMDQyMjk3NSAvKiBTdG9yYWdlQXJlYUltcGwuaCAqLywKIAkJCQkxQTZC
MzEyNjFBNTFGM0E5MDA0MjI5NzUgLyogU3RvcmFnZUFyZWFTeW5jLmNwcCAqLywKQEAgLTI4ODEs
NiArMjg4Nyw3IEBACiAJCQkJOTNENDM3OTkxRDU3QUJFRjAwQUI4NUVBIC8qIEV4Y2VwdGlvbkhh
bmRsZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTYwNTE5NDE3NTAyQTVEMDBCQzYyRjUgLyog
SGlzdG9yeVByb3BlcnR5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4REVENTAwRUU4OEI4
QTAwRjI1MDIyIC8qIEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmggaW4gSGVhZGVycyAqLywK
KwkJCQk5MzY0MDA2RjIzOTk2RTgxMDAxRTE4NUUgLyogSW5Qcm9jZXNzSURCU2VydmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMTBDMUQzMjE4MjAyRkM1MDAzNjg4M0EgLyogTWVtb3J5TWVhc3Vy
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjVDRUEwRURERTFGRTAwOEQ4ODNEIC8qIE5ldHNj
YXBlUGx1Z2luSG9zdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUY1Q0VDMEVEREUx
RkUwMDhEODgzRCAvKiBOZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zNDAyLDYgKzM0MDksNyBAQAogCQkJCTVDOUE0RTUzMjJERTQ2MjcwMDdEQjM1MyAvKiBET01V
SUtpdEV4dGVuc2lvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTYwNTE5MzE3NTAyQTVEMDBC
QzYyRjUgLyogSGlzdG9yeVByb3BlcnR5TGlzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBOERF
RDUxMEVFODhCOEEwMEYyNTAyMiAvKiBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTkzNjQwMDZFMjM5OTZFODEwMDFFMTg1RSAvKiBJblByb2Nlc3NJREJT
ZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEwQzFEMzMxODIwMkZDNTAwMzY4ODNBIC8q
IE1lbW9yeU1lYXN1cmUubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUFGNUNFQjBFRERFMUZFMDA4
RDg4M0QgLyogTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTFBQUY1Q0VEMEVEREUxRkUwMDhEODgzRCAvKiBOZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbSBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKaW5kZXggYTMwMjBkYTY3NDUyMTczNmI1
NjhiMWZhZDNjNTJjZDc5MzFjYjBhOS4uYTNhZDY5ZTc1NWY1MTMyMzBhZTk1NGNhMTU3NTA3MjM3
ZGJkYTBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQ
cmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC0yMDUsNiArMjA1LDcgQEAKICNkZWZp
bmUgV2ViS2l0RmV0Y2hBUElLZWVwQWxpdmVFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdEZl
dGNoQVBJS2VlcEFsaXZlRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0V2ViQW5pbWF0aW9uc0NTU0lu
dGVncmF0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRXZWJBbmltYXRpb25zQ1NTSW50
ZWdyYXRpb25FbmFibGVkIgogI2RlZmluZSBXZWJLaXRDU1NTaGFkb3dQYXJ0c0VuYWJsZWRQcmVm
ZXJlbmNlS2V5IEAiV2ViS2l0Q1NTU2hhZG93UGFydHNFbmFibGVkIgorI2RlZmluZSBXZWJLaXRX
ZWJTUUxFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdFdlYlNRTEVuYWJsZWRQcmVmZXJlbmNl
S2V5IgogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKIC8vIFRoZXNlIGFyZSBwcml2YXRlIGJvdGgg
YmVjYXVzZSBjYWxsZXJzIHNob3VsZCBiZSB1c2luZyB0aGUgY292ZXIgbWV0aG9kcyBhbmQgYmVj
YXVzZSB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VzLm1tCmluZGV4IDA1ZDAzZTAxMjQ4NzkyY2NlZjU3ZjllNzVkYWU4MDA0OTJkZjY0ZGIu
LjIyZmY5MzQ1NzljYjljNDA4NGVkMjA2MTkxZDU0ZTdjZDkyZmY4NTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQpAQCAtMzYxMiw2
ICszNjEyLDE2IEBAIC0gKHZvaWQpc2V0UmVtb3RlUGxheWJhY2tFbmFibGVkOihCT09MKXJlbW90
ZVBsYXliYWNrRW5hYmxlZAogewogICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6cmVtb3RlUGxheWJh
Y2tFbmFibGVkIGZvcktleTpXZWJLaXRSZW1vdGVQbGF5YmFja0VuYWJsZWRQcmVmZXJlbmNlS2V5
XTsKIH0KKworLSAoQk9PTCl3ZWJTUUxFbmFibGVkCit7CisgICAgcmV0dXJuIFtzZWxmIF9ib29s
VmFsdWVGb3JLZXk6V2ViS2l0V2ViU1FMRW5hYmxlZFByZWZlcmVuY2VLZXldOworfQorCistICh2
b2lkKXNldFdlYlNRTEVuYWJsZWQ6KEJPT0wpd2ViU1FMRW5hYmxlZAoreworICAgIFtzZWxmIF9z
ZXRCb29sVmFsdWU6d2ViU1FMRW5hYmxlZCBmb3JLZXk6V2ViS2l0V2ViU1FMRW5hYmxlZFByZWZl
cmVuY2VLZXldOworfQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVyZW5jZXMgKFdl
YkludGVybmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggMjlkNzBlZDk2MjI3ZDgzY2E1YzI0MDUxZmQ5
OGZhNzVmMTVjZWJlOC4uNGNiZDNmYWI5ODRmNTQxYjI1YmE4YzlmMTZkMTI4YTViYTFiMzA5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
c1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VzUHJpdmF0ZS5oCkBAIC02MzAsNiArNjMwLDkgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJQ
cmVmZXJlbmNlc0NhY2hlTW9kZWxDaGFuZ2VkSW50ZXJuYWxOb3RpZmljYXRpb24gV0VCS0lUX0RF
UFIKIC0gKHZvaWQpc2V0Q1NTU2hhZG93UGFydHNFbmFibGVkOihCT09MKWZsYWc7CiAtIChCT09M
KWNzc1NoYWRvd1BhcnRzRW5hYmxlZDsKIAorLSAodm9pZClzZXRXZWJTUUxFbmFibGVkOihCT09M
KWZsYWc7CistIChCT09MKXdlYlNRTEVuYWJsZWQ7CisKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBC
T09MIHZpc3VhbFZpZXdwb3J0QVBJRW5hYmxlZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09M
IENTU09NVmlld1Njcm9sbGluZ0FQSUVuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9P
TCBsYXJnZUltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWQ7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTYzZjg0NmJlMTZkZTM4NDYzNTg0ZjhkOGYy
YTJkODg5Mjg5Yzg3MC4uMjYxOWViZjVmMzkwYTgyOGFkZTMwYWE1Mzg5MGE4NjdkMzU5MWE4ZCAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDE5LTEyLTA1ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgor
CisgICAgICAgIERpc2FibGUgV2ViU1FMIGV2ZXJ5d2hlcmUgYnkgZGVmYXVsdCBleGNlcHQgaW4g
dGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NDkwNworCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICBLZWVw
IHRlc3QgY292ZXJhZ2Ugb2YgV2ViU1FMIGluIFdlYktpdExlZ2FjeSBmb3Igbm93LgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAocmVz
ZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyk6CisKIDIwMTktMTItMDUgIHlvdWVu
biBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIGluc3BlY3Rvci9wYWdlL292
ZXJyaWRlU2V0dGluZy1Nb2NrQ2FwdHVyZURldmljZXNFbmFibGVkLmh0bWwgaXMgZmFpbGluZyBh
ZnRlciByZW1vdmFsIG9mIGludGVybmFscy5zZXRNb2NrTWVkaWFDYXB0dXJlRGV2aWNlc0VuYWJs
ZWQgQVBJCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXgg
Y2NmZmUwNTVkMzgzNmIyYzFmN2NkMGU0OWNkODAxMDkyNTA3OTdmNC4uNDhiZGE4NjBlMzViMTlj
NmNiYzU4MjdiMDBjN2UzZGVkOTBjYjk3ZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZS5tbQpAQCAtMTAwNiw2ICsxMDA2LDggQEAgc3RhdGljIHZvaWQgcmVzZXRX
ZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcygpCiAKICAgICBwcmVmZXJlbmNlcy5zZWxl
Y3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCA9IFlFUzsKIAorICAgIFtwcmVmZXJl
bmNlcyBzZXRXZWJTUUxFbmFibGVkOllFU107CisKICAgICBbV2ViUHJlZmVyZW5jZXMgX2NsZWFy
TmV0d29ya0xvYWRlclNlc3Npb25dOwogICAgIFtXZWJQcmVmZXJlbmNlcyBfc2V0Q3VycmVudE5l
dHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5Ok5TSFRUUENvb2tpZUFjY2VwdFBv
bGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluXTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384959</attachid>
            <date>2019-12-05 14:49:01 -0800</date>
            <delta_ts>2019-12-05 14:51:12 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-204896-20191205144900.patch</filename>
            <type>text/plain</type>
            <size>84262</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjUyZjhiNzA0Yzk3MWY1
NzQ5YTBmNDI3NzBlYzc1NDBiZGRkYTM5ZS4uNmYxM2QxNzkyY2FhYjVmMzU1YjgwNWU0ZmY1OTA4
ZDhhZWEwZWUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTEyLTA1ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgSW5Qcm9jZXNzSURC
U2VydmVyIHRvIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA0ODk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2Ugb25seSB1c2UgSW5Qcm9jZXNzSURCU2VydmVyIGluIFdlYktpdExl
Z2FjeSBub3cuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogSGVh
ZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmg6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5o
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2suY3BwOgorICAgICAgICAqIE1vZHVsZXMvcGljdHVyZWlucGljdHVyZS9IVE1MVmlkZW9FbGVt
ZW50UGljdHVyZUluUGljdHVyZS5jcHA6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9F
bXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisKIDIwMTktMTItMDUg
IHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIGluc3BlY3Rvci9w
YWdlL292ZXJyaWRlU2V0dGluZy1Nb2NrQ2FwdHVyZURldmljZXNFbmFibGVkLmh0bWwgaXMgZmFp
bGluZyBhZnRlciByZW1vdmFsIG9mIGludGVybmFscy5zZXRNb2NrTWVkaWFDYXB0dXJlRGV2aWNl
c0VuYWJsZWQgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJiNzVhZjZkMjE0MDU3NDM3YzQ3YTdjNmNmMWEwYzgw
MWRmYjY5NTguLmJlYjIyMjQwNDhiMjc4NDY2MGU5ZjdlYjViMmNlYzFmZTNiOTJkODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMTItMDUgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBh
cHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBJblByb2Nlc3NJREJTZXJ2ZXIgdG8gV2ViS2l0TGVn
YWN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ4
OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvRGF0YWJhc2VzL1dlYkRhdGFiYXNlUHJvdmlkZXIuaDoKKwogMjAxOS0xMi0wNSAg
UGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMaWJd
IERpc3BsYXkgR1N0cmVhbWVyIHZlcnNpb24gaW4gYWJvdXQ6Z3B1IHBhZ2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFu
Z2VMb2cKaW5kZXggZGY5ODM1YmFhZGIzODE1ODlhYTEwZDM1Nzk0Mzg2YWMyZDVmNWRjNS4uMGZk
NzJkYTZlNDhlMzlkYmU1YzgyY2RkZTQ0OGFkMjQ1YmRiMDEzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw3NiBAQAorMjAxOS0xMi0wNSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFw
cGxlLmNvbT4KKworICAgICAgICBNb3ZlIEluUHJvY2Vzc0lEQlNlcnZlciB0byBXZWJLaXRMZWdh
Y3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDg5
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJv
Y2Vzc0lEQlNlcnZlci5jcHAuCisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZSk6
CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdlcik6CisgICAgICAgIChz
dG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXIpOgorICAgICAgICAoSW5Qcm9jZXNzSURC
U2VydmVyOjpJblByb2Nlc3NJREJTZXJ2ZXIpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVy
OjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29ubmVj
dGlvblRvU2VydmVyIGNvbnN0KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29ubmVj
dGlvblRvQ2xpZW50IGNvbnN0KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRl
RGF0YWJhc2UpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxldGVEYXRhYmFz
ZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAg
IChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChJblByb2Nl
c3NJREJTZXJ2ZXI6OmRpZEFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoSW5Qcm9jZXNzSURC
U2VydmVyOjpkaWRDb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2
ZXI6OmRpZENyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6
ZGlkRGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRS
ZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENsZWFy
T2JqZWN0U3RvcmUpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDcmVhdGVJbmRl
eCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZUluZGV4KToKKyAgICAg
ICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkUmVuYW1lSW5kZXgpOgorICAgICAgICAoSW5Qcm9j
ZXNzSURCU2VydmVyOjpkaWRQdXRPckFkZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6
OmRpZEdldFJlY29yZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbFJl
Y29yZHMpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRDb3VudCk6CisgICAg
ICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZVJlY29yZCk6CisgICAgICAgIChJblBy
b2Nlc3NJREJTZXJ2ZXI6OmRpZE9wZW5DdXJzb3IpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2Vy
dmVyOjpkaWRJdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6YWJv
cnRUcmFuc2FjdGlvbik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbW1pdFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdW
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpj
cmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZU9i
amVjdFN0b3JlKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6cmVuYW1lT2JqZWN0U3Rv
cmUpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpjbGVhck9iamVjdFN0b3JlKToKKyAg
ICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoSW5Qcm9j
ZXNzSURCU2VydmVyOjpkZWxldGVJbmRleCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6
OnJlbmFtZUluZGV4KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6cHV0T3JBZGQpOgor
ICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRSZWNvcmQpOgorICAgICAgICAoSW5Qcm9j
ZXNzSURCU2VydmVyOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZl
cjo6Z2V0Q291bnQpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVSZWNvcmQp
OgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKElu
UHJvY2Vzc0lEQlNlcnZlcjo6aXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChJblByb2Nlc3NJREJT
ZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZl
cjo6ZmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6
OmRpZFN0YXJ0VHJhbnNhY3Rpb24pOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRD
bG9zZUZyb21TZXJ2ZXIpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpub3RpZnlPcGVu
REJSZXF1ZXN0QmxvY2tlZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNl
Q29ubmVjdGlvblBlbmRpbmdDbG9zZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRh
dGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmFi
b3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpk
aWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6
b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmNv
bmZpcm1EaWRDbG9zZUZyb21TZXJ2ZXIpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpn
ZXRBbGxEYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0
QWxsRGF0YWJhc2VOYW1lcyk6CisgICAgICAgICogU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIu
aDogQWRkZWQuCisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkRhdGFiYXNlUHJvdmlkZXI6OmlkYkNvbm5lY3Rpb25Ub1NlcnZlckZvclNlc3Np
b24pOgorICAgICAgICAoV2ViRGF0YWJhc2VQcm92aWRlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKToK
KyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJL
aXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0xMi0wNCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFBhZ2VDb25maWd1cmF0aW9uOjpw
cm9ncmVzc1RyYWNrZXJDbGllbnQgc2hvdWxkIHVzZSBhIHNtYXJ0IHBvaW50ZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCmluZGV4IDg4Mjk0NmI4YjVmZDc5NjA3NzU5OWRjM2I4Zjg3OWYzZjI4Y2RjYmQuLjEz
N2ZjNzhmODU4YWZhMTJiMTk0YzM2ZmNlM2U5NzdhOTc3N2IwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQpAQCAtNzksNyArNzksNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5oCiAg
ICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaAogICAgIE1vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaAotICAgIE1vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaAogCiAgICAgTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uRXZlbnRzLmgKICAgICBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNl
c3Npb25NZXRhZGF0YS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggZmMxNjA0Zjc2NWFlMjVjNjNhMDlhNGE5MzFkNTAw
NGNlYzA1MGFjMS4uODg3NDZlZWU2ZDMyNzc5NDZmOGE1NmFlYWViYzdhZDdjMzI5MzYzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2
ZXIuaApAQCAtNTgsNyArNTgsNyBAQCBlbnVtIGNsYXNzIFNob3VsZEZvcmNlU3RvcCA6IGJvb2wg
eyBObywgWWVzIH07CiBjbGFzcyBJREJTZXJ2ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJTZXJ2
ZXI+LCBwdWJsaWMgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlciwgcHVibGljIENhbk1ha2VXZWFrUHRy
PElEQlNlcnZlcj4gewogcHVibGljOgogICAgIHVzaW5nIFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFj
ZVJlcXVlc3RlciA9IEZ1bmN0aW9uPFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKGNvbnN0
IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKT47Ci0gICAgc3RhdGljIFJl
ZjxJREJTZXJ2ZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgU3RvcmFnZVF1b3RhTWFuYWdlclNw
YWNlUmVxdWVzdGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8SURCU2VydmVy
PiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3Rl
ciYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPElEQlNlcnZlcj4gY3JlYXRlKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgU3RvcmFn
ZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyJiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZWdpc3RlckNvbm5lY3Rpb24oSURCQ29ubmVjdGlvblRvQ2xpZW50Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0
YS5oCmluZGV4IDUzYjdiNjJkMzE0YzBiYTY1NmU1YjJiYzU5NjA4OGQ0ZTRmMTVmZmYuLmE0Yzg1
ZjY3MGFiZDI1N2Y2NzdhMDQ2ZGFlOTQwMTNlYWJiMmFlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCkBA
IC00OSw3ICs0OSw3IEBAIGNsYXNzIElEQlJlcXVlc3REYXRhIHsKIHB1YmxpYzoKICAgICBJREJS
ZXF1ZXN0RGF0YShjb25zdCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYsIGNvbnN0IElE
Qk9wZW5EQlJlcXVlc3QmKTsKICAgICBleHBsaWNpdCBJREJSZXF1ZXN0RGF0YShJREJDbGllbnQ6
OlRyYW5zYWN0aW9uT3BlcmF0aW9uJik7Ci0gICAgSURCUmVxdWVzdERhdGEoY29uc3QgSURCUmVx
dWVzdERhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJREJSZXF1ZXN0RGF0YShjb25zdCBJREJS
ZXF1ZXN0RGF0YSYpOwogICAgIElEQlJlcXVlc3REYXRhKElEQlJlcXVlc3REYXRhJiYpID0gZGVm
YXVsdDsKICAgICBJREJSZXF1ZXN0RGF0YSYgb3BlcmF0b3I9KElEQlJlcXVlc3REYXRhJiYpID0g
ZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oCmluZGV4IDdiOTQ3N2U4ZWM1NTRjOTEz
ZDJhNDhiZTU1OGUxNjMzZDkzZmNlOWIuLmI4YjQ4YTlkMzlkZDE0OWRhNTc3MjUyNjI3YmE3YzQ4
ZGYwNzNkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJREJUcmFuc2FjdGlvbkluZm8gY2xpZW50VHJhbnNhY3Rpb24oY29u
c3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
b2JqZWN0U3RvcmVzLCBJREJUcmFuc2FjdGlvbk1vZGUpOwogICAgIHN0YXRpYyBJREJUcmFuc2Fj
dGlvbkluZm8gdmVyc2lvbkNoYW5nZShjb25zdCBJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0Ns
aWVudCYsIGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgb3JpZ2luYWxEYXRhYmFzZUluZm8sIHVpbnQ2
NF90IG5ld1ZlcnNpb24pOwogCi0gICAgSURCVHJhbnNhY3Rpb25JbmZvKGNvbnN0IElEQlRyYW5z
YWN0aW9uSW5mbyYpOworICAgIFdFQkNPUkVfRVhQT1JUIElEQlRyYW5zYWN0aW9uSW5mbyhjb25z
dCBJREJUcmFuc2FjdGlvbkluZm8mKTsKICAgICBJREJUcmFuc2FjdGlvbkluZm8oSURCVHJhbnNh
Y3Rpb25JbmZvJiYpID0gZGVmYXVsdDsKICAgICBJREJUcmFuc2FjdGlvbkluZm8mIG9wZXJhdG9y
PShJREJUcmFuc2FjdGlvbkluZm8mJikgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2
ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjViZDVhNzY3MmEzODA1Njcx
NmQzNmE1Y2NiMTM4ZjkxYjMxYTkzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblBy
b2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDcwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW5Qcm9jZXNzSURCU2VydmVy
LmgiCi0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQotI2luY2x1ZGUgIklEQkNvbm5l
Y3Rpb25Ub0NsaWVudC5oIgotI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgotI2lu
Y2x1ZGUgIklEQkN1cnNvckluZm8uaCIKLSNpbmNsdWRlICJJREJHZXRSZWNvcmREYXRhLmgiCi0j
aW5jbHVkZSAiSURCSXRlcmF0ZUN1cnNvckRhdGEuaCIKLSNpbmNsdWRlICJJREJLZXlSYW5nZURh
dGEuaCIKLSNpbmNsdWRlICJJREJPcGVuREJSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiSURCUmVxdWVz
dERhdGEuaCIKLSNpbmNsdWRlICJJREJSZXN1bHREYXRhLmgiCi0jaW5jbHVkZSAiSURCVmFsdWUu
aCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiUHJvY2Vzc0lkZW50aWZpZXIuaCIK
LSNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4gSW5Qcm9jZXNz
SURCU2VydmVyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotewotICAgIFJlZjxJ
blByb2Nlc3NJREJTZXJ2ZXI+IHNlcnZlciA9IGFkb3B0UmVmKCpuZXcgSW5Qcm9jZXNzSURCU2Vy
dmVyKHNlc3Npb25JRCkpOwotICAgIHNlcnZlci0+bV9zZXJ2ZXItPnJlZ2lzdGVyQ29ubmVjdGlv
bihzZXJ2ZXItPmNvbm5lY3Rpb25Ub0NsaWVudCgpKTsKLSAgICByZXR1cm4gc2VydmVyOwotfQot
Ci1SZWY8SW5Qcm9jZXNzSURCU2VydmVyPiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRo
KQotewotICAgIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlcnZlciA9IGFkb3B0UmVmKCpuZXcg
SW5Qcm9jZXNzSURCU2VydmVyKHNlc3Npb25JRCwgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSk7Ci0g
ICAgc2VydmVyLT5tX3NlcnZlci0+cmVnaXN0ZXJDb25uZWN0aW9uKHNlcnZlci0+Y29ubmVjdGlv
blRvQ2xpZW50KCkpOwotICAgIHJldHVybiBzZXJ2ZXI7Ci19Ci0KLUluUHJvY2Vzc0lEQlNlcnZl
cjo6fkluUHJvY2Vzc0lEQlNlcnZlcigpID0gZGVmYXVsdDsKLQotU3RvcmFnZVF1b3RhTWFuYWdl
ciogSW5Qcm9jZXNzSURCU2VydmVyOjpxdW90YU1hbmFnZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBv
cmlnaW4pCi17Ci0gICAgcmV0dXJuIG1fcXVvdGFNYW5hZ2Vycy5lbnN1cmUob3JpZ2luLCBbXSB7
Ci0gICAgICAgIHJldHVybiBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpjcmVhdGUoU3RvcmFnZVF1b3Rh
TWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdIHsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAg
ICAgICB9LCBbXSh1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRf
dCBzcGFjZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhx
dW90YSArIGN1cnJlbnRTcGFjZSArIHNwYWNlSW5jcmVhc2UpOwotICAgICAgICB9KTsKLSAgICB9
KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSURCU2VydmVyOjpJ
REJTZXJ2ZXI6OlN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciBzdG9yYWdlUXVvdGFN
YW5hZ2VyU3BhY2VSZXF1ZXN0ZXIoSW5Qcm9jZXNzSURCU2VydmVyJiBzZXJ2ZXIpCi17Ci0gICAg
cmV0dXJuIFtzZXJ2ZXIgPSAmc2VydmVyLCB3ZWFrU2VydmVyID0gbWFrZVdlYWtQdHIoc2VydmVy
KV0oY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKSBt
dXRhYmxlIHsKLSAgICAgICAgYXV0byogc3RvcmFnZVF1b3RhTWFuYWdlciA9IHdlYWtTZXJ2ZXIg
PyBzZXJ2ZXItPnF1b3RhTWFuYWdlcihvcmlnaW4pIDogbnVsbHB0cjsKLSAgICAgICAgcmV0dXJu
IHN0b3JhZ2VRdW90YU1hbmFnZXIgPyBzdG9yYWdlUXVvdGFNYW5hZ2VyLT5yZXF1ZXN0U3BhY2VP
bkJhY2tncm91bmRUaHJlYWQoc3BhY2VSZXF1ZXN0ZWQpIDogU3RvcmFnZVF1b3RhTWFuYWdlcjo6
RGVjaXNpb246OkRlbnk7Ci0gICAgfTsKLX0KLQotSW5Qcm9jZXNzSURCU2VydmVyOjpJblByb2Nl
c3NJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIDogbV9zZXJ2ZXIoSURC
U2VydmVyOjpJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQsIHN0b3JhZ2VRdW90YU1hbmFnZXJT
cGFjZVJlcXVlc3RlcigqdGhpcykpKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7Ci0gICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIg
PSBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlKCp0aGlzKTsKLSAgICBt
X2Nvbm5lY3Rpb25Ub0NsaWVudCA9IElEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50Ojpj
cmVhdGUoKnRoaXMpOwotfQotCi1JblByb2Nlc3NJREJTZXJ2ZXI6OkluUHJvY2Vzc0lEQlNlcnZl
cihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoKQotICAgIDogbV9zZXJ2ZXIoSURCU2VydmVyOjpJREJTZXJ2ZXI6OmNyZWF0ZShzZXNz
aW9uSUQsIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgc3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVx
dWVzdGVyKCp0aGlzKSkpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICByZWxh
eEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKLSAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlciA9IElEQkNs
aWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjpjcmVhdGUoKnRoaXMpOwotICAgIG1fY29ubmVj
dGlvblRvQ2xpZW50ID0gSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSgq
dGhpcyk7Ci19Ci0KLUlEQkNvbm5lY3Rpb25JZGVudGlmaWVyIEluUHJvY2Vzc0lEQlNlcnZlcjo6
aWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgLy8gQW4gaW5zdGFuY2Ugb2YgSW5Qcm9jZXNzSURC
U2VydmVyIGFsd2F5cyBoYXMgYSAxOjEgcmVsYXRpb25zaGlwIHdpdGggaXRzIGluc3RhbmNlIG9m
IElEQlNlcnZlci4KLSAgICAvLyBUaGVyZWZvcmUgdGhlIGNvbm5lY3Rpb24gaWRlbnRpZmllciBi
ZXR3ZWVuIHRoZSB0d28gY2FuIGFsd2F5cyBiZSAiMSIuCi0gICAgcmV0dXJuIFByb2Nlc3M6Omlk
ZW50aWZpZXIoKTsKLX0KLQotSURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXImIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6Y29ubmVjdGlvblRvU2VydmVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
Km1fY29ubmVjdGlvblRvU2VydmVyOwotfQotCi1JREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0Ns
aWVudCYgSW5Qcm9jZXNzSURCU2VydmVyOjpjb25uZWN0aW9uVG9DbGllbnQoKSBjb25zdAotewot
ICAgIHJldHVybiAqbV9jb25uZWN0aW9uVG9DbGllbnQ7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpkZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEp
Ci17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhXSB7Ci0gICAgICAgIG1fc2VydmVyLT5kZWxl
dGVEYXRhYmFzZShyZXF1ZXN0RGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpkaWREZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRh
KQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRv
U2VydmVyLT5kaWREZWxldGVEYXRhYmFzZShyZXN1bHREYXRhKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhXSB7Ci0gICAgICAgIG1f
c2VydmVyLT5vcGVuRGF0YWJhc2UocmVxdWVzdERhdGEpOwotICAgIH0pOwotfQotCi12b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkT3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJl
c3VsdERhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKLSAgICAgICAgbV9jb25u
ZWN0aW9uVG9TZXJ2ZXItPmRpZE9wZW5EYXRhYmFzZShyZXN1bHREYXRhKTsKLSAgICB9KTsKLX0K
LQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9y
JiBlcnJvcikKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcl0g
ewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQWJvcnRUcmFuc2FjdGlvbih0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGVycm9yKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3IpCi17Ci0gICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3JdIHsKLSAgICAgICAgbV9jb25u
ZWN0aW9uVG9TZXJ2ZXItPmRpZENvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgZXJyb3IpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ3Jl
YXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKLXsKLSAgICBS
dW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcmVzdWx0RGF0YV0gewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlk
Q3JlYXRlT2JqZWN0U3RvcmUocmVzdWx0RGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9j
ZXNzSURCU2VydmVyOjpkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiBy
ZXN1bHREYXRhKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7Ci0gICAgICAgIG1fY29u
bmVjdGlvblRvU2VydmVyLT5kaWREZWxldGVPYmplY3RTdG9yZShyZXN1bHREYXRhKTsKLSAgICB9
KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZFJlbmFtZU9iamVjdFN0b3JlKGNv
bnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERh
dGFdIHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZFJlbmFtZU9iamVjdFN0b3Jl
KHJlc3VsdERhdGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlk
Q2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQotewotICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5k
aWRDbGVhck9iamVjdFN0b3JlKHJlc3VsdERhdGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGlkQ3JlYXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0
RGF0YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0gewotICAgICAgICBtX2Nvbm5lY3Rp
b25Ub1NlcnZlci0+ZGlkQ3JlYXRlSW5kZXgocmVzdWx0RGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxldGVJbmRleChjb25zdCBJREJSZXN1bHREYXRh
JiByZXN1bHREYXRhKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7Ci0gICAgICAgIG1f
Y29ubmVjdGlvblRvU2VydmVyLT5kaWREZWxldGVJbmRleChyZXN1bHREYXRhKTsKLSAgICB9KTsK
LX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZFJlbmFtZUluZGV4KGNvbnN0IElEQlJl
c3VsdERhdGEmIHJlc3VsdERhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKLSAg
ICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZFJlbmFtZUluZGV4KHJlc3VsdERhdGEpOwot
ICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkUHV0T3JBZGQoY29uc3Qg
SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0g
ewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkUHV0T3JBZGQocmVzdWx0RGF0YSk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRSZWNvcmQoY29u
c3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0
YV0gewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkR2V0UmVjb3JkKHJlc3VsdERh
dGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxsUmVj
b3Jkcyhjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQotewotICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBy
ZXN1bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRBbGxSZWNv
cmRzKHJlc3VsdERhdGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
ZGlkR2V0Q291bnQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKLXsKLSAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgcmVzdWx0RGF0YV0gewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkR2V0
Q291bnQocmVzdWx0RGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpkaWREZWxldGVSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKLXsKLSAg
ICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0gewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+
ZGlkRGVsZXRlUmVjb3JkKHJlc3VsdERhdGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6ZGlkT3BlbkN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRh
KQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRv
U2VydmVyLT5kaWRPcGVuQ3Vyc29yKHJlc3VsdERhdGEpOwotICAgIH0pOwotfQotCi12b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiBy
ZXN1bHREYXRhKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7Ci0gICAgICAgIG1fY29u
bmVjdGlvblRvU2VydmVyLT5kaWRJdGVyYXRlQ3Vyc29yKHJlc3VsdERhdGEpOwotICAgIH0pOwot
fQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHJlc291cmNlSWRlbnRpZmllcikKLXsKLSAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cmVzb3VyY2VJZGVudGlmaWVyXSB7Ci0gICAgICAgIG1fc2VydmVyLT5hYm9ydFRyYW5zYWN0aW9u
KHJlc291cmNlSWRlbnRpZmllcik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2Vy
dmVyOjpjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlc291
cmNlSWRlbnRpZmllcikKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzb3VyY2VJZGVudGlmaWVyXSB7Ci0g
ICAgICAgIG1fc2VydmVyLT5jb21taXRUcmFuc2FjdGlvbihyZXNvdXJjZUlkZW50aWZpZXIpOwot
ICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdW
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIp
Ci17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0
aW9uSWRlbnRpZmllcl0gewotICAgICAgICBtX3NlcnZlci0+ZGlkRmluaXNoSGFuZGxpbmdWZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXN1bHREYXRhLCBjb25z
dCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8pCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGEs
IGluZm9dIHsKLSAgICAgICAgbV9zZXJ2ZXItPmNyZWF0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEs
IGluZm8pOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlT2Jq
ZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBTdHJpbmcm
IG9iamVjdFN0b3JlTmFtZSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIG9iamVjdFN0
b3JlTmFtZV0gewotICAgICAgICBtX3NlcnZlci0+ZGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERh
dGEsIG9iamVjdFN0b3JlTmFtZSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2Vy
dmVyOjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQot
ewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdO
YW1lXSB7Ci0gICAgICAgIG1fc2VydmVyLT5yZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCi17Ci0gICAgUnVuTG9v
cDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXJdIHsKLSAgICAgICAgbV9zZXJ2
ZXItPmNsZWFyT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcik7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVJbmRleChjb25z
dCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykK
LXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIGluZm9dIHsKLSAgICAgICAgbV9zZXJ2ZXIt
PmNyZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBpbmZvKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4
TmFtZSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgaW5kZXhOYW1lXSB7Ci0gICAgICAgIG1fc2VydmVyLT5kZWxldGVJbmRleChyZXF1ZXN0RGF0
YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUpOwotICAgIH0pOwotfQotCi12b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6cmVuYW1lSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQotewotICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1
ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWVd
IHsKLSAgICAgICAgbV9zZXJ2ZXItPnJlbmFtZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7Ci0gICAgfSk7Ci19Ci0KLXZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1
ZSwgY29uc3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9k
ZSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBvdmVyd3Jp
dGVNb2RlXSB7Ci0gICAgICAgIG1fc2VydmVyLT5wdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0
YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGUpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
c3QgSURCR2V0UmVjb3JkRGF0YSYgZ2V0UmVjb3JkRGF0YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVx
dWVzdERhdGEsIGdldFJlY29yZERhdGFdIHsKLSAgICAgICAgbV9zZXJ2ZXItPmdldFJlY29yZChy
ZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQotewotICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGFdIHsKLSAgICAgICAgbV9z
ZXJ2ZXItPmdldEFsbFJlY29yZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKTsKLSAg
ICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldENvdW50KGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURh
dGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsKLSAgICAg
ICAgbV9zZXJ2ZXItPmdldENvdW50KHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEpOwotICAgIH0p
OwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURh
dGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsKLSAgICAg
ICAgbV9zZXJ2ZXItPmRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKLSAg
ICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5DdXJzb3IoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQotewot
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwgaW5mb10gewotICAgICAgICBtX3NlcnZlci0+b3Bl
bkN1cnNvcihyZXF1ZXN0RGF0YSwgaW5mbyk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmIGRhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJl
cXVlc3REYXRhLCBkYXRhXSB7Ci0gICAgICAgIG1fc2VydmVyLT5pdGVyYXRlQ3Vyc29yKHJlcXVl
c3REYXRhLCBkYXRhKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmVz
dGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIs
IGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mb10gewotICAgICAgICBtX3NlcnZlci0+ZXN0YWJs
aXNoVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mbyk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50
KElEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1
ZXN0ZWRWZXJzaW9uKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyID0gY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0
ZWRWZXJzaW9uXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5maXJlVmVyc2lvbkNo
YW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVy
LCByZXF1ZXN0ZWRWZXJzaW9uKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6OmRpZFN0YXJ0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJvcikKLXsKLSAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcl0gewotICAgICAgICBtX2Nvbm5lY3Rpb25U
b1NlcnZlci0+ZGlkU3RhcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9y
KTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENsb3NlRnJvbVNl
cnZlcihJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
Y29uc3QgSURCRXJyb3ImIGVycm9yKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyID0gY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIGVycm9yXSB7Ci0gICAgICAg
IG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRDbG9zZUZyb21TZXJ2ZXIoZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllciwgZXJyb3IpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3
VmVyc2lvbikKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNpb24s
IG5ld1ZlcnNpb25dIHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPm5vdGlmeU9wZW5E
QlJlcXVlc3RCbG9ja2VkKHJlcXVlc3RJZGVudGlmaWVyLCBvbGRWZXJzaW9uLCBuZXdWZXJzaW9u
KTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVj
dGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQot
ewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyXSB7Ci0gICAgICAg
IG1fc2VydmVyLT5kYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UoZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllcik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpk
YXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
ZmllcikKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcl0gewot
ICAgICAgICBtX3NlcnZlci0+ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
cikKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyXSB7Ci0gICAgICAgIG1fc2VydmVyLT5hYm9ydE9wZW5BbmRVcGdyYWRl
TmVlZGVkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmll
cik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRGaXJlVmVyc2lv
bkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IEluZGV4ZWRE
Qjo6Q29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIgY29ubmVjdGlvbkNsb3NlZCkKLXsK
LSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50
aWZpZXIsIGNvbm5lY3Rpb25DbG9zZWRdIHsKLSAgICAgICAgbV9zZXJ2ZXItPmRpZEZpcmVWZXJz
aW9uQ2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50
aWZpZXIsIGNvbm5lY3Rpb25DbG9zZWQpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhXSB7Ci0gICAgICAgIG1fc2Vy
dmVyLT5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVlc3REYXRhKTsKLSAgICB9KTsKLX0KLQot
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbmZpcm1EaWRDbG9zZUZyb21TZXJ2ZXIodWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllcl0gewotICAgICAgICBtX3NlcnZlci0+Y29uZmlybURpZENs
b3NlRnJvbVNlcnZlcihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKLSAgICB9KTsKLX0K
LQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXMoY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBtYWluRnJhbWVPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgb3BlbmluZ09yaWdpbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKLXsKLSAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
bWFpbkZyYW1lT3JpZ2luLCBvcGVuaW5nT3JpZ2luLCBjYWxsYmFja0lEXSB7Ci0gICAgICAgIG1f
c2VydmVyLT5nZXRBbGxEYXRhYmFzZU5hbWVzKG1fY29ubmVjdGlvblRvU2VydmVyLT5pZGVudGlm
aWVyKCksIG1haW5GcmFtZU9yaWdpbiwgb3BlbmluZ09yaWdpbiwgY2FsbGJhY2tJRCk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVz
KHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVz
KQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lELCBkYXRhYmFzZU5hbWVzXSB7Ci0gICAgICAg
IG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRBbGxEYXRhYmFzZU5hbWVzKGNhbGxiYWNrSUQs
IGRhdGFiYXNlTmFtZXMpOwotICAgIH0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU3MzZhNzgwOTE5MWU0MzdiODYzYzNk
YmRkYTJhYjQ4ZWUwNjVkZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNz
SURCU2VydmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0KLSNpbmNsdWRl
ICJJREJDb25uZWN0aW9uVG9DbGllbnQuaCIKLSNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9TZXJ2
ZXIuaCIKLSNpbmNsdWRlICJJREJTZXJ2ZXIuaCIKLSNpbmNsdWRlICJTdG9yYWdlUXVvdGFNYW5h
Z2VyLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KLQotbmFtZXNwYWNlIFBBTCB7Ci1jbGFzcyBT
ZXNzaW9uSUQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IENsaWVudE9yaWdp
bjsKLQotbmFtZXNwYWNlIElEQkNsaWVudCB7Ci1jbGFzcyBJREJDb25uZWN0aW9uVG9TZXJ2ZXI7
Ci19Ci0KLW5hbWVzcGFjZSBJREJTZXJ2ZXIgewotY2xhc3MgSURCU2VydmVyOwotfQotCi1jbGFz
cyBJblByb2Nlc3NJREJTZXJ2ZXIgZmluYWwgOiBwdWJsaWMgSURCQ2xpZW50OjpJREJDb25uZWN0
aW9uVG9TZXJ2ZXJEZWxlZ2F0ZSwgcHVibGljIElEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xp
ZW50RGVsZWdhdGUsIHB1YmxpYyBSZWZDb3VudGVkPEluUHJvY2Vzc0lEQlNlcnZlcj4gewotcHVi
bGljOgotICAgIHVzaW5nIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGU6
OndlYWtQdHJGYWN0b3J5OwotICAgIHVzaW5nIFdlYWtWYWx1ZVR5cGUgPSBJREJDbGllbnQ6OklE
QkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlOjpXZWFrVmFsdWVUeXBlOwotCi0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IGNyZWF0ZShQQUw6OlNlc3Np
b25JRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+
IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBh
dGgpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW5Qcm9jZXNzSURCU2VydmVyKCk7
Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYg
Y29ubmVjdGlvblRvU2VydmVyKCkgY29uc3Q7Ci0gICAgSURCU2VydmVyOjpJREJDb25uZWN0aW9u
VG9DbGllbnQmIGNvbm5lY3Rpb25Ub0NsaWVudCgpIGNvbnN0OwotICAgIElEQlNlcnZlcjo6SURC
U2VydmVyJiBzZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZlci5nZXQoKTsgfQotICAgIElEQlNlcnZl
cjo6SURCU2VydmVyJiBpZGJTZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZlci5nZXQoKTsgfQotCi0g
ICAgLy8gSURCQ29ubmVjdGlvblRvU2VydmVyCi0gICAgdm9pZCBkZWxldGVEYXRhYmFzZShjb25z
dCBJREJSZXF1ZXN0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgb3BlbkRhdGFiYXNlKGNvbnN0IElE
QlJlcXVlc3REYXRhJikgZmluYWw7Ci0gICAgdm9pZCBhYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYpIGZpbmFsOwotICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24o
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJikgZmluYWw7Ci0gICAgdm9pZCBkaWRGaW5pc2hI
YW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImKSBmaW5hbDsKLSAgICB2
b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCT2Jq
ZWN0U3RvcmVJbmZvJikgZmluYWw7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBJ
REJSZXF1ZXN0RGF0YSYsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKSBmaW5hbDsKLSAg
ICB2b2lkIHJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpIGZpbmFsOwotICAg
IHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllcikgZmluYWw7Ci0gICAgdm9pZCBjcmVhdGVJbmRleChjb25zdCBJ
REJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkluZGV4SW5mbyYpIGZpbmFsOwotICAgIHZvaWQgZGVs
ZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKSBmaW5hbDsKLSAgICB2b2lkIHJlbmFtZUlu
ZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkgZmluYWw7
Ci0gICAgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURh
dGEmLCBjb25zdCBJREJWYWx1ZSYsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3Jp
dGVNb2RlKSBmaW5hbDsKLSAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IElEQkdldFJlY29yZERhdGEmKSBmaW5hbDsKLSAgICB2b2lkIGdldEFsbFJlY29yZHMo
Y29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYpIGZpbmFs
OwotICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmKSBmaW5hbDsKLSAgICB2b2lkIGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgb3BlbkN1cnNv
cihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkN1cnNvckluZm8mKSBmaW5hbDsKLSAg
ICB2b2lkIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJdGVy
YXRlQ3Vyc29yRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24odWlu
dDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25J
bmZvJikgZmluYWw7Ci0gICAgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWlu
dDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikgZmluYWw7Ci0gICAgdm9pZCBkYXRh
YmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
cikgZmluYWw7Ci0gICAgdm9pZCBhYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hh
bmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSW5kZXhlZERCOjpD
b25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlciA9IEluZGV4ZWREQjo6Q29ubmVjdGlvbkNs
b3NlZE9uQmVoYWxmT2ZTZXJ2ZXI6Ok5vKSBmaW5hbDsKLSAgICB2b2lkIG9wZW5EQlJlcXVlc3RD
YW5jZWxsZWQoY29uc3QgSURCUmVxdWVzdERhdGEmKSBmaW5hbDsKLSAgICB2b2lkIGNvbmZpcm1E
aWRDbG9zZUZyb21TZXJ2ZXIodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikg
ZmluYWw7Ci0gICAgdm9pZCBnZXRBbGxEYXRhYmFzZU5hbWVzKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgbWFpbkZyYW1lT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdP
cmlnaW4sIHVpbnQ2NF90IGNhbGxiYWNrSUQpIGZpbmFsOwotCi0gICAgLy8gSURCQ29ubmVjdGlv
blRvQ2xpZW50Ci0gICAgSURCQ29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0
IGZpbmFsOwotICAgIHZvaWQgZGlkRGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYp
IGZpbmFsOwotICAgIHZvaWQgZGlkT3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmKSBm
aW5hbDsKLSAgICB2b2lkIGRpZEFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJikgZmluYWw7Ci0g
ICAgdm9pZCBkaWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKSBmaW5hbDsKLSAgICB2b2lk
IGRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmKSBmaW5hbDsKLSAgICB2
b2lkIGRpZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmKSBmaW5hbDsK
LSAgICB2b2lkIGRpZENsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFs
OwotICAgIHZvaWQgZGlkQ3JlYXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwot
ICAgIHZvaWQgZGlkRGVsZXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAg
IHZvaWQgZGlkUmVuYW1lSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZv
aWQgZGlkUHV0T3JBZGQoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGlk
R2V0UmVjb3JkKGNvbnN0IElEQlJlc3VsdERhdGEmKSBmaW5hbDsKLSAgICB2b2lkIGRpZEdldEFs
bFJlY29yZHMoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGlkR2V0Q291
bnQoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGlkRGVsZXRlUmVjb3Jk
KGNvbnN0IElEQlJlc3VsdERhdGEmKSBmaW5hbDsKLSAgICB2b2lkIGRpZE9wZW5DdXJzb3IoY29u
c3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGlkSXRlcmF0ZUN1cnNvcihjb25z
dCBJREJSZXN1bHREYXRhJikgZmluYWw7Ci0gICAgdm9pZCBmaXJlVmVyc2lvbkNoYW5nZUV2ZW50
KElEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lv
bikgZmluYWw7Ci0gICAgdm9pZCBkaWRTdGFydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYpIGZpbmFs
OwotICAgIHZvaWQgZGlkQ2xvc2VGcm9tU2VydmVyKElEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uJiwgY29uc3QgSURCRXJyb3ImKSBmaW5hbDsKLSAgICB2b2lkIG5vdGlmeU9w
ZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElk
ZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24pIGZpbmFs
OwotICAgIHZvaWQgZGlkR2V0QWxsRGF0YWJhc2VOYW1lcyh1aW50NjRfdCBjYWxsYmFja0lELCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZGF0YWJhc2VOYW1lcykgZmluYWw7Ci0KLSAgICB2b2lkIHJl
ZigpIG92ZXJyaWRlIHsgUmVmQ291bnRlZDxJblByb2Nlc3NJREJTZXJ2ZXI+OjpyZWYoKTsgfQot
ICAgIHZvaWQgZGVyZWYoKSBvdmVycmlkZSB7IFJlZkNvdW50ZWQ8SW5Qcm9jZXNzSURCU2VydmVy
Pjo6ZGVyZWYoKTsgfQotCi0gICAgU3RvcmFnZVF1b3RhTWFuYWdlciogcXVvdGFNYW5hZ2VyKGNv
bnN0IENsaWVudE9yaWdpbiYpOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEluUHJvY2Vzc0lE
QlNlcnZlcihQQUw6OlNlc3Npb25JRCk7Ci0gICAgSW5Qcm9jZXNzSURCU2VydmVyKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7Ci0KLSAgICBSZWY8
SURCU2VydmVyOjpJREJTZXJ2ZXI+IG1fc2VydmVyOwotICAgIFJlZlB0cjxJREJDbGllbnQ6OklE
QkNvbm5lY3Rpb25Ub1NlcnZlcj4gbV9jb25uZWN0aW9uVG9TZXJ2ZXI7Ci0gICAgUmVmUHRyPElE
QlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsKLQot
ICAgIEhhc2hNYXA8Q2xpZW50T3JpZ2luLCBSZWZQdHI8U3RvcmFnZVF1b3RhTWFuYWdlcj4+IG1f
cXVvdGFNYW5hZ2VyczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggOGFlM2QxNTFlOWZi
N2FlMTlkMWE5MTAyZTNkZDk4YWI5MTMwM2ZmOS4uMmRkNmNjM2M4ZTA2NjVhYWU2ZmU4ZTE4MmYz
MzYxOTgyYWI4ZTdkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0zMywxMiArMzMsMTUgQEAKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNs
dWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTT3ZlcmNvbnN0cmFpbmVk
RXJyb3IuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50
cy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2
YXRlLmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgIk92ZXJjb25zdHJhaW5lZEVycm9yLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9waWN0dXJlaW5waWN0
dXJlL0hUTUxWaWRlb0VsZW1lbnRQaWN0dXJlSW5QaWN0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcGljdHVyZWlucGljdHVyZS9IVE1MVmlkZW9FbGVtZW50UGljdHVyZUluUGljdHVy
ZS5jcHAKaW5kZXggMDJiNzNmYjEyMzYxZTcyZDdkZWQyMDRjNmMwMjFmMDEzOGE2ZjI5Yy4uNmZk
OGQyNThjYmFlNDhiODliYjNkYWI5NTBjNjI1OWJjNmJiN2JiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0hUTUxWaWRlb0VsZW1lbnRQaWN0dXJl
SW5QaWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1
cmUvSFRNTFZpZGVvRWxlbWVudFBpY3R1cmVJblBpY3R1cmUuY3BwCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJFX0FQSSkKIAorI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNET01Q
cm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU1BpY3R1cmVJblBpY3R1cmVXaW5kb3cuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggOTE3NDg3ZTExZDNhM2E2ZGVmZTU0ZWQwN2I3ZmI4YmNlOTc5ZGZm
My4uNWZlNzIzYjRlNTEwNDQxODUzN2M2YjgyOTc2MGQ4NjBmM2Y5M2YyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTE0Miw3ICsxNDIsNiBAQCBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVz
dERhdGEuY3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVy
LmNwcAogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCiBNb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcAotTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JbmRleEtleS5jcHAKIAogTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxp
dGllcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA2MzAzZDdkNWQ0OTEyZDI5NTViZTEwNGI3MzM2YmUxY2JiY2E4MDUwLi4y
MmU0ZjcxNjRmNjkxNTMyZTEzMDljZTk3M2M0N2VhNGU3ZDgwNDJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzg4LDcgKzEz
ODgsNiBAQAogCQk1MTA1OEFFMjFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNThB
REExRDY3OTI1NzAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTA1RjA2OTFENEJBOUQ5MDBG
QjgwQkMgLyogSURCR2V0UmVjb3JkRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEwNUYwNjgxRDRCQTU0MTAwRkI4MEJDIC8qIElEQkdldFJlY29y
ZERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MTA2RDdCRTE4QkRCNzZGMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA2RDdCQzE4QkRCNzZG
MDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTEwQTU4RTUxQkFBNDBCMTAwQzE5MjgyIC8qIElu
UHJvY2Vzc0lEQlNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTEwQTU4RTMxQkFBNDBBRTAwQzE5MjgyIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMEE1
OEZBMUJBQ0M3RjIwMEMxOTI4MiAvKiBJREJSZXF1ZXN0RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQTU4RjYxQkFDQzRBNTAwQzE5MjgyIC8q
IElEQlJlcXVlc3REYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTEwRDRBMzQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEy
RTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTBENEEzNzEwMzE2NUVFMDA0OUVB
NTQgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFt
SGFuZGxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTgwNDQsOCArODA0Myw2IEBACiAJCTUxMDVGMDZBMUQ0QkIwQkMwMEZCODBCQyAvKiBJREJH
ZXRSZWNvcmREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElE
QkdldFJlY29yZERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTA2RDdC
QjE4QkRCNzZGMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRleHRNZW51Q29udGV4dC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDZEN0JDMThCREI3NkYwMDBBQjE2NiAvKiBDb250ZXh0
TWVudUNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGV4dE1l
bnVDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxMEE1OEUyMUJBQTQw
QUUwMEMxOTI4MiAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5Qcm9jZXNzSURCU2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNTEwQTU4RTMxQkFBNDBBRTAwQzE5MjgyIC8qIEluUHJvY2Vzc0lEQlNl
cnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJblByb2Nlc3NJREJTZXJ2
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwQTU4RUYxQkFCNzIwRjAwQzE5
MjgyIC8qIElEQlNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJREJTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBBNThGMDFC
QUI3MjBGMDBDMTkyODIgLyogSURCU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IElEQlNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBBNThG
NTFCQUNDNEE1MDBDMTkyODIgLyogSURCUmVxdWVzdERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSURCUmVxdWVzdERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTg5MjQsOCArMTg5MjEsNiBAQAogCQkJCTUxOThGN0FCMUJCREQzRTMw
MEUyQ0M1RiAvKiBJREJUcmFuc2FjdGlvbkluZm8uaCAqLywKIAkJCQk1MTcxMzhFRDFCRUQxRDE3
MDAwRDVGMDEgLyogSW5kZXhLZXkuY3BwICovLAogCQkJCTUxNzEzOEVFMUJFRDFEMTcwMDBENUYw
MSAvKiBJbmRleEtleS5oICovLAotCQkJCTUxMEE1OEUyMUJBQTQwQUUwMEMxOTI4MiAvKiBJblBy
b2Nlc3NJREJTZXJ2ZXIuY3BwICovLAotCQkJCTUxMEE1OEUzMUJBQTQwQUUwMEMxOTI4MiAvKiBJ
blByb2Nlc3NJREJTZXJ2ZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gc2hhcmVkOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMwMjM1LDcgKzMwMjMwLDYgQEAKIAkJCQlCQ0VBNDg1
QTA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUMwMTA3MDExOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNkYxQ0MxREUyMjVGOEI0OTAwNzIwQUQyIC8qIElubGluZVRleHRJdGVtLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk1MTBBNThFNTFCQUE0MEIxMDBDMTkyODIgLyogSW5Qcm9jZXNz
SURCU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUI3Njc1NzFEQTE5QkRGMDAzRTIzQjUg
LyogSW5wdXRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTUyRUZERjQyMTEyODc1QTAwQUQy
ODJBIC8qIElucHV0TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdFMzUyNEQxMjQ1MEM2NjAw
QkFGNUQ5IC8qIElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwCmluZGV4IDYwMGVmN2I2YmFjODZjYTZmNGMxNWExZmNmMDYxODlhZDk4
NTkzNGYuLjc3OWU5MTRhOWVjYjdjYTRhYzVkMWFjOTBmYmMwYzBhNmFmODUwZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC01MCw3ICs1MCw3IEBACiAjaW5jbHVk
ZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCi0jaW5jbHVkZSAiSW5Qcm9jZXNzSURCU2VydmVy
LmgiCisjaW5jbHVkZSAiSURCQ29ubmVjdGlvblRvU2VydmVyLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKICNpbmNsdWRlICJO
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKQEAgLTEyMywxMCArMTIzLDQ2IEBAIGNsYXNzIEVtcHR5
Q29udGV4dE1lbnVDbGllbnQgZmluYWwgOiBwdWJsaWMgQ29udGV4dE1lbnVDbGllbnQgewogCiBj
bGFzcyBFbXB0eURhdGFiYXNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgRGF0YWJhc2VQcm92aWRl
ciB7CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0gICAgSURCQ2xpZW50OjpJREJDb25u
ZWN0aW9uVG9TZXJ2ZXImIGlkYkNvbm5lY3Rpb25Ub1NlcnZlckZvclNlc3Npb24oY29uc3QgUEFM
OjpTZXNzaW9uSUQmIHNlc3Npb25JRCkgZmluYWwKKyAgICBzdHJ1Y3QgRW1wdHlJREJDb25uZWN0
aW9uVG9TZXJ2ZXJEZWxldGVnYXRlIGZpbmFsIDogcHVibGljIElEQkNsaWVudDo6SURCQ29ubmVj
dGlvblRvU2VydmVyRGVsZWdhdGUgeworICAgICAgICBJREJDb25uZWN0aW9uSWRlbnRpZmllciBp
ZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4geyB9OyB9CisgICAgICAgIHZvaWQgZGVs
ZXRlRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmKSBmaW5hbCB7IH0KKyAgICAgICAgdm9p
ZCBvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmKSBmaW5hbCB7IH0KKyAgICAgICAg
dm9pZCBhYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYpIGZpbmFs
IHsgfQorICAgICAgICB2b2lkIGNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGRpZEZpbmlzaEhhbmRsaW5nVmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90LCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
KSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYpIGZpbmFsIHsgfQorICAgICAgICB2
b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5n
JikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVx
dWVzdERhdGEmLCB1aW50NjRfdCwgY29uc3QgU3RyaW5nJikgZmluYWwgeyB9CisgICAgICAgIHZv
aWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90KSBmaW5h
bCB7IH0KKyAgICAgICAgdm9pZCBjcmVhdGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNv
bnN0IElEQkluZGV4SW5mbyYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGRlbGV0ZUluZGV4KGNv
bnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3QsIGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgfQor
ICAgICAgICB2b2lkIHJlbmFtZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qs
IHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBwdXRPckFk
ZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1
ZSYsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKSBmaW5hbCB7IH0K
KyAgICAgICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJH
ZXRSZWNvcmREYXRhJikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25z
dCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJikgZmluYWwgeyB9
CisgICAgICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJL
ZXlSYW5nZURhdGEmKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBkZWxldGVSZWNvcmQoY29uc3Qg
SURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKSBmaW5hbCB7IH0KKyAgICAg
ICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29y
SW5mbyYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVx
dWVzdERhdGEmLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYpIGZpbmFsIHsgfQorICAgICAg
ICB2b2lkIGVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90LCBjb25zdCBJREJUcmFuc2FjdGlv
bkluZm8mKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5n
Q2xvc2UodWludDY0X3QpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGRhdGFiYXNlQ29ubmVjdGlv
bkNsb3NlZCh1aW50NjRfdCkgZmluYWwgeyB9CisgICAgICAgIHZvaWQgYWJvcnRPcGVuQW5kVXBn
cmFkZU5lZWRlZCh1aW50NjRfdCwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJikgZmluYWwg
eyB9CisgICAgICAgIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCwgY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgSW5kZXhlZERCOjpDb25uZWN0aW9uQ2xv
c2VkT25CZWhhbGZPZlNlcnZlcikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgb3BlbkRCUmVxdWVz
dENhbmNlbGxlZChjb25zdCBJREJSZXF1ZXN0RGF0YSYpIGZpbmFsIHsgfQorICAgICAgICB2b2lk
IGdldEFsbERhdGFiYXNlTmFtZXMoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiwgdWludDY0X3QpIGZpbmFsIHsgfQorICAgICAgICB+RW1wdHlJREJD
b25uZWN0aW9uVG9TZXJ2ZXJEZWxldGVnYXRlKCkgeyB9CisgICAgICAgIAorICAgICAgICB2b2lk
IGNvbmZpcm1EaWRDbG9zZUZyb21TZXJ2ZXIodWludDY0X3QpIGZpbmFsIHsgfQorICAgICAgICB2
b2lkIHJlZigpIHsgfQorICAgICAgICB2b2lkIGRlcmVmKCkgeyB9CisgICAgfTsKKworICAgIElE
QkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyJiBpZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JT
ZXNzaW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJikgZmluYWwKICAgICB7Ci0gICAgICAgIHN0YXRp
YyBhdXRvJiBzaGFyZWRDb25uZWN0aW9uID0gSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGUoc2Vz
c2lvbklEKS5sZWFrUmVmKCk7Ci0gICAgICAgIHJldHVybiBzaGFyZWRDb25uZWN0aW9uLmNvbm5l
Y3Rpb25Ub1NlcnZlcigpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlJREJD
b25uZWN0aW9uVG9TZXJ2ZXJEZWxldGVnYXRlPiBlbXB0eURlbGVnYXRlOworICAgICAgICBzdGF0
aWMgYXV0byYgZW1wdHlDb25uZWN0aW9uID0gSURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OmNyZWF0ZShlbXB0eURlbGVnYXRlLmdldCgpKS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVy
biBlbXB0eUNvbm5lY3Rpb247CiAgICAgfQogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5k
ZXggN2YwZTAwZGQyOGRkOWY5YTE0MDQwNjc2NDZmNDYwNWE5MjRjZTU3My4uMjAzZjVhZTliNDI4
NGZlMTBkZWEyZTRmOGI2ZWRiMDE0MjlhZDA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xNTAs
NyArMTUwLDYgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogI2luY2x1ZGUgIklE
QkNvbm5lY3Rpb25Ub1NlcnZlci5oIgotI2luY2x1ZGUgIkluUHJvY2Vzc0lEQlNlcnZlci5oIgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2ViRGF0YWJhc2VQcm92aWRlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJEYXRhYmFzZVByb3ZpZGVyLmgKaW5k
ZXggZDRlN2YxY2YwNDAyY2M5NzJhZWM2MWFiMTIwZGIwODM5NGIyNTBkZi4uOGU5ZjI4Yjc1YzNk
OGU1OGVkOGYxMmVmMWVkOGVmNGQyNDZjOTRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJEYXRhYmFzZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJEYXRhYmFzZVByb3ZpZGVyLmgKQEAgLTI3LDcg
KzI3LDYgQEAKICNkZWZpbmUgV2ViRGF0YWJhc2VQcm92aWRlcl9oCiAKICNpbmNsdWRlIDxXZWJD
b3JlL0RhdGFiYXNlUHJvdmlkZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0luUHJvY2Vzc0lEQlNl
cnZlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvQ01ha2VMaXN0cy50eHQKaW5kZXggMGMzZjUyNDhlMDRiNDEyN2I2YmZkYjYw
NTlkNWNlOGYzZWMwYTk3Zi4uMDI2NjViZDYyNDZhMjYxY2EzYTc0NzAzNzk0ZWFkMWNhOWZjMTI3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L0NNYWtlTGlzdHMudHh0CkBAIC0zLDYgKzMsNyBAQCBpbmNsdWRl
KFdlYktpdENvbW1vbikKIHNldF9wcm9wZXJ0eShESVJFQ1RPUlkgLiBQUk9QRVJUWSBGT0xERVIg
IldlYktpdExlZ2FjeSIpCiAKIHNldChXZWJLaXRMZWdhY3lfU09VUkNFUworICAgIFN0b3JhZ2Uv
SW5wcm9jZXNzSURCU2VydmVyLmNwcAogICAgIFN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAog
ICAgIFN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAogICAgIFN0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Q
cm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nl
c3NJREJTZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmZTNiOGZiOGFhMDc0YTU3M2EwYjM3YTgxOGFl
YzAyZDdmNzA4NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcApAQCAtMCwwICsxLDQ2MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJJblByb2Nlc3NJREJTZXJ2ZXIuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQorCisjaW5jbHVkZSA8V2ViQ29yZS9JREJDdXJzb3JJbmZvLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9JREJHZXRSZWNvcmREYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJJdGVyYXRl
Q3Vyc29yRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5UmFuZ2VEYXRhLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9JREJPcGVuREJSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJS
ZXF1ZXN0RGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSURCUmVzdWx0RGF0YS5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvSURCVHJhbnNhY3Rpb25JbmZvLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJW
YWx1ZS5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCitSZWY8SW5Qcm9jZXNzSURCU2VydmVyPiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit7CisgICAgUmVmPEluUHJvY2Vzc0lEQlNlcnZl
cj4gc2VydmVyID0gYWRvcHRSZWYoKm5ldyBJblByb2Nlc3NJREJTZXJ2ZXIoc2Vzc2lvbklEKSk7
CisgICAgc2VydmVyLT5tX3NlcnZlci0+cmVnaXN0ZXJDb25uZWN0aW9uKHNlcnZlci0+Y29ubmVj
dGlvblRvQ2xpZW50KCkpOworICAgIHJldHVybiBzZXJ2ZXI7Cit9CisKK1JlZjxJblByb2Nlc3NJ
REJTZXJ2ZXI+IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgpCit7CisgICAgUmVmPElu
UHJvY2Vzc0lEQlNlcnZlcj4gc2VydmVyID0gYWRvcHRSZWYoKm5ldyBJblByb2Nlc3NJREJTZXJ2
ZXIoc2Vzc2lvbklELCBkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKKyAgICBzZXJ2ZXItPm1fc2Vy
dmVyLT5yZWdpc3RlckNvbm5lY3Rpb24oc2VydmVyLT5jb25uZWN0aW9uVG9DbGllbnQoKSk7Cisg
ICAgcmV0dXJuIHNlcnZlcjsKK30KKworSW5Qcm9jZXNzSURCU2VydmVyOjp+SW5Qcm9jZXNzSURC
U2VydmVyKCkgPSBkZWZhdWx0OworCitTdG9yYWdlUXVvdGFNYW5hZ2VyKiBJblByb2Nlc3NJREJT
ZXJ2ZXI6OnF1b3RhTWFuYWdlcihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKK3sKKyAgICBy
ZXR1cm4gbV9xdW90YU1hbmFnZXJzLmVuc3VyZShvcmlnaW4sIFtdIHsKKyAgICAgICAgcmV0dXJu
IFN0b3JhZ2VRdW90YU1hbmFnZXI6OmNyZWF0ZShTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0
UXVvdGEoKSwgW10geworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0sIFtdKHVpbnQ2
NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2Us
IGF1dG8gY2FsbGJhY2spIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHF1b3RhICsgY3VycmVudFNw
YWNlICsgc3BhY2VJbmNyZWFzZSk7CisgICAgICAgIH0pOworICAgIH0pLml0ZXJhdG9yLT52YWx1
ZS5nZXQoKTsKK30KKworc3RhdGljIGlubGluZSBJREJTZXJ2ZXI6OklEQlNlcnZlcjo6U3RvcmFn
ZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyIHN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVl
c3RlcihJblByb2Nlc3NJREJTZXJ2ZXImIHNlcnZlcikKK3sKKyAgICByZXR1cm4gW3NlcnZlciA9
ICZzZXJ2ZXIsIHdlYWtTZXJ2ZXIgPSBtYWtlV2Vha1B0cihzZXJ2ZXIpXShjb25zdCBDbGllbnRP
cmlnaW4mIG9yaWdpbiwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpIG11dGFibGUgeworICAgICAg
ICBhdXRvKiBzdG9yYWdlUXVvdGFNYW5hZ2VyID0gd2Vha1NlcnZlciA/IHNlcnZlci0+cXVvdGFN
YW5hZ2VyKG9yaWdpbikgOiBudWxscHRyOworICAgICAgICByZXR1cm4gc3RvcmFnZVF1b3RhTWFu
YWdlciA/IHN0b3JhZ2VRdW90YU1hbmFnZXItPnJlcXVlc3RTcGFjZU9uQmFja2dyb3VuZFRocmVh
ZChzcGFjZVJlcXVlc3RlZCkgOiBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueTsK
KyAgICB9OworfQorCitJblByb2Nlc3NJREJTZXJ2ZXI6OkluUHJvY2Vzc0lEQlNlcnZlcihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgOiBtX3NlcnZlcihJREJTZXJ2ZXI6OklEQlNlcnZl
cjo6Y3JlYXRlKHNlc3Npb25JRCwgc3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyKCp0
aGlzKSkpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICByZWxheEFkb3B0aW9u
UmVxdWlyZW1lbnQoKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlciA9IElEQkNsaWVudDo6SURC
Q29ubmVjdGlvblRvU2VydmVyOjpjcmVhdGUoKnRoaXMpOworICAgIG1fY29ubmVjdGlvblRvQ2xp
ZW50ID0gSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSgqdGhpcyk7Cit9
CisKK0luUHJvY2Vzc0lEQlNlcnZlcjo6SW5Qcm9jZXNzSURCU2VydmVyKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgpCisgICAgOiBt
X3NlcnZlcihJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y3JlYXRlKHNlc3Npb25JRCwgZGF0YWJhc2VE
aXJlY3RvcnlQYXRoLCBzdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXIoKnRoaXMpKSkK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHJlbGF4QWRvcHRpb25SZXF1aXJl
bWVudCgpOworICAgIG1fY29ubmVjdGlvblRvU2VydmVyID0gSURCQ2xpZW50OjpJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgbV9jb25uZWN0aW9uVG9DbGllbnQgPSBJ
REJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKCp0aGlzKTsKK30KKworSURC
Q29ubmVjdGlvbklkZW50aWZpZXIgSW5Qcm9jZXNzSURCU2VydmVyOjppZGVudGlmaWVyKCkgY29u
c3QKK3sKKyAgICAvLyBBbiBpbnN0YW5jZSBvZiBJblByb2Nlc3NJREJTZXJ2ZXIgYWx3YXlzIGhh
cyBhIDE6MSByZWxhdGlvbnNoaXAgd2l0aCBpdHMgaW5zdGFuY2Ugb2YgSURCU2VydmVyLgorICAg
IC8vIFRoZXJlZm9yZSB0aGUgY29ubmVjdGlvbiBpZGVudGlmaWVyIGJldHdlZW4gdGhlIHR3byBj
YW4gYWx3YXlzIGJlICIxIi4KKyAgICByZXR1cm4gUHJvY2Vzczo6aWRlbnRpZmllcigpOworfQor
CitJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgSW5Qcm9jZXNzSURCU2VydmVyOjpj
b25uZWN0aW9uVG9TZXJ2ZXIoKSBjb25zdAoreworICAgIHJldHVybiAqbV9jb25uZWN0aW9uVG9T
ZXJ2ZXI7Cit9CisKK0lEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmNvbm5lY3Rpb25Ub0NsaWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICptX2Nv
bm5lY3Rpb25Ub0NsaWVudDsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZURh
dGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgcmVxdWVzdERhdGFdIHsKKyAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZURhdGFiYXNlKHJlcXVl
c3REYXRhKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0
ZURhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgUnVuTG9v
cDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHJlc3VsdERhdGFdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZERlbGV0
ZURhdGFiYXNlKHJlc3VsdERhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sK
KyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGFdIHsKKyAgICAgICAgbV9zZXJ2ZXItPm9wZW5EYXRh
YmFzZShyZXF1ZXN0RGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpkaWRPcGVuRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAg
ICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0geworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+
ZGlkT3BlbkRhdGFiYXNlKHJlc3VsdERhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6ZGlkQWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQoreworICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yXSB7CisgICAgICAgIG1fY29u
bmVjdGlvblRvU2VydmVyLT5kaWRBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgZXJyb3IpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ29t
bWl0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJvcikKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBlcnJvcl0geworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+
ZGlkQ29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcik7CisgICAg
fSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDcmVhdGVPYmplY3RTdG9yZShj
b25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHRE
YXRhXSB7CisgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRDcmVhdGVPYmplY3RTdG9y
ZShyZXN1bHREYXRhKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRp
ZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7Cisg
ICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIt
PmRpZERlbGV0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpOworICAgIH0pOworfQorCit2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkUmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0
YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0geworICAgICAgICBt
X2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkUmVuYW1lT2JqZWN0U3RvcmUocmVzdWx0RGF0YSk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDbGVhck9iamVjdFN0b3Jl
KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3Vs
dERhdGFdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZENsZWFyT2JqZWN0U3Rv
cmUocmVzdWx0RGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpk
aWRDcmVhdGVJbmRleChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCByZXN1bHREYXRhXSB7CisgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRD
cmVhdGVJbmRleChyZXN1bHREYXRhKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJT
ZXJ2ZXI6OmRpZERlbGV0ZUluZGV4KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7
CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2
ZXItPmRpZERlbGV0ZUluZGV4KHJlc3VsdERhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGlkUmVuYW1lSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0
RGF0YSkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0geworICAgICAgICBtX2Nvbm5lY3Rp
b25Ub1NlcnZlci0+ZGlkUmVuYW1lSW5kZXgocmVzdWx0RGF0YSk7CisgICAgfSk7Cit9CisKK3Zv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRQdXRPckFkZChjb25zdCBJREJSZXN1bHREYXRhJiBy
ZXN1bHREYXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7CisgICAgICAgIG1fY29u
bmVjdGlvblRvU2VydmVyLT5kaWRQdXRPckFkZChyZXN1bHREYXRhKTsKKyAgICB9KTsKK30KKwor
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldFJlY29yZChjb25zdCBJREJSZXN1bHREYXRh
JiByZXN1bHREYXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7CisgICAgICAgIG1f
Y29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRSZWNvcmQocmVzdWx0RGF0YSk7CisgICAgfSk7Cit9
CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJl
c3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKKyAg
ICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZEdldEFsbFJlY29yZHMocmVzdWx0RGF0YSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRDb3VudChjb25z
dCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRh
XSB7CisgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRDb3VudChyZXN1bHREYXRh
KTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZVJlY29y
ZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1
bHREYXRhXSB7CisgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWREZWxldGVSZWNvcmQo
cmVzdWx0RGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRP
cGVuQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgUnVuTG9v
cDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHJlc3VsdERhdGFdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZE9wZW5D
dXJzb3IocmVzdWx0RGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpkaWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7Cisg
ICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIt
PmRpZEl0ZXJhdGVDdXJzb3IocmVzdWx0RGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9j
ZXNzSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgcmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXNvdXJjZUlkZW50aWZp
ZXJdIHsKKyAgICAgICAgbV9zZXJ2ZXItPmFib3J0VHJhbnNhY3Rpb24ocmVzb3VyY2VJZGVudGlm
aWVyKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbW1pdFRyYW5z
YWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVzb3VyY2VJZGVudGlmaWVyKQor
eworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByZXNvdXJjZUlkZW50aWZpZXJdIHsKKyAgICAgICAgbV9zZXJ2ZXIt
PmNvbW1pdFRyYW5zYWN0aW9uKHJlc291cmNlSWRlbnRpZmllcik7CisgICAgfSk7Cit9CisKK3Zv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyXSB7
CisgICAgICAgIG1fc2VydmVyLT5kaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIp
OworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlc3VsdERhdGEsIGNvbnN0IElEQk9iamVjdFN0b3Jl
SW5mbyYgaW5mbykKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YSwgaW5mb10geworICAgICAg
ICBtX3NlcnZlci0+Y3JlYXRlT2JqZWN0U3RvcmUocmVzdWx0RGF0YSwgaW5mbyk7CisgICAgfSk7
Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1l
KQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lXSB7CisgICAg
ICAgIG1fc2VydmVyLT5kZWxldGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVO
YW1lKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZU9iamVj
dFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCit7CisgICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWVdIHsKKyAgICAgICAg
bV9zZXJ2ZXItPnJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIG5ld05hbWUpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
Y2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2
NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEs
IG9iamVjdFN0b3JlSWRlbnRpZmllcl0geworICAgICAgICBtX3NlcnZlci0+Y2xlYXJPYmplY3RT
dG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKKyAgICB9KTsKK30KKwor
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQoreworICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCByZXF1ZXN0RGF0YSwgaW5mb10geworICAgICAgICBtX3NlcnZlci0+Y3JlYXRlSW5kZXgocmVx
dWVzdERhdGEsIGluZm8pOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
ZGVsZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQoreworICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWVdIHsK
KyAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGluZGV4TmFtZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2Vy
dmVyOjpyZW5hbWVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2
NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIG5ld05hbWUpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZV0geworICAgICAgICBtX3Nl
cnZlci0+cmVuYW1lSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5k
ZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJT
ZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3Qg
SURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCBjb25zdCBJbmRleGVk
REI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlKQoreworICAgIFJ1bkxv
b3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCByZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGVdIHsKKyAgICAg
ICAgbV9zZXJ2ZXItPnB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3Zlcndy
aXRlTW9kZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRSZWNv
cmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRSZWNvcmRE
YXRhJiBnZXRSZWNvcmREYXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwgZ2V0UmVj
b3JkRGF0YV0geworICAgICAgICBtX3NlcnZlci0+Z2V0UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRS
ZWNvcmREYXRhKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFs
bFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRB
bGxSZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEpCit7CisgICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVl
c3REYXRhLCBnZXRBbGxSZWNvcmRzRGF0YV0geworICAgICAgICBtX3NlcnZlci0+Z2V0QWxsUmVj
b3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEpOworICAgIH0pOworfQorCit2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKK3sKKyAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgcmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YV0geworICAgICAgICBtX3NlcnZlci0+Z2V0
Q291bnQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKK3sKKyAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgcmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YV0geworICAgICAgICBtX3NlcnZlci0+ZGVs
ZXRlUmVjb3JkKHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEpOworICAgIH0pOworfQorCit2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCit7CisgICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJl
cXVlc3REYXRhLCBpbmZvXSB7CisgICAgICAgIG1fc2VydmVyLT5vcGVuQ3Vyc29yKHJlcXVlc3RE
YXRhLCBpbmZvKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Oml0ZXJh
dGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJdGVy
YXRlQ3Vyc29yRGF0YSYgZGF0YSkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIGRhdGFd
IHsKKyAgICAgICAgbV9zZXJ2ZXItPml0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGRhdGEpOwor
ICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rp
b24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNh
Y3Rpb25JbmZvJiBpbmZvKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBpbmZvXSB7CisgICAgICAgIG1fc2VydmVyLT5lc3RhYmxpc2hUcmFuc2FjdGlvbihk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBpbmZvKTsKKyAgICB9KTsKK30KKwordm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoSURCU2VydmVyOjpVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pCit7
CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9u
LmlkZW50aWZpZXIoKSwgcmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3RlZFZlcnNpb25dIHsKKyAg
ICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3RlZFZlcnNp
b24pOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkU3RhcnRUcmFu
c2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIGVycm9yXSB7CisgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRTdGFy
dFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3IpOworICAgIH0pOworfQor
Cit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ2xvc2VGcm9tU2VydmVyKElEQlNlcnZlcjo6
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJREJFcnJvciYg
ZXJyb3IpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIgPSBj
b25uZWN0aW9uLmlkZW50aWZpZXIoKSwgZXJyb3JdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9T
ZXJ2ZXItPmRpZENsb3NlRnJvbVNlcnZlcihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBl
cnJvcik7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpub3RpZnlPcGVu
REJSZXF1ZXN0QmxvY2tlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKQoreworICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgb2xkVmVyc2lvbiwgbmV3VmVyc2lvbl0gewor
ICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQo
cmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pOworICAgIH0pOworfQor
Cit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3Nl
KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCit7CisgICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXJdIHsKKyAgICAgICAgbV9zZXJ2ZXItPmRhdGFi
YXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZShkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsK
KyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlv
bkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQoreworICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyXSB7CisgICAgICAgIG1fc2VydmVy
LT5kYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7
CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjphYm9ydE9wZW5BbmRVcGdy
YWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQoreworICAgIFJ1bkxv
b3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXJd
IHsKKyAgICAgICAgbV9zZXJ2ZXItPmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICB9KTsKK30K
Kwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWlu
dDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSW5kZXhlZERCOjpDb25uZWN0aW9uQ2xv
c2VkT25CZWhhbGZPZlNlcnZlciBjb25uZWN0aW9uQ2xvc2VkKQoreworICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgY29ubmVjdGlv
bkNsb3NlZF0geworICAgICAgICBtX3NlcnZlci0+ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgY29ubmVjdGlv
bkNsb3NlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuREJS
ZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAg
ICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcmVxdWVzdERhdGFdIHsKKyAgICAgICAgbV9zZXJ2ZXItPm9wZW5EQlJlcXVl
c3RDYW5jZWxsZWQocmVxdWVzdERhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6Y29uZmlybURpZENsb3NlRnJvbVNlcnZlcih1aW50NjRfdCBkYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyXSB7CisgICAgICAgIG1fc2VydmVyLT5jb25maXJtRGlkQ2xvc2VGcm9tU2VydmVyKGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lcyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG1haW5GcmFtZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2lu
LCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluRnJhbWVPcmlnaW4s
IG9wZW5pbmdPcmlnaW4sIGNhbGxiYWNrSURdIHsKKyAgICAgICAgbV9zZXJ2ZXItPmdldEFsbERh
dGFiYXNlTmFtZXMobV9jb25uZWN0aW9uVG9TZXJ2ZXItPmlkZW50aWZpZXIoKSwgbWFpbkZyYW1l
T3JpZ2luLCBvcGVuaW5nT3JpZ2luLCBjYWxsYmFja0lEKTsKKyAgICB9KTsKK30KKwordm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbERhdGFiYXNlTmFtZXModWludDY0X3QgY2FsbGJh
Y2tJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRhdGFiYXNlTmFtZXMpCit7CisgICAgUnVuTG9v
cDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNhbGxiYWNrSUQsIGRhdGFiYXNlTmFtZXNdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9T
ZXJ2ZXItPmRpZEdldEFsbERhdGFiYXNlTmFtZXMoY2FsbGJhY2tJRCwgZGF0YWJhc2VOYW1lcyk7
CisgICAgfSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lYmVhMjdlMmYxMDNlNjU5NGQyNDMyMzQ5MWZhODJhM2E5ZDFmNmM0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5o
CkBAIC0wLDAgKzEsMTM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgPFdlYkNvcmUvSURCQ29ubmVjdGlvblRv
Q2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0lEQlNlcnZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1
b3RhTWFuYWdlci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBQQUwgewor
Y2xhc3MgU2Vzc2lvbklEOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ2xpZW50
T3JpZ2luOworCituYW1lc3BhY2UgSURCQ2xpZW50IHsKK2NsYXNzIElEQkNvbm5lY3Rpb25Ub1Nl
cnZlcjsKK30KKworbmFtZXNwYWNlIElEQlNlcnZlciB7CitjbGFzcyBJREJTZXJ2ZXI7Cit9Cit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK2NsYXNzIEluUHJvY2Vzc0lEQlNlcnZlciBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRl
LCBwdWJsaWMgV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0
ZSwgcHVibGljIFJlZkNvdW50ZWQ8SW5Qcm9jZXNzSURCU2VydmVyPiB7CitwdWJsaWM6CisgICAg
dXNpbmcgV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZTo6
d2Vha1B0ckZhY3Rvcnk7CisgICAgdXNpbmcgV2Vha1ZhbHVlVHlwZSA9IFdlYkNvcmU6OklEQkNs
aWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGU6OldlYWtWYWx1ZVR5cGU7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4gY3JlYXRlKFBB
TDo6U2Vzc2lvbklEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEluUHJvY2Vzc0lE
QlNlcnZlcj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGly
ZWN0b3J5UGF0aCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JblByb2Nlc3NJREJT
ZXJ2ZXIoKTsKKworICAgIFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVy
JiBjb25uZWN0aW9uVG9TZXJ2ZXIoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OklE
QkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50KCkgY29uc3Q7CisgICAgV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyLmdl
dCgpOyB9CisKKyAgICAvLyBJREJDb25uZWN0aW9uVG9TZXJ2ZXIKKyAgICB2b2lkIGRlbGV0ZURh
dGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJikgZmluYWw7CisgICAgdm9pZCBv
cGVuRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKSBmaW5hbDsKKyAgICB2
b2lkIGFib3J0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVy
JikgZmluYWw7CisgICAgdm9pZCBjb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJS
ZXNvdXJjZUlkZW50aWZpZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZpbmlzaEhhbmRsaW5nVmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYpIGZpbmFsOworICAgIHZv
aWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25z
dCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZUluZm8mKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZU9i
amVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJiBv
YmplY3RTdG9yZU5hbWUpIGZpbmFsOworICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoY29uc3Qg
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbmV3TmFtZSkgZmluYWw7CisgICAgdm9pZCBjbGVhck9iamVjdFN0b3Jl
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCSW5kZXhJbmZvJikgZmluYWw7CisgICAgdm9p
ZCBkZWxldGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpIGZpbmFsOworICAg
IHZvaWQgcmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBuZXdOYW1lKSBmaW5hbDsKKyAgICB2b2lkIHB1dE9yQWRkKGNvbnN0IFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIGNvbnN0IFdlYkNv
cmU6OklEQlZhbHVlJiwgY29uc3QgV2ViQ29yZTo6SW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3
cml0ZU1vZGUpIGZpbmFsOworICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCR2V0UmVjb3JkRGF0YSYpIGZpbmFsOworICAg
IHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IFdlYkNvcmU6OklEQkdldEFsbFJlY29yZHNEYXRhJikgZmluYWw7CisgICAgdm9pZCBnZXRDb3Vu
dChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleVJh
bmdlRGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJikgZmluYWw7Cisg
ICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3Qg
V2ViQ29yZTo6SURCQ3Vyc29ySW5mbyYpIGZpbmFsOworICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihj
b25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQkl0ZXJhdGVD
dXJzb3JEYXRhJikgZmluYWw7CisgICAgdm9pZCBlc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRf
dCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJUcmFuc2Fj
dGlvbkluZm8mKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9z
ZSh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSBmaW5hbDsKKyAgICB2b2lk
IGRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyKSBmaW5hbDsKKyAgICB2b2lkIGFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgZGlk
RmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9m
U2VydmVyKSBmaW5hbDsKKyAgICB2b2lkIG9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGNvbmZpcm1EaWRDbG9zZUZy
b21TZXJ2ZXIodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikgZmluYWw7Cisg
ICAgdm9pZCBnZXRBbGxEYXRhYmFzZU5hbWVzKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYgbWFpbkZyYW1lT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IG9wZW5pbmdPcmlnaW4sIHVpbnQ2NF90IGNhbGxiYWNrSUQpIGZpbmFsOworCisgICAgLy8gSURC
Q29ubmVjdGlvblRvQ2xpZW50CisgICAgV2ViQ29yZTo6SURCQ29ubmVjdGlvbklkZW50aWZpZXIg
aWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgZGlkRGVsZXRlRGF0YWJhc2UoY29u
c3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkT3BlbkRhdGFi
YXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEFi
b3J0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJikgZmluYWw7CisgICAg
dm9pZCBkaWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBm
aW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJl
c3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdl
YkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlbmFtZU9iamVjdFN0
b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZENs
ZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAg
IHZvaWQgZGlkQ3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFs
OworICAgIHZvaWQgZGlkRGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYp
IGZpbmFsOworICAgIHZvaWQgZGlkUmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0
RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkUHV0T3JBZGQoY29uc3QgV2ViQ29yZTo6SURCUmVz
dWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkR2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklE
QlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEdldEFsbFJlY29yZHMoY29uc3QgV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkR2V0Q291bnQoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkRGVsZXRlUmVjb3Jk
KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZE9wZW5D
dXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlk
SXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAg
dm9pZCBmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVy
JiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikgZmluYWw7Cisg
ICAgdm9pZCBkaWRTdGFydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYp
IGZpbmFsOworICAgIHZvaWQgZGlkQ2xvc2VGcm9tU2VydmVyKFdlYkNvcmU6OklEQlNlcnZlcjo6
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBm
aW5hbDsKKyAgICB2b2lkIG5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0IFdlYkNvcmU6
OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZl
cnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24pIGZpbmFsOworICAgIHZvaWQgZGlkR2V0QWxsRGF0
YWJhc2VOYW1lcyh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGF0
YWJhc2VOYW1lcykgZmluYWw7CisKKyAgICB2b2lkIHJlZigpIG92ZXJyaWRlIHsgUmVmQ291bnRl
ZDxJblByb2Nlc3NJREJTZXJ2ZXI+OjpyZWYoKTsgfQorICAgIHZvaWQgZGVyZWYoKSBvdmVycmlk
ZSB7IFJlZkNvdW50ZWQ8SW5Qcm9jZXNzSURCU2VydmVyPjo6ZGVyZWYoKTsgfQorCisgICAgV2Vi
Q29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlciogcXVvdGFNYW5hZ2VyKGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEluUHJvY2Vzc0lEQlNlcnZl
cihQQUw6OlNlc3Npb25JRCk7CisgICAgSW5Qcm9jZXNzSURCU2VydmVyKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7CisKKyAgICBSZWY8V2ViQ29y
ZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI+IG1fc2VydmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcj4gbV9jb25uZWN0aW9uVG9TZXJ2ZXI7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX2Nv
bm5lY3Rpb25Ub0NsaWVudDsKKworICAgIEhhc2hNYXA8V2ViQ29yZTo6Q2xpZW50T3JpZ2luLCBS
ZWZQdHI8V2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcj4+IG1fcXVvdGFNYW5hZ2VyczsKK307
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcAppbmRleCA3ZjAzOGYz
YWNjOGU5OWVkOTg1M2MyZjJmZGI0NzM1NDFiOGQwZTc4Li5jMmY3MWJhZjNkMTdmNGVjYWMwM2Vk
YWZmN2M5MjM2ZjNjODIxZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvV2ViRGF0YWJhc2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuY3BwCkBAIC00NiwxNCArNDYsMTQgQEAgV2ViRGF0YWJh
c2VQcm92aWRlcjo6fldlYkRhdGFiYXNlUHJvdmlkZXIoKQogV2ViQ29yZTo6SURCQ2xpZW50OjpJ
REJDb25uZWN0aW9uVG9TZXJ2ZXImIFdlYkRhdGFiYXNlUHJvdmlkZXI6OmlkYkNvbm5lY3Rpb25U
b1NlcnZlckZvclNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkKIHsKICAg
ICByZXR1cm4gbV9pZGJTZXJ2ZXJNYXAuZW5zdXJlKHNlc3Npb25JRCwgWyZzZXNzaW9uSURdIHsK
LSAgICAgICAgcmV0dXJuIHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8gV2ViQ29yZTo6SW5Qcm9j
ZXNzSURCU2VydmVyOjpjcmVhdGUoc2Vzc2lvbklEKSA6IFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNl
cnZlcjo6Y3JlYXRlKHNlc3Npb25JRCwgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5UGF0aCgpKTsK
KyAgICAgICAgcmV0dXJuIHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8gSW5Qcm9jZXNzSURCU2Vy
dmVyOjpjcmVhdGUoc2Vzc2lvbklEKSA6IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKHNlc3Np
b25JRCwgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5UGF0aCgpKTsKICAgICB9KS5pdGVyYXRvci0+
dmFsdWUtPmNvbm5lY3Rpb25Ub1NlcnZlcigpOwogfQogCiB2b2lkIFdlYkRhdGFiYXNlUHJvdmlk
ZXI6OmRlbGV0ZUFsbERhdGFiYXNlcygpCiB7CiAgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX2lk
YlNlcnZlck1hcC52YWx1ZXMoKSkKLSAgICAgICAgc2VydmVyLT5pZGJTZXJ2ZXIoKS5jbG9zZUFu
ZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2UoLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbXSB7
IH0pOworICAgICAgICBzZXJ2ZXItPnNlcnZlcigpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9k
aWZpZWRTaW5jZSgtV2FsbFRpbWU6OmluZmluaXR5KCksIFtdIHsgfSk7CiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlk
ZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmgK
aW5kZXggZDY2N2I4NjMxMjI5MzlkOTRjOGI5NGMzYmNmYTE1Njk4Mjk0ZTg2Zi4uYWQ5Y2I0ZjA4
ZmJiODA1MmU2N2EwMDZhNzFmNGZjNzUwODVlNGQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5oCkBAIC0zMSw3ICszMSw3IEBACiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0j
aW5jbHVkZSA8V2ViQ29yZS9JblByb2Nlc3NJREJTZXJ2ZXIuaD4KKyNpbmNsdWRlICJJblByb2Nl
c3NJREJTZXJ2ZXIuaCIKICNlbmRpZgogCiBjbGFzcyBXZWJEYXRhYmFzZVByb3ZpZGVyIGZpbmFs
IDogcHVibGljIFdlYkNvcmU6OkRhdGFiYXNlUHJvdmlkZXIgewpAQCAtNTIsNiArNTIsNiBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyBTdHJpbmcgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5UGF0aCgp
OwogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Np
b25JRCwgUmVmUHRyPFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcj4+IG1faWRiU2VydmVyTWFw
OworICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+
PiBtX2lkYlNlcnZlck1hcDsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1dlYktpdExlZ2FjeS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNl
NmViMzYzMWM5Njg2NzM1MzAwNDdjNmVkNDBmODgzNzU2YzdjMGUuLjQxYjk0NWM5MGMxNmI2MWY4
NjNmNTRjY2VhNWY0YWMxOTljY2RlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
V2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjI3LDYg
KzIyNyw4IEBACiAJCTkzNEMxMTY3MEQ4NzEwQkIwMEMzMkFCRCAvKiBXZWJEeW5hbWljU2Nyb2xs
QmFyc1ZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM0QzExNjYwRDg3MTBCQjAwQzMyQUJEIC8qIFdlYkR5bmFtaWNTY3JvbGxCYXJz
Vmlld0ludGVybmFsLmggKi87IH07CiAJCTkzNEM0QTkxMEYwMTQwNkMwMDkzNzJDMCAvKiBXZWJO
U09iamVjdEV4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzNEM0QTkwMEYwMTQwNkMwMDkzNzJDMCAvKiBXZWJOU09iamVjdEV4dHJhcy5tbSAq
LzsgfTsKIAkJOTM0QzRBQTAwRjAxNDFGNzAwOTM3MkMwIC8qIFdlYlJlc291cmNlSW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEM0QTlG
MEYwMTQxRjcwMDkzNzJDMCAvKiBXZWJSZXNvdXJjZUludGVybmFsLmggKi87IH07CisJCTkzNjQw
MDZFMjM5OTZFODEwMDFFMTg1RSAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM2NDAwNkMyMzk5NkU4MDAwMUUx
ODVFIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5jcHAgKi87IH07CisJCTkzNjQwMDZGMjM5OTZFODEw
MDFFMTg1RSAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNjQwMDZEMjM5OTZFODEwMDFFMTg1RSAvKiBJblByb2Nl
c3NJREJTZXJ2ZXIuaCAqLzsgfTsKIAkJOTM2QTJERTgwRkQyRDA4MDAwRDMxMkRCIC8qIFdlYlRl
eHRDb21wbGV0aW9uQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNkEyREU3MEZEMkQwODAwMEQzMTJEQiAvKiBXZWJUZXh0Q29tcGxl
dGlvbkNvbnRyb2xsZXIubW0gKi87IH07CiAJCTkzNkEyREVBMEZEMkQwODQwMEQzMTJEQiAvKiBX
ZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzNkEyREU5MEZEMkQwODQwMEQzMTJEQiAvKiBXZWJUZXh0Q29t
cGxldGlvbkNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJOTM5MUYyNzUxMjFCMzhCRDAwRUJGN0U4IC8q
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTFGMjczMTIxQjM4QkQwMEVCRjdFOCAvKiBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmggKi87IH07CkBAIC0xMDI0LDYgKzEwMjYsOCBAQAogCQk5MzRDMTE2
NjBEODcxMEJCMDBDMzJBQkQgLyogV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3SW50ZXJuYWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3
SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0QzRBOTAwRjAxNDA2
QzAwOTM3MkMwIC8qIFdlYk5TT2JqZWN0RXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViTlNPYmplY3RFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzNEM0QTlGMEYwMTQxRjcwMDkzNzJDMCAvKiBXZWJSZXNvdXJjZUludGVy
bmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlSW50ZXJu
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM2NDAwNkMyMzk5NkU4MDAwMUUx
ODVFIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBJblByb2Nlc3NJREJTZXJ2ZXIuY3BwOyBwYXRoID0gU3RvcmFnZS9JblByb2Nl
c3NJREJTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTkzNjQwMDZE
MjM5OTZFODEwMDFFMTg1RSAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gSW5Qcm9jZXNzSURCU2VydmVyLmg7IHBhdGggPSBTdG9yYWdlL0lu
UHJvY2Vzc0lEQlNlcnZlci5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTkzNkEy
REU3MEZEMkQwODAwMEQzMTJEQiAvKiBXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJUZXh0Q29tcGxldGlvbkNv
bnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNkEyREU5MEZEMkQw
ODQwMEQzMTJEQiAvKiBXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTFGMjczMTIxQjM4QkQwMEVCRjdFOCAvKiBXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE4MzMsNiArMTgzNyw4IEBACiAJCTUxMUYzRkMzMENFQ0M3RTIwMDg1MjU2NSAvKiBTdG9y
YWdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5MzY0
MDA2QzIzOTk2RTgwMDAxRTE4NUUgLyogSW5Qcm9jZXNzSURCU2VydmVyLmNwcCAqLywKKwkJCQk5
MzY0MDA2RDIzOTk2RTgxMDAxRTE4NUUgLyogSW5Qcm9jZXNzSURCU2VydmVyLmggKi8sCiAJCQkJ
MUE2QjMxMjQxQTUxRjNBOTAwNDIyOTc1IC8qIFN0b3JhZ2VBcmVhSW1wbC5jcHAgKi8sCiAJCQkJ
MUE2QjMxMjUxQTUxRjNBOTAwNDIyOTc1IC8qIFN0b3JhZ2VBcmVhSW1wbC5oICovLAogCQkJCTFB
NkIzMTI2MUE1MUYzQTkwMDQyMjk3NSAvKiBTdG9yYWdlQXJlYVN5bmMuY3BwICovLApAQCAtMjg4
MSw2ICsyODg3LDcgQEAKIAkJCQk5M0Q0Mzc5OTFENTdBQkVGMDBBQjg1RUEgLyogRXhjZXB0aW9u
SGFuZGxlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNjA1MTk0MTc1MDJBNUQwMEJDNjJGNSAv
KiBIaXN0b3J5UHJvcGVydHlMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThERUQ1MDBFRTg4
QjhBMDBGMjUwMjIgLyogSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBpbiBIZWFkZXJzICov
LAorCQkJCTkzNjQwMDZGMjM5OTZFODEwMDFFMTg1RSAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUExMEMxRDMyMTgyMDJGQzUwMDM2ODgzQSAvKiBNZW1vcnlNZWFz
dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFGNUNFQTBFRERFMUZFMDA4RDg4M0QgLyogTmV0
c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjVDRUMwRURE
RTFGRTAwOEQ4ODNEIC8qIE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5LmggaW4gSGVhZGVycyAqLywK
QEAgLTM0MDIsNiArMzQwOSw3IEBACiAJCQkJNUM5QTRFNTMyMkRFNDYyNzAwN0RCMzUzIC8qIERP
TVVJS2l0RXh0ZW5zaW9ucy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNjA1MTkzMTc1MDJBNUQw
MEJDNjJGNSAvKiBIaXN0b3J5UHJvcGVydHlMaXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4
REVENTEwRUU4OEI4QTAwRjI1MDIyIC8qIEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJOTM2NDAwNkUyMzk5NkU4MTAwMUUxODVFIC8qIEluUHJvY2Vzc0lE
QlNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTBDMUQzMzE4MjAyRkM1MDAzNjg4M0Eg
LyogTWVtb3J5TWVhc3VyZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQUY1Q0VCMEVEREUxRkUw
MDhEODgzRCAvKiBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUFBRjVDRUQwRURERTFGRTAwOEQ4ODNEIC8qIE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1t
IGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384961</attachid>
            <date>2019-12-05 14:51:14 -0800</date>
            <delta_ts>2019-12-05 15:40:55 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-204896-20191205145113.patch</filename>
            <type>text/plain</type>
            <size>84256</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjUyZjhiNzA0Yzk3MWY1
NzQ5YTBmNDI3NzBlYzc1NDBiZGRkYTM5ZS4uMjEyZjE4MmY5ZDY5ZmQ3NmJhYzA3MTZmNmU5MTVj
Mzk1NWUwOTU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTEyLTA1ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgSW5Qcm9jZXNzSURC
U2VydmVyIHRvIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA0ODk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29u
LgorCisgICAgICAgIFdlIG9ubHkgdXNlIEluUHJvY2Vzc0lEQlNlcnZlciBpbiBXZWJLaXRMZWdh
Y3kgbm93LgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIEhlYWRl
cnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5o
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaDoK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmg6
IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvSFRNTFZpZGVvRWxlbWVu
dFBpY3R1cmVJblBpY3R1cmUuY3BwOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvRW1w
dHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorCiAyMDE5LTEyLTA1ICB5
b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBpbnNwZWN0b3IvcGFn
ZS9vdmVycmlkZVNldHRpbmctTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZC5odG1sIGlzIGZhaWxp
bmcgYWZ0ZXIgcmVtb3ZhbCBvZiBpbnRlcm5hbHMuc2V0TW9ja01lZGlhQ2FwdHVyZURldmljZXNF
bmFibGVkIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAyYjc1YWY2ZDIxNDA1NzQzN2M0N2E3YzZjZjFhMGM4MDFk
ZmI2OTU4Li40MmRhNjUyNjNlMTU2OGE4ZGZlOTY0NjEyYjIwNTgyZGVmOWU1YTMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDE5LTEyLTA1ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBw
bGUuY29tPgorCisgICAgICAgIE1vdmUgSW5Qcm9jZXNzSURCU2VydmVyIHRvIFdlYktpdExlZ2Fj
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0ODk2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9EYXRhYmFzZXMvV2ViRGF0YWJhc2VQcm92aWRlci5oOgorCiAyMDE5LTEyLTA1ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR0xpYl0gRGlz
cGxheSBHU3RyZWFtZXIgdmVyc2lvbiBpbiBhYm91dDpncHUgcGFnZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZwppbmRleCBkZjk4MzViYWFkYjM4MTU4OWFhMTBkMzU3OTQzODZhYzJkNWY1ZGM1Li43M2FmODM0
OTM4ZTc4MjZjYmNhZWEwMDJkMDIwZTBiOWY5ZTk2ODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDc2IEBACisyMDE5LTEyLTA1ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUu
Y29tPgorCisgICAgICAgIE1vdmUgSW5Qcm9jZXNzSURCU2VydmVyIHRvIFdlYktpdExlZ2FjeQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0ODk2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lE
QlNlcnZlci5jcHAuCisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdlcik6CisgICAgICAgIChzdG9yYWdl
UXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXIpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVy
OjpJblByb2Nlc3NJREJTZXJ2ZXIpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjppZGVu
dGlmaWVyIGNvbnN0KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29ubmVjdGlvblRv
U2VydmVyIGNvbnN0KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29ubmVjdGlvblRv
Q2xpZW50IGNvbnN0KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlRGF0YWJh
c2UpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxldGVEYXRhYmFzZSk6Cisg
ICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChJblBy
b2Nlc3NJREJTZXJ2ZXI6OmRpZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChJblByb2Nlc3NJREJT
ZXJ2ZXI6OmRpZEFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVy
OjpkaWRDb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRp
ZENyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVs
ZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRSZW5hbWVP
YmplY3RTdG9yZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENsZWFyT2JqZWN0
U3RvcmUpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDcmVhdGVJbmRleCk6Cisg
ICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZUluZGV4KToKKyAgICAgICAgKElu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkUmVuYW1lSW5kZXgpOgorICAgICAgICAoSW5Qcm9jZXNzSURC
U2VydmVyOjpkaWRQdXRPckFkZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdl
dFJlY29yZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbFJlY29yZHMp
OgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRDb3VudCk6CisgICAgICAgIChJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZVJlY29yZCk6CisgICAgICAgIChJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRpZE9wZW5DdXJzb3IpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpk
aWRJdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRUcmFu
c2FjdGlvbik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9u
KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVP
YmplY3RTdG9yZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0
b3JlKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6cmVuYW1lT2JqZWN0U3RvcmUpOgor
ICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAg
KEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoSW5Qcm9jZXNzSURC
U2VydmVyOjpkZWxldGVJbmRleCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFt
ZUluZGV4KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6cHV0T3JBZGQpOgorICAgICAg
ICAoSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRSZWNvcmQpOgorICAgICAgICAoSW5Qcm9jZXNzSURC
U2VydmVyOjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0
Q291bnQpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVSZWNvcmQpOgorICAg
ICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKEluUHJvY2Vz
c0lEQlNlcnZlcjo6aXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6
OmVzdGFibGlzaFRyYW5zYWN0aW9uKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Zmly
ZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZFN0
YXJ0VHJhbnNhY3Rpb24pOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDbG9zZUZy
b21TZXJ2ZXIpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpub3RpZnlPcGVuREJSZXF1
ZXN0QmxvY2tlZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVj
dGlvblBlbmRpbmdDbG9zZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNl
Q29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0T3Bl
bkFuZFVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRGaXJl
VmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkRC
UmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbmZpcm1E
aWRDbG9zZUZyb21TZXJ2ZXIpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxE
YXRhYmFzZU5hbWVzKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxsRGF0
YWJhc2VOYW1lcyk6CisgICAgICAgICogU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuaDogQWRk
ZWQuCisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYkRhdGFiYXNlUHJvdmlkZXI6OmlkYkNvbm5lY3Rpb25Ub1NlcnZlckZvclNlc3Npb24pOgor
ICAgICAgICAoV2ViRGF0YWJhc2VQcm92aWRlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKToKKyAgICAg
ICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJLaXRMZWdh
Y3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0xMi0wNCAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFBhZ2VDb25maWd1cmF0aW9uOjpwcm9ncmVz
c1RyYWNrZXJDbGllbnQgc2hvdWxkIHVzZSBhIHNtYXJ0IHBvaW50ZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CmluZGV4IDg4Mjk0NmI4YjVmZDc5NjA3NzU5OWRjM2I4Zjg3OWYzZjI4Y2RjYmQuLjEzN2ZjNzhm
ODU4YWZhMTJiMTk0YzM2ZmNlM2U5NzdhOTc3N2IwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAt
NzksNyArNzksNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5oCiAgICAgTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaAogICAgIE1vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaAotICAgIE1vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaAogCiAgICAgTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFTZXNzaW9uRXZlbnRzLmgKICAgICBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25N
ZXRhZGF0YS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmgKaW5kZXggZmMxNjA0Zjc2NWFlMjVjNjNhMDlhNGE5MzFkNTAwNGNlYzA1
MGFjMS4uODg3NDZlZWU2ZDMyNzc5NDZmOGE1NmFlYWViYzdhZDdjMzI5MzYzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaApA
QCAtNTgsNyArNTgsNyBAQCBlbnVtIGNsYXNzIFNob3VsZEZvcmNlU3RvcCA6IGJvb2wgeyBObywg
WWVzIH07CiBjbGFzcyBJREJTZXJ2ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJTZXJ2ZXI+LCBw
dWJsaWMgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPElEQlNl
cnZlcj4gewogcHVibGljOgogICAgIHVzaW5nIFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVl
c3RlciA9IEZ1bmN0aW9uPFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKGNvbnN0IENsaWVu
dE9yaWdpbiYsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKT47Ci0gICAgc3RhdGljIFJlZjxJREJT
ZXJ2ZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVx
dWVzdGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8SURCU2VydmVyPiBjcmVh
dGUoUEFMOjpTZXNzaW9uSUQsIFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciYmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPElEQlNlcnZlcj4gY3JlYXRlKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgU3RvcmFnZVF1b3Rh
TWFuYWdlclNwYWNlUmVxdWVzdGVyJiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdp
c3RlckNvbm5lY3Rpb24oSURCQ29ubmVjdGlvblRvQ2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCmlu
ZGV4IDUzYjdiNjJkMzE0YzBiYTY1NmU1YjJiYzU5NjA4OGQ0ZTRmMTVmZmYuLmE0Yzg1ZjY3MGFi
ZDI1N2Y2NzdhMDQ2ZGFlOTQwMTNlYWJiMmFlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCkBAIC00OSw3
ICs0OSw3IEBAIGNsYXNzIElEQlJlcXVlc3REYXRhIHsKIHB1YmxpYzoKICAgICBJREJSZXF1ZXN0
RGF0YShjb25zdCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYsIGNvbnN0IElEQk9wZW5E
QlJlcXVlc3QmKTsKICAgICBleHBsaWNpdCBJREJSZXF1ZXN0RGF0YShJREJDbGllbnQ6OlRyYW5z
YWN0aW9uT3BlcmF0aW9uJik7Ci0gICAgSURCUmVxdWVzdERhdGEoY29uc3QgSURCUmVxdWVzdERh
dGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJREJSZXF1ZXN0RGF0YShjb25zdCBJREJSZXF1ZXN0
RGF0YSYpOwogICAgIElEQlJlcXVlc3REYXRhKElEQlJlcXVlc3REYXRhJiYpID0gZGVmYXVsdDsK
ICAgICBJREJSZXF1ZXN0RGF0YSYgb3BlcmF0b3I9KElEQlJlcXVlc3REYXRhJiYpID0gZGVmYXVs
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQlRyYW5zYWN0aW9uSW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oCmluZGV4IDdiOTQ3N2U4ZWM1NTRjOTEzZDJhNDhi
ZTU1OGUxNjMzZDkzZmNlOWIuLmI4YjQ4YTlkMzlkZDE0OWRhNTc3MjUyNjI3YmE3YzQ4ZGYwNzNk
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJUcmFuc2FjdGlvbkluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJREJUcmFuc2FjdGlvbkluZm8gY2xpZW50VHJhbnNhY3Rpb24oY29uc3QgSURC
Q2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0
U3RvcmVzLCBJREJUcmFuc2FjdGlvbk1vZGUpOwogICAgIHN0YXRpYyBJREJUcmFuc2FjdGlvbklu
Zm8gdmVyc2lvbkNoYW5nZShjb25zdCBJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYs
IGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgb3JpZ2luYWxEYXRhYmFzZUluZm8sIHVpbnQ2NF90IG5l
d1ZlcnNpb24pOwogCi0gICAgSURCVHJhbnNhY3Rpb25JbmZvKGNvbnN0IElEQlRyYW5zYWN0aW9u
SW5mbyYpOworICAgIFdFQkNPUkVfRVhQT1JUIElEQlRyYW5zYWN0aW9uSW5mbyhjb25zdCBJREJU
cmFuc2FjdGlvbkluZm8mKTsKICAgICBJREJUcmFuc2FjdGlvbkluZm8oSURCVHJhbnNhY3Rpb25J
bmZvJiYpID0gZGVmYXVsdDsKICAgICBJREJUcmFuc2FjdGlvbkluZm8mIG9wZXJhdG9yPShJREJU
cmFuc2FjdGlvbkluZm8mJikgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjViZDVhNzY3MmEzODA1NjcxNmQzNmE1
Y2NiMTM4ZjkxYjMxYTkzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJ
REJTZXJ2ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDcwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW5Qcm9jZXNzSURCU2VydmVyLmgiCi0K
LSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQotI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25U
b0NsaWVudC5oIgotI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgotI2luY2x1ZGUg
IklEQkN1cnNvckluZm8uaCIKLSNpbmNsdWRlICJJREJHZXRSZWNvcmREYXRhLmgiCi0jaW5jbHVk
ZSAiSURCSXRlcmF0ZUN1cnNvckRhdGEuaCIKLSNpbmNsdWRlICJJREJLZXlSYW5nZURhdGEuaCIK
LSNpbmNsdWRlICJJREJPcGVuREJSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiSURCUmVxdWVzdERhdGEu
aCIKLSNpbmNsdWRlICJJREJSZXN1bHREYXRhLmgiCi0jaW5jbHVkZSAiSURCVmFsdWUuaCIKLSNp
bmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiUHJvY2Vzc0lkZW50aWZpZXIuaCIKLSNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4gSW5Qcm9jZXNzSURCU2Vy
dmVyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotewotICAgIFJlZjxJblByb2Nl
c3NJREJTZXJ2ZXI+IHNlcnZlciA9IGFkb3B0UmVmKCpuZXcgSW5Qcm9jZXNzSURCU2VydmVyKHNl
c3Npb25JRCkpOwotICAgIHNlcnZlci0+bV9zZXJ2ZXItPnJlZ2lzdGVyQ29ubmVjdGlvbihzZXJ2
ZXItPmNvbm5lY3Rpb25Ub0NsaWVudCgpKTsKLSAgICByZXR1cm4gc2VydmVyOwotfQotCi1SZWY8
SW5Qcm9jZXNzSURCU2VydmVyPiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKQotewot
ICAgIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlcnZlciA9IGFkb3B0UmVmKCpuZXcgSW5Qcm9j
ZXNzSURCU2VydmVyKHNlc3Npb25JRCwgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSk7Ci0gICAgc2Vy
dmVyLT5tX3NlcnZlci0+cmVnaXN0ZXJDb25uZWN0aW9uKHNlcnZlci0+Y29ubmVjdGlvblRvQ2xp
ZW50KCkpOwotICAgIHJldHVybiBzZXJ2ZXI7Ci19Ci0KLUluUHJvY2Vzc0lEQlNlcnZlcjo6fklu
UHJvY2Vzc0lEQlNlcnZlcigpID0gZGVmYXVsdDsKLQotU3RvcmFnZVF1b3RhTWFuYWdlciogSW5Q
cm9jZXNzSURCU2VydmVyOjpxdW90YU1hbmFnZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4p
Ci17Ci0gICAgcmV0dXJuIG1fcXVvdGFNYW5hZ2Vycy5lbnN1cmUob3JpZ2luLCBbXSB7Ci0gICAg
ICAgIHJldHVybiBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpjcmVhdGUoU3RvcmFnZVF1b3RhTWFuYWdl
cjo6ZGVmYXVsdFF1b3RhKCksIFtdIHsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9
LCBbXSh1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFj
ZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhxdW90YSAr
IGN1cnJlbnRTcGFjZSArIHNwYWNlSW5jcmVhc2UpOwotICAgICAgICB9KTsKLSAgICB9KS5pdGVy
YXRvci0+dmFsdWUuZ2V0KCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSURCU2VydmVyOjpJREJTZXJ2
ZXI6OlN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciBzdG9yYWdlUXVvdGFNYW5hZ2Vy
U3BhY2VSZXF1ZXN0ZXIoSW5Qcm9jZXNzSURCU2VydmVyJiBzZXJ2ZXIpCi17Ci0gICAgcmV0dXJu
IFtzZXJ2ZXIgPSAmc2VydmVyLCB3ZWFrU2VydmVyID0gbWFrZVdlYWtQdHIoc2VydmVyKV0oY29u
c3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKSBtdXRhYmxl
IHsKLSAgICAgICAgYXV0byogc3RvcmFnZVF1b3RhTWFuYWdlciA9IHdlYWtTZXJ2ZXIgPyBzZXJ2
ZXItPnF1b3RhTWFuYWdlcihvcmlnaW4pIDogbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIHN0b3Jh
Z2VRdW90YU1hbmFnZXIgPyBzdG9yYWdlUXVvdGFNYW5hZ2VyLT5yZXF1ZXN0U3BhY2VPbkJhY2tn
cm91bmRUaHJlYWQoc3BhY2VSZXF1ZXN0ZWQpIDogU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNp
b246OkRlbnk7Ci0gICAgfTsKLX0KLQotSW5Qcm9jZXNzSURCU2VydmVyOjpJblByb2Nlc3NJREJT
ZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIDogbV9zZXJ2ZXIoSURCU2VydmVy
OjpJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQsIHN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJl
cXVlc3RlcigqdGhpcykpKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgcmVs
YXhBZG9wdGlvblJlcXVpcmVtZW50KCk7Ci0gICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIgPSBJREJD
bGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlKCp0aGlzKTsKLSAgICBtX2Nvbm5l
Y3Rpb25Ub0NsaWVudCA9IElEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVhdGUo
KnRoaXMpOwotfQotCi1JblByb2Nlc3NJREJTZXJ2ZXI6OkluUHJvY2Vzc0lEQlNlcnZlcihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRo
KQotICAgIDogbV9zZXJ2ZXIoSURCU2VydmVyOjpJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQs
IGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgc3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVy
KCp0aGlzKSkpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICByZWxheEFkb3B0
aW9uUmVxdWlyZW1lbnQoKTsKLSAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlciA9IElEQkNsaWVudDo6
SURCQ29ubmVjdGlvblRvU2VydmVyOjpjcmVhdGUoKnRoaXMpOwotICAgIG1fY29ubmVjdGlvblRv
Q2xpZW50ID0gSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSgqdGhpcyk7
Ci19Ci0KLUlEQkNvbm5lY3Rpb25JZGVudGlmaWVyIEluUHJvY2Vzc0lEQlNlcnZlcjo6aWRlbnRp
ZmllcigpIGNvbnN0Ci17Ci0gICAgLy8gQW4gaW5zdGFuY2Ugb2YgSW5Qcm9jZXNzSURCU2VydmVy
IGFsd2F5cyBoYXMgYSAxOjEgcmVsYXRpb25zaGlwIHdpdGggaXRzIGluc3RhbmNlIG9mIElEQlNl
cnZlci4KLSAgICAvLyBUaGVyZWZvcmUgdGhlIGNvbm5lY3Rpb24gaWRlbnRpZmllciBiZXR3ZWVu
IHRoZSB0d28gY2FuIGFsd2F5cyBiZSAiMSIuCi0gICAgcmV0dXJuIFByb2Nlc3M6OmlkZW50aWZp
ZXIoKTsKLX0KLQotSURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXImIEluUHJvY2Vzc0lE
QlNlcnZlcjo6Y29ubmVjdGlvblRvU2VydmVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gKm1fY29u
bmVjdGlvblRvU2VydmVyOwotfQotCi1JREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYg
SW5Qcm9jZXNzSURCU2VydmVyOjpjb25uZWN0aW9uVG9DbGllbnQoKSBjb25zdAotewotICAgIHJl
dHVybiAqbV9jb25uZWN0aW9uVG9DbGllbnQ7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpkZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCi17Ci0g
ICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHJlcXVlc3REYXRhXSB7Ci0gICAgICAgIG1fc2VydmVyLT5kZWxldGVEYXRh
YmFzZShyZXF1ZXN0RGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpkaWREZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQotewot
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVy
LT5kaWREZWxldGVEYXRhYmFzZShyZXN1bHREYXRhKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhXSB7Ci0gICAgICAgIG1fc2VydmVy
LT5vcGVuRGF0YWJhc2UocmVxdWVzdERhdGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6ZGlkT3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERh
dGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKLSAgICAgICAgbV9jb25uZWN0aW9u
VG9TZXJ2ZXItPmRpZE9wZW5EYXRhYmFzZShyZXN1bHREYXRhKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJv
cikKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcl0gewotICAg
ICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGVycm9yKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6OmRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3IpCi17Ci0gICAgUnVuTG9v
cDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3JdIHsKLSAgICAgICAgbV9jb25uZWN0aW9u
VG9TZXJ2ZXItPmRpZENvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJy
b3IpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ3JlYXRlT2Jq
ZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKLXsKLSAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgcmVzdWx0RGF0YV0gewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQ3JlYXRl
T2JqZWN0U3RvcmUocmVzdWx0RGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlv
blRvU2VydmVyLT5kaWREZWxldGVPYmplY3RTdG9yZShyZXN1bHREYXRhKTsKLSAgICB9KTsKLX0K
LQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZFJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElE
QlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsK
LSAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZFJlbmFtZU9iamVjdFN0b3JlKHJlc3Vs
dERhdGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ2xlYXJP
YmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQotewotICAgIFJ1bkxv
b3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCByZXN1bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRDbGVh
ck9iamVjdFN0b3JlKHJlc3VsdERhdGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6ZGlkQ3JlYXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkK
LXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0gewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1Nl
cnZlci0+ZGlkQ3JlYXRlSW5kZXgocmVzdWx0RGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpkaWREZWxldGVJbmRleChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1
bHREYXRhKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVj
dGlvblRvU2VydmVyLT5kaWREZWxldGVJbmRleChyZXN1bHREYXRhKTsKLSAgICB9KTsKLX0KLQot
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZFJlbmFtZUluZGV4KGNvbnN0IElEQlJlc3VsdERh
dGEmIHJlc3VsdERhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKLSAgICAgICAg
bV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZFJlbmFtZUluZGV4KHJlc3VsdERhdGEpOwotICAgIH0p
OwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkUHV0T3JBZGQoY29uc3QgSURCUmVz
dWx0RGF0YSYgcmVzdWx0RGF0YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0gewotICAg
ICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkUHV0T3JBZGQocmVzdWx0RGF0YSk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRSZWNvcmQoY29uc3QgSURC
UmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0gewot
ICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkR2V0UmVjb3JkKHJlc3VsdERhdGEpOwot
ICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxsUmVjb3Jkcyhj
b25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHRE
YXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRBbGxSZWNvcmRzKHJl
c3VsdERhdGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0
Q291bnQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKLXsKLSAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cmVzdWx0RGF0YV0gewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkR2V0Q291bnQo
cmVzdWx0RGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRE
ZWxldGVSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKLXsKLSAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgcmVzdWx0RGF0YV0gewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkRGVs
ZXRlUmVjb3JkKHJlc3VsdERhdGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGlkT3BlbkN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQotewot
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVy
LT5kaWRPcGVuQ3Vyc29yKHJlc3VsdERhdGEpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6ZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7Ci0gICAgICAgIG1fY29ubmVjdGlv
blRvU2VydmVyLT5kaWRJdGVyYXRlQ3Vyc29yKHJlc3VsdERhdGEpOwotICAgIH0pOwotfQotCi12
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHJlc291cmNlSWRlbnRpZmllcikKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzb3Vy
Y2VJZGVudGlmaWVyXSB7Ci0gICAgICAgIG1fc2VydmVyLT5hYm9ydFRyYW5zYWN0aW9uKHJlc291
cmNlSWRlbnRpZmllcik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpj
b21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlc291cmNlSWRl
bnRpZmllcikKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzb3VyY2VJZGVudGlmaWVyXSB7Ci0gICAgICAg
IG1fc2VydmVyLT5jb21taXRUcmFuc2FjdGlvbihyZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIH0p
OwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCi17Ci0g
ICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRl
bnRpZmllcl0gewotICAgICAgICBtX3NlcnZlci0+ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0
ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXN1bHREYXRhLCBjb25zdCBJREJP
YmplY3RTdG9yZUluZm8mIGluZm8pCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGEsIGluZm9d
IHsKLSAgICAgICAgbV9zZXJ2ZXItPmNyZWF0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEsIGluZm8p
OwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBTdHJpbmcmIG9iamVj
dFN0b3JlTmFtZSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFt
ZV0gewotICAgICAgICBtX3NlcnZlci0+ZGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9i
amVjdFN0b3JlTmFtZSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpy
ZW5hbWVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2
NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQotewotICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lXSB7
Ci0gICAgICAgIG1fc2VydmVyLT5yZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCi17Ci0gICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJl
cXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXJdIHsKLSAgICAgICAgbV9zZXJ2ZXItPmNs
ZWFyT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcik7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVJbmRleChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKLXsKLSAg
ICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIGluZm9dIHsKLSAgICAgICAgbV9zZXJ2ZXItPmNyZWF0
ZUluZGV4KHJlcXVlc3REYXRhLCBpbmZvKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRlbGV0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkK
LXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5k
ZXhOYW1lXSB7Ci0gICAgICAgIG1fc2VydmVyLT5kZWxldGVJbmRleChyZXF1ZXN0RGF0YSwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6cmVuYW1lSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0
YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWVdIHsKLSAg
ICAgICAgbV9zZXJ2ZXItPnJlbmFtZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEsIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwgY29u
c3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkKLXsK
LSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBvdmVyd3JpdGVNb2Rl
XSB7Ci0gICAgICAgIG1fc2VydmVyLT5wdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFs
dWUsIG92ZXJ3cml0ZU1vZGUpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURC
R2V0UmVjb3JkRGF0YSYgZ2V0UmVjb3JkRGF0YSkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERh
dGEsIGdldFJlY29yZERhdGFdIHsKLSAgICAgICAgbV9zZXJ2ZXItPmdldFJlY29yZChyZXF1ZXN0
RGF0YSwgZ2V0UmVjb3JkRGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2Vy
dmVyOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
c3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQotewotICAgIFJ1bkxv
b3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCByZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGFdIHsKLSAgICAgICAgbV9zZXJ2ZXIt
PmdldEFsbFJlY29yZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKTsKLSAgICB9KTsK
LX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldENvdW50KGNvbnN0IElEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCi17
Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsKLSAgICAgICAgbV9z
ZXJ2ZXItPmdldENvdW50KHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEpOwotICAgIH0pOwotfQot
Ci12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCi17
Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsKLSAgICAgICAgbV9z
ZXJ2ZXItPmRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKLSAgICB9KTsK
LX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQotewotICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCByZXF1ZXN0RGF0YSwgaW5mb10gewotICAgICAgICBtX3NlcnZlci0+b3BlbkN1cnNv
cihyZXF1ZXN0RGF0YSwgaW5mbyk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2Vy
dmVyOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
c3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmIGRhdGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RE
YXRhLCBkYXRhXSB7Ci0gICAgICAgIG1fc2VydmVyLT5pdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRh
LCBkYXRhKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmVzdGFibGlz
aFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0
IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgaW5mb10gewotICAgICAgICBtX3NlcnZlci0+ZXN0YWJsaXNoVHJh
bnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mbyk7Ci0gICAgfSk7Ci19
Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KElEQlNl
cnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRW
ZXJzaW9uKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0g
Y29ubmVjdGlvbi5pZGVudGlmaWVyKCksIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0ZWRWZXJz
aW9uXSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5maXJlVmVyc2lvbkNoYW5nZUV2
ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1
ZXN0ZWRWZXJzaW9uKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRp
ZFN0YXJ0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJvcikKLXsKLSAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcl0gewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZl
ci0+ZGlkU3RhcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yKTsKLSAg
ICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENsb3NlRnJvbVNlcnZlcihJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3Qg
SURCRXJyb3ImIGVycm9yKQotewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyID0gY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIGVycm9yXSB7Ci0gICAgICAgIG1fY29u
bmVjdGlvblRvU2VydmVyLT5kaWRDbG9zZUZyb21TZXJ2ZXIoZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgZXJyb3IpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBy
ZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lv
bikKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNpb24sIG5ld1Zl
cnNpb25dIHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPm5vdGlmeU9wZW5EQlJlcXVl
c3RCbG9ja2VkKHJlcXVlc3RJZGVudGlmaWVyLCBvbGRWZXJzaW9uLCBuZXdWZXJzaW9uKTsKLSAg
ICB9KTsKLX0KLQotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvblBl
bmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQotewotICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyXSB7Ci0gICAgICAgIG1fc2Vy
dmVyLT5kYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UoZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllcik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkYXRhYmFz
ZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikK
LXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcl0gewotICAgICAg
ICBtX3NlcnZlci0+ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRP
cGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKLXsK
LSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyXSB7Ci0gICAgICAgIG1fc2VydmVyLT5hYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVk
KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5n
ZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IEluZGV4ZWREQjo6Q29u
bmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIgY29ubmVjdGlvbkNsb3NlZCkKLXsKLSAgICBS
dW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIs
IGNvbm5lY3Rpb25DbG9zZWRdIHsKLSAgICAgICAgbV9zZXJ2ZXItPmRpZEZpcmVWZXJzaW9uQ2hh
bmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIs
IGNvbm5lY3Rpb25DbG9zZWQpOwotICAgIH0pOwotfQotCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEpCi17Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhXSB7Ci0gICAgICAgIG1fc2VydmVyLT5v
cGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVlc3REYXRhKTsKLSAgICB9KTsKLX0KLQotdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmNvbmZpcm1EaWRDbG9zZUZyb21TZXJ2ZXIodWludDY0X3QgZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllcl0gewotICAgICAgICBtX3NlcnZlci0+Y29uZmlybURpZENsb3NlRnJv
bVNlcnZlcihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXMoY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBtYWluRnJhbWVPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3Bl
bmluZ09yaWdpbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKLXsKLSAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWFpbkZy
YW1lT3JpZ2luLCBvcGVuaW5nT3JpZ2luLCBjYWxsYmFja0lEXSB7Ci0gICAgICAgIG1fc2VydmVy
LT5nZXRBbGxEYXRhYmFzZU5hbWVzKG1fY29ubmVjdGlvblRvU2VydmVyLT5pZGVudGlmaWVyKCks
IG1haW5GcmFtZU9yaWdpbiwgb3BlbmluZ09yaWdpbiwgY2FsbGJhY2tJRCk7Ci0gICAgfSk7Ci19
Ci0KLXZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2
NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVzKQotewot
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBjYWxsYmFja0lELCBkYXRhYmFzZU5hbWVzXSB7Ci0gICAgICAgIG1fY29u
bmVjdGlvblRvU2VydmVyLT5kaWRHZXRBbGxEYXRhYmFzZU5hbWVzKGNhbGxiYWNrSUQsIGRhdGFi
YXNlTmFtZXMpOwotICAgIH0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU3MzZhNzgwOTE5MWU0MzdiODYzYzNkYmRkYTJh
YjQ4ZWUwNjVkZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2Vy
dmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0KLSNpbmNsdWRlICJJREJD
b25uZWN0aW9uVG9DbGllbnQuaCIKLSNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIK
LSNpbmNsdWRlICJJREJTZXJ2ZXIuaCIKLSNpbmNsdWRlICJTdG9yYWdlUXVvdGFNYW5hZ2VyLmgi
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0j
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KLQotbmFtZXNwYWNlIFBBTCB7Ci1jbGFzcyBTZXNzaW9u
SUQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IENsaWVudE9yaWdpbjsKLQot
bmFtZXNwYWNlIElEQkNsaWVudCB7Ci1jbGFzcyBJREJDb25uZWN0aW9uVG9TZXJ2ZXI7Ci19Ci0K
LW5hbWVzcGFjZSBJREJTZXJ2ZXIgewotY2xhc3MgSURCU2VydmVyOwotfQotCi1jbGFzcyBJblBy
b2Nlc3NJREJTZXJ2ZXIgZmluYWwgOiBwdWJsaWMgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9T
ZXJ2ZXJEZWxlZ2F0ZSwgcHVibGljIElEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50RGVs
ZWdhdGUsIHB1YmxpYyBSZWZDb3VudGVkPEluUHJvY2Vzc0lEQlNlcnZlcj4gewotcHVibGljOgot
ICAgIHVzaW5nIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGU6OndlYWtQ
dHJGYWN0b3J5OwotICAgIHVzaW5nIFdlYWtWYWx1ZVR5cGUgPSBJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Ub1NlcnZlckRlbGVnYXRlOjpXZWFrVmFsdWVUeXBlOwotCi0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IGNyZWF0
ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwot
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW5Qcm9jZXNzSURCU2VydmVyKCk7Ci0KLSAg
ICBXRUJDT1JFX0VYUE9SVCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgY29ubmVj
dGlvblRvU2VydmVyKCkgY29uc3Q7Ci0gICAgSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGll
bnQmIGNvbm5lY3Rpb25Ub0NsaWVudCgpIGNvbnN0OwotICAgIElEQlNlcnZlcjo6SURCU2VydmVy
JiBzZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZlci5nZXQoKTsgfQotICAgIElEQlNlcnZlcjo6SURC
U2VydmVyJiBpZGJTZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZlci5nZXQoKTsgfQotCi0gICAgLy8g
SURCQ29ubmVjdGlvblRvU2VydmVyCi0gICAgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBJREJS
ZXF1ZXN0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgb3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlcXVl
c3REYXRhJikgZmluYWw7Ci0gICAgdm9pZCBhYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYpIGZpbmFsOwotICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJikgZmluYWw7Ci0gICAgdm9pZCBkaWRGaW5pc2hIYW5kbGlu
Z1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImKSBmaW5hbDsKLSAgICB2b2lkIGNy
ZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCT2JqZWN0U3Rv
cmVJbmZvJikgZmluYWw7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKSBmaW5hbDsKLSAgICB2b2lk
IHJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpIGZpbmFsOwotICAgIHZvaWQg
Y2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllcikgZmluYWw7Ci0gICAgdm9pZCBjcmVhdGVJbmRleChjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQkluZGV4SW5mbyYpIGZpbmFsOwotICAgIHZvaWQgZGVsZXRlSW5k
ZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKSBmaW5hbDsKLSAgICB2b2lkIHJlbmFtZUluZGV4KGNv
bnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50
NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkgZmluYWw7Ci0gICAg
dm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBj
b25zdCBJREJWYWx1ZSYsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2Rl
KSBmaW5hbDsKLSAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IElEQkdldFJlY29yZERhdGEmKSBmaW5hbDsKLSAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3Qg
SURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYpIGZpbmFsOwotICAg
IHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURh
dGEmKSBmaW5hbDsKLSAgICB2b2lkIGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IElEQktleVJhbmdlRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgb3BlbkN1cnNvcihjb25z
dCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkN1cnNvckluZm8mKSBmaW5hbDsKLSAgICB2b2lk
IGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJdGVyYXRlQ3Vy
c29yRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3Qg
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJikg
ZmluYWw7Ci0gICAgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3Qg
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikgZmluYWw7Ci0gICAgdm9pZCBkYXRhYmFzZUNv
bm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikgZmlu
YWw7Ci0gICAgdm9pZCBhYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZl
bnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSW5kZXhlZERCOjpDb25uZWN0
aW9uQ2xvc2VkT25CZWhhbGZPZlNlcnZlciA9IEluZGV4ZWREQjo6Q29ubmVjdGlvbkNsb3NlZE9u
QmVoYWxmT2ZTZXJ2ZXI6Ok5vKSBmaW5hbDsKLSAgICB2b2lkIG9wZW5EQlJlcXVlc3RDYW5jZWxs
ZWQoY29uc3QgSURCUmVxdWVzdERhdGEmKSBmaW5hbDsKLSAgICB2b2lkIGNvbmZpcm1EaWRDbG9z
ZUZyb21TZXJ2ZXIodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikgZmluYWw7
Ci0gICAgdm9pZCBnZXRBbGxEYXRhYmFzZU5hbWVzKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
bWFpbkZyYW1lT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmlnaW4s
IHVpbnQ2NF90IGNhbGxiYWNrSUQpIGZpbmFsOwotCi0gICAgLy8gSURCQ29ubmVjdGlvblRvQ2xp
ZW50Ci0gICAgSURCQ29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFs
OwotICAgIHZvaWQgZGlkRGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFs
OwotICAgIHZvaWQgZGlkT3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmKSBmaW5hbDsK
LSAgICB2b2lkIGRpZEFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKSBmaW5hbDsKLSAgICB2b2lkIGRpZENy
ZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmKSBmaW5hbDsKLSAgICB2b2lk
IGRpZFJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmKSBmaW5hbDsKLSAgICB2
b2lkIGRpZENsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAg
IHZvaWQgZGlkQ3JlYXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZv
aWQgZGlkRGVsZXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUmVuYW1lSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UHV0T3JBZGQoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGlkR2V0UmVj
b3JkKGNvbnN0IElEQlJlc3VsdERhdGEmKSBmaW5hbDsKLSAgICB2b2lkIGRpZEdldEFsbFJlY29y
ZHMoY29uc3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGlkR2V0Q291bnQoY29u
c3QgSURCUmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGlkRGVsZXRlUmVjb3JkKGNvbnN0
IElEQlJlc3VsdERhdGEmKSBmaW5hbDsKLSAgICB2b2lkIGRpZE9wZW5DdXJzb3IoY29uc3QgSURC
UmVzdWx0RGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBJREJS
ZXN1bHREYXRhJikgZmluYWw7Ci0gICAgdm9pZCBmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KElEQlNl
cnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRTdGFydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYpIGZpbmFsOwotICAg
IHZvaWQgZGlkQ2xvc2VGcm9tU2VydmVyKElEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uJiwgY29uc3QgSURCRXJyb3ImKSBmaW5hbDsKLSAgICB2b2lkIG5vdGlmeU9wZW5EQlJl
cXVlc3RCbG9ja2VkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZp
ZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24pIGZpbmFsOwotICAg
IHZvaWQgZGlkR2V0QWxsRGF0YWJhc2VOYW1lcyh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZGF0YWJhc2VOYW1lcykgZmluYWw7Ci0KLSAgICB2b2lkIHJlZigpIG92
ZXJyaWRlIHsgUmVmQ291bnRlZDxJblByb2Nlc3NJREJTZXJ2ZXI+OjpyZWYoKTsgfQotICAgIHZv
aWQgZGVyZWYoKSBvdmVycmlkZSB7IFJlZkNvdW50ZWQ8SW5Qcm9jZXNzSURCU2VydmVyPjo6ZGVy
ZWYoKTsgfQotCi0gICAgU3RvcmFnZVF1b3RhTWFuYWdlciogcXVvdGFNYW5hZ2VyKGNvbnN0IENs
aWVudE9yaWdpbiYpOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEluUHJvY2Vzc0lEQlNlcnZl
cihQQUw6OlNlc3Npb25JRCk7Ci0gICAgSW5Qcm9jZXNzSURCU2VydmVyKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7Ci0KLSAgICBSZWY8SURCU2Vy
dmVyOjpJREJTZXJ2ZXI+IG1fc2VydmVyOwotICAgIFJlZlB0cjxJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcj4gbV9jb25uZWN0aW9uVG9TZXJ2ZXI7Ci0gICAgUmVmUHRyPElEQlNlcnZl
cjo6SURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsKLQotICAgIEhh
c2hNYXA8Q2xpZW50T3JpZ2luLCBSZWZQdHI8U3RvcmFnZVF1b3RhTWFuYWdlcj4+IG1fcXVvdGFN
YW5hZ2VyczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggOGFlM2QxNTFlOWZiN2FlMTlk
MWE5MTAyZTNkZDk4YWI5MTMwM2ZmOS4uMmRkNmNjM2M4ZTA2NjVhYWU2ZmU4ZTE4MmYzMzYxOTgy
YWI4ZTdkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0zMywxMiArMzMsMTUgQEAKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgor
I2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJK
U0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTT3ZlcmNvbnN0cmFpbmVkRXJyb3Iu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgog
I2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgi
CisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgogI2luY2x1ZGUgIk92ZXJjb25zdHJhaW5lZEVycm9yLmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0hU
TUxWaWRlb0VsZW1lbnRQaWN0dXJlSW5QaWN0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGljdHVyZWlucGljdHVyZS9IVE1MVmlkZW9FbGVtZW50UGljdHVyZUluUGljdHVyZS5jcHAK
aW5kZXggMDJiNzNmYjEyMzYxZTcyZDdkZWQyMDRjNmMwMjFmMDEzOGE2ZjI5Yy4uNmZkOGQyNThj
YmFlNDhiODliYjNkYWI5NTBjNjI1OWJjNmJiN2JiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0hUTUxWaWRlb0VsZW1lbnRQaWN0dXJlSW5QaWN0
dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvSFRN
TFZpZGVvRWxlbWVudFBpY3R1cmVJblBpY3R1cmUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
ZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJFX0FQSSkKIAorI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNl
RGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU1BpY3R1cmVJblBpY3R1cmVXaW5kb3cuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKaW5kZXggOTE3NDg3ZTExZDNhM2E2ZGVmZTU0ZWQwN2I3ZmI4YmNlOTc5ZGZmMy4uNWZl
NzIzYjRlNTEwNDQxODUzN2M2YjgyOTc2MGQ4NjBmM2Y5M2YyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAg
LTE0Miw3ICsxNDIsNiBAQCBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEu
Y3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmNwcAog
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCiBNb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcAotTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JbmRl
eEtleS5jcHAKIAogTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGllcy5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA2MzAzZDdkNWQ0OTEyZDI5NTViZTEwNGI3MzM2YmUxY2JiY2E4MDUwLi4yMmU0Zjcx
NjRmNjkxNTMyZTEzMDljZTk3M2M0N2VhNGU3ZDgwNDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzg4LDcgKzEzODgsNiBA
QAogCQk1MTA1OEFFMjFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNThBREExRDY3
OTI1NzAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTA1RjA2OTFENEJBOUQ5MDBGQjgwQkMg
LyogSURCR2V0UmVjb3JkRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEwNUYwNjgxRDRCQTU0MTAwRkI4MEJDIC8qIElEQkdldFJlY29yZERhdGEu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTA2
RDdCRTE4QkRCNzZGMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA2RDdCQzE4QkRCNzZGMDAwQUIx
NjYgLyogQ29udGV4dE1lbnVDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTEwQTU4RTUxQkFBNDBCMTAwQzE5MjgyIC8qIEluUHJvY2Vz
c0lEQlNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEwQTU4RTMxQkFBNDBBRTAwQzE5MjgyIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMEE1OEZBMUJB
Q0M3RjIwMEMxOTI4MiAvKiBJREJSZXF1ZXN0RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQTU4RjYxQkFDQzRBNTAwQzE5MjgyIC8qIElEQlJl
cXVlc3REYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTEwRDRBMzQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEyRTEwMzE2
NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTBENEEzNzEwMzE2NUVFMDA0OUVBNTQgLyog
U29ja2V0U3RyZWFtSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgw
NDQsOCArODA0Myw2IEBACiAJCTUxMDVGMDZBMUQ0QkIwQkMwMEZCODBCQyAvKiBJREJHZXRSZWNv
cmREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkdldFJl
Y29yZERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTA2RDdCQjE4QkRC
NzZGMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRleHRNZW51Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxMDZEN0JDMThCREI3NkYwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNv
bnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGV4dE1lbnVDb250
ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxMEE1OEUyMUJBQTQwQUUwMEMx
OTI4MiAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5Qcm9jZXNzSURCU2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNTEwQTU4RTMxQkFBNDBBRTAwQzE5MjgyIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJblByb2Nlc3NJREJTZXJ2ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwQTU4RUYxQkFCNzIwRjAwQzE5MjgyIC8q
IElEQlNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJT
ZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBBNThGMDFCQUI3MjBG
MDBDMTkyODIgLyogSURCU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IElEQlNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBBNThGNTFCQUND
NEE1MDBDMTkyODIgLyogSURCUmVxdWVzdERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSURCUmVxdWVzdERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTg5MjQsOCArMTg5MjEsNiBAQAogCQkJCTUxOThGN0FCMUJCREQzRTMwMEUyQ0M1
RiAvKiBJREJUcmFuc2FjdGlvbkluZm8uaCAqLywKIAkJCQk1MTcxMzhFRDFCRUQxRDE3MDAwRDVG
MDEgLyogSW5kZXhLZXkuY3BwICovLAogCQkJCTUxNzEzOEVFMUJFRDFEMTcwMDBENUYwMSAvKiBJ
bmRleEtleS5oICovLAotCQkJCTUxMEE1OEUyMUJBQTQwQUUwMEMxOTI4MiAvKiBJblByb2Nlc3NJ
REJTZXJ2ZXIuY3BwICovLAotCQkJCTUxMEE1OEUzMUJBQTQwQUUwMEMxOTI4MiAvKiBJblByb2Nl
c3NJREJTZXJ2ZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gc2hhcmVkOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTMwMjM1LDcgKzMwMjMwLDYgQEAKIAkJCQlCQ0VBNDg1QTA5N0Q5
MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMwMTA3
MDExOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNkYxQ0MxREUyMjVGOEI0OTAwNzIwQUQyIC8qIElubGluZVRleHRJdGVtLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk1MTBBNThFNTFCQUE0MEIxMDBDMTkyODIgLyogSW5Qcm9jZXNzSURCU2Vy
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUI3Njc1NzFEQTE5QkRGMDAzRTIzQjUgLyogSW5w
dXRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTUyRUZERjQyMTEyODc1QTAwQUQyODJBIC8q
IElucHV0TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdFMzUyNEQxMjQ1MEM2NjAwQkFGNUQ5
IC8qIElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCmluZGV4IDYwMGVmN2I2YmFjODZjYTZmNGMxNWExZmNmMDYxODlhZDk4NTkzNGYu
Ljc3OWU5MTRhOWVjYjdjYTRhYzVkMWFjOTBmYmMwYzBhNmFmODUwZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC01MCw3ICs1MCw3IEBACiAjaW5jbHVkZSAiRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhpc3RvcnlJdGVtLmgiCi0jaW5jbHVkZSAiSW5Qcm9jZXNzSURCU2VydmVyLmgiCisj
aW5jbHVkZSAiSURCQ29ubmVjdGlvblRvU2VydmVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKICNpbmNsdWRlICJOZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaCIKQEAgLTEyMywxMCArMTIzLDQ2IEBAIGNsYXNzIEVtcHR5Q29udGV4
dE1lbnVDbGllbnQgZmluYWwgOiBwdWJsaWMgQ29udGV4dE1lbnVDbGllbnQgewogCiBjbGFzcyBF
bXB0eURhdGFiYXNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgRGF0YWJhc2VQcm92aWRlciB7CiAj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0gICAgSURCQ2xpZW50OjpJREJDb25uZWN0aW9u
VG9TZXJ2ZXImIGlkYkNvbm5lY3Rpb25Ub1NlcnZlckZvclNlc3Npb24oY29uc3QgUEFMOjpTZXNz
aW9uSUQmIHNlc3Npb25JRCkgZmluYWwKKyAgICBzdHJ1Y3QgRW1wdHlJREJDb25uZWN0aW9uVG9T
ZXJ2ZXJEZWxldGVnYXRlIGZpbmFsIDogcHVibGljIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblRv
U2VydmVyRGVsZWdhdGUgeworICAgICAgICBJREJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4geyB9OyB9CisgICAgICAgIHZvaWQgZGVsZXRlRGF0
YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBvcGVu
RGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBh
Ym9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYpIGZpbmFsIHsgfQor
ICAgICAgICB2b2lkIGNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKHVpbnQ2NF90LCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImKSBmaW5h
bCB7IH0KKyAgICAgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGRl
bGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJikgZmlu
YWwgeyB9CisgICAgICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERh
dGEmLCB1aW50NjRfdCwgY29uc3QgU3RyaW5nJikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgY2xl
YXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90KSBmaW5hbCB7IH0K
KyAgICAgICAgdm9pZCBjcmVhdGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElE
QkluZGV4SW5mbyYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IElE
QlJlcXVlc3REYXRhJiwgdWludDY0X3QsIGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgfQorICAgICAg
ICB2b2lkIHJlbmFtZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3QsIHVpbnQ2
NF90LCBjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBwdXRPckFkZChjb25z
dCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIGNv
bnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKSBmaW5hbCB7IH0KKyAgICAg
ICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRSZWNv
cmREYXRhJikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJikgZmluYWwgeyB9CisgICAg
ICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVx
dWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKSBmaW5hbCB7IH0KKyAgICAgICAgdm9p
ZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYp
IGZpbmFsIHsgfQorICAgICAgICB2b2lkIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERh
dGEmLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYpIGZpbmFsIHsgfQorICAgICAgICB2b2lk
IGVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90LCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8m
KSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2Uo
dWludDY0X3QpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGRhdGFiYXNlQ29ubmVjdGlvbkNsb3Nl
ZCh1aW50NjRfdCkgZmluYWwgeyB9CisgICAgICAgIHZvaWQgYWJvcnRPcGVuQW5kVXBncmFkZU5l
ZWRlZCh1aW50NjRfdCwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJikgZmluYWwgeyB9Cisg
ICAgICAgIHZvaWQgZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCwgY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgSW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25C
ZWhhbGZPZlNlcnZlcikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgb3BlbkRCUmVxdWVzdENhbmNl
bGxlZChjb25zdCBJREJSZXF1ZXN0RGF0YSYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGdldEFs
bERhdGFiYXNlTmFtZXMoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiwgdWludDY0X3QpIGZpbmFsIHsgfQorICAgICAgICB+RW1wdHlJREJDb25uZWN0
aW9uVG9TZXJ2ZXJEZWxldGVnYXRlKCkgeyB9CisgICAgICAgIAorICAgICAgICB2b2lkIGNvbmZp
cm1EaWRDbG9zZUZyb21TZXJ2ZXIodWludDY0X3QpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIHJl
ZigpIHsgfQorICAgICAgICB2b2lkIGRlcmVmKCkgeyB9CisgICAgfTsKKworICAgIElEQkNsaWVu
dDo6SURCQ29ubmVjdGlvblRvU2VydmVyJiBpZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNzaW9u
KGNvbnN0IFBBTDo6U2Vzc2lvbklEJikgZmluYWwKICAgICB7Ci0gICAgICAgIHN0YXRpYyBhdXRv
JiBzaGFyZWRDb25uZWN0aW9uID0gSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGUoc2Vzc2lvbklE
KS5sZWFrUmVmKCk7Ci0gICAgICAgIHJldHVybiBzaGFyZWRDb25uZWN0aW9uLmNvbm5lY3Rpb25U
b1NlcnZlcigpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlJREJDb25uZWN0
aW9uVG9TZXJ2ZXJEZWxldGVnYXRlPiBlbXB0eURlbGVnYXRlOworICAgICAgICBzdGF0aWMgYXV0
byYgZW1wdHlDb25uZWN0aW9uID0gSURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNy
ZWF0ZShlbXB0eURlbGVnYXRlLmdldCgpKS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBlbXB0
eUNvbm5lY3Rpb247CiAgICAgfQogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggN2Yw
ZTAwZGQyOGRkOWY5YTE0MDQwNjc2NDZmNDYwNWE5MjRjZTU3My4uMjAzZjVhZTliNDI4NGZlMTBk
ZWEyZTRmOGI2ZWRiMDE0MjlhZDA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xNTAsNyArMTUw
LDYgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogI2luY2x1ZGUgIklEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5oIgotI2luY2x1ZGUgIkluUHJvY2Vzc0lEQlNlcnZlci5oIgogI2VuZGlm
CiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2ViRGF0YWJhc2VQcm92aWRlci5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJEYXRhYmFzZVByb3ZpZGVyLmgKaW5kZXggZDRl
N2YxY2YwNDAyY2M5NzJhZWM2MWFiMTIwZGIwODM5NGIyNTBkZi4uOGU5ZjI4Yjc1YzNkOGU1OGVk
OGYxMmVmMWVkOGVmNGQyNDZjOTRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0RhdGFiYXNlcy9XZWJEYXRhYmFzZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJEYXRhYmFzZVByb3ZpZGVyLmgKQEAgLTI3LDcgKzI3LDYg
QEAKICNkZWZpbmUgV2ViRGF0YWJhc2VQcm92aWRlcl9oCiAKICNpbmNsdWRlIDxXZWJDb3JlL0Rh
dGFiYXNlUHJvdmlkZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0luUHJvY2Vzc0lEQlNlcnZlci5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ01ha2VMaXN0cy50eHQKaW5kZXggMGMzZjUyNDhlMDRiNDEyN2I2YmZkYjYwNTlkNWNl
OGYzZWMwYTk3Zi4uMDI2NjViZDYyNDZhMjYxY2EzYTc0NzAzNzk0ZWFkMWNhOWZjMTI3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L0NNYWtlTGlzdHMudHh0CkBAIC0zLDYgKzMsNyBAQCBpbmNsdWRlKFdlYktp
dENvbW1vbikKIHNldF9wcm9wZXJ0eShESVJFQ1RPUlkgLiBQUk9QRVJUWSBGT0xERVIgIldlYktp
dExlZ2FjeSIpCiAKIHNldChXZWJLaXRMZWdhY3lfU09VUkNFUworICAgIFN0b3JhZ2UvSW5wcm9j
ZXNzSURCU2VydmVyLmNwcAogICAgIFN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAogICAgIFN0
b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAogICAgIFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUlt
cGwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNz
SURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJT
ZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmZTNiOGZiOGFhMDc0YTU3M2EwYjM3YTgxOGFlYzAyZDdm
NzA4NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Q
cm9jZXNzSURCU2VydmVyLmNwcApAQCAtMCwwICsxLDQ2MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJJblByb2Nlc3NJREJTZXJ2ZXIuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQorCisjaW5jbHVkZSA8V2ViQ29yZS9JREJDdXJzb3JJbmZvLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9JREJHZXRSZWNvcmREYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJJdGVyYXRlQ3Vyc29y
RGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5UmFuZ2VEYXRhLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9JREJPcGVuREJSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJSZXF1ZXN0
RGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSURCUmVzdWx0RGF0YS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvSURCVHJhbnNhY3Rpb25JbmZvLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJWYWx1ZS5o
PgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CitSZWY8SW5Qcm9jZXNzSURCU2VydmVyPiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCit7CisgICAgUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2Vy
dmVyID0gYWRvcHRSZWYoKm5ldyBJblByb2Nlc3NJREJTZXJ2ZXIoc2Vzc2lvbklEKSk7CisgICAg
c2VydmVyLT5tX3NlcnZlci0+cmVnaXN0ZXJDb25uZWN0aW9uKHNlcnZlci0+Y29ubmVjdGlvblRv
Q2xpZW50KCkpOworICAgIHJldHVybiBzZXJ2ZXI7Cit9CisKK1JlZjxJblByb2Nlc3NJREJTZXJ2
ZXI+IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgpCit7CisgICAgUmVmPEluUHJvY2Vz
c0lEQlNlcnZlcj4gc2VydmVyID0gYWRvcHRSZWYoKm5ldyBJblByb2Nlc3NJREJTZXJ2ZXIoc2Vz
c2lvbklELCBkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKKyAgICBzZXJ2ZXItPm1fc2VydmVyLT5y
ZWdpc3RlckNvbm5lY3Rpb24oc2VydmVyLT5jb25uZWN0aW9uVG9DbGllbnQoKSk7CisgICAgcmV0
dXJuIHNlcnZlcjsKK30KKworSW5Qcm9jZXNzSURCU2VydmVyOjp+SW5Qcm9jZXNzSURCU2VydmVy
KCkgPSBkZWZhdWx0OworCitTdG9yYWdlUXVvdGFNYW5hZ2VyKiBJblByb2Nlc3NJREJTZXJ2ZXI6
OnF1b3RhTWFuYWdlcihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKK3sKKyAgICByZXR1cm4g
bV9xdW90YU1hbmFnZXJzLmVuc3VyZShvcmlnaW4sIFtdIHsKKyAgICAgICAgcmV0dXJuIFN0b3Jh
Z2VRdW90YU1hbmFnZXI6OmNyZWF0ZShTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEo
KSwgW10geworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0sIFtdKHVpbnQ2NF90IHF1
b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8g
Y2FsbGJhY2spIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHF1b3RhICsgY3VycmVudFNwYWNlICsg
c3BhY2VJbmNyZWFzZSk7CisgICAgICAgIH0pOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQo
KTsKK30KKworc3RhdGljIGlubGluZSBJREJTZXJ2ZXI6OklEQlNlcnZlcjo6U3RvcmFnZVF1b3Rh
TWFuYWdlclNwYWNlUmVxdWVzdGVyIHN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlcihJ
blByb2Nlc3NJREJTZXJ2ZXImIHNlcnZlcikKK3sKKyAgICByZXR1cm4gW3NlcnZlciA9ICZzZXJ2
ZXIsIHdlYWtTZXJ2ZXIgPSBtYWtlV2Vha1B0cihzZXJ2ZXIpXShjb25zdCBDbGllbnRPcmlnaW4m
IG9yaWdpbiwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpIG11dGFibGUgeworICAgICAgICBhdXRv
KiBzdG9yYWdlUXVvdGFNYW5hZ2VyID0gd2Vha1NlcnZlciA/IHNlcnZlci0+cXVvdGFNYW5hZ2Vy
KG9yaWdpbikgOiBudWxscHRyOworICAgICAgICByZXR1cm4gc3RvcmFnZVF1b3RhTWFuYWdlciA/
IHN0b3JhZ2VRdW90YU1hbmFnZXItPnJlcXVlc3RTcGFjZU9uQmFja2dyb3VuZFRocmVhZChzcGFj
ZVJlcXVlc3RlZCkgOiBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueTsKKyAgICB9
OworfQorCitJblByb2Nlc3NJREJTZXJ2ZXI6OkluUHJvY2Vzc0lEQlNlcnZlcihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCisgICAgOiBtX3NlcnZlcihJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y3Jl
YXRlKHNlc3Npb25JRCwgc3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyKCp0aGlzKSkp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICByZWxheEFkb3B0aW9uUmVxdWly
ZW1lbnQoKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlciA9IElEQkNsaWVudDo6SURCQ29ubmVj
dGlvblRvU2VydmVyOjpjcmVhdGUoKnRoaXMpOworICAgIG1fY29ubmVjdGlvblRvQ2xpZW50ID0g
SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSgqdGhpcyk7Cit9CisKK0lu
UHJvY2Vzc0lEQlNlcnZlcjo6SW5Qcm9jZXNzSURCU2VydmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgpCisgICAgOiBtX3NlcnZl
cihJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y3JlYXRlKHNlc3Npb25JRCwgZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoLCBzdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXIoKnRoaXMpKSkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgp
OworICAgIG1fY29ubmVjdGlvblRvU2VydmVyID0gSURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgbV9jb25uZWN0aW9uVG9DbGllbnQgPSBJREJTZXJ2
ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKCp0aGlzKTsKK30KKworSURCQ29ubmVj
dGlvbklkZW50aWZpZXIgSW5Qcm9jZXNzSURCU2VydmVyOjppZGVudGlmaWVyKCkgY29uc3QKK3sK
KyAgICAvLyBBbiBpbnN0YW5jZSBvZiBJblByb2Nlc3NJREJTZXJ2ZXIgYWx3YXlzIGhhcyBhIDE6
MSByZWxhdGlvbnNoaXAgd2l0aCBpdHMgaW5zdGFuY2Ugb2YgSURCU2VydmVyLgorICAgIC8vIFRo
ZXJlZm9yZSB0aGUgY29ubmVjdGlvbiBpZGVudGlmaWVyIGJldHdlZW4gdGhlIHR3byBjYW4gYWx3
YXlzIGJlICIxIi4KKyAgICByZXR1cm4gUHJvY2Vzczo6aWRlbnRpZmllcigpOworfQorCitJREJD
bGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgSW5Qcm9jZXNzSURCU2VydmVyOjpjb25uZWN0
aW9uVG9TZXJ2ZXIoKSBjb25zdAoreworICAgIHJldHVybiAqbV9jb25uZWN0aW9uVG9TZXJ2ZXI7
Cit9CisKK0lEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiBJblByb2Nlc3NJREJTZXJ2
ZXI6OmNvbm5lY3Rpb25Ub0NsaWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICptX2Nvbm5lY3Rp
b25Ub0NsaWVudDsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNl
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVx
dWVzdERhdGFdIHsKKyAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZURhdGFiYXNlKHJlcXVlc3REYXRh
KTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZURhdGFi
YXNlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJl
c3VsdERhdGFdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZERlbGV0ZURhdGFi
YXNlKHJlc3VsdERhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
b3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBS
dW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcmVxdWVzdERhdGFdIHsKKyAgICAgICAgbV9zZXJ2ZXItPm9wZW5EYXRhYmFzZShy
ZXF1ZXN0RGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRP
cGVuRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgcmVzdWx0RGF0YV0geworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkT3Bl
bkRhdGFiYXNlKHJlc3VsdERhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGlkQWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQoreworICAgIFJ1bkxv
b3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yXSB7CisgICAgICAgIG1fY29ubmVjdGlv
blRvU2VydmVyLT5kaWRBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJy
b3IpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ29tbWl0VHJh
bnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IElEQkVycm9yJiBlcnJvcikKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBlcnJvcl0geworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQ29t
bWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcik7CisgICAgfSk7Cit9
CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBJ
REJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7
CisgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRDcmVhdGVPYmplY3RTdG9yZShyZXN1
bHREYXRhKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0
ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHJlc3VsdERhdGFdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZERl
bGV0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6ZGlkUmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVz
dWx0RGF0YSkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0geworICAgICAgICBtX2Nvbm5l
Y3Rpb25Ub1NlcnZlci0+ZGlkUmVuYW1lT2JqZWN0U3RvcmUocmVzdWx0RGF0YSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDbGVhck9iamVjdFN0b3JlKGNvbnN0
IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFd
IHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZENsZWFyT2JqZWN0U3RvcmUocmVz
dWx0RGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDcmVh
dGVJbmRleChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCByZXN1bHREYXRhXSB7CisgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRDcmVhdGVJ
bmRleChyZXN1bHREYXRhKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
OmRpZERlbGV0ZUluZGV4KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHJlc3VsdERhdGFdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRp
ZERlbGV0ZUluZGV4KHJlc3VsdERhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6ZGlkUmVuYW1lSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkK
K3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YV0geworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1Nl
cnZlci0+ZGlkUmVuYW1lSW5kZXgocmVzdWx0RGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpkaWRQdXRPckFkZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7CisgICAgICAgIG1fY29ubmVjdGlv
blRvU2VydmVyLT5kaWRQdXRPckFkZChyZXN1bHREYXRhKTsKKyAgICB9KTsKK30KKwordm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldFJlY29yZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1
bHREYXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7CisgICAgICAgIG1fY29ubmVj
dGlvblRvU2VydmVyLT5kaWRHZXRSZWNvcmQocmVzdWx0RGF0YSk7CisgICAgfSk7Cit9CisKK3Zv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlc3VsdERh
dGEmIHJlc3VsdERhdGEpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGFdIHsKKyAgICAgICAg
bV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZEdldEFsbFJlY29yZHMocmVzdWx0RGF0YSk7CisgICAg
fSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRDb3VudChjb25zdCBJREJS
ZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhXSB7Cisg
ICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRDb3VudChyZXN1bHREYXRhKTsKKyAg
ICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZVJlY29yZChjb25z
dCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRh
XSB7CisgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWREZWxldGVSZWNvcmQocmVzdWx0
RGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRPcGVuQ3Vy
c29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJl
c3VsdERhdGFdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZE9wZW5DdXJzb3Io
cmVzdWx0RGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRJ
dGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHJlc3VsdERhdGFdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZEl0
ZXJhdGVDdXJzb3IocmVzdWx0RGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVz
b3VyY2VJZGVudGlmaWVyKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXNvdXJjZUlkZW50aWZpZXJdIHsK
KyAgICAgICAgbV9zZXJ2ZXItPmFib3J0VHJhbnNhY3Rpb24ocmVzb3VyY2VJZGVudGlmaWVyKTsK
KyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9u
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVzb3VyY2VJZGVudGlmaWVyKQoreworICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCByZXNvdXJjZUlkZW50aWZpZXJdIHsKKyAgICAgICAgbV9zZXJ2ZXItPmNvbW1p
dFRyYW5zYWN0aW9uKHJlc291cmNlSWRlbnRpZmllcik7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
bih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyXSB7CisgICAg
ICAgIG1fc2VydmVyLT5kaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAg
IH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlc3VsdERhdGEsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYg
aW5mbykKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzdWx0RGF0YSwgaW5mb10geworICAgICAgICBtX3Nl
cnZlci0+Y3JlYXRlT2JqZWN0U3RvcmUocmVzdWx0RGF0YSwgaW5mbyk7CisgICAgfSk7Cit9CisK
K3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQorewor
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lXSB7CisgICAgICAgIG1f
c2VydmVyLT5kZWxldGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lKTsK
KyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3Jl
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCit7CisgICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVl
c3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWVdIHsKKyAgICAgICAgbV9zZXJ2
ZXItPnJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IG5ld05hbWUpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y2xlYXJP
YmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllcikKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIG9iamVj
dFN0b3JlSWRlbnRpZmllcl0geworICAgICAgICBtX3NlcnZlci0+Y2xlYXJPYmplY3RTdG9yZShy
ZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKKyAgICB9KTsKK30KKwordm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQoreworICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1
ZXN0RGF0YSwgaW5mb10geworICAgICAgICBtX3NlcnZlci0+Y3JlYXRlSW5kZXgocmVxdWVzdERh
dGEsIGluZm8pOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRl
SW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQoreworICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCByZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWVdIHsKKyAgICAg
ICAgbV9zZXJ2ZXItPmRlbGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIGluZGV4TmFtZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpy
ZW5hbWVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG5ld05hbWUpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZV0geworICAgICAgICBtX3NlcnZlci0+
cmVuYW1lSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVu
dGlmaWVyLCBuZXdOYW1lKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5
RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCBjb25zdCBJbmRleGVkREI6Ok9i
amVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlKQoreworICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBy
ZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGVdIHsKKyAgICAgICAgbV9z
ZXJ2ZXItPnB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9k
ZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRSZWNvcmQoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiBn
ZXRSZWNvcmREYXRhKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0
YV0geworICAgICAgICBtX3NlcnZlci0+Z2V0UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRSZWNvcmRE
YXRhKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFsbFJlY29y
ZHMoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRBbGxSZWNv
cmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRh
LCBnZXRBbGxSZWNvcmRzRGF0YV0geworICAgICAgICBtX3NlcnZlci0+Z2V0QWxsUmVjb3Jkcyhy
ZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKK3sKKyAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YV0geworICAgICAgICBtX3NlcnZlci0+Z2V0Q291bnQo
cmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjpkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKK3sKKyAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YV0geworICAgICAgICBtX3NlcnZlci0+ZGVsZXRlUmVj
b3JkKHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RE
YXRhLCBpbmZvXSB7CisgICAgICAgIG1fc2VydmVyLT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBp
bmZvKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJz
b3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJdGVyYXRlQ3Vy
c29yRGF0YSYgZGF0YSkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEsIGRhdGFdIHsKKyAg
ICAgICAgbV9zZXJ2ZXItPml0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGRhdGEpOworICAgIH0p
OworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWlu
dDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25J
bmZvJiBpbmZvKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
LCBpbmZvXSB7CisgICAgICAgIG1fc2VydmVyLT5lc3RhYmxpc2hUcmFuc2FjdGlvbihkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBpbmZvKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoSURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pCit7CisgICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50
aWZpZXIoKSwgcmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3RlZFZlcnNpb25dIHsKKyAgICAgICAg
bV9jb25uZWN0aW9uVG9TZXJ2ZXItPmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3RlZFZlcnNpb24pOwor
ICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkU3RhcnRUcmFuc2FjdGlv
bihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29u
c3QgSURCRXJyb3ImIGVycm9yKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIGVycm9yXSB7CisgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRTdGFydFRyYW5z
YWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3IpOworICAgIH0pOworfQorCit2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ2xvc2VGcm9tU2VydmVyKElEQlNlcnZlcjo6VW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJREJFcnJvciYgZXJyb3Ip
Cit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0
aW9uLmlkZW50aWZpZXIoKSwgZXJyb3JdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIt
PmRpZENsb3NlRnJvbVNlcnZlcihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBlcnJvcik7
CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpub3RpZnlPcGVuREJSZXF1
ZXN0QmxvY2tlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKQoreworICAgIFJ1bkxv
b3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCByZXF1ZXN0SWRlbnRpZmllciwgb2xkVmVyc2lvbiwgbmV3VmVyc2lvbl0geworICAgICAg
ICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQocmVxdWVz
dElkZW50aWZpZXIsIG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pOworICAgIH0pOworfQorCit2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2
NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCit7CisgICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXJdIHsKKyAgICAgICAgbV9zZXJ2ZXItPmRhdGFiYXNlQ29u
bmVjdGlvblBlbmRpbmdDbG9zZShkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICB9
KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3Nl
ZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQoreworICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyXSB7CisgICAgICAgIG1fc2VydmVyLT5kYXRh
YmFzZUNvbm5lY3Rpb25DbG9zZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAg
fSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVl
ZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQoreworICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXJdIHsKKyAg
ICAgICAgbV9zZXJ2ZXItPmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICB9KTsKK30KKwordm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3Qg
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25C
ZWhhbGZPZlNlcnZlciBjb25uZWN0aW9uQ2xvc2VkKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgY29ubmVjdGlvbkNsb3Nl
ZF0geworICAgICAgICBtX3NlcnZlci0+ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgY29ubmVjdGlvbkNsb3Nl
ZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuREJSZXF1ZXN0
Q2FuY2VsbGVkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgcmVxdWVzdERhdGFdIHsKKyAgICAgICAgbV9zZXJ2ZXItPm9wZW5EQlJlcXVlc3RDYW5j
ZWxsZWQocmVxdWVzdERhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6Y29uZmlybURpZENsb3NlRnJvbVNlcnZlcih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
XSB7CisgICAgICAgIG1fc2VydmVyLT5jb25maXJtRGlkQ2xvc2VGcm9tU2VydmVyKGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lcyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG1haW5G
cmFtZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCB1aW50
NjRfdCBjYWxsYmFja0lEKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluRnJhbWVPcmlnaW4sIG9wZW5p
bmdPcmlnaW4sIGNhbGxiYWNrSURdIHsKKyAgICAgICAgbV9zZXJ2ZXItPmdldEFsbERhdGFiYXNl
TmFtZXMobV9jb25uZWN0aW9uVG9TZXJ2ZXItPmlkZW50aWZpZXIoKSwgbWFpbkZyYW1lT3JpZ2lu
LCBvcGVuaW5nT3JpZ2luLCBjYWxsYmFja0lEKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmRpZEdldEFsbERhdGFiYXNlTmFtZXModWludDY0X3QgY2FsbGJhY2tJRCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRhdGFiYXNlTmFtZXMpCit7CisgICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNh
bGxiYWNrSUQsIGRhdGFiYXNlTmFtZXNdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIt
PmRpZEdldEFsbERhdGFiYXNlTmFtZXMoY2FsbGJhY2tJRCwgZGF0YWJhc2VOYW1lcyk7CisgICAg
fSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
YmVhMjdlMmYxMDNlNjU5NGQyNDMyMzQ5MWZhODJhM2E5ZDFmNmM0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5oCkBAIC0w
LDAgKzEsMTM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgPFdlYkNvcmUvSURCQ29ubmVjdGlvblRvQ2xpZW50
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0lEQlNlcnZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1b3RhTWFu
YWdlci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBQQUwgeworY2xhc3Mg
U2Vzc2lvbklEOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2lu
OworCituYW1lc3BhY2UgSURCQ2xpZW50IHsKK2NsYXNzIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjsK
K30KKworbmFtZXNwYWNlIElEQlNlcnZlciB7CitjbGFzcyBJREJTZXJ2ZXI7Cit9Cit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKK2NsYXNzIEluUHJvY2Vzc0lEQlNlcnZlciBmaW5hbCA6IHB1Ymxp
YyBXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLCBwdWJs
aWMgV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZSwgcHVi
bGljIFJlZkNvdW50ZWQ8SW5Qcm9jZXNzSURCU2VydmVyPiB7CitwdWJsaWM6CisgICAgdXNpbmcg
V2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZTo6d2Vha1B0
ckZhY3Rvcnk7CisgICAgdXNpbmcgV2Vha1ZhbHVlVHlwZSA9IFdlYkNvcmU6OklEQkNsaWVudDo6
SURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGU6OldlYWtWYWx1ZVR5cGU7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4gY3JlYXRlKFBBTDo6U2Vz
c2lvbklEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEluUHJvY2Vzc0lEQlNlcnZl
cj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5
UGF0aCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JblByb2Nlc3NJREJTZXJ2ZXIo
KTsKKworICAgIFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyJiBjb25u
ZWN0aW9uVG9TZXJ2ZXIoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5l
Y3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50KCkgY29uc3Q7CisgICAgV2ViQ29yZTo6
SURCU2VydmVyOjpJREJTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyLmdldCgpOyB9
CisKKyAgICAvLyBJREJDb25uZWN0aW9uVG9TZXJ2ZXIKKyAgICB2b2lkIGRlbGV0ZURhdGFiYXNl
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJikgZmluYWw7CisgICAgdm9pZCBvcGVuRGF0
YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGFi
b3J0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJikgZmlu
YWw7CisgICAgdm9pZCBjb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYpIGZpbmFsOworICAgIHZvaWQgY3Jl
YXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJD
b3JlOjpJREJPYmplY3RTdG9yZUluZm8mKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdFN0
b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJiBvYmplY3RT
dG9yZU5hbWUpIGZpbmFsOworICAgIHZvaWQgcmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbmV3TmFtZSkgZmluYWw7CisgICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
KSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiwgY29uc3QgV2ViQ29yZTo6SURCSW5kZXhJbmZvJikgZmluYWw7CisgICAgdm9pZCBkZWxl
dGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpIGZpbmFsOworICAgIHZvaWQg
cmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBuZXdOYW1lKSBmaW5hbDsKKyAgICB2b2lkIHB1dE9yQWRkKGNvbnN0IFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklE
QlZhbHVlJiwgY29uc3QgV2ViQ29yZTo6SW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1v
ZGUpIGZpbmFsOworICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiwgY29uc3QgV2ViQ29yZTo6SURCR2V0UmVjb3JkRGF0YSYpIGZpbmFsOworICAgIHZvaWQg
Z2V0QWxsUmVjb3Jkcyhjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNv
cmU6OklEQkdldEFsbFJlY29yZHNEYXRhJikgZmluYWw7CisgICAgdm9pZCBnZXRDb3VudChjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0
YSYpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJikgZmluYWw7CisgICAgdm9p
ZCBvcGVuQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29y
ZTo6SURCQ3Vyc29ySW5mbyYpIGZpbmFsOworICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JE
YXRhJikgZmluYWw7CisgICAgdm9pZCBlc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbklu
Zm8mKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50
NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFi
YXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
KSBmaW5hbDsKKyAgICB2b2lkIGFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgZGlkRmlyZVZl
cnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpJbmRleGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVy
KSBmaW5hbDsKKyAgICB2b2lkIG9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGNvbmZpcm1EaWRDbG9zZUZyb21TZXJ2
ZXIodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikgZmluYWw7CisgICAgdm9p
ZCBnZXRBbGxEYXRhYmFzZU5hbWVzKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYg
bWFpbkZyYW1lT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5p
bmdPcmlnaW4sIHVpbnQ2NF90IGNhbGxiYWNrSUQpIGZpbmFsOworCisgICAgLy8gSURCQ29ubmVj
dGlvblRvQ2xpZW50CisgICAgV2ViQ29yZTo6SURCQ29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRp
ZmllcigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgZGlkRGVsZXRlRGF0YWJhc2UoY29uc3QgV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkT3BlbkRhdGFiYXNlKGNv
bnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEFib3J0VHJh
bnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJikgZmluYWw7CisgICAgdm9pZCBk
aWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5hbDsK
KyAgICB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERh
dGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6
OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlbmFtZU9iamVjdFN0b3JlKGNv
bnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZENsZWFyT2Jq
ZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQg
ZGlkQ3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAg
IHZvaWQgZGlkRGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFs
OworICAgIHZvaWQgZGlkUmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYp
IGZpbmFsOworICAgIHZvaWQgZGlkUHV0T3JBZGQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0
YSYpIGZpbmFsOworICAgIHZvaWQgZGlkR2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3Vs
dERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6
SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkR2V0Q291bnQoY29uc3QgV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkRGVsZXRlUmVjb3JkKGNvbnN0
IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGRpZE9wZW5DdXJzb3Io
Y29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOworICAgIHZvaWQgZGlkSXRlcmF0
ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CisgICAgdm9pZCBm
aXJlVmVyc2lvbkNoYW5nZUV2ZW50KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1
ZXN0SWRlbnRpZmllciwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikgZmluYWw7CisgICAgdm9p
ZCBkaWRTdGFydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYpIGZpbmFs
OworICAgIHZvaWQgZGlkQ2xvc2VGcm9tU2VydmVyKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5hbDsK
KyAgICB2b2lkIG5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0IFdlYkNvcmU6OklEQlJl
c291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24s
IHVpbnQ2NF90IG5ld1ZlcnNpb24pIGZpbmFsOworICAgIHZvaWQgZGlkR2V0QWxsRGF0YWJhc2VO
YW1lcyh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGF0YWJhc2VO
YW1lcykgZmluYWw7CisKKyAgICB2b2lkIHJlZigpIG92ZXJyaWRlIHsgUmVmQ291bnRlZDxJblBy
b2Nlc3NJREJTZXJ2ZXI+OjpyZWYoKTsgfQorICAgIHZvaWQgZGVyZWYoKSBvdmVycmlkZSB7IFJl
ZkNvdW50ZWQ8SW5Qcm9jZXNzSURCU2VydmVyPjo6ZGVyZWYoKTsgfQorCisgICAgV2ViQ29yZTo6
U3RvcmFnZVF1b3RhTWFuYWdlciogcXVvdGFNYW5hZ2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEluUHJvY2Vzc0lEQlNlcnZlcihQQUw6
OlNlc3Npb25JRCk7CisgICAgSW5Qcm9jZXNzSURCU2VydmVyKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7CisKKyAgICBSZWY8V2ViQ29yZTo6SURC
U2VydmVyOjpJREJTZXJ2ZXI+IG1fc2VydmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJDbGll
bnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcj4gbV9jb25uZWN0aW9uVG9TZXJ2ZXI7CisgICAgUmVm
UHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX2Nvbm5lY3Rp
b25Ub0NsaWVudDsKKworICAgIEhhc2hNYXA8V2ViQ29yZTo6Q2xpZW50T3JpZ2luLCBSZWZQdHI8
V2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcj4+IG1fcXVvdGFNYW5hZ2VyczsKK307CisKKyNl
bmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcAppbmRleCA3ZjAzOGYzYWNjOGU5
OWVkOTg1M2MyZjJmZGI0NzM1NDFiOGQwZTc4Li5jMmY3MWJhZjNkMTdmNGVjYWMwM2VkYWZmN2M5
MjM2ZjNjODIxZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2Vi
RGF0YWJhc2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dl
YkRhdGFiYXNlUHJvdmlkZXIuY3BwCkBAIC00NiwxNCArNDYsMTQgQEAgV2ViRGF0YWJhc2VQcm92
aWRlcjo6fldlYkRhdGFiYXNlUHJvdmlkZXIoKQogV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25u
ZWN0aW9uVG9TZXJ2ZXImIFdlYkRhdGFiYXNlUHJvdmlkZXI6OmlkYkNvbm5lY3Rpb25Ub1NlcnZl
ckZvclNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkKIHsKICAgICByZXR1
cm4gbV9pZGJTZXJ2ZXJNYXAuZW5zdXJlKHNlc3Npb25JRCwgWyZzZXNzaW9uSURdIHsKLSAgICAg
ICAgcmV0dXJuIHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8gV2ViQ29yZTo6SW5Qcm9jZXNzSURC
U2VydmVyOjpjcmVhdGUoc2Vzc2lvbklEKSA6IFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6
Y3JlYXRlKHNlc3Npb25JRCwgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5UGF0aCgpKTsKKyAgICAg
ICAgcmV0dXJuIHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8gSW5Qcm9jZXNzSURCU2VydmVyOjpj
cmVhdGUoc2Vzc2lvbklEKSA6IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKHNlc3Npb25JRCwg
aW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5UGF0aCgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUt
PmNvbm5lY3Rpb25Ub1NlcnZlcigpOwogfQogCiB2b2lkIFdlYkRhdGFiYXNlUHJvdmlkZXI6OmRl
bGV0ZUFsbERhdGFiYXNlcygpCiB7CiAgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX2lkYlNlcnZl
ck1hcC52YWx1ZXMoKSkKLSAgICAgICAgc2VydmVyLT5pZGJTZXJ2ZXIoKS5jbG9zZUFuZERlbGV0
ZURhdGFiYXNlc01vZGlmaWVkU2luY2UoLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbXSB7IH0pOwor
ICAgICAgICBzZXJ2ZXItPnNlcnZlcigpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRT
aW5jZSgtV2FsbFRpbWU6OmluZmluaXR5KCksIFtdIHsgfSk7CiB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmgKaW5kZXgg
ZDY2N2I4NjMxMjI5MzlkOTRjOGI5NGMzYmNmYTE1Njk4Mjk0ZTg2Zi4uYWQ5Y2I0ZjA4ZmJiODA1
MmU2N2EwMDZhNzFmNGZjNzUwODVlNGQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0jaW5jbHVk
ZSA8V2ViQ29yZS9JblByb2Nlc3NJREJTZXJ2ZXIuaD4KKyNpbmNsdWRlICJJblByb2Nlc3NJREJT
ZXJ2ZXIuaCIKICNlbmRpZgogCiBjbGFzcyBXZWJEYXRhYmFzZVByb3ZpZGVyIGZpbmFsIDogcHVi
bGljIFdlYkNvcmU6OkRhdGFiYXNlUHJvdmlkZXIgewpAQCAtNTIsNiArNTIsNiBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyBTdHJpbmcgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOwogCiAj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwg
UmVmUHRyPFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcj4+IG1faWRiU2VydmVyTWFwOworICAg
IEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+PiBtX2lk
YlNlcnZlck1hcDsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
V2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1dlYktpdExlZ2FjeS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNlNmViMzYz
MWM5Njg2NzM1MzAwNDdjNmVkNDBmODgzNzU2YzdjMGUuLjQxYjk0NWM5MGMxNmI2MWY4NjNmNTRj
Y2VhNWY0YWMxOTljY2RlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViS2l0
TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjI3LDYgKzIyNyw4
IEBACiAJCTkzNEMxMTY3MEQ4NzEwQkIwMEMzMkFCRCAvKiBXZWJEeW5hbWljU2Nyb2xsQmFyc1Zp
ZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTM0QzExNjYwRDg3MTBCQjAwQzMyQUJEIC8qIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlld0lu
dGVybmFsLmggKi87IH07CiAJCTkzNEM0QTkxMEYwMTQwNkMwMDkzNzJDMCAvKiBXZWJOU09iamVj
dEV4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzNEM0QTkwMEYwMTQwNkMwMDkzNzJDMCAvKiBXZWJOU09iamVjdEV4dHJhcy5tbSAqLzsgfTsK
IAkJOTM0QzRBQTAwRjAxNDFGNzAwOTM3MkMwIC8qIFdlYlJlc291cmNlSW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEM0QTlGMEYwMTQx
RjcwMDkzNzJDMCAvKiBXZWJSZXNvdXJjZUludGVybmFsLmggKi87IH07CisJCTkzNjQwMDZFMjM5
OTZFODEwMDFFMTg1RSAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM2NDAwNkMyMzk5NkU4MDAwMUUxODVFIC8q
IEluUHJvY2Vzc0lEQlNlcnZlci5jcHAgKi87IH07CisJCTkzNjQwMDZGMjM5OTZFODEwMDFFMTg1
RSAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNjQwMDZEMjM5OTZFODEwMDFFMTg1RSAvKiBJblByb2Nlc3NJREJT
ZXJ2ZXIuaCAqLzsgfTsKIAkJOTM2QTJERTgwRkQyRDA4MDAwRDMxMkRCIC8qIFdlYlRleHRDb21w
bGV0aW9uQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzNkEyREU3MEZEMkQwODAwMEQzMTJEQiAvKiBXZWJUZXh0Q29tcGxldGlvbkNv
bnRyb2xsZXIubW0gKi87IH07CiAJCTkzNkEyREVBMEZEMkQwODQwMEQzMTJEQiAvKiBXZWJUZXh0
Q29tcGxldGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzNkEyREU5MEZEMkQwODQwMEQzMTJEQiAvKiBXZWJUZXh0Q29tcGxldGlv
bkNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJOTM5MUYyNzUxMjFCMzhCRDAwRUJGN0U4IC8qIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzOTFGMjczMTIxQjM4QkQwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0LmggKi87IH07CkBAIC0xMDI0LDYgKzEwMjYsOCBAQAogCQk5MzRDMTE2NjBEODcx
MEJCMDBDMzJBQkQgLyogV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3SW50ZXJuYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3SW50ZXJu
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0QzRBOTAwRjAxNDA2QzAwOTM3
MkMwIC8qIFdlYk5TT2JqZWN0RXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViTlNPYmplY3RFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzNEM0QTlGMEYwMTQxRjcwMDkzNzJDMCAvKiBXZWJSZXNvdXJjZUludGVybmFsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlSW50ZXJuYWwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM2NDAwNkMyMzk5NkU4MDAwMUUxODVFIC8q
IEluUHJvY2Vzc0lEQlNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBJblByb2Nlc3NJREJTZXJ2ZXIuY3BwOyBwYXRoID0gU3RvcmFnZS9JblByb2Nlc3NJREJT
ZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTkzNjQwMDZEMjM5OTZF
ODEwMDFFMTg1RSAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gSW5Qcm9jZXNzSURCU2VydmVyLmg7IHBhdGggPSBTdG9yYWdlL0luUHJvY2Vz
c0lEQlNlcnZlci5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTkzNkEyREU3MEZE
MkQwODAwMEQzMTJEQiAvKiBXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xs
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNkEyREU5MEZEMkQwODQwMEQz
MTJEQiAvKiBXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzOTFGMjczMTIxQjM4QkQwMEVCRjdFOCAvKiBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4
MzMsNiArMTgzNyw4IEBACiAJCTUxMUYzRkMzMENFQ0M3RTIwMDg1MjU2NSAvKiBTdG9yYWdlICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5MzY0MDA2QzIz
OTk2RTgwMDAxRTE4NUUgLyogSW5Qcm9jZXNzSURCU2VydmVyLmNwcCAqLywKKwkJCQk5MzY0MDA2
RDIzOTk2RTgxMDAxRTE4NUUgLyogSW5Qcm9jZXNzSURCU2VydmVyLmggKi8sCiAJCQkJMUE2QjMx
MjQxQTUxRjNBOTAwNDIyOTc1IC8qIFN0b3JhZ2VBcmVhSW1wbC5jcHAgKi8sCiAJCQkJMUE2QjMx
MjUxQTUxRjNBOTAwNDIyOTc1IC8qIFN0b3JhZ2VBcmVhSW1wbC5oICovLAogCQkJCTFBNkIzMTI2
MUE1MUYzQTkwMDQyMjk3NSAvKiBTdG9yYWdlQXJlYVN5bmMuY3BwICovLApAQCAtMjg4MSw2ICsy
ODg3LDcgQEAKIAkJCQk5M0Q0Mzc5OTFENTdBQkVGMDBBQjg1RUEgLyogRXhjZXB0aW9uSGFuZGxl
cnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNjA1MTk0MTc1MDJBNUQwMEJDNjJGNSAvKiBIaXN0
b3J5UHJvcGVydHlMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThERUQ1MDBFRTg4QjhBMDBG
MjUwMjIgLyogSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTkzNjQwMDZGMjM5OTZFODEwMDFFMTg1RSAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExMEMxRDMyMTgyMDJGQzUwMDM2ODgzQSAvKiBNZW1vcnlNZWFzdXJlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUFGNUNFQTBFRERFMUZFMDA4RDg4M0QgLyogTmV0c2NhcGVQ
bHVnaW5Ib3N0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjVDRUMwRURERTFGRTAw
OEQ4ODNEIC8qIE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5LmggaW4gSGVhZGVycyAqLywKQEAgLTM0
MDIsNiArMzQwOSw3IEBACiAJCQkJNUM5QTRFNTMyMkRFNDYyNzAwN0RCMzUzIC8qIERPTVVJS2l0
RXh0ZW5zaW9ucy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNjA1MTkzMTc1MDJBNUQwMEJDNjJG
NSAvKiBIaXN0b3J5UHJvcGVydHlMaXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4REVENTEw
RUU4OEI4QTAwRjI1MDIyIC8qIEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJOTM2NDAwNkUyMzk5NkU4MTAwMUUxODVFIC8qIEluUHJvY2Vzc0lEQlNlcnZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTBDMUQzMzE4MjAyRkM1MDAzNjg4M0EgLyogTWVt
b3J5TWVhc3VyZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQUY1Q0VCMEVEREUxRkUwMDhEODgz
RCAvKiBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFB
RjVDRUQwRURERTFGRTAwOEQ4ODNEIC8qIE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tIGluIFNv
dXJjZXMgKi8sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>