<?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>89505</bug_id>
          
          <creation_ts>2012-06-19 13:28:02 -0700</creation_ts>
          <short_desc>IndexedDB: implement upgradeneeded</short_desc>
          <delta_ts>2012-08-21 15:27:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>92897</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>90411</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Grogan">dgrogan</reporter>
          <assigned_to name="David Grogan">dgrogan</assigned_to>
          <cc>abarth</cc>
    
    <cc>levin+threading</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>652733</commentid>
    <comment_count>0</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-06-19 13:28:02 -0700</bug_when>
    <thetext>IndexedDB: implement upgradeneeded</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652734</commentid>
    <comment_count>1</comment_count>
      <attachid>148406</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-06-19 13:31:03 -0700</bug_when>
    <thetext>Created attachment 148406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652738</commentid>
    <comment_count>2</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-06-19 13:35:33 -0700</bug_when>
    <thetext>This isn&apos;t ready to be reviewed, I mostly wanted it to be backed up.

The status:
calling open(&quot;db&quot;, 7) fires upgradeneeded, runs the version change transaction, fires complete, and then fires success with the database handle.

calling db.version doesn&apos;t work yet, it knows nothing about the int versions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667204</commentid>
    <comment_count>3</comment_count>
      <attachid>151813</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-07-11 16:34:58 -0700</bug_when>
    <thetext>Created attachment 151813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675160</commentid>
    <comment_count>4</comment_count>
      <attachid>153643</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-07-20 20:18:19 -0700</bug_when>
    <thetext>Created attachment 153643
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675161</commentid>
    <comment_count>5</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-07-20 20:19:46 -0700</bug_when>
    <thetext>The master chromium patch is http://codereview.chromium.org/10803062/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675188</commentid>
    <comment_count>6</comment_count>
      <attachid>153651</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-07-20 23:26:53 -0700</bug_when>
    <thetext>Created attachment 153651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680016</commentid>
    <comment_count>7</comment_count>
      <attachid>154811</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-07-26 19:12:04 -0700</bug_when>
    <thetext>Created attachment 154811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680065</commentid>
    <comment_count>8</comment_count>
      <attachid>154824</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-07-26 20:44:34 -0700</bug_when>
    <thetext>Created attachment 154824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680069</commentid>
    <comment_count>9</comment_count>
      <attachid>154825</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-07-26 20:53:18 -0700</bug_when>
    <thetext>Created attachment 154825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680135</commentid>
    <comment_count>10</comment_count>
      <attachid>154844</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-07-26 22:44:43 -0700</bug_when>
    <thetext>Created attachment 154844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680139</commentid>
    <comment_count>11</comment_count>
      <attachid>154847</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-07-26 22:57:04 -0700</bug_when>
    <thetext>Created attachment 154847
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701182</commentid>
    <comment_count>12</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-08-21 15:27:18 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 92897 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148406</attachid>
            <date>2012-06-19 13:31:03 -0700</date>
            <delta_ts>2012-07-11 16:34:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89505-20120619133103.patch</filename>
            <type>text/plain</type>
            <size>91322</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI0YWM4MTkyNWYzZWRk
Y2FjYjBmMzUzYzY3MzU5MTA1MjVjNjJlYy4uZGM5NzM4NTlhNGY5ZDA2MDNhMmU0YTM2NmI1NWNm
ZTI4MmE4N2FmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxMi0wNi0xOSAgRGF2
aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBp
bXBsZW1lbnQgdXBncmFkZW5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODk1MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi5o
dG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaDoKKyAg
ICAgICAgKElEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3Rv
cmU6OnVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ2FsbGJhY2tzLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJDYWxsYmFja3M6Om9u
QmxvY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDYWxsYmFja3M6Om9uVXBncmFkZU5lZWRl
ZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5j
cHA6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbkNhbGwpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5k
aW5nT3BlbldpdGhWZXJzaW9uQ2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25D
YWxsOjpjYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OnZlcnNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OlBl
bmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW50VmVyc2lvbkludGVybmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5nVGFzayk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlz
aGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQ
ZW5kaW5nQ2FsbHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaDoKKyAgICAgICAg
KElEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQ2FsbGJhY2tzLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxi
YWNrczo6b25WZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6Om9wZW4pOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oOgor
ICAgICAgICAoSURCRmFjdG9yeSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbik6
CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5Gcm9tV29ya2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3BlbkludGVybmFs
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaDoK
KyAgICAgICAgKElEQkZhY3RvcnlCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKElEQkZhY3RvcnlC
YWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnB1dFZhckludCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFVwTWV0YWRhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3Blbik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUlEQkRhdGFiYXNlTWV0
YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6dXBkYXRl
SURCRGF0YWJhc2VJbnRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChJREJMZXZlbERCQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OmVuY29kZVZhckludCk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oOgorICAgICAgICAoSURCTGV2
ZWxEQkNvZGluZyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVz
dC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJP
cGVuREJSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVz
dDo6SURCT3BlbkRCUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0
Ojp+SURCT3BlbkRCUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0
OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9u
QmxvY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3JhZGVO
ZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VD
YWxsYmFja3MuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCT3BlbkRCUmVxdWVz
dCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5pZGw6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2Fs
bGJhY2tzLmguCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0
OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmVucXVldWVF
dmVudCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAg
ICAoSURCUmVxdWVzdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5l
ZWRlZEV2ZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VDYWxsYmFja3MuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCVXBncmFkZU5lZWRlZEV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVXBncmFkZU5lZWRlZEV2ZW50OjpJREJVcGdyYWRlTmVlZGVkRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVXBncmFkZU5lZWRlZEV2ZW50Ojp+SURCVXBncmFkZU5lZWRlZEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlVwZ3JhZGVOZWVkZWRFdmVudDo6b2xkVmVyc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpJREJVcGdyYWRlTmVlZGVkRXZlbnQ6Om5ld1ZlcnNpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVXBncmFkZU5lZWRlZEV2ZW50OjppbnRlcmZhY2VOYW1lKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJVcGdyYWRlTmVlZGVkRXZlbnQuaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxs
YmFja3MuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCVXBncmFkZU5lZWRlZEV2
ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJVcGdyYWRlTmVlZGVkRXZlbnQu
aWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUNhbGxiYWNrcy5oLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBkb20v
RXZlbnROYW1lcy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0V2ZW50TmFt
ZXMuaW46CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisKIDIwMTItMDYtMTggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjA0ODUgYW5kIHIxMjA1ODIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDAwOTI0OTQ0NDE4NDgyYjU3OGI4NjM4YmIz
OGI3ZWExN2I1ZjIxYzEuLjdhNTVlODNiMWUxMzQyM2UxNjg1NDExNjQ5ZDlhMjA4ZGY1NjllZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTItMDYtMTkg
IERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWRE
QjogaW1wbGVtZW50IHVwZ3JhZGVuZWVkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg5NTA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkNhbGxiYWNrczo6b25VcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKiBwdWJs
aWMvV2ViSURCRmFjdG9yeS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5OjpvcGVu
KToKKyAgICAgICAgKiBzcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJREJDYWxsYmFja3NQcm94eTo6b25VcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKiBzcmMvSURC
Q2FsbGJhY2tzUHJveHkuaDoKKyAgICAgICAgKElEQkNhbGxiYWNrc1Byb3h5KToKKyAgICAgICAg
KiBzcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkZh
Y3RvcnlCYWNrZW5kUHJveHk6Om9wZW5Gcm9tV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6SURC
RmFjdG9yeUJhY2tlbmRQcm94eTo6b3Blbik6CisgICAgICAgICogc3JjL0lEQkZhY3RvcnlCYWNr
ZW5kUHJveHkuaDoKKyAgICAgICAgKElEQkZhY3RvcnlCYWNrZW5kUHJveHkpOgorICAgICAgICAq
IHNyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ2Fs
bGJhY2tzSW1wbDo6b25VcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
ICogc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaDoKKyAgICAgICAgKFdlYklEQkNhbGxiYWNrc0lt
cGwpOgorICAgICAgICAqIHNyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkZhY3RvcnlJbXBsOjpvcGVuKToKKyAgICAgICAgKiBzcmMvV2ViSURCRmFjdG9y
eUltcGwuaDoKKyAgICAgICAgKFdlYklEQkZhY3RvcnlJbXBsKToKKyAgICAgICAgKiB0ZXN0cy9J
REJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmFpbGluZ0JhY2tp
bmdTdG9yZTo6Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpU
RVNUKToKKyAgICAgICAgKiB0ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmg6CisKIDIwMTItMDYt
MTggIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBTcGVsbGNoZWNrZXIgc2hvdWxkIHNob3cgc3VnZ2VzdGlvbnMgb25seSB3aGVuIHJpZ2h0
LWNsaWNraW5nIGEgbWlzc3BlbGxlZCB3b3JkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAppbmRleCBmNzg0MDYyMWI2MWYyYzE0MTg3
ODk2NjM2ZDc2NWNjODgyMjlmZDA1Li42ZTcyNzA5ZGZkMDEyMDhkYTdkMTVkMmZlNTgwNzg4YzZj
MWM4ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJC
YWNraW5nU3RvcmUuaApAQCAtNDcsOCArNDcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURC
QmFja2luZ1N0b3JlKCkge307CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhW
ZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBnZXRJREJE
YXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiBmb3VuZFZlcnNpb24s
IGludDY0X3QmIGZvdW5kSWQpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0YWJh
c2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgaW50
NjRfdCYgcm93SWQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0
YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRTdHJpbmdWZXJzaW9uLCBpbnQ2NF90
JiBmb3VuZEludFZlcnNpb24sIGludDY0X3QmIGZvdW5kSWQpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgc3RyaW5nVmVyc2lvbiwgY29uc3QgaW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90JiBy
b3dJZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24o
aW50NjRfdCByb3dJZCwgaW50NjRfdCBpbnRWZXJzaW9uKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoaW50NjRfdCBy
b3dJZCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGRlbGV0
ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oCmluZGV4IDdkZWU1NTAwZjQwYjZlNjQz
NDI2NGQ5OTM3YmQxYWQ5NTI0ZDJlMmUuLjFjZTBhYjdjNGQzYTlhOTFiZDBmNmViYTJlZDBiNGFl
NmVhZWIyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNh
bGxiYWNrcy5oCkBAIC01Nyw3ICs1Nyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIGtl
eXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiBwcmltYXJ5S2V5cywgY29uc3QgVmVj
dG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4mIHZhbHVlcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBvbkJsb2NrZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgp
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKGlu
dDY0X3QgZXhpc3RpbmdWZXJzaW9uKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmly
dHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2U+KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDEyZjI5MDI1YWIzYTg5
NTYyYzVlMTE5NGYzOTgwMDdkY2Q2NzYwZmEuLjViNmZkY2I0NzVkZmQwZTQ4Mjc5MmVlNzNjYzQy
ZDQwZDhlN2E5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
LmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00NywxMiArNDgsMzMgQEAgcHVibGljOgogICAgIH0KICAgICBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzKCkgeyByZXR1cm4gbV9jYWxsYmFja3M7IH0KIAotcHJpdmF0ZToK
K3Byb3RlY3RlZDoKICAgICBQZW5kaW5nT3BlbkNhbGwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcykKICAgICAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCiAgICAgewogICAg
IH0KKworcHJpdmF0ZToKKyAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKK307
CisKK2NsYXNzIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25D
YWxsIDogcHVibGljIFJlZkNvdW50ZWQ8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4g
Y3JlYXRlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGludDY0X3QgdmVyc2lv
bikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGVuZGluZ09wZW5XaXRoVmVy
c2lvbkNhbGwoY2FsbGJhY2tzLCB2ZXJzaW9uKSk7CisgICAgfQorICAgIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7IHJldHVybiBtX2NhbGxiYWNrczsgfQorICAgIGludDY0
X3QgdmVyc2lvbigpIHsgcmV0dXJuIG1fdmVyc2lvbjsgfQorCitwcml2YXRlOgorICAgIFBlbmRp
bmdPcGVuV2l0aFZlcnNpb25DYWxsKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Ms
IGludDY0X3QgdmVyc2lvbikKKyAgICAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCisgICAg
ICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCisgICAgeworICAgIH0KICAgICBSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBtX2NhbGxiYWNrczsKKyAgICBpbnQ2NF90IG1fdmVyc2lvbjsKIH07CiAKIGNsYXNz
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdEZWxldGVDYWxsIDogcHVibGljIFJlZkNv
dW50ZWQ8UGVuZGluZ0RlbGV0ZUNhbGw+IHsKQEAgLTEwNiw2ICsxMjgsNyBAQCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwg
SURCQmFja2luZ1N0bwogICAgICwgbV9pZChJbnZhbGlkSWQpCiAgICAgLCBtX25hbWUobmFtZSkK
ICAgICAsIG1fdmVyc2lvbigiIikKKyAgICAsIG1faW50VmVyc2lvbigwKQogICAgICwgbV9pZGVu
dGlmaWVyKHVuaXF1ZUlkZW50aWZpZXIpCiAgICAgLCBtX2ZhY3RvcnkoZmFjdG9yeSkKICAgICAs
IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihjb29yZGluYXRvcikKQEAgLTExNSwxMyArMTM4LDEz
IEBAIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3Qg
U3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvCiAKIGJvb2wgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6b3BlbkludGVybmFsKCkKIHsKLSAgICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+
Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShtX25hbWUsIG1fdmVyc2lvbiwgbV9pZCk7CisgICAgYm9v
bCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmdldElEQkRhdGFiYXNlTWV0YURhdGEobV9uYW1l
LCBtX3ZlcnNpb24sIG1faW50VmVyc2lvbiwgbV9pZCk7CiAgICAgQVNTRVJUKHN1Y2Nlc3MgPT0g
KG1faWQgIT0gSW52YWxpZElkKSk7CiAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgbG9hZE9i
amVjdFN0b3JlcygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgcmV0dXJuIG1f
YmFja2luZ1N0b3JlLT5jcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKG1fbmFtZSwgbV92ZXJzaW9u
LCBtX2lkKTsKKyAgICByZXR1cm4gbV9iYWNraW5nU3RvcmUtPmNyZWF0ZUlEQkRhdGFiYXNlTWV0
YURhdGEobV9uYW1lLCBtX3ZlcnNpb24sIG1faW50VmVyc2lvbiwgbV9pZCk7CiB9CiAKIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6On5JREJEYXRhYmFzZUJhY2tlbmRJbXBsKCkKQEAgLTIxNSw2ICsy
MzgsOSBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb24oY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbAogICAgICAgICBjYWxsYmFja3MtPm9uRXJy
b3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJP
UlRfRVJSLCAiQ29ubmVjdGlvbiB3YXMgY2xvc2VkIGJlZm9yZSBzZXQgdmVyc2lvbiB0cmFuc2Fj
dGlvbiB3YXMgY3JlYXRlZCIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAobV9p
bnRWZXJzaW9uID4gMCkgeworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgU3RyaW5nOjpm
b3JtYXQoIllvdSBjYW4ndCB1c2UgdGhlIHNldFZlcnNpb24gZnVuY3Rpb24gaWYgeW91J3ZlIGFs
cmVhZHkgc2V0IHRoZSB2ZXJzaW9uIHRocm91Z2ggYW4gb3BlbiBjYWxsLiAgVGhlIGN1cnJlbnQg
aW50ZWdlciB2ZXJzaW9uIGlzICVsZCIsIG1faW50VmVyc2lvbikpKTsKKyAgICB9CiAgICAgZm9y
IChEYXRhYmFzZUNhbGxiYWNrc1NldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlQ2Fs
bGJhY2tzU2V0LmJlZ2luKCk7IGl0ICE9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuZW5kKCk7ICsr
aXQpIHsKICAgICAgICAgaWYgKCppdCAhPSBkYXRhYmFzZUNhbGxiYWNrcykKICAgICAgICAgICAg
ICgqaXQpLT5vblZlcnNpb25DaGFuZ2UodmVyc2lvbik7CkBAIC0yNTcsNiArMjgzLDIwIEBAIHZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbkludGVybmFsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmCiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3ModHJhbnNhY3Rp
b24pOwogfQogCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldEludFZlcnNpb25JbnRl
cm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tl
bmRJbXBsPiBkYXRhYmFzZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4g
dHJhbnNhY3Rpb24pCit7CisgICAgaW50NjRfdCBkYXRhYmFzZUlkID0gZGF0YWJhc2UtPmlkKCk7
CisgICAgaW50NjRfdCBvbGRWZXJzaW9uID0gZGF0YWJhc2UtPm1faW50VmVyc2lvbjsKKyAgICBk
YXRhYmFzZS0+bV9pbnRWZXJzaW9uID0gdmVyc2lvbjsKKyAgICBpZiAoIWRhdGFiYXNlLT5tX2Jh
Y2tpbmdTdG9yZS0+dXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKGRhdGFiYXNlSWQsIGRhdGFi
YXNlLT5tX2ludFZlcnNpb24pKSB7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiRXJy
b3Igd3JpdGluZyBkYXRhIHRvIHN0YWJsZSBzdG9yYWdlLiIpKTsKKyAgICAgICAgdHJhbnNhY3Rp
b24tPmFib3J0KCk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOy8vIDw8ICJLZWVwIHRo
aXMgaGVyZSB3aGlsZSBpbnQgdmVyc2lvbnMgYXJlIGJlaW5nIGRldmVsb3BlZCwgcmVtb3ZlIGJl
Zm9yZSBjb21taXR0aW5nIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYWxsYmFja3Mt
Pm9uVXBncmFkZU5lZWRlZChvbGRWZXJzaW9uLCB0cmFuc2FjdGlvbiwgZGF0YWJhc2UpOworfQor
CiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uU3RhcnRlZChQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gcHJwVHJhbnNhY3Rpb24pCiB7CiAg
ICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24gPSBw
cnBUcmFuc2FjdGlvbjsKQEAgLTI2Niw2ICszMDYsMTIgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjp0cmFuc2FjdGlvblN0YXJ0ZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmQKICAgICB9CiB9CiAKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRp
bmdUYXNrKHZvaWQqIHZvaWREYikgeworICBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYiA9IHN0
YXRpY19jYXN0PElEQkRhdGFiYXNlQmFja2VuZEltcGwqPih2b2lkRGIpOworICBkYi0+bV9ydW5u
aW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLmNsZWFyKCk7CisgIGRiLT5wcm9jZXNzUGVuZGlu
Z0NhbGxzKCk7Cit9CisKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25G
aW5pc2hlZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gcHJwVHJh
bnNhY3Rpb24pCiB7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4g
dHJhbnNhY3Rpb24gPSBwcnBUcmFuc2FjdGlvbjsKQEAgLTI3Myw4ICszMTksOSBAQCB2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmluaXNoZWQoUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbgogICAgIG1fdHJhbnNhY3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbi5n
ZXQoKSk7CiAgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZF
UlNJT05fQ0hBTkdFKSB7CiAgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5nZXQoKSA9PSBtX3J1
bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgICAgICBtX3J1bm5pbmdW
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uY2xlYXIoKTsKLSAgICAgICAgcHJvY2Vzc1BlbmRpbmdD
YWxscygpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKHByb2Nlc3NQZW5kaW5nVGFzaywgdGhp
cyk7CisvLyAgICAgICAgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLmNsZWFyKCk7
CisvLyAgICAgICAgcHJvY2Vzc1BlbmRpbmdDYWxscygpOwogICAgIH0KIH0KIApAQCAtMzE4LDYg
KzM2NSwxMyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5nQ2Fs
bHMoKQogICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgIW1fcGVu
ZGluZ1NldFZlcnNpb25DYWxscy5pc0VtcHR5KCkgfHwgIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgRGVxdWU8UmVmUHRyPFBlbmRpbmdPcGVu
V2l0aFZlcnNpb25DYWxsPiA+IHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsczsKKyAgICBtX3Bl
bmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5zd2FwKHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxs
cyk7CisgICAgd2hpbGUgKCFwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKSB7
CisgICAgICBSZWZQdHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IHBlbmRpbmdPcGVuV2l0
aFZlcnNpb25DYWxsID0gcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLnRha2VGaXJzdCgpOwor
ICAgICAgb3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2Fs
bC0+Y2FsbGJhY2tzKCksIHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT52ZXJzaW9uKCkpOwor
ICAgIH0KKwogICAgIC8vIEdpdmVuIHRoZSBjaGVjayBhYm92ZSwgaXQgYXBwZWFycyB0aGF0IGNh
bGxzIGNhbm5vdCBiZSByZXF1ZXVlZCBieQogICAgIC8vIG9wZW5Db25uZWN0aW9uLCBidXQgdXNl
IGEgZGlmZmVyZW50IHF1ZXVlIGZvciBpdGVyYXRpb24gdG8gYmUgc2FmZS4KICAgICBEZXF1ZTxS
ZWZQdHI8UGVuZGluZ09wZW5DYWxsPiA+IHBlbmRpbmdPcGVuQ2FsbHM7CkBAIC0zNjAsNiArNDE0
LDcyIEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24oUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB9CiB9CiAKK3ZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGludDY0X3QgcmVx
dWVzdGVkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcykKK3sK
KyAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CisgICAg
QVNTRVJUKGNhbGxiYWNrcyk7CisgICAgZm9yIChEYXRhYmFzZUNhbGxiYWNrc1NldDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmJlZ2luKCk7IGl0ICE9IG1fZGF0
YWJhc2VDYWxsYmFja3NTZXQuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgLy8gVGhlIGZyb250ZW5k
IHRha2VzIGNhcmUgb2YgdGhlIGZvbGxvd2luZyBjbGF1c2UsIHRoZSBiYWNrZW5kIGp1c3QKKyAg
ICAgICAgLy8gZmlyZXMgdmVyc2lvbiBjaGFuZ2UgYXQgYWxsIHRoZSBjb25uZWN0aW9ucywgdGhl
IGZyb250ZW5kIHdpbGwgbm90CisgICAgICAgIC8vIGRlbGl2ZXIgdG8gY29ubmVjdGlvbnMgd2l0
aCBjbG9zZVBlbmRpbmcgc2V0LgorICAgICAgICAvLyAiVGhlIGV2ZW50IG11c3Qgbm90IGJlIGZp
cmVkIG9uIG9iamVjdHMgd2hpY2ggaGFzIHRoZSBjbG9zZVBlbmRpbmcKKyAgICAgICAgLy8gZmxh
ZyBzZXQuIgorICAgICAgICAoKml0KS0+b25WZXJzaW9uQ2hhbmdlKG1faW50VmVyc2lvbiwgcmVx
dWVzdGVkVmVyc2lvbik7CisgICAgfQorICAgIC8vIFRoZSBzcGVjIGRpY3RhdGVzIHdlIHdhaXQg
dW50aWwgYWxsIHRoZSB2ZXJzaW9uIGNoYW5nZSBldmVudHMgYXJlCisgICAgLy8gZGVsaXZlcmVk
IGFuZCB0aGVuIGNoZWNrIG1fZGF0YWJhc2VDYWxsYmFja3MuZW1wdHkoKSBiZWZvcmUgcHJvY2Vl
ZGluZworICAgIC8vIG9yIGZpcmluZyBhIGJsb2NrZWQgZXZlbnQsIGJ1dCBpbnN0ZWFkIHdlIHNo
b3VsZCBiZSBjb25zaXN0ZW50IHdpdGggaG93CisgICAgLy8gdGhlIG9sZCBzZXRWZXJzaW9uIChp
bmNvcnJlY3RseSkgZGlkIGl0OgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MTEzMAorICAgIGlmIChtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LnNpemUoKSA+
IDEpIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkJsb2NrZWQobV9pbnRWZXJzaW9uKTsKKyAgICB9
CisgICAgLy8gRmlndXJlIG91dCBob3cgdG8gdGVzdCBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24uCisgICAgaWYgKG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCBt
X2RhdGFiYXNlQ2FsbGJhY2tzU2V0LnNpemUoKSA+IDEpIHsKKyAgICAgICAgUmVmUHRyPFBlbmRp
bmdPcGVuV2l0aFZlcnNpb25DYWxsPiBwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCA9IFBlbmRp
bmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCByZXF1ZXN0ZWRWZXJzaW9u
KTsKKyAgICAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKHBlbmRpbmdP
cGVuV2l0aFZlcnNpb25DYWxsKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgp
OworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uID0gdGhpcy0+dHJhbnNhY3Rpb24ob2JqZWN0U3Rv
cmVOYW1lcy5nZXQoKSwgSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFLCBlYyk7CisgICAg
QVNTRVJUKCFlYyk7CisKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJh
c2UgPSB0aGlzOworICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxs
YmFja1Rhc2soJklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldEludFZlcnNpb25JbnRlcm5hbCwg
ZGF0YWJhc2UsIHJlcXVlc3RlZFZlcnNpb24sIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQkRh
dGFiYXNlQmFja2VuZEltcGw6OnJlc2V0VmVyc2lvbiwgZGF0YWJhc2UsIG1fdmVyc2lvbikpKSB7
CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZF
X0VSUjsKKyAgICB9Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5l
Y3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBp
bnQ2NF90IHZlcnNpb24pCit7CisgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0g
cHJwQ2FsbGJhY2tzOworICAgIGlmICghbV9wZW5kaW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpIHx8
IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCAhbV9wZW5kaW5nU2V0VmVyc2lv
bkNhbGxzLmlzRW1wdHkoKSkgeworICAgICAgICBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxs
cy5hcHBlbmQoUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIHZl
cnNpb24pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9pZCA9PSBJbnZhbGlk
SWQpIHsKKyAgICAgICAgaWYgKG9wZW5JbnRlcm5hbCgpKSB7CisgICAgICAgICAgICBBU1NFUlQo
IW1faW50VmVyc2lvbik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjYWxsYmFja3Mt
Pm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpV
TktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBpZiAodmVyc2lvbiA+IG1faW50VmVyc2lvbikgeworICAgICAg
ICBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5XaXRoVmVy
c2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIHZlcnNpb24pKTsKKyAgICAgICAgcnVuSW50VmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uKHZlcnNpb24sIGNhbGxiYWNrcyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaWYgKHZlcnNpb24gPCBtX2ludFZlcnNpb24pIHsKKyAgICAgICAgY2Fs
bGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VkVSX0VSUiwgU3RyaW5nOjpmb3JtYXQoIlRoZSByZXF1ZXN0ZWQgdmVyc2lvbiAoJWxk
KSBpcyBsZXNzIHRoYW4gdGhlIGV4aXN0aW5nIHZlcnNpb24gKCVsZCkuIiwgdmVyc2lvbiwgbV9p
bnRWZXJzaW9uKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVCh2ZXJzaW9u
ID09IG1faW50VmVyc2lvbik7CisgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3ModGhpcyk7Cit9CisK
IHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IHBycENhbGxiYWNrcykKIHsKICAgICBpZiAobV9ydW5uaW5nVmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKSB7
CkBAIC0zNzAsOCArNDkwLDkgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVE
YXRhYmFzZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2sKICAgICAvLyBGSVhN
RTogT25seSBmaXJlIG9uVmVyc2lvbkNoYW5nZSBpZiB0aGVyZSB0aGUgY29ubmVjdGlvbiBpc24n
dCBpbgogICAgIC8vIHRoZSBwcm9jZXNzIG9mIGNsb3NpbmcuCiAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTI5Ci0gICAgZm9yIChEYXRhYmFzZUNhbGxi
YWNrc1NldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmJlZ2lu
KCk7IGl0ICE9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuZW5kKCk7ICsraXQpCisgICAgZm9yIChE
YXRhYmFzZUNhbGxiYWNrc1NldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlQ2FsbGJh
Y2tzU2V0LmJlZ2luKCk7IGl0ICE9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuZW5kKCk7ICsraXQp
IHsKICAgICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZSgiIik7CisgICAgfQogICAgIC8vIEZJ
WE1FOiBPbmx5IGZpcmUgb25CbG9ja2VkIGlmIHRoZXJlIGFyZSBvcGVuIGNvbm5lY3Rpb25zIGFm
dGVyIHRoZQogICAgIC8vIFZlcnNpb25DaGFuZ2VFdmVudHMgYXJlIHJlY2VpdmVkLCBub3QganVz
dCBzZXQgdXAgdG8gZmlyZS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzExMzAKQEAgLTM4MCwxMiArNTAxLDE0IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxi
YWNrCiAgICAgICAgIGNhbGxiYWNrcy0+b25CbG9ja2VkKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CisgICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKICAgICBpZiAoIW1fYmFja2luZ1N0b3Jl
LT5kZWxldGVEYXRhYmFzZShtX25hbWUpKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJ
REJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJS
LCAiSW50ZXJuYWwgZXJyb3IuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fdmVy
c2lvbiA9ICIiOwogICAgIG1faWQgPSBJbnZhbGlkSWQ7CisgICAgbV9pbnRWZXJzaW9uID0gMDsK
ICAgICBtX29iamVjdFN0b3Jlcy5jbGVhcigpOwogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmlu
ZGV4IGNmYmNhM2I2MzUzMDY2YTc3NWM0YzE3ODJmZjEwNDE5NjlkZDliYTIuLjZhOTcwM2VlZTU5
N2ZmOGY2NDA0NDlmMDc2OWQyZmY2ZDA0YTExZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTU2
LDYgKzU2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tz
KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKICAgICB2b2lkIG9wZW5Db25uZWN0
aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CisgICAgdm9pZCBvcGVuQ29ubmVjdGlvbldp
dGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgaW50NjRfdCB2ZXJzaW9uKTsKICAg
ICB2b2lkIGRlbGV0ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAKICAgICB2
aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CkBAIC03NywxMiAr
NzgsMTUgQEAgcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlKiBkYXRhYmFzZSwgSURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvciosIElEQkZhY3RvcnlCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRp
Zmllcik7CiAKICAgICBib29sIG9wZW5JbnRlcm5hbCgpOworICAgIHZvaWQgcnVuSW50VmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uKGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbiwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcyk7CiAgICAgdm9pZCBsb2FkT2JqZWN0U3RvcmVzKCk7CiAg
ICAgdm9pZCBwcm9jZXNzUGVuZGluZ0NhbGxzKCk7CisgICAgc3RhdGljIHZvaWQgcHJvY2Vzc1Bl
bmRpbmdUYXNrKHZvaWQqIGRiKTsKIAogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZU9iamVjdFN0b3Jl
SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VC
YWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgc3RhdGljIHZvaWQg
ZGVsZXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsK
ICAgICBzdGF0aWMgdm9pZCBzZXRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4sIGNvbnN0IFN0cmluZyYgdmVy
c2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZT4pOworICAgIHN0YXRpYyB2b2lkIHNldEludFZlcnNpb25JbnRlcm5h
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsPiBkYXRhYmFzZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJh
bnNhY3Rpb24pOwogCiAgICAgLy8gVGhlc2UgYXJlIHVzZWQgYXMgc2V0VmVyc2lvbiB0cmFuc2Fj
dGlvbiBhYm9ydCB0YXNrcy4KICAgICBzdGF0aWMgdm9pZCByZW1vdmVPYmplY3RTdG9yZUZyb21N
YXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW1wbD4sIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4pOwpAQCAtOTMsNiAr
OTcsNyBAQCBwcml2YXRlOgogICAgIGludDY0X3QgbV9pZDsKICAgICBTdHJpbmcgbV9uYW1lOwog
ICAgIFN0cmluZyBtX3ZlcnNpb247CisgICAgaW50NjRfdCBtX2ludFZlcnNpb247CiAKICAgICBT
dHJpbmcgbV9pZGVudGlmaWVyOwogICAgIC8vIFRoaXMgbWlnaHQgbm90IG5lZWQgdG8gYmUgYSBS
ZWZQdHIgc2luY2UgdGhlIGZhY3RvcnkncyBsaWZldGltZSBpcyB0aGF0IG9mIHRoZSBwYWdlIGdy
b3VwLCBidXQgaXQncyBiZXR0ZXIgdG8gYmUgY29uc2Vydml0aXZlIHRoYW4gc29ycnkuCkBAIC0x
MTMsNiArMTE4LDkgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBQZW5kaW5nT3BlbkNhbGw7CiAgICAg
RGVxdWU8UmVmUHRyPFBlbmRpbmdPcGVuQ2FsbD4gPiBtX3BlbmRpbmdPcGVuQ2FsbHM7CiAKKyAg
ICBjbGFzcyBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDsKKyAgICBEZXF1ZTxSZWZQdHI8UGVu
ZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+ID4gbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHM7
CisKICAgICBjbGFzcyBQZW5kaW5nRGVsZXRlQ2FsbDsKICAgICBEZXF1ZTxSZWZQdHI8UGVuZGlu
Z0RlbGV0ZUNhbGw+ID4gbV9wZW5kaW5nRGVsZXRlQ2FsbHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrcy5oCmluZGV4
IGIzZjI0NGY1MTZiNjk4N2VhMTE5Y2JmNzAxOWI3YjU0Mzc1ZjEyYmYuLjE2YTllYTZjNTA4YjBk
OTJiNjFlNDk5N2M1NDMwMTMyYTZkMmFjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3MuaApAQCAtMzgsNiArMzgs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRGF0YWJhc2VDYWxsYmFja3MoKSB7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IGN1cnJlbnRWZXJz
aW9uLCBpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXggMTgxMTZmNWEzZWE5Nzg1ZDFiNjlkODI4
YWYzYWRjZGUxYjZmYzZlOS4uNjM3NGY3NGYzNjgyMzE5NTRkZmI2OTMwYmQ3NTk0YWQ4MzFlNDkz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFj
ZS5oIgogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCi0jaW5j
bHVkZSAiSURCUmVxdWVzdC5oIgorI2luY2x1ZGUgIklEQk9wZW5EQlJlcXVlc3QuaCIKICNpbmNs
dWRlICJJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJQYWdlR3JvdXAuaCIKQEAgLTgwLDcgKzgwLDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBJREJGYWN0b3J5OjpnZXREYXRhYmFzZU5hbWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnQKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJG
YWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+
IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkgfHwgY29udGV4dC0+aXNXb3JrZXJDb250ZXh0
KCkpOwogCkBAIC05MywxOSArOTMsMjQgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJGYWN0
b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFMKICAgICAg
ICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKSB8fCAhZG9jdW1lbnQtPnBhZ2UoKSkKICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsK
LSAgICAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUo
Y29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIDApOwotICAgICAgICBtX2JhY2tlbmQtPm9w
ZW4obmFtZSwgcmVxdWVzdC5nZXQoKSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgZnJhbWUs
IFN0cmluZygpKTsKKyAgICAgICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVlc3QgPSBJ
REJPcGVuREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIHZl
cnNpb24pOworICAgICAgICBtX2JhY2tlbmQtPm9wZW4obmFtZSwgdmVyc2lvbiwgcmVxdWVzdC5n
ZXQoKSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgZnJhbWUsIFN0cmluZygpKTsKICAgICAg
ICAgcmV0dXJuIHJlcXVlc3Q7CiAgICAgfQogI2lmIEVOQUJMRShXT1JLRVJTKQotICAgIFJlZlB0
cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFu
eTo6Y3JlYXRlKHRoaXMpLCAwKTsKLSAgICBtX2JhY2tlbmQtPm9wZW5Gcm9tV29ya2VyKG5hbWUs
IHJlcXVlc3QuZ2V0KCksIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIHN0YXRpY19jYXN0PFdv
cmtlckNvbnRleHQqPihjb250ZXh0KSwgU3RyaW5nKCkpOworICAgIFJlZlB0cjxJREJPcGVuREJS
ZXF1ZXN0PiByZXF1ZXN0ID0gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFu
eTo6Y3JlYXRlKHRoaXMpLCB2ZXJzaW9uKTsKKyAgICBtX2JhY2tlbmQtPm9wZW5Gcm9tV29ya2Vy
KG5hbWUsIHZlcnNpb24sIHJlcXVlc3QuZ2V0KCksIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCks
IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihjb250ZXh0KSwgU3RyaW5nKCkpOwogICAgIHJl
dHVybiByZXF1ZXN0OwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgogfQogCitQYXNzUmVm
UHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICByZXR1cm4gb3Blbihjb250ZXh0LCBuYW1lLCAtMiwgZWMpOworfQorCiBQYXNzUmVmUHRy
PElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBJREJGYWN0b3J5OjpkZWxldGVEYXRhYmFzZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIGlmICghY29udGV4dC0+aXNEb2N1bWVudCgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKaW5kZXggNDYxMWNiNmM0
ZmU4Mzk5MGI0NzI0YTQzYmYwOWM5YTVhOTVkODg4ZC4uMzY0NWJiODFkYzdlZTk2NjkwNWRhNjUy
YzA2NGRhNzM4NmY2NTNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnkuaApAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlz
dC5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAi
SURCUmVxdWVzdC5oIgorI2luY2x1ZGUgIklEQk9wZW5EQlJlcXVlc3QuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTU4LDcgKzU4LDggQEAgcHVibGljOgogCiAgICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBnZXREYXRhYmFzZU5hbWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKIAotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0
cjxJREJPcGVuREJSZXF1ZXN0PiBvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQk9wZW5EQlJl
cXVlc3Q+IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwg
aW50NjRfdCB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJWZXJz
aW9uQ2hhbmdlUmVxdWVzdD4gZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgc2hvcnQgY21wKFBh
c3NSZWZQdHI8SURCS2V5PiBmaXJzdCwgUGFzc1JlZlB0cjxJREJLZXk+IHNlY29uZCwgRXhjZXB0
aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5LmlkbAppbmRleCAwMzg5ZWIyYWFlN2UxMjk5NTRkOWFjZjAzYTU5ZmZiY2M3ZmJhYWNjLi5i
ZjcxYTJkZDI1ZDFmZjk1ZTI2NDM1ZjRlNDFmMGM0MWI5NzY3MmMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbApAQCAtMzAsNyArMzAsNyBA
QCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgXSBJREJGYWN0b3J5IHsKICAgICAgICAgW0NhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVudGVkQXM9Z2V0RGF0YWJhc2VOYW1lc10g
SURCUmVxdWVzdCB3ZWJraXRHZXREYXRhYmFzZU5hbWVzKCk7CiAKLSAgICAgICAgW0NhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3Qgb3BlbihpbiBET01TdHJpbmcgbmFt
ZSkKKyAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQk9wZW5EQlJl
cXVlc3Qgb3BlbihpbiBET01TdHJpbmcgbmFtZSwgaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBsb25n
IGxvbmcgdmVyc2lvbikKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24p
OwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCVmVyc2lvbkNo
YW5nZVJlcXVlc3QgZGVsZXRlRGF0YWJhc2UoaW4gRE9NU3RyaW5nIG5hbWUpCiAgICAgICAgICAg
ICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCmluZGV4
IDYwOGI3YzNmYTU5MWQ1ODMzMmRhNDdmZTE5NmZlMDE4Zjk0ZmIxYmQuLmY1NTJlZjU4NGJkZDUw
ZDJmMTgzOGRiYWFlZDcwY2U1OTBlY2U4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtOTks
MTQgKzk5LDE0IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpnZXREYXRhYmFzZU5hbWVz
KFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsCiAgICAgY2FsbGJhY2tzLT5vblN1
Y2Nlc3MoZGF0YWJhc2VOYW1lcy5yZWxlYXNlKCkpOwogfQogCi12b2lkIElEQkZhY3RvcnlCYWNr
ZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIElEQkNhbGxiYWNrcyogY2FsbGJhY2tz
LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiwgRnJhbWUqLCBjb25z
dCBTdHJpbmcmIGRhdGFEaXJlY3RvcnkpCit2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Bl
bihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgSURCQ2FsbGJhY2tzKiBjYWxs
YmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luLCBGcmFtZSos
IGNvbnN0IFN0cmluZyYgZGF0YURpcmVjdG9yeSkKIHsKLSAgICBvcGVuSW50ZXJuYWwobmFtZSwg
Y2FsbGJhY2tzLCBzZWN1cml0eU9yaWdpbiwgZGF0YURpcmVjdG9yeSk7CisgICAgb3BlbkludGVy
bmFsKG5hbWUsIHZlcnNpb24sIGNhbGxiYWNrcywgc2VjdXJpdHlPcmlnaW4sIGRhdGFEaXJlY3Rv
cnkpOwogfQogCi12b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3BlbkZyb21Xb3JrZXIoY29u
c3QgU3RyaW5nJiBuYW1lLCBJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4sIFdvcmtlckNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IGRhdGFEaXJlY3RvcnkpCit2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3BlbkZyb21Xb3Jr
ZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIElEQkNhbGxiYWNrcyogY2Fs
bGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiwgV29ya2Vy
Q29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcmVjdG9yeSkKIHsKLSAgICBvcGVuSW50ZXJu
YWwobmFtZSwgY2FsbGJhY2tzLCBzZWN1cml0eU9yaWdpbiwgZGF0YURpcmVjdG9yeSk7CisgICAg
b3BlbkludGVybmFsKG5hbWUsIC0yNSwgY2FsbGJhY2tzLCBzZWN1cml0eU9yaWdpbiwgZGF0YURp
cmVjdG9yeSk7CiB9CiAKIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpkZWxldGVEYXRhYmFz
ZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Ms
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luLCBGcmFtZSosIGNvbnN0
IFN0cmluZyYgZGF0YURpcmVjdG9yeSkKQEAgLTE2MCwzMiArMTYwLDMxIEBAIFBhc3NSZWZQdHI8
SURCQmFja2luZ1N0b3JlPiBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5CYWNraW5nU3RvcmUo
UGFzc1JlZlB0cjxTCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgSURCRmFjdG9yeUJhY2tlbmRJ
bXBsOjpvcGVuSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJDYWxsYmFja3MqIGNhbGxi
YWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJwU2VjdXJpdHlPcmlnaW4sIGNvbnN0
IFN0cmluZyYgZGF0YURpcmVjdG9yeSkKK3ZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVu
SW50ZXJuYWwoY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIElEQkNhbGxiYWNr
cyogY2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBwcnBTZWN1cml0eU9yaWdp
biwgY29uc3QgU3RyaW5nJiBkYXRhRGlyZWN0b3J5KQogeworICAgIExPR19FUlJPUigiVG9wIG9m
IElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3BlbkludGVybmFsLCB2ZXJzaW9uID0gJWxkIiwgdmVy
c2lvbik7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IHBycFNl
Y3VyaXR5T3JpZ2luOwogICAgIGNvbnN0IFN0cmluZyB1bmlxdWVJZGVudGlmaWVyID0gY29tcHV0
ZVVuaXF1ZUlkZW50aWZpZXIobmFtZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwogCisgICAgUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlQmFja2VuZDsKICAgICBJREJEYXRh
YmFzZUJhY2tlbmRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZmluZCh1
bmlxdWVJZGVudGlmaWVyKTsKLSAgICBpZiAoaXQgIT0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZW5k
KCkpIHsKLSAgICAgICAgLy8gSWYgaXQncyBhbHJlYWR5IGJlZW4gb3BlbmVkLCB3ZSBoYXZlIHRv
IHdhaXQgZm9yIGFueSBwZW5kaW5nCi0gICAgICAgIC8vIHNldFZlcnNpb24gY2FsbHMgdG8gY29t
cGxldGUuCi0gICAgICAgIGl0LT5zZWNvbmQtPm9wZW5Db25uZWN0aW9uKGNhbGxiYWNrcyk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogRXZlcnl0aGluZyBmcm9tIG5v
dyBvbiBzaG91bGQgYmUgZG9uZSBvbiBhbm90aGVyIHRocmVhZC4KLSAgICBSZWZQdHI8SURCQmFj
a2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBvcGVuQmFja2luZ1N0b3JlKHNlY3VyaXR5T3JpZ2lu
LCBkYXRhRGlyZWN0b3J5KTsKLSAgICBpZiAoIWJhY2tpbmdTdG9yZSkgewotICAgICAgICBjYWxs
YmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZUJhY2tl
bmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFtZSwgYmFja2luZ1N0b3JlLmdl
dCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCksIHRoaXMsIHVuaXF1ZUlkZW50aWZp
ZXIpOwotICAgIGlmIChkYXRhYmFzZUJhY2tlbmQpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vblN1
Y2Nlc3MoUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4oZGF0YWJhc2VCYWNrZW5k
LmdldCgpKS5yZWxlYXNlKCkpOwotICAgICAgICBtX2RhdGFiYXNlQmFja2VuZE1hcC5zZXQodW5p
cXVlSWRlbnRpZmllciwgZGF0YWJhc2VCYWNrZW5kLmdldCgpKTsKKyAgICBpZiAoaXQgPT0gbV9k
YXRhYmFzZUJhY2tlbmRNYXAuZW5kKCkpIHsKKyAgICAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZT4gYmFja2luZ1N0b3JlID0gb3BlbkJhY2tpbmdTdG9yZShzZWN1cml0eU9yaWdpbiwgZGF0YURp
cmVjdG9yeSk7CisgICAgICAgIGlmICghYmFja2luZ1N0b3JlKSB7CisgICAgICAgICAgICBjYWxs
YmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpjcmVhdGUobmFtZSwgYmFja2luZ1N0b3JlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29v
cmRpbmF0b3IuZ2V0KCksIHRoaXMsIHVuaXF1ZUlkZW50aWZpZXIpOworICAgICAgICBpZiAoZGF0
YWJhc2VCYWNrZW5kKQorICAgICAgICAgICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1
ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiSW50ZXJuYWwgZXJyb3IuIikpOwogICAgIH0g
ZWxzZQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsK
KyAgICAgICAgZGF0YWJhc2VCYWNrZW5kID0gaXQtPnNlY29uZDsKKyAgICBpZiAodmVyc2lvbiA8
IDApCisgICAgICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbkNvbm5lY3Rpb24oY2FsbGJhY2tzKTsK
KyAgICBlbHNlCisgICAgICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbkNvbm5lY3Rpb25XaXRoVmVy
c2lvbihjYWxsYmFja3MsIHZlcnNpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFj
a2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlC
YWNrZW5kSW1wbC5oCmluZGV4IDIwNTY0YTg4NTJlMzIxMGFkNzY2OWNhN2E1NDk0YThkNjhkMzRl
MjAuLmVmYmNjN2U1ZTI3MGY3NTdiNWZhOGE4ZmIzOTdmY2YxMmExNzk2NWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5k
SW1wbC5oCkBAIC01Nyw4ICs1Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRE
YXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4sIEZyYW1lKiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQ2FsbGJhY2tzKiwgUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4sIEZyYW1lKiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKLSAgICB2aXJ0
dWFsIHZvaWQgb3BlbkZyb21Xb3JrZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJDYWxsYmFja3Mq
LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgV29ya2VyQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYgZGF0YURpcik7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBp
bnQ2NF90IHZlcnNpb24sIElEQkNhbGxiYWNrcyosIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
LCBGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CisgICAgdmlydHVhbCB2b2lkIG9wZW5G
cm9tV29ya2VyKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBJREJDYWxsYmFj
a3MqLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgV29ya2VyQ29udGV4dCosIGNvbnN0IFN0
cmluZyYgZGF0YURpcik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0
cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiwgRnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOwogCiBwcm90ZWN0ZWQ6CkBA
IC02Niw3ICs2Niw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFj
a2luZ1N0b3JlPiBvcGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBj
b25zdCBTdHJpbmcmIGRhdGFEaXIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgb3BlbkludGVybmFs
KGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQ2FsbGJhY2tzKiwgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4sIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CisgICAgdm9pZCBvcGVuSW50ZXJuYWwoY29u
c3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIElEQkNhbGxiYWNrcyosIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOwogCiAgICAgdHlwZWRl
ZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+ID4gSURCRGF0
YWJhc2VCYWNrZW5kTWFwOwogICAgIElEQkRhdGFiYXNlQmFja2VuZE1hcCBtX2RhdGFiYXNlQmFj
a2VuZE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oCmluZGV4IDE5YTFjOTc4NGMzMGJmN2Fh
ODc1NTAwYWJiY2M4ZDQwOTA4ZmI1NWYuLmM3NzY5YTZlYWJiNmEwZWY5OWQyN2JkOWQ4OTY3NDBi
NDE3ZjQ2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNTUsOCArNTUsOCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBGcmFtZSosIGNvbnN0IFN0
cmluZyYgZGF0YURpcikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5n
JiBuYW1lLCBJREJDYWxsYmFja3MqLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgRnJhbWUq
LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgb3BlbkZyb21X
b3JrZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJDYWxsYmFja3MqLCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiwgV29ya2VyQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9u
LCBJREJDYWxsYmFja3MqLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgRnJhbWUqLCBjb25z
dCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbkZyb21Xb3JrZXIo
Y29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIElEQkNhbGxiYWNrcyosIFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBXb3JrZXJDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRh
RGlyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYg
bmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiwgRnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZS5jcHAKaW5kZXggNDk3NzdjNjFiZjM1Y2M3YjY0ZDExZjMxNWZhMjMzZDVkNzc2OTVmYy4u
N2Y5ZjE1NDM1OThjMGZhYzBhNTIyZmUzMGVlMjMyMmQ1ZmYxZjYzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZS5jcHAKQEAgLTgxLDYgKzgxLDEyIEBAIHN0YXRpYyBib29sIHB1dEludChEQk9yVHJhbnNh
Y3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleSwgaW50NjRfdCB2YWx1ZSkKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4KK3N0YXRpYyBib29sIHB1dFZhcklu
dChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleSwgaW50NjRfdCB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gZGItPnB1dChrZXksIGVuY29kZVZhckludCh2YWx1ZSkpOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgogc3RhdGljIGJvb2wgZ2V0
U3RyaW5nKERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5LCBTdHJp
bmcmIGZvdW5kU3RyaW5nKQogewogICAgIFZlY3RvcjxjaGFyPiByZXN1bHQ7CkBAIC0xMjMsMjEg
KzEyOSw0MSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3Qg
eyByZXR1cm4gImlkYl9jbXAxIjsgfQogfTsKIAotc3RhdGljIGJvb2wgc2V0VXBNZXRhZGF0YShM
ZXZlbERCRGF0YWJhc2UqIGRiKQorc3RhdGljIGJvb2wgc2V0VXBNZXRhZGF0YShMZXZlbERCRGF0
YWJhc2UqIGRiLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hh
cj4gbWV0YURhdGFLZXkgPSBTY2hlbWFWZXJzaW9uS2V5OjplbmNvZGUoKTsKIAotICAgIGludDY0
X3Qgc2NoZW1hVmVyc2lvbiA9IDA7CisgICAgaW50NjRfdCBzY2hlbWFWZXJzaW9uID0gLTE7CiAg
ICAgaWYgKCFnZXRJbnQoZGIsIG1ldGFEYXRhS2V5LCBzY2hlbWFWZXJzaW9uKSkgewotICAgICAg
ICBzY2hlbWFWZXJzaW9uID0gMDsKLSAgICAgICAgaWYgKCFwdXRJbnQoZGIsIG1ldGFEYXRhS2V5
LCBzY2hlbWFWZXJzaW9uKSkKKyAgICAgICAgc2NoZW1hVmVyc2lvbiA9IDE7CisgICAgICAgIGlm
ICghcHV0SW50KGRiLCBtZXRhRGF0YUtleSwgc2NoZW1hVmVyc2lvbikpIHsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFRoZXJl
IHdhcyBhIHNjaGVtYSB2ZXJzaW9uLgorICAgICAgICBpZiAoc2NoZW1hVmVyc2lvbiA9PSAwKSB7
CisgICAgICAgICAgICAvLyBtb3ZlIHRoaXMgdG8gYSBzdGFuZGFsb25lIGZ1bmN0aW9uPworICAg
ICAgICAgICAgc2NoZW1hVmVyc2lvbiA9IDE7CisgICAgICAgICAgICBSZWZQdHI8TGV2ZWxEQlRy
YW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IExldmVsREJUcmFuc2FjdGlvbjo6Y3JlYXRlKGRiKTsK
KyAgICAgICAgICAgIHRyYW5zYWN0aW9uLT5wdXQobWV0YURhdGFLZXksIGVuY29kZUludChzY2hl
bWFWZXJzaW9uKSk7CisKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydEtleSA9
IERhdGFiYXNlTmFtZUtleTo6ZW5jb2RlTWluS2V5Rm9yT3JpZ2luKG9yaWdpbik7CisgICAgICAg
ICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RvcEtleSA9IERhdGFiYXNlTmFtZUtleTo6ZW5jb2Rl
U3RvcEtleUZvck9yaWdpbihvcmlnaW4pOworICAgICAgICAgICAgT3duUHRyPExldmVsREJJdGVy
YXRvcj4gaXQgPSBkYi0+Y3JlYXRlSXRlcmF0b3IoKTsKKyAgICAgICAgICAgIGZvciAoaXQtPnNl
ZWsoc3RhcnRLZXkpOyBpdC0+aXNWYWxpZCgpICYmIGNvbXBhcmVLZXlzKGl0LT5rZXkoKSwgc3Rv
cEtleSkgPCAwOyBpdC0+bmV4dCgpKSB7CisgICAgICAgICAgICAgICAgVmVjdG9yPGNoYXI+IHZh
bHVlOworICAgICAgICAgICAgICAgIGJvb2wgb2sgPSB0cmFuc2FjdGlvbi0+Z2V0KGl0LT5rZXko
KSwgdmFsdWUpOworICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsgLy8gZG8g
c29tZXRoaW5nIGJldHRlcgorICAgICAgICAgICAgICAgIGludCBkYl9pZCA9IGRlY29kZUludCh2
YWx1ZS5iZWdpbigpLCB2YWx1ZS5lbmQoKSk7CisgICAgICAgICAgICAgICAgVmVjdG9yPGNoYXI+
IGludFZlcnNpb25LZXkgPSBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoZGJfaWQsIERhdGFi
YXNlTWV0YURhdGFLZXk6OmtVc2VySW50VmVyc2lvbik7CisgICAgICAgICAgICAgICAgdHJhbnNh
Y3Rpb24tPnB1dChpbnRWZXJzaW9uS2V5LCBlbmNvZGVWYXJJbnQoLTEwKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBib29sIG9rID0gdHJhbnNhY3Rpb24tPmNvbW1pdCgpOworICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOyAvLyBkbyBzb21ldGhpbmcgYmV0dGVyCisgICAg
ICAgIH0KKyAgICAgICAgQVNTRVJUKHNjaGVtYVZlcnNpb24gPT0gMSk7CiAgICAgfQogCi0gICAg
Ly8gRklYTUU6IEV2ZW50dWFsbHksIHdlJ2xsIG5lZWQgdG8gYmUgYWJsZSB0byB0cmFuc2l0aW9u
IGJldHdlZW4gc2NoZW1hcy4KLSAgICBpZiAoc2NoZW1hVmVyc2lvbikKLSAgICAgICAgcmV0dXJu
IGZhbHNlOyAvLyBEb24ndCBrbm93IHdoYXQgdG8gZG8gd2l0aCB0aGlzIHZlcnNpb24uCi0KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjAyLDcgKzIyOCw3IEBAIFBhc3NSZWZQdHI8SURCQmFj
a2luZ1N0b3JlPiBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuKFNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0CiAgICAgUmVmUHRyPElEQkxldmVsREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZShh
ZG9wdFJlZihuZXcgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZShmaWxlSWRlbnRpZmllciwgZmFjdG9y
eSwgZGIucmVsZWFzZSgpKSkpOwogICAgIGJhY2tpbmdTdG9yZS0+bV9jb21wYXJhdG9yID0gY29t
cGFyYXRvci5yZWxlYXNlKCk7CiAKLSAgICBpZiAoIXNldFVwTWV0YWRhdGEoYmFja2luZ1N0b3Jl
LT5tX2RiLmdldCgpKSkKKyAgICBpZiAoIXNldFVwTWV0YWRhdGEoYmFja2luZ1N0b3JlLT5tX2Ri
LmdldCgpLCBmaWxlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPElEQkJh
Y2tpbmdTdG9yZT4oKTsKIAogICAgIHJldHVybiBiYWNraW5nU3RvcmUucmVsZWFzZSgpOwpAQCAt
MjI4LDcgKzI1NCw3IEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0RGF0YWJhc2VO
YW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcykKICAgICB9CiB9CiAKLWJvb2wgSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5h
bWUsIFN0cmluZyYgZm91bmRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElkKQorYm9vbCBJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFt
ZSwgU3RyaW5nJiBmb3VuZFN0cmluZ1ZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVyc2lvbiwg
aW50NjRfdCYgZm91bmRJZCkKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5ID0gRGF0YWJh
c2VOYW1lS2V5OjplbmNvZGUobV9pZGVudGlmaWVyLCBuYW1lKTsKIApAQCAtMjM2LDEwICsyNjIs
MTUgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRh
KGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJgogICAgIGlmICghb2spCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIG9rID0gZ2V0U3RyaW5nKG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURh
dGFLZXk6OmVuY29kZShmb3VuZElkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjprVXNlclZlcnNpb24p
LCBmb3VuZFZlcnNpb24pOworICAgIG9rID0gZ2V0U3RyaW5nKG1fZGIuZ2V0KCksIERhdGFiYXNl
TWV0YURhdGFLZXk6OmVuY29kZShmb3VuZElkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjprVXNlclZl
cnNpb24pLCBmb3VuZFN0cmluZ1ZlcnNpb24pOwogICAgIGlmICghb2spCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAorICAgIG9rID0gZ2V0SW50KG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFL
ZXk6OmVuY29kZShmb3VuZElkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjprVXNlckludFZlcnNpb24p
LCBmb3VuZEludFZlcnNpb24pOworICAgIGlmICghb2spIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNTgsNyArMjg5LDcgQEAgc3Rh
dGljIGludDY0X3QgZ2V0TmV3RGF0YWJhc2VJZChMZXZlbERCRGF0YWJhc2UqIGRiKQogICAgIHJl
dHVybiBkYXRhYmFzZUlkOwogfQogCi1ib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0
ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZl
cnNpb24sIGludDY0X3QmIHJvd0lkKQorYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVh
dGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2
ZXJzaW9uLCBjb25zdCBpbnQ2NF90IGludFZlcnNpb24sIGludDY0X3QmIHJvd0lkKQogewogICAg
IHJvd0lkID0gZ2V0TmV3RGF0YWJhc2VJZChtX2RiLmdldCgpKTsKICAgICBpZiAocm93SWQgPCAw
KQpAQCAtMjY5LDYgKzMwMCwxOCBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0
ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdAogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFwdXRTdHJpbmcobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRh
RGF0YUtleTo6ZW5jb2RlKHJvd0lkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjprVXNlclZlcnNpb24p
LCB2ZXJzaW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghcHV0VmFySW50KG1f
ZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShyb3dJZCwgRGF0YWJhc2VNZXRh
RGF0YUtleTo6a1VzZXJJbnRWZXJzaW9uKSwgaW50VmVyc2lvbikpIHsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBJREJMZXZlbERCQmFj
a2luZ1N0b3JlOjp1cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24oaW50NjRfdCByb3dJZCwgaW50
NjRfdCBpbnRWZXJzaW9uKQoreworICAgIEFTU0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7Cisg
ICAgaWYgKCFwdXRWYXJJbnQobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIERhdGFiYXNlTWV0
YURhdGFLZXk6OmVuY29kZShyb3dJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6a1VzZXJJbnRWZXJz
aW9uKSwgaW50VmVyc2lvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0zMDMsNyArMzQ2LDggQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpCiAKICAgICBpbnQ2NF90IGRhdGFi
YXNlSWQ7CiAgICAgU3RyaW5nIHZlcnNpb247Ci0gICAgaWYgKCFnZXRJREJEYXRhYmFzZU1ldGFE
YXRhKG5hbWUsIHZlcnNpb24sIGRhdGFiYXNlSWQpKSB7CisgICAgaW50NjRfdCBpbnRWZXJzaW9u
OworICAgIGlmICghZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShuYW1lLCB2ZXJzaW9uLCBpbnRWZXJz
aW9uLCBkYXRhYmFzZUlkKSkgewogICAgICAgICB0cmFuc2FjdGlvbi0+cm9sbGJhY2soKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGE2NWY5NjNl
ODUwNDMyNTg0ZDk3YzY4MThkYzk0YzJjNjc1MTY2ODkuLjMyNThiYTUwYmI3MWExNzdjM2ZjM2M0
MDk2ZmFhZDI3N2ExYjgxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKQEAgLTQ1LDkgKzQ1LDEwIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJMZXZlbERCQmFja2luZ1N0b3JlKCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcyk7
Ci0gICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBu
YW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCk7Ci0gICAgdmlydHVh
bCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3QmIHJvd0lkKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0
SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRWZXJz
aW9uLCBpbnQ2NF90JiBmb3VuZEludFZlcnNpb24sIGludDY0X3QmIGZvdW5kSWQpOworICAgIHZp
cnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBpbnQ2NF90IGludFZlcnNpb24sIGludDY0X3Qm
IHJvd0lkKTsKICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YShpbnQ2
NF90IHJvd0lkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOworICAgIHZpcnR1YWwgYm9vbCB1cGRh
dGVJREJEYXRhYmFzZUludFZlcnNpb24oaW50NjRfdCByb3dJZCwgaW50NjRfdCBpbnRWZXJzaW9u
KTsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBW
ZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVj
dG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0lu
Y3JlbWVudEZsYWdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKaW5kZXggNDdjOWY3ZDNkMWY0ZjFkNmEyMjExOGY2NDE5
ODFkMzU3NWVlNWRhNy4uNTk0ZGM5MDFmYTc3NGUxYzM5NzQyMTU4MmIxN2Y0ZWRhMzNhMWEyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNv
ZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkNvZGluZy5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCBzdGF0aWMgaW50IGNvbXBhcmVJbnRzKGlu
dDY0X3QgYSwgaW50NjRfdCBiKQogICAgIHJldHVybiAwOwogfQogCi1WZWN0b3I8Y2hhcj4gZW5j
b2RlVmFySW50KGludDY0X3QgbikKK1ZlY3RvcjxjaGFyPiBlbmNvZGVWYXJJbnQodWludDY0X3Qg
bikKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0OyAvLyBGSVhNRTogU2l6ZSB0aGlzIGF0IGNyZWF0
aW9uLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZl
bERCQ29kaW5nLmgKaW5kZXggY2MxZjcyNzhkZWZlYzZlNDYwZDk0YzE0MjE5MjZkMTQ5MTg2Mzlk
Mi4uY2EzYmYwZTZlNmEzYzU1NDIyM2UyZjYwOTRjNzM0NTZiNDkyYjExZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaApAQCAt
NTAsNyArNTAsNyBAQCBWZWN0b3I8Y2hhcj4gZW5jb2RlQm9vbChib29sKTsKIGJvb2wgZGVjb2Rl
Qm9vbChjb25zdCBjaGFyKiBiZWdpbiwgY29uc3QgY2hhciogZW5kKTsKIFZlY3RvcjxjaGFyPiBl
bmNvZGVJbnQoaW50NjRfdCk7CiBpbnQ2NF90IGRlY29kZUludChjb25zdCBjaGFyKiBiZWdpbiwg
Y29uc3QgY2hhciogZW5kKTsKLVZlY3RvcjxjaGFyPiBlbmNvZGVWYXJJbnQoaW50NjRfdCk7CitW
ZWN0b3I8Y2hhcj4gZW5jb2RlVmFySW50KHVpbnQ2NF90KTsKIGNvbnN0IGNoYXIqIGRlY29kZVZh
ckludChjb25zdCBjaGFyICpwLCBjb25zdCBjaGFyKiBsaW1pdCwgaW50NjRfdCYgZm91bmRJbnQp
OwogVmVjdG9yPGNoYXI+IGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmKTsKIFN0cmluZyBkZWNv
ZGVTdHJpbmcoY29uc3QgY2hhciogcCwgY29uc3QgY2hhciogZW5kKTsKQEAgLTE0MCw3ICsxNDAs
OCBAQCBwdWJsaWM6CiAgICAgICAgIGtPcmlnaW5OYW1lID0gMCwKICAgICAgICAga0RhdGFiYXNl
TmFtZSA9IDEsCiAgICAgICAgIGtVc2VyVmVyc2lvbiA9IDIsCi0gICAgICAgIGtNYXhPYmplY3RT
dG9yZUlkID0gMworICAgICAgICBrTWF4T2JqZWN0U3RvcmVJZCA9IDMsCisgICAgICAgIGtVc2Vy
SW50VmVyc2lvbiA9IDQKICAgICB9OwogCiAgICAgc3RhdGljIFZlY3RvcjxjaGFyPiBlbmNvZGUo
aW50NjRfdCBkYXRhYmFzZUlkLCBNZXRhRGF0YVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
YTgzMzk4NzdmNzdhY2Y1YWFlMjgwZDQ5ZDBlZmYzZDYyMzViMTVlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAK
QEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJ
REJPcGVuREJSZXF1ZXN0LmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9u
aXRvci5oIgorI2luY2x1ZGUgIklEQlVwZ3JhZGVOZWVkZWRFdmVudC5oIgorI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVm
UHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBpbnQ2NF90
IHZlcnNpb24pCit7CisgICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVlc3QoYWRvcHRS
ZWYobmV3IElEQk9wZW5EQlJlcXVlc3QoY29udGV4dCwgc291cmNlLCB2ZXJzaW9uKSkpOworICAg
IHJlcXVlc3QtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2Uo
KTsKK30KKworSURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVzdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBpbnQ2NF90IHZl
cnNpb24pCisgICAgOiBJREJSZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSwgMCkKKyAgICAsIG1fdmVy
c2lvbih2ZXJzaW9uKQoreworfQorCitJREJPcGVuREJSZXF1ZXN0Ojp+SURCT3BlbkRCUmVxdWVz
dCgpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgSURCT3BlbkRCUmVxdWVzdDo6aW50ZXJm
YWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JJ
REJPcGVuREJSZXF1ZXN0OworfQorCit2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uQmxvY2tlZCgp
Cit7CisgICAgQVNTRVJUKCFtX2Vycm9yQ29kZSAmJiBtX2Vycm9yTWVzc2FnZS5pc051bGwoKSAm
JiAhbV9yZXN1bHQpOworLy8gICAgZW5xdWV1ZUV2ZW50KElEQlZlcnNpb25DaGFuZ2VFdmVudDo6
Y3JlYXRlKG1fdmVyc2lvbiwgZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCkpOworfQorCit2b2lk
IElEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFkZU5lZWRlZChpbnQ2NF90IGN1cnJlbnRWZXJzaW9u
LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gcHJwVHJhbnNhY3Rp
b25CYWNrZW5kLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gcHJwRGF0
YWJhc2VCYWNrZW5kKQoreworICAgIEFTU0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3Nh
Z2UuaXNOdWxsKCkgJiYgIW1fZXJyb3IgJiYgIW1fcmVzdWx0KTsKKyAgICBpZiAobV9jb250ZXh0
U3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZUJhY2tlbmQg
PSBwcnBEYXRhYmFzZUJhY2tlbmQ7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4gdHJhbnNhY3Rpb25CYWNrZW5kID0gcHJwVHJhbnNhY3Rpb25CYWNrZW5kOworICAg
IFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UgPSBJREJEYXRhYmFzZTo6Y3JlYXRlKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZGF0YWJhc2VCYWNrZW5kKTsKKyAgICBpZGJEYXRhYmFz
ZS0+cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcygpOworCisgICAgQVNTRVJUKHRyYW5zYWN0aW9u
QmFja2VuZC0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7CisgICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uPiBmcm9udGVuZCA9IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0cmFuc2FjdGlvbkJhY2tlbmQsIElEQlRyYW5zYWN0
aW9uOjpWRVJTSU9OX0NIQU5HRSwgaWRiRGF0YWJhc2UuZ2V0KCkpOworICAgIHRyYW5zYWN0aW9u
QmFja2VuZC0+c2V0Q2FsbGJhY2tzKGZyb250ZW5kLmdldCgpKTsKKyAgICBtX3RyYW5zYWN0aW9u
ID0gZnJvbnRlbmQ7CisgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShpZGJEYXRhYmFzZS5y
ZWxlYXNlKCkpOworICAgIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3I6OnJlbW92ZVBlbmRp
bmdUcmFuc2FjdGlvbihtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCkpOworCisgICAgZW5xdWV1ZUV2
ZW50KElEQlVwZ3JhZGVOZWVkZWRFdmVudDo6Y3JlYXRlKGN1cnJlbnRWZXJzaW9uLCBtX3ZlcnNp
b24pKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45YzlmMTk2MTlhYjYzNjlkMzFmMmQ5ZDU0NzFjOGZlYTlkMmFkMGIzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVz
dC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQk9wZW5EQlJlcXVlc3RfaAor
I2RlZmluZSBJREJPcGVuREJSZXF1ZXN0X2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQorCisjaW5jbHVkZSAiSURCUmVxdWVzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIElEQk9wZW5EQlJlcXVlc3QgOiBwdWJsaWMgSURCUmVxdWVzdCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBpbnQ2NF90IHZlcnNpb24pOwor
ICAgIHZpcnR1YWwgfklEQk9wZW5EQlJlcXVlc3QoKTsKKworICAgIHZpcnR1YWwgdm9pZCBvbkJs
b2NrZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgb25VcGdyYWRlTmVlZGVkKGludDY0
X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pIE9WRVJSSURFOworCisg
ICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJm
YWNlTmFtZSgpIGNvbnN0OworCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihi
bG9ja2VkKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHVwZ3JhZGVuZWVk
ZWQpOworCitwcml2YXRlOgorICAgIElEQk9wZW5EQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGludDY0X3QgdmVyc2lvbik7CisKKyAg
ICBpbnQ2NF90IG1fdmVyc2lvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjZW5kaWYgLy8gSURCT3BlbkRCUmVx
dWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
cGVuREJSZXF1ZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9w
ZW5EQlJlcXVlc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyNjZjNzM1OWEwYTY1ZTY5NWIwODQ1ZGU1ZjUz
NTgzYTZjZDgyOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmlkbApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9k
dWxlIHN0b3JhZ2UgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9SU5E
RVhFRF9EQVRBQkFTRSwKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0LAorICAgICAgICBFdmVudFRh
cmdldAorICAgIF0gSURCT3BlbkRCUmVxdWVzdCA6IElEQlJlcXVlc3QgeworICAgICAgICBhdHRy
aWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmJsb2NrZWQ7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9udXBncmFkZW5lZWRlZDsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCA3NjYyMTViYjljMDA1ZGFlOWEz
YjAxN2Y1YmU5N2I3MmI5MzJkYTE0Li5lNzlkZTQ3MDFiYTJmYmM1ZGMzODg1M2ViNGIxMDJjOGI5
ZDc5MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0LmNwcApAQCAtNTQsMTIgKzU0LDEyIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCUmVx
dWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSCiBJREJS
ZXF1ZXN0OjpJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZWZQdHI8SURCQW55PiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICA6
IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9lcnJvckNvZGUoMCkKLSAg
ICAsIG1fc291cmNlKHNvdXJjZSkKKyAgICAsIG1fY29udGV4dFN0b3BwZWQoZmFsc2UpCiAgICAg
LCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQorICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAg
ICwgbV9yZWFkeVN0YXRlKFBFTkRJTkcpCiAgICAgLCBtX3JlcXVlc3RGaW5pc2hlZChmYWxzZSkK
ICAgICAsIG1fY3Vyc29yRmluaXNoZWQoZmFsc2UpCi0gICAgLCBtX2NvbnRleHRTdG9wcGVkKGZh
bHNlKQogICAgICwgbV9jdXJzb3JUeXBlKElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkludmFs
aWRDdXJzb3JUeXBlKQogICAgICwgbV9jdXJzb3IoMCkKIHsKQEAgLTI0OSw3ICsyNDksNyBAQCB2
b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2U+IGJhY2tlbmQpCiB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkKIHsKICAgICBJREJfVFJBQ0UoIklE
QlJlcXVlc3Q6Om9uU3VjY2VzcyhJREJEYXRhYmFzZSkiKTsKLSAgICBBU1NFUlQoIW1fZXJyb3JD
b2RlICYmIG1fZXJyb3JNZXNzYWdlLmlzTnVsbCgpICYmICFtX2Vycm9yICYmICFtX3Jlc3VsdCk7
CisgICAgQVNTRVJUKCFtX2Vycm9yQ29kZSAmJiBtX2Vycm9yTWVzc2FnZS5pc051bGwoKSAmJiAh
bV9lcnJvcik7CiAgICAgaWYgKG1fY29udGV4dFN0b3BwZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTYsNyArMzU2LDcgQEAgYm9vbCBJREJS
ZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgIEFTU0VS
VChtX2VucXVldWVkRXZlbnRzLnNpemUoKSk7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSk7CiAgICAgQVNTRVJUKGV2ZW50LT50YXJnZXQoKSA9PSB0aGlzKTsKLSAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKG1fcmVhZHlTdGF0ZSA8IERPTkUsICJtX3JlYWR5U3RhdGUgPCBET05F
KCVkKSwgd2FzICVkIiwgRE9ORSwgbV9yZWFkeVN0YXRlKTsKKy8vICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UobV9yZWFkeVN0YXRlIDwgRE9ORSwgIldoZW4gZGlzcGF0Y2hpbmcgZXZlbnQgJXMsIG1f
cmVhZHlTdGF0ZSA8IERPTkUoJWQpLCB3YXMgJWQiLCBldmVudC0+dHlwZSgpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCksIERPTkUsIG1fcmVhZHlTdGF0ZSk7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkg
IT0gZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCkKICAgICAgICAgbV9yZWFkeVN0YXRlID0gRE9O
RTsKIApAQCAtMzg3LDExICszODcsMTUgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50
KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBXaGVuIHdl
IGFsbG93IGN1c3RvbSBldmVudCBkaXNwYXRjaGluZywgdGhpcyB3aWxsIHByb2JhYmx5IG5lZWQg
dG8gY2hhbmdlLgotICAgIEFTU0VSVChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWNj
ZXNzRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZXJyb3JFdmVudCB8fCBl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibG9ja2VkRXZlbnQpOworICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50IHx8
IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgfHwgZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLnVwZ3JhZGVuZWVkZWRFdmVudCwgImV2ZW50IHR5cGUgd2FzICVzIiwgZXZlbnQtPnR5
cGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBib29sIGRvbnRQcmV2ZW50RGVmYXVs
dCA9IElEQkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2goZXZlbnQuZ2V0KCksIHRhcmdldHMpOwog
Ci0gICAgLy8gSWYgdGhlIHJlc3VsdCB3YXMgb2YgdHlwZSBJREJDdXJzb3IsIG9yIGEgb25CbG9j
a2VkIGV2ZW50LCB0aGVuIHdlJ2xsIGZpcmUgYWdhaW4uCi0gICAgaWYgKGV2ZW50LT50eXBlKCkg
IT0gZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCAmJiAoIWN1cnNvclRvTm90aWZ5IHx8IG1fY3Vy
c29yRmluaXNoZWQpKQorICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS51cGdy
YWRlbmVlZGVkRXZlbnQpIHsKKyAgICAgIC8vIE5vdGlmeSBiYWNrIGVuZD8KKyAgICB9CisKKyAg
ICAvLyBJZiB0aGUgcmVzdWx0IHdhcyBvZiB0eXBlIElEQkN1cnNvciwgb3Igd2UncmUgZmlyaW5n
IGJsb2NrZWQgb3IgdXBncmFkZW5lZWRlZCwgdGhlbiB3ZSdsbCBmaXJlIGFnYWluLgorICAgIGlm
IChldmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5ibG9ja2VkRXZlbnQgJiYgKCFjdXJzb3JU
b05vdGlmeSB8fCBtX2N1cnNvckZpbmlzaGVkKSAmJiBldmVudC0+dHlwZSgpICE9IGV2ZW50TmFt
ZXMoKS51cGdyYWRlbmVlZGVkRXZlbnQpCiAgICAgICAgIG1fcmVxdWVzdEZpbmlzaGVkID0gdHJ1
ZTsKIAogICAgIGlmIChjdXJzb3JUb05vdGlmeSkKQEAgLTQyMSw3ICs0MjUsNyBAQCB2b2lkIElE
QlJlcXVlc3Q6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICBpZiAo
bV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBBU1NFUlQobV9yZWFkeVN0YXRlIDwgRE9ORSk7CisvLyAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKG1fcmVhZHlTdGF0ZSA8IERPTkUsICJXaGVuIHF1ZXVlaW5nIGV2ZW50ICVz
LCBtX3JlYWR5U3RhdGUgPCBET05FKCVkKSwgd2FzICVkIiwgZXZlbnQtPnR5cGUoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpLCBET05FLCBtX3JlYWR5U3RhdGUpOwogCiAgICAgRXZlbnRRdWV1ZSog
ZXZlbnRRdWV1ZSA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXZlbnRRdWV1ZSgpOwogICAg
IGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmgKaW5kZXggZTEwNGQ4ZjFlODE1Y2I1YzQ1N2Y2M2UxM2Q4NDk0M2Ji
MmNmOWJmZC4uODBjYWZhYmY0N2RlODQ1MjNhZjk5YmRmNDI1YWUwZDkwNGU2OTcxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaApAQCAtMTEyLDYg
KzExMiw4IEBAIHByb3RlY3RlZDoKICAgICB1bnNpZ25lZCBzaG9ydCBtX2Vycm9yQ29kZTsKICAg
ICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7CiAgICAgUmVmUHRyPERPTUVycm9yPiBtX2Vycm9yOwor
ICAgIGJvb2wgbV9jb250ZXh0U3RvcHBlZDsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1f
dHJhbnNhY3Rpb247CiAKIHByaXZhdGU6CiAgICAgLy8gRXZlbnRUYXJnZXQKQEAgLTEyMywxMiAr
MTI1LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRSZXN1bHRDdXJzb3IoUGFzc1JlZlB0cjxJ
REJDdXJzb3I+LCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlKTsKIAogICAg
IFJlZlB0cjxJREJBbnk+IG1fc291cmNlOwotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gbV90
cmFuc2FjdGlvbjsKIAogICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwogICAgIGJvb2wgbV9y
ZXF1ZXN0RmluaXNoZWQ7IC8vIElzIGl0IHBvc3NpYmxlIHRoYXQgd2UnbGwgZmlyZSBhbnkgbW9y
ZSBldmVudHM/IElmIG5vdCwgd2UncmUgZmluaXNoZWQuCiAgICAgYm9vbCBtX2N1cnNvckZpbmlz
aGVkOwotICAgIGJvb2wgbV9jb250ZXh0U3RvcHBlZDsKICAgICBWZWN0b3I8UmVmUHRyPEV2ZW50
PiA+IG1fZW5xdWV1ZWRFdmVudHM7CiAKICAgICAvLyBPbmx5IHVzZWQgaWYgdGhlIHJlc3VsdCB0
eXBlIHdpbGwgYmUgYSBjdXJzb3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJVcGdyYWRlTmVlZGVkRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDdi
ZWQ2YjRjYjE5YWQzOTdkNjkzOTk1Mjg0M2VjYWQxOGJkM2NhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmNw
cApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IklEQlVwZ3JhZGVOZWVkZWRFdmVudC5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiSURCQW55LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxJREJVcGdyYWRlTmVlZGVkRXZlbnQ+IElEQlVw
Z3JhZGVOZWVkZWRFdmVudDo6Y3JlYXRlKGludDY0X3Qgb2xkVmVyc2lvbiwgaW50NjRfdCBuZXdW
ZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IElEQlVwZ3JhZGVOZWVkZWRFdmVudChvbGRWZXJzaW9uLCBuZXdWZXJzaW9uLCBl
dmVudE5hbWVzKCkudXBncmFkZW5lZWRlZEV2ZW50KSk7Cit9CisKK0lEQlVwZ3JhZGVOZWVkZWRF
dmVudDo6SURCVXBncmFkZU5lZWRlZEV2ZW50KGludDY0X3Qgb2xkVmVyc2lvbiwgaW50NjRfdCBu
ZXdWZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKKyAgICA6IEV2ZW50KGV2
ZW50VHlwZSwgZmFsc2UgLypjYW5CdWJibGUqLywgZmFsc2UgLypjYW5jZWxhYmxlKi8pCisgICAg
LCBtX29sZFZlcnNpb24ob2xkVmVyc2lvbikKKyAgICAsIG1fbmV3VmVyc2lvbihuZXdWZXJzaW9u
KQoreworfQorCitJREJVcGdyYWRlTmVlZGVkRXZlbnQ6On5JREJVcGdyYWRlTmVlZGVkRXZlbnQo
KQoreworfQorCitpbnQ2NF90IElEQlVwZ3JhZGVOZWVkZWRFdmVudDo6b2xkVmVyc2lvbigpCit7
CisgICAgcmV0dXJuIG1fb2xkVmVyc2lvbjsKK30KKworaW50NjRfdCBJREJVcGdyYWRlTmVlZGVk
RXZlbnQ6Om5ld1ZlcnNpb24oKQoreworICAgIHJldHVybiBtX25ld1ZlcnNpb247Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgSURCVXBncmFkZU5lZWRlZEV2ZW50OjppbnRlcmZhY2VOYW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvcklEQlVwZ3JhZGVO
ZWVkZWRFdmVudDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRF
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRl
ZEV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJjMTY1MTA2OGQ4Zjk0NzNjY2ZhNzZjZWNkNGM2NDJlNDg1
NTJmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IElEQlVwZ3JhZGVOZWVkZWRFdmVudF9oCisjZGVmaW5lIElEQlVwZ3JhZGVOZWVkZWRFdmVudF9o
CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkV2ZW50LmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJ
REJBbnk7CisKK2NsYXNzIElEQlVwZ3JhZGVOZWVkZWRFdmVudCA6IHB1YmxpYyBFdmVudCB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVXBncmFkZU5lZWRlZEV2ZW50PiBjcmVh
dGUoaW50NjRfdCBvbGRWZXJzaW9uID0gLTUwLCBpbnQ2NF90IG5ld1ZlcnNpb24gPSAtNTAsIGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlID0gQXRvbWljU3RyaW5nKCkpOworICAgIHZpcnR1
YWwgfklEQlVwZ3JhZGVOZWVkZWRFdmVudCgpOworCisgICAgdmlydHVhbCBpbnQ2NF90IG9sZFZl
cnNpb24oKTsKKyAgICB2aXJ0dWFsIGludDY0X3QgbmV3VmVyc2lvbigpOworCisgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICBJREJVcGdyYWRlTmVlZGVkRXZlbnQoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5l
d1ZlcnNpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKKworICAgIGludDY0X3Qg
bV9vbGRWZXJzaW9uOworICAgIGludDY0X3QgbV9uZXdWZXJzaW9uOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNl
bmRpZiAvLyBJREJVcGdyYWRlTmVlZGVkRXZlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDc3YjAwMGQ0MjJmYjcyN2Q0MDA4MjM2OThhNDAxMWQyMjFkNTdhOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVk
ZWRFdmVudC5pZGwKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBzdG9yYWdlIHsKKwor
ICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKKyAg
ICBdIElEQlVwZ3JhZGVOZWVkZWRFdmVudCA6IEV2ZW50IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyBvbGRWZXJzaW9uOworICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIG5ld1ZlcnNpb247CisgICAgfTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCA3YzJiYTdmNTQ2YmZlMjc4ZTMyYWQ0ODkzNWZhYzc4MWQ1N2E3ZjFkLi5h
M2M4OTg1ZDViODk0NzY1NmJjMjc4NThjM2QwMTNlY2RhZjA1YmMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CkBAIC04MDgsOCArODA4LDEwIEBACiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURC
S2V5LmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaWRs
JywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwnLAor
ICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaWRsJywKICAg
ICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmlkbCcsCiAgICAgICAgICAg
ICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaWRsJywKKyAgICAgICAgICAgICdN
b2R1bGVzL2luZGV4ZWRkYi9JREJVcGdyYWRlTmVlZGVkRXZlbnQuaWRsJywKICAgICAgICAgICAg
ICdNb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaWRsJywKICAgICAgICAg
ICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5pZGwnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckNvbnRleHRJbmRleGVkRGF0YWJhc2Uu
aWRsJywKQEAgLTE0ODksNiArMTQ5MSw4IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgnLAorICAgICAg
ICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwJywKKyAgICAgICAg
ICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmgnLAogICAgICAgICAgICAg
J01vZHVsZXMvaW5kZXhlZGRiL0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuY3BwJywKICAg
ICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9y
LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwJywKQEAg
LTE1MDIsNiArMTUwNiw4IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb25DYWxsYmFja3MuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9p
bmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmNwcCcsCisgICAgICAgICAgICAnTW9kdWxl
cy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmgnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAnLAogICAgICAgICAgICAgJ01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oJywKICAgICAgICAgICAgICdN
b2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHAnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudE5hbWVzLmgKaW5kZXggZDhmNWZkYjBhN2ExYzM5YmNjYjY5NTRhYzlkYmU3ZGFkOGE4Y2Qy
Ni4uZTVmNWZlNGMxYzk1OTI3MDVjNzQzZmMwYzFjMDcxOTVkY2ZmOTE4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5oCkBAIC0xMTAsNiArMTEwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IG1hY3JvKHRleHRJbnB1dCkgXAogICAgIG1hY3JvKHVubG9hZCkgXAogICAgIG1hY3JvKHVwZGF0
ZXJlYWR5KSBcCisgICAgbWFjcm8odXBncmFkZW5lZWRlZCkgXAogICAgIG1hY3JvKHZlcnNpb25j
aGFuZ2UpIFwKICAgICBtYWNybyh3ZWJraXR2aXNpYmlsaXR5Y2hhbmdlKSBcCiAgICAgbWFjcm8o
d3JpdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KaW5kZXggZjQyYjRiNGZiN2YwNzk4NzY3
Yzc0YjJkYTBjZGU3MGVkZmUyNWQxYi4uOTIxZmVmZWNiOTVhNmZjNWNlYzNlYTFlOTE2YWMzZjll
ZDc0MzQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KQEAgLTM4LDYgKzM4LDcgQEAgU3Rv
cmFnZUV2ZW50CiBTVkdFdmVudHMgaW50ZXJmYWNlTmFtZT1FdmVudCwgY29uZGl0aW9uYWw9U1ZH
CiBTVkdab29tRXZlbnQgY29uZGl0aW9uYWw9U1ZHCiBTVkdab29tRXZlbnRzIGludGVyZmFjZU5h
bWU9U1ZHWm9vbUV2ZW50LCBjb25kaXRpb25hbD1TVkcKK0lEQlVwZ3JhZGVOZWVkZWRFdmVudCBj
b25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQgY29uZGl0
aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogVG91Y2hFdmVudCBjb25kaXRpb25hbD1UT1VDSF9FVkVO
VFMsIHJ1bnRpbWVDb25kaXRpb25hbD10b3VjaEVuYWJsZWQKIERldmljZU1vdGlvbkV2ZW50IGNv
bmRpdGlvbmFsPURFVklDRV9PUklFTlRBVElPTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dEZhY3RvcnkuaW4KaW5kZXggZjAxYjgxMWFiYTliODA2ZmMyMTI1ZjcwZjdiNDMxMTczYjNiYjVi
MC4uMzAyMzM2YWJkZDUzZWYyMDNjZTA1NTdkNjQ3MWRlMjI0M2UxMTUxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC0xMCw2ICsxMCw3IEBAIEV2ZW50U291
cmNlCiBGaWxlUmVhZGVyIGNvbmRpdGlvbmFsPUJMT0IKIEZpbGVXcml0ZXIgY29uZGl0aW9uYWw9
RklMRV9TWVNURU0KIElEQkRhdGFiYXNlIGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKK0lE
Qk9wZW5EQlJlcXVlc3QgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSURCUmVxdWVzdCBj
b25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJREJUcmFuc2FjdGlvbiBjb25kaXRpb25hbD1J
TkRFWEVEX0RBVEFCQVNFCiBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCBjb25kaXRpb25hbD1JTkRF
WEVEX0RBVEFCQVNFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcAppbmRleCA4M2YwZjJkN2JkNWVkMzkyM2NhNWNiZGY2OWFiYTQ0
OWY0Njk0ZDhjLi4wYjdjZjgxNmMwZjE1YTg1ODg3ZGI4Y2JhMjhlY2RkMDRiMWY4NDQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dC5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBwcml2YXRlOgogdm9pZCBFeGVjdXRhYmxlV2l0aERh
dGFiYXNlOjpzdGFydChJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSogaWRiRmFjdG9yeSwgU2Vj
dXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VOYW1lKQogewogICAgIFJlZlB0cjxPcGVuRGF0YWJhc2VDYWxsYmFjaz4gY2FsbGJh
Y2sgPSBPcGVuRGF0YWJhc2VDYWxsYmFjazo6Y3JlYXRlKHRoaXMpOwotICAgIGlkYkZhY3Rvcnkt
Pm9wZW4oZGF0YWJhc2VOYW1lLCBjYWxsYmFjay5nZXQoKSwgc2VjdXJpdHlPcmlnaW4sIGZyYW1l
LCBTdHJpbmcoKSk7CisgICAgaWRiRmFjdG9yeS0+b3BlbihkYXRhYmFzZU5hbWUsIC0yMCwgY2Fs
bGJhY2suZ2V0KCksIHNlY3VyaXR5T3JpZ2luLCBmcmFtZSwgU3RyaW5nKCkpOwogfQogCiBzdGF0
aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9u
Rm9yRGF0YWJhc2UoSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlKiBpZGJEYXRhYmFzZSwgY29u
c3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQkNhbGxiYWNrcy5oCmluZGV4IDMxZDY2NWI0YmJjMGFlOThiNjhhYjllNTIw
OTg2NDg1N2YyNzAzM2UuLjQ3ZTg4YjMyODg3ZjNjYTlkNDNhZWY1NTA4MTdiYjZkMDM0YWM0ZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNr
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5o
CkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0
aENvbnRpbnVhdGlvbigpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmly
dHVhbCB2b2lkIG9uQmxvY2tlZCgpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBXZWJWZWN0b3I8V2Vi
SURCS2V5PiYga2V5cywgY29uc3QgV2ViVmVjdG9yPFdlYklEQktleT4mIHByaW1hcnlLZXlzLCBj
b25zdCBXZWJWZWN0b3I8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiYgdmFsdWVzKSB7IFdFQktJ
VF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBvblVwZ3JhZGVOZWVk
ZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBXZWJJREJUcmFuc2FjdGlvbiosIFdlYklEQkRhdGFiYXNl
KikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURC
RmFjdG9yeS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5o
CmluZGV4IGU5NTZlYmRlZDhjNDU5ZTdlZmU2MzIzNzFmNmU2ZDI0YWRhODA5ZjIuLmRkN2YzY2Iz
ZWUyNzBhZmY5ZDRiOGUxYjJlZDEzNzc5OWU3M2NkODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJGYWN0b3J5LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFdlYklEQkNhbGxiYWNrcyogY2FsbGJh
Y2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSogZnJhbWUsIGNv
bnN0IFdlYlN0cmluZyYgZGF0YURpcikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
IAogICAgIC8vIFRoZSBXZWJLaXQgaW1wbGVtZW50YXRpb24gb2Ygb3BlbiBpZ25vcmVzIHRoZSBX
ZWJGcmFtZSogcGFyYW1ldGVyLgotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3Jp
Z2luJiBvcmlnaW4sIFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKSB7
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNv
bnN0IFdlYlN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqIGNh
bGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqIGZyYW1l
LCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1l
KiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxi
YWNrc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1By
b3h5LmNwcAppbmRleCBkMGU3NTQ4NWEzNTI4NTkzMWE4ZGE3YzVkOTQzYjI5OWM1NjE0Njk5Li4y
ODhkNDFlNzVkZmJjZmFkYzlkMGU5NmMzMDhlZjY4OGEyZTViMDI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCkBAIC0xMjAsNiArMTIw
LDEwIEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uQmxvY2tlZCgpCiB7CiAgICAgbV9jYWxs
YmFja3MtPm9uQmxvY2tlZCgpOwogfQordm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25VcGdyYWRl
TmVlZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZT4gZGF0YWJhc2UpCit7CisgICAgbV9jYWxsYmFja3MtPm9uVXBncmFkZU5lZWRlZChv
bGRWZXJzaW9uLCBuZXcgV2ViSURCVHJhbnNhY3Rpb25JbXBsKHRyYW5zYWN0aW9uKSwgbmV3IFdl
YklEQkRhdGFiYXNlSW1wbChkYXRhYmFzZSkpOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKaW5k
ZXggMzMzMzUxZmRiOWE4YTU5NDAxOWEyMmY3MzJjYjc1ZTQ5ZDU3ZjcxMS4uZjlkNWUyZDY4ZDU5
NGQzOGY1MTEyZWFkMjIxZGMwMTIyNTQzYzY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCkBAIC01NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbigpOwogICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpJ
REJLZXk+ID4mIGtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiA+JiBw
cmltYXJ5S2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU+ID4mIHZhbHVlcyk7CiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpOworICAgIHZp
cnR1YWwgdm9pZCBvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7CiAKIHByaXZhdGU6CiAgICAgSURC
Q2FsbGJhY2tzUHJveHkoUGFzc093blB0cjxXZWJJREJDYWxsYmFja3M+KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKaW5k
ZXggMTQ5YmZlMTJhMGUzOTY3M2Y3YjQ2NWFmNmI5N2QxMTBmM2RjZDU2Ny4uZTMyMTkyNTdjYmUz
YjJiM2I5ZTEwOGU2OTBiYmExMmVhNjBlNDM4ZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKQEAgLTE4MCw3ICsxODAs
NyBAQCBib29sIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmFsbG93SURCRnJvbVdvcmtlclRocmVh
ZChXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZQogICAgIHJldHVybiBicmlkZ2UtPnJlc3VsdCgp
OwogfQogCi12b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6Om9wZW5Gcm9tV29ya2VyKGNvbnN0
IFN0cmluZyYgbmFtZSwgSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IHBycE9yaWdpbiwgV29ya2VyQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBkYXRhRGlyKQordm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpvcGVuRnJvbVdvcmtlcihj
b25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgSURCQ2FsbGJhY2tzKiBjYWxsYmFj
a3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHBycE9yaWdpbiwgV29ya2VyQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKQogewogI2lmIEVOQUJMRShXT1JLRVJTKQog
ICAgIFdlYlNlY3VyaXR5T3JpZ2luIG9yaWdpbihwcnBPcmlnaW4pOwpAQCAtMTg4LDExICsxODgs
MTEgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpvcGVuRnJvbVdvcmtlcihjb25zdCBT
dHJpbmcmIG5hbWUsIElEQkNhbGxiYWNrcyogY2EKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9y
KFdlYklEQkRhdGFiYXNlRXJyb3IoMCwgIlRoZSB1c2VyIGRlbmllZCBwZXJtaXNzaW9uIHRvIGFj
Y2VzcyB0aGUgZGF0YWJhc2UuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fd2Vi
SURCRmFjdG9yeS0+b3BlbihuYW1lLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3Mp
LCBvcmlnaW4sIC8qd2ViRnJhbWUqLzAsIGRhdGFEaXIpOworICAgIG1fd2ViSURCRmFjdG9yeS0+
b3BlbihuYW1lLCAtNDAsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIG9yaWdp
biwgLyp3ZWJGcmFtZSovMCwgZGF0YURpcik7CiAjZW5kaWYKIH0KIAotdm9pZCBJREJGYWN0b3J5
QmFja2VuZFByb3h5OjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQ2FsbGJhY2tzKiBjYWxs
YmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHBycE9yaWdpbiwgRnJhbWUqIGZyYW1l
LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpCit2b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6Om9w
ZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIElEQkNhbGxiYWNrcyogY2Fs
bGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBwcnBPcmlnaW4sIEZyYW1lKiBmcmFt
ZSwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKQogewogICAgIFdlYlNlY3VyaXR5T3JpZ2luIG9yaWdp
bihwcnBPcmlnaW4pOwogICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBXZWJGcmFtZUltcGw6
OmZyb21GcmFtZShmcmFtZSk7CkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBJREJGYWN0b3J5QmFj
a2VuZFByb3h5OjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQ2FsbGJhY2tzKiBjYWxsYmFj
a3MsIFAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fd2ViSURCRmFjdG9yeS0+b3Bl
bihuYW1lLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBvcmlnaW4sIHdlYkZy
YW1lLCBkYXRhRGlyKTsKKyAgICBtX3dlYklEQkZhY3RvcnktPm9wZW4obmFtZSwgdmVyc2lvbiwg
bmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgb3JpZ2luLCB3ZWJGcmFtZSwgZGF0
YURpcik7CiB9CiAKIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6ZGVsZXRlRGF0YWJhc2Uo
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBwcnBPcmlnaW4sIEZyYW1lKiBmcmFtZSwgY29uc3Qg
U3RyaW5nJiBkYXRhRGlyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCRmFjdG9yeUJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RmFjdG9yeUJhY2tlbmRQcm94eS5oCmluZGV4IGMwN2RiMzU1NmUwOTAwNjZjN2I0Y2IxZTFiOWVk
Y2FmYzcwNmM5NjAuLjI5NDZkYTFkZGM2ZTIwZmQ0ZTViMDY5NWI4M2NiMjAwMTNiZThiNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFBy
b3h5LmgKQEAgLTQ5LDggKzQ5LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGdldERh
dGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRy
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBTdHJpbmcm
IGRhdGFEaXIpOwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBX
ZWJDb3JlOjpJREJDYWxsYmFja3MqLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
PiwgV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOwotICAgIHZpcnR1YWwg
dm9pZCBvcGVuRnJvbVdvcmtlcihjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OklEQkNhbGxi
YWNrcyosIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpXb3Jr
ZXJDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKKyAgICB2aXJ0dWFsIHZvaWQgb3Bl
bihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgV2ViQ29yZTo6SURCQ2FsbGJh
Y2tzKiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFdlYkNvcmU6OkZyYW1l
KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbkZyb21Xb3Jr
ZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFdlYkNvcmU6OklEQkNhbGxi
YWNrcyosIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpXb3Jr
ZXJDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKIAogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
Q2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFdlYkNvcmU6
OkZyYW1lKiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcAppbmRleCAxYTgyYTYzZDgyZDdl
NTdlYjk3YTMxMDg0MTVmN2M4YzI3YjAxMTk4Li45NGIwYjQ2OGM3ZDc1NWM3ZjA4YzYwM2M3MDNk
ZDU0ODQ2MjNmNDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJDYWxsYmFja3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJDYWxsYmFja3NJbXBsLmNwcApAQCAtMTAwLDYgKzEwMCwxMSBAQCB2b2lkIFdlYklEQkNhbGxi
YWNrc0ltcGw6Om9uQmxvY2tlZCgpCiAgICAgbV9jYWxsYmFja3MtPm9uQmxvY2tlZCgpOwogfQog
Cit2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZl
cnNpb24sIFdlYklEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgV2ViSURCRGF0YWJhc2UqIGRh
dGFiYXNlKQoreworICAgIG1fY2FsbGJhY2tzLT5vblVwZ3JhZGVOZWVkZWQob2xkVmVyc2lvbiwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6OmNyZWF0ZShhZG9wdFB0cih0cmFuc2FjdGlvbikp
LCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGRhdGFiYXNlKSkpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2Fs
bGJhY2tzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tz
SW1wbC5oCmluZGV4IGJlODU0MWI3MGM1ZmIyNzRhZGIyMTZhOWY0MTdhZTRmZjQ2ZTFjMzguLmI5
ZjkyNmFkYTk4ZWIwMTdkYjJjZGY3MjliMDA1M2NiZjNlOWI3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgKQEAgLTUwLDYgKzUwLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlJik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRp
b24oKTsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7CisgICAgdmlydHVhbCB2b2lkIG9u
VXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFdlYklEQlRyYW5zYWN0aW9uKiwgV2Vi
SURCRGF0YWJhc2UqKTsKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJh
Y2tzPiBtX2NhbGxiYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkZhY3RvcnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkZhY3RvcnlJbXBsLmNwcAppbmRleCBkODc1ZTExYmM2NWVmNTg4ZTA2ZTJiNWY1MWRhYzE2ZDI2
YjYwOGVjLi44ZWMwNGYzZThjZWRjOTQzMzlmNTU4NTE4MmJkOTczYTlmY2EyMTAwIDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCkBAIC02
NCw5ICs2NCw5IEBAIHZvaWQgV2ViSURCRmFjdG9yeUltcGw6OmdldERhdGFiYXNlTmFtZXMoV2Vi
SURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlCiB9CiAKIAotdm9pZCBXZWJJREJG
YWN0b3J5SW1wbDo6b3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyog
Y2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSosIGNv
bnN0IFdlYlN0cmluZyYgZGF0YURpcikKK3ZvaWQgV2ViSURCRmFjdG9yeUltcGw6Om9wZW4oY29u
c3QgV2ViU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyogY2Fs
bGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSosIGNvbnN0
IFdlYlN0cmluZyYgZGF0YURpcikKIHsKLSAgICBtX2lkYkZhY3RvcnlCYWNrZW5kLT5vcGVuKG5h
bWUsIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSkuZ2V0KCks
IG9yaWdpbiwgMCwgZGF0YURpcik7CisgICAgbV9pZGJGYWN0b3J5QmFja2VuZC0+b3BlbihuYW1l
LCB2ZXJzaW9uLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykp
LmdldCgpLCBvcmlnaW4sIDAsIGRhdGFEaXIpOwogfQogCiB2b2lkIFdlYklEQkZhY3RvcnlJbXBs
OjpkZWxldGVEYXRhYmFzZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyog
Y2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSosIGNv
bnN0IFdlYlN0cmluZyYgZGF0YURpcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJGYWN0b3J5SW1wbC5oCmluZGV4IGIzZTQ3NGRmOTI1NWU4NzdmMmZmNmQwZTYzMTAzNTU2
MjQ2ZDE3MTkuLmNjY2ZhYWUzZTcxYjExZjEyYjk4NGM4YTIzNjRmM2RmZGY0MGJhN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaApAQCAtNDUs
NyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViSURCRmFjdG9yeUltcGwoKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFdlYklEQkNhbGxiYWNrcyosIGNvbnN0
IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIp
OwotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2Fs
bGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0
cmluZyYgZGF0YURpcik7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBpbnQ2NF90IHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYlNlY3VyaXR5
T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpOwogICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxi
YWNrcyosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJp
bmcmIGRhdGFEaXIpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCmluZGV4IDZjNzhhYTUzYzUyMmI2
MGIyMGFkYjY3NzkwYmQ5NDAwNWI0YjdmZDIuLjc4ZjNjNzcxNDQ3YTc5NGY3YTc0ZjEzM2ZjN2Y0
ZTgwYjZkNGU3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURC
QWJvcnRPbkNvcnJ1cHRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGYWlsaW5nQmFja2luZ1N0b3JlKTsKICAg
ICB9Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgaW50NjRfdCYpCisgICAgdmlydHVhbCBib29sIGNyZWF0ZUlE
QkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgaW50NjRfdCwg
aW50NjRfdCYpCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtOTksNyAr
OTksOCBAQCBURVNUKElEQkFib3J0VGVzdCwgVGhlVGVzdCkKICAgICBjb25zdCBTdHJpbmcmIG5h
bWUgPSAiZGIgbmFtZSI7CiAgICAgTW9ja0lEQkNhbGxiYWNrcyBjYWxsYmFja3M7CiAgICAgUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKCJodHRw
IiwgImxvY2FsaG9zdCIsIDgxKTsKLSAgICBmYWN0b3J5LT5vcGVuKG5hbWUsICZjYWxsYmFja3Ms
IG9yaWdpbiwgMCAvKkZyYW1lKi8sIFN0cmluZygpIC8qcGF0aCovKTsKKyAgICBjb25zdCBpbnQ2
NF90IGtWZXJzaW9uID0gMjsKKyAgICBmYWN0b3J5LT5vcGVuKG5hbWUsIGtWZXJzaW9uLCAmY2Fs
bGJhY2tzLCBvcmlnaW4sIDAgLypGcmFtZSovLCBTdHJpbmcoKSAvKnBhdGgqLyk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lE
QkZha2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFr
ZUJhY2tpbmdTdG9yZS5oCmluZGV4IGVkODk0Y2IxOWZlMWQxNWFiOTlkZDU2MWQ3NjJkM2YyNDQ4
YWY5YTAuLmQ4ZmM3ODM3Y2ZmY2VjNjcyMjQyOTU5NmVlM2NkNzNjYzg1ZGQxNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCkBA
IC0zMyw4ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIElEQkZha2VCYWNraW5n
U3RvcmUgOiBwdWJsaWMgSURCQmFja2luZ1N0b3JlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0RGF0YWJhc2VOYW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcykgT1ZFUlJJREUg
eyB9Ci0gICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5n
JiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCkgT1ZFUlJJREUg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0YWJhc2VNZXRh
RGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgaW50NjRfdCYg
cm93SWQpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SURC
RGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRWZXJzaW9u
LCBpbnQ2NF90JiBmb3VuZEludFZlcnNpb24sIGludDY0X3QmIGZvdW5kSWQpIE9WRVJSSURFIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURh
dGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGNvbnN0IGludDY0
X3QgaW50VmVyc2lvbiwgaW50NjRfdCYgcm93SWQpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YShpbnQ2NF90IHJvd0lk
LCBjb25zdCBTdHJpbmcmIHZlcnNpb24pIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSkgT1ZFUlJJREUg
eyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZmZmJjOWQ3MTc4ZDZhODYxZGM3NDgxZjM0ODY4
NjhlNWM4NDZkMTAuLjM5ZjIyYTJlNGM0MjU0YzdjNzQyYTgyNmM4YjZjNTc0NTRkMzk4YzMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wNi0xOSAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBpbXBsZW1lbnQgdXBncmFkZW5lZWRl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1MDUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL29wZW4td2l0aC12ZXJzaW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24uaHRtbDogQWRkZWQuCisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLmpz
OiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoZGVsZXRlU3VjY2Vzcyk6CisgICAg
ICAgICh1cGdyYWRlTmVlZGVkLnRyYW5zYWN0aW9uLm9uY29tcGxldGUpOgorICAgICAgICAodXBn
cmFkZU5lZWRlZCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qczoKKyAgICAgICAgKHVuZXhwZWN0ZWRCbG9ja2Vk
Q2FsbGJhY2spOgorICAgICAgICAodW5leHBlY3RlZFVwZ3JhZGVOZWVkZWRDYWxsYmFjayk6CisK
IDIwMTItMDYtMTggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjA0ODUgYW5kIHIxMjA1ODIuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgt
dmVyc2lvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdkMTBlNDVkZGU0M2M2MTZkZTljOGI1
ZTk5NDhjMTU3N2UyMmY4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL29wZW4td2l0aC12ZXJzaW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQxIEBA
CitUZXN0IHRoYXQgc3BlY2lmeWluZyBhIHZlcnNpb24gd2hlbiBvcGVuaW5nIGEgbm9uLWV4aXN0
ZW50IGRiIGNhdXNlcyBhbiB1cGdyYWRlbmVlZGVkIGV2ZW50IGFuZCB0aGF0IHRoZSB2ZXJzaW9u
IG51bWJlciBpcyBzZXQgY29ycmVjdGx5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwg
c2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7
CisKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitTaG91bGQgdHJpZ2dlcjoKKzQu
MS40OiBJZiBubyBkYXRhYmFzZSB3aXRoIHRoZSBnaXZlbiBuYW1lIGZyb20gdGhlIG9yaWdpbiBv
cmlnaW4gd2FzIGZvdW5kLCBvciBpZiBpdCB3YXMgZGVsZXRlZCBkdXJpbmcgdGhlIHByZXZpb3Vz
IHN0ZXAsIHRoZW4gY3JlYXRlIGEgZGF0YWJhc2Ugd2l0aCBuYW1lIG5hbWUsIHdpdGggMCBhcyB2
ZXJzaW9uLCBhbmQgd2l0aCBubyBvYmplY3Qgc3RvcmVzLiBMZXQgZGIgYmUgdGhlIG5ldyBkYXRh
YmFzZS4KKzQuMS42OiBDcmVhdGUgYSBuZXcgY29ubmVjdGlvbiB0byBkYiBhbmQgbGV0IGNvbm5l
Y3Rpb24gcmVwcmVzZW50IGl0LgorNC4xLjc6IElmIHRoZSB2ZXJzaW9uIG9mIGRiIGlzIGxvd2Vy
IHRoYW4gdmVyc2lvbiwgdGhlbiBydW4gdGhlIHN0ZXBzIGZvciBydW5uaW5nIGEgInZlcnNpb25j
aGFuZ2UiIHRyYW5zYWN0aW9uIHVzaW5nIGNvbm5lY3Rpb24sIHZlcnNpb24sIHJlcXVlc3QgYW5k
IHVwZ3JhZGUgY2FsbGJhY2suCis0LjEuOTogUmV0dXJuIGNvbm5lY3Rpb24uCityZXF1ZXN0ID0g
aW5kZXhlZERCLm9wZW4oZGJuYW1lLCA3KQorUEFTUyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5n
LmFwcGx5KHJlcXVlc3QpIGlzICJbb2JqZWN0IElEQk9wZW5EQlJlcXVlc3RdIgorCitQQVNTIElu
IHRoZSB1cGdyYWRlbmVlZGVkIGV2ZW50IGhhbmRlciAoNC4xLjcgcGFzc2VkKToKK2RiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdAorS2luZCBvZiB0ZXN0IDQuMS42OgorUEFTUyBPYmplY3QucHJvdG90
eXBlLnRvU3RyaW5nLmFwcGx5KGRiKSBpcyAiW29iamVjdCBJREJEYXRhYmFzZV0iCitUZXN0IDQu
MS40OgorUEFTUyBkYi5uYW1lIGlzIGRibmFtZQorRkFJTCBkYi52ZXJzaW9uIHNob3VsZCBiZSAw
IChvZiB0eXBlIG51bWJlcikuIFdhcyAgKG9mIHR5cGUgc3RyaW5nKS4KK1BBU1MgZGIub2JqZWN0
U3RvcmVOYW1lcy5sZW5ndGggaXMgMAordHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQudHJhbnNh
Y3Rpb24KK1BBU1MgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseSh0cmFuc2FjdGlvbikg
aXMgIltvYmplY3QgSURCVHJhbnNhY3Rpb25dIgorb3MgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgi
c29tZU9TIikKK3Nhd1RyYW5zYWN0aW9uQ29tcGxldGUgPSB0cnVlCisKK29wZW5TdWNjZXNzKCk6
CitUZXN0IDQuMS43LCB0aGF0IGEgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB3YXMgcnVuLgor
UEFTUyBzYXdVcGdyYWRlTmVlZGVkIGlzIHRydWUKK1BBU1Mgc2F3VHJhbnNhY3Rpb25Db21wbGV0
ZSBpcyB0cnVlCitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK0tpbmQgb2YgdGVzdCA0LjEuOToK
K1BBU1MgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShkYikgaXMgIltvYmplY3QgSURC
RGF0YWJhc2VdIgorRkFJTCBkYi52ZXJzaW9uIHNob3VsZCBiZSA3IChvZiB0eXBlIG51bWJlciku
IFdhcyAgKG9mIHR5cGUgc3RyaW5nKS4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvb3Blbi13aXRoLXZlcnNpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYmE2ZjBiNzJiZmI2NTZmNDAx
OGU5NTg4YzQyNzk0YTFhMGQ0YWMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24uaHRtbApAQCAtMCwwICsxLDEwIEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcGVuLXdp
dGgtdmVyc2lvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgt
dmVyc2lvbi5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVu
LXdpdGgtdmVyc2lvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWUxNGMyZWU3MjIzYWM2ZDdlYjdiNmJiNmY4
OTlhZTRmMTgwMmE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLmpzCkBAIC0wLDAgKzEsNzQgQEAKK2lm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IHNwZWNpZnlpbmcgYSB2ZXJzaW9u
IHdoZW4gb3BlbmluZyBhIG5vbi1leGlzdGVudCBkYiBjYXVzZXMgYW4gdXBncmFkZW5lZWRlZCBl
dmVudCBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaXMgc2V0IGNvcnJlY3RseS4iKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5h
bWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lLnN1YnN0cmluZygxICsgc2VsZi5sb2NhdGlvbi5w
YXRobmFtZS5sYXN0SW5kZXhPZigiLyIpKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZGVsZXRlU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlU3VjY2VzcyhldnQpIHsKKyAgICBkZWJ1Zygi
U2hvdWxkIHRyaWdnZXI6Iik7CisgICAgZGVidWcoIjQuMS40OiBJZiBubyBkYXRhYmFzZSB3aXRo
IHRoZSBnaXZlbiBuYW1lIGZyb20gdGhlIG9yaWdpbiBvcmlnaW4gd2FzIGZvdW5kLCBvciBpZiBp
dCB3YXMgZGVsZXRlZCBkdXJpbmcgdGhlIHByZXZpb3VzIHN0ZXAsIHRoZW4gY3JlYXRlIGEgZGF0
YWJhc2Ugd2l0aCBuYW1lIG5hbWUsIHdpdGggMCBhcyB2ZXJzaW9uLCBhbmQgd2l0aCBubyBvYmpl
Y3Qgc3RvcmVzLiBMZXQgZGIgYmUgdGhlIG5ldyBkYXRhYmFzZS4iKTsKKyAgICBkZWJ1ZygiNC4x
LjY6IENyZWF0ZSBhIG5ldyBjb25uZWN0aW9uIHRvIGRiIGFuZCBsZXQgY29ubmVjdGlvbiByZXBy
ZXNlbnQgaXQuIik7CisgICAgZGVidWcoIjQuMS43OiBJZiB0aGUgdmVyc2lvbiBvZiBkYiBpcyBs
b3dlciB0aGFuIHZlcnNpb24sIHRoZW4gcnVuIHRoZSBzdGVwcyBmb3IgcnVubmluZyBhIFwidmVy
c2lvbmNoYW5nZVwiIHRyYW5zYWN0aW9uIHVzaW5nIGNvbm5lY3Rpb24sIHZlcnNpb24sIHJlcXVl
c3QgYW5kIHVwZ3JhZGUgY2FsbGJhY2suIik7CisgICAgZGVidWcoIjQuMS45OiBSZXR1cm4gY29u
bmVjdGlvbi4iKTsKKworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3Blbihk
Ym5hbWUsIDcpIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBl
LnRvU3RyaW5nLmFwcGx5KHJlcXVlc3QpIiwgIltvYmplY3QgSURCT3BlbkRCUmVxdWVzdF0iKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub251cGdy
YWRlbmVlZGVkID0gdXBncmFkZU5lZWRlZDsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhw
ZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgZGVidWcoIiIpOworfQorCit2YXIgc2F3VXBncmFk
ZU5lZWRlZCA9IGZhbHNlOwordmFyIHNhd1RyYW5zYWN0aW9uQ29tcGxldGUgPSBmYWxzZTsKK2Z1
bmN0aW9uIHVwZ3JhZGVOZWVkZWQoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIHRlc3RQ
YXNzZWQoIkluIHRoZSB1cGdyYWRlbmVlZGVkIGV2ZW50IGhhbmRlciAoNC4xLjcgcGFzc2VkKToi
KTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBkZWJ1
ZygiS2luZCBvZiB0ZXN0IDQuMS42OiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiT2Jq
ZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShkYikiLCAiW29iamVjdCBJREJEYXRhYmFzZV0i
KTsKKyAgICBkZWJ1ZygiVGVzdCA0LjEuNDoiKTsKKyAgICBzaG91bGRCZSgiZGIubmFtZSIsICJk
Ym5hbWUiKTsKKyAgICBzaG91bGRCZSgiZGIudmVyc2lvbiIsICcwJyk7CisgICAgc2hvdWxkQmUo
ImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKKworICAgIGV2YWxBbmRMb2coInRy
YW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uIik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KHRyYW5zYWN0aW9uKSIs
ICJbb2JqZWN0IElEQlRyYW5zYWN0aW9uXSIpOworICAgIGV2YWxBbmRMb2coJ29zID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoInNvbWVPUyIpJyk7CisgICAgLy8gRklYTUU6IHNob3VsZG4ndCBuZWVk
IHRoaXMgb3MucHV0CisvLyAgICBvcy5wdXQoImEiLCAiYiIpOworICAgIHRyYW5zYWN0aW9uLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBs
ZXRlID0gZnVuY3Rpb24oZSkgeworICAgICAgZXZhbEFuZExvZygic2F3VHJhbnNhY3Rpb25Db21w
bGV0ZSA9IHRydWUiKTsKKyAgICB9CisgICAgc2F3VXBncmFkZU5lZWRlZCA9IHRydWU7Cit9CisK
K2Z1bmN0aW9uIG9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgZGVidWcoIlRlc3QgNC4x
LjcsIHRoYXQgYSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHdhcyBydW4uIik7CisgICAgc2hv
dWxkQmUoInNhd1VwZ3JhZGVOZWVkZWQiLCAidHJ1ZSIpOworICAgIHNob3VsZEJlVHJ1ZSgic2F3
VHJhbnNhY3Rpb25Db21wbGV0ZSIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisgICAgZGVidWcoIktpbmQgb2YgdGVzdCA0LjEuOToiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkoZGIp
IiwgIltvYmplY3QgSURCRGF0YWJhc2VdIik7CisgICAgc2hvdWxkQmUoJ2RiLnZlcnNpb24nLCAi
NyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcwppbmRleCBkMDMwOWY3N2Vk
NGQyMDdlOWViOTIwYThmMjY3YTc3NWRmZDM5NjM5Li5hMDZmNWFmNDAwY2Y4OTMwYTY2MDdkZTc5
Y2VlZmMxYTAwMTc4Yzg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvc2hhcmVkLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9zaGFyZWQuanMKQEAgLTcxLDYgKzcxLDEyIEBAIGZ1bmN0aW9uIHVuZXhwZWN0
ZWRCbG9ja2VkQ2FsbGJhY2soKQogICAgIGZpbmlzaEpTVGVzdCgpOwogfQogCitmdW5jdGlvbiB1
bmV4cGVjdGVkVXBncmFkZU5lZWRlZENhbGxiYWNrKCkKK3sKKyAgICB0ZXN0RmFpbGVkKCJvbnVw
Z3JhZGVuZWVkZWQgY2FsbGVkIHVuZXhwZWN0ZWRseSIpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCiBmdW5jdGlvbiBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKGNtZCwgZXhjZXB0aW9uQ29kZSwg
ZXhjZXB0aW9uTmFtZSkKIHsKICAgICBkZWJ1ZygiRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tICIg
KyBjbWQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151813</attachid>
            <date>2012-07-11 16:34:58 -0700</date>
            <delta_ts>2012-07-20 20:18:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89505-20120711163457.patch</filename>
            <type>text/plain</type>
            <size>124116</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTg3MjE1N2FlMmNiMTI2
MGVjMDNmNGVmYzE2MTkxYzk0ZjM4YzRlYy4uMWQ3NDU1ODhiNjNmZWJmZmMwMjQzNTJlMjFlM2Iz
MTBjMjExYzNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNSBAQAorMjAxMi0wNy0xMSAgRGF2
aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBp
bXBsZW1lbnQgdXBncmFkZW5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODk1MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBh
cyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlv
bnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogc3RvcmFnZS9pbmRleGVkZGIvYWJv
cnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2Uv
aW5kZXhlZGRiL29wZW4td2l0aC12ZXJzaW9uLWluaXRpYWwtdmVyc2lvbi5odG1sCisgICAgICAg
ICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi13aXRoLWRlbGV0ZS5o
dG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi5o
dG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9zZXR2ZXJzaW9uLWRpc2FibGVz
LW9udXBncmFkZW5lZWRlZC5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJC
YWNraW5nU3RvcmUuaDoKKyAgICAgICAgKElEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJCYWNraW5nU3RvcmU6OnVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDYWxsYmFja3M6Om9uQmxvY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDYWxsYmFj
a3M6Om9uVXBncmFkZU5lZWRlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnZlcnNpb24pOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
aDoKKyAgICAgICAgKElEQkRhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5n
T3BlbkNhbGwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVu
V2l0aFZlcnNpb25DYWxsOjpjYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OnZlcnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5XaXRoVmVy
c2lvbkNhbGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW50VmVyc2lvbkludGVybmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9u
RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJh
bnNhY3Rpb25GaW5pc2hlZEFuZEV2ZW50c0ZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5nQ2FsbHMpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0
aW9uV2l0aFZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEltcGwuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6aW50VmVyc2lvbik6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAg
IChJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUNhbGxiYWNrczo6b25WZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6Om9wZW4pOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eS5oOgorICAgICAgICAoSURCRmFjdG9yeSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeS5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJh
Y2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6
b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5Gcm9t
V29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbklu
dGVybmFsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZElt
cGwuaDoKKyAgICAgICAgKElEQkZhY3RvcnlCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKElEQkZh
Y3RvcnlCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnB1dFZhckludCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFVwTWV0YWRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3Blbik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUlEQkRhdGFi
YXNlTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6
dXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVs
REJCYWNraW5nU3RvcmU6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChJREJMZXZlbERCQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmg6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRC
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0Ojp+SURCT3BlbkRC
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjppbnRlcmZhY2VO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uQmxvY2tlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3JhZGVOZWVkZWQpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3MuaC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCT3BlbkRCUmVxdWVzdCk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5pZGw6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmguCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVl
c3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpkaXNwYXRjaEV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmNsZWFyVHJhbnNhY3Rpb25Qcm9w
ZXJ0eSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6
OmVucXVldWVFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5o
OgorICAgICAgICAoSURCUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojpp
c09wZW5EQlJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6SURCVHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNldEFjdGl2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudCk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoSURCVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y29tbWl0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJVcGdyYWRlTmVlZGVkRXZlbnQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrcy5oLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJVcGdyYWRlTmVlZGVkRXZlbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJVcGdyYWRlTmVlZGVkRXZlbnQ6OklEQlVwZ3JhZGVOZWVk
ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJVcGdyYWRlTmVlZGVkRXZlbnQ6On5JREJV
cGdyYWRlTmVlZGVkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVXBncmFkZU5lZWRlZEV2
ZW50OjpvbGRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlVwZ3JhZGVOZWVkZWRFdmVu
dDo6bmV3VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJVcGdyYWRlTmVlZGVkRXZlbnQ6
OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVO
ZWVkZWRFdmVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUNhbGxiYWNrcy5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJ
REJVcGdyYWRlTmVlZGVkRXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlVw
Z3JhZGVOZWVkZWRFdmVudC5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmguCisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBkb20vRXZlbnROYW1lcy5pbjoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5
LmluOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wNy0xMSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFJlbmFtZSBsYXllclJlY3QgdG8gY29u
dGVudFJlY3QgZm9yIHJlY3RzIHRoYXQgbGl2ZSBpbiBjb250ZW50IHNwYWNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IGQ0NzcyZWRkYmQyM2RhNWRmNDA3ZTBjYTg4YWZmYTA1NjczZDY1
OWQuLjBmZDhkYWMzMGZhNWVhNDZjYTRhMGQwNzBmYTJlYTE1ZGJmZDk5NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTItMDctMTEgIERhdmlkIEdyb2dh
biAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogaW1wbGVtZW50
IHVwZ3JhZGVuZWVkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg5NTA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9h
Y2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93
IChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQkNhbGxiYWNrczo6b25VcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKiBw
dWJsaWMvV2ViSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2U6
OmludFZlcnNpb24pOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJGYWN0b3J5Lmg6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQkZhY3Rvcnk6Om9wZW4pOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFj
a3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5OjpvblVwZ3Jh
ZGVOZWVkZWQpOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5oOgorICAgICAgICAo
SURCQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkRhdGFiYXNlQmFja2VuZFByb3h5OjppbnRWZXJz
aW9uKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5Lmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRQcm94eSk6CisgICAgICAgICog
c3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJGYWN0
b3J5QmFja2VuZFByb3h5OjpvcGVuRnJvbVdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OklEQkZh
Y3RvcnlCYWNrZW5kUHJveHk6Om9wZW4pOgorICAgICAgICAqIHNyYy9JREJGYWN0b3J5QmFja2Vu
ZFByb3h5Lmg6CisgICAgICAgIChJREJGYWN0b3J5QmFja2VuZFByb3h5KToKKyAgICAgICAgKiBz
cmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNhbGxi
YWNrc0ltcGw6Om9uVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IHNyYy9XZWJJREJDYWxsYmFja3NJbXBsLmg6CisgICAgICAgIChXZWJJREJDYWxsYmFja3NJbXBs
KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCRGF0YWJhc2VJbXBsOjppbnRWZXJzaW9uKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oOgorICAgICAgICAoV2ViSURCRGF0YWJh
c2VJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJGYWN0b3J5SW1wbDo6b3Blbik6CisgICAgICAgICogc3JjL1dlYklEQkZh
Y3RvcnlJbXBsLmg6CisgICAgICAgIChXZWJJREJGYWN0b3J5SW1wbCk6CisgICAgICAgICogdGVz
dHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZhaWxpbmdC
YWNraW5nU3RvcmU6OmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oOgorCiAyMDEy
LTA3LTExICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gUmVuYW1lIGxheWVyUmVjdCB0byBjb250ZW50UmVjdCBmb3IgcmVjdHMgdGhhdCBs
aXZlIGluIGNvbnRlbnQgc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggZjc4NDA2MjFiNjFmMmMxNDE4Nzg5NjYzNmQ3
NjVjYzg4MjI5ZmQwNS4uNmU3MjcwOWRmZDAxMjA4ZGE3ZDE1ZDJmZTU4MDc4OGM2YzFjOGUxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0
b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0
b3JlLmgKQEAgLTQ3LDggKzQ3LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfklEQkJhY2tpbmdT
dG9yZSgpIHt9OwogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoVmVjdG9yPFN0
cmluZz4mIGZvdW5kTmFtZXMpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VN
ZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRWZXJzaW9uLCBpbnQ2NF90
JiBmb3VuZElkKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURh
dGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3QmIHJv
d0lkKSA9IDA7CisgICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3Qg
U3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kU3RyaW5nVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJ
bnRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElkKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNyZWF0
ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0
cmluZ1ZlcnNpb24sIGNvbnN0IGludDY0X3QgaW50VmVyc2lvbiwgaW50NjRfdCYgcm93SWQpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKGludDY0X3Qg
cm93SWQsIGludDY0X3QgaW50VmVyc2lvbikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAg
IHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGludDY0X3Qgcm93SWQsIGNv
bnN0IFN0cmluZyYgdmVyc2lvbikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVEYXRhYmFz
ZShjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaAppbmRleCAwYjM0YjY4ODZkNWUxYWE0M2QxOTUzZjlh
ZDgwM2ExZTJhNzI4OTI0Li41ZWZkODRjMjgxNWExZGMzOWE1MzQ0ZjIyNjgwMDczM2QzMTI5OWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFj
a3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3Mu
aApAQCAtNTksNyArNTksOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgY29u
c3QgSURCS2V5UGF0aCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENvbnRp
bnVhdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNv
bnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiBrZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPElE
QktleT4gPiYgcHJpbWFyeUtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiA+JiB2YWx1ZXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CisgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbikgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBvblVwZ3JhZGVOZWVkZWQo
aW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPikgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IDM1YjVj
YTFmMDU5YWI3ODc5M2JhMzRkOWFmNGZkMDJjZjBjZWMxNjguLmMwNjA3ZmZkNTIyOTAzNzE0NTk5
ZjU3YjRhOTQ5ZjI3MjAzMDNhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTExMSw2ICsxMTEsMTUgQEAgUGFzc1JlZlB0cjxE
T01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CiAgICAg
cmV0dXJuIG9iamVjdFN0b3JlTmFtZXMucmVsZWFzZSgpOwogfQogCitQYXNzUmVmUHRyPElEQkFu
eT4gSURCRGF0YWJhc2U6OnZlcnNpb24oKSBjb25zdAoreworICAgIGludDY0X3QgaW50VmVyc2lv
biA9IG1fYmFja2VuZC0+aW50VmVyc2lvbigpOworICAgIGlmIChpbnRWZXJzaW9uID4gMCkgewor
ICAgICAgcmV0dXJuIElEQkFueTo6Y3JlYXRlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVtYmVy
VmFsdWUoaW50VmVyc2lvbikpOworICAgIH0KKyAgICByZXR1cm4gSURCQW55OjpjcmVhdGVTdHJp
bmcobV9tZXRhZGF0YS52ZXJzaW9uKTsKK30KKwogUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4g
SURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
RGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFtX3Zl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggYTI0OGNkODBkZWI4MzdhM2IxNWJkYWEzOGQxZGYx
MzBlZDNhMzFhYS4uNjRjYmIzMjZhNTg4M2RjZjM5NDczY2FhMTA5NzI5MDVmM2ZlNjc1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC01
OSw3ICs1OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEltcGxlbWVudCB0aGUgSURMCiAgICAgY29u
c3QgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLm5hbWU7IH0KLSAgICBj
b25zdCBTdHJpbmcgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEudmVyc2lvbjsg
fQorICAgIFBhc3NSZWZQdHI8SURCQW55PiB2ZXJzaW9uKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0
cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CiAKICAgICAvLyBGSVhN
RTogVHJ5IHRvIG1vZGlmeSB0aGUgY29kZSBnZW5lcmF0b3Igc28gdGhpcyBpcyB1bm5lZWRlZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbApp
bmRleCA5NWY2YzIzNjBjZDBlZGNiZDM5ZjQwODY2YjZkZGY4YzJjMmQ1M2M2Li5kMjUzZTRkZjdh
MmMyNjM2NzcwOGExODBhODc2YWVjMzFkZDI1MjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaWRsCkBAIC0zMiw3ICszMiw3IEBAIG1vZHVs
ZSBzdG9yYWdlIHsKICAgICAgICAgRXZlbnRUYXJnZXQKICAgICBdIElEQkRhdGFiYXNlIHsKICAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwotICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZlcnNpb247CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBJREJBbnkgdmVyc2lvbjsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZ0xp
c3Qgb2JqZWN0U3RvcmVOYW1lczsKIAogICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBv
bmFib3J0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCA1MDViYTc1N2JlNDhmYzFhZmNhNDVj
NTk2NmZmYmZhMDA0ZDQ3NWU4Li5jNGUwMzIxMzU1NDMyYTFhYWE4Njc0MDY3OGQ0YTFhMGIyNWQw
MTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtNDcsMTIgKzQ3LDMzIEBAIHB1YmxpYzoK
ICAgICB9CiAgICAgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcygpIHsgcmV0dXJu
IG1fY2FsbGJhY2tzOyB9CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgUGVuZGluZ09wZW5D
YWxsKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgICAgIDogbV9jYWxs
YmFja3MoY2FsbGJhY2tzKQogICAgIHsKICAgICB9CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPElE
QkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7Cit9OworCitjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlbmRp
bmdPcGVuV2l0aFZlcnNpb25DYWxsPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKGNhbGxiYWNrcywgdmVyc2lvbikp
OworICAgIH0KKyAgICBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKCkgeyByZXR1
cm4gbV9jYWxsYmFja3M7IH0KKyAgICBpbnQ2NF90IHZlcnNpb24oKSB7IHJldHVybiBtX3ZlcnNp
b247IH0KKworcHJpdmF0ZToKKyAgICBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbChQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCisgICAgICAgIDog
bV9jYWxsYmFja3MoY2FsbGJhY2tzKQorICAgICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQorICAg
IHsKKyAgICB9CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CisgICAgaW50
NjRfdCBtX3ZlcnNpb247CiB9OwogCiBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5k
aW5nRGVsZXRlQ2FsbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlbmRpbmdEZWxldGVDYWxsPiB7CkBA
IC0xMDYsNiArMTI3LDcgQEAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG8KICAgICAsIG1faWQoSW52
YWxpZElkKQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3ZlcnNpb24oIiIpCisgICAgLCBt
X2ludFZlcnNpb24oMCkKICAgICAsIG1faWRlbnRpZmllcih1bmlxdWVJZGVudGlmaWVyKQogICAg
ICwgbV9mYWN0b3J5KGZhY3RvcnkpCiAgICAgLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IoY29v
cmRpbmF0b3IpCkBAIC0xMTYsMTMgKzEzOCwxMyBAQCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0bwog
CiBib29sIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCgpCiB7Ci0gICAgYm9v
bCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmdldElEQkRhdGFiYXNlTWV0YURhdGEobV9uYW1l
LCBtX3ZlcnNpb24sIG1faWQpOworICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5n
ZXRJREJEYXRhYmFzZU1ldGFEYXRhKG1fbmFtZSwgbV92ZXJzaW9uLCBtX2ludFZlcnNpb24sIG1f
aWQpOwogICAgIEFTU0VSVChzdWNjZXNzID09IChtX2lkICE9IEludmFsaWRJZCkpOwogICAgIGlm
IChzdWNjZXNzKSB7CiAgICAgICAgIGxvYWRPYmplY3RTdG9yZXMoKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQotICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSURCRGF0YWJh
c2VNZXRhRGF0YShtX25hbWUsIG1fdmVyc2lvbiwgbV9pZCk7CisgICAgcmV0dXJuIG1fYmFja2lu
Z1N0b3JlLT5jcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKG1fbmFtZSwgbV92ZXJzaW9uLCBtX2lu
dFZlcnNpb24sIG1faWQpOwogfQogCiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp+SURCRGF0YWJh
c2VCYWNrZW5kSW1wbCgpCkBAIC0yMTAsNiArMjMyLDkgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJD
YWwKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUiwgIkNvbm5lY3Rpb24gd2FzIGNsb3Nl
ZCBiZWZvcmUgc2V0IHZlcnNpb24gdHJhbnNhY3Rpb24gd2FzIGNyZWF0ZWQiKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CisgICAgaWYgKG1faW50VmVyc2lvbiA+IDApIHsKKyAgICAgICAgY2Fs
bGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VU5LTk9XTl9FUlIsIFN0cmluZzo6Zm9ybWF0KCJZb3UgY2FuJ3QgdXNlIHRoZSBzZXRW
ZXJzaW9uIGZ1bmN0aW9uIGlmIHlvdSd2ZSBhbHJlYWR5IHNldCB0aGUgdmVyc2lvbiB0aHJvdWdo
IGFuIG9wZW4gY2FsbC4gIFRoZSBjdXJyZW50IGludGVnZXIgdmVyc2lvbiBpcyAlbGQiLCBtX2lu
dFZlcnNpb24pKSk7CisgICAgfQogICAgIGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2Rh
dGFiYXNlQ2FsbGJhY2tzU2V0LmVuZCgpOyArK2l0KSB7CiAgICAgICAgIGlmICgqaXQgIT0gZGF0
YWJhc2VDYWxsYmFja3MpCiAgICAgICAgICAgICAoKml0KS0+b25WZXJzaW9uQ2hhbmdlKHZlcnNp
b24pOwpAQCAtMjUyLDYgKzI3NywyMCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNl
dFZlcnNpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZgogICAgIGNh
bGxiYWNrcy0+b25TdWNjZXNzKHRyYW5zYWN0aW9uKTsKIH0KIAordm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpzZXRJbnRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UsIGludDY0X3QgdmVy
c2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKQoreworICAgIGludDY0X3Qg
ZGF0YWJhc2VJZCA9IGRhdGFiYXNlLT5pZCgpOworICAgIGludDY0X3Qgb2xkVmVyc2lvbiA9IGRh
dGFiYXNlLT5tX2ludFZlcnNpb247CisgICAgZGF0YWJhc2UtPm1faW50VmVyc2lvbiA9IHZlcnNp
b247CisgICAgaWYgKCFkYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPnVwZGF0ZUlEQkRhdGFiYXNl
SW50VmVyc2lvbihkYXRhYmFzZUlkLCBkYXRhYmFzZS0+bV9pbnRWZXJzaW9uKSkgeworICAgICAg
ICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkVycm9yIHdyaXRpbmcgZGF0YSB0byBzdGFibGUgc3Rv
cmFnZS4iKSk7CisgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsvLyA8PCAiS2VlcCB0aGlzIGhlcmUgd2hpbGUgaW50IHZlcnNpb25zIGFy
ZSBiZWluZyBkZXZlbG9wZWQsIHJlbW92ZSBiZWZvcmUgY29tbWl0dGluZyI7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgY2FsbGJhY2tzLT5vblVwZ3JhZGVOZWVkZWQob2xkVmVyc2lvbiwg
dHJhbnNhY3Rpb24sIGRhdGFiYXNlKTsKK30KKwogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
Ojp0cmFuc2FjdGlvblN0YXJ0ZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+IHBycFRyYW5zYWN0aW9uKQogewogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uID0gcHJwVHJhbnNhY3Rpb247CkBAIC0yNjksNiArMzA4
LDEzIEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZChQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2Rl
KCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKSB7CiAgICAgICAgIEFTU0VSVCh0
cmFuc2FjdGlvbi5nZXQoKSA9PSBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uZ2V0
KCkpOwogICAgICAgICBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uY2xlYXIoKTsK
KyAgICB9Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5p
c2hlZEFuZEV2ZW50c0ZpcmVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlPiBwcnBUcmFuc2FjdGlvbikKK3sKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlPiB0cmFuc2FjdGlvbiA9IHBycFRyYW5zYWN0aW9uOworICAgIGlmICh0cmFuc2Fj
dGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSkgewogICAgICAg
ICBwcm9jZXNzUGVuZGluZ0NhbGxzKCk7CiAgICAgfQogfQpAQCAtMzE4LDYgKzM2NCwxMyBAQCB2
b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5nQ2FsbHMoKQogICAgIGlm
IChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgIW1fcGVuZGluZ1NldFZlcnNp
b25DYWxscy5pc0VtcHR5KCkgfHwgIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgRGVxdWU8UmVmUHRyPFBlbmRpbmdPcGVuV2l0aFZlcnNpb25D
YWxsPiA+IHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsczsKKyAgICBtX3BlbmRpbmdPcGVuV2l0
aFZlcnNpb25DYWxscy5zd2FwKHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscyk7CisgICAgd2hp
bGUgKCFwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKSB7CisgICAgICBSZWZQ
dHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxs
ID0gcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLnRha2VGaXJzdCgpOworICAgICAgb3BlbkNv
bm5lY3Rpb25XaXRoVmVyc2lvbihwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbC0+Y2FsbGJhY2tz
KCksIHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT52ZXJzaW9uKCkpOworICAgIH0KKwogICAg
IC8vIEdpdmVuIHRoZSBjaGVjayBhYm92ZSwgaXQgYXBwZWFycyB0aGF0IGNhbGxzIGNhbm5vdCBi
ZSByZXF1ZXVlZCBieQogICAgIC8vIG9wZW5Db25uZWN0aW9uLCBidXQgdXNlIGEgZGlmZmVyZW50
IHF1ZXVlIGZvciBpdGVyYXRpb24gdG8gYmUgc2FmZS4KICAgICBEZXF1ZTxSZWZQdHI8UGVuZGlu
Z09wZW5DYWxsPiA+IHBlbmRpbmdPcGVuQ2FsbHM7CkBAIC0zNjYsNiArNDE5LDczIEBAIHZvaWQg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcykKICAgICB9CiB9CiAKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGludDY0X3QgcmVxdWVzdGVkVmVyc2lv
biwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcykKK3sKKyAgICBSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CisgICAgQVNTRVJUKGNhbGxi
YWNrcyk7CisgICAgZm9yIChEYXRhYmFzZUNhbGxiYWNrc1NldDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmJlZ2luKCk7IGl0ICE9IG1fZGF0YWJhc2VDYWxsYmFj
a3NTZXQuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgLy8gVGhlIGZyb250ZW5kIHRha2VzIGNhcmUg
b2YgdGhlIGZvbGxvd2luZyBjbGF1c2UsIHRoZSBiYWNrZW5kIGp1c3QKKyAgICAgICAgLy8gZmly
ZXMgdmVyc2lvbiBjaGFuZ2UgYXQgYWxsIHRoZSBjb25uZWN0aW9ucywgdGhlIGZyb250ZW5kIHdp
bGwgbm90CisgICAgICAgIC8vIGRlbGl2ZXIgdG8gY29ubmVjdGlvbnMgd2l0aCBjbG9zZVBlbmRp
bmcgc2V0LgorICAgICAgICAvLyAiVGhlIGV2ZW50IG11c3Qgbm90IGJlIGZpcmVkIG9uIG9iamVj
dHMgd2hpY2ggaGFzIHRoZSBjbG9zZVBlbmRpbmcKKyAgICAgICAgLy8gZmxhZyBzZXQuIgorICAg
ICAgICAoKml0KS0+b25WZXJzaW9uQ2hhbmdlKG1faW50VmVyc2lvbiwgcmVxdWVzdGVkVmVyc2lv
bik7CisgICAgfQorICAgIC8vIFRoZSBzcGVjIGRpY3RhdGVzIHdlIHdhaXQgdW50aWwgYWxsIHRo
ZSB2ZXJzaW9uIGNoYW5nZSBldmVudHMgYXJlCisgICAgLy8gZGVsaXZlcmVkIGFuZCB0aGVuIGNo
ZWNrIG1fZGF0YWJhc2VDYWxsYmFja3MuZW1wdHkoKSBiZWZvcmUgcHJvY2VlZGluZworICAgIC8v
IG9yIGZpcmluZyBhIGJsb2NrZWQgZXZlbnQsIGJ1dCBpbnN0ZWFkIHdlIHNob3VsZCBiZSBjb25z
aXN0ZW50IHdpdGggaG93CisgICAgLy8gdGhlIG9sZCBzZXRWZXJzaW9uIChpbmNvcnJlY3RseSkg
ZGlkIGl0OgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MTEzMAorICAgIGlmIChtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LnNpemUoKSA+IDEpIHsKKyAgICAg
ICAgY2FsbGJhY2tzLT5vbkJsb2NrZWQobV9pbnRWZXJzaW9uKTsKKyAgICB9CisgICAgLy8gRmln
dXJlIG91dCBob3cgdG8gdGVzdCBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uCisg
ICAgaWYgKG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCBtX2RhdGFiYXNlQ2Fs
bGJhY2tzU2V0LnNpemUoKSA+IDEpIHsKKyAgICAgICAgUmVmUHRyPFBlbmRpbmdPcGVuV2l0aFZl
cnNpb25DYWxsPiBwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCA9IFBlbmRpbmdPcGVuV2l0aFZl
cnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCByZXF1ZXN0ZWRWZXJzaW9uKTsKKyAgICAgICAg
bV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKHBlbmRpbmdPcGVuV2l0aFZlcnNp
b25DYWxsKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSZWZQdHI8RE9NU3RyaW5nTGlz
dD4gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOworICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IHRyYW5zYWN0aW9uID0gdGhpcy0+dHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lcy5nZXQo
KSwgSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7
CisKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UgPSB0aGlzOwor
ICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnNldEludFZlcnNpb25JbnRlcm5hbCwgZGF0YWJhc2UsIHJl
cXVlc3RlZFZlcnNpb24sIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OnJlc2V0VmVyc2lvbiwgZGF0YWJhc2UsIG1fdmVyc2lvbikpKSB7CisgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICB9
Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb25XaXRoVmVy
c2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNp
b24pCit7CisgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tz
OworICAgIGlmICghbV9wZW5kaW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpIHx8IG1fcnVubmluZ1Zl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCAhbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmlzRW1w
dHkoKSkgeworICAgICAgICBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5hcHBlbmQoUGVu
ZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIHZlcnNpb24pKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9pZCA9PSBJbnZhbGlkSWQpIHsKKyAgICAg
ICAgaWYgKG9wZW5JbnRlcm5hbCgpKSB7CisgICAgICAgICAgICBBU1NFUlQoIW1faW50VmVyc2lv
bik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURC
RGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwg
IkludGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0KKyAgICBpZiAodmVyc2lvbiA+IG1faW50VmVyc2lvbikgeworICAgICAgICBtX3BlbmRpbmdP
cGVuV2l0aFZlcnNpb25DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNy
ZWF0ZShjYWxsYmFja3MsIHZlcnNpb24pKTsKKyAgICAgICAgcnVuSW50VmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uKHZlcnNpb24sIGNhbGxiYWNrcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgaWYgKHZlcnNpb24gPCBtX2ludFZlcnNpb24pIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVy
cm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VkVSX0VS
UiwgU3RyaW5nOjpmb3JtYXQoIlRoZSByZXF1ZXN0ZWQgdmVyc2lvbiAoJWxkKSBpcyBsZXNzIHRo
YW4gdGhlIGV4aXN0aW5nIHZlcnNpb24gKCVsZCkuIiwgdmVyc2lvbiwgbV9pbnRWZXJzaW9uKSkp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVCh2ZXJzaW9uID09IG1faW50VmVy
c2lvbik7CisgICAgKyttX3BlbmRpbmdDb25uZWN0aW9uQ291bnQ7CisgICAgY2FsbGJhY2tzLT5v
blN1Y2Nlc3ModGhpcyk7Cit9CisKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRl
RGF0YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcykKIHsKICAgICBp
ZiAobV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJz
aW9uQ2FsbHMuaXNFbXB0eSgpKSB7CkBAIC0zODYsMTIgKzUwNiwxNCBAQCB2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmRlbGV0ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBw
cnBDYWxsYmFjawogICAgICAgICBjYWxsYmFja3MtPm9uQmxvY2tlZCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQorICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAgaWYgKCFtX2JhY2tp
bmdTdG9yZS0+ZGVsZXRlRGF0YWJhc2UobV9uYW1lKSkgewogICAgICAgICBjYWxsYmFja3MtPm9u
RXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktO
T1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBtX3ZlcnNpb24gPSAiIjsKICAgICBtX2lkID0gSW52YWxpZElkOworICAgIG1faW50VmVyc2lv
biA9IDA7CiAgICAgbV9vYmplY3RTdG9yZXMuY2xlYXIoKTsKICAgICBjYWxsYmFja3MtPm9uU3Vj
Y2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpKTsKIH0KQEAgLTQwNiw3ICs1
MjgsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3M+IHBycENhbGxiYWNrcwogCiAgICAgcHJvY2Vzc1BlbmRpbmdDYWxs
cygpOwogCi0gICAgaWYgKCFjb25uZWN0aW9uQ291bnQoKSkgeworICAgIGlmICghY29ubmVjdGlv
bkNvdW50KCkgJiYgIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLnNpemUoKSkgewogICAgICAgICBUcmFu
c2FjdGlvblNldCB0cmFuc2FjdGlvbnMobV90cmFuc2FjdGlvbnMpOwogICAgICAgICBmb3IgKFRy
YW5zYWN0aW9uU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IHRyYW5zYWN0aW9ucy5iZWdpbigpOyBp
dCAhPSB0cmFuc2FjdGlvbnMuZW5kKCk7ICsraXQpCiAgICAgICAgICAgICAoKml0KS0+YWJvcnQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuaAppbmRleCAyMWY0ZjkzYzFiM2ViMWM2OTZiMzI5NGRjY2U2YjA5
MTdhMmVjNWJkLi45ODhjOTAwYTdmMzlmYTQ3ZTRjZTY1YjQyNDkxMzFiZDJhMzFkMmMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5oCkBAIC01Niw5ICs1NiwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJl
Z2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4p
OwogICAgIHZvaWQgb3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKKyAg
ICB2b2lkIG9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBpbnQ2NF90IHZlcnNpb24pOwogICAgIHZvaWQgZGVsZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+KTsKIAogICAgIHZpcnR1YWwgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0
YSgpIGNvbnN0OworICAgIHZpcnR1YWwgaW50NjRfdCBpbnRWZXJzaW9uKCkgY29uc3QgeworICAg
ICAgcmV0dXJuIG1faW50VmVyc2lvbjsKKyAgICB9CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CkBAIC03MCwxOCArNzQsMjIgQEAg
cHVibGljOgogICAgIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIHRyYW5zYWN0aW9uQ29vcmRp
bmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCk7IH0K
ICAgICB2b2lkIHRyYW5zYWN0aW9uU3RhcnRlZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4pOwogICAgIHZvaWQgdHJhbnNhY3Rpb25GaW5pc2hlZChQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOworICAgIHZvaWQgdHJhbnNhY3Rpb25G
aW5pc2hlZEFuZEV2ZW50c0ZpcmVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPik7CiAKIHByaXZhdGU6CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBT
dHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSogZGF0YWJhc2UsIElEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3IqLCBJREJGYWN0b3J5QmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlk
ZW50aWZpZXIpOwogCiAgICAgYm9vbCBvcGVuSW50ZXJuYWwoKTsKKyAgICB2b2lkIHJ1bkludFZl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbihpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpOwogICAgIHZvaWQgbG9hZE9iamVjdFN0b3Jlcygp
OwogICAgIGludDMyX3QgY29ubmVjdGlvbkNvdW50KCk7CiAgICAgdm9pZCBwcm9jZXNzUGVuZGlu
Z0NhbGxzKCk7CisgICAgc3RhdGljIHZvaWQgcHJvY2Vzc1BlbmRpbmdUYXNrKHZvaWQqIGRiKTsK
IAogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4sIFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlPik7CiAgICAgc3RhdGljIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmVJbnRl
cm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tl
bmRJbXBsPiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICBzdGF0aWMgdm9pZCBzZXRW
ZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VCYWNrZW5kSW1wbD4sIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwor
ICAgIHN0YXRpYyB2b2lkIHNldEludFZlcnNpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSwgaW50NjRf
dCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24pOwogCiAgICAgLy8g
VGhlc2UgYXJlIHVzZWQgYXMgc2V0VmVyc2lvbiB0cmFuc2FjdGlvbiBhYm9ydCB0YXNrcy4KICAg
ICBzdGF0aWMgdm9pZCByZW1vdmVPYmplY3RTdG9yZUZyb21NYXAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4pOwpAQCAtOTIsNiArMTAwLDcgQEAgcHJpdmF0ZToKICAg
ICBpbnQ2NF90IG1faWQ7CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcgbV92ZXJzaW9u
OworICAgIGludDY0X3QgbV9pbnRWZXJzaW9uOwogCiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsK
ICAgICAvLyBUaGlzIG1pZ2h0IG5vdCBuZWVkIHRvIGJlIGEgUmVmUHRyIHNpbmNlIHRoZSBmYWN0
b3J5J3MgbGlmZXRpbWUgaXMgdGhhdCBvZiB0aGUgcGFnZSBncm91cCwgYnV0IGl0J3MgYmV0dGVy
IHRvIGJlIGNvbnNlcnZpdGl2ZSB0aGFuIHNvcnJ5LgpAQCAtMTEyLDYgKzEyMSw5IEBAIHByaXZh
dGU6CiAgICAgY2xhc3MgUGVuZGluZ09wZW5DYWxsOwogICAgIERlcXVlPFJlZlB0cjxQZW5kaW5n
T3BlbkNhbGw+ID4gbV9wZW5kaW5nT3BlbkNhbGxzOwogCisgICAgY2xhc3MgUGVuZGluZ09wZW5X
aXRoVmVyc2lvbkNhbGw7CisgICAgRGVxdWU8UmVmUHRyPFBlbmRpbmdPcGVuV2l0aFZlcnNpb25D
YWxsPiA+IG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzOworCiAgICAgY2xhc3MgUGVuZGlu
Z0RlbGV0ZUNhbGw7CiAgICAgRGVxdWU8UmVmUHRyPFBlbmRpbmdEZWxldGVDYWxsPiA+IG1fcGVu
ZGluZ0RlbGV0ZUNhbGxzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCmluZGV4IDBmNmIz
NWQ2MDkzNjRkY2FjYmMxNzE0NjMxZmQxNmM1OTFkY2NkNTUuLjg1ZjYyNzQ3M2Y1MTkwMmFiMjc2
OTU3Y2Q3MjgyNGUwMmQyODdhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCkBAIC01
NCw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2UoKSB7IH0KIAogICAgIHZpcnR1YWwgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3QgaW50VmVyc2lvbigpIGNvbnN0ID0gMDsK
IAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+
IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYs
IGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhj
ZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29u
c3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRp
b25Db2RlJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmgKaW5kZXggYjNmMjQ0ZjUxNmI2OTg3ZWExMTljYmY3
MDE5YjdiNTQzNzVmMTJiZi4uMTZhOWVhNmM1MDhiMGQ5MmI2MWU0OTk3YzU0MzAxMzJhNmQyYWNh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VDYWxsYmFja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUNhbGxiYWNrcy5oCkBAIC0zOCw2ICszOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5JREJEYXRhYmFzZUNhbGxiYWNrcygpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lv
bkNoYW5nZShjb25zdCBTdHJpbmcmIHZlcnNpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25W
ZXJzaW9uQ2hhbmdlKGludDY0X3QgY3VycmVudFZlcnNpb24sIGludDY0X3QgcmVxdWVzdGVkVmVy
c2lvbikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNw
cAppbmRleCA4YmU5ZDFkMjQxMDU3YzJkZTg3MTI5NDg0MWY5ZmE2OTc0ZmFiMDYwLi40ZmRkY2Ri
YWIyOWUzNWU3YzM3ZDIwMWVhZjI1ZGY0YTEyOTI3Y2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2lu
Y2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCS2V5Lmgi
CiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKLSNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCisjaW5j
bHVkZSAiSURCT3BlbkRCUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlZlcnNpb25DaGFuZ2VSZXF1
ZXN0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtODAs
NyArODAsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkZhY3Rvcnk6OmdldERhdGFiYXNl
TmFtZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udAogICAgIHJldHVybiByZXF1ZXN0Owog
fQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBl
YykKK1Bhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVy
c2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1l
bnQoKSB8fCBjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7CiAKQEAgLTkzLDIxICs5MywyNiBA
QCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgUwogICAgICAgICBpZiAoIWRvY3VtZW50LT5mcmFtZSgp
IHx8ICFkb2N1bWVudC0+cGFnZSgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIEZy
YW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwotICAgICAgICBSZWZQdHI8SURCUmVxdWVz
dD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0
aGlzKSwgMCk7Ci0gICAgICAgIG1fYmFja2VuZC0+b3BlbihuYW1lLCByZXF1ZXN0LmdldCgpLCBj
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBmcmFtZSwgZG9jdW1lbnQtPnBhZ2UoKS0+Z3JvdXAo
KS5ncm91cFNldHRpbmdzKCktPmluZGV4ZWREQkRhdGFiYXNlUGF0aCgpKTsKKyAgICAgICAgUmVm
UHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJPcGVuREJSZXF1ZXN0OjpjcmVhdGUo
Y29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIHZlcnNpb24pOworICAgICAgICBtX2JhY2tl
bmQtPm9wZW4obmFtZSwgdmVyc2lvbiwgcmVxdWVzdC5nZXQoKSwgY29udGV4dC0+c2VjdXJpdHlP
cmlnaW4oKSwgZnJhbWUsIGRvY3VtZW50LT5wYWdlKCktPmdyb3VwKCkuZ3JvdXBTZXR0aW5ncygp
LT5pbmRleGVkREJEYXRhYmFzZVBhdGgoKSk7CiAgICAgICAgIHJldHVybiByZXF1ZXN0OwogICAg
IH0KICNpZiBFTkFCTEUoV09SS0VSUykKLSAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9
IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgMCk7Cisg
ICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJPcGVuREJSZXF1ZXN0Ojpj
cmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIHZlcnNpb24pOwogICAgIFdvcmtl
ckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4oY29u
dGV4dCk7CiAgICAgR3JvdXBTZXR0aW5ncyogZ3JvdXBTZXR0aW5ncyA9IHdvcmtlckNvbnRleHQt
PnRocmVhZCgpLT5ncm91cFNldHRpbmdzKCk7Ci0gICAgbV9iYWNrZW5kLT5vcGVuRnJvbVdvcmtl
cihuYW1lLCByZXF1ZXN0LmdldCgpLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCB3b3JrZXJD
b250ZXh0LCBncm91cFNldHRpbmdzID8gZ3JvdXBTZXR0aW5ncy0+aW5kZXhlZERCRGF0YWJhc2VQ
YXRoKCkgOiBTdHJpbmcoKSk7CisgICAgbV9iYWNrZW5kLT5vcGVuRnJvbVdvcmtlcihuYW1lLCB2
ZXJzaW9uLCByZXF1ZXN0LmdldCgpLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCB3b3JrZXJD
b250ZXh0LCBncm91cFNldHRpbmdzID8gZ3JvdXBTZXR0aW5ncy0+aW5kZXhlZERCRGF0YWJhc2VQ
YXRoKCkgOiBTdHJpbmcoKSk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiAjZWxzZQogICAgIHJldHVy
biAwOwogI2VuZGlmCiB9CiAKK1Bhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9y
eTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5h
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIHJldHVybiBvcGVuKGNvbnRleHQsIG5hbWUs
IC0yLCBlYyk7Cit9CisKIFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IElEQkZh
Y3Rvcnk6OmRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFjb250ZXh0
LT5pc0RvY3VtZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnkuaAppbmRleCA0NjExY2I2YzRmZTgzOTkwYjQ3MjRhNDNiZjA5YzlhNWE5NWQ4ODhk
Li4zNjQ1YmI4MWRjN2VlOTY2OTA1ZGE2NTJjMDY0ZGE3Mzg2ZjY1M2ZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCkBAIC0zMCw3ICszMCw3IEBA
CiAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tl
bmRJbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCisjaW5jbHVkZSAiSURCT3Bl
bkRCUmVxdWVzdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNTgsNyArNTgs
OCBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldERhdGFiYXNlTmFt
ZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IG9wZW4oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gb3BlbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICBQYXNzUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBkZWxldGVEYXRhYmFz
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25D
b2RlJik7CiAKICAgICBzaG9ydCBjbXAoUGFzc1JlZlB0cjxJREJLZXk+IGZpcnN0LCBQYXNzUmVm
UHRyPElEQktleT4gc2Vjb25kLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRsCmluZGV4IDAzODllYjJhYWU3ZTEyOTk1
NGQ5YWNmMDNhNTlmZmJjYzdmYmFhY2MuLmJmNzFhMmRkMjVkMWZmOTVlMjY0MzVmNGU0MWYwYzQx
Yjk3NjcyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnkuaWRsCkBAIC0zMCw3ICszMCw3IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICBdIElEQkZh
Y3RvcnkgewogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1wbGVt
ZW50ZWRBcz1nZXREYXRhYmFzZU5hbWVzXSBJREJSZXF1ZXN0IHdlYmtpdEdldERhdGFiYXNlTmFt
ZXMoKTsKIAotICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVx
dWVzdCBvcGVuKGluIERPTVN0cmluZyBuYW1lKQorICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dF0gSURCT3BlbkRCUmVxdWVzdCBvcGVuKGluIERPTVN0cmluZyBuYW1lLCBp
biBbT3B0aW9uYWxdIHVuc2lnbmVkIGxvbmcgbG9uZyB2ZXJzaW9uKQogICAgICAgICAgICAgcmFp
c2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0XSBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCBkZWxldGVEYXRhYmFzZShpbiBE
T01TdHJpbmcgbmFtZSkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnlCYWNrZW5kSW1wbC5jcHAKaW5kZXggNDQ3YmE3NzUxMDM1YzhlOTdlNDcwMTdjZDdkNzZh
MGM3MjE1MmFlNi4uMTUwMDQzYzJhMGNlNTBjMTQxMTMxN2U0YmFmMWM5NjJhNGQxYTA4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tl
bmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5QmFja2VuZEltcGwuY3BwCkBAIC05OSwxNCArOTksMTQgQEAgdm9pZCBJREJGYWN0b3J5QmFj
a2VuZEltcGw6OmdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcywKICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhkYXRhYmFzZU5hbWVzLnJlbGVhc2UoKSk7
CiB9CiAKLXZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFt
ZSwgSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNl
Y3VyaXR5T3JpZ2luLCBGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0YURpcmVjdG9yeSkKK3ZvaWQg
SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2
ZXJzaW9uLCBJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdp
bj4gc2VjdXJpdHlPcmlnaW4sIEZyYW1lKiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyZWN0b3J5KQog
ewotICAgIG9wZW5JbnRlcm5hbChuYW1lLCBjYWxsYmFja3MsIHNlY3VyaXR5T3JpZ2luLCBkYXRh
RGlyZWN0b3J5KTsKKyAgICBvcGVuSW50ZXJuYWwobmFtZSwgdmVyc2lvbiwgY2FsbGJhY2tzLCBz
ZWN1cml0eU9yaWdpbiwgZGF0YURpcmVjdG9yeSk7CiB9CiAKLXZvaWQgSURCRmFjdG9yeUJhY2tl
bmRJbXBsOjpvcGVuRnJvbVdvcmtlcihjb25zdCBTdHJpbmcmIG5hbWUsIElEQkNhbGxiYWNrcyog
Y2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiwgV29y
a2VyQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcmVjdG9yeSkKK3ZvaWQgSURCRmFjdG9y
eUJhY2tlbmRJbXBsOjpvcGVuRnJvbVdvcmtlcihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3Qg
dmVyc2lvbiwgSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IHNlY3VyaXR5T3JpZ2luLCBXb3JrZXJDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGly
ZWN0b3J5KQogewotICAgIG9wZW5JbnRlcm5hbChuYW1lLCBjYWxsYmFja3MsIHNlY3VyaXR5T3Jp
Z2luLCBkYXRhRGlyZWN0b3J5KTsKKyAgICBvcGVuSW50ZXJuYWwobmFtZSwgLTI1LCBjYWxsYmFj
a3MsIHNlY3VyaXR5T3JpZ2luLCBkYXRhRGlyZWN0b3J5KTsKIH0KIAogdm9pZCBJREJGYWN0b3J5
QmFja2VuZEltcGw6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2Vj
dXJpdHlPcmlnaW4sIEZyYW1lKiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyZWN0b3J5KQpAQCAtMTYw
LDMyICsxNjAsMzAgQEAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQkZhY3RvcnlCYWNr
ZW5kSW1wbDo6b3BlbkJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFMKICAgICByZXR1cm4gMDsKIH0K
IAotdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbChjb25zdCBTdHJpbmcm
IG5hbWUsIElEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBwcnBTZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyZWN0b3J5KQordm9pZCBJ
REJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbChjb25zdCBTdHJpbmcmIG5hbWUsIGlu
dDY0X3QgdmVyc2lvbiwgSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IHBycFNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFEaXJlY3Rvcnkp
CiB7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IHBycFNlY3Vy
aXR5T3JpZ2luOwogICAgIGNvbnN0IFN0cmluZyB1bmlxdWVJZGVudGlmaWVyID0gY29tcHV0ZVVu
aXF1ZUlkZW50aWZpZXIobmFtZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwogCisgICAgUmVmUHRy
PElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlQmFja2VuZDsKICAgICBJREJEYXRhYmFz
ZUJhY2tlbmRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZmluZCh1bmlx
dWVJZGVudGlmaWVyKTsKLSAgICBpZiAoaXQgIT0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZW5kKCkp
IHsKLSAgICAgICAgLy8gSWYgaXQncyBhbHJlYWR5IGJlZW4gb3BlbmVkLCB3ZSBoYXZlIHRvIHdh
aXQgZm9yIGFueSBwZW5kaW5nCi0gICAgICAgIC8vIHNldFZlcnNpb24gY2FsbHMgdG8gY29tcGxl
dGUuCi0gICAgICAgIGl0LT5zZWNvbmQtPm9wZW5Db25uZWN0aW9uKGNhbGxiYWNrcyk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogRXZlcnl0aGluZyBmcm9tIG5vdyBv
biBzaG91bGQgYmUgZG9uZSBvbiBhbm90aGVyIHRocmVhZC4KLSAgICBSZWZQdHI8SURCQmFja2lu
Z1N0b3JlPiBiYWNraW5nU3RvcmUgPSBvcGVuQmFja2luZ1N0b3JlKHNlY3VyaXR5T3JpZ2luLCBk
YXRhRGlyZWN0b3J5KTsKLSAgICBpZiAoIWJhY2tpbmdTdG9yZSkgewotICAgICAgICBjYWxsYmFj
a3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZUJhY2tlbmQg
PSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFtZSwgYmFja2luZ1N0b3JlLmdldCgp
LCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCksIHRoaXMsIHVuaXF1ZUlkZW50aWZpZXIp
OwotICAgIGlmIChkYXRhYmFzZUJhY2tlbmQpIHsKLSAgICAgICAgbV9kYXRhYmFzZUJhY2tlbmRN
YXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7Ci0gICAgICAg
IGRhdGFiYXNlQmFja2VuZC0+b3BlbkNvbm5lY3Rpb24oY2FsbGJhY2tzKTsKKyAgICBpZiAoaXQg
PT0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZW5kKCkpIHsKKyAgICAgICAgUmVmUHRyPElEQkJhY2tp
bmdTdG9yZT4gYmFja2luZ1N0b3JlID0gb3BlbkJhY2tpbmdTdG9yZShzZWN1cml0eU9yaWdpbiwg
ZGF0YURpcmVjdG9yeSk7CisgICAgICAgIGlmICghYmFja2luZ1N0b3JlKSB7CisgICAgICAgICAg
ICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFtZSwgYmFja2luZ1N0b3JlLmdldCgpLCBtX3RyYW5zYWN0
aW9uQ29vcmRpbmF0b3IuZ2V0KCksIHRoaXMsIHVuaXF1ZUlkZW50aWZpZXIpOworICAgICAgICBp
ZiAoZGF0YWJhc2VCYWNrZW5kKQorICAgICAgICAgICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0
KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUo
SURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiSW50ZXJuYWwgZXJyb3IuIikpOwog
ICAgIH0gZWxzZQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9y
LiIpKTsKKyAgICAgICAgZGF0YWJhc2VCYWNrZW5kID0gaXQtPnNlY29uZDsKKyAgICBpZiAodmVy
c2lvbiA8IDApCisgICAgICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbkNvbm5lY3Rpb24oY2FsbGJh
Y2tzKTsKKyAgICBlbHNlCisgICAgICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbkNvbm5lY3Rpb25X
aXRoVmVyc2lvbihjYWxsYmFja3MsIHZlcnNpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnlCYWNrZW5kSW1wbC5oCmluZGV4IDIwNTY0YTg4NTJlMzIxMGFkNzY2OWNhN2E1NDk0YThk
NjhkMzRlMjAuLmVmYmNjN2U1ZTI3MGY3NTdiNWZhOGE4ZmIzOTdmY2YxMmExNzk2NWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5k
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlC
YWNrZW5kSW1wbC5oCkBAIC01Nyw4ICs1Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4sIEZyYW1lKiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQ2FsbGJhY2tzKiwgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4sIEZyYW1lKiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgb3BlbkZyb21Xb3JrZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJDYWxs
YmFja3MqLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgV29ya2VyQ29udGV4dCosIGNvbnN0
IFN0cmluZyYgZGF0YURpcik7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBu
YW1lLCBpbnQ2NF90IHZlcnNpb24sIElEQkNhbGxiYWNrcyosIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+LCBGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CisgICAgdmlydHVhbCB2b2lk
IG9wZW5Gcm9tV29ya2VyKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBJREJD
YWxsYmFja3MqLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgV29ya2VyQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgZGF0YURpcik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNv
bnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiwgRnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOwogCiBwcm90ZWN0
ZWQ6CkBAIC02Niw3ICs2Niw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCQmFja2luZ1N0b3JlPiBvcGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgb3Blbklu
dGVybmFsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQ2FsbGJhY2tzKiwgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4sIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CisgICAgdm9pZCBvcGVuSW50ZXJu
YWwoY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIElEQkNhbGxiYWNrcyosIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOwogCiAgICAg
dHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+ID4g
SURCRGF0YWJhc2VCYWNrZW5kTWFwOwogICAgIElEQkRhdGFiYXNlQmFja2VuZE1hcCBtX2RhdGFi
YXNlQmFja2VuZE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oCmluZGV4IDE5YTFjOTc4NGMz
MGJmN2FhODc1NTAwYWJiY2M4ZDQwOTA4ZmI1NWYuLmM3NzY5YTZlYWJiNmEwZWY5OWQyN2JkOWQ4
OTY3NDBiNDE3ZjQ2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNTUsOCArNTUs
OCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBGcmFtZSosIGNv
bnN0IFN0cmluZyYgZGF0YURpcikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3Qg
U3RyaW5nJiBuYW1lLCBJREJDYWxsYmFja3MqLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwg
RnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgb3Bl
bkZyb21Xb3JrZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJDYWxsYmFja3MqLCBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiwgV29ya2VyQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2
ZXJzaW9uLCBJREJDYWxsYmFja3MqLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgRnJhbWUq
LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbkZyb21X
b3JrZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIElEQkNhbGxiYWNrcyos
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBXb3JrZXJDb250ZXh0KiwgY29uc3QgU3RyaW5n
JiBkYXRhRGlyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0
cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiwgRnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5n
U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZS5jcHAKaW5kZXggYWI4MjkzZjBmYTQ3Y2VjMDg1OTExYTU1NDRlYWIxM2M1NGE3
NDQ1OS4uZmU3NmU5MzMyNTU0OWZhNmQ2OTBiOWFhOTI0Y2RjMGRlZDY3ZDA3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZS5jcHAKQEAgLTg0LDYgKzg0LDEyIEBAIHN0YXRpYyBib29sIHB1dEludChEQk9y
VHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleSwgaW50NjRfdCB2YWx1ZSkK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4KK3N0YXRpYyBib29sIHB1
dFZhckludChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleSwgaW50
NjRfdCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gZGItPnB1dChrZXksIGVuY29kZVZhckludCh2YWx1
ZSkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgogc3RhdGljIGJv
b2wgZ2V0U3RyaW5nKERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5
LCBTdHJpbmcmIGZvdW5kU3RyaW5nKQogewogICAgIFZlY3RvcjxjaGFyPiByZXN1bHQ7CkBAIC0x
MjYsMjEgKzEzMiw0MSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBuYW1lKCkg
Y29uc3QgeyByZXR1cm4gImlkYl9jbXAxIjsgfQogfTsKIAotc3RhdGljIGJvb2wgc2V0VXBNZXRh
ZGF0YShMZXZlbERCRGF0YWJhc2UqIGRiKQorc3RhdGljIGJvb2wgc2V0VXBNZXRhZGF0YShMZXZl
bERCRGF0YWJhc2UqIGRiLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKIHsKICAgICBjb25zdCBWZWN0
b3I8Y2hhcj4gbWV0YURhdGFLZXkgPSBTY2hlbWFWZXJzaW9uS2V5OjplbmNvZGUoKTsKIAotICAg
IGludDY0X3Qgc2NoZW1hVmVyc2lvbiA9IDA7CisgICAgaW50NjRfdCBzY2hlbWFWZXJzaW9uID0g
LTE7CiAgICAgaWYgKCFnZXRJbnQoZGIsIG1ldGFEYXRhS2V5LCBzY2hlbWFWZXJzaW9uKSkgewot
ICAgICAgICBzY2hlbWFWZXJzaW9uID0gMDsKLSAgICAgICAgaWYgKCFwdXRJbnQoZGIsIG1ldGFE
YXRhS2V5LCBzY2hlbWFWZXJzaW9uKSkKKyAgICAgICAgc2NoZW1hVmVyc2lvbiA9IDE7CisgICAg
ICAgIGlmICghcHV0SW50KGRiLCBtZXRhRGF0YUtleSwgc2NoZW1hVmVyc2lvbikpIHsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIC8v
IFRoZXJlIHdhcyBhIHNjaGVtYSB2ZXJzaW9uLgorICAgICAgICBpZiAoc2NoZW1hVmVyc2lvbiA9
PSAwKSB7CisgICAgICAgICAgICAvLyBtb3ZlIHRoaXMgdG8gYSBzdGFuZGFsb25lIGZ1bmN0aW9u
PworICAgICAgICAgICAgc2NoZW1hVmVyc2lvbiA9IDE7CisgICAgICAgICAgICBSZWZQdHI8TGV2
ZWxEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IExldmVsREJUcmFuc2FjdGlvbjo6Y3JlYXRl
KGRiKTsKKyAgICAgICAgICAgIHRyYW5zYWN0aW9uLT5wdXQobWV0YURhdGFLZXksIGVuY29kZUlu
dChzY2hlbWFWZXJzaW9uKSk7CisKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFy
dEtleSA9IERhdGFiYXNlTmFtZUtleTo6ZW5jb2RlTWluS2V5Rm9yT3JpZ2luKG9yaWdpbik7Cisg
ICAgICAgICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RvcEtleSA9IERhdGFiYXNlTmFtZUtleTo6
ZW5jb2RlU3RvcEtleUZvck9yaWdpbihvcmlnaW4pOworICAgICAgICAgICAgT3duUHRyPExldmVs
REJJdGVyYXRvcj4gaXQgPSBkYi0+Y3JlYXRlSXRlcmF0b3IoKTsKKyAgICAgICAgICAgIGZvciAo
aXQtPnNlZWsoc3RhcnRLZXkpOyBpdC0+aXNWYWxpZCgpICYmIGNvbXBhcmVLZXlzKGl0LT5rZXko
KSwgc3RvcEtleSkgPCAwOyBpdC0+bmV4dCgpKSB7CisgICAgICAgICAgICAgICAgVmVjdG9yPGNo
YXI+IHZhbHVlOworICAgICAgICAgICAgICAgIGJvb2wgb2sgPSB0cmFuc2FjdGlvbi0+Z2V0KGl0
LT5rZXkoKSwgdmFsdWUpOworICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsg
Ly8gZG8gc29tZXRoaW5nIGJldHRlcgorICAgICAgICAgICAgICAgIGludCBkYl9pZCA9IGRlY29k
ZUludCh2YWx1ZS5iZWdpbigpLCB2YWx1ZS5lbmQoKSk7CisgICAgICAgICAgICAgICAgVmVjdG9y
PGNoYXI+IGludFZlcnNpb25LZXkgPSBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoZGJfaWQs
IERhdGFiYXNlTWV0YURhdGFLZXk6OmtVc2VySW50VmVyc2lvbik7CisgICAgICAgICAgICAgICAg
dHJhbnNhY3Rpb24tPnB1dChpbnRWZXJzaW9uS2V5LCBlbmNvZGVWYXJJbnQoLTEwKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBib29sIG9rID0gdHJhbnNhY3Rpb24tPmNvbW1pdCgpOwor
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOyAvLyBkbyBzb21ldGhpbmcgYmV0dGVy
CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHNjaGVtYVZlcnNpb24gPT0gMSk7CiAgICAgfQog
Ci0gICAgLy8gRklYTUU6IEV2ZW50dWFsbHksIHdlJ2xsIG5lZWQgdG8gYmUgYWJsZSB0byB0cmFu
c2l0aW9uIGJldHdlZW4gc2NoZW1hcy4KLSAgICBpZiAoc2NoZW1hVmVyc2lvbikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOyAvLyBEb24ndCBrbm93IHdoYXQgdG8gZG8gd2l0aCB0aGlzIHZlcnNpb24u
Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjA1LDcgKzIzMSw3IEBAIFBhc3NSZWZQdHI8
SURCQmFja2luZ1N0b3JlPiBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuKFNlY3VyaXR5T3Jp
Z2luKiBzZWN1cml0CiAgICAgUmVmUHRyPElEQkxldmVsREJCYWNraW5nU3RvcmU+IGJhY2tpbmdT
dG9yZShhZG9wdFJlZihuZXcgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZShmaWxlSWRlbnRpZmllciwg
ZmFjdG9yeSwgZGIucmVsZWFzZSgpKSkpOwogICAgIGJhY2tpbmdTdG9yZS0+bV9jb21wYXJhdG9y
ID0gY29tcGFyYXRvci5yZWxlYXNlKCk7CiAKLSAgICBpZiAoIXNldFVwTWV0YWRhdGEoYmFja2lu
Z1N0b3JlLT5tX2RiLmdldCgpKSkKKyAgICBpZiAoIXNldFVwTWV0YWRhdGEoYmFja2luZ1N0b3Jl
LT5tX2RiLmdldCgpLCBmaWxlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBQYXNzUmVmUHRy
PElEQkJhY2tpbmdTdG9yZT4oKTsKIAogICAgIHJldHVybiBiYWNraW5nU3RvcmUucmVsZWFzZSgp
OwpAQCAtMjMxLDcgKzI1Nyw3IEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0RGF0
YWJhc2VOYW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcykKICAgICB9CiB9CiAKLWJvb2wg
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJp
bmcmIG5hbWUsIFN0cmluZyYgZm91bmRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElkKQorYm9vbCBJ
REJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgU3RyaW5nJiBmb3VuZFN0cmluZ1ZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVy
c2lvbiwgaW50NjRfdCYgZm91bmRJZCkKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5ID0g
RGF0YWJhc2VOYW1lS2V5OjplbmNvZGUobV9pZGVudGlmaWVyLCBuYW1lKTsKIApAQCAtMjM5LDEw
ICsyNjUsMTUgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1l
dGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJgogICAgIGlmICghb2spCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIG9rID0gZ2V0U3RyaW5nKG1fZGIuZ2V0KCksIERhdGFiYXNl
TWV0YURhdGFLZXk6OmVuY29kZShmb3VuZElkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjprVXNlclZl
cnNpb24pLCBmb3VuZFZlcnNpb24pOworICAgIG9rID0gZ2V0U3RyaW5nKG1fZGIuZ2V0KCksIERh
dGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShmb3VuZElkLCBEYXRhYmFzZU1ldGFEYXRhS2V5Ojpr
VXNlclZlcnNpb24pLCBmb3VuZFN0cmluZ1ZlcnNpb24pOwogICAgIGlmICghb2spCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAorICAgIG9rID0gZ2V0SW50KG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0
YURhdGFLZXk6OmVuY29kZShmb3VuZElkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjprVXNlckludFZl
cnNpb24pLCBmb3VuZEludFZlcnNpb24pOworICAgIGlmICghb2spIHsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNjEsNyArMjkyLDcg
QEAgc3RhdGljIGludDY0X3QgZ2V0TmV3RGF0YWJhc2VJZChMZXZlbERCRGF0YWJhc2UqIGRiKQog
ICAgIHJldHVybiBkYXRhYmFzZUlkOwogfQogCi1ib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6
OmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHZlcnNpb24sIGludDY0X3QmIHJvd0lkKQorYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uLCBjb25zdCBpbnQ2NF90IGludFZlcnNpb24sIGludDY0X3QmIHJvd0lkKQog
ewogICAgIHJvd0lkID0gZ2V0TmV3RGF0YWJhc2VJZChtX2RiLmdldCgpKTsKICAgICBpZiAocm93
SWQgPCAwKQpAQCAtMjcyLDYgKzMwMywxOCBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6
OmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFwdXRTdHJpbmcobV9kYi5nZXQoKSwgRGF0YWJh
c2VNZXRhRGF0YUtleTo6ZW5jb2RlKHJvd0lkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjprVXNlclZl
cnNpb24pLCB2ZXJzaW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghcHV0VmFy
SW50KG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShyb3dJZCwgRGF0YWJh
c2VNZXRhRGF0YUtleTo6a1VzZXJJbnRWZXJzaW9uKSwgaW50VmVyc2lvbikpIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBJREJMZXZl
bERCQmFja2luZ1N0b3JlOjp1cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24oaW50NjRfdCByb3dJ
ZCwgaW50NjRfdCBpbnRWZXJzaW9uKQoreworICAgIEFTU0VSVChtX2N1cnJlbnRUcmFuc2FjdGlv
bik7CisgICAgaWYgKCFwdXRWYXJJbnQobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIERhdGFi
YXNlTWV0YURhdGFLZXk6OmVuY29kZShyb3dJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6a1VzZXJJ
bnRWZXJzaW9uKSwgaW50VmVyc2lvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC0zMDIsNyArMzQ1LDggQEAgYm9vbCBJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpCiAKICAgICBpbnQ2NF90
IGRhdGFiYXNlSWQ7CiAgICAgU3RyaW5nIHZlcnNpb247Ci0gICAgaWYgKCFnZXRJREJEYXRhYmFz
ZU1ldGFEYXRhKG5hbWUsIHZlcnNpb24sIGRhdGFiYXNlSWQpKSB7CisgICAgaW50NjRfdCBpbnRW
ZXJzaW9uOworICAgIGlmICghZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShuYW1lLCB2ZXJzaW9uLCBp
bnRWZXJzaW9uLCBkYXRhYmFzZUlkKSkgewogICAgICAgICB0cmFuc2FjdGlvbi0+cm9sbGJhY2so
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGE2
NWY5NjNlODUwNDMyNTg0ZDk3YzY4MThkYzk0YzJjNjc1MTY2ODkuLjMyNThiYTUwYmI3MWExNzdj
M2ZjM2M0MDk2ZmFhZDI3N2ExYjgxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKQEAgLTQ1LDkgKzQ1
LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJMZXZlbERCQmFja2luZ1N0b3JlKCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91bmRO
YW1lcyk7Ci0gICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3Ry
aW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCk7Ci0gICAg
dmlydHVhbCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3QmIHJvd0lkKTsKKyAgICB2aXJ0dWFsIGJv
b2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91
bmRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZEludFZlcnNpb24sIGludDY0X3QmIGZvdW5kSWQpOwor
ICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBpbnQ2NF90IGludFZlcnNpb24sIGlu
dDY0X3QmIHJvd0lkKTsKICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0
YShpbnQ2NF90IHJvd0lkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOworICAgIHZpcnR1YWwgYm9v
bCB1cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24oaW50NjRfdCByb3dJZCwgaW50NjRfdCBpbnRW
ZXJzaW9uKTsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBu
YW1lKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFz
ZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1l
cywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5k
QXV0b0luY3JlbWVudEZsYWdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaAppbmRleCBjYzFmNzI3OGRlZmVjNmU0NjBkOTRjMTQy
MTkyNmQxNDkxODYzOWQyLi4wNzA2Mjc0NjNhNzk1YmZjYTNjOTVmODc5MTMwYTdjZWRmMzMzMzM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
Q29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkNvZGluZy5oCkBAIC0xNDAsNyArMTQwLDggQEAgcHVibGljOgogICAgICAgICBrT3JpZ2luTmFt
ZSA9IDAsCiAgICAgICAgIGtEYXRhYmFzZU5hbWUgPSAxLAogICAgICAgICBrVXNlclZlcnNpb24g
PSAyLAotICAgICAgICBrTWF4T2JqZWN0U3RvcmVJZCA9IDMKKyAgICAgICAga01heE9iamVjdFN0
b3JlSWQgPSAzLAorICAgICAgICBrVXNlckludFZlcnNpb24gPSA0CiAgICAgfTsKIAogICAgIHN0
YXRpYyBWZWN0b3I8Y2hhcj4gZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgTWV0YURhdGFUeXBl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5E
QlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRC
UmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk0NDEzMWRkMzllYTQxMTA4NjFjMTVmZjU4YWNkNDFh
MjA5NWRmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCT3BlbkRCUmVxdWVzdC5oIgorCisjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJEYXRhYmFzZS5oIgorI2luY2x1ZGUg
IklEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCIKKyNpbmNsdWRlICJJREJVcGdyYWRlTmVl
ZGVkRXZlbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJPcGVuREJS
ZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0
cjxJREJBbnk+IHNvdXJjZSwgaW50NjRfdCB2ZXJzaW9uKQoreworICAgIFJlZlB0cjxJREJPcGVu
REJSZXF1ZXN0PiByZXF1ZXN0KGFkb3B0UmVmKG5ldyBJREJPcGVuREJSZXF1ZXN0KGNvbnRleHQs
IHNvdXJjZSwgdmVyc2lvbikpKTsKKyAgICByZXF1ZXN0LT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAg
ICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7Cit9CisKK0lEQk9wZW5EQlJlcXVlc3Q6OklEQk9w
ZW5EQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJ
REJBbnk+IHNvdXJjZSwgaW50NjRfdCB2ZXJzaW9uKQorICAgIDogSURCUmVxdWVzdChjb250ZXh0
LCBzb3VyY2UsIDApCisgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKK3sKKyAgICBMT0dfRVJST1Io
IkNyZWF0ZWQgYSBJREJPcGVuREJSZXF1ZXN0OjpJREJPcGVuREJSZXF1ZXN0ICVwIiwgdGhpcyk7
Cit9CisKK0lEQk9wZW5EQlJlcXVlc3Q6On5JREJPcGVuREJSZXF1ZXN0KCkKK3sKK30KKworY29u
c3QgQXRvbWljU3RyaW5nJiBJREJPcGVuREJSZXF1ZXN0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvcklEQk9wZW5EQlJlcXVlc3Q7
Cit9CisKK3ZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25CbG9ja2VkKCkKK3sKKyAgICBBU1NFUlQo
IW1fZXJyb3JDb2RlICYmIG1fZXJyb3JNZXNzYWdlLmlzTnVsbCgpICYmICFtX3Jlc3VsdCk7Cisv
LyAgICBlbnF1ZXVlRXZlbnQoSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUobV92ZXJzaW9u
LCBldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50KSk7Cit9CisKK3ZvaWQgSURCT3BlbkRCUmVxdWVz
dDo6b25VcGdyYWRlTmVlZGVkKGludDY0X3QgY3VycmVudFZlcnNpb24sIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBwcnBUcmFuc2FjdGlvbkJhY2tlbmQsIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBwcnBEYXRhYmFzZUJhY2tlbmQpCit7
CisgICAgTE9HX0VSUk9SKCJJbiBJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3JhZGVOZWVkZWQiKTsK
KyAgICBBU1NFUlQoIW1fZXJyb3JDb2RlICYmIG1fZXJyb3JNZXNzYWdlLmlzTnVsbCgpICYmICFt
X2Vycm9yICYmICFtX3Jlc3VsdCk7CisgICAgaWYgKG1fY29udGV4dFN0b3BwZWQgfHwgIXNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2VCYWNrZW5kID0gcHJwRGF0YWJhc2VCYWNr
ZW5kOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0
aW9uQmFja2VuZCA9IHBycFRyYW5zYWN0aW9uQmFja2VuZDsKKyAgICBSZWZQdHI8SURCRGF0YWJh
c2U+IGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIGRhdGFiYXNlQmFja2VuZCk7CisKKy8vICAgIEFTU0VSVCh0cmFuc2FjdGlvbkJhY2tl
bmQtPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworICAgIFJlZlB0
cjxJREJUcmFuc2FjdGlvbj4gZnJvbnRlbmQgPSBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgdHJhbnNhY3Rpb25CYWNrZW5kLCBJREJUcmFuc2FjdGlvbjo6
VkVSU0lPTl9DSEFOR0UsIGlkYkRhdGFiYXNlLmdldCgpLCB0aGlzKTsKKyAgICB0cmFuc2FjdGlv
bkJhY2tlbmQtPnNldENhbGxiYWNrcyhmcm9udGVuZC5nZXQoKSk7CisgICAgbV90cmFuc2FjdGlv
biA9IGZyb250ZW5kOworICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVhdGUoaWRiRGF0YWJhc2Uu
cmVsZWFzZSgpKTsKKworICAgIGVucXVldWVFdmVudChJREJVcGdyYWRlTmVlZGVkRXZlbnQ6OmNy
ZWF0ZShjdXJyZW50VmVyc2lvbiwgbV92ZXJzaW9uKSk7CisgICAgTE9HX0VSUk9SKCJFbnF1ZXVl
ZCB1cGdyYWRlbmVlZGVkIGV2ZW50IGF0IGVuZCBvZiBJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3Jh
ZGVOZWVkZWQiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZTY1NjRjNjY1ODNlMjBjMTU4YTNjNjZkZGEwZDM5Y2I3YTE0ZWJlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRC
UmVxdWVzdC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQk9wZW5EQlJlcXVl
c3RfaAorI2RlZmluZSBJREJPcGVuREJSZXF1ZXN0X2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQorCisjaW5jbHVkZSAiSURCUmVxdWVzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIElEQk9wZW5EQlJlcXVlc3QgOiBwdWJsaWMgSURCUmVxdWVzdCB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBpbnQ2NF90IHZlcnNp
b24pOworICAgIHZpcnR1YWwgfklEQk9wZW5EQlJlcXVlc3QoKTsKKworICAgIHZpcnR1YWwgdm9p
ZCBvbkJsb2NrZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgb25VcGdyYWRlTmVlZGVk
KGludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pIE9WRVJSSURF
OworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihibG9ja2VkKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHVwZ3Jh
ZGVuZWVkZWQpOworCitwcml2YXRlOgorICAgIElEQk9wZW5EQlJlcXVlc3QoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGludDY0X3QgdmVyc2lvbik7
CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNPcGVuREJSZXF1ZXN0KCkgY29uc3QgT1ZFUlJJREUgewor
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaW50NjRfdCBtX3ZlcnNpb247Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKKworI2VuZGlmIC8vIElEQk9wZW5EQlJlcXVlc3RfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmlkbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hMjY2YzczNTlhMGE2NWU2OTViMDg0NWRlNWY1MzU4M2E2Y2Q4Mjk4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5p
ZGwKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBzdG9yYWdlIHsKKworICAgIGludGVy
ZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UsCisgICAgICAgIEFj
dGl2ZURPTU9iamVjdCwKKyAgICAgICAgRXZlbnRUYXJnZXQKKyAgICBdIElEQk9wZW5EQlJlcXVl
c3QgOiBJREJSZXF1ZXN0IHsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25ibG9j
a2VkOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnVwZ3JhZGVuZWVkZWQ7Cisg
ICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5jcHAKaW5kZXggNjJkMjkyMzQwMjUwMDRjNTk4ZGNjYTJkMDdhNjk4MjNiYWMzODRmZS4uZDc2
MjBmN2MxNGIwMmUzZjJlZmE4M2UwYzcxNDg4ZjJmYjFjYWIzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTU0LDEzICs1NCwxMyBA
QCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQlJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXNzUgogSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBJREJU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwg
dGhpcykKICAgICAsIG1fZXJyb3JDb2RlKDApCi0gICAgLCBtX3NvdXJjZShzb3VyY2UpCisgICAg
LCBtX2NvbnRleHRTdG9wcGVkKGZhbHNlKQogICAgICwgbV90cmFuc2FjdGlvbih0cmFuc2FjdGlv
bikKKyAgICAsIG1fc291cmNlKHNvdXJjZSkKICAgICAsIG1fcmVhZHlTdGF0ZShQRU5ESU5HKQog
ICAgICwgbV9yZXF1ZXN0QWJvcnRlZChmYWxzZSkKICAgICAsIG1fcmVxdWVzdEZpbmlzaGVkKGZh
bHNlKQogICAgICwgbV9jdXJzb3JGaW5pc2hlZChmYWxzZSkKLSAgICAsIG1fY29udGV4dFN0b3Bw
ZWQoZmFsc2UpCiAgICAgLCBtX2N1cnNvclR5cGUoSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6
SW52YWxpZEN1cnNvclR5cGUpCiAgICAgLCBtX2N1cnNvckRpcmVjdGlvbihJREJDdXJzb3I6Ok5F
WFQpCiAgICAgLCBtX2N1cnNvcigwKQpAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgSURCUmVxdWVz
dDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNr
ZW5kKQogICAgIElEQl9UUkFDRSgiSURCUmVxdWVzdDo6b25TdWNjZXNzKElEQkRhdGFiYXNlKSIp
OwogICAgIGlmIChtX3JlcXVlc3RBYm9ydGVkKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJU
KCFtX2Vycm9yQ29kZSAmJiBtX2Vycm9yTWVzc2FnZS5pc051bGwoKSAmJiAhbV9lcnJvciAmJiAh
bV9yZXN1bHQpOworICAgIEFTU0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNO
dWxsKCkgJiYgIW1fZXJyb3IpOwogICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzkxLDcgKzM5MSw3IEBA
IGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkK
ICAgICBBU1NFUlQobV9lbnF1ZXVlZEV2ZW50cy5zaXplKCkpOwogICAgIEFTU0VSVChzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVChldmVudC0+dGFyZ2V0KCkgPT0gdGhpcyk7
Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3JlYWR5U3RhdGUgPCBET05FLCAibV9yZWFkeVN0
YXRlIDwgRE9ORSglZCksIHdhcyAlZCIsIERPTkUsIG1fcmVhZHlTdGF0ZSk7CisgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShtX3JlYWR5U3RhdGUgPCBET05FIHx8IGlzT3BlbkRCUmVxdWVzdCgpLCAi
V2hlbiBkaXNwYXRjaGluZyBldmVudCAlcywgbV9yZWFkeVN0YXRlIDwgRE9ORSglZCksIHdhcyAl
ZCIsIGV2ZW50LT50eXBlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgRE9ORSwgbV9yZWFkeVN0
YXRlKTsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50
KQogICAgICAgICBtX3JlYWR5U3RhdGUgPSBET05FOwogCkBAIC00MjIsMTcgKzQyMiwxOCBAQCBi
b29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAg
ICAgfQogCiAgICAgLy8gRklYTUU6IFdoZW4gd2UgYWxsb3cgY3VzdG9tIGV2ZW50IGRpc3BhdGNo
aW5nLCB0aGlzIHdpbGwgcHJvYmFibHkgbmVlZCB0byBjaGFuZ2UuCi0gICAgQVNTRVJUKGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCB8fCBldmVudC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
LmJsb2NrZWRFdmVudCk7Ci0gICAgY29uc3QgYm9vbCBzZXRUcmFuc2FjdGlvbkFjdGl2ZSA9IG1f
dHJhbnNhY3Rpb24gJiYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVu
dCB8fCAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZXJyb3JFdmVudCAmJiBtX2Vycm9y
Q29kZSAhPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUikpOworICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50
IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgfHwgZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLnVwZ3JhZGVuZWVkZWRFdmVudCwgImV2ZW50IHR5cGUgd2FzICVzIiwgZXZlbnQt
PnR5cGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBjb25zdCBib29sIHNldFRyYW5z
YWN0aW9uQWN0aXZlID0gbV90cmFuc2FjdGlvbiAmJiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkuc3VjY2Vzc0V2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnVwZ3Jh
ZGVuZWVkZWRFdmVudCB8fCAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZXJyb3JFdmVu
dCAmJiBtX2Vycm9yQ29kZSAhPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUikp
OwogCiAgICAgaWYgKHNldFRyYW5zYWN0aW9uQWN0aXZlKQogICAgICAgICBtX3RyYW5zYWN0aW9u
LT5zZXRBY3RpdmUodHJ1ZSk7CisKICAgICBib29sIGRvbnRQcmV2ZW50RGVmYXVsdCA9IElEQkV2
ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2goZXZlbnQuZ2V0KCksIHRhcmdldHMpOwogICAgIGlmIChz
ZXRUcmFuc2FjdGlvbkFjdGl2ZSkKICAgICAgICAgbV90cmFuc2FjdGlvbi0+c2V0QWN0aXZlKGZh
bHNlKTsKIAotICAgIC8vIElmIHRoZSByZXN1bHQgd2FzIG9mIHR5cGUgSURCQ3Vyc29yLCBvciBh
IG9uQmxvY2tlZCBldmVudCwgdGhlbiB3ZSdsbCBmaXJlIGFnYWluLgotICAgIGlmIChldmVudC0+
dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5ibG9ja2VkRXZlbnQgJiYgKCFjdXJzb3JUb05vdGlmeSB8
fCBtX2N1cnNvckZpbmlzaGVkKSkKKyAgICAvLyBJZiB0aGUgcmVzdWx0IHdhcyBvZiB0eXBlIElE
QkN1cnNvciwgb3Igd2UncmUgZmlyaW5nIGJsb2NrZWQgb3IgdXBncmFkZW5lZWRlZCwgdGhlbiB3
ZSdsbCBmaXJlIGFnYWluLgorICAgIGlmIChldmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5i
bG9ja2VkRXZlbnQgJiYgKCFjdXJzb3JUb05vdGlmeSB8fCBtX2N1cnNvckZpbmlzaGVkKSAmJiBl
dmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS51cGdyYWRlbmVlZGVkRXZlbnQpCiAgICAgICAg
IG1fcmVxdWVzdEZpbmlzaGVkID0gdHJ1ZTsKIAogICAgIGlmIChjdXJzb3JUb05vdGlmeSkKQEAg
LTQ1OSw2ICs0NjAsMTIgQEAgdm9pZCBJREJSZXF1ZXN0Ojp1bmNhdWdodEV4Y2VwdGlvbkluRXZl
bnRIYW5kbGVyKCkKICAgICAgICAgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLT5hYm9ydCgpOwog
fQogCit2b2lkIElEQlJlcXVlc3Q6OmNsZWFyVHJhbnNhY3Rpb25Qcm9wZXJ0eSgpCit7CisgICAg
QVNTRVJUKG1fdHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKTsKKyAgICBtX3RyYW5zYWN0
aW9uLmNsZWFyKCk7Cit9CisKIHZvaWQgSURCUmVxdWVzdDo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2ZW50KQogewogICAgIEFTU0VSVCghbV9yZXF1ZXN0RmluaXNoZWQpOwpAQCAt
NDY2LDcgKzQ3Myw3IEBAIHZvaWQgSURCUmVxdWVzdDo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8
RXZlbnQ+IGV2ZW50KQogICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX3JlYWR5U3RhdGUg
PCBET05FKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcmVhZHlTdGF0ZSA8IERPTkUgfHwg
aXNPcGVuREJSZXF1ZXN0KCksICJXaGVuIHF1ZXVlaW5nIGV2ZW50ICVzLCBtX3JlYWR5U3RhdGUg
PCBET05FKCVkKSwgd2FzICVkIiwgZXZlbnQtPnR5cGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCBET05FLCBtX3JlYWR5U3RhdGUpOwogCiAgICAgRXZlbnRRdWV1ZSogZXZlbnRRdWV1ZSA9IHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXZlbnRRdWV1ZSgpOwogICAgIGV2ZW50LT5zZXRUYXJn
ZXQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0
LmgKaW5kZXggMDZjYTlkYjlhNzkzZjgzNzgxMzFkOWYwNzkyM2ZiNjExNTQ1MGIwYi4uMDA5MGJj
NTBhZDM0Yjc4ZDQ2ZTQ4ZjkyMWEzYTYwM2ZlZmYxNGUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaApAQCAtMTA0LDYgKzEwNCw4IEBAIHB1Ymxp
YzoKICAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKSB7IHJldHVybiBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCwg
ZWMpOyB9CiAgICAgdmlydHVhbCB2b2lkIHVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIo
KTsKIAorICAgIHZvaWQgY2xlYXJUcmFuc2FjdGlvblByb3BlcnR5KCk7CisKICAgICB1c2luZyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxJREJDYWxsYmFja3M+OjpyZWY7CiAgICAgdXNpbmcgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8SURCQ2FsbGJhY2tzPjo6ZGVyZWY7CiAKQEAgLTExNCw2ICsxMTYsOCBA
QCBwcm90ZWN0ZWQ6CiAgICAgdW5zaWduZWQgc2hvcnQgbV9lcnJvckNvZGU7CiAgICAgU3RyaW5n
IG1fZXJyb3JNZXNzYWdlOwogICAgIFJlZlB0cjxET01FcnJvcj4gbV9lcnJvcjsKKyAgICBib29s
IG1fY29udGV4dFN0b3BwZWQ7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0
aW9uOwogCiBwcml2YXRlOgogICAgIC8vIEV2ZW50VGFyZ2V0CkBAIC0xMjMsMTUgKzEyNywxNiBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdl
dERhdGEoKTsKIAogICAgIHZvaWQgc2V0UmVzdWx0Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29y
PiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSk7CisgICAgdmlydHVhbCBi
b29sIGlzT3BlbkRCUmVxdWVzdCgpIGNvbnN0IHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CiAKICAgICBSZWZQdHI8SURCQW55PiBtX3NvdXJjZTsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rp
b24+IG1fdHJhbnNhY3Rpb247CiAKICAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKICAgICBi
b29sIG1fcmVxdWVzdEFib3J0ZWQ7IC8vIE1heSBiZSBhYm9ydGVkIGJ5IHRyYW5zYWN0aW9uIHRo
ZW4gcmVjZWl2ZSBhc3luYyBvbnN1Y2Nlc3M7IGlnbm9yZSB2cy4gYXNzZXJ0LgogICAgIGJvb2wg
bV9yZXF1ZXN0RmluaXNoZWQ7IC8vIElzIGl0IHBvc3NpYmxlIHRoYXQgd2UnbGwgZmlyZSBhbnkg
bW9yZSBldmVudHM/IElmIG5vdCwgd2UncmUgZmluaXNoZWQuCiAgICAgYm9vbCBtX2N1cnNvckZp
bmlzaGVkOwotICAgIGJvb2wgbV9jb250ZXh0U3RvcHBlZDsKICAgICBWZWN0b3I8UmVmUHRyPEV2
ZW50PiA+IG1fZW5xdWV1ZWRFdmVudHM7CiAKICAgICAvLyBPbmx5IHVzZWQgaWYgdGhlIHJlc3Vs
dCB0eXBlIHdpbGwgYmUgYSBjdXJzb3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggYzA5YWEwZWNlMGY2ZTIzNWJjMGE4
NjdmMmEyOGMzMTNkMjBkN2YxNi4uMWE1OGI5ZGM4ZWY3ZThmMmU1NmFkMjdkYzZmNzdlMzk2NzU0
NWMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIklEQkluZGV4LmgiCiAj
aW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJPcGVuREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
SURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oIgogI2luY2x1ZGUgIklEQlRyYWNpbmcuaCIK
IApAQCAtNDMsNyArNDQsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBi
YWNrZW5kLCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBJREJEYXRhYmFzZSogZGIpCiB7Ci0g
ICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbihhZG9wdFJlZihuZXcgSURCVHJh
bnNhY3Rpb24oY29udGV4dCwgYmFja2VuZCwgbW9kZSwgZGIpKSk7CisgICAgLy8gRklYTUU6IFRy
eSB0byBjb25zdHJ1Y3QgYSB0ZXN0IHdoZXJlIHRoaXMgb3V0bGl2ZXMgb3BlbkRCUmVxdWVzdCBh
bmQgd2UKKyAgICAvLyBnZXQgYSB1c2UgYWZ0ZXIgZnJlZS4KKyAgICBJREJPcGVuREJSZXF1ZXN0
KiBvcGVuREJSZXF1ZXN0ID0gMDsKKyAgICByZXR1cm4gY3JlYXRlKGNvbnRleHQsIGJhY2tlbmQs
IG1vZGUsIGRiLCBvcGVuREJSZXF1ZXN0KTsKK30KKworUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURC
VHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiLCBJREJPcGVuREJSZXF1ZXN0
KiBvcGVuREJSZXF1ZXN0KQoreworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rp
b24oYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uKGNvbnRleHQsIGJhY2tlbmQsIG1vZGUsIGRi
LCBvcGVuREJSZXF1ZXN0KSkpOwogICAgIHRyYW5zYWN0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsK
ICAgICByZXR1cm4gdHJhbnNhY3Rpb24ucmVsZWFzZSgpOwogfQpAQCAtNzksMTAgKzg4LDExIEBA
IGNvbnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkV3JpdGVMZWdhY3ko
KQogfQogCiAKLUlEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZT4gYmFja2VuZCwgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiKQor
SURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5k
LCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBJREJEYXRhYmFzZSogZGIsIElEQk9wZW5EQlJl
cXVlc3QqIG9wZW5EQlJlcXVlc3QpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhp
cykKICAgICAsIG1fYmFja2VuZChiYWNrZW5kKQogICAgICwgbV9kYXRhYmFzZShkYikKKyAgICAs
IG1fb3BlbkRCUmVxdWVzdChvcGVuREJSZXF1ZXN0KQogICAgICwgbV9tb2RlKG1vZGUpCiAgICAg
LCBtX2FjdGl2ZSh0cnVlKQogICAgICwgbV9zdGF0ZShVbnVzZWQpCkBAIC0xOTYsNyArMjA2LDcg
QEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVEZWxldGVkKGNvbnN0IFN0cmluZyYg
bmFtZSkKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6c2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogewot
ICAgIEFTU0VSVChtX3N0YXRlICE9IEZpbmlzaGVkKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KG1fc3RhdGUgIT0gRmluaXNoZWQsICJBIGZpbmlzaGVkIHRyYW5zYWN0aW9uIHRyaWVkIHRvIHNl
dEFjdGl2ZSglcykgaW4gJXAiLCBhY3RpdmUgPyAidHJ1ZSIgOiAiZmFsc2UiLCB0aGlzKTsKICAg
ICBpZiAobV9zdGF0ZSA9PSBGaW5pc2hpbmcpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQo
bV9zdGF0ZSA9PSBVbnVzZWQgfHwgbV9zdGF0ZSA9PSBVc2VkKTsKQEAgLTM4Myw3ICszOTMsMTEg
QEAgYm9vbCBJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBl
dmVudCkKIAogICAgIC8vIEZJWE1FOiBXaGVuIHdlIGFsbG93IGN1c3RvbSBldmVudCBkaXNwYXRj
aGluZywgdGhpcyB3aWxsIHByb2JhYmx5IG5lZWQgdG8gY2hhbmdlLgogICAgIEFTU0VSVChldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jb21wbGV0ZUV2ZW50IHx8IGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLmFib3J0RXZlbnQpOwotICAgIHJldHVybiBJREJFdmVudERpc3BhdGNo
ZXI6OmRpc3BhdGNoKGV2ZW50LmdldCgpLCB0YXJnZXRzKTsKKyAgICBib29sIHJldHVyblZhbHVl
ID0gSURCRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaChldmVudC5nZXQoKSwgdGFyZ2V0cyk7Cisg
ICAgaWYgKG1fb3BlbkRCUmVxdWVzdCkgeworICAgICAgICBtX29wZW5EQlJlcXVlc3QtPmNsZWFy
VHJhbnNhY3Rpb25Qcm9wZXJ0eSgpOworICAgIH0KKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9
CiAKIGJvb2wgSURCVHJhbnNhY3Rpb246OmNhblN1c3BlbmQoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggZTVmYmE3
Y2JlM2UxZTg5ZTljOWI2YmU0MzBmN2U5OGExNmM2MTUzYS4uYmM0YjcyNzFjOGJmMzI0Y2JmNjI5
ZDJjYmViMDM3NmE2OGE3YWFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIElEQkN1cnNvcjsKIGNsYXNzIElEQkRhdGFiYXNlOwogY2xhc3MgSURCT2Jq
ZWN0U3RvcmU7CitjbGFzcyBJREJPcGVuREJSZXF1ZXN0OwogCiBjbGFzcyBJREJUcmFuc2FjdGlv
biA6IHB1YmxpYyBJREJUcmFuc2FjdGlvbkNhbGxiYWNrcywgcHVibGljIEV2ZW50VGFyZ2V0LCBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTU2LDYgKzU3LDcgQEAgcHVibGlj
OgogICAgIH07CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4sIE1vZGUsIElEQkRhdGFiYXNlKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBNb2RlLCBJREJEYXRhYmFzZSosIElE
Qk9wZW5EQlJlcXVlc3QqKTsKICAgICB2aXJ0dWFsIH5JREJUcmFuc2FjdGlvbigpOwogCiAgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZVJlYWRPbmx5KCk7CkBAIC0xMjAsNyArMTIy
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8SURCVHJhbnNhY3Rpb25DYWxsYmFj
a3M+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBN
b2RlLCBJREJEYXRhYmFzZSopOworICAgIElEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4sIE1vZGUs
IElEQkRhdGFiYXNlKiwgSURCT3BlbkRCUmVxdWVzdCopOwogCiAgICAgdm9pZCBlbnF1ZXVlRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAgIHZvaWQgY2xvc2VPcGVuQ3Vyc29ycygpOwpAQCAt
MTQzLDYgKzE0NSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPiBtX2JhY2tlbmQ7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBtX2RhdGFi
YXNlOworICAgIElEQk9wZW5EQlJlcXVlc3QqIG1fb3BlbkRCUmVxdWVzdDsKICAgICBjb25zdCBN
b2RlIG1fbW9kZTsKICAgICBib29sIG1fYWN0aXZlOwogICAgIFN0YXRlIG1fc3RhdGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGwuY3BwCmluZGV4IDk0ZDMwZGM5MzY5OWViOTEzNmY2YWJkNzFiYjA2
NzNlYmJhYmJkZmMuLjcyMjdlMTkwZWQyMWI5ZGQyODg0NTMzNGFkYTkwZDQ2Y2FjNTE1MTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCkBAIC0yMjYsNiArMjI2LDggQEAgdm9pZCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjb21taXQoKQogICAgIGVsc2UKICAgICAgICAgbV9jYWxs
YmFja3MtPm9uQWJvcnQoKTsKIAorICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWRB
bmRFdmVudHNGaXJlZCh0aGlzKTsKKwogICAgIG1fZGF0YWJhc2UgPSAwOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJVcGdyYWRlTmVlZGVkRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRl
ZEV2ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDdiZWQ2YjRjYjE5YWQzOTdkNjkzOTk1Mjg0M2VjYWQx
OGJkM2NhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQlVwZ3JhZGVOZWVkZWRFdmVudC5oIgorCisj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisj
aW5jbHVkZSAiSURCQW55LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxJ
REJVcGdyYWRlTmVlZGVkRXZlbnQ+IElEQlVwZ3JhZGVOZWVkZWRFdmVudDo6Y3JlYXRlKGludDY0
X3Qgb2xkVmVyc2lvbiwgaW50NjRfdCBuZXdWZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQlVwZ3JhZGVOZWVkZWRFdmVu
dChvbGRWZXJzaW9uLCBuZXdWZXJzaW9uLCBldmVudE5hbWVzKCkudXBncmFkZW5lZWRlZEV2ZW50
KSk7Cit9CisKK0lEQlVwZ3JhZGVOZWVkZWRFdmVudDo6SURCVXBncmFkZU5lZWRlZEV2ZW50KGlu
dDY0X3Qgb2xkVmVyc2lvbiwgaW50NjRfdCBuZXdWZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSkKKyAgICA6IEV2ZW50KGV2ZW50VHlwZSwgZmFsc2UgLypjYW5CdWJibGUqLywg
ZmFsc2UgLypjYW5jZWxhYmxlKi8pCisgICAgLCBtX29sZFZlcnNpb24ob2xkVmVyc2lvbikKKyAg
ICAsIG1fbmV3VmVyc2lvbihuZXdWZXJzaW9uKQoreworfQorCitJREJVcGdyYWRlTmVlZGVkRXZl
bnQ6On5JREJVcGdyYWRlTmVlZGVkRXZlbnQoKQoreworfQorCitpbnQ2NF90IElEQlVwZ3JhZGVO
ZWVkZWRFdmVudDo6b2xkVmVyc2lvbigpCit7CisgICAgcmV0dXJuIG1fb2xkVmVyc2lvbjsKK30K
KworaW50NjRfdCBJREJVcGdyYWRlTmVlZGVkRXZlbnQ6Om5ld1ZlcnNpb24oKQoreworICAgIHJl
dHVybiBtX25ld1ZlcnNpb247Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgSURCVXBncmFkZU5l
ZWRlZEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1l
cygpLmludGVyZmFjZUZvcklEQlVwZ3JhZGVOZWVkZWRFdmVudDsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJjMTY1MTA2
OGQ4Zjk0NzNjY2ZhNzZjZWNkNGM2NDJlNDg1NTJmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5oCkBAIC0w
LDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQlVwZ3JhZGVOZWVkZWRFdmVudF9oCisjZGVm
aW5lIElEQlVwZ3JhZGVOZWVkZWRFdmVudF9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJBbnk7CisKK2NsYXNzIElEQlVwZ3JhZGVOZWVk
ZWRFdmVudCA6IHB1YmxpYyBFdmVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCVXBncmFkZU5lZWRlZEV2ZW50PiBjcmVhdGUoaW50NjRfdCBvbGRWZXJzaW9uID0gLTUwLCBp
bnQ2NF90IG5ld1ZlcnNpb24gPSAtNTAsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlID0g
QXRvbWljU3RyaW5nKCkpOworICAgIHZpcnR1YWwgfklEQlVwZ3JhZGVOZWVkZWRFdmVudCgpOwor
CisgICAgdmlydHVhbCBpbnQ2NF90IG9sZFZlcnNpb24oKTsKKyAgICB2aXJ0dWFsIGludDY0X3Qg
bmV3VmVyc2lvbigpOworCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFj
ZU5hbWUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBJREJVcGdyYWRlTmVlZGVkRXZlbnQoaW50
NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNpb24sIGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlKTsKKworICAgIGludDY0X3QgbV9vbGRWZXJzaW9uOworICAgIGludDY0X3QgbV9u
ZXdWZXJzaW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBJREJVcGdyYWRlTmVlZGVkRXZlbnRf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFk
ZU5lZWRlZEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlVw
Z3JhZGVOZWVkZWRFdmVudC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc3YjAwMGQ0MjJmYjcyN2Q0MDA4MjM2
OThhNDAxMWQyMjFkNTdhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5pZGwKQEAgLTAsMCArMSwzNCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK21vZHVsZSBzdG9yYWdlIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRp
dGlvbmFsPUlOREVYRURfREFUQUJBU0UKKyAgICBdIElEQlVwZ3JhZGVOZWVkZWRFdmVudCA6IEV2
ZW50IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyBvbGRW
ZXJzaW9uOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIG5l
d1ZlcnNpb247CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA3MmY3NGUyNDZhODczZTgy
NjkxMTkzNWI2ODBmNTJjMzBmOTFmM2FmLi43ZWY1NTViN2EzMzZhOWQyNGIyMDNmYWIxNDRiMzk0
NjNiMGU1MDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC04MTQsOCArODE0LDEwIEBACiAgICAgICAg
ICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9wZW5EQlJlcXVlc3QuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9J
REJSZXF1ZXN0LmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJVcGdyYWRlTmVl
ZGVkRXZlbnQuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9u
Q2hhbmdlRXZlbnQuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJz
aW9uQ2hhbmdlUmVxdWVzdC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL1dv
cmtlckNvbnRleHRJbmRleGVkRGF0YWJhc2UuaWRsJywKQEAgLTE1MDIsNiArMTUwNCw4IEBACiAg
ICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5j
cHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW50ZXJmYWNlLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQk9w
ZW5EQlJlcXVlc3QuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVu
REJSZXF1ZXN0LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlBlbmRpbmdU
cmFuc2FjdGlvbk1vbml0b3IuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9J
REJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlJlcXVlc3QuY3BwJywKQEAgLTE1MTUsNiArMTUxOSw4IEBACiAgICAgICAgICAg
ICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCcsCiAgICAgICAg
ICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAnLAog
ICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3Iu
aCcsCisgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50
LmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2
ZW50LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VF
dmVudC5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFu
Z2VFdmVudC5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hh
bmdlUmVxdWVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggODM2ZTYzMDhiMGRh
Y2Y5ZGIxZjc3NWZmZjI5MzRmMWI3NmRmYzE4YS4uNGY0YmMxMjdjMjdmYWEyOTlmNTRiYjk5MTQ4
ZGM2ODg3MjhhMGM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0xMTAsNiArMTEwLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHRleHRJbnB1dCkgXAogICAgIG1hY3Jv
KHVubG9hZCkgXAogICAgIG1hY3JvKHVwZGF0ZXJlYWR5KSBcCisgICAgbWFjcm8odXBncmFkZW5l
ZWRlZCkgXAogICAgIG1hY3JvKHZlcnNpb25jaGFuZ2UpIFwKICAgICBtYWNybyh3ZWJraXR2aXNp
YmlsaXR5Y2hhbmdlKSBcCiAgICAgbWFjcm8od3JpdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMu
aW4KaW5kZXggOWMwYWM1NTU4YWFhYzE2MDFlOTMwOTE1YjBkN2I0N2E4ZGU2NjdlMi4uZjFlNmRh
NzlkYTkxYWI3ODM2MzM2MzQ4MzhhYjdiNTc1ZTM4MTM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuaW4KQEAgLTM5LDYgKzM5LDcgQEAgU3RvcmFnZUV2ZW50CiBTVkdFdmVudHMgaW50ZXJmYWNl
TmFtZT1FdmVudCwgY29uZGl0aW9uYWw9U1ZHCiBTVkdab29tRXZlbnQgY29uZGl0aW9uYWw9U1ZH
CiBTVkdab29tRXZlbnRzIGludGVyZmFjZU5hbWU9U1ZHWm9vbUV2ZW50LCBjb25kaXRpb25hbD1T
VkcKK0lEQlVwZ3JhZGVOZWVkZWRFdmVudCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJ
REJWZXJzaW9uQ2hhbmdlRXZlbnQgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogVG91Y2hF
dmVudCBjb25kaXRpb25hbD1UT1VDSF9FVkVOVFMsIHJ1bnRpbWVDb25kaXRpb25hbD10b3VjaEVu
YWJsZWQKIERldmljZU1vdGlvbkV2ZW50IGNvbmRpdGlvbmFsPURFVklDRV9PUklFTlRBVElPTgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggODIxNzE3YjBkN2Zl
NzY1M2FhZjNmNjVkYTM1ZWE4ZWY5NWJkMDRlNC4uNmVhM2Y3ZGI2NWRlYWIwOWZhYzZlMjdlNDEy
NzAyYTJhYTFjZGM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5Lmlu
CkBAIC0xMCw2ICsxMCw3IEBAIEV2ZW50U291cmNlCiBGaWxlUmVhZGVyIGNvbmRpdGlvbmFsPUJM
T0IKIEZpbGVXcml0ZXIgY29uZGl0aW9uYWw9RklMRV9TWVNURU0KIElEQkRhdGFiYXNlIGNvbmRp
dGlvbmFsPUlOREVYRURfREFUQUJBU0UKK0lEQk9wZW5EQlJlcXVlc3QgY29uZGl0aW9uYWw9SU5E
RVhFRF9EQVRBQkFTRQogSURCUmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJ
REJUcmFuc2FjdGlvbiBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJREJWZXJzaW9uQ2hh
bmdlUmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCA2MTA3
ZWI5ODJlMDFjNjA2ZGZjYWY0YjJlYjMxZDJiODJkZmExYWY4Li5hODQwZmNmOTFiOWQxNGQzMzVj
YzE3MjA3YzliNDZmNmZkZjZkNzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCBwcml2
YXRlOgogdm9pZCBFeGVjdXRhYmxlV2l0aERhdGFiYXNlOjpzdGFydChJREJGYWN0b3J5QmFja2Vu
ZEludGVyZmFjZSogaWRiRmFjdG9yeSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBG
cmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQogewogICAgIFJlZlB0cjxP
cGVuRGF0YWJhc2VDYWxsYmFjaz4gY2FsbGJhY2sgPSBPcGVuRGF0YWJhc2VDYWxsYmFjazo6Y3Jl
YXRlKHRoaXMpOwotICAgIGlkYkZhY3RvcnktPm9wZW4oZGF0YWJhc2VOYW1lLCBjYWxsYmFjay5n
ZXQoKSwgc2VjdXJpdHlPcmlnaW4sIGZyYW1lLCBTdHJpbmcoKSk7CisgICAgaWRiRmFjdG9yeS0+
b3BlbihkYXRhYmFzZU5hbWUsIC0yMCwgY2FsbGJhY2suZ2V0KCksIHNlY3VyaXR5T3JpZ2luLCBm
cmFtZSwgU3RyaW5nKCkpOwogfQogCiBzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uRm9yRGF0YWJhc2UoSURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlKiBpZGJEYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCkBA
IC0zMzgsMjAgKzMzOCwyMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgLnNldEluZGV4ZXMo
aW5kZXhlcyk7CiAgICAgICAgICAgICBvYmplY3RTdG9yZXMtPmFkZEl0ZW0ob2JqZWN0U3RvcmUp
OwogICAgICAgICB9Ci0gICAgICAgIFJlZlB0cjxEYXRhYmFzZVdpdGhPYmplY3RTdG9yZXM+IHJl
c3VsdCA9IERhdGFiYXNlV2l0aE9iamVjdFN0b3Jlczo6Y3JlYXRlKCkKLSAgICAgICAgICAgIC5z
ZXROYW1lKGRhdGFiYXNlTWV0YWRhdGEubmFtZSkKLSAgICAgICAgICAgIC5zZXRWZXJzaW9uKGRh
dGFiYXNlTWV0YWRhdGEudmVyc2lvbikKLSAgICAgICAgICAgIC5zZXRPYmplY3RTdG9yZXMob2Jq
ZWN0U3RvcmVzKTsKLQotICAgICAgICBtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCktPmRh
dGFiYXNlTG9hZGVkKG1fcmVxdWVzdElkLCByZXN1bHQpOworLy8gICAgICAgIFJlZlB0cjxEYXRh
YmFzZVdpdGhPYmplY3RTdG9yZXM+IHJlc3VsdCA9IERhdGFiYXNlV2l0aE9iamVjdFN0b3Jlczo6
Y3JlYXRlKCkKKy8vICAgICAgICAgICAgLnNldE5hbWUoZGF0YWJhc2VNZXRhZGF0YS5uYW1lKQor
Ly8gICAgICAgICAgICAuc2V0VmVyc2lvbihkYXRhYmFzZU1ldGFkYXRhLnZlcnNpb24pCisvLyAg
ICAgICAgICAgIC5zZXRPYmplY3RTdG9yZXMob2JqZWN0U3RvcmVzKTsKKy8vCisvLyAgICAgICAg
bV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpLT5kYXRhYmFzZUxvYWRlZChtX3JlcXVlc3RJ
ZCwgcmVzdWx0KTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgRGF0YWJhc2VMb2FkZXJDYWxsYmFj
ayhJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRlciogZnJvbnRlbmRQcm92
aWRlciwgaW50IHJlcXVlc3RJZCkKICAgICAgICAgOiBtX2Zyb250ZW5kUHJvdmlkZXIoZnJvbnRl
bmRQcm92aWRlcikKLSAgICAgICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpIHsgfQorLyogICAg
ICAgICwgbV9yZXF1ZXN0SWQocmVxdWVzdElkKSovIHsgfQogICAgIFJlZlB0cjxJbnNwZWN0b3JJ
bmRleGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRlcj4gbV9mcm9udGVuZFByb3ZpZGVyOwotICAg
IGludCBtX3JlcXVlc3RJZDsKKy8vICAgIGludCBtX3JlcXVlc3RJZDsKICAgICBEYXRhYmFzZUNv
bm5lY3Rpb24gbV9jb25uZWN0aW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaAppbmRleCBhNjNjMGJjOWVlNmM0Y2FmMmQ2N2Q5NWU1
ZDAwYTExYzlmY2Q4MjlkLi4zODRmZjIzMDJhYmIxYmUwODI2OTYzNWUzZDAzYjIyN2NkMWNiZjQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDYWxsYmFj
a3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDYWxsYmFja3Mu
aApAQCAtNTksNiArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dp
dGhDb250aW51YXRpb24oKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZp
cnR1YWwgdm9pZCBvbkJsb2NrZWQoKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29uc3QgV2ViVmVjdG9yPFdl
YklEQktleT4mIGtleXMsIGNvbnN0IFdlYlZlY3RvcjxXZWJJREJLZXk+JiBwcmltYXJ5S2V5cywg
Y29uc3QgV2ViVmVjdG9yPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIHZhbHVlcykgeyBXRUJL
SVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25VcGdyYWRlTmVl
ZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwgV2ViSURCVHJhbnNhY3Rpb24qLCBXZWJJREJEYXRhYmFz
ZSopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklE
QkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFz
ZS5oCmluZGV4IDNlYjFlY2I3NDMzMTU1YzlhYWQxYWI5NzcyZDNkZTFlNDY0YjhmMzEuLjNjMjAw
Y2Q5MjI2NzA5OTI0MGZiNDJlZmU1Y2FkNTAxMTVhZmI0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaApAQCAtNTAsNiArNTAsMTEgQEAgcHVi
bGljOgogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
biBXZWJJREJNZXRhZGF0YSgpOwogICAgIH0KKyAgICB2aXJ0dWFsIGludDY0X3QgaW50VmVyc2lv
bigpIGNvbnN0CisgICAgeworICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KICAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBj
cmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmLCBjb25zdCBXZWJJREJLZXlQYXRoJiwg
Ym9vbCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikKICAgICB7
CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaAppbmRleCBlOTU2ZWJkZWQ4YzQ1OWU3ZWZl
NjMyMzcxZjZlNmQyNGFkYTgwOWYyLi5kZDdmM2NiM2VlMjcwYWZmOWQ0YjhlMWIyZWQxMzc3OTll
NzNjZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJG
YWN0b3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9y
eS5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJh
c2VOYW1lcyhXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmln
aW4mIG9yaWdpbiwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpIHsg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICAvLyBUaGUgV2ViS2l0IGltcGxl
bWVudGF0aW9uIG9mIG9wZW4gaWdub3JlcyB0aGUgV2ViRnJhbWUqIHBhcmFtZXRlci4KLSAgICB2
aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyog
Y2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSogZnJh
bWUsIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGludDY0
X3QgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGly
KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZURhdGFiYXNlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiwgY29u
c3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURp
cikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKaW5kZXggYTU0NDE4OWI2Njhm
NDRlZDgxNGQ0YzcyMjgwNzE0MDNjMjdiOTdjZC4uYmM3MGZiM2M3OWVjMDI3ZDBhNDZhOWRmMmIy
ZTIzOTUwYjExNzUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
Q2FsbGJhY2tzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNh
bGxiYWNrc1Byb3h5LmNwcApAQCAtMTI0LDYgKzEyNCwxMCBAQCB2b2lkIElEQkNhbGxiYWNrc1By
b3h5OjpvbkJsb2NrZWQoKQogewogICAgIG1fY2FsbGJhY2tzLT5vbkJsb2NrZWQoKTsKIH0KK3Zv
aWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24s
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbiwg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlKQoreworICAg
IG1fY2FsbGJhY2tzLT5vblVwZ3JhZGVOZWVkZWQob2xkVmVyc2lvbiwgbmV3IFdlYklEQlRyYW5z
YWN0aW9uSW1wbCh0cmFuc2FjdGlvbiksIG5ldyBXZWJJREJEYXRhYmFzZUltcGwoZGF0YWJhc2Up
KTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCmluZGV4IGRiMzA1NjU1MGIyYjJlMTdlMmUzMGRk
ZWY3OWU5ZGQyOWMyNWZmYmQuLjdkZTQ5NzcyZjk5ZTJjYWM0YmFkZGQyYzM0OGYxY2I0ZDRjZmE3
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHku
aApAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dp
dGhDb250aW51YXRpb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNo
KGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiA+JiBrZXlzLCBjb25zdCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OklEQktleT4gPiYgcHJpbWFyeUtleXMsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JiB2YWx1ZXMpOwogICAgIHZp
cnR1YWwgdm9pZCBvbkJsb2NrZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25VcGdyYWRlTmVlZGVk
KGludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZT4pOwogCiBwcml2YXRlOgogICAgIElEQkNhbGxiYWNrc1Byb3h5KFBhc3NPd25QdHI8
V2ViSURCQ2FsbGJhY2tzPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKaW5kZXggOTAxYjU1ZTU0ZjJhYWZlMDRmZmZj
MjJjYTk2YjM1MzE4ZWY5NDc4Ni4uOWQ3YzdmZTEzZmVhNjM4MTRlYWUwNmJkYzExOWJmNTcyYTY4
MzQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VC
YWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFi
YXNlQmFja2VuZFByb3h5LmNwcApAQCAtNjYsNiArNjYsMTEgQEAgSURCRGF0YWJhc2VNZXRhZGF0
YSBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6bWV0YWRhdGEoKSBjb25zdAogICAgIHJldHVybiBt
X3dlYklEQkRhdGFiYXNlLT5tZXRhZGF0YSgpOwogfQogCitpbnQ2NF90IElEQkRhdGFiYXNlQmFj
a2VuZFByb3h5OjppbnRWZXJzaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJJREJEYXRh
YmFzZS0+aW50VmVyc2lvbigpOworfQorCiBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2Vu
ZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZU9iamVjdFN0b3JlKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5j
cmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFy
YW50ZWVkIHRvIGJlIGEgcG9pbnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRl
cmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VC
YWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFj
a2VuZFByb3h5LmgKaW5kZXggMmE5MzYwMGM2ZjJmYTBjMjY3YzJkYTA2ZmI4YjkyMTZmZDgyOGUz
Ni4uYTJmOTU0NjMwNmIzYTBmYzk2ZGNiZjU1ZWUxMmUzMDczM2NmYWM4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCkBA
IC00Myw2ICs0Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUJhY2tlbmRQ
cm94eSgpOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFk
YXRhKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQ2NF90IGludFZlcnNpb24oKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRl
cmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViQ29y
ZTo6SURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5k
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQ
cm94eS5jcHAKaW5kZXggMTQ5YmZlMTJhMGUzOTY3M2Y3YjQ2NWFmNmI5N2QxMTBmM2RjZDU2Ny4u
ZTMyMTkyNTdjYmUzYjJiM2I5ZTEwOGU2OTBiYmExMmVhNjBlNDM4ZCAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKQEAg
LTE4MCw3ICsxODAsNyBAQCBib29sIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmFsbG93SURCRnJv
bVdvcmtlclRocmVhZChXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZQogICAgIHJldHVybiBicmlk
Z2UtPnJlc3VsdCgpOwogfQogCi12b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6Om9wZW5Gcm9t
V29ya2VyKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHBycE9yaWdpbiwgV29ya2VyQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiBkYXRhRGlyKQordm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpvcGVu
RnJvbVdvcmtlcihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgSURCQ2FsbGJh
Y2tzKiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHBycE9yaWdpbiwgV29y
a2VyQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKQogewogI2lmIEVOQUJM
RShXT1JLRVJTKQogICAgIFdlYlNlY3VyaXR5T3JpZ2luIG9yaWdpbihwcnBPcmlnaW4pOwpAQCAt
MTg4LDExICsxODgsMTEgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpvcGVuRnJvbVdv
cmtlcihjb25zdCBTdHJpbmcmIG5hbWUsIElEQkNhbGxiYWNrcyogY2EKICAgICAgICAgY2FsbGJh
Y2tzLT5vbkVycm9yKFdlYklEQkRhdGFiYXNlRXJyb3IoMCwgIlRoZSB1c2VyIGRlbmllZCBwZXJt
aXNzaW9uIHRvIGFjY2VzcyB0aGUgZGF0YWJhc2UuIikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIG1fd2ViSURCRmFjdG9yeS0+b3BlbihuYW1lLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1w
bChjYWxsYmFja3MpLCBvcmlnaW4sIC8qd2ViRnJhbWUqLzAsIGRhdGFEaXIpOworICAgIG1fd2Vi
SURCRmFjdG9yeS0+b3BlbihuYW1lLCAtNDAsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxi
YWNrcyksIG9yaWdpbiwgLyp3ZWJGcmFtZSovMCwgZGF0YURpcik7CiAjZW5kaWYKIH0KIAotdm9p
ZCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQ2Fs
bGJhY2tzKiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHBycE9yaWdpbiwg
RnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpCit2b2lkIElEQkZhY3RvcnlCYWNr
ZW5kUHJveHk6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIElEQkNh
bGxiYWNrcyogY2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBwcnBPcmlnaW4s
IEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKQogewogICAgIFdlYlNlY3VyaXR5
T3JpZ2luIG9yaWdpbihwcnBPcmlnaW4pOwogICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBX
ZWJGcmFtZUltcGw6OmZyb21GcmFtZShmcmFtZSk7CkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBJ
REJGYWN0b3J5QmFja2VuZFByb3h5OjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQ2FsbGJh
Y2tzKiBjYWxsYmFja3MsIFAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fd2ViSURC
RmFjdG9yeS0+b3BlbihuYW1lLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBv
cmlnaW4sIHdlYkZyYW1lLCBkYXRhRGlyKTsKKyAgICBtX3dlYklEQkZhY3RvcnktPm9wZW4obmFt
ZSwgdmVyc2lvbiwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgb3JpZ2luLCB3
ZWJGcmFtZSwgZGF0YURpcik7CiB9CiAKIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6ZGVs
ZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBwcnBPcmlnaW4sIEZyYW1lKiBm
cmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5oCmluZGV4IGMwN2RiMzU1NmUwOTAwNjZj
N2I0Y2IxZTFiOWVkY2FmYzcwNmM5NjAuLjI5NDZkYTFkZGM2ZTIwZmQ0ZTViMDY5NWI4M2NiMjAw
MTNiZThiNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3Rv
cnlCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0
b3J5QmFja2VuZFByb3h5LmgKQEAgLTQ5LDggKzQ5LDggQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+
LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6RnJhbWUqLCBj
b25zdCBTdHJpbmcmIGRhdGFEaXIpOwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3Ry
aW5nJiBuYW1lLCBXZWJDb3JlOjpJREJDYWxsYmFja3MqLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOwot
ICAgIHZpcnR1YWwgdm9pZCBvcGVuRnJvbVdvcmtlcihjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNv
cmU6OklEQkNhbGxiYWNrcyosIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBX
ZWJDb3JlOjpXb3JrZXJDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKKyAgICB2aXJ0
dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgV2ViQ29y
ZTo6SURCQ2FsbGJhY2tzKiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFdl
YkNvcmU6OkZyYW1lKiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKKyAgICB2aXJ0dWFsIHZvaWQg
b3BlbkZyb21Xb3JrZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFdlYkNv
cmU6OklEQkNhbGxiYWNrcyosIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBX
ZWJDb3JlOjpXb3JrZXJDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4sIFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcAppbmRleCA1
YjVhZWRmN2NjYjM3ZTI0OWM1M2MxYWY5ZThlYzhlZDliMGU2ZTEyLi5mNjUxMGYxZTZhYmM1ODJm
M2ZkMGViN2ExMTljNjU1NzU4N2MzNDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcApAQCAtMTA1LDYgKzEwNSwxMSBAQCB2b2lk
IFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uQmxvY2tlZCgpCiAgICAgbV9jYWxsYmFja3MtPm9uQmxv
Y2tlZCgpOwogfQogCit2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uVXBncmFkZU5lZWRlZChp
bnQ2NF90IG9sZFZlcnNpb24sIFdlYklEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgV2ViSURC
RGF0YWJhc2UqIGRhdGFiYXNlKQoreworICAgIG1fY2FsbGJhY2tzLT5vblVwZ3JhZGVOZWVkZWQo
b2xkVmVyc2lvbiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6OmNyZWF0ZShhZG9wdFB0cih0
cmFuc2FjdGlvbikpLCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGRh
dGFiYXNlKSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCQ2FsbGJhY2tzSW1wbC5oCmluZGV4IDdiMDIxNjM1OWQ1NmQ4MTg2OTVmZTk3M2EwMTgyYWZi
NTEyNTAxNjEuLjE3MTQ4ODcxMTgwMjA2N2ZkNDAwMzNmZjlhMGIzMGMwZGIzMTgyZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgKQEAg
LTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3Qg
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgY29uc3QgV2ViSURCS2V5JiwgY29uc3QgV2ViSURC
S2V5UGF0aCYpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCk7
CiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpOworICAgIHZpcnR1YWwgdm9pZCBvblVwZ3Jh
ZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBXZWJJREJUcmFuc2FjdGlvbiosIFdlYklEQkRh
dGFiYXNlKik7CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4g
bV9jYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJEYXRhYmFzZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0
YWJhc2VJbXBsLmNwcAppbmRleCAxODU3M2NhY2ZlMTgwMWI5OGI5ZTM5YmEzZjFlZThkNmM2NGQw
ZDkyLi4wZWM5YWQ0MjNjNzM4NDRkNWUxMTY2ZjMyMmNhZjMwOWViNjk0OTdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTU4
LDYgKzU4LDExIEBAIFdlYklEQk1ldGFkYXRhIFdlYklEQkRhdGFiYXNlSW1wbDo6bWV0YWRhdGEo
KSBjb25zdAogICAgIHJldHVybiBtX2RhdGFiYXNlQmFja2VuZC0+bWV0YWRhdGEoKTsKIH0KIAor
aW50NjRfdCBXZWJJREJEYXRhYmFzZUltcGw6OmludFZlcnNpb24oKSBjb25zdAoreworICAgIHJl
dHVybiBtX2RhdGFiYXNlQmFja2VuZC0+aW50VmVyc2lvbigpOworfQorCiBXZWJJREJPYmplY3RT
dG9yZSogV2ViSURCRGF0YWJhc2VJbXBsOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVu
dCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmpl
Y3RTdG9yZSA9IG1fZGF0YWJhc2VCYWNrZW5kLT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQ
YXRoLCBhdXRvSW5jcmVtZW50LCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UoKSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCRGF0YWJhc2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJE
YXRhYmFzZUltcGwuaAppbmRleCA0ZjgyNTE4MjBhNDliYmRmZGU1MmZhYjkxZWZmYTVhZWMwOGJh
NDZkLi43ODcyODQ0N2Q2NGI3YWU2NDNiMjU1Nzg5NDczYjcxMWEwZGRhOTkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaApAQCAtNTEsNiAr
NTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViSURCRGF0YWJhc2VJbXBsKCk7CiAKICAg
ICB2aXJ0dWFsIFdlYklEQk1ldGFkYXRhIG1ldGFkYXRhKCkgY29uc3Q7CisgICAgdmlydHVhbCBp
bnQ2NF90IGludFZlcnNpb24oKSBjb25zdDsKIAogICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3Rv
cmUqIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURC
S2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBX
ZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNv
bnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRp
b25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJG
YWN0b3J5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5
SW1wbC5jcHAKaW5kZXggZDg3NWUxMWJjNjVlZjU4OGUwNmUyYjVmNTFkYWMxNmQyNmI2MDhlYy4u
OGVjMDRmM2U4Y2VkYzk0MzM5ZjU1ODUxODJiZDk3M2E5ZmNhMjEwMCAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcApAQCAtNjQsOSArNjQs
OSBAQCB2b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpnZXREYXRhYmFzZU5hbWVzKFdlYklEQkNhbGxi
YWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZQogfQogCiAKLXZvaWQgV2ViSURCRmFjdG9yeUlt
cGw6Om9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNr
cywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqLCBjb25zdCBXZWJT
dHJpbmcmIGRhdGFEaXIpCit2b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpvcGVuKGNvbnN0IFdlYlN0
cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywg
Y29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJp
bmcmIGRhdGFEaXIpCiB7Ci0gICAgbV9pZGJGYWN0b3J5QmFja2VuZC0+b3BlbihuYW1lLCBJREJD
YWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLmdldCgpLCBvcmlnaW4s
IDAsIGRhdGFEaXIpOworICAgIG1faWRiRmFjdG9yeUJhY2tlbmQtPm9wZW4obmFtZSwgdmVyc2lv
biwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKS5nZXQoKSwg
b3JpZ2luLCAwLCBkYXRhRGlyKTsKIH0KIAogdm9pZCBXZWJJREJGYWN0b3J5SW1wbDo6ZGVsZXRl
RGF0YWJhc2UoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNr
cywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqLCBjb25zdCBXZWJT
dHJpbmcmIGRhdGFEaXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJGYWN0b3J5SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFj
dG9yeUltcGwuaAppbmRleCBiM2U0NzRkZjkyNTVlODc3ZjJmZjZkMGU2MzEwMzU1NjI0NmQxNzE5
Li5jY2NmYWFlM2U3MWIxMWYxMmI5ODRjOGEyMzY0ZjNkZmRmNDBiYTdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmgKQEAgLTQ1LDcgKzQ1LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYklEQkZhY3RvcnlJbXBsKCk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1
cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKTsKLSAgICB2
aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyos
IGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRh
dGFEaXIpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgaW50
NjRfdCB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYs
IFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlRGF0YWJhc2UoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqLCBj
b25zdCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRh
RGlyKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcAppbmRleCBmNTNhZDUwZDFkNjc4YmUyNjQxMGVk
ODQwZTNmN2E1MmE3NzY4NzFhLi5mYzMwZjNlMzNlODc0ZWY5ZDNhN2I0OGU1YWIzYWU3NjJkNDMy
YTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25D
b3JydXB0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9y
dE9uQ29ycnVwdFRlc3QuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmFpbGluZ0JhY2tpbmdTdG9yZSk7CiAgICAgfQotICAg
IHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGludDY0X3QmKQorICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFz
ZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGludDY0X3QsIGludDY0X3Qm
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTEwMCw3ICsxMDAsOCBA
QCBURVNUKElEQkFib3J0VGVzdCwgVGhlVGVzdCkKICAgICBjb25zdCBTdHJpbmcmIG5hbWUgPSAi
ZGIgbmFtZSI7CiAgICAgTW9ja0lEQkNhbGxiYWNrcyBjYWxsYmFja3M7CiAgICAgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKCJodHRwIiwgImxv
Y2FsaG9zdCIsIDgxKTsKLSAgICBmYWN0b3J5LT5vcGVuKG5hbWUsICZjYWxsYmFja3MsIG9yaWdp
biwgMCAvKkZyYW1lKi8sIFN0cmluZygpIC8qcGF0aCovKTsKKyAgICBjb25zdCBpbnQ2NF90IGtW
ZXJzaW9uID0gMjsKKyAgICBmYWN0b3J5LT5vcGVuKG5hbWUsIGtWZXJzaW9uLCAmY2FsbGJhY2tz
LCBvcmlnaW4sIDAgLypGcmFtZSovLCBTdHJpbmcoKSAvKnBhdGgqLyk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VC
YWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tp
bmdTdG9yZS5oCmluZGV4IGVkODk0Y2IxOWZlMWQxNWFiOTlkZDU2MWQ3NjJkM2YyNDQ4YWY5YTAu
LmQ4ZmM3ODM3Y2ZmY2VjNjcyMjQyOTU5NmVlM2NkNzNjYzg1ZGQxNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCkBAIC0zMyw4
ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIElEQkZha2VCYWNraW5nU3RvcmUg
OiBwdWJsaWMgSURCQmFja2luZ1N0b3JlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
RGF0YWJhc2VOYW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcykgT1ZFUlJJREUgeyB9Ci0g
ICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1l
LCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCkgT1ZFUlJJREUgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgaW50NjRfdCYgcm93SWQp
IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJh
c2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRWZXJzaW9uLCBpbnQ2
NF90JiBmb3VuZEludFZlcnNpb24sIGludDY0X3QmIGZvdW5kSWQpIE9WRVJSSURFIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGNvbnN0IGludDY0X3QgaW50
VmVyc2lvbiwgaW50NjRfdCYgcm93SWQpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2
aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YShpbnQ2NF90IHJvd0lkLCBjb25z
dCBTdHJpbmcmIHZlcnNpb24pIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSkgT1ZFUlJJREUgeyByZXR1
cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdhZGUxNzZmN2IyOTAyNzJiOGJlOTA1ZmRjODk0NzU2ZTI2
ODgyNTguLjRiNjQzMjQ1NjJhYzgzYWFhNzg3MzYzNTBhMjI2OTI3NWFhODkzNzYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1OCBAQAorMjAxMi0wNy0xMSAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBpbXBsZW1lbnQgdXBncmFkZW5lZWRlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1MDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGlu
Zm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVh
c2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2Fib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2Fib3J0LWluLWlu
aXRpYWwtdXBncmFkZW5lZWRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0aC12ZXJzaW9uLWluaXRpYWwtdmVyc2lvbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0aC12ZXJz
aW9uLWluaXRpYWwtdmVyc2lvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi13aXRoLWRlbGV0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0aC12ZXJzaW9uLXdpdGgtZGVsZXRl
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0aC12ZXJz
aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9h
Ym9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6
CisgICAgICAgIChkZWxldGVTdWNjZXNzKToKKyAgICAgICAgKHVwZ3JhZGVOZWVkZWQpOgorICAg
ICAgICAob25BYm9ydCk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29w
ZW4td2l0aC12ZXJzaW9uLWluaXRpYWwtdmVyc2lvbi5qczogQWRkZWQuCisgICAgICAgICh0ZXN0
KToKKyAgICAgICAgKGRlbGV0ZVN1Y2Nlc3MucmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQpOgorICAg
ICAgICAoZGVsZXRlU3VjY2Vzcyk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLXdpdGgtZGVsZXRl
LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoZGVsZXRlU3VjY2Vzcy5yZXF1
ZXN0Lm9udXBncmFkZW5lZWRlZC5yZXF1ZXN0Mi5vbnN1Y2Nlc3MpOgorICAgICAgICAoZGVsZXRl
U3VjY2Vzcy5yZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCk6CisgICAgICAgIChkZWxldGVTdWNjZXNz
KToKKyAgICAgICAgKG9wZW5TdWNjZXNzLmRiLm9udmVyc2lvbmNoYW5nZSk6CisgICAgICAgIChv
cGVuU3VjY2Vzcyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4t
d2l0aC12ZXJzaW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoZGVsZXRl
U3VjY2Vzcyk6CisgICAgICAgICh1cGdyYWRlTmVlZGVkLnRyYW5zYWN0aW9uLm9uY29tcGxldGUp
OgorICAgICAgICAodXBncmFkZU5lZWRlZCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldHZlcnNpb24tZGlzYWJsZXMtb251
cGdyYWRlbmVlZGVkLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoZGVsZXRl
U3VjY2Vzcy5yZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCk6CisgICAgICAgIChkZWxldGVTdWNjZXNz
KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNhbGxTZXRWZXJzaW9uRXhwbGlj
aXRseSk6CisgICAgICAgIChpblNldFZlcnNpb24pOgorICAgICAgICAoc2V0VmVyc2lvbkRvbmUp
OgorICAgICAgICAoc2Vjb25kT3BlbkRvbmUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9zaGFyZWQuanM6CisgICAgICAgICh1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNr
KToKKyAgICAgICAgKHVuZXhwZWN0ZWRVcGdyYWRlTmVlZGVkQ2FsbGJhY2spOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3NldHZlcnNpb24tZGlzYWJsZXMtb251cGdyYWRlbmVlZGVkLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvc2V0dmVyc2lv
bi1kaXNhYmxlcy1vbnVwZ3JhZGVuZWVkZWQuaHRtbDogQWRkZWQuCisKIDIwMTItMDctMTEgIENo
cmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBBUklBIHNwaW5i
dXR0b24gcm9sZSBpbmNvcnJlY3RseSBtYXBwZWQgdG8gUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9hYm9ydC1pbi1pbml0aWFs
LXVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41OTE2MzZlY2U3MGI2YzMxMzUzNzVhMDVkODFjMzA3ZmZlMGYzN2IyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvYWJvcnQtaW4taW5pdGlhbC11cGdy
YWRlbmVlZGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0IHRoYXQgYW4gYWJv
cnQgaW4gdGhlIGluaXRpYWwgdXBncmFkZW5lZWRlZCBzZXRzIHZlcnNpb24gYmFjayB0byAwCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWRE
QiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1z
SW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNl
KGRibmFtZSkKK2luZGV4ZWREQi5vcGVuKGRibmFtZSkKK0ZBSUwgU3VjY2VzcyBmdW5jdGlvbiBj
YWxsZWQgdW5leHBlY3RlZGx5LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2Fib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjJlZDQwNjJlNTg2ZGFmNmQ1MDY5MjdjMGRkNDIyYzY4ZDQyMjZkYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Fib3J0LWluLWluaXRpYWwtdXBn
cmFkZW5lZWRlZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Fib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRl
ZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0aC12ZXJzaW9uLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0aC12ZXJzaW9uLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jOTZkYjk3NWFjY2JhOGY0ODFjN2U3MTFkN2E5M2E2NzYzNDY1
NzdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Bl
bi13aXRoLXZlcnNpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDUgQEAKK1Rlc3QgdGhhdCBz
cGVjaWZ5aW5nIGEgdmVyc2lvbiB3aGVuIG9wZW5pbmcgYSBub24tZXhpc3RlbnQgZGIgY2F1c2Vz
IGFuIHVwZ3JhZGVuZWVkZWQgZXZlbnQgYW5kIHRoYXQgdGhlIHZlcnNpb24gbnVtYmVyIGlzIHNl
dCBjb3JyZWN0bHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIg
PSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4
ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworaW5kZXhlZERC
LmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKK1Nob3VsZCB0cmlnZ2VyOgorNC4xLjQ6IElmIG5vIGRh
dGFiYXNlIHdpdGggdGhlIGdpdmVuIG5hbWUgZnJvbSB0aGUgb3JpZ2luIG9yaWdpbiB3YXMgZm91
bmQsIG9yIGlmIGl0IHdhcyBkZWxldGVkIGR1cmluZyB0aGUgcHJldmlvdXMgc3RlcCwgdGhlbiBj
cmVhdGUgYSBkYXRhYmFzZSB3aXRoIG5hbWUgbmFtZSwgd2l0aCAwIGFzIHZlcnNpb24sIGFuZCB3
aXRoIG5vIG9iamVjdCBzdG9yZXMuIExldCBkYiBiZSB0aGUgbmV3IGRhdGFiYXNlLgorNC4xLjY6
IENyZWF0ZSBhIG5ldyBjb25uZWN0aW9uIHRvIGRiIGFuZCBsZXQgY29ubmVjdGlvbiByZXByZXNl
bnQgaXQuCis0LjEuNzogSWYgdGhlIHZlcnNpb24gb2YgZGIgaXMgbG93ZXIgdGhhbiB2ZXJzaW9u
LCB0aGVuIHJ1biB0aGUgc3RlcHMgZm9yIHJ1bm5pbmcgYSAidmVyc2lvbmNoYW5nZSIgdHJhbnNh
Y3Rpb24gdXNpbmcgY29ubmVjdGlvbiwgdmVyc2lvbiwgcmVxdWVzdCBhbmQgdXBncmFkZSBjYWxs
YmFjay4KKzQuMS45OiBSZXR1cm4gY29ubmVjdGlvbi4KK3JlcXVlc3QgPSBpbmRleGVkREIub3Bl
bihkYm5hbWUsIDcpCitQQVNTIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkocmVxdWVz
dCkgaXMgIltvYmplY3QgSURCT3BlbkRCUmVxdWVzdF0iCisKK1BBU1MgSW4gdGhlIHVwZ3JhZGVu
ZWVkZWQgZXZlbnQgaGFuZGVyOgorVGVzdCA0LjguOS4xOgorZGIgPSBldmVudC50YXJnZXQucmVz
dWx0CitQQVNTIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkoZGIpIGlzICJbb2JqZWN0
IElEQkRhdGFiYXNlXSIKK1Rlc3QgNC44LjkuMzoKK1BBU1MgZXZlbnQub2xkVmVyc2lvbiBpcyAw
CitQQVNTIGV2ZW50Lm5ld1ZlcnNpb24gaXMgNworUEFTUyBldmVudC50YXJnZXQucmVhZHlTdGF0
ZSBpcyAiZG9uZSIKK1Rlc3QgNC4xLjQ6CitQQVNTIGRiLm5hbWUgaXMgZGJuYW1lCitQQVNTIGRi
LnZlcnNpb24gaXMgNworUEFTUyBkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAwCit0cmFu
c2FjdGlvbiA9IGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbgorUEFTUyBPYmplY3QucHJvdG90eXBl
LnRvU3RyaW5nLmFwcGx5KHRyYW5zYWN0aW9uKSBpcyAiW29iamVjdCBJREJUcmFuc2FjdGlvbl0i
CitvcyA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzb21lT1MiKQorc2F3VHJhbnNhY3Rpb25Db21w
bGV0ZSA9IHRydWUKKworb3BlblN1Y2Nlc3MoKToKK1Rlc3QgNC4xLjcsIHRoYXQgYSB2ZXJzaW9u
Y2hhbmdlIHRyYW5zYWN0aW9uIHdhcyBydW4uCitQQVNTIHNhd1VwZ3JhZGVOZWVkZWQgaXMgdHJ1
ZQorUEFTUyBzYXdUcmFuc2FjdGlvbkNvbXBsZXRlIGlzIHRydWUKK2RiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdAorS2luZCBvZiB0ZXN0IDQuMS45OgorUEFTUyBPYmplY3QucHJvdG90eXBlLnRvU3Ry
aW5nLmFwcGx5KGRiKSBpcyAiW29iamVjdCBJREJEYXRhYmFzZV0iCitQQVNTIGRiLnZlcnNpb24g
aXMgNworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0aC12ZXJz
aW9uLWluaXRpYWwtdmVyc2lvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi1pbml0aWFsLXZlcnNpb24tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQxODAwNTExMDFlMjU5Njc4Yjc5NjRhMDRiNDFlNTM4NDgxNmE4NTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVy
c2lvbi1pbml0aWFsLXZlcnNpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1Rlc3Qg
dGhhdCBpbml0aWFsIHZlcnNpb24gYWZ0ZXIgYSBzdWNjZXNzZnVsIG9wZW4gb2YgYSBub24tZXhp
c3RlbnQgZGIgaXMgMQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERC
ID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRl
eGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWRE
Qi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3BlbihkYm5hbWUpCisKK29wZW5T
dWNjZXNzKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1Rlc3QgbGluZSBmcm9tIElEQkZh
Y3Rvcnkub3BlbjogSWYgbm8gdmVyc2lvbiBpcyBzcGVjaWZpZWQgYW5kIG5vIGRhdGFiYXNlIGV4
aXN0cywgc2V0IGRhdGFiYXNlIHZlcnNpb24gdG8gMS4KK0ZBSUwgZGIudmVyc2lvbiBzaG91bGQg
YmUgMSAob2YgdHlwZSBudW1iZXIpLiBXYXMgIChvZiB0eXBlIHN0cmluZykuCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24taW5pdGlhbC12ZXJz
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lv
bi1pbml0aWFsLXZlcnNpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNWJkZTgzNmJiOWI5NzE0MWY2N2Jh
YmIwNGM2MjViM2U1M2M5ZTViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24taW5pdGlhbC12ZXJzaW9uLmh0bWwKQEAgLTAs
MCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvb3Blbi13aXRoLXZlcnNpb24taW5pdGlhbC12ZXJzaW9uLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24td2l0aC1kZWxldGUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24td2l0aC1kZWxldGUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiNjRjODgxZjk2MTVhN2I2YTI4OGViZjk0MTRjNDkx
MjE3ZTE1MWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9vcGVuLXdpdGgtdmVyc2lvbi13aXRoLWRlbGV0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
OCBAQAorVGVzdCB0aGF0IGEgZGVsZXRlRGF0YWJhc2UgY2FsbGVkIGR1cmluZyBhbiBvcGVuV2l0
aFZlcnNpb24gaXMgcXVldWVkIGFuZCBmaXJlcyBpdHMgZXZlbnRzIGF0IHRoZSByaWdodCB0aW1l
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4
ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxm
Lm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworaW5kZXhlZERCLmRlbGV0ZURhdGFi
YXNlKGRibmFtZSkKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUpCisKK3JlcXVlc3Qu
b25zdWNjZXNzKCk6CitGQUlMIHNhd1VwZ3JhZGVOZWVkZWQgc2hvdWxkIGJlIHRydWUuIFdhcyBm
YWxzZS4KK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorRkFJTCBkYi52ZXJzaW9uIHNob3VsZCBi
ZSAxIChvZiB0eXBlIG51bWJlcikuIFdhcyAgKG9mIHR5cGUgc3RyaW5nKS4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi13aXRoLWRlbGV0ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24td2l0
aC1kZWxldGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjUyNjA0ZDljMDI1YjY2MGI4YTBiNjM2YzY4M2Qw
ZDAxM2RlNmEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvb3Blbi13aXRoLXZlcnNpb24td2l0aC1kZWxldGUuaHRtbApAQCAtMCwwICsxLDEwIEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcGVuLXdp
dGgtdmVyc2lvbi13aXRoLWRlbGV0ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0
aC12ZXJzaW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgt
dmVyc2lvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiYTZmMGI3MmJmYjY1NmY0MDE4ZTk1ODhjNDI3OTRh
MWEwZDRhYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9vcGVuLXdpdGgtdmVyc2lvbi5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2Fib3J0LWluLWluaXRpYWwtdXBncmFk
ZW5lZWRlZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9hYm9y
dC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDkxOWUxNTYwNzZhMmU0
ZDM5YTE4NjQ3ZDI1NTZjY2VlNGUzY2FlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVk
ZWQuanMKQEAgLTAsMCArMSw0MiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGlt
cG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7
CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IHRoYXQgYW4gYWJvcnQgaW4gdGhlIGluaXRpYWwgdXBncmFkZW5lZWRlZCBzZXRzIHZlcnNpb24g
YmFjayB0byAwIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7CisgICAgZGJuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMSAr
IHNlbGYubG9jYXRpb24ucGF0aG5hbWUubGFzdEluZGV4T2YoIi8iKSk7CisKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoZXZ0
KSB7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKGRibmFtZSkiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAg
cmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSB1cGdyYWRlTmVlZGVkOworfQorCitmdW5jdGlvbiB1
cGdyYWRlTmVlZGVkKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICB2YXIgZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0OworICAgIHZhciB0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC50cmFu
c2FjdGlvbjsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRl
Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IG9uQWJvcnQ7CisgICAgdHJhbnNh
Y3Rpb24uYWJvcnQoKTsKK30KKworZnVuY3Rpb24gb25BYm9ydChldnQpCit7CisgICAgZXZlbnQg
PSBldnQ7CisgICAgZGVidWcoIk5vdGU6IHRoaXMgaXMgY3VycmVudGx5IHN0aWxsIGJlaW5nIGRp
c2N1c3NlZCBvbiBwdWJsaWMtd2ViYXBwcy4iKTsKKyAgICBzaG91bGRCZVRydWUoImV2ZW50LnRh
cmdldC5kYi52ZXJzaW9uID09IDAiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29w
ZW4td2l0aC12ZXJzaW9uLWluaXRpYWwtdmVyc2lvbi5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1pbml0aWFsLXZlcnNpb24uanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmU3ZDBmM2U4M2VhMTMxNTc0NjBhYTAxOTM4MjQ0NTYzZjdlOTU4ZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9v
cGVuLXdpdGgtdmVyc2lvbi1pbml0aWFsLXZlcnNpb24uanMKQEAgLTAsMCArMSwzOCBAQAoraWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVk
LmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgaW5pdGlhbCB2ZXJzaW9uIGFmdGVy
IGEgc3VjY2Vzc2Z1bCBvcGVuIG9mIGEgbm9uLWV4aXN0ZW50IGRiIGlzIDEiKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5hbWUgPSBz
ZWxmLmxvY2F0aW9uLnBhdGhuYW1lLnN1YnN0cmluZygxICsgc2VsZi5sb2NhdGlvbi5wYXRobmFt
ZS5sYXN0SW5kZXhPZigiLyIpKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVs
ZXRlU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gZGVsZXRlU3VjY2VzcyhldnQpIHsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbigpIHsKKyAgICAg
IHRlc3RQYXNzZWQoIkdvdCB1cGdyYWRlbmVlZGVkIGV2ZW50Iik7CisgICAgfQorfQorCitmdW5j
dGlvbiBvcGVuU3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZGVidWcoIlRlc3QgbGluZSBmcm9tIElEQkZh
Y3Rvcnkub3BlbjogSWYgbm8gdmVyc2lvbiBpcyBzcGVjaWZpZWQgYW5kIG5vIGRhdGFiYXNlIGV4
aXN0cywgc2V0IGRhdGFiYXNlIHZlcnNpb24gdG8gMS4iKTsKKyAgICBzaG91bGRCZSgnZGIudmVy
c2lvbicsICcxJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVy
c2lvbi13aXRoLWRlbGV0ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi13aXRoLWRlbGV0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzU4YWIy
ZGRkMDgwOWFmMjkxMjE5Mzc0MmVjOGZiYzI5YTdkYzRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLXdp
dGgtZGVsZXRlLmpzCkBAIC0wLDAgKzEsNjIgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsK
KyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlv
bigiVGVzdCB0aGF0IGEgZGVsZXRlRGF0YWJhc2UgY2FsbGVkIGR1cmluZyBhbiBvcGVuV2l0aFZl
cnNpb24gaXMgcXVldWVkIGFuZCBmaXJlcyBpdHMgZXZlbnRzIGF0IHRoZSByaWdodCB0aW1lIik7
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAg
ZGJuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMSArIHNlbGYubG9jYXRp
b24ucGF0aG5hbWUubGFzdEluZGV4T2YoIi8iKSk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK3ZhciBzYXdVcGdyYWRlTmVlZGVkID0gZmFsc2U7CitmdW5jdGlv
biBkZWxldGVTdWNjZXNzKGV2dCkgeworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVk
REIub3BlbihkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1
ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKCkgeworICAgICAgZGVidWcoIiIpOworICAg
ICAgZGVidWcoInJlcXVlc3Qub251cGdyYWRlbmVlZGVkKCk6Iik7CisgICAgICBldmFsQW5kTG9n
KCJzYXdVcGdyYWRlTmVlZGVkID0gdHJ1ZSIpOworICAgICAgcmVxdWVzdDIgPSBldmFsQW5kTG9n
KCJkZWxldGVSZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAg
ICAgIHJlcXVlc3QyLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgZGVidWcoIiIp
OworICAgICAgICBkZWJ1ZygiZGVsZXRlUmVxdWVzdC5vbnN1Y2Nlc3MoKToiKTsKKyAgICAgICAg
c2hvdWxkQmVUcnVlKCJzYXdWZXJzaW9uQ2hhbmdlIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgfQorICAgICAgcmVxdWVzdDIub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgICAgcmVxdWVzdDIub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFj
azsKKyAgICB9Cit9CisKK3Nhd1ZlcnNpb25DaGFuZ2UgPSBmYWxzZTsKK2Z1bmN0aW9uIG9wZW5T
dWNjZXNzKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoInJlcXVlc3Qub25zdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmVUcnVlKCJzYXdVcGdyYWRl
TmVlZGVkIik7CisgICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Cisg
ICAgZGIub252ZXJzaW9uY2hhbmdlID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgICBldmVudCA9IGV2
dDsKKyAgICAgIGRlYnVnKCIiKTsKKyAgICAgIGRlYnVnKCJkYi5vbnZlcnNpb25jaGFuZ2UoKToi
KTsKKyAgICAgIHNob3VsZEJlKCJldmVudC5vbGRWZXJzaW9uIiwgIjEiKTsKKyAgICAgIHNob3Vs
ZEJlTnVsbCgiZXZlbnQubmV3VmVyc2lvbiIpOworICAgICAgZXZhbEFuZExvZygic2F3VmVyc2lv
bkNoYW5nZSA9IHRydWUiKTsKKyAgICAgIGRiLmNsb3NlKCk7CisgICAgfQorICAgIHNob3VsZEJl
KCdkYi52ZXJzaW9uJywgJzEnKTsKKyAgICBpZiAoZGIudmVyc2lvbiAhPT0gMSkgeworICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgfQorfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24uanMgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24u
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODg5ZWQzOTI2ZmE5YjUyNDQ0YTczZTZmYTU1MjcyYzU5NDAwNDg1ZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9vcGVuLXdpdGgtdmVyc2lvbi5qcwpAQCAtMCwwICsxLDc2IEBACitpZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKwor
ZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBzcGVjaWZ5aW5nIGEgdmVyc2lvbiB3aGVuIG9wZW5pbmcg
YSBub24tZXhpc3RlbnQgZGIgY2F1c2VzIGFuIHVwZ3JhZGVuZWVkZWQgZXZlbnQgYW5kIHRoYXQg
dGhlIHZlcnNpb24gbnVtYmVyIGlzIHNldCBjb3JyZWN0bHkuIik7CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgZGJuYW1lID0gc2VsZi5sb2Nh
dGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMSArIHNlbGYubG9jYXRpb24ucGF0aG5hbWUubGFzdElu
ZGV4T2YoIi8iKSk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0
ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1Y2Nl
c3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoZXZ0KSB7CisgICAgZGVidWcoIlNob3VsZCB0cmlnZ2Vy
OiIpOworICAgIGRlYnVnKCI0LjEuNDogSWYgbm8gZGF0YWJhc2Ugd2l0aCB0aGUgZ2l2ZW4gbmFt
ZSBmcm9tIHRoZSBvcmlnaW4gb3JpZ2luIHdhcyBmb3VuZCwgb3IgaWYgaXQgd2FzIGRlbGV0ZWQg
ZHVyaW5nIHRoZSBwcmV2aW91cyBzdGVwLCB0aGVuIGNyZWF0ZSBhIGRhdGFiYXNlIHdpdGggbmFt
ZSBuYW1lLCB3aXRoIDAgYXMgdmVyc2lvbiwgYW5kIHdpdGggbm8gb2JqZWN0IHN0b3Jlcy4gTGV0
IGRiIGJlIHRoZSBuZXcgZGF0YWJhc2UuIik7CisgICAgZGVidWcoIjQuMS42OiBDcmVhdGUgYSBu
ZXcgY29ubmVjdGlvbiB0byBkYiBhbmQgbGV0IGNvbm5lY3Rpb24gcmVwcmVzZW50IGl0LiIpOwor
ICAgIGRlYnVnKCI0LjEuNzogSWYgdGhlIHZlcnNpb24gb2YgZGIgaXMgbG93ZXIgdGhhbiB2ZXJz
aW9uLCB0aGVuIHJ1biB0aGUgc3RlcHMgZm9yIHJ1bm5pbmcgYSBcInZlcnNpb25jaGFuZ2VcIiB0
cmFuc2FjdGlvbiB1c2luZyBjb25uZWN0aW9uLCB2ZXJzaW9uLCByZXF1ZXN0IGFuZCB1cGdyYWRl
IGNhbGxiYWNrLiIpOworICAgIGRlYnVnKCI0LjEuOTogUmV0dXJuIGNvbm5lY3Rpb24uIik7CisK
KyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCA3KSIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBs
eShyZXF1ZXN0KSIsICJbb2JqZWN0IElEQk9wZW5EQlJlcXVlc3RdIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHVw
Z3JhZGVOZWVkZWQ7CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENh
bGxiYWNrOworICAgIGRlYnVnKCIiKTsKK30KKwordmFyIHNhd1VwZ3JhZGVOZWVkZWQgPSBmYWxz
ZTsKK3ZhciBzYXdUcmFuc2FjdGlvbkNvbXBsZXRlID0gZmFsc2U7CitmdW5jdGlvbiB1cGdyYWRl
TmVlZGVkKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICB0ZXN0UGFzc2VkKCJJbiB0aGUg
dXBncmFkZW5lZWRlZCBldmVudCBoYW5kZXI6Iik7CisgICAgZGVidWcoIlRlc3QgNC44LjkuMToi
KTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkoZGIpIiwg
IltvYmplY3QgSURCRGF0YWJhc2VdIik7CisgICAgZGVidWcoIlRlc3QgNC44LjkuMzoiKTsKKyAg
ICBzaG91bGRCZSgiZXZlbnQub2xkVmVyc2lvbiIsICIwIik7CisgICAgc2hvdWxkQmUoImV2ZW50
Lm5ld1ZlcnNpb24iLCAiNyIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFy
Z2V0LnJlYWR5U3RhdGUiLCAiZG9uZSIpOworICAgIGRlYnVnKCJUZXN0IDQuMS40OiIpOworICAg
IHNob3VsZEJlKCJkYi5uYW1lIiwgImRibmFtZSIpOworICAgIHNob3VsZEJlKCJkYi52ZXJzaW9u
IiwgIjciKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIp
OworCisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQudHJhbnNhY3Rp
b24iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk9iamVjdC5wcm90b3R5cGUudG9TdHJp
bmcuYXBwbHkodHJhbnNhY3Rpb24pIiwgIltvYmplY3QgSURCVHJhbnNhY3Rpb25dIik7CisgICAg
ZXZhbEFuZExvZygnb3MgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgic29tZU9TIiknKTsKKyAgICB0
cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNh
Y3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgIGV2YWxBbmRMb2coInNhd1Ry
YW5zYWN0aW9uQ29tcGxldGUgPSB0cnVlIik7CisgICAgfQorICAgIHNhd1VwZ3JhZGVOZWVkZWQg
PSB0cnVlOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBl
dnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIGRl
YnVnKCJUZXN0IDQuMS43LCB0aGF0IGEgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB3YXMgcnVu
LiIpOworICAgIHNob3VsZEJlKCJzYXdVcGdyYWRlTmVlZGVkIiwgInRydWUiKTsKKyAgICBzaG91
bGRCZVRydWUoInNhd1RyYW5zYWN0aW9uQ29tcGxldGUiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGRlYnVnKCJLaW5kIG9mIHRlc3QgNC4x
Ljk6Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3Ry
aW5nLmFwcGx5KGRiKSIsICJbb2JqZWN0IElEQkRhdGFiYXNlXSIpOworICAgIHNob3VsZEJlKCdk
Yi52ZXJzaW9uJywgIjciKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldHZlcnNp
b24tZGlzYWJsZXMtb251cGdyYWRlbmVlZGVkLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL3NldHZlcnNpb24tZGlzYWJsZXMtb251cGdyYWRlbmVlZGVkLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg1OWZlMjNkYjIyYzExYmUzMTE3ZmExZTY5NGZhNmFiMGFhYWQyZmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0
dmVyc2lvbi1kaXNhYmxlcy1vbnVwZ3JhZGVuZWVkZWQuanMKQEAgLTAsMCArMSw3NSBAQAoraWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVk
LmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgc2V0VmVyc2lvbiBjYW4gYmUgY2Fs
bGVkIGV4cGxpY2l0bHkgYW5kIHRoYXQgbGF0ZXIgdmVyc2lvbiBwYXJhbWV0ZXJzIHRvIG9wZW4g
YXJlIGlnbm9yZWQuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7CisgICAgZGJuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmco
MSArIHNlbGYubG9jYXRpb24ucGF0aG5hbWUubGFzdEluZGV4T2YoIi8iKSk7CisKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3Mo
ZXZ0KSB7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKGRibmFtZSki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub251cGdyYWRlbmVl
ZGVkID0gZnVuY3Rpb24oKSB7CisgICAgICB0ZXN0UGFzc2VkKCJHb3QgdXBncmFkZW5lZWRlZCBl
dmVudCIpOworICAgIH0KK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIGV2
ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsK
KyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNo
b3VsZEJlVHJ1ZSgnZGIudmVyc2lvbiA9PSAiMSInKTsKKyAgICBjYWxsU2V0VmVyc2lvbkV4cGxp
Y2l0bHkoKTsKK30KK2Z1bmN0aW9uIGNhbGxTZXRWZXJzaW9uRXhwbGljaXRseSgpIHsKKyAgICBl
dmFsQW5kTG9nKCdyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigic29tZSB2ZXJzaW9uIiknKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhw
ZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGluU2V0VmVyc2lvbihldnQpCit7
CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoImluU2V0VmVyc2lvbigpOiIpOworICAgIHRy
YW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gc2V0VmVy
c2lvbkRvbmU7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgIGRiID0gdHJhbnMuZGI7CisgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3NvbWUgb2JqZWN0IHN0b3JlJykiKTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkRvbmUoZXZ0
KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRiID0gZXZlbnQudGFyZ2V0LmRiOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJzb21lIHZlcnNpb24iKTsKKyAgICBl
dmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJTaG91
bGQgaWdub3JlIHRoZSB2ZXJzaW9uIHBhcmFtZXRlciBvbmNlIHNldFZlcnNpb24gaGFzIGJlZW4g
Y2FsbGVkIGV4cGxpY2l0bHk6Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKGRibmFtZSwgNSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNlY29uZE9wZW5E
b25lOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gdW5leHBlY3RlZFVwZ3JhZGVOZWVkZWRDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gc2Vjb25kT3BlbkRvbmUoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52ZXJzaW9u
IiwgInNvbWUgdmVyc2lvbiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVk
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcwpp
bmRleCBkMDMwOWY3N2VkNGQyMDdlOWViOTIwYThmMjY3YTc3NWRmZDM5NjM5Li5hMDZmNWFmNDAw
Y2Y4OTMwYTY2MDdkZTc5Y2VlZmMxYTAwMTc4Yzg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMKQEAgLTcxLDYgKzcxLDEyIEBAIGZ1
bmN0aW9uIHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2soKQogICAgIGZpbmlzaEpTVGVzdCgpOwog
fQogCitmdW5jdGlvbiB1bmV4cGVjdGVkVXBncmFkZU5lZWRlZENhbGxiYWNrKCkKK3sKKyAgICB0
ZXN0RmFpbGVkKCJvbnVwZ3JhZGVuZWVkZWQgY2FsbGVkIHVuZXhwZWN0ZWRseSIpOworICAgIGZp
bmlzaEpTVGVzdCgpOworfQorCiBmdW5jdGlvbiBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKGNtZCwg
ZXhjZXB0aW9uQ29kZSwgZXhjZXB0aW9uTmFtZSkKIHsKICAgICBkZWJ1ZygiRXhwZWN0aW5nIGV4
Y2VwdGlvbiBmcm9tICIgKyBjbWQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvc2V0dmVyc2lvbi1kaXNhYmxlcy1vbnVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0dmVyc2lvbi1kaXNhYmxlcy1vbnVw
Z3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0ODVhNDNiOWU3ZTIwYmYyMTU2
ZTRiZDI2YzkyNzA4ZTFlNDZlYmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9zZXR2ZXJzaW9uLWRpc2FibGVzLW9udXBncmFkZW5lZWRlZC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwyNiBAQAorVGVzdCB0aGF0IHNldFZlcnNpb24gY2FuIGJlIGNhbGxl
ZCBleHBsaWNpdGx5IGFuZCB0aGF0IGxhdGVyIHZlcnNpb24gcGFyYW1ldGVycyB0byBvcGVuIGFy
ZSBpZ25vcmVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0g
c2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVk
REIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWREQi5k
ZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3BlbihkYm5hbWUpCisKK29wZW5TdWNj
ZXNzKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK0ZBSUwgZGIudmVyc2lvbiA9PSAiMSIg
c2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCJzb21l
IHZlcnNpb24iKQoraW5TZXRWZXJzaW9uKCk6CitkYi5jcmVhdGVPYmplY3RTdG9yZSgnc29tZSBv
YmplY3Qgc3RvcmUnKQorUEFTUyBkYi52ZXJzaW9uIGlzICJzb21lIHZlcnNpb24iCitkYi5jbG9z
ZSgpCisKK1Nob3VsZCBpZ25vcmUgdGhlIHZlcnNpb24gcGFyYW1ldGVyIG9uY2Ugc2V0VmVyc2lv
biBoYXMgYmVlbiBjYWxsZWQgZXhwbGljaXRseToKK2luZGV4ZWREQi5vcGVuKGRibmFtZSwgNSkK
K0ZBSUwgb251cGdyYWRlbmVlZGVkIGNhbGxlZCB1bmV4cGVjdGVkbHkKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXR2ZXJzaW9uLWRpc2FibGVzLW9udXBncmFkZW5lZWRl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0dmVyc2lvbi1kaXNhYmxl
cy1vbnVwZ3JhZGVuZWVkZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDZjYTZlYTQyOTEzMWM2MTI5NjRk
ODU3ZDYzMWViMGVkNjgyYWJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvc2V0dmVyc2lvbi1kaXNhYmxlcy1vbnVwZ3JhZGVuZWVkZWQuaHRtbApAQCAt
MCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zZXR2ZXJzaW9uLWRpc2FibGVzLW9udXBncmFkZW5lZWRlZC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153643</attachid>
            <date>2012-07-20 20:18:19 -0700</date>
            <delta_ts>2012-07-20 23:26:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89505-20120720201814.patch</filename>
            <type>text/plain</type>
            <size>118917</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDc4YTlmNjY3YWRkMTMwZTYzZTNj
MDc0NmQ0YTcwM2I0ODk1NDZiZDcuLjUyNzkwMzQyZGQ3NDQ4MDllY2YzNDMwMTliMzliYzFiMWVi
MzMxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJh
Y2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJh
Y2tpbmdTdG9yZS5oCkBAIC00Nyw4ICs0Nyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJC
YWNraW5nU3RvcmUoKSB7fTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFZl
Y3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGdldElEQkRh
dGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwg
aW50NjRfdCYgZm91bmRJZCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFz
ZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2
NF90JiByb3dJZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRh
KGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiBmb3VuZFN0cmluZ1ZlcnNpb24sIGludDY0X3Qm
IGZvdW5kSW50VmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCkgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBzdHJpbmdWZXJzaW9uLCBjb25zdCBpbnQ2NF90IGludFZlcnNpb24sIGludDY0X3QmIHJv
d0lkKSA9IDA7CisgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbihp
bnQ2NF90IHJvd0lkLCBpbnQ2NF90IGludFZlcnNpb24pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YShpbnQ2NF90IHJv
d0lkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRl
RGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKaW5kZXggMGIzNGI2ODg2ZDVlMWFhNDNk
MTk1M2Y5YWQ4MDNhMWUyYTcyODkyNC4uNWVmZDg0YzI4MTVhMWRjMzlhNTM0NGYyMjY4MDA3MzNk
MzEyOTlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2Fs
bGJhY2tzLmgKQEAgLTU5LDcgKzU5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktl
eT4sIGNvbnN0IElEQktleVBhdGgmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dp
dGhDb250aW51YXRpb24oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVm
ZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJl
ZlB0cjxJREJLZXk+ID4mIHByaW1hcnlLZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG9uQmxvY2tl
ZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNp
b24pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25VcGdyYWRl
TmVlZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRl
eCAyZjljODkzMmUwYmVkMDAzYzk4M2E1MTYxODNkMzNiM2M0NDVkY2JhLi4wODVhMzM1NWNkOGJh
ZDhmN2NhYmJhM2E0NTNjMzBmY2RhOWYxODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC0xMTEsNiArMTExLDE0IEBAIFBhc3NS
ZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25z
dAogICAgIHJldHVybiBvYmplY3RTdG9yZU5hbWVzLnJlbGVhc2UoKTsKIH0KIAorUGFzc1JlZlB0
cjxJREJBbnk+IElEQkRhdGFiYXNlOjp2ZXJzaW9uKCkgY29uc3QKK3sKKyAgICBpbnQ2NF90IGlu
dFZlcnNpb24gPSBtX21ldGFkYXRhLmludFZlcnNpb247CisgICAgaWYgKGludFZlcnNpb24gPiAw
KQorICAgICAgICByZXR1cm4gSURCQW55OjpjcmVhdGUoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpu
dW1iZXJWYWx1ZShpbnRWZXJzaW9uKSk7CisgICAgcmV0dXJuIElEQkFueTo6Y3JlYXRlU3RyaW5n
KG1fbWV0YWRhdGEudmVyc2lvbik7Cit9CisKIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElE
QkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IERp
Y3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghbV92ZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24pIHsKQEAgLTIwMCw2ICsyMDgsNyBAQCBQYXNzUmVmUHRyPElE
QlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBJREJEYXRhYmFzZTo6c2V0VmVyc2lvbihTY3JpcHRFeGVj
dXRpb25Db250ZQogICAgIH0KIAogICAgIFJlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4g
cmVxdWVzdCA9IElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55
OjpjcmVhdGUodGhpcyksIHZlcnNpb24pOworICAgIEFTU0VSVChtX2JhY2tlbmQpOwogICAgIG1f
YmFja2VuZC0+c2V0VmVyc2lvbih2ZXJzaW9uLCByZXF1ZXN0LCBtX2RhdGFiYXNlQ2FsbGJhY2tz
LCBlYyk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CkBAIC0zMDYsNiArMzE1LDcgQEAgdm9pZCBJ
REJEYXRhYmFzZTo6b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIAogdm9p
ZCBJREJEYXRhYmFzZTo6cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcygpCiB7CisgICAgQVNTRVJU
KG1fYmFja2VuZCk7CiAgICAgbV9iYWNrZW5kLT5yZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKG1f
ZGF0YWJhc2VDYWxsYmFja3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuaAppbmRleCBhMjQ4Y2Q4MGRlYjgzN2EzYjE1YmRhYTM4ZDFkZjEz
MGVkM2EzMWFhLi42NGNiYjMyNmE1ODgzZGNmMzk0NzNjYWExMDk3MjkwNWYzZmU2NzVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogCiAgICAgLy8gSW1wbGVtZW50IHRoZSBJREwKICAgICBjb25z
dCBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEubmFtZTsgfQotICAgIGNv
bnN0IFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS52ZXJzaW9uOyB9
CisgICAgUGFzc1JlZlB0cjxJREJBbnk+IHZlcnNpb24oKSBjb25zdDsKICAgICBQYXNzUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAogICAgIC8vIEZJWE1F
OiBUcnkgdG8gbW9kaWZ5IHRoZSBjb2RlIGdlbmVyYXRvciBzbyB0aGlzIGlzIHVubmVlZGVkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaWRsCmlu
ZGV4IDk1ZjZjMjM2MGNkMGVkY2JkMzlmNDA4NjZiNmRkZjhjMmMyZDUzYzYuLmQyNTNlNGRmN2Ey
YzI2MzY3NzA4YTE4MGE4NzZhZWMzMWRkMjUyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGwKQEAgLTMyLDcgKzMyLDcgQEAgbW9kdWxl
IHN0b3JhZ2UgewogICAgICAgICBFdmVudFRhcmdldAogICAgIF0gSURCRGF0YWJhc2UgewogICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7Ci0gICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgdmVyc2lvbjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IElEQkFueSB2ZXJzaW9uOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nTGlz
dCBvYmplY3RTdG9yZU5hbWVzOwogCiAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
YWJvcnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDc0N2JkNzNhMzNmZTJiYzQ5OWViNGZk
ZjY5NmIyN2YwNDRiYWU3N2EuLjE0YjYwYThiOWZhZTAzYTk5YzRkMjY0NDNkNDQzYzI0Y2E2MmQy
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC00NywxMiArNDcsMzMgQEAgcHVibGljOgog
ICAgIH0KICAgICBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKCkgeyByZXR1cm4g
bV9jYWxsYmFja3M7IH0KIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBQZW5kaW5nT3BlbkNh
bGwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICAgICAgOiBtX2NhbGxi
YWNrcyhjYWxsYmFja3MpCiAgICAgewogICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWZQdHI8SURC
Q2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKK307CisKK2NsYXNzIElEQkRhdGFiYXNlQmFja2VuZElt
cGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsIDogcHVibGljIFJlZkNvdW50ZWQ8UGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGw+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQ
ZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwoY2FsbGJhY2tzLCB2ZXJzaW9uKSk7
CisgICAgfQorICAgIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7IHJldHVy
biBtX2NhbGxiYWNrczsgfQorICAgIGludDY0X3QgdmVyc2lvbigpIHsgcmV0dXJuIG1fdmVyc2lv
bjsgfQorCitwcml2YXRlOgorICAgIFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikKKyAgICAgICAgOiBt
X2NhbGxiYWNrcyhjYWxsYmFja3MpCisgICAgICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCisgICAg
eworICAgIH0KICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKKyAgICBpbnQ2
NF90IG1fdmVyc2lvbjsKIH07CiAKIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRp
bmdEZWxldGVDYWxsIDogcHVibGljIFJlZkNvdW50ZWQ8UGVuZGluZ0RlbGV0ZUNhbGw+IHsKQEAg
LTEwNiw2ICsxMjcsNyBAQCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tl
bmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0bwogICAgICwgbV9pZChJbnZh
bGlkSWQpCiAgICAgLCBtX25hbWUobmFtZSkKICAgICAsIG1fdmVyc2lvbigiIikKKyAgICAsIG1f
aW50VmVyc2lvbigwKQogICAgICwgbV9pZGVudGlmaWVyKHVuaXF1ZUlkZW50aWZpZXIpCiAgICAg
LCBtX2ZhY3RvcnkoZmFjdG9yeSkKICAgICAsIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihjb29y
ZGluYXRvcikKQEAgLTExNiwxMyArMTM4LDEzIEBAIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OklE
QkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvCiAK
IGJvb2wgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkludGVybmFsKCkKIHsKLSAgICBib29s
IHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShtX25hbWUs
IG1fdmVyc2lvbiwgbV9pZCk7CisgICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmdl
dElEQkRhdGFiYXNlTWV0YURhdGEobV9uYW1lLCBtX3ZlcnNpb24sIG1faW50VmVyc2lvbiwgbV9p
ZCk7CiAgICAgQVNTRVJUKHN1Y2Nlc3MgPT0gKG1faWQgIT0gSW52YWxpZElkKSk7CiAgICAgaWYg
KHN1Y2Nlc3MpIHsKICAgICAgICAgbG9hZE9iamVjdFN0b3JlcygpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9Ci0gICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlLT5jcmVhdGVJREJEYXRhYmFz
ZU1ldGFEYXRhKG1fbmFtZSwgbV92ZXJzaW9uLCBtX2lkKTsKKyAgICByZXR1cm4gbV9iYWNraW5n
U3RvcmUtPmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEobV9uYW1lLCBtX3ZlcnNpb24sIG1faW50
VmVyc2lvbiwgbV9pZCk7CiB9CiAKIElEQkRhdGFiYXNlQmFja2VuZEltcGw6On5JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsKCkKQEAgLTEzNiw3ICsxNTgsNyBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdT
dG9yZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6YmFja2luZ1N0b3JlKCkgY29uc3QKIAogSURC
RGF0YWJhc2VNZXRhZGF0YSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0
CiB7Ci0gICAgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YShtX25hbWUsIG1fdmVyc2lvbiwg
SURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKTsKKyAgICBJREJEYXRhYmFzZU1ldGFk
YXRhIG1ldGFkYXRhKG1fbmFtZSwgbV92ZXJzaW9uLCBtX2ludFZlcnNpb24pOwogICAgIGZvciAo
T2JqZWN0U3RvcmVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9vYmplY3RTdG9yZXMuYmVnaW4o
KTsgaXQgIT0gbV9vYmplY3RTdG9yZXMuZW5kKCk7ICsraXQpCiAgICAgICAgIG1ldGFkYXRhLm9i
amVjdFN0b3Jlcy5zZXQoaXQtPmZpcnN0LCBpdC0+c2Vjb25kLT5tZXRhZGF0YSgpKTsKICAgICBy
ZXR1cm4gbWV0YWRhdGE7CkBAIC0yMTAsNiArMjMyLDggQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJD
YWwKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUiwgIkNvbm5lY3Rpb24gd2FzIGNsb3Nl
ZCBiZWZvcmUgc2V0IHZlcnNpb24gdHJhbnNhY3Rpb24gd2FzIGNyZWF0ZWQiKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CisgICAgaWYgKG1faW50VmVyc2lvbiA+IDApCisgICAgICAgIGNhbGxi
YWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OlVOS05PV05fRVJSLCBTdHJpbmc6OmZvcm1hdCgiWW91IGNhbid0IHVzZSB0aGUgc2V0VmVy
c2lvbiBmdW5jdGlvbiBpZiB5b3UndmUgYWxyZWFkeSBzZXQgdGhlIHZlcnNpb24gdGhyb3VnaCBh
biBvcGVuIGNhbGwuICBUaGUgY3VycmVudCBpbnRlZ2VyIHZlcnNpb24gaXMgJWxkIiwgbV9pbnRW
ZXJzaW9uKSkpOwogICAgIGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2Fs
bGJhY2tzU2V0LmVuZCgpOyArK2l0KSB7CiAgICAgICAgIGlmICgqaXQgIT0gZGF0YWJhc2VDYWxs
YmFja3MpCiAgICAgICAgICAgICAoKml0KS0+b25WZXJzaW9uQ2hhbmdlKHZlcnNpb24pOwpAQCAt
MjUyLDYgKzI3NiwxOSBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb25J
bnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZgogICAgIGNhbGxiYWNrcy0+
b25TdWNjZXNzKHRyYW5zYWN0aW9uKTsKIH0KIAordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpzZXRJbnRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UsIGludDY0X3QgdmVyc2lvbiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKQoreworICAgIGludDY0X3QgZGF0YWJhc2VJ
ZCA9IGRhdGFiYXNlLT5pZCgpOworICAgIGludDY0X3Qgb2xkVmVyc2lvbiA9IGRhdGFiYXNlLT5t
X2ludFZlcnNpb247CisgICAgZGF0YWJhc2UtPm1faW50VmVyc2lvbiA9IHZlcnNpb247CisgICAg
aWYgKCFkYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPnVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lv
bihkYXRhYmFzZUlkLCBkYXRhYmFzZS0+bV9pbnRWZXJzaW9uKSkgeworICAgICAgICBjYWxsYmFj
a3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpVTktOT1dOX0VSUiwgIkVycm9yIHdyaXRpbmcgZGF0YSB0byBzdGFibGUgc3RvcmFnZS4iKSk7
CisgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGNhbGxiYWNrcy0+b25VcGdyYWRlTmVlZGVkKG9sZFZlcnNpb24sIHRyYW5zYWN0aW9uLCBk
YXRhYmFzZSk7Cit9CisKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25T
dGFydGVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBwcnBUcmFu
c2FjdGlvbikKIHsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0
cmFuc2FjdGlvbiA9IHBycFRyYW5zYWN0aW9uOwpAQCAtMjY5LDYgKzMwNiwxMyBAQCB2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmluaXNoZWQoUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbgogICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5z
YWN0aW9uOjpWRVJTSU9OX0NIQU5HRSkgewogICAgICAgICBBU1NFUlQodHJhbnNhY3Rpb24uZ2V0
KCkgPT0gbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLmdldCgpKTsKICAgICAgICAg
bV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLmNsZWFyKCk7CisgICAgfQorfQorCit2
b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmluaXNoZWRBbmRFdmVudHNG
aXJlZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gcHJwVHJhbnNh
Y3Rpb24pCit7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJh
bnNhY3Rpb24gPSBwcnBUcmFuc2FjdGlvbjsKKyAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9
PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpIHsKICAgICAgICAgcHJvY2Vzc1BlbmRp
bmdDYWxscygpOwogICAgIH0KIH0KQEAgLTMxOCw2ICszNjIsMTMgQEAgdm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKICAgICBpZiAobV9ydW5uaW5nVmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0
eSgpIHx8ICFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAorICAgIERlcXVlPFJlZlB0cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4gPiBwZW5kaW5n
T3BlbldpdGhWZXJzaW9uQ2FsbHM7CisgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMu
c3dhcChwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMpOworICAgIHdoaWxlICghcGVuZGluZ09w
ZW5XaXRoVmVyc2lvbkNhbGxzLmlzRW1wdHkoKSkgeworICAgICAgUmVmUHRyPFBlbmRpbmdPcGVu
V2l0aFZlcnNpb25DYWxsPiBwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCA9IHBlbmRpbmdPcGVu
V2l0aFZlcnNpb25DYWxscy50YWtlRmlyc3QoKTsKKyAgICAgIG9wZW5Db25uZWN0aW9uV2l0aFZl
cnNpb24ocGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPmNhbGxiYWNrcygpLCBwZW5kaW5nT3Bl
bldpdGhWZXJzaW9uQ2FsbC0+dmVyc2lvbigpKTsKKyAgICB9CisKICAgICAvLyBHaXZlbiB0aGUg
Y2hlY2sgYWJvdmUsIGl0IGFwcGVhcnMgdGhhdCBjYWxscyBjYW5ub3QgYmUgcmVxdWV1ZWQgYnkK
ICAgICAvLyBvcGVuQ29ubmVjdGlvbiwgYnV0IHVzZSBhIGRpZmZlcmVudCBxdWV1ZSBmb3IgaXRl
cmF0aW9uIHRvIGJlIHNhZmUuCiAgICAgRGVxdWU8UmVmUHRyPFBlbmRpbmdPcGVuQ2FsbD4gPiBw
ZW5kaW5nT3BlbkNhbGxzOwpAQCAtMzY2LDYgKzQxNyw3MSBAQCB2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6Om9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCiAgICAgfQogfQogCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNp
b25DaGFuZ2VUcmFuc2FjdGlvbihpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MpCit7CisgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOworICAgIEFTU0VSVChjYWxsYmFja3MpOworICAgIGZv
ciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUNh
bGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVuZCgpOyAr
K2l0KSB7CisgICAgICAgIC8vIFRoZSBmcm9udGVuZCB0YWtlcyBjYXJlIG9mIHRoZSBmb2xsb3dp
bmcgY2xhdXNlLCB0aGUgYmFja2VuZCBqdXN0CisgICAgICAgIC8vIGZpcmVzIHZlcnNpb24gY2hh
bmdlIGF0IGFsbCB0aGUgY29ubmVjdGlvbnMsIHRoZSBmcm9udGVuZCB3aWxsIG5vdAorICAgICAg
ICAvLyBkZWxpdmVyIHRvIGNvbm5lY3Rpb25zIHdpdGggY2xvc2VQZW5kaW5nIHNldC4KKyAgICAg
ICAgLy8gIlRoZSBldmVudCBtdXN0IG5vdCBiZSBmaXJlZCBvbiBvYmplY3RzIHdoaWNoIGhhcyB0
aGUgY2xvc2VQZW5kaW5nCisgICAgICAgIC8vIGZsYWcgc2V0LiIKKyAgICAgICAgKCppdCktPm9u
VmVyc2lvbkNoYW5nZShtX2ludFZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24pOworICAgIH0KKyAg
ICAvLyBUaGUgc3BlYyBkaWN0YXRlcyB3ZSB3YWl0IHVudGlsIGFsbCB0aGUgdmVyc2lvbiBjaGFu
Z2UgZXZlbnRzIGFyZQorICAgIC8vIGRlbGl2ZXJlZCBhbmQgdGhlbiBjaGVjayBtX2RhdGFiYXNl
Q2FsbGJhY2tzLmVtcHR5KCkgYmVmb3JlIHByb2NlZWRpbmcKKyAgICAvLyBvciBmaXJpbmcgYSBi
bG9ja2VkIGV2ZW50LCBidXQgaW5zdGVhZCB3ZSBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIGhv
dworICAgIC8vIHRoZSBvbGQgc2V0VmVyc2lvbiAoaW5jb3JyZWN0bHkpIGRpZCBpdDoKKyAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAKKyAgICBpZiAo
Y29ubmVjdGlvbkNvdW50KCkgPiAwKQorICAgICAgICBjYWxsYmFja3MtPm9uQmxvY2tlZChtX2lu
dFZlcnNpb24pOworICAgIC8vIEZpZ3VyZSBvdXQgaG93IHRvIHRlc3QgbV9ydW5uaW5nVmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uLgorICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24gfHwgY29ubmVjdGlvbkNvdW50KCkgPiAwKSB7CisgICAgICAgIC8vIEl0J3MgYWxyZWFk
eSBxdWV1ZWQuCisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlPiB0cmFuc2FjdGlvbiA9IHRoaXMtPnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZXMuZ2V0
KCksIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSwgZWMpOworICAgIEFTU0VSVCghZWMp
OworCisgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlID0gdGhpczsK
KyAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRJbnRWZXJzaW9uSW50ZXJuYWwsIGRhdGFiYXNlLCBy
ZXF1ZXN0ZWRWZXJzaW9uLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpyZXNldFZlcnNpb24sIGRhdGFiYXNlLCBtX3ZlcnNpb24pKSkgeworICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAg
fQorfQorCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZl
cnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgaW50NjRfdCB2ZXJz
aW9uKQoreworICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNr
czsKKyAgICBpZiAoIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSB8fCBtX3J1bm5pbmdW
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgIW1fcGVuZGluZ1NldFZlcnNpb25DYWxscy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKFBl
bmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCB2ZXJzaW9uKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1faWQgPT0gSW52YWxpZElkKSB7CisgICAg
ICAgIGlmIChvcGVuSW50ZXJuYWwoKSkKKyAgICAgICAgICAgIEFTU0VSVCghbV9pbnRWZXJzaW9u
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIklu
dGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
KyAgICBpZiAodmVyc2lvbiA+IG1faW50VmVyc2lvbikgeworICAgICAgICBtX3BlbmRpbmdPcGVu
V2l0aFZlcnNpb25DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0
ZShjYWxsYmFja3MsIHZlcnNpb24pKTsKKyAgICAgICAgcnVuSW50VmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uKHZlcnNpb24sIGNhbGxiYWNrcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aWYgKHZlcnNpb24gPCBtX2ludFZlcnNpb24pIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9y
KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VkVSX0VSUiwg
U3RyaW5nOjpmb3JtYXQoIlRoZSByZXF1ZXN0ZWQgdmVyc2lvbiAoJWxkKSBpcyBsZXNzIHRoYW4g
dGhlIGV4aXN0aW5nIHZlcnNpb24gKCVsZCkuIiwgdmVyc2lvbiwgbV9pbnRWZXJzaW9uKSkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVCh2ZXJzaW9uID09IG1faW50VmVyc2lv
bik7CisgICAgKyttX3BlbmRpbmdDb25uZWN0aW9uQ291bnQ7CisgICAgY2FsbGJhY2tzLT5vblN1
Y2Nlc3ModGhpcyk7Cit9CisKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0
YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcykKIHsKICAgICBpZiAo
bV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9u
Q2FsbHMuaXNFbXB0eSgpKSB7CkBAIC0zODYsMTIgKzUwMiwxNCBAQCB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmRlbGV0ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBD
YWxsYmFjawogICAgICAgICBjYWxsYmFja3MtPm9uQmxvY2tlZCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQorICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAgaWYgKCFtX2JhY2tpbmdT
dG9yZS0+ZGVsZXRlRGF0YWJhc2UobV9uYW1lKSkgewogICAgICAgICBjYWxsYmFja3MtPm9uRXJy
b3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dO
X0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBt
X3ZlcnNpb24gPSAiIjsKICAgICBtX2lkID0gSW52YWxpZElkOworICAgIG1faW50VmVyc2lvbiA9
IDA7CiAgICAgbV9vYmplY3RTdG9yZXMuY2xlYXIoKTsKICAgICBjYWxsYmFja3MtPm9uU3VjY2Vz
cyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpKTsKIH0KQEAgLTQwNCwxMiArNTIy
LDE0IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UoUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzCiAgICAgaWYgKGNvbm5lY3Rpb25Db3VudCgp
ID4gMSkKICAgICAgICAgcmV0dXJuOwogCisgICAgVHJhbnNhY3Rpb25TZXQgdHJhbnNhY3Rpb25z
KG1fdHJhbnNhY3Rpb25zKTsKICAgICBwcm9jZXNzUGVuZGluZ0NhbGxzKCk7CiAKLSAgICBpZiAo
IWNvbm5lY3Rpb25Db3VudCgpKSB7Ci0gICAgICAgIFRyYW5zYWN0aW9uU2V0IHRyYW5zYWN0aW9u
cyhtX3RyYW5zYWN0aW9ucyk7CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLnNpemUoKSAtIHRy
YW5zYWN0aW9ucy5zaXplKCkgPD0gMSk7CisgICAgaWYgKCFjb25uZWN0aW9uQ291bnQoKSAmJiAh
bV9wZW5kaW5nRGVsZXRlQ2FsbHMuc2l6ZSgpICYmIG1fdHJhbnNhY3Rpb25zLnNpemUoKSA9PSB0
cmFuc2FjdGlvbnMuc2l6ZSgpKSB7CiAgICAgICAgIGZvciAoVHJhbnNhY3Rpb25TZXQ6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gdHJhbnNhY3Rpb25zLmJlZ2luKCk7IGl0ICE9IHRyYW5zYWN0aW9ucy5l
bmQoKTsgKytpdCkKICAgICAgICAgICAgICgqaXQpLT5hYm9ydCgpOworCiAgICAgICAgIEFTU0VS
VChtX3RyYW5zYWN0aW9ucy5pc0VtcHR5KCkpOwogCiAgICAgICAgIG1fYmFja2luZ1N0b3JlLmNs
ZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggMjFmNGY5M2MxYjNlYjFjNjk2YjMyOTRkY2Nl
NmIwOTE3YTJlYzViZC4uNDlhOWYwOWZkMjhiOTVlZmEwYjA2ZTJmOWNmYjAyOTMxMTlkNmI2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuaApAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4pOwogICAgIHZvaWQgb3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsK
KyAgICB2b2lkIG9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+LCBpbnQ2NF90IHZlcnNpb24pOwogICAgIHZvaWQgZGVsZXRlRGF0YWJhc2UoUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+KTsKIAogICAgIHZpcnR1YWwgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRh
ZGF0YSgpIGNvbnN0OwpAQCAtNzAsMTggKzcxLDIyIEBAIHB1YmxpYzoKICAgICBJREJUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yKiB0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgY29uc3QgeyByZXR1cm4g
bV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpOyB9CiAgICAgdm9pZCB0cmFuc2FjdGlvblN0
YXJ0ZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICB2
b2lkIHRyYW5zYWN0aW9uRmluaXNoZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+KTsKKyAgICB2b2lkIHRyYW5zYWN0aW9uRmluaXNoZWRBbmRFdmVudHNGaXJlZChQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwogCiBwcml2YXRlOgog
ICAgIElEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5n
U3RvcmUqIGRhdGFiYXNlLCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiwgSURCRmFjdG9yeUJh
Y2tlbmRJbXBsKiwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKTsKIAogICAgIGJvb2wg
b3BlbkludGVybmFsKCk7CisgICAgdm9pZCBydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24o
aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogICAg
IHZvaWQgbG9hZE9iamVjdFN0b3JlcygpOwogICAgIGludDMyX3QgY29ubmVjdGlvbkNvdW50KCk7
CiAgICAgdm9pZCBwcm9jZXNzUGVuZGluZ0NhbGxzKCk7CisgICAgc3RhdGljIHZvaWQgcHJvY2Vz
c1BlbmRpbmdUYXNrKHZvaWQqIGRiKTsKIAogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZU9iamVjdFN0
b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgc3RhdGljIHZv
aWQgZGVsZXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
KTsKICAgICBzdGF0aWMgdm9pZCBzZXRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4sIGNvbnN0IFN0cmluZyYg
dmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4pOworICAgIHN0YXRpYyB2b2lkIHNldEludFZlcnNpb25JbnRl
cm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tl
bmRJbXBsPiwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAKICAgICAvLyBUaGVzZSBh
cmUgdXNlZCBhcyBzZXRWZXJzaW9uIHRyYW5zYWN0aW9uIGFib3J0IHRhc2tzLgogICAgIHN0YXRp
YyB2b2lkIHJlbW92ZU9iamVjdFN0b3JlRnJvbU1hcChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsPik7CkBAIC05Miw2ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgaW50NjRf
dCBtX2lkOwogICAgIFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fdmVyc2lvbjsKKyAgICBp
bnQ2NF90IG1faW50VmVyc2lvbjsKIAogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgLy8g
VGhpcyBtaWdodCBub3QgbmVlZCB0byBiZSBhIFJlZlB0ciBzaW5jZSB0aGUgZmFjdG9yeSdzIGxp
ZmV0aW1lIGlzIHRoYXQgb2YgdGhlIHBhZ2UgZ3JvdXAsIGJ1dCBpdCdzIGJldHRlciB0byBiZSBj
b25zZXJ2aXRpdmUgdGhhbiBzb3JyeS4KQEAgLTExMiw2ICsxMTgsOSBAQCBwcml2YXRlOgogICAg
IGNsYXNzIFBlbmRpbmdPcGVuQ2FsbDsKICAgICBEZXF1ZTxSZWZQdHI8UGVuZGluZ09wZW5DYWxs
PiA+IG1fcGVuZGluZ09wZW5DYWxsczsKIAorICAgIGNsYXNzIFBlbmRpbmdPcGVuV2l0aFZlcnNp
b25DYWxsOworICAgIERlcXVlPFJlZlB0cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4gPiBt
X3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsczsKKwogICAgIGNsYXNzIFBlbmRpbmdEZWxldGVD
YWxsOwogICAgIERlcXVlPFJlZlB0cjxQZW5kaW5nRGVsZXRlQ2FsbD4gPiBtX3BlbmRpbmdEZWxl
dGVDYWxsczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmgKaW5kZXggYjNmMjQ0ZjUxNmI2OTg3ZWExMTljYmY3MDE5
YjdiNTQzNzVmMTJiZi4uMTZhOWVhNmM1MDhiMGQ5MmI2MWU0OTk3YzU0MzAxMzJhNmQyYWNhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VD
YWxsYmFja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUNhbGxiYWNrcy5oCkBAIC0zOCw2ICszOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5J
REJEYXRhYmFzZUNhbGxiYWNrcygpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNo
YW5nZShjb25zdCBTdHJpbmcmIHZlcnNpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25WZXJz
aW9uQ2hhbmdlKGludDY0X3QgY3VycmVudFZlcnNpb24sIGludDY0X3QgcmVxdWVzdGVkVmVyc2lv
bikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKaW5kZXggMTk0MTJmY2JlNTBhYjQ0YmY1M2RjMDFl
MDNkODg1M2UyOGY3YzVmZi4uMGM5MjJlNmEyMmVhZTc4MmMwNjk2NTNlODM5ODA5OTM1MTg2MjA5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCkBAIC01Miw2ICs1MiwxMiBAQCB2b2lkIElE
QkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVy
c2lvbikKICAgICAgICAgbV9kYXRhYmFzZS0+b25WZXJzaW9uQ2hhbmdlKHZlcnNpb24pOwogfQog
Cit2b2lkIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6b25WZXJzaW9uQ2hhbmdlKGludDY0X3Qg
Y3VycmVudFZlcnNpb24sIGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikKK3sKKy8vICAgIGlmICht
X2RhdGFiYXNlKQorLy8gICAgICAgIG1fZGF0YWJhc2UtPm9uVmVyc2lvbkNoYW5nZSh2ZXJzaW9u
KTsKK30KKwogdm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OnVucmVnaXN0ZXJEYXRhYmFz
ZShJREJEYXRhYmFzZSogZGF0YWJhc2UpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChkYXRhYmFzZSwg
ZGF0YWJhc2UgPT0gbV9kYXRhYmFzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCmluZGV4IGU4YjFm
OTliODM4YWY3YjkzN2Q5NGI3YWY4ZjdmN2RmYjgyYmU3ZmIuLjA4MGY1YmE4N2JmZDY4MjVjNTU1
ZmM4ZDVkMGY3Zjc2Njc0M2E0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCkBAIC00Miw2ICs0
Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9u
KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGludDY0X3QgY3VycmVudFZlcnNp
b24sIGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRGF0YWJh
c2UoSURCRGF0YWJhc2UqKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXggY2Y1MmNjMWZlMmIxMzU1YjZjNTRlZGNl
MjY1ZTBmM2U4YzNhNWU5MS4uNzJhZGFjZmQ0ZmQzOWZjMTdkYjJlYzkzM2M2ZDM1MTE5ZGQ3MWU0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFj
ZS5oIgogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCi0jaW5j
bHVkZSAiSURCUmVxdWVzdC5oIgorI2luY2x1ZGUgIklEQk9wZW5EQlJlcXVlc3QuaCIKICNpbmNs
dWRlICJJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJQYWdlR3JvdXAuaCIKQEAgLTEwNSw3ICsxMDUsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQkZhY3Rvcnk6OmdldERhdGFiYXNlTmFtZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udAogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
QkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVz
dD4gSURCRmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAg
ICAgaWYgKG5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgZWMgPSBOQVRJVkVfVFlQRV9FUlI7CkBA
IC0xMTQsMTEgKzExNCwxNiBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9w
ZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgUwogICAgIGlmICghaXND
b250ZXh0VmFsaWQoY29udGV4dCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPElE
QlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55Ojpj
cmVhdGUodGhpcyksIDApOwotICAgIG1fYmFja2VuZC0+b3BlbihuYW1lLCByZXF1ZXN0LCBjb250
ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBjb250ZXh0LCBnZXRJbmRleGVkREJEYXRhYmFzZVBhdGgo
Y29udGV4dCkpOworICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCT3Bl
bkRCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCB2ZXJzaW9u
KTsKKyAgICBtX2JhY2tlbmQtPm9wZW4obmFtZSwgdmVyc2lvbiwgcmVxdWVzdCwgY29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKSwgY29udGV4dCwgZ2V0SW5kZXhlZERCRGF0YWJhc2VQYXRoKGNvbnRl
eHQpKTsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAorUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1
ZXN0PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgcmV0dXJuIG9wZW4o
Y29udGV4dCwgbmFtZSwgLTIsIGVjKTsKK30KKwogUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdl
UmVxdWVzdD4gSURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBpZiAobmFtZS5pc051bGwoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeS5oCmluZGV4IDQ2MTFjYjZjNGZlODM5OTBiNDcyNGE0M2JmMDljOWE1YTk1
ZDg4OGQuLjM2NDViYjgxZGM3ZWU5NjY5MDVkYTY1MmMwNjRkYTczODZmNjUzZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKQEAgLTMwLDcgKzMw
LDcgQEAKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5
QmFja2VuZEludGVyZmFjZS5oIgotI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKKyNpbmNsdWRlICJJ
REJPcGVuREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC01OCw3
ICs1OCw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0RGF0YWJh
c2VOYW1lcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKLSAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwg
RXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gb3BlbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBvcGVuKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IGRlbGV0ZURh
dGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2Vw
dGlvbkNvZGUmKTsKIAogICAgIHNob3J0IGNtcChQYXNzUmVmUHRyPElEQktleT4gZmlyc3QsIFBh
c3NSZWZQdHI8SURCS2V5PiBzZWNvbmQsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGwKaW5kZXggMDM4OWViMmFhZTdl
MTI5OTU0ZDlhY2YwM2E1OWZmYmNjN2ZiYWFjYy4uYmY3MWEyZGQyNWQxZmY5NWUyNjQzNWY0ZTQx
ZjBjNDFiOTc2NzJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeS5pZGwKQEAgLTMwLDcgKzMwLDcgQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgIF0g
SURCRmFjdG9yeSB7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBJ
bXBsZW1lbnRlZEFzPWdldERhdGFiYXNlTmFtZXNdIElEQlJlcXVlc3Qgd2Via2l0R2V0RGF0YWJh
c2VOYW1lcygpOwogCi0gICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJ
REJSZXF1ZXN0IG9wZW4oaW4gRE9NU3RyaW5nIG5hbWUpCisgICAgICAgIFtDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0XSBJREJPcGVuREJSZXF1ZXN0IG9wZW4oaW4gRE9NU3RyaW5nIG5h
bWUsIGluIFtPcHRpb25hbF0gdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24pCiAgICAgICAgICAg
ICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAgICAgW0NhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRdIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IGRlbGV0ZURhdGFiYXNl
KGluIERPTVN0cmluZyBuYW1lKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2Vw
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAppbmRleCBkZmIxNDU3YTMwNmRhYTdhNTY4YzIxYWY2
ZWZhMzQ1NDZjZTNmZjQ2Li4xN2E5YzRkMmU4ZGQyMTI2YjdhMjUzOWZhMjEwYTQ1N2UxNzEwY2U0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkxldmVsREJCYWNraW5nU3RvcmUuaCIK
ICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1Vu
dXNlZFBhcmFtLmg+CiAKQEAgLTE0OSwzMiArMTUwLDMwIEBAIFBhc3NSZWZQdHI8SURCQmFja2lu
Z1N0b3JlPiBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5CYWNraW5nU3RvcmUoUGFzc1JlZlB0
cjxTCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVu
KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywg
UGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJwU2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXJlY3RvcnkpCit2b2lkIElEQkZhY3Rv
cnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gcHJwU2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIGRhdGFEaXJlY3RvcnkpCiB7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1
cml0eU9yaWdpbiA9IHBycFNlY3VyaXR5T3JpZ2luOwogICAgIGNvbnN0IFN0cmluZyB1bmlxdWVJ
ZGVudGlmaWVyID0gY29tcHV0ZVVuaXF1ZUlkZW50aWZpZXIobmFtZSwgc2VjdXJpdHlPcmlnaW4u
Z2V0KCkpOwogCisgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlQmFj
a2VuZDsKICAgICBJREJEYXRhYmFzZUJhY2tlbmRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kYXRhYmFz
ZUJhY2tlbmRNYXAuZmluZCh1bmlxdWVJZGVudGlmaWVyKTsKLSAgICBpZiAoaXQgIT0gbV9kYXRh
YmFzZUJhY2tlbmRNYXAuZW5kKCkpIHsKLSAgICAgICAgLy8gSWYgaXQncyBhbHJlYWR5IGJlZW4g
b3BlbmVkLCB3ZSBoYXZlIHRvIHdhaXQgZm9yIGFueSBwZW5kaW5nCi0gICAgICAgIC8vIHNldFZl
cnNpb24gY2FsbHMgdG8gY29tcGxldGUuCi0gICAgICAgIGl0LT5zZWNvbmQtPm9wZW5Db25uZWN0
aW9uKGNhbGxiYWNrcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTog
RXZlcnl0aGluZyBmcm9tIG5vdyBvbiBzaG91bGQgYmUgZG9uZSBvbiBhbm90aGVyIHRocmVhZC4K
LSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBvcGVuQmFja2luZ1N0
b3JlKHNlY3VyaXR5T3JpZ2luLCBkYXRhRGlyZWN0b3J5KTsKLSAgICBpZiAoIWJhY2tpbmdTdG9y
ZSkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsPiBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFt
ZSwgYmFja2luZ1N0b3JlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCksIHRo
aXMsIHVuaXF1ZUlkZW50aWZpZXIpOwotICAgIGlmIChkYXRhYmFzZUJhY2tlbmQpIHsKLSAgICAg
ICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFj
a2VuZC5nZXQoKSk7Ci0gICAgICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbkNvbm5lY3Rpb24oY2Fs
bGJhY2tzKTsKKyAgICBpZiAoaXQgPT0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZW5kKCkpIHsKKyAg
ICAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gb3BlbkJhY2tpbmdT
dG9yZShzZWN1cml0eU9yaWdpbiwgZGF0YURpcmVjdG9yeSk7CisgICAgICAgIGlmICghYmFja2lu
Z1N0b3JlKSB7CisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVy
cm9yLiIpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBkYXRhYmFz
ZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFtZSwgYmFja2luZ1N0
b3JlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCksIHRoaXMsIHVuaXF1ZUlk
ZW50aWZpZXIpOworICAgICAgICBpZiAoZGF0YWJhc2VCYWNrZW5kKQorICAgICAgICAgICAgbV9k
YXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5n
ZXQoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJE
YXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAi
SW50ZXJuYWwgZXJyb3IuIikpOwogICAgIH0gZWxzZQotICAgICAgICBjYWxsYmFja3MtPm9uRXJy
b3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dO
X0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAgZGF0YWJhc2VCYWNrZW5kID0gaXQt
PnNlY29uZDsKKyAgICBpZiAodmVyc2lvbiA8IDApCisgICAgICAgIGRhdGFiYXNlQmFja2VuZC0+
b3BlbkNvbm5lY3Rpb24oY2FsbGJhY2tzKTsKKyAgICBlbHNlCisgICAgICAgIGRhdGFiYXNlQmFj
a2VuZC0+b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihjYWxsYmFja3MsIHZlcnNpb24pOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCmluZGV4IGNhMWQwNTI4MmE4
YzVlZGY3NjZkNWU1NTUwOGZhZTBhOWMwNDhjNjUuLmQyNmY3NDY4MzQyYWE2YTE4ZGZjZGU5YmYx
NzQzNjQyMjhlMTA2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjZGVm
aW5lIElEQkZhY3RvcnlCYWNrZW5kSW1wbF9oCiAKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2Vu
ZEludGVyZmFjZS5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTU3LDcg
KzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJREJCYWNraW5nU3RvcmUo
Y29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllcik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0
YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsK
LSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNv
bnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2Uo
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBk
YXRhRGlyKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggNDRm
NWM3ODZlZjIxZWE0NzE5ZjYzNjk0MjlmNzY3MzkwMDQwOTI5My4uNGVhNWQ4YTMzMGZkMDQxYWY1
MWNiMmE5NTQ0ZWE0OGFjZjY2NmZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oCkBAIC01
NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJGYWN0b3J5QmFja2VuZEludGVy
ZmFjZSgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNz
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0
cmluZyYgZGF0YURpcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYg
bmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5n
JiBkYXRhRGlyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0
cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikg
PSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRleCAzMmUyZjY4MTU3OTQwOWEwOTA4
ZDI5YTE4NzJjMGNkYzU2Yjg5ZWY5Li5hYjg0NWRhODk3NGFkNGM4YTg5ZjEzNjNlZmVhMDQxMTA5
NjI3OGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAtODcsNiArODcsMTIgQEAgc3RhdGlj
IGJvb2wgcHV0SW50KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5
LCBpbnQ2NF90IHZhbHVlKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9u
Pgorc3RhdGljIGJvb2wgcHV0VmFySW50KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3Rv
cjxjaGFyPiYga2V5LCBpbnQ2NF90IHZhbHVlKQoreworICAgIHJldHVybiBkYi0+cHV0KGtleSwg
ZW5jb2RlVmFySW50KHZhbHVlKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBEQk9yVHJhbnNh
Y3Rpb24+CiBzdGF0aWMgYm9vbCBnZXRTdHJpbmcoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3Qg
VmVjdG9yPGNoYXI+JiBrZXksIFN0cmluZyYgZm91bmRTdHJpbmcpCiB7CiAgICAgVmVjdG9yPGNo
YXI+IHJlc3VsdDsKQEAgLTEyOSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25z
dCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gImlkYl9jbXAxIjsgfQogfTsKIAotc3RhdGlj
IGJvb2wgc2V0VXBNZXRhZGF0YShMZXZlbERCRGF0YWJhc2UqIGRiKQorc3RhdGljIGJvb2wgc2V0
VXBNZXRhZGF0YShMZXZlbERCRGF0YWJhc2UqIGRiLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKIHsK
ICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbWV0YURhdGFLZXkgPSBTY2hlbWFWZXJzaW9uS2V5Ojpl
bmNvZGUoKTsKIApAQCAtMjA4LDcgKzIxNCw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3Jl
PiBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0CiAg
ICAgUmVmUHRyPElEQkxldmVsREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZShhZG9wdFJlZihu
ZXcgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZShmaWxlSWRlbnRpZmllciwgZmFjdG9yeSwgZGIucmVs
ZWFzZSgpKSkpOwogICAgIGJhY2tpbmdTdG9yZS0+bV9jb21wYXJhdG9yID0gY29tcGFyYXRvci5y
ZWxlYXNlKCk7CiAKLSAgICBpZiAoIXNldFVwTWV0YWRhdGEoYmFja2luZ1N0b3JlLT5tX2RiLmdl
dCgpKSkKKyAgICBpZiAoIXNldFVwTWV0YWRhdGEoYmFja2luZ1N0b3JlLT5tX2RiLmdldCgpLCBm
aWxlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZT4oKTsKIAogICAgIHJldHVybiBiYWNraW5nU3RvcmUucmVsZWFzZSgpOwpAQCAtMjM0LDcgKzI0
MCw3IEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0RGF0YWJhc2VOYW1lcyhWZWN0
b3I8U3RyaW5nPiYgZm91bmROYW1lcykKICAgICB9CiB9CiAKLWJvb2wgSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmlu
ZyYgZm91bmRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElkKQorYm9vbCBJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5n
JiBmb3VuZFN0cmluZ1ZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVyc2lvbiwgaW50NjRfdCYg
Zm91bmRJZCkKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5ID0gRGF0YWJhc2VOYW1lS2V5
OjplbmNvZGUobV9pZGVudGlmaWVyLCBuYW1lKTsKIApAQCAtMjQyLDcgKzI0OCwxMSBAQCBib29s
IElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3Ry
aW5nJiBuYW1lLCBTdHJpbmcmCiAgICAgaWYgKCFvaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgb2sgPSBnZXRTdHJpbmcobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5j
b2RlKGZvdW5kSWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgZm91bmRWZXJz
aW9uKTsKKyAgICBvayA9IGdldFN0cmluZyhtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5
OjplbmNvZGUoZm91bmRJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlclZlcnNpb24pLCBmb3Vu
ZFN0cmluZ1ZlcnNpb24pOworICAgIGlmICghb2spCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIG9rID0gZ2V0SW50KG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShm
b3VuZElkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VySW50VmVyc2lvbiksIGZvdW5kSW50VmVy
c2lvbik7CiAgICAgaWYgKCFvaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yNjQsNyAr
Mjc0LDcgQEAgc3RhdGljIGludDY0X3QgZ2V0TmV3RGF0YWJhc2VJZChMZXZlbERCRGF0YWJhc2Uq
IGRiKQogICAgIHJldHVybiBkYXRhYmFzZUlkOwogfQogCi1ib29sIElEQkxldmVsREJCYWNraW5n
U3RvcmU6OmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3QmIHJvd0lkKQorYm9vbCBJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBpbnQ2NF90IGludFZlcnNpb24sIGludDY0X3QmIHJv
d0lkKQogewogICAgIHJvd0lkID0gZ2V0TmV3RGF0YWJhc2VJZChtX2RiLmdldCgpKTsKICAgICBp
ZiAocm93SWQgPCAwKQpAQCAtMjc1LDYgKzI4NSwxNyBAQCBib29sIElEQkxldmVsREJCYWNraW5n
U3RvcmU6OmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFwdXRTdHJpbmcobV9kYi5nZXQoKSwg
RGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKHJvd0lkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpV
c2VyVmVyc2lvbiksIHZlcnNpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFw
dXRWYXJJbnQobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKHJvd0lkLCBE
YXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VySW50VmVyc2lvbiksIGludFZlcnNpb24pKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKGludDY0X3Qgcm93SWQsIGlu
dDY0X3QgaW50VmVyc2lvbikKK3sKKyAgICBBU1NFUlQobV9jdXJyZW50VHJhbnNhY3Rpb24pOwor
ICAgIGlmICghcHV0VmFySW50KG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBEYXRhYmFzZU1l
dGFEYXRhS2V5OjplbmNvZGUocm93SWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJJbnRWZXJz
aW9uKSwgaW50VmVyc2lvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0zMDUsNyArMzI2LDggQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpCiAKICAgICBpbnQ2NF90IGRhdGFi
YXNlSWQ7CiAgICAgU3RyaW5nIHZlcnNpb247Ci0gICAgaWYgKCFnZXRJREJEYXRhYmFzZU1ldGFE
YXRhKG5hbWUsIHZlcnNpb24sIGRhdGFiYXNlSWQpKSB7CisgICAgaW50NjRfdCBpbnRWZXJzaW9u
OworICAgIGlmICghZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShuYW1lLCB2ZXJzaW9uLCBpbnRWZXJz
aW9uLCBkYXRhYmFzZUlkKSkgewogICAgICAgICB0cmFuc2FjdGlvbi0+cm9sbGJhY2soKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGM1YTllMmVl
MzA5ZThjYTNmZDdmNzBmMGFhMmJiODBjZWMwNDZiMmUuLjliMzM1MzI0ODM1ZmQwOTU0NWRiY2Rj
NGE4YTEwYmM4MDVmZjNlMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKQEAgLTQ1LDkgKzQ1LDEwIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJMZXZlbERCQmFja2luZ1N0b3JlKCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcyk7
Ci0gICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBu
YW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCk7Ci0gICAgdmlydHVh
bCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3QmIHJvd0lkKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0
SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRWZXJz
aW9uLCBpbnQ2NF90JiBmb3VuZEludFZlcnNpb24sIGludDY0X3QmIGZvdW5kSWQpOworICAgIHZp
cnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBpbnQ2NF90IGludFZlcnNpb24sIGludDY0X3Qm
IHJvd0lkKTsKICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YShpbnQ2
NF90IHJvd0lkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOworICAgIHZpcnR1YWwgYm9vbCB1cGRh
dGVJREJEYXRhYmFzZUludFZlcnNpb24oaW50NjRfdCByb3dJZCwgaW50NjRfdCBpbnRWZXJzaW9u
KTsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBW
ZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVj
dG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0lu
Y3JlbWVudEZsYWdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkxldmVsREJDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkxldmVsREJDb2RpbmcuaAppbmRleCAzMTEzZTdkOGE5ODgyYmQ3ZDhlNzc5Y2FkYWE5N2Vk
ODIxYzVhOGU4Li4zZmNkYzQ2ZDM3MjM3ZGRiYzMxMDZjZDEwMWQxMzVlNDY3MjE4YjdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5n
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGlu
Zy5oCkBAIC0xNDAsNyArMTQwLDggQEAgcHVibGljOgogICAgICAgICBPcmlnaW5OYW1lID0gMCwK
ICAgICAgICAgRGF0YWJhc2VOYW1lID0gMSwKICAgICAgICAgVXNlclZlcnNpb24gPSAyLAotICAg
ICAgICBNYXhPYmplY3RTdG9yZUlkID0gMworICAgICAgICBNYXhPYmplY3RTdG9yZUlkID0gMywK
KyAgICAgICAgVXNlckludFZlcnNpb24gPSA0CiAgICAgfTsKIAogICAgIHN0YXRpYyBWZWN0b3I8
Y2hhcj4gZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgTWV0YURhdGFUeXBlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjk3YTcyYTBjYTJjNjQyMzJmYWI0ZmUwNGFiODg5MTkwNTAzODlkYgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5E
QlJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiSURCT3BlbkRCUmVxdWVzdC5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCisKKyNpbmNsdWRlICJJREJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIklEQlBlbmRpbmdU
cmFuc2FjdGlvbk1vbml0b3IuaCIKKyNpbmNsdWRlICJJREJVcGdyYWRlTmVlZGVkRXZlbnQuaCIK
KyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJPcGVuREJSZXF1ZXN0OjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNv
dXJjZSwgaW50NjRfdCB2ZXJzaW9uKQoreworICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBy
ZXF1ZXN0KGFkb3B0UmVmKG5ldyBJREJPcGVuREJSZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSwgdmVy
c2lvbikpKTsKKyAgICByZXF1ZXN0LT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gcmVx
dWVzdC5yZWxlYXNlKCk7Cit9CisKK0lEQk9wZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJlcXVlc3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJj
ZSwgaW50NjRfdCB2ZXJzaW9uKQorICAgIDogSURCUmVxdWVzdChjb250ZXh0LCBzb3VyY2UsIDAp
CisgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKK3sKKyAgICBBU1NFUlQoIW1fcmVzdWx0KTsKK30K
KworSURCT3BlbkRCUmVxdWVzdDo6fklEQk9wZW5EQlJlcXVlc3QoKQoreworfQorCitjb25zdCBB
dG9taWNTdHJpbmcmIElEQk9wZW5EQlJlcXVlc3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdAorewor
ICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9ySURCT3BlbkRCUmVxdWVzdDsKK30K
Kwordm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvbkJsb2NrZWQoaW50NjRfdCBvbGRWZXJzaW9uKQor
eworICAgIEFTU0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkgJiYg
IW1fcmVzdWx0KTsKKyAgICBlbnF1ZXVlRXZlbnQoSURCVXBncmFkZU5lZWRlZEV2ZW50OjpjcmVh
dGUob2xkVmVyc2lvbiwgbV92ZXJzaW9uLCBldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50KSk7Cit9
CisKK3ZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKGludDY0X3QgY3VycmVu
dFZlcnNpb24sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBwcnBU
cmFuc2FjdGlvbkJhY2tlbmQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
PiBwcnBEYXRhYmFzZUJhY2tlbmQpCit7CisgICAgQVNTRVJUKCFtX2Vycm9yQ29kZSk7CisgICAg
QVNTRVJUKG1fZXJyb3JNZXNzYWdlLmlzTnVsbCgpKTsKKyAgICBBU1NFUlQoIW1fZXJyb3IpOwor
Ly8gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9yZXN1bHQsICJpbiBvYmplY3QgJXAiLCB0aGlz
KTsKKyAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlPiBkYXRhYmFzZUJhY2tlbmQgPSBwcnBEYXRhYmFzZUJhY2tlbmQ7CisgICAgUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb25CYWNrZW5kID0gcHJwVHJh
bnNhY3Rpb25CYWNrZW5kOworICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UgPSBJ
REJEYXRhYmFzZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZGF0YWJhc2VCYWNr
ZW5kKTsKKworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gZnJvbnRlbmQgPSBJREJUcmFuc2Fj
dGlvbjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdHJhbnNhY3Rpb25CYWNrZW5k
LCBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UsIGlkYkRhdGFiYXNlLmdldCgpLCB0aGlz
KTsKKyAgICB0cmFuc2FjdGlvbkJhY2tlbmQtPnNldENhbGxiYWNrcyhmcm9udGVuZC5nZXQoKSk7
CisgICAgbV90cmFuc2FjdGlvbiA9IGZyb250ZW5kOworICAgIG1fcmVzdWx0ID0gSURCQW55Ojpj
cmVhdGUoaWRiRGF0YWJhc2UucmVsZWFzZSgpKTsKKworICAgIGVucXVldWVFdmVudChJREJVcGdy
YWRlTmVlZGVkRXZlbnQ6OmNyZWF0ZShjdXJyZW50VmVyc2lvbiwgbV92ZXJzaW9uLCBldmVudE5h
bWVzKCkudXBncmFkZW5lZWRlZEV2ZW50KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPcGVuREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
cGVuREJSZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWM1YjhiY2M2NzczMDM1YTQxNWNjOTRmMWEyNTNh
NGZiMTg0NTFkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBJREJPcGVuREJSZXF1ZXN0X2gKKyNkZWZpbmUgSURCT3BlbkRCUmVxdWVzdF9oCisKKyNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJPcGVuREJSZXF1ZXN0IDogcHVibGljIElEQlJl
cXVlc3QgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJj
ZSwgaW50NjRfdCB2ZXJzaW9uKTsKKyAgICB2aXJ0dWFsIH5JREJPcGVuREJSZXF1ZXN0KCk7CisK
KyAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKGludDY0X3QgZXhpc3RpbmdWZXJzaW9uKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgb25VcGdyYWRlTmVlZGVkKGludDY0X3Qgb2xkVmVyc2lv
biwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pIE9WRVJSSURFOworCisgICAgLy8gRXZlbnRU
YXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNv
bnN0OworCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihibG9ja2VkKTsKKyAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHVwZ3JhZGVuZWVkZWQpOworCitwcml2
YXRlOgorICAgIElEQk9wZW5EQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8SURCQW55PiBzb3VyY2UsIGludDY0X3QgdmVyc2lvbik7CisKKyAgICB2aXJ0dWFsIGJv
b2wgaXNPcGVuREJSZXF1ZXN0KCkgY29uc3QgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIGludDY0X3QgbV92ZXJzaW9uOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNl
bmRpZiAvLyBJREJPcGVuREJSZXF1ZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI2NmM3MzU5
YTBhNjVlNjk1YjA4NDVkZTVmNTM1ODNhNmNkODI5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaWRsCkBAIC0wLDAg
KzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCittb2R1bGUgc3RvcmFnZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAg
ICAgICBDb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFLAorICAgICAgICBBY3RpdmVET01PYmpl
Y3QsCisgICAgICAgIEV2ZW50VGFyZ2V0CisgICAgXSBJREJPcGVuREJSZXF1ZXN0IDogSURCUmVx
dWVzdCB7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYmxvY2tlZDsKKyAgICAg
ICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb251cGdyYWRlbmVlZGVkOworICAgIH07Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4
IDU0YWZlMDNhNmYyZWRkZGMyM2VlY2YwODUyMDViNWI1NzJjYTY4MWYuLjdlMjE1YTViNDYxMWYy
YzA3NjlhNDRmZDU1MjIyMGM3OThmYzc4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC01MywxNCArNTMsMTUgQEAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBJREJSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1IKIAogSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBJREJUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24pCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKKyAg
ICAsIG1fcmVzdWx0KDApCiAgICAgLCBtX2Vycm9yQ29kZSgwKQotICAgICwgbV9zb3VyY2Uoc291
cmNlKQorICAgICwgbV9jb250ZXh0U3RvcHBlZChmYWxzZSkKICAgICAsIG1fdHJhbnNhY3Rpb24o
dHJhbnNhY3Rpb24pCisgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAgLCBtX3JlYWR5U3RhdGUo
UEVORElORykKICAgICAsIG1fcmVxdWVzdEFib3J0ZWQoZmFsc2UpCiAgICAgLCBtX3JlcXVlc3RG
aW5pc2hlZChmYWxzZSkKICAgICAsIG1fY3Vyc29yRmluaXNoZWQoZmFsc2UpCi0gICAgLCBtX2Nv
bnRleHRTdG9wcGVkKGZhbHNlKQogICAgICwgbV9jdXJzb3JUeXBlKElEQkN1cnNvckJhY2tlbmRJ
bnRlcmZhY2U6OkludmFsaWRDdXJzb3JUeXBlKQogICAgICwgbV9jdXJzb3JEaXJlY3Rpb24oSURC
Q3Vyc29yOjpORVhUKQogICAgICwgbV9jdXJzb3IoMCkKQEAgLTI2MSwxNCArMjYyLDIwIEBAIHZv
aWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPiBiYWNrZW5kKQogICAgIElEQl9UUkFDRSgiSURCUmVxdWVzdDo6b25TdWNjZXNzKElE
QkRhdGFiYXNlKSIpOwogICAgIGlmIChtX3JlcXVlc3RBYm9ydGVkKQogICAgICAgICByZXR1cm47
Ci0gICAgQVNTRVJUKCFtX2Vycm9yQ29kZSAmJiBtX2Vycm9yTWVzc2FnZS5pc051bGwoKSAmJiAh
bV9lcnJvciAmJiAhbV9yZXN1bHQpOworICAgIEFTU0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJv
ck1lc3NhZ2UuaXNOdWxsKCkgJiYgIW1fZXJyb3IpOwogICAgIGlmIChtX2NvbnRleHRTdG9wcGVk
IHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
ZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UgPSBJREJEYXRhYmFzZTo6Y3JlYXRlKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgYmFja2VuZCk7Ci0gICAgaWRiRGF0YWJhc2UtPnJlZ2lzdGVy
RnJvbnRlbmRDYWxsYmFja3MoKTsKLQotICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVhdGUoaWRi
RGF0YWJhc2UucmVsZWFzZSgpKTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNl
OworICAgIGlmIChtX3Jlc3VsdCkgeworICAgICAgICBpZGJEYXRhYmFzZSA9IG1fcmVzdWx0LT5p
ZGJEYXRhYmFzZSgpOworICAgICAgICBBU1NFUlQoaWRiRGF0YWJhc2UpOworICAgICAgICBpZGJE
YXRhYmFzZS0+cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcygpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIGJhY2tlbmQpOworICAgICAgICBpZGJEYXRhYmFzZS0+cmVnaXN0ZXJGcm9udGVuZENh
bGxiYWNrcygpOworICAgICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGlkYkRhdGFiYXNl
LnJlbGVhc2UoKSk7CisgICAgfQogICAgIGVucXVldWVFdmVudChjcmVhdGVTdWNjZXNzRXZlbnQo
KSk7CiB9CiAKQEAgLTM5Miw3ICszOTksNyBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgQVNTRVJUKG1fZW5xdWV1ZWRFdmVudHMu
c2l6ZSgpKTsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NF
UlQoZXZlbnQtPnRhcmdldCgpID09IHRoaXMpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9y
ZWFkeVN0YXRlIDwgRE9ORSwgIm1fcmVhZHlTdGF0ZSA8IERPTkUoJWQpLCB3YXMgJWQiLCBET05F
LCBtX3JlYWR5U3RhdGUpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9yZWFkeVN0YXRlIDwg
RE9ORSB8fCBpc09wZW5EQlJlcXVlc3QoKSwgIldoZW4gZGlzcGF0Y2hpbmcgZXZlbnQgJXMsIG1f
cmVhZHlTdGF0ZSA8IERPTkUoJWQpLCB3YXMgJWQiLCBldmVudC0+dHlwZSgpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCksIERPTkUsIG1fcmVhZHlTdGF0ZSk7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkg
IT0gZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCkKICAgICAgICAgbV9yZWFkeVN0YXRlID0gRE9O
RTsKIApAQCAtNDIzLDE3ICs0MzAsMTggQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50
KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBXaGVuIHdl
IGFsbG93IGN1c3RvbSBldmVudCBkaXNwYXRjaGluZywgdGhpcyB3aWxsIHByb2JhYmx5IG5lZWQg
dG8gY2hhbmdlLgotICAgIEFTU0VSVChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWNj
ZXNzRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZXJyb3JFdmVudCB8fCBl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibG9ja2VkRXZlbnQpOwotICAgIGNvbnN0IGJv
b2wgc2V0VHJhbnNhY3Rpb25BY3RpdmUgPSBtX3RyYW5zYWN0aW9uICYmIChldmVudC0+dHlwZSgp
ID09IGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQgfHwgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmVycm9yRXZlbnQgJiYgbV9lcnJvckNvZGUgIT0gSURCRGF0YWJhc2VFeGNlcHRpb246
OklEQl9BQk9SVF9FUlIpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5lcnJvckV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJsb2NrZWRF
dmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS51cGdyYWRlbmVlZGVkRXZlbnQs
ICJldmVudCB0eXBlIHdhcyAlcyIsIGV2ZW50LT50eXBlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgY29uc3QgYm9vbCBzZXRUcmFuc2FjdGlvbkFjdGl2ZSA9IG1fdHJhbnNhY3Rpb24g
JiYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCB8fCBldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS51cGdyYWRlbmVlZGVkRXZlbnQgfHwgKGV2ZW50LT50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgJiYgbV9lcnJvckNvZGUgIT0gSURCRGF0YWJh
c2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKIAogICAgIGlmIChzZXRUcmFuc2FjdGlvbkFj
dGl2ZSkKICAgICAgICAgbV90cmFuc2FjdGlvbi0+c2V0QWN0aXZlKHRydWUpOworCiAgICAgYm9v
bCBkb250UHJldmVudERlZmF1bHQgPSBJREJFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoKGV2ZW50
LmdldCgpLCB0YXJnZXRzKTsKICAgICBpZiAoc2V0VHJhbnNhY3Rpb25BY3RpdmUpCiAgICAgICAg
IG1fdHJhbnNhY3Rpb24tPnNldEFjdGl2ZShmYWxzZSk7CiAKLSAgICAvLyBJZiB0aGUgcmVzdWx0
IHdhcyBvZiB0eXBlIElEQkN1cnNvciwgb3IgYSBvbkJsb2NrZWQgZXZlbnQsIHRoZW4gd2UnbGwg
ZmlyZSBhZ2Fpbi4KLSAgICBpZiAoZXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVzKCkuYmxvY2tl
ZEV2ZW50ICYmICghY3Vyc29yVG9Ob3RpZnkgfHwgbV9jdXJzb3JGaW5pc2hlZCkpCisgICAgLy8g
SWYgdGhlIHJlc3VsdCB3YXMgb2YgdHlwZSBJREJDdXJzb3IsIG9yIHdlJ3JlIGZpcmluZyBibG9j
a2VkIG9yIHVwZ3JhZGVuZWVkZWQsIHRoZW4gd2UnbGwgZmlyZSBhZ2Fpbi4KKyAgICBpZiAoZXZl
bnQtPnR5cGUoKSAhPSBldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50ICYmICghY3Vyc29yVG9Ob3Rp
ZnkgfHwgbV9jdXJzb3JGaW5pc2hlZCkgJiYgZXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVzKCku
dXBncmFkZW5lZWRlZEV2ZW50KQogICAgICAgICBtX3JlcXVlc3RGaW5pc2hlZCA9IHRydWU7CiAK
ICAgICBpZiAoY3Vyc29yVG9Ob3RpZnkpCkBAIC00NjMsNiArNDcxLDEyIEBAIHZvaWQgSURCUmVx
dWVzdDo6dW5jYXVnaHRFeGNlcHRpb25JbkV2ZW50SGFuZGxlcigpCiAgICAgfQogfQogCit2b2lk
IElEQlJlcXVlc3Q6OmNsZWFyVHJhbnNhY3Rpb25Qcm9wZXJ0eSgpCit7CisgICAgQVNTRVJUKG1f
dHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKTsKKyAgICBtX3RyYW5zYWN0aW9uLmNsZWFy
KCk7Cit9CisKIHZvaWQgSURCUmVxdWVzdDo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+
IGV2ZW50KQogewogICAgIEFTU0VSVCghbV9yZXF1ZXN0RmluaXNoZWQpOwpAQCAtNDcwLDcgKzQ4
NCw3IEBAIHZvaWQgSURCUmVxdWVzdDo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2
ZW50KQogICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPCBET05FKTsK
KyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcmVhZHlTdGF0ZSA8IERPTkUgfHwgaXNPcGVuREJS
ZXF1ZXN0KCksICJXaGVuIHF1ZXVlaW5nIGV2ZW50ICVzLCBtX3JlYWR5U3RhdGUgPCBET05FKCVk
KSwgd2FzICVkIiwgZXZlbnQtPnR5cGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBET05FLCBt
X3JlYWR5U3RhdGUpOwogCiAgICAgRXZlbnRRdWV1ZSogZXZlbnRRdWV1ZSA9IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+ZXZlbnRRdWV1ZSgpOwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKaW5kZXgg
MDZjYTlkYjlhNzkzZjgzNzgxMzFkOWYwNzkyM2ZiNjExNTQ1MGIwYi4uYWVlNmYwMTM0OGY5NWYx
MWYxNDRhYTJhZjIxYzMzZjZkNWZlYzk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlJlcXVlc3QuaApAQCAtOTIsNiArOTIsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKTsKICAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29u
c3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gPiYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gLy8gTm90IGltcGxl
bWVudGVkLiBDYWxsYmFjayBzaG91bGQgbm90IHJlYWNoIHRoZSByZW5kZXJlciBzaWRlLgogICAg
IHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKGlu
dDY0X3QgZXhpc3RpbmdWZXJzaW9uKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICAv
LyBBY3RpdmVET01PYmplY3QKICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QgT1ZFUlJJREU7CkBAIC0xMDQsNiArMTA1LDggQEAgcHVibGljOgogICAgIGJvb2wgZGlz
cGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsg
cmV0dXJuIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50LCBlYyk7IH0KICAgICB2aXJ0
dWFsIHZvaWQgdW5jYXVnaHRFeGNlcHRpb25JbkV2ZW50SGFuZGxlcigpOwogCisgICAgdm9pZCBj
bGVhclRyYW5zYWN0aW9uUHJvcGVydHkoKTsKKwogICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPElEQkNhbGxiYWNrcz46OnJlZjsKICAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJ
REJDYWxsYmFja3M+OjpkZXJlZjsKIApAQCAtMTE0LDYgKzExNyw4IEBAIHByb3RlY3RlZDoKICAg
ICB1bnNpZ25lZCBzaG9ydCBtX2Vycm9yQ29kZTsKICAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7
CiAgICAgUmVmUHRyPERPTUVycm9yPiBtX2Vycm9yOworICAgIGJvb2wgbV9jb250ZXh0U3RvcHBl
ZDsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1fdHJhbnNhY3Rpb247CiAKIHByaXZhdGU6
CiAgICAgLy8gRXZlbnRUYXJnZXQKQEAgLTEyMywxNSArMTI4LDE3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOwogCiAgICAg
dm9pZCBzZXRSZXN1bHRDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3I+LCBJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNPcGVuREJSZXF1
ZXN0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICBS
ZWZQdHI8SURCQW55PiBtX3NvdXJjZTsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1fdHJh
bnNhY3Rpb247CiAKICAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKICAgICBib29sIG1fcmVx
dWVzdEFib3J0ZWQ7IC8vIE1heSBiZSBhYm9ydGVkIGJ5IHRyYW5zYWN0aW9uIHRoZW4gcmVjZWl2
ZSBhc3luYyBvbnN1Y2Nlc3M7IGlnbm9yZSB2cy4gYXNzZXJ0LgogICAgIGJvb2wgbV9yZXF1ZXN0
RmluaXNoZWQ7IC8vIElzIGl0IHBvc3NpYmxlIHRoYXQgd2UnbGwgZmlyZSBhbnkgbW9yZSBldmVu
dHM/IElmIG5vdCwgd2UncmUgZmluaXNoZWQuCiAgICAgYm9vbCBtX2N1cnNvckZpbmlzaGVkOwot
ICAgIGJvb2wgbV9jb250ZXh0U3RvcHBlZDsKICAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1f
ZW5xdWV1ZWRFdmVudHM7CiAKICAgICAvLyBPbmx5IHVzZWQgaWYgdGhlIHJlc3VsdCB0eXBlIHdp
bGwgYmUgYSBjdXJzb3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggZjVlNzYxZTZhNjJjNzU4MTEzZDBlOTNmODAwNTM2
NjcyNTYxOTNkZC4uYzcwMDkwODAwYzJhZTIwZDRjMjM0YmM4YTVmYTk4M2ZiZjE1NTNiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIklEQkluZGV4LmgiCiAjaW5jbHVkZSAi
SURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2UuaCIKKyNpbmNsdWRlICJJREJPcGVuREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSURCUGVuZGlu
Z1RyYW5zYWN0aW9uTW9uaXRvci5oIgogI2luY2x1ZGUgIklEQlRyYWNpbmcuaCIKIApAQCAtNDMs
NyArNDQsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJ
REJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBJREJEYXRhYmFzZSogZGIpCiB7Ci0gICAgUmVmUHRy
PElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbihhZG9wdFJlZihuZXcgSURCVHJhbnNhY3Rpb24o
Y29udGV4dCwgYmFja2VuZCwgbW9kZSwgZGIpKSk7CisgICAgLy8gRklYTUU6IFRyeSB0byBjb25z
dHJ1Y3QgYSB0ZXN0IHdoZXJlIHRoaXMgb3V0bGl2ZXMgb3BlbkRCUmVxdWVzdCBhbmQgd2UKKyAg
ICAvLyBnZXQgYSB1c2UgYWZ0ZXIgZnJlZS4KKyAgICBJREJPcGVuREJSZXF1ZXN0KiBvcGVuREJS
ZXF1ZXN0ID0gMDsKKyAgICByZXR1cm4gY3JlYXRlKGNvbnRleHQsIGJhY2tlbmQsIG1vZGUsIGRi
LCBvcGVuREJSZXF1ZXN0KTsKK30KKworUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCVHJh
bnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCVHJhbnNhY3Rp
b246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiLCBJREJPcGVuREJSZXF1ZXN0KiBvcGVuREJS
ZXF1ZXN0KQoreworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oYWRvcHRS
ZWYobmV3IElEQlRyYW5zYWN0aW9uKGNvbnRleHQsIGJhY2tlbmQsIG1vZGUsIGRiLCBvcGVuREJS
ZXF1ZXN0KSkpOwogICAgIHRyYW5zYWN0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1
cm4gdHJhbnNhY3Rpb24ucmVsZWFzZSgpOwogfQpAQCAtNzksMTAgKzg4LDExIEBAIGNvbnN0IEF0
b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkV3JpdGVMZWdhY3koKQogfQogCiAK
LUlEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2Vu
ZCwgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiKQorSURCVHJhbnNh
Y3Rpb246OklEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJUcmFu
c2FjdGlvbjo6TW9kZSBtb2RlLCBJREJEYXRhYmFzZSogZGIsIElEQk9wZW5EQlJlcXVlc3QqIG9w
ZW5EQlJlcXVlc3QpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAs
IG1fYmFja2VuZChiYWNrZW5kKQogICAgICwgbV9kYXRhYmFzZShkYikKKyAgICAsIG1fb3BlbkRC
UmVxdWVzdChvcGVuREJSZXF1ZXN0KQogICAgICwgbV9tb2RlKG1vZGUpCiAgICAgLCBtX2FjdGl2
ZSh0cnVlKQogICAgICwgbV9zdGF0ZShVbnVzZWQpCkBAIC0xODIsNyArMTkyLDcgQEAgdm9pZCBJ
REJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVEZWxldGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKIAog
dm9pZCBJREJUcmFuc2FjdGlvbjo6c2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogewotICAgIEFTU0VS
VChtX3N0YXRlICE9IEZpbmlzaGVkKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fc3RhdGUg
IT0gRmluaXNoZWQsICJBIGZpbmlzaGVkIHRyYW5zYWN0aW9uIHRyaWVkIHRvIHNldEFjdGl2ZSgl
cykgaW4gJXAiLCBhY3RpdmUgPyAidHJ1ZSIgOiAiZmFsc2UiLCB0aGlzKTsKICAgICBpZiAobV9z
dGF0ZSA9PSBGaW5pc2hpbmcpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQobV9zdGF0ZSA9
PSBVbnVzZWQgfHwgbV9zdGF0ZSA9PSBVc2VkKTsKQEAgLTM3Miw3ICszODIsMTAgQEAgYm9vbCBJ
REJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIAog
ICAgIC8vIEZJWE1FOiBXaGVuIHdlIGFsbG93IGN1c3RvbSBldmVudCBkaXNwYXRjaGluZywgdGhp
cyB3aWxsIHByb2JhYmx5IG5lZWQgdG8gY2hhbmdlLgogICAgIEFTU0VSVChldmVudC0+dHlwZSgp
ID09IGV2ZW50TmFtZXMoKS5jb21wbGV0ZUV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmFib3J0RXZlbnQpOwotICAgIHJldHVybiBJREJFdmVudERpc3BhdGNoZXI6OmRpc3Bh
dGNoKGV2ZW50LmdldCgpLCB0YXJnZXRzKTsKKyAgICBib29sIHJldHVyblZhbHVlID0gSURCRXZl
bnREaXNwYXRjaGVyOjpkaXNwYXRjaChldmVudC5nZXQoKSwgdGFyZ2V0cyk7CisgICAgaWYgKG1f
b3BlbkRCUmVxdWVzdCkKKyAgICAgICAgbV9vcGVuREJSZXF1ZXN0LT5jbGVhclRyYW5zYWN0aW9u
UHJvcGVydHkoKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIGJvb2wgSURCVHJhbnNh
Y3Rpb246OmNhblN1c3BlbmQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggMzAzNzg2MjdmZjBmMzJlNDE0MDBhMTRk
ZDI1MWI1MjJlZmRlMGM0YS4uMGI2N2FjOTg3ZTQ3NjQ2YzQxYzZmMjg4YmQ4OGNkY2M5M2M4YTQw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5oCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIElEQkN1
cnNvcjsKIGNsYXNzIElEQkRhdGFiYXNlOwogY2xhc3MgSURCT2JqZWN0U3RvcmU7CitjbGFzcyBJ
REJPcGVuREJSZXF1ZXN0OwogCiBjbGFzcyBJREJUcmFuc2FjdGlvbiA6IHB1YmxpYyBJREJUcmFu
c2FjdGlvbkNhbGxiYWNrcywgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXZlRE9NT2Jq
ZWN0IHsKIHB1YmxpYzoKQEAgLTU2LDYgKzU3LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4sIE1vZGUs
IElEQkRhdGFiYXNlKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+LCBNb2RlLCBJREJEYXRhYmFzZSosIElEQk9wZW5EQlJlcXVlc3QqKTsK
ICAgICB2aXJ0dWFsIH5JREJUcmFuc2FjdGlvbigpOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgbW9kZVJlYWRPbmx5KCk7CkBAIC0xMTksNyArMTIxLDcgQEAgcHVibGljOgogICAg
IHVzaW5nIFJlZkNvdW50ZWQ8SURCVHJhbnNhY3Rpb25DYWxsYmFja3M+OjpkZXJlZjsKIAogcHJp
dmF0ZToKLSAgICBJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBNb2RlLCBJREJEYXRhYmFzZSop
OworICAgIElEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4sIE1vZGUsIElEQkRhdGFiYXNlKiwgSURC
T3BlbkRCUmVxdWVzdCopOwogCiAgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVu
dD4pOwogICAgIHZvaWQgY2xvc2VPcGVuQ3Vyc29ycygpOwpAQCAtMTQyLDYgKzE0NCw3IEBAIHBy
aXZhdGU6CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBtX2Jh
Y2tlbmQ7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBtX2RhdGFiYXNlOworICAgIElEQk9wZW5E
QlJlcXVlc3QqIG1fb3BlbkRCUmVxdWVzdDsKICAgICBjb25zdCBNb2RlIG1fbW9kZTsKICAgICBi
b29sIG1fYWN0aXZlOwogICAgIFN0YXRlIG1fc3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwu
Y3BwCmluZGV4IDk0ZDMwZGM5MzY5OWViOTEzNmY2YWJkNzFiYjA2NzNlYmJhYmJkZmMuLjcyMjdl
MTkwZWQyMWI5ZGQyODg0NTMzNGFkYTkwZDQ2Y2FjNTE1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGwuY3BwCkBAIC0yMjYsNiArMjI2LDggQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsOjpjb21taXQoKQogICAgIGVsc2UKICAgICAgICAgbV9jYWxsYmFja3MtPm9uQWJvcnQoKTsK
IAorICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWRBbmRFdmVudHNGaXJlZCh0aGlz
KTsKKwogICAgIG1fZGF0YWJhc2UgPSAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJVcGdyYWRlTmVlZGVkRXZlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iMTIwNTQ1OGU0ZjQ3OTU5YTNlYzg5MDRiYTU2MDZjMmYxMmQxOWE4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRl
ZEV2ZW50LmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIklEQlVwZ3JhZGVOZWVkZWRFdmVudC5oIgorCisjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiSURCQW55Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxJREJVcGdyYWRlTmVlZGVkRXZl
bnQ+IElEQlVwZ3JhZGVOZWVkZWRFdmVudDo6Y3JlYXRlKGludDY0X3Qgb2xkVmVyc2lvbiwgaW50
NjRfdCBuZXdWZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IElEQlVwZ3JhZGVOZWVkZWRFdmVudChvbGRWZXJzaW9uLCBuZXdW
ZXJzaW9uLCBldmVudFR5cGUpKTsKK30KKworSURCVXBncmFkZU5lZWRlZEV2ZW50OjpJREJVcGdy
YWRlTmVlZGVkRXZlbnQoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNpb24sIGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQorICAgIDogRXZlbnQoZXZlbnRUeXBlLCBmYWxz
ZSAvKmNhbkJ1YmJsZSovLCBmYWxzZSAvKmNhbmNlbGFibGUqLykKKyAgICAsIG1fb2xkVmVyc2lv
bihvbGRWZXJzaW9uKQorICAgICwgbV9uZXdWZXJzaW9uKG5ld1ZlcnNpb24pCit7Cit9CisKK0lE
QlVwZ3JhZGVOZWVkZWRFdmVudDo6fklEQlVwZ3JhZGVOZWVkZWRFdmVudCgpCit7Cit9CisKK2lu
dDY0X3QgSURCVXBncmFkZU5lZWRlZEV2ZW50OjpvbGRWZXJzaW9uKCkKK3sKKyAgICByZXR1cm4g
bV9vbGRWZXJzaW9uOworfQorCitpbnQ2NF90IElEQlVwZ3JhZGVOZWVkZWRFdmVudDo6bmV3VmVy
c2lvbigpCit7CisgICAgcmV0dXJuIG1fbmV3VmVyc2lvbjsKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBJREJVcGdyYWRlTmVlZGVkRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAg
IHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9ySURCVXBncmFkZU5lZWRlZEV2ZW50Owor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJVcGdyYWRlTmVlZGVkRXZlbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42YmMxNjUxMDY4ZDhmOTQ3M2NjZmE3NmNlY2Q0YzY0MmU0ODU1MmY1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5l
ZWRlZEV2ZW50LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCVXBncmFkZU5l
ZWRlZEV2ZW50X2gKKyNkZWZpbmUgSURCVXBncmFkZU5lZWRlZEV2ZW50X2gKKworI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQkFueTsKKworY2xh
c3MgSURCVXBncmFkZU5lZWRlZEV2ZW50IDogcHVibGljIEV2ZW50IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJVcGdyYWRlTmVlZGVkRXZlbnQ+IGNyZWF0ZShpbnQ2NF90IG9s
ZFZlcnNpb24gPSAtNTAsIGludDY0X3QgbmV3VmVyc2lvbiA9IC01MCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUgPSBBdG9taWNTdHJpbmcoKSk7CisgICAgdmlydHVhbCB+SURCVXBncmFk
ZU5lZWRlZEV2ZW50KCk7CisKKyAgICB2aXJ0dWFsIGludDY0X3Qgb2xkVmVyc2lvbigpOworICAg
IHZpcnR1YWwgaW50NjRfdCBuZXdWZXJzaW9uKCk7CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIElEQlVwZ3Jh
ZGVOZWVkZWRFdmVudChpbnQ2NF90IG9sZFZlcnNpb24sIGludDY0X3QgbmV3VmVyc2lvbiwgY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOworCisgICAgaW50NjRfdCBtX29sZFZlcnNpb247
CisgICAgaW50NjRfdCBtX25ld1ZlcnNpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIElEQlVw
Z3JhZGVOZWVkZWRFdmVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJVcGdyYWRlTmVlZGVkRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzdiMDAw
ZDQyMmZiNzI3ZDQwMDgyMzY5OGE0MDExZDIyMWQ1N2E5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmlkbApA
QCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHN0b3JhZ2UgeworCisgICAgaW50ZXJmYWNl
IFsKKyAgICAgICAgQ29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQorICAgIF0gSURCVXBncmFk
ZU5lZWRlZEV2ZW50IDogRXZlbnQgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgbG9uZyBsb25nIG9sZFZlcnNpb247CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNp
Z25lZCBsb25nIGxvbmcgbmV3VmVyc2lvbjsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IGExNzJkNWU1YmVmZDU5NmY4ODA1OWZjYTE0ODA3NTg4OGFjNTc0OGIuLjNiYzgxODEzNjA5NGVh
YjEwNTg5OGU2ZDllZTY1YjIwYzYxZWVhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTgxNSw4ICs4
MTUsMTAgQEAKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaWRsJywKICAg
ICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5pZGwnLAogICAgICAgICAg
ICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbCcsCisgICAgICAgICAgICAn
TW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5pZGwnLAogICAgICAgICAgICAgJ01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5pZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMv
aW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmlkbCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy9pbmRleGVkZGIvV29ya2VyQ29udGV4dEluZGV4ZWREYXRhYmFzZS5pZGwnLApAQCAtMTUw
Myw2ICsxNTA1LDggQEAKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCcsCisgICAgICAgICAgICAnTW9kdWxl
cy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRl
eGVkZGIvSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5jcHAnLAogICAgICAgICAgICAgJ01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCcsCiAgICAgICAg
ICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAnLApAQCAtMTUxNiw2ICsxNTIw
LDggQEAKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNhbGxi
YWNrcy5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJV
cGdyYWRlTmVlZGVkRXZlbnQuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9J
REJVcGdyYWRlTmVlZGVkRXZlbnQuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIv
SURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVk
ZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApp
bmRleCA4MzZlNjMwOGIwZGFjZjlkYjFmNzc1ZmZmMjkzNGYxYjc2ZGZjMThhLi40ZjRiYzEyN2My
N2ZhYTI5OWY1NGJiOTkxNDhkYzY4ODcyOGEwYzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgK
QEAgLTExMCw2ICsxMTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8odGV4dElu
cHV0KSBcCiAgICAgbWFjcm8odW5sb2FkKSBcCiAgICAgbWFjcm8odXBkYXRlcmVhZHkpIFwKKyAg
ICBtYWNybyh1cGdyYWRlbmVlZGVkKSBcCiAgICAgbWFjcm8odmVyc2lvbmNoYW5nZSkgXAogICAg
IG1hY3JvKHdlYmtpdHZpc2liaWxpdHljaGFuZ2UpIFwKICAgICBtYWNybyh3cml0ZSkgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnROYW1lcy5pbgppbmRleCA5YzBhYzU1NThhYWFjMTYwMWU5MzA5MTViMGQ3YjQ3
YThkZTY2N2UyLi5mMWU2ZGE3OWRhOTFhYjc4MzYzMzYzNDgzOGFiN2I1NzVlMzgxMzg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnROYW1lcy5pbgpAQCAtMzksNiArMzksNyBAQCBTdG9yYWdlRXZlbnQKIFNW
R0V2ZW50cyBpbnRlcmZhY2VOYW1lPUV2ZW50LCBjb25kaXRpb25hbD1TVkcKIFNWR1pvb21FdmVu
dCBjb25kaXRpb25hbD1TVkcKIFNWR1pvb21FdmVudHMgaW50ZXJmYWNlTmFtZT1TVkdab29tRXZl
bnQsIGNvbmRpdGlvbmFsPVNWRworSURCVXBncmFkZU5lZWRlZEV2ZW50IGNvbmRpdGlvbmFsPUlO
REVYRURfREFUQUJBU0UKIElEQlZlcnNpb25DaGFuZ2VFdmVudCBjb25kaXRpb25hbD1JTkRFWEVE
X0RBVEFCQVNFCiBUb3VjaEV2ZW50IGNvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUywgcnVudGltZUNv
bmRpdGlvbmFsPXRvdWNoRW5hYmxlZAogRGV2aWNlTW90aW9uRXZlbnQgY29uZGl0aW9uYWw9REVW
SUNFX09SSUVOVEFUSU9OCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpp
bmRleCA4MjE3MTdiMGQ3ZmU3NjUzYWFmM2Y2NWRhMzVlYThlZjk1YmQwNGU0Li42ZWEzZjdkYjY1
ZGVhYjA5ZmFjNmUyN2U0MTI3MDJhMmFhMWNkYzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldEZhY3RvcnkuaW4KQEAgLTEwLDYgKzEwLDcgQEAgRXZlbnRTb3VyY2UKIEZpbGVSZWFk
ZXIgY29uZGl0aW9uYWw9QkxPQgogRmlsZVdyaXRlciBjb25kaXRpb25hbD1GSUxFX1NZU1RFTQog
SURCRGF0YWJhc2UgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQorSURCT3BlbkRCUmVxdWVz
dCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJREJSZXF1ZXN0IGNvbmRpdGlvbmFsPUlO
REVYRURfREFUQUJBU0UKIElEQlRyYW5zYWN0aW9uIGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJB
U0UKIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQuY3BwCmluZGV4IDBmZGFjYTZlMjllMzg0OGNmZTcxNzIwYzI5OTUyY2I3MzQxZTg4NTguLjBk
MWFhM2YzMWIwYjFiYzlmMDZmMmRkOTA5MjE4MjYxZWRkZGM3MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtMjM2
LDcgKzIzNiw3IEBAIHByaXZhdGU6CiB2b2lkIEV4ZWN1dGFibGVXaXRoRGF0YWJhc2U6OnN0YXJ0
KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBpZGJGYWN0b3J5LCBTZWN1cml0eU9yaWdpbiog
c2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgZGF0YWJhc2VOYW1lKQogewogICAgIFJlZlB0cjxPcGVuRGF0YWJhc2VDYWxsYmFjaz4g
Y2FsbGJhY2sgPSBPcGVuRGF0YWJhc2VDYWxsYmFjazo6Y3JlYXRlKHRoaXMpOwotICAgIGlkYkZh
Y3RvcnktPm9wZW4oZGF0YWJhc2VOYW1lLCBjYWxsYmFjay5nZXQoKSwgc2VjdXJpdHlPcmlnaW4s
IGNvbnRleHQsIFN0cmluZygpKTsKKyAgICBpZGJGYWN0b3J5LT5vcGVuKGRhdGFiYXNlTmFtZSwg
LTIwLCBjYWxsYmFjay5nZXQoKSwgc2VjdXJpdHlPcmlnaW4sIGNvbnRleHQsIFN0cmluZygpKTsK
IH0KIAogc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0
cmFuc2FjdGlvbkZvckRhdGFiYXNlKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSogaWRiRGF0
YWJhc2UsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQpAQCAtMzM4LDIwICszMzgsMjAg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIC5zZXRJbmRleGVzKGluZGV4ZXMpOwogICAgICAg
ICAgICAgb2JqZWN0U3RvcmVzLT5hZGRJdGVtKG9iamVjdFN0b3JlKTsKICAgICAgICAgfQotICAg
ICAgICBSZWZQdHI8RGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzPiByZXN1bHQgPSBEYXRhYmFzZVdp
dGhPYmplY3RTdG9yZXM6OmNyZWF0ZSgpCi0gICAgICAgICAgICAuc2V0TmFtZShkYXRhYmFzZU1l
dGFkYXRhLm5hbWUpCi0gICAgICAgICAgICAuc2V0VmVyc2lvbihkYXRhYmFzZU1ldGFkYXRhLnZl
cnNpb24pCi0gICAgICAgICAgICAuc2V0T2JqZWN0U3RvcmVzKG9iamVjdFN0b3Jlcyk7Ci0KLSAg
ICAgICAgbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpLT5kYXRhYmFzZUxvYWRlZChtX3Jl
cXVlc3RJZCwgcmVzdWx0KTsKKy8vICAgICAgICBSZWZQdHI8RGF0YWJhc2VXaXRoT2JqZWN0U3Rv
cmVzPiByZXN1bHQgPSBEYXRhYmFzZVdpdGhPYmplY3RTdG9yZXM6OmNyZWF0ZSgpCisvLyAgICAg
ICAgICAgIC5zZXROYW1lKGRhdGFiYXNlTWV0YWRhdGEubmFtZSkKKy8vICAgICAgICAgICAgLnNl
dFZlcnNpb24oZGF0YWJhc2VNZXRhZGF0YS52ZXJzaW9uKQorLy8gICAgICAgICAgICAuc2V0T2Jq
ZWN0U3RvcmVzKG9iamVjdFN0b3Jlcyk7CisvLworLy8gICAgICAgIG1fZnJvbnRlbmRQcm92aWRl
ci0+ZnJvbnRlbmQoKS0+ZGF0YWJhc2VMb2FkZWQobV9yZXF1ZXN0SWQsIHJlc3VsdCk7CiAgICAg
fQogCiBwcml2YXRlOgogICAgIERhdGFiYXNlTG9hZGVyQ2FsbGJhY2soSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXIqIGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0
SWQpCiAgICAgICAgIDogbV9mcm9udGVuZFByb3ZpZGVyKGZyb250ZW5kUHJvdmlkZXIpCi0gICAg
ICAgICwgbV9yZXF1ZXN0SWQocmVxdWVzdElkKSB7IH0KKy8qICAgICAgICAsIG1fcmVxdWVzdElk
KHJlcXVlc3RJZCkqLyB7IH0KICAgICBSZWZQdHI8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OkZy
b250ZW5kUHJvdmlkZXI+IG1fZnJvbnRlbmRQcm92aWRlcjsKLSAgICBpbnQgbV9yZXF1ZXN0SWQ7
CisvLyAgICBpbnQgbV9yZXF1ZXN0SWQ7CiAgICAgRGF0YWJhc2VDb25uZWN0aW9uIG1fY29ubmVj
dGlvbjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2Fs
bGJhY2tzLmgKaW5kZXggYTYzYzBiYzllZTZjNGNhZjJkNjdkOTVlNWQwMGExMWM5ZmNkODI5ZC4u
MDJiNDk4OWUxZWU3MzgwYTdhYzNiZmVmMWRlNzMyYjU5MmU0MzZkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmgKQEAgLTU4LDcgKzU4LDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlJiwgY29uc3QgV2ViSURCS2V5JiwgY29uc3QgV2ViSURCS2V5UGF0aCYpIHsg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
c1dpdGhDb250aW51YXRpb24oKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24pIHsg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
c1dpdGhQcmVmZXRjaChjb25zdCBXZWJWZWN0b3I8V2ViSURCS2V5PiYga2V5cywgY29uc3QgV2Vi
VmVjdG9yPFdlYklEQktleT4mIHByaW1hcnlLZXlzLCBjb25zdCBXZWJWZWN0b3I8V2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYgdmFsdWVzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBX
ZWJJREJUcmFuc2FjdGlvbiosIFdlYklEQkRhdGFiYXNlKikgeyBXRUJLSVRfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5oCmluZGV4IGU5NTZlYmRlZDhjNDU5ZTdl
ZmU2MzIzNzFmNmU2ZDI0YWRhODA5ZjIuLmRkN2YzY2IzZWUyNzBhZmY5ZDRiOGUxYjJlZDEzNzc5
OWU3M2NkODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklE
QkZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJGYWN0
b3J5LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRh
YmFzZU5hbWVzKFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9y
aWdpbiYgb3JpZ2luLCBXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIFRoZSBXZWJLaXQgaW1w
bGVtZW50YXRpb24gb2Ygb3BlbiBpZ25vcmVzIHRoZSBXZWJGcmFtZSogcGFyYW1ldGVyLgotICAg
IHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tz
KiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiBm
cmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgaW50
NjRfdCB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJp
dHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFE
aXIpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlRGF0YWJhc2UoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqLCBj
b25zdCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRh
RGlyKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAppbmRleCBhNTQ0MTg5YjY2
OGY0NGVkODE0ZDRjNzIyODA3MTQwM2MyN2I5N2NkLi5mZTM1MWU2YTMzOTQ3NTcwMTVjNmU2ZDE5
MDA2OWFjZjljNzk0ZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJDYWxsYmFja3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
Q2FsbGJhY2tzUHJveHkuY3BwCkBAIC0xMjUsNiArMTI1LDE2IEBAIHZvaWQgSURCQ2FsbGJhY2tz
UHJveHk6Om9uQmxvY2tlZCgpCiAgICAgbV9jYWxsYmFja3MtPm9uQmxvY2tlZCgpOwogfQogCit2
b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvbkJsb2NrZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24p
Cit7CisgICAgbV9jYWxsYmFja3MtPm9uQmxvY2tlZChleGlzdGluZ1ZlcnNpb24pOworfQorCit2
b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9u
LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24s
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZSkKK3sKKyAg
ICBtX2NhbGxiYWNrcy0+b25VcGdyYWRlTmVlZGVkKG9sZFZlcnNpb24sIG5ldyBXZWJJREJUcmFu
c2FjdGlvbkltcGwodHJhbnNhY3Rpb24pLCBuZXcgV2ViSURCRGF0YWJhc2VJbXBsKGRhdGFiYXNl
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJD
YWxsYmFja3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tz
UHJveHkuaAppbmRleCBkYjMwNTY1NTBiMmIyZTE3ZTJlMzBkZGVmNzllOWRkMjljMjVmZmJkLi43
YWQ0OTEwMjYxM2I5ZTAyOGI5Y2IwYTg5YTM1NDQ2YTc1MjY0NGU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKQEAgLTU2LDYgKzU2LDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCk7CiAg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OklEQktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpJ
REJLZXk+ID4mIHByaW1hcnlLZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzKTsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2Vk
KCk7CisgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbik7
CisgICAgdmlydHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBh
c3NSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKIAogcHJpdmF0ZToK
ICAgICBJREJDYWxsYmFja3NQcm94eShQYXNzT3duUHRyPFdlYklEQkNhbGxiYWNrcz4pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkuY3BwCmluZGV4IDkwMWI1NWU1NGYyYWFmZTA0ZmZmYzIyY2E5NmIzNTMxOGVmOTQ3ODYuLjU2
YWZlNWZiNWQyYjYyZmE0NDQ5OTU0NDY5MzBhMDFkMGJjOTc3OTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKQEAg
LTg3LDYgKzg3LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6ZGVsZXRlT2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGkKIAogdm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRQcm94eTo6c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBBU1NFUlQo
bV93ZWJJREJEYXRhYmFzZSk7CiAgICAgbV93ZWJJREJEYXRhYmFzZS0+c2V0VmVyc2lvbih2ZXJz
aW9uLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBlYyk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQ
cm94eS5jcHAKaW5kZXggODE2ZmFmNmM0ZGU3MGFlNjkyNjkzMGQwZGU1MGUwZWUyZDExNzg1Yi4u
ZWJlZTQ5Y2NmYTA5NGQ2YTFiMWU1ZDI1NzcxY2E0MGUyNGYwMjg4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5j
cHAKQEAgLTQ4LDYgKzQ4LDExIEBAIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6On5JREJEYXRh
YmFzZUNhbGxiYWNrc1Byb3h5KCkKIHsKIH0KIAordm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc1By
b3h5OjpvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBjdXJyZW50VmVyc2lvbiwgaW50NjRfdCByZXF1
ZXN0ZWRWZXJzaW9uKQoreworLy8gICAgbV9jYWxsYmFja3MtPm9uVmVyc2lvbkNoYW5nZShyZXF1
ZXN0ZWRWZXJzaW9uKTsKK30KKwogdm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpvblZl
cnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0ZWRWZXJzaW9uKQogewogICAgIG1fY2Fs
bGJhY2tzLT5vblZlcnNpb25DaGFuZ2UocmVxdWVzdGVkVmVyc2lvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgKaW5k
ZXggYWZmZGNlNzdkNWQ5NThkYzAwZTBmNmY4MGFjZmZiODAxMjk1OGIzYi4uNGVlYmYwY2NiODFh
ZGQwM2RiNTg5YzM5ZDVjYjAzYWVhM2QwOWNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaApAQCAtNDEsNiArNDEs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eSgpOwog
CiAgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHJlcXVlc3Rl
ZFZlcnNpb24pOworICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBjdXJy
ZW50VmVyc2lvbiwgaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKTsKIAogcHJpdmF0ZToKICAgICBJ
REJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5KFBhc3NPd25QdHI8V2ViSURCRGF0YWJhc2VDYWxsYmFj
a3M+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlC
YWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJh
Y2tlbmRQcm94eS5jcHAKaW5kZXggZTJjOWJiOWUyMmMyMGE1N2JjMmQ5OGUyNTViNjhkYjNjNTk5
NjAwMS4uMjIxMGRhMTYxNjUxMTc2ZGI1ZjQ4NDQ5YTdmMjhiNmZjZDkyMmEwYSAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5j
cHAKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmdldERh
dGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYQogfQogCiAKLXZv
aWQgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IHNlY3VyaXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIGRhdGFEaXIpCit2b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6Om9wZW4oY29u
c3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2lu
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIp
CiB7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKHBycENhbGxiYWNrcyk7CiAg
ICAgV2ViU2VjdXJpdHlPcmlnaW4gb3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKQEAgLTIxMSw3ICsy
MTEsNyBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6Om9wZW4oY29uc3QgU3RyaW5nJiBu
YW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcAogICAgICAgICByZXR1cm47CiAKICAgICBX
ZWJGcmFtZUltcGwqIHdlYkZyYW1lID0gZ2V0V2ViRnJhbWUoY29udGV4dCk7Ci0gICAgbV93ZWJJ
REJGYWN0b3J5LT5vcGVuKG5hbWUsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyks
IG9yaWdpbiwgd2ViRnJhbWUsIGRhdGFEaXIpOworICAgIG1fd2ViSURCRmFjdG9yeS0+b3Blbihu
YW1lLCB2ZXJzaW9uLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBvcmlnaW4s
IHdlYkZyYW1lLCBkYXRhRGlyKTsKIH0KIAogdm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5Ojpk
ZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2lu
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2Vu
ZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFBy
b3h5LmgKaW5kZXggMjJhNmY1MmE4Njk4MTZjODA1NjY4ZDY4NGQwYTdiZmZmYzI2YWU2OS4uYzBk
ZTkxMGE5MmNkZWE5MWEzZDNhMWM1MzBhMjgwN2M1YWJmYWE3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaApAQCAtNDksNyAr
NDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRmFjdG9yeUJhY2tlbmRQcm94eSgpOwog
CiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7Ci0gICAg
dmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFdlYkNvcmU6
OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0
cmluZyYgZGF0YURpcik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0
cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRy
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IDViNWFlZGY3
Y2NiMzdlMjQ5YzUzYzFhZjllOGVjOGVkOWIwZTZlMTIuLjlkNzBhYTM1YjVlZjc1ZGQzMmIzZWI2
M2EzMzc1ZTYzMGNiOGNhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBXZWJJREJDYWxsYmFja3NJbXBsOjpXZWJJREJDYWxsYmFja3NJbXBsKFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3Mp
CisgICAgLCBtX2RpZENyZWF0ZURhdGFiYXNlUHJveHkoZmFsc2UpCiB7CiB9CiAKQEAgLTcyLDYg
KzczLDEwIEBAIHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYklEQkN1cnNv
ciogY3Vyc29yKQogCiB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2VzcyhXZWJJREJE
YXRhYmFzZSogd2ViS2l0SW5zdGFuY2UpCiB7CisgICAgaWYgKG1fZGlkQ3JlYXRlRGF0YWJhc2VQ
cm94eSkgeworICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKElEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5OjpjcmVhdGUoYWRvcHRQdHIoc3RhdGljX2Nhc3Q8V2ViSURCRGF0YWJhc2UqPigwKSkp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKElE
QkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGUoYWRvcHRQdHIod2ViS2l0SW5zdGFuY2UpKSk7
CiB9CiAKQEAgLTEwNSw2ICsxMTAsMTcgQEAgdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvbkJs
b2NrZWQoKQogICAgIG1fY2FsbGJhY2tzLT5vbkJsb2NrZWQoKTsKIH0KIAordm9pZCBXZWJJREJD
YWxsYmFja3NJbXBsOjpvbkJsb2NrZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24pCit7CisgICAg
bV9jYWxsYmFja3MtPm9uQmxvY2tlZChleGlzdGluZ1ZlcnNpb24pOworfQorCit2b2lkIFdlYklE
QkNhbGxiYWNrc0ltcGw6Om9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFdlYklE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgV2ViSURCRGF0YWJhc2UqIGRhdGFiYXNlKQorewor
ICAgIG1fZGlkQ3JlYXRlRGF0YWJhc2VQcm94eSA9IHRydWU7CisgICAgbV9jYWxsYmFja3MtPm9u
VXBncmFkZU5lZWRlZChvbGRWZXJzaW9uLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6Y3Jl
YXRlKGFkb3B0UHRyKHRyYW5zYWN0aW9uKSksIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVh
dGUoYWRvcHRQdHIoZGF0YWJhc2UpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
ZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgKaW5kZXggN2IwMjE2MzU5ZDU2ZDgxODY5
NWZlOTczYTAxODJhZmI1MTI1MDE2MS4uOGE3ODVmZDAzNDY3OTAzYzJmZjAxMWZlMjA1OGNmODhj
MDBiYTczNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2Fs
bGJhY2tzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxi
YWNrc0ltcGwuaApAQCAtNTEsOSArNTEsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgY29uc3QgV2ViSURCS2V5
JiwgY29uc3QgV2ViSURCS2V5UGF0aCYpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRo
Q29udGludWF0aW9uKCk7CiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpOworICAgIHZpcnR1
YWwgdm9pZCBvbkJsb2NrZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24pOworICAgIHZpcnR1YWwg
dm9pZCBvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBXZWJJREJUcmFuc2FjdGlv
biosIFdlYklEQkRhdGFiYXNlKik7CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OklE
QkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CisgICAgYm9vbCBtX2RpZENyZWF0ZURhdGFiYXNlUHJv
eHk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcAppbmRleCBkODc1ZTExYmM2NWVmNTg4ZTA2
ZTJiNWY1MWRhYzE2ZDI2YjYwOGVjLi44ZWMwNGYzZThjZWRjOTQzMzlmNTU4NTE4MmJkOTczYTlm
Y2EyMTAwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0
b3J5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9y
eUltcGwuY3BwCkBAIC02NCw5ICs2NCw5IEBAIHZvaWQgV2ViSURCRmFjdG9yeUltcGw6OmdldERh
dGFiYXNlTmFtZXMoV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlCiB9CiAK
IAotdm9pZCBXZWJJREJGYWN0b3J5SW1wbDo6b3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdl
YklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2lu
LCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikKK3ZvaWQgV2ViSURCRmFjdG9y
eUltcGw6Om9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFdlYklE
QkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBX
ZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikKIHsKLSAgICBtX2lkYkZhY3RvcnlC
YWNrZW5kLT5vcGVuKG5hbWUsIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2Fs
bGJhY2tzKSkuZ2V0KCksIG9yaWdpbiwgMCwgZGF0YURpcik7CisgICAgbV9pZGJGYWN0b3J5QmFj
a2VuZC0+b3BlbihuYW1lLCB2ZXJzaW9uLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0
UHRyKGNhbGxiYWNrcykpLmdldCgpLCBvcmlnaW4sIDAsIGRhdGFEaXIpOwogfQogCiB2b2lkIFdl
YklEQkZhY3RvcnlJbXBsOjpkZWxldGVEYXRhYmFzZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdl
YklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2lu
LCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oCmluZGV4IGIzZTQ3NGRmOTI1NWU4Nzdm
MmZmNmQwZTYzMTAzNTU2MjQ2ZDE3MTkuLmNjY2ZhYWUzZTcxYjExZjEyYjk4NGM4YTIzNjRmM2Rm
ZGY0MGJhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZh
Y3RvcnlJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9y
eUltcGwuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViSURCRmFj
dG9yeUltcGwoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFdlYklEQkNh
bGxiYWNrcyosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25zdCBXZWJT
dHJpbmcmIGRhdGFEaXIpOwotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBXZWJGcmFt
ZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcik7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29u
c3QgV2ViU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyosIGNv
bnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFE
aXIpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBXZWJTdHJpbmcmIG5h
bWUsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUq
LCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCmluZGV4
IGY1M2FkNTBkMWQ2NzhiZTI2NDEwZWQ4NDBlM2Y3YTUyYTc3Njg3MWEuLmZjMzBmM2UzM2U4NzRl
ZjlkM2E3YjQ4ZTVhYjNhZTc2MmQ0MzJhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKQEAgLTcyLDcgKzcyLDcg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGYWlsaW5nQmFj
a2luZ1N0b3JlKTsKICAgICB9Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0
YURhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgaW50NjRfdCYpCisgICAgdmlydHVh
bCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgaW50NjRfdCwgaW50NjRfdCYpCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQpAQCAtMTAwLDcgKzEwMCw4IEBAIFRFU1QoSURCQWJvcnRUZXN0LCBUaGVUZXN0KQogICAg
IGNvbnN0IFN0cmluZyYgbmFtZSA9ICJkYiBuYW1lIjsKICAgICBNb2NrSURCQ2FsbGJhY2tzIGNh
bGxiYWNrczsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUoImh0dHAiLCAibG9jYWxob3N0IiwgODEpOwotICAgIGZhY3RvcnktPm9wZW4o
bmFtZSwgJmNhbGxiYWNrcywgb3JpZ2luLCAwIC8qRnJhbWUqLywgU3RyaW5nKCkgLypwYXRoKi8p
OworICAgIGNvbnN0IGludDY0X3Qga1ZlcnNpb24gPSAyOworICAgIGZhY3RvcnktPm9wZW4obmFt
ZSwga1ZlcnNpb24sICZjYWxsYmFja3MsIG9yaWdpbiwgMCAvKkZyYW1lKi8sIFN0cmluZygpIC8q
cGF0aCovKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKaW5kZXggMDg0MDVjZTBhYjU4Yzk2ZmMy
OTZjM2YwZjhhMTRmZjY5ZDY1YmExOC4uZDk2ZjdjNmNhMGVhOTQyYTI1ZDM4MjRiNWUxMmNkNWM0
OWU3YzUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtl
QmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtl
QmFja2luZ1N0b3JlLmgKQEAgLTMzLDggKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgSURCRmFrZUJhY2tpbmdTdG9yZSA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmUgewogcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFZlY3RvcjxTdHJpbmc+JiBmb3Vu
ZE5hbWVzKSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRh
RGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRWZXJzaW9uLCBpbnQ2NF90JiBm
b3VuZElkKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjcmVh
dGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2
ZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgU3Ry
aW5nJiBmb3VuZFZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVyc2lvbiwgaW50NjRfdCYgZm91
bmRJZCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRl
SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVy
c2lvbiwgY29uc3QgaW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkgT1ZFUlJJREUg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZU1ldGFE
YXRhKGludDY0X3Qgcm93SWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikgT1ZFUlJJREUgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5n
JiBuYW1lKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1ZTU3NGVkNGIzNTNjZjNjNGQ5
NzQzNzI0OTgzZTUwOTBkMzkwMDA3Li45NWY1YWU4OGQzNWYxOWU1MGQ5NjRjYWE5OGZjZjllODRl
ZjkzY2VmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTUxMyw2ICs1MTMsNyBAQCBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL25ldHdvcmstc2hhcmVkLXdvcmtlci5odG1sID0gUEFTUwogV09OVEZJWCBT
S0lQIDogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvc2hhcmVkLXdv
cmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLmh0bWwgPSBURVhUCiBXT05URklYIFNLSVAgOiBodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9zaGFyZWQtd29ya2VyLWNvbm5l
Y3Qtc3JjLWJsb2NrZWQuaHRtbCA9IFRFWFQKIFdPTlRGSVggU0tJUCA6IHN0b3JhZ2UvaW5kZXhl
ZGRiL2Jhc2ljcy1zaGFyZWQtd29ya2Vycy5odG1sID0gUEFTUworV09OVEZJWCBTS0lQIDogc3Rv
cmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24td2l0aC1kZWxldGUuaHRtbCA9IFBBU1MK
IAogLy8gdGVzdF9zaGVsbCBkb2VzIG5vdCBzdXBwb3J0IG1lc3NhZ2UgcG9ydHMKIEJVR1dLNzQ0
NTkgU0tJUCA6IGZhc3Qvd29ya2Vycy90ZXJtaW5hdGlvbi13aXRoLXBvcnQtbWVzc2FnZXMuaHRt
bCA9IFBBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Fib3J0
LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVlOTZlOGQ5NzExZGIwMDA1YTBmZTMyZWM5YTZjYTY2MjhiZjVhZjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9hYm9ydC1pbi1p
bml0aWFsLXVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1Rlc3Qg
dGhhdCBhbiBhYm9ydCBpbiB0aGUgaW5pdGlhbCB1cGdyYWRlbmVlZGVkIHNldHMgdmVyc2lvbiBi
YWNrIHRvIDAKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNl
bGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERC
IHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitpbmRleGVkREIuZGVs
ZXRlRGF0YWJhc2UoZGJuYW1lKQoraW5kZXhlZERCLm9wZW4oZGJuYW1lLCAyKQorCit1cGdyYWRl
TmVlZGVkKCk6CitQQVNTIGRiLnZlcnNpb24gaXMgMgordHJhbnNhY3Rpb24uYWJvcnQoKQorCitv
bkFib3J0KCk6CitGQUlMIGV2ZW50LnRhcmdldC5kYi52ZXJzaW9uIHNob3VsZCBiZSAwLiBXYXMg
Mi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9hYm9ydC1pbi1pbml0aWFs
LXVwZ3JhZGVuZWVkZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Fib3J0
LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyZWQ0MDYyZTU4NmRh
ZjZkNTA2OTI3YzBkZDQyMmM2OGQ0MjI2ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQuaHRtbApA
QCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi1ibG9ja2VkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0aC12ZXJzaW9uLWJsb2NrZWQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNkOTI5NjVhZTUzNWRiNTNkZjdiZDllMmExODk4NGEzNTMxMDI5
MjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVu
LXdpdGgtdmVyc2lvbi1ibG9ja2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM5IEBACitUZXN0
IHRoYXQgYmxvY2tlZCBldmVudHMgZ2V0IGRlbGl2ZXJlZCBwcm9wZXJseSB3aXRoIHRoZSBuZXcg
b3BlbiBhcGkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNl
bGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERC
IHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCityZXF1ZXN0ID0gaW5k
ZXhlZERCLm9wZW4oZGJuYW1lLCAyKQorCityZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCgpOgorZ290
Rmlyc3RVcGdyYWRlTmVlZGVkRXZlbnQgPSB0cnVlCitQQVNTIGV2ZW50Lm9sZFZlcnNpb24gaXMg
MAorUEFTUyBldmVudC5uZXdWZXJzaW9uIGlzIDIKK1BBU1MgU3RyaW5nKGV2ZW50KSBpcyAiW29i
amVjdCBJREJVcGdyYWRlTmVlZGVkRXZlbnRdIgorCitmaXJzdFN1Y2Nlc3NFdmVudEhhbmRsZXIo
KToKK1BBU1MgZ290Rmlyc3RVcGdyYWRlTmVlZGVkRXZlbnQgaXMgdHJ1ZQorY29ubmVjdGlvbjEg
PSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIFN0cmluZyhjb25uZWN0aW9uMSkgaXMgIltvYmpl
Y3QgSURCRGF0YWJhc2VdIgorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgMykKKwor
YmxvY2tlZEV2ZW50SGFuZGxlcigpOgorZ290QmxvY2tlZEV2ZW50ID0gdHJ1ZQorRkFJTCBTdHJp
bmcoZXZlbnQpIHNob3VsZCBiZSBbb2JqZWN0IElEQlZlcnNpb25DaGFuZ2VFdmVudF0uIFdhcyBb
b2JqZWN0IElEQlVwZ3JhZGVOZWVkZWRFdmVudF0uCitQQVNTIGV2ZW50Lm9sZFZlcnNpb24gaXMg
MgorUEFTUyBldmVudC5uZXdWZXJzaW9uIGlzIDMKK1BBU1MgZXZlbnQudHlwZSBpcyAiYmxvY2tl
ZCIKK2Nvbm5lY3Rpb24xLmNsb3NlKCkKKworc2Vjb25kVXBncmFkZU5lZWRlZEV2ZW50SGFuZGxl
cigpOgorUEFTUyBnb3RCbG9ja2VkRXZlbnQgaXMgdHJ1ZQorZ290U2Vjb25kVXBncmFkZU5lZWRl
ZEV2ZW50ID0gdHJ1ZQorCitzZWNvbmRTdWNjZXNzQ2FsbGJhY2soKToKK1BBU1MgZ290U2Vjb25k
VXBncmFkZU5lZWRlZEV2ZW50IGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi1ibG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi1ibG9ja2VkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODY4MjUzMzlhZDY3NWZiYzVlMDcyMzFlZDk2MDYzY2Q4ZTM5MDBjNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0aC12ZXJzaW9uLWJsb2Nr
ZWQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1ibG9ja2VkLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM5NmRiOTc1YWNjYmE4ZjQ4MWM3ZTcxMWQ3YTkzYTY3NjM0NjU3N2QKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0NSBAQAorVGVzdCB0aGF0IHNwZWNpZnlpbmcgYSB2
ZXJzaW9uIHdoZW4gb3BlbmluZyBhIG5vbi1leGlzdGVudCBkYiBjYXVzZXMgYW4gdXBncmFkZW5l
ZWRlZCBldmVudCBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaXMgc2V0IGNvcnJlY3RseS4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhl
ZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYu
bXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitpbmRleGVkREIuZGVsZXRlRGF0YWJh
c2UoZGJuYW1lKQorU2hvdWxkIHRyaWdnZXI6Cis0LjEuNDogSWYgbm8gZGF0YWJhc2Ugd2l0aCB0
aGUgZ2l2ZW4gbmFtZSBmcm9tIHRoZSBvcmlnaW4gb3JpZ2luIHdhcyBmb3VuZCwgb3IgaWYgaXQg
d2FzIGRlbGV0ZWQgZHVyaW5nIHRoZSBwcmV2aW91cyBzdGVwLCB0aGVuIGNyZWF0ZSBhIGRhdGFi
YXNlIHdpdGggbmFtZSBuYW1lLCB3aXRoIDAgYXMgdmVyc2lvbiwgYW5kIHdpdGggbm8gb2JqZWN0
IHN0b3Jlcy4gTGV0IGRiIGJlIHRoZSBuZXcgZGF0YWJhc2UuCis0LjEuNjogQ3JlYXRlIGEgbmV3
IGNvbm5lY3Rpb24gdG8gZGIgYW5kIGxldCBjb25uZWN0aW9uIHJlcHJlc2VudCBpdC4KKzQuMS43
OiBJZiB0aGUgdmVyc2lvbiBvZiBkYiBpcyBsb3dlciB0aGFuIHZlcnNpb24sIHRoZW4gcnVuIHRo
ZSBzdGVwcyBmb3IgcnVubmluZyBhICJ2ZXJzaW9uY2hhbmdlIiB0cmFuc2FjdGlvbiB1c2luZyBj
b25uZWN0aW9uLCB2ZXJzaW9uLCByZXF1ZXN0IGFuZCB1cGdyYWRlIGNhbGxiYWNrLgorNC4xLjk6
IFJldHVybiBjb25uZWN0aW9uLgorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgNykK
K1BBU1MgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShyZXF1ZXN0KSBpcyAiW29iamVj
dCBJREJPcGVuREJSZXF1ZXN0XSIKKworUEFTUyBJbiB0aGUgdXBncmFkZW5lZWRlZCBldmVudCBo
YW5kZXI6CitUZXN0IDQuOC45LjE6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgT2Jq
ZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShkYikgaXMgIltvYmplY3QgSURCRGF0YWJhc2Vd
IgorVGVzdCA0LjguOS4zOgorUEFTUyBldmVudC5vbGRWZXJzaW9uIGlzIDAKK1BBU1MgZXZlbnQu
bmV3VmVyc2lvbiBpcyA3CitQQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzICJkb25lIgor
VGVzdCA0LjEuNDoKK1BBU1MgZGIubmFtZSBpcyBkYm5hbWUKK1BBU1MgZGIudmVyc2lvbiBpcyA3
CitQQVNTIGRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDAKK3RyYW5zYWN0aW9uID0gZXZl
bnQudGFyZ2V0LnRyYW5zYWN0aW9uCitQQVNTIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBw
bHkodHJhbnNhY3Rpb24pIGlzICJbb2JqZWN0IElEQlRyYW5zYWN0aW9uXSIKK29zID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoInNvbWVPUyIpCitzYXdUcmFuc2FjdGlvbkNvbXBsZXRlID0gdHJ1ZQor
CitvcGVuU3VjY2VzcygpOgorVGVzdCA0LjEuNywgdGhhdCBhIHZlcnNpb25jaGFuZ2UgdHJhbnNh
Y3Rpb24gd2FzIHJ1bi4KK1BBU1Mgc2F3VXBncmFkZU5lZWRlZCBpcyB0cnVlCitQQVNTIHNhd1Ry
YW5zYWN0aW9uQ29tcGxldGUgaXMgdHJ1ZQorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitLaW5k
IG9mIHRlc3QgNC4xLjk6CitQQVNTIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkoZGIp
IGlzICJbb2JqZWN0IElEQkRhdGFiYXNlXSIKK1BBU1MgZGIudmVyc2lvbiBpcyA3CitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24taW5pdGlhbC12
ZXJzaW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4t
d2l0aC12ZXJzaW9uLWluaXRpYWwtdmVyc2lvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDE4
MDA1MTEwMWUyNTk2NzhiNzk2NGEwNGI0MWU1Mzg0ODE2YTg1NgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0aC12ZXJzaW9uLWluaXRpYWwt
dmVyc2lvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGVzdCB0aGF0IGluaXRpYWwg
dmVyc2lvbiBhZnRlciBhIHN1Y2Nlc3NmdWwgb3BlbiBvZiBhIG5vbi1leGlzdGVudCBkYiBpcyAx
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4
ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxm
Lm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworaW5kZXhlZERCLmRlbGV0ZURhdGFi
YXNlKGRibmFtZSkKK2luZGV4ZWREQi5vcGVuKGRibmFtZSkKKworb3BlblN1Y2Nlc3MoKToKK2Ri
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorVGVzdCBsaW5lIGZyb20gSURCRmFjdG9yeS5vcGVuOiBJ
ZiBubyB2ZXJzaW9uIGlzIHNwZWNpZmllZCBhbmQgbm8gZGF0YWJhc2UgZXhpc3RzLCBzZXQgZGF0
YWJhc2UgdmVyc2lvbiB0byAxLgorRkFJTCBkYi52ZXJzaW9uIHNob3VsZCBiZSAxIChvZiB0eXBl
IG51bWJlcikuIFdhcyAgKG9mIHR5cGUgc3RyaW5nKS4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi1pbml0aWFsLXZlcnNpb24uaHRtbCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0aC12ZXJzaW9uLWluaXRpYWwtdmVy
c2lvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1YmRlODM2YmI5Yjk3MTQxZjY3YmFiYjA0YzYyNWIzZTUz
YzllNWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
cGVuLXdpdGgtdmVyc2lvbi1pbml0aWFsLXZlcnNpb24uaHRtbApAQCAtMCwwICsxLDEwIEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcGVuLXdp
dGgtdmVyc2lvbi1pbml0aWFsLXZlcnNpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVu
LXdpdGgtdmVyc2lvbi13aXRoLWRlbGV0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi13aXRoLWRlbGV0ZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTM3M2FmYzlhYjlhN2ZlODYzMjVjODNkMDJhYzc3NzA3NjJhNTU2ZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0aC12
ZXJzaW9uLXdpdGgtZGVsZXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIyIEBACitUZXN0IHRo
YXQgYSBkZWxldGVEYXRhYmFzZSBjYWxsZWQgd2hpbGUgaGFuZGxpbmcgYW4gdXBncmFkZW5lZWRl
ZCBldmVudCBpcyBxdWV1ZWQgYW5kIGZpcmVzIGl0cyBldmVudHMgYXQgdGhlIHJpZ2h0IHRpbWUK
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhl
ZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYu
bXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitpbmRleGVkREIuZGVsZXRlRGF0YWJh
c2UoZGJuYW1lKQorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgMSkKKworcmVxdWVz
dC5vbnVwZ3JhZGVuZWVkZWQoKToKK3Nhd1VwZ3JhZGVOZWVkZWQgPSB0cnVlCitQQVNTIGV2ZW50
Lm9sZFZlcnNpb24gaXMgMAorUEFTUyBldmVudC5uZXdWZXJzaW9uIGlzIDEKK2RlbGV0ZVJlcXVl
c3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQorCitkZWxldGVSZXF1ZXN0Lm9u
c3VjY2VzcygpOgorRkFJTCBzYXdWZXJzaW9uQ2hhbmdlIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFs
c2UuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNp
b24td2l0aC1kZWxldGUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4t
d2l0aC12ZXJzaW9uLXdpdGgtZGVsZXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzI1MjYwNGQ5YzAyNWI2
NjBiOGEwYjYzNmM2ODNkMGQwMTNkZTZhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0aC12ZXJzaW9uLXdpdGgtZGVsZXRlLmh0bWwKQEAg
LTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24td2l0aC1kZWxldGUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvb3Blbi13aXRoLXZlcnNpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYmE2ZjBiNzJiZmI2NTZm
NDAxOGU5NTg4YzQyNzk0YTFhMGQ0YWMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24uaHRtbApAQCAtMCwwICsxLDEwIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcGVu
LXdpdGgtdmVyc2lvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9hYm9ydC1p
bi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI1ZTFhZTZmMzc2NWYyNDQ4M2Y0ZGI0YjVjMzdjOTEwMzM1Yzg0OWQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvYWJvcnQtaW4taW5p
dGlhbC11cGdyYWRlbmVlZGVkLmpzCkBAIC0wLDAgKzEsNDYgQEAKK2lmICh0aGlzLmltcG9ydFNj
cmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitk
ZXNjcmlwdGlvbigiVGVzdCB0aGF0IGFuIGFib3J0IGluIHRoZSBpbml0aWFsIHVwZ3JhZGVuZWVk
ZWQgc2V0cyB2ZXJzaW9uIGJhY2sgdG8gMCIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIGRibmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5h
bWUuc3Vic3RyaW5nKDEgKyBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lLmxhc3RJbmRleE9mKCIvIikp
OworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShk
Ym5hbWUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVTdWNjZXNzOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBk
ZWxldGVTdWNjZXNzKGV2dCkgeworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbihkYm5hbWUsIDIpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3Vj
Y2Vzc0NhbGxiYWNrOworICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gdXBncmFkZU5lZWRl
ZDsKK30KKworZnVuY3Rpb24gdXBncmFkZU5lZWRlZChldnQpCit7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJ1cGdyYWRlTmVlZGVkKCk6Iik7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGIg
PSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHNob3VsZEJlKCJkYi52ZXJzaW9uIiwgIjIiKTsK
KyAgICB0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbjsKKyAgICB0cmFuc2Fj
dGlvbi5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisgICAgdHJhbnNh
Y3Rpb24ub25hYm9ydCA9IG9uQWJvcnQ7CisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24uYWJv
cnQoKSIpOworfQorCitmdW5jdGlvbiBvbkFib3J0KGV2dCkKK3sKKyAgICBkZWJ1ZygiIik7Cisg
ICAgZGVidWcoIm9uQWJvcnQoKToiKTsKKyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LmRiLnZlcnNpb24iLCAiMCIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQor
Cit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvb3Blbi13aXRoLXZlcnNpb24tYmxvY2tlZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1ibG9ja2VkLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjc2OWQxMjFiMzg2ZGMwOGVmYzJiZGEyMzJlMWNiMzc0Mzg2ODdmMTgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRo
LXZlcnNpb24tYmxvY2tlZC5qcwpAQCAtMCwwICsxLDc0IEBACitpZiAodGhpcy5pbXBvcnRTY3Jp
cHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVz
Y3JpcHRpb24oIlRlc3QgdGhhdCBibG9ja2VkIGV2ZW50cyBnZXQgZGVsaXZlcmVkIHByb3Blcmx5
IHdpdGggdGhlIG5ldyBvcGVuIGFwaSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOworICAgIGRibmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWUu
c3Vic3RyaW5nKDEgKyBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lLmxhc3RJbmRleE9mKCIvIikpOwor
CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgMikiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpcnN0U3VjY2Vzc0V2ZW50SGFuZGxlcjsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBnb3RGaXJzdFVw
Z3JhZGVOZWVkZWRFdmVudCA9IGZhbHNlOworICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0g
ZnVuY3Rpb24oZXZ0KSB7CisgICAgICBldmVudCA9IGV2dDsKKyAgICAgIGRlYnVnKCIiKTsKKyAg
ICAgIGRlYnVnKCJyZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCgpOiIpOworICAgICAgZXZhbEFuZExv
ZygiZ290Rmlyc3RVcGdyYWRlTmVlZGVkRXZlbnQgPSB0cnVlIik7CisgICAgICBzaG91bGRCZSgi
ZXZlbnQub2xkVmVyc2lvbiIsICIwIik7CisgICAgICBzaG91bGRCZSgiZXZlbnQubmV3VmVyc2lv
biIsICIyIik7CisgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIlN0cmluZyhldmVudCkiLCAi
W29iamVjdCBJREJVcGdyYWRlTmVlZGVkRXZlbnRdIik7CisgICAgfQorfQorCitnb3RCbG9ja2Vk
RXZlbnQgPSBmYWxzZTsKK2Z1bmN0aW9uIGZpcnN0U3VjY2Vzc0V2ZW50SGFuZGxlcihldnQpCit7
CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJmaXJzdFN1Y2Nl
c3NFdmVudEhhbmRsZXIoKToiKQorICAgIHNob3VsZEJlVHJ1ZSgiZ290Rmlyc3RVcGdyYWRlTmVl
ZGVkRXZlbnQiKTsKKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMSA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIlN0cmluZyhjb25uZWN0aW9uMSki
LCAiW29iamVjdCBJREJEYXRhYmFzZV0iKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5k
ZXhlZERCLm9wZW4oZGJuYW1lLCAzKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2Vjb25k
U3VjY2Vzc0NhbGxiYWNrOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gYmxvY2tlZEV2ZW50SGFuZGxlcjsKKyAg
ICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHNlY29uZFVwZ3JhZGVOZWVkZWRFdmVudEhhbmRs
ZXI7Cit9CisKK2Z1bmN0aW9uIGJsb2NrZWRFdmVudEhhbmRsZXIoZXZ0KQoreworICAgIGV2ZW50
ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiYmxvY2tlZEV2ZW50SGFuZGxlcigp
OiIpCisgICAgZXZhbEFuZExvZygiZ290QmxvY2tlZEV2ZW50ID0gdHJ1ZSIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiU3RyaW5nKGV2ZW50KSIsICJbb2JqZWN0IElEQlZlcnNpb25DaGFu
Z2VFdmVudF0iKTsKKyAgICBzaG91bGRCZSgiZXZlbnQub2xkVmVyc2lvbiIsICIyIik7CisgICAg
c2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNpb24iLCAiMyIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZXZlbnQudHlwZSIsICJibG9ja2VkIik7CisgICAgZXZhbEFuZExvZygiY29ubmVjdGlv
bjEuY2xvc2UoKSIpOworfQorCitnb3RTZWNvbmRVcGdyYWRlTmVlZGVkRXZlbnQgPSBmYWxzZTsK
K2Z1bmN0aW9uIHNlY29uZFVwZ3JhZGVOZWVkZWRFdmVudEhhbmRsZXIoZXZ0KQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1Zygic2Vjb25kVXBncmFkZU5lZWRlZEV2ZW50SGFuZGxlcigpOiIp
OworICAgIHNob3VsZEJlVHJ1ZSgiZ290QmxvY2tlZEV2ZW50Iik7CisgICAgZXZhbEFuZExvZygi
Z290U2Vjb25kVXBncmFkZU5lZWRlZEV2ZW50ID0gdHJ1ZSIpOworfQorCitmdW5jdGlvbiBzZWNv
bmRTdWNjZXNzQ2FsbGJhY2soZXZ0KQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygic2Vj
b25kU3VjY2Vzc0NhbGxiYWNrKCk6Iik7CisgICAgc2hvdWxkQmVUcnVlKCJnb3RTZWNvbmRVcGdy
YWRlTmVlZGVkRXZlbnQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0
aC12ZXJzaW9uLWluaXRpYWwtdmVyc2lvbi5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1pbml0aWFsLXZlcnNpb24uanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmU3ZDBmM2U4M2VhMTMxNTc0NjBhYTAxOTM4MjQ0NTYzZjdlOTU4ZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdp
dGgtdmVyc2lvbi1pbml0aWFsLXZlcnNpb24uanMKQEAgLTAsMCArMSwzOCBAQAoraWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgaW5pdGlhbCB2ZXJzaW9uIGFmdGVyIGEgc3Vj
Y2Vzc2Z1bCBvcGVuIG9mIGEgbm9uLWV4aXN0ZW50IGRiIGlzIDEiKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5hbWUgPSBzZWxmLmxv
Y2F0aW9uLnBhdGhuYW1lLnN1YnN0cmluZygxICsgc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5sYXN0
SW5kZXhPZigiLyIpKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVs
ZXRlRGF0YWJhc2UoZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlU3Vj
Y2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gZGVsZXRlU3VjY2VzcyhldnQpIHsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbigpIHsKKyAgICAgIHRlc3RQ
YXNzZWQoIkdvdCB1cGdyYWRlbmVlZGVkIGV2ZW50Iik7CisgICAgfQorfQorCitmdW5jdGlvbiBv
cGVuU3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgZGVidWcoIlRlc3QgbGluZSBmcm9tIElEQkZhY3Rvcnku
b3BlbjogSWYgbm8gdmVyc2lvbiBpcyBzcGVjaWZpZWQgYW5kIG5vIGRhdGFiYXNlIGV4aXN0cywg
c2V0IGRhdGFiYXNlIHZlcnNpb24gdG8gMS4iKTsKKyAgICBzaG91bGRCZSgnZGIudmVyc2lvbics
ICcxJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi13
aXRoLWRlbGV0ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9v
cGVuLXdpdGgtdmVyc2lvbi13aXRoLWRlbGV0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTZmYjRkMzdlZjI5
OTdmNDEzNjIzYmJhNmI3NTgzNGQwYzdjYzY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLXdpdGgtZGVs
ZXRlLmpzCkBAIC0wLDAgKzEsNzQgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBp
bXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycp
OworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVz
dCB0aGF0IGEgZGVsZXRlRGF0YWJhc2UgY2FsbGVkIHdoaWxlIGhhbmRsaW5nIGFuIHVwZ3JhZGVu
ZWVkZWQgZXZlbnQgaXMgcXVldWVkIGFuZCBmaXJlcyBpdHMgZXZlbnRzIGF0IHRoZSByaWdodCB0
aW1lIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
CisgICAgZGJuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMSArIHNlbGYu
bG9jYXRpb24ucGF0aG5hbWUubGFzdEluZGV4T2YoIi8iKSk7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGluaXRpYWxseURlbGV0ZWQ7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK3ZhciBzYXdGaXJzdFVwZ3JhZGVOZWVkZWQgPSBm
YWxzZTsKK3ZhciBhbHJlYWR5RGVsZXRlZCA9IGZhbHNlOworZnVuY3Rpb24gaW5pdGlhbGx5RGVs
ZXRlZChldnQpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImluaXRpYWxseURlbGV0ZWQo
KToiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAx
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVu
ZWVkZWQgPSBmaXJzdFVwZ3JhZGVOZWVkZWQ7Cit9CisKK2Z1bmN0aW9uIGZpcnN0VXBncmFkZU5l
ZWRlZChldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJmaXJzdFVwZ3JhZGVOZWVkZWQoKToiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJzYXdGaXJzdFVw
Z3JhZGVOZWVkZWQiKTsKKyAgICBldmFsQW5kTG9nKCJzYXdGaXJzdFVwZ3JhZGVOZWVkZWQgPSB0
cnVlIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm9sZFZlcnNpb24iLCAiMCIpOworICAgIHNob3Vs
ZEJlKCJldmVudC5uZXdWZXJzaW9uIiwgIjEiKTsKKyAgICBpZiAoIWFscmVhZHlEZWxldGVkKSB7
CisgICAgICAgIGFscmVhZHlEZWxldGVkID0gdHJ1ZTsKKyAgICAgICAgcmVxdWVzdDIgPSBldmFs
QW5kTG9nKCJkZWxldGVSZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSki
KTsKKyAgICAgICAgcmVxdWVzdDIub25zdWNjZXNzID0gbWlkUmVxdWVzdERlbGV0ZTsKKyAgICAg
ICAgcmVxdWVzdDIub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICBy
ZXF1ZXN0Mi5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIH0KK30K
KworZnVuY3Rpb24gbWlkUmVxdWVzdERlbGV0ZShldnQpCit7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJtaWRSZXF1ZXN0RGVsZXRlKCk6Iik7Cit9CisKK3Nhd1ZlcnNpb25DaGFuZ2UgPSBm
YWxzZTsKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoInJlcXVlc3Qub25zdWNjZXNzKCk6Iik7CisgICAgc2hv
dWxkQmVUcnVlKCJzYXdGaXJzdFVwZ3JhZGVOZWVkZWQiKTsKKyAgICBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBkYi5vbnZlcnNpb25jaGFuZ2UgPSBmdW5jdGlv
bihldnQpIHsKKyAgICAgIGV2ZW50ID0gZXZ0OworICAgICAgZGVidWcoIiIpOworICAgICAgZGVi
dWcoImRiLm9udmVyc2lvbmNoYW5nZSgpOiIpOworICAgICAgc2hvdWxkQmUoImV2ZW50Lm9sZFZl
cnNpb24iLCAiMSIpOworICAgICAgc2hvdWxkQmVOdWxsKCJldmVudC5uZXdWZXJzaW9uIik7Cisg
ICAgICBldmFsQW5kTG9nKCJzYXdWZXJzaW9uQ2hhbmdlID0gdHJ1ZSIpOworICAgICAgZGIuY2xv
c2UoKTsKKyAgICB9CisgICAgc2hvdWxkQmUoJ2RiLnZlcnNpb24nLCAnMScpOworICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24uanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24uanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODg5ZWQzOTI2ZmE5YjUyNDQ0YTczZTZmYTU1MjcyYzU5NDAwNDg1ZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgt
dmVyc2lvbi5qcwpAQCAtMCwwICsxLDc2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Cisg
ICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24o
IlRlc3QgdGhhdCBzcGVjaWZ5aW5nIGEgdmVyc2lvbiB3aGVuIG9wZW5pbmcgYSBub24tZXhpc3Rl
bnQgZGIgY2F1c2VzIGFuIHVwZ3JhZGVuZWVkZWQgZXZlbnQgYW5kIHRoYXQgdGhlIHZlcnNpb24g
bnVtYmVyIGlzIHNldCBjb3JyZWN0bHkuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgZGJuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFt
ZS5zdWJzdHJpbmcoMSArIHNlbGYubG9jYXRpb24ucGF0aG5hbWUubGFzdEluZGV4T2YoIi8iKSk7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRi
bmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRl
bGV0ZVN1Y2Nlc3MoZXZ0KSB7CisgICAgZGVidWcoIlNob3VsZCB0cmlnZ2VyOiIpOworICAgIGRl
YnVnKCI0LjEuNDogSWYgbm8gZGF0YWJhc2Ugd2l0aCB0aGUgZ2l2ZW4gbmFtZSBmcm9tIHRoZSBv
cmlnaW4gb3JpZ2luIHdhcyBmb3VuZCwgb3IgaWYgaXQgd2FzIGRlbGV0ZWQgZHVyaW5nIHRoZSBw
cmV2aW91cyBzdGVwLCB0aGVuIGNyZWF0ZSBhIGRhdGFiYXNlIHdpdGggbmFtZSBuYW1lLCB3aXRo
IDAgYXMgdmVyc2lvbiwgYW5kIHdpdGggbm8gb2JqZWN0IHN0b3Jlcy4gTGV0IGRiIGJlIHRoZSBu
ZXcgZGF0YWJhc2UuIik7CisgICAgZGVidWcoIjQuMS42OiBDcmVhdGUgYSBuZXcgY29ubmVjdGlv
biB0byBkYiBhbmQgbGV0IGNvbm5lY3Rpb24gcmVwcmVzZW50IGl0LiIpOworICAgIGRlYnVnKCI0
LjEuNzogSWYgdGhlIHZlcnNpb24gb2YgZGIgaXMgbG93ZXIgdGhhbiB2ZXJzaW9uLCB0aGVuIHJ1
biB0aGUgc3RlcHMgZm9yIHJ1bm5pbmcgYSBcInZlcnNpb25jaGFuZ2VcIiB0cmFuc2FjdGlvbiB1
c2luZyBjb25uZWN0aW9uLCB2ZXJzaW9uLCByZXF1ZXN0IGFuZCB1cGdyYWRlIGNhbGxiYWNrLiIp
OworICAgIGRlYnVnKCI0LjEuOTogUmV0dXJuIGNvbm5lY3Rpb24uIik7CisKKyAgICBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCA3KSIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShyZXF1ZXN0KSIs
ICJbb2JqZWN0IElEQk9wZW5EQlJlcXVlc3RdIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHVwZ3JhZGVOZWVkZWQ7
CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAg
IGRlYnVnKCIiKTsKK30KKwordmFyIHNhd1VwZ3JhZGVOZWVkZWQgPSBmYWxzZTsKK3ZhciBzYXdU
cmFuc2FjdGlvbkNvbXBsZXRlID0gZmFsc2U7CitmdW5jdGlvbiB1cGdyYWRlTmVlZGVkKGV2dCkK
K3sKKyAgICBldmVudCA9IGV2dDsKKyAgICB0ZXN0UGFzc2VkKCJJbiB0aGUgdXBncmFkZW5lZWRl
ZCBldmVudCBoYW5kZXI6Iik7CisgICAgZGVidWcoIlRlc3QgNC44LjkuMToiKTsKKyAgICBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkoZGIpIiwgIltvYmplY3QgSURC
RGF0YWJhc2VdIik7CisgICAgZGVidWcoIlRlc3QgNC44LjkuMzoiKTsKKyAgICBzaG91bGRCZSgi
ZXZlbnQub2xkVmVyc2lvbiIsICIwIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNpb24i
LCAiNyIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlYWR5U3Rh
dGUiLCAiZG9uZSIpOworICAgIGRlYnVnKCJUZXN0IDQuMS40OiIpOworICAgIHNob3VsZEJlKCJk
Yi5uYW1lIiwgImRibmFtZSIpOworICAgIHNob3VsZEJlKCJkYi52ZXJzaW9uIiwgIjciKTsKKyAg
ICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOworCisgICAgZXZh
bEFuZExvZygidHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQudHJhbnNhY3Rpb24iKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkodHJh
bnNhY3Rpb24pIiwgIltvYmplY3QgSURCVHJhbnNhY3Rpb25dIik7CisgICAgZXZhbEFuZExvZygn
b3MgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgic29tZU9TIiknKTsKKyAgICB0cmFuc2FjdGlvbi5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25jb21w
bGV0ZSA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgIGV2YWxBbmRMb2coInNhd1RyYW5zYWN0aW9uQ29t
cGxldGUgPSB0cnVlIik7CisgICAgfQorICAgIHNhd1VwZ3JhZGVOZWVkZWQgPSB0cnVlOworfQor
CitmdW5jdGlvbiBvcGVuU3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIGRlYnVnKCJUZXN0IDQu
MS43LCB0aGF0IGEgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB3YXMgcnVuLiIpOworICAgIHNo
b3VsZEJlKCJzYXdVcGdyYWRlTmVlZGVkIiwgInRydWUiKTsKKyAgICBzaG91bGRCZVRydWUoInNh
d1RyYW5zYWN0aW9uQ29tcGxldGUiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworICAgIGRlYnVnKCJLaW5kIG9mIHRlc3QgNC4xLjk6Iik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KGRi
KSIsICJbb2JqZWN0IElEQkRhdGFiYXNlXSIpOworICAgIHNob3VsZEJlKCdkYi52ZXJzaW9uJywg
IjciKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldHZlcnNpb24tdXBncmFkZW5l
ZWRlZC1pbnRlcnR3aW5lZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9zZXR2ZXJzaW9uLXVwZ3JhZGVuZWVkZWQtaW50ZXJ0d2luZWQuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmU1MmQ0MWUxZmZiOGExMjk3MzViNzJkMWZlMzE4NDE0YmFlMzFmMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXR2ZXJzaW9uLXVw
Z3JhZGVuZWVkZWQtaW50ZXJ0d2luZWQuanMKQEAgLTAsMCArMSwxNzUgQEAKK2lmICh0aGlzLmlt
cG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOwor
fQorCitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGJsYWggYmxhaC4iKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5hbWUgPSBzZWxmLmxv
Y2F0aW9uLnBhdGhuYW1lLnN1YnN0cmluZygxICsgc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5sYXN0
SW5kZXhPZigiLyIpKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVs
ZXRlRGF0YWJhc2UoZGJuYW1lKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiU3RyaW5n
KHJlcXVlc3QpIiwgIltvYmplY3QgSURCT3BlbkRCUmVxdWVzdF0iKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoZXZ0KSB7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJDYWxsIG9wZW4gd2l0aCBubyB2ZXJzaW9uIHBhcmFtZXRl
cjoiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVk
ZWQgPSB1bmV4cGVjdGVkVXBncmFkZU5lZWRlZENhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVu
U3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwg
IiIpOworICAgIGV2YWxBbmRMb2coJ3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCJzb21lIHZlcnNp
b24iKScpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25ibG9j
a2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKK30KKworZnVuY3Rpb24gaW5TZXRWZXJz
aW9uKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
ImluU2V0VmVyc2lvbigpOiIpOworICAgIHRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAg
ICB0cmFucy5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkRvbmU7CisgICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGRiID0gdHJhbnMuZGI7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgInNvbWUgdmVyc2lvbiIpOworICAgIC8vIEZJ
WE1FOiBBbHNvIGNhbGwgb3BlbiB3aXRoIHZlcnNpb24gZnJvbSBoZXJlLgorfQorCitmdW5jdGlv
biBzZXRWZXJzaW9uRG9uZShldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJzZXRWZXJzaW9uRG9uZSgpOiIpOworICAgIGRiID0gZXZlbnQudGFyZ2V0
LmRiOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJzb21lIHZlcnNp
b24iKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKGRibmFtZSkiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0
Lm9uc3VjY2VzcyA9IHNlY29uZE9wZW4iKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHVuZXhwZWN0
ZWRVcGdyYWRlTmVlZGVkQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNlY29uZE9wZW4oZXZ0KQor
eworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygic2Vjb25kT3Bl
bigpOiIpOworICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiU3RyaW5nKGRiKSIsICJbb2JqZWN0IElEQkRhdGFiYXNl
XSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJzb21lIHZlcnNp
b24iKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgLy8gRklYTUU6IEFsc28g
Y2FsbCBpdCB3aXRoIDAsIC0xLCBhbmQgLTQuCisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGlu
ZGV4ZWREQi5vcGVuKGRibmFtZSwgMikiKTsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9
IGZpcnN0VXBncmFkZU5lZWRlZAorICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxs
YmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpcnN0T3BlbldpdGhWZXJzaW9uOworfQor
CitmdW5jdGlvbiBmaXJzdFVwZ3JhZGVOZWVkZWQoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0Owor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiZmlyc3RVcGdyYWRlTmVlZGVkKCk6Iik7CisgICAg
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJTdHJpbmcoZGIpIiwgIltvYmplY3QgSURCRGF0YWJhc2VdIik7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJTdHJpbmcocmVxdWVzdC50cmFuc2FjdGlvbikiLCAiW29iamVj
dCBJREJUcmFuc2FjdGlvbl0iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50Lm9s
ZFZlcnNpb24iLCAic29tZSB2ZXJzaW9uIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNp
b24iLCAiMiIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3QudHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGVkIik7CisgICAgcmVxdWVzdC50cmFuc2FjdGlvbi5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Cit9CisKK3ZhciBkaWRUcmFuc2FjdGlvbkNv
bXBsZXRlID0gZmFsc2U7CitmdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlZChldnQpCit7Cisg
ICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0cmFuc2FjdGlvbkNv
bXBsZXRlZCgpOiIpOworICAgIGV2YWxBbmRMb2coImRpZFRyYW5zYWN0aW9uQ29tcGxldGUgPSB0
cnVlIik7Cit9CisKK2Z1bmN0aW9uIGZpcnN0T3BlbldpdGhWZXJzaW9uKGV2dCkKK3sKKyAgICBl
dmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImZpcnN0T3BlbldpdGhWZXJz
aW9uKCk6Iik7CisgICAgc2hvdWxkQmVUcnVlKCJkaWRUcmFuc2FjdGlvbkNvbXBsZXRlIik7Cisg
ICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJTdHJpbmcoZGIpIiwgIltvYmplY3QgSURCRGF0YWJhc2VdIik7CisgICAg
c2hvdWxkQmVOdWxsKCJyZXF1ZXN0LnRyYW5zYWN0aW9uIik7CisgICAgc2hvdWxkQmUoImRiLnZl
cnNpb24iLCAiMiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiU3RyaW5nKHJlcXVlc3Qp
IiwgIltvYmplY3QgSURCT3BlbkRCUmVxdWVzdF0iKTsKKyAgICBldmFsQW5kTG9nKCdyZXF1ZXN0
ID0gZGIuc2V0VmVyc2lvbigic3RyaW5nIHZlcnNpb24gMiIpJyk7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJTdHJpbmcocmVxdWVzdCkiLCAiW29iamVjdCBJREJWZXJzaW9uQ2hhbmdlUmVx
dWVzdF0iKTsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwor
ICAgIGV2YWxBbmRMb2coInJlcXVlc3Qub25lcnJvciA9IHNldFZlcnNpb25Ob3RBbGxvd2VkIik7
Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25Ob3RBbGxvd2VkKGV2dCkKK3sKKyAgICBldmVudCA9
IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInNldFZlcnNpb25Ob3RBbGxvd2VkKCk6
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50eXBlIiwgImVycm9yIik7Cisg
ICAgZGVidWcoInJlcXVlc3Qud2Via2l0RXJyb3JNZXNzYWdlID0gIiArIHJlcXVlc3Qud2Via2l0
RXJyb3JNZXNzYWdlKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgZXZhbEFu
ZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgMSkiKTsKKyAgICBldmFsQW5k
TG9nKCJyZXF1ZXN0Lm9uZXJyb3IgPSBlcnJvcldoZW5UcnlpbmdMb3dWZXJzaW9uIik7CisgICAg
cmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
ZXJyb3JXaGVuVHJ5aW5nTG93VmVyc2lvbihldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJlcnJvcldoZW5UcnlpbmdMb3dWZXJzaW9uKCk6Iik7Cisg
ICAgZGVidWcoInJlcXVlc3Qud2Via2l0RXJyb3JNZXNzYWdlID0gIiArIHJlcXVlc3Qud2Via2l0
RXJyb3JNZXNzYWdlKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4o
ZGJuYW1lLCA0KSIpOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRD
YWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHNlY29uZFVwZ3JhZGVO
ZWVkZWQiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0Lm9uc3VjY2VzcyA9IHRoaXJkT3BlblN1
Y2Nlc3MiKTsKK30KKwordmFyIGdvdFNlY29uZFVwZ3JhZGVOZWVkZWQgPSBmYWxzZTsKK2Z1bmN0
aW9uIHNlY29uZFVwZ3JhZGVOZWVkZWQoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1Zygic2Vjb25kVXBncmFkZU5lZWRlZCgpOiIpOworICAgIGV2YWxB
bmRMb2coImdvdFNlY29uZFVwZ3JhZGVOZWVkZWQgPSB0cnVlIik7CisgICAgc2hvdWxkQmUoImV2
ZW50Lm9sZFZlcnNpb24iLCAiMiIpOworICAgIHNob3VsZEJlKCJldmVudC5uZXdWZXJzaW9uIiwg
IjQiKTsKK30KKworZnVuY3Rpb24gdGhpcmRPcGVuU3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQg
PSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0aGlyZE9wZW5TdWNjZXNzKCk6Iik7
CisgICAgc2hvdWxkQmVUcnVlKCJnb3RTZWNvbmRVcGdyYWRlTmVlZGVkIik7CisgICAgZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmUoImRiLnZlcnNp
b24iLCAiNCIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXR2ZXJzaW9uLXVwZ3JhZGVuZWVkZWQt
aW50ZXJ0d2luZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
c2V0dmVyc2lvbi11cGdyYWRlbmVlZGVkLWludGVydHdpbmVkLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41MGFkNDZiY2Y1YjA3YjdkZDc3MzRhOGQ0MjZjMGI1YTg4NmViNmRmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0dmVyc2lvbi11cGdyYWRl
bmVlZGVkLWludGVydHdpbmVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDgyIEBACitUZXN0IHRo
YXQgYmxhaCBibGFoLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERC
ID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRl
eGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWRE
Qi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitGQUlMIFN0cmluZyhyZXF1ZXN0KSBzaG91bGQgYmUg
W29iamVjdCBJREJPcGVuREJSZXF1ZXN0XS4gV2FzIFtvYmplY3QgSURCVmVyc2lvbkNoYW5nZVJl
cXVlc3RdLgorCitDYWxsIG9wZW4gd2l0aCBubyB2ZXJzaW9uIHBhcmFtZXRlcjoKK2luZGV4ZWRE
Qi5vcGVuKGRibmFtZSkKKworb3BlblN1Y2Nlc3MoKToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dAorUEFTUyBkYi52ZXJzaW9uIGlzICIiCityZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigic29tZSB2
ZXJzaW9uIikKKworaW5TZXRWZXJzaW9uKCk6CitQQVNTIGRiLnZlcnNpb24gaXMgInNvbWUgdmVy
c2lvbiIKKworc2V0VmVyc2lvbkRvbmUoKToKK1BBU1MgZGIudmVyc2lvbiBpcyAic29tZSB2ZXJz
aW9uIgorZGIuY2xvc2UoKQoraW5kZXhlZERCLm9wZW4oZGJuYW1lKQorcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBzZWNvbmRPcGVuCisKK3NlY29uZE9wZW4oKToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dAorUEFTUyBTdHJpbmcoZGIpIGlzICJbb2JqZWN0IElEQkRhdGFiYXNlXSIKK1BBU1MgZGIudmVy
c2lvbiBpcyAic29tZSB2ZXJzaW9uIgorZGIuY2xvc2UoKQorcmVxdWVzdCA9IGluZGV4ZWREQi5v
cGVuKGRibmFtZSwgMikKKworZmlyc3RVcGdyYWRlTmVlZGVkKCk6CitkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQKK1BBU1MgU3RyaW5nKGRiKSBpcyAiW29iamVjdCBJREJEYXRhYmFzZV0iCitQQVNT
IFN0cmluZyhyZXF1ZXN0LnRyYW5zYWN0aW9uKSBpcyAiW29iamVjdCBJREJUcmFuc2FjdGlvbl0i
CitGQUlMIGV2ZW50Lm9sZFZlcnNpb24gc2hvdWxkIGJlIHNvbWUgdmVyc2lvbiAob2YgdHlwZSBz
dHJpbmcpLiBXYXMgMCAob2YgdHlwZSBudW1iZXIpLgorUEFTUyBldmVudC5uZXdWZXJzaW9uIGlz
IDIKK3JlcXVlc3QudHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGVk
CisKK3RyYW5zYWN0aW9uQ29tcGxldGVkKCk6CitkaWRUcmFuc2FjdGlvbkNvbXBsZXRlID0gdHJ1
ZQorCitmaXJzdE9wZW5XaXRoVmVyc2lvbigpOgorUEFTUyBkaWRUcmFuc2FjdGlvbkNvbXBsZXRl
IGlzIHRydWUKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBTdHJpbmcoZGIpIGlzICJb
b2JqZWN0IElEQkRhdGFiYXNlXSIKK1BBU1MgcmVxdWVzdC50cmFuc2FjdGlvbiBpcyBudWxsCitQ
QVNTIGRiLnZlcnNpb24gaXMgMgorUEFTUyBTdHJpbmcocmVxdWVzdCkgaXMgIltvYmplY3QgSURC
T3BlbkRCUmVxdWVzdF0iCityZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigic3RyaW5nIHZlcnNpb24g
MiIpCitQQVNTIFN0cmluZyhyZXF1ZXN0KSBpcyAiW29iamVjdCBJREJWZXJzaW9uQ2hhbmdlUmVx
dWVzdF0iCityZXF1ZXN0Lm9uZXJyb3IgPSBzZXRWZXJzaW9uTm90QWxsb3dlZAorCitzZXRWZXJz
aW9uTm90QWxsb3dlZCgpOgorUEFTUyBldmVudC50eXBlIGlzICJlcnJvciIKK3JlcXVlc3Qud2Vi
a2l0RXJyb3JNZXNzYWdlID0gWW91IGNhbid0IHVzZSB0aGUgc2V0VmVyc2lvbiBmdW5jdGlvbiBp
ZiB5b3UndmUgYWxyZWFkeSBzZXQgdGhlIHZlcnNpb24gdGhyb3VnaCBhbiBvcGVuIGNhbGwuICBU
aGUgY3VycmVudCBpbnRlZ2VyIHZlcnNpb24gaXMgMgorZGIuY2xvc2UoKQorcmVxdWVzdCA9IGlu
ZGV4ZWREQi5vcGVuKGRibmFtZSwgMSkKK3JlcXVlc3Qub25lcnJvciA9IGVycm9yV2hlblRyeWlu
Z0xvd1ZlcnNpb24KKworZXJyb3JXaGVuVHJ5aW5nTG93VmVyc2lvbigpOgorcmVxdWVzdC53ZWJr
aXRFcnJvck1lc3NhZ2UgPSBUaGUgcmVxdWVzdGVkIHZlcnNpb24gKDEpIGlzIGxlc3MgdGhhbiB0
aGUgZXhpc3RpbmcgdmVyc2lvbiAoMikuCityZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1l
LCA0KQorcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBzZWNvbmRVcGdyYWRlTmVlZGVkCityZXF1
ZXN0Lm9uc3VjY2VzcyA9IHRoaXJkT3BlblN1Y2Nlc3MKKworc2Vjb25kVXBncmFkZU5lZWRlZCgp
OgorZ290U2Vjb25kVXBncmFkZU5lZWRlZCA9IHRydWUKK1BBU1MgZXZlbnQub2xkVmVyc2lvbiBp
cyAyCitQQVNTIGV2ZW50Lm5ld1ZlcnNpb24gaXMgNAorCit0aGlyZE9wZW5TdWNjZXNzKCk6CitQ
QVNTIGdvdFNlY29uZFVwZ3JhZGVOZWVkZWQgaXMgdHJ1ZQorZGIgPSBldmVudC50YXJnZXQucmVz
dWx0CitQQVNTIGRiLnZlcnNpb24gaXMgNAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3NldHZlcnNpb24tdXBncmFkZW5lZWRlZC1pbnRlcnR3aW5lZC5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0dmVyc2lvbi11cGdyYWRlbmVlZGVkLWludGVydHdp
bmVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZWIwODJhNzY0OWE2NWY1OTI0NjdmYmU2ZjE0NDQ0MDBiYTRi
NzUyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Nl
dHZlcnNpb24tdXBncmFkZW5lZWRlZC1pbnRlcnR3aW5lZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NldHZl
cnNpb24tdXBncmFkZW5lZWRlZC1pbnRlcnR3aW5lZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153651</attachid>
            <date>2012-07-20 23:26:53 -0700</date>
            <delta_ts>2012-07-26 19:12:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89505-20120720232648.patch</filename>
            <type>text/plain</type>
            <size>123525</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDc4YTlmNjY3YWRkMTMwZTYzZTNj
MDc0NmQ0YTcwM2I0ODk1NDZiZDcuLjUyNzkwMzQyZGQ3NDQ4MDllY2YzNDMwMTliMzliYzFiMWVi
MzMxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJh
Y2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJh
Y2tpbmdTdG9yZS5oCkBAIC00Nyw4ICs0Nyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJC
YWNraW5nU3RvcmUoKSB7fTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFZl
Y3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGdldElEQkRh
dGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwg
aW50NjRfdCYgZm91bmRJZCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFz
ZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2
NF90JiByb3dJZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRh
KGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiBmb3VuZFN0cmluZ1ZlcnNpb24sIGludDY0X3Qm
IGZvdW5kSW50VmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCkgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBzdHJpbmdWZXJzaW9uLCBjb25zdCBpbnQ2NF90IGludFZlcnNpb24sIGludDY0X3QmIHJv
d0lkKSA9IDA7CisgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbihp
bnQ2NF90IHJvd0lkLCBpbnQ2NF90IGludFZlcnNpb24pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YShpbnQ2NF90IHJv
d0lkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRl
RGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKaW5kZXggMGIzNGI2ODg2ZDVlMWFhNDNk
MTk1M2Y5YWQ4MDNhMWUyYTcyODkyNC4uNWVmZDg0YzI4MTVhMWRjMzlhNTM0NGYyMjY4MDA3MzNk
MzEyOTlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2Fs
bGJhY2tzLmgKQEAgLTU5LDcgKzU5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktl
eT4sIGNvbnN0IElEQktleVBhdGgmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dp
dGhDb250aW51YXRpb24oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVm
ZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJl
ZlB0cjxJREJLZXk+ID4mIHByaW1hcnlLZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG9uQmxvY2tl
ZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNp
b24pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25VcGdyYWRl
TmVlZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRl
eCAyZjljODkzMmUwYmVkMDAzYzk4M2E1MTYxODNkMzNiM2M0NDVkY2JhLi43MzExNzI0YzFhMzU5
YTY3Y2NlZmU4ZDg5OTJiMGVlOWUyZWE1YTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVk
ZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVkZSAi
SURCVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlICJJREJVcGdyYWRlTmVlZGVkRXZlbnQuaCIKICNp
bmNsdWRlICJJREJWZXJzaW9uQ2hhbmdlRXZlbnQuaCIKICNpbmNsdWRlICJJREJWZXJzaW9uQ2hh
bmdlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKQEAgLTEx
MSw2ICsxMTIsMTQgQEAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZTo6b2Jq
ZWN0U3RvcmVOYW1lcygpIGNvbnN0CiAgICAgcmV0dXJuIG9iamVjdFN0b3JlTmFtZXMucmVsZWFz
ZSgpOwogfQogCitQYXNzUmVmUHRyPElEQkFueT4gSURCRGF0YWJhc2U6OnZlcnNpb24oKSBjb25z
dAoreworICAgIGludDY0X3QgaW50VmVyc2lvbiA9IG1fbWV0YWRhdGEuaW50VmVyc2lvbjsKKyAg
ICBpZiAoaW50VmVyc2lvbiA+IDApCisgICAgICAgIHJldHVybiBJREJBbnk6OmNyZWF0ZShTZXJp
YWxpemVkU2NyaXB0VmFsdWU6Om51bWJlclZhbHVlKGludFZlcnNpb24pKTsKKyAgICByZXR1cm4g
SURCQW55OjpjcmVhdGVTdHJpbmcobV9tZXRhZGF0YS52ZXJzaW9uKTsKK30KKwogUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgaWYgKCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbikgewpAQCAtMjAwLDYgKzIw
OSw3IEBAIFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IElEQkRhdGFiYXNlOjpz
ZXRWZXJzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRlCiAgICAgfQogCiAgICAgUmVmUHRyPElEQlZl
cnNpb25DaGFuZ2VSZXF1ZXN0PiByZXF1ZXN0ID0gSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6OmNy
ZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgdmVyc2lvbik7CisgICAgQVNTRVJU
KG1fYmFja2VuZCk7CiAgICAgbV9iYWNrZW5kLT5zZXRWZXJzaW9uKHZlcnNpb24sIHJlcXVlc3Qs
IG1fZGF0YWJhc2VDYWxsYmFja3MsIGVjKTsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KQEAgLTI5
Myw2ICszMDMsMTcgQEAgdm9pZCBJREJEYXRhYmFzZTo6Y2xvc2VDb25uZWN0aW9uKCkKICAgICB9
CiB9CiAKK3ZvaWQgSURCRGF0YWJhc2U6Om9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IGV4aXN0aW5n
VmVyc2lvbiwgaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKQoreworICAgIGlmIChtX2NvbnRleHRT
dG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChtX2Nsb3NlUGVuZGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgZW5xdWV1ZUV2
ZW50KElEQlVwZ3JhZGVOZWVkZWRFdmVudDo6Y3JlYXRlKGV4aXN0aW5nVmVyc2lvbiwgcmVxdWVz
dGVkVmVyc2lvbiwgZXZlbnROYW1lcygpLnZlcnNpb25jaGFuZ2VFdmVudCkpOworfQorCiB2b2lk
IElEQkRhdGFiYXNlOjpvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogewog
ICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCkBA
IC0zMDYsNiArMzI3LDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6b25WZXJzaW9uQ2hhbmdlKGNvbnN0
IFN0cmluZyYgdmVyc2lvbikKIAogdm9pZCBJREJEYXRhYmFzZTo6cmVnaXN0ZXJGcm9udGVuZENh
bGxiYWNrcygpCiB7CisgICAgQVNTRVJUKG1fYmFja2VuZCk7CiAgICAgbV9iYWNrZW5kLT5yZWdp
c3RlckZyb250ZW5kQ2FsbGJhY2tzKG1fZGF0YWJhc2VDYWxsYmFja3MpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAppbmRleCBhMjQ4Y2Q4
MGRlYjgzN2EzYjE1YmRhYTM4ZDFkZjEzMGVkM2EzMWFhLi5kNjljMWJiNmVmODBkNGJkMjA4YWI1
ODY3OTdmY2Q3ZTE0ZmFlMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogCiAgICAgLy8gSW1w
bGVtZW50IHRoZSBJREwKICAgICBjb25zdCBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWV0YWRhdGEubmFtZTsgfQotICAgIGNvbnN0IFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1
cm4gbV9tZXRhZGF0YS52ZXJzaW9uOyB9CisgICAgUGFzc1JlZlB0cjxJREJBbnk+IHZlcnNpb24o
KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMo
KSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiBUcnkgdG8gbW9kaWZ5IHRoZSBjb2RlIGdlbmVyYXRv
ciBzbyB0aGlzIGlzIHVubmVlZGVkLgpAQCAtNzgsNiArNzgsNyBAQCBwdWJsaWM6CiAgICAgREVG
SU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih2ZXJzaW9uY2hhbmdlKTsKIAogICAgIC8vIElE
QkRhdGFiYXNlQ2FsbGJhY2tzCisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShpbnQ2
NF90IGV4aXN0aW5nVmVyc2lvbiwgaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKTsKICAgICB2aXJ0
dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgcmVxdWVzdGVkVmVyc2lvbik7
CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbAppbmRleCA5NWY2YzIzNjBjZDBlZGNiZDM5ZjQwODY2
YjZkZGY4YzJjMmQ1M2M2Li5kMjUzZTRkZjdhMmMyNjM2NzcwOGExODBhODc2YWVjMzFkZDI1MjBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
aWRsCkBAIC0zMiw3ICszMiw3IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgRXZlbnRUYXJn
ZXQKICAgICBdIElEQkRhdGFiYXNlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyBuYW1lOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZlcnNpb247
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJBbnkgdmVyc2lvbjsKICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZ0xpc3Qgb2JqZWN0U3RvcmVOYW1lczsKIAogICAgICAg
ICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFib3J0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApp
bmRleCA3NDdiZDczYTMzZmUyYmM0OTllYjRmZGY2OTZiMjdmMDQ0YmFlNzdhLi4xNGI2MGE4Yjlm
YWUwM2E5OWM0ZDI2NDQzZDQ0M2MyNGNhNjJkMjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApA
QCAtNDcsMTIgKzQ3LDMzIEBAIHB1YmxpYzoKICAgICB9CiAgICAgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcygpIHsgcmV0dXJuIG1fY2FsbGJhY2tzOyB9CiAKLXByaXZhdGU6Citw
cm90ZWN0ZWQ6CiAgICAgUGVuZGluZ09wZW5DYWxsKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCiAgICAgICAgIDogbV9jYWxsYmFja3MoY2FsbGJhY2tzKQogICAgIHsKICAgICB9
CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7Cit9Owor
CitjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2Fs
bCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsPiB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IGNy
ZWF0ZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24p
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBlbmRpbmdPcGVuV2l0aFZlcnNp
b25DYWxsKGNhbGxiYWNrcywgdmVyc2lvbikpOworICAgIH0KKyAgICBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzKCkgeyByZXR1cm4gbV9jYWxsYmFja3M7IH0KKyAgICBpbnQ2NF90
IHZlcnNpb24oKSB7IHJldHVybiBtX3ZlcnNpb247IH0KKworcHJpdmF0ZToKKyAgICBQZW5kaW5n
T3BlbldpdGhWZXJzaW9uQ2FsbChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBp
bnQ2NF90IHZlcnNpb24pCisgICAgICAgIDogbV9jYWxsYmFja3MoY2FsbGJhY2tzKQorICAgICAg
ICAsIG1fdmVyc2lvbih2ZXJzaW9uKQorICAgIHsKKyAgICB9CiAgICAgUmVmUHRyPElEQkNhbGxi
YWNrcz4gbV9jYWxsYmFja3M7CisgICAgaW50NjRfdCBtX3ZlcnNpb247CiB9OwogCiBjbGFzcyBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nRGVsZXRlQ2FsbCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFBlbmRpbmdEZWxldGVDYWxsPiB7CkBAIC0xMDYsNiArMTI3LDcgQEAgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElE
QkJhY2tpbmdTdG8KICAgICAsIG1faWQoSW52YWxpZElkKQogICAgICwgbV9uYW1lKG5hbWUpCiAg
ICAgLCBtX3ZlcnNpb24oIiIpCisgICAgLCBtX2ludFZlcnNpb24oMCkKICAgICAsIG1faWRlbnRp
Zmllcih1bmlxdWVJZGVudGlmaWVyKQogICAgICwgbV9mYWN0b3J5KGZhY3RvcnkpCiAgICAgLCBt
X3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IoY29vcmRpbmF0b3IpCkBAIC0xMTYsMTMgKzEzOCwxMyBA
QCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0
cmluZyYgbmFtZSwgSURCQmFja2luZ1N0bwogCiBib29sIElEQkRhdGFiYXNlQmFja2VuZEltcGw6
Om9wZW5JbnRlcm5hbCgpCiB7Ci0gICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmdl
dElEQkRhdGFiYXNlTWV0YURhdGEobV9uYW1lLCBtX3ZlcnNpb24sIG1faWQpOworICAgIGJvb2wg
c3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5nZXRJREJEYXRhYmFzZU1ldGFEYXRhKG1fbmFtZSwg
bV92ZXJzaW9uLCBtX2ludFZlcnNpb24sIG1faWQpOwogICAgIEFTU0VSVChzdWNjZXNzID09ICht
X2lkICE9IEludmFsaWRJZCkpOwogICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgIGxvYWRPYmpl
Y3RTdG9yZXMoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIHJldHVybiBtX2Jh
Y2tpbmdTdG9yZS0+Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShtX25hbWUsIG1fdmVyc2lvbiwg
bV9pZCk7CisgICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlLT5jcmVhdGVJREJEYXRhYmFzZU1ldGFE
YXRhKG1fbmFtZSwgbV92ZXJzaW9uLCBtX2ludFZlcnNpb24sIG1faWQpOwogfQogCiBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjp+SURCRGF0YWJhc2VCYWNrZW5kSW1wbCgpCkBAIC0xMzYsNyArMTU4
LDcgQEAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6
OmJhY2tpbmdTdG9yZSgpIGNvbnN0CiAKIElEQkRhdGFiYXNlTWV0YWRhdGEgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6bWV0YWRhdGEoKSBjb25zdAogewotICAgIElEQkRhdGFiYXNlTWV0YWRhdGEg
bWV0YWRhdGEobV9uYW1lLCBtX3ZlcnNpb24sIElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVy
c2lvbik7CisgICAgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YShtX25hbWUsIG1fdmVyc2lv
biwgbV9pbnRWZXJzaW9uKTsKICAgICBmb3IgKE9iamVjdFN0b3JlTWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IG1fb2JqZWN0U3RvcmVzLmJlZ2luKCk7IGl0ICE9IG1fb2JqZWN0U3RvcmVzLmVuZCgp
OyArK2l0KQogICAgICAgICBtZXRhZGF0YS5vYmplY3RTdG9yZXMuc2V0KGl0LT5maXJzdCwgaXQt
PnNlY29uZC0+bWV0YWRhdGEoKSk7CiAgICAgcmV0dXJuIG1ldGFkYXRhOwpAQCAtMjEwLDYgKzIz
Miw4IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbihjb25zdCBTdHJp
bmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsCiAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJv
cihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9S
VF9FUlIsICJDb25uZWN0aW9uIHdhcyBjbG9zZWQgYmVmb3JlIHNldCB2ZXJzaW9uIHRyYW5zYWN0
aW9uIHdhcyBjcmVhdGVkIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmIChtX2lu
dFZlcnNpb24gPiAwKQorICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgU3RyaW5nOjpmb3Jt
YXQoIllvdSBjYW4ndCB1c2UgdGhlIHNldFZlcnNpb24gZnVuY3Rpb24gaWYgeW91J3ZlIGFscmVh
ZHkgc2V0IHRoZSB2ZXJzaW9uIHRocm91Z2ggYW4gb3BlbiBjYWxsLiAgVGhlIGN1cnJlbnQgaW50
ZWdlciB2ZXJzaW9uIGlzICVsZCIsIG1faW50VmVyc2lvbikpKTsKICAgICBmb3IgKERhdGFiYXNl
Q2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQu
YmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5lbmQoKTsgKytpdCkgewogICAg
ICAgICBpZiAoKml0ICE9IGRhdGFiYXNlQ2FsbGJhY2tzKQogICAgICAgICAgICAgKCppdCktPm9u
VmVyc2lvbkNoYW5nZSh2ZXJzaW9uKTsKQEAgLTI1Miw2ICsyNzYsMTkgQEAgdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWYKICAgICBjYWxsYmFja3MtPm9uU3VjY2Vzcyh0cmFuc2FjdGlvbik7CiB9CiAK
K3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW50VmVyc2lvbkludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRh
dGFiYXNlLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlv
bikKK3sKKyAgICBpbnQ2NF90IGRhdGFiYXNlSWQgPSBkYXRhYmFzZS0+aWQoKTsKKyAgICBpbnQ2
NF90IG9sZFZlcnNpb24gPSBkYXRhYmFzZS0+bV9pbnRWZXJzaW9uOworICAgIGRhdGFiYXNlLT5t
X2ludFZlcnNpb24gPSB2ZXJzaW9uOworICAgIGlmICghZGF0YWJhc2UtPm1fYmFja2luZ1N0b3Jl
LT51cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24oZGF0YWJhc2VJZCwgZGF0YWJhc2UtPm1faW50
VmVyc2lvbikpIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJFcnJvciB3cml0aW5n
IGRhdGEgdG8gc3RhYmxlIHN0b3JhZ2UuIikpOworICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYWxsYmFja3MtPm9uVXBncmFkZU5lZWRl
ZChvbGRWZXJzaW9uLCB0cmFuc2FjdGlvbiwgZGF0YWJhc2UpOworfQorCiB2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uU3RhcnRlZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4gcHJwVHJhbnNhY3Rpb24pCiB7CiAgICAgUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24gPSBwcnBUcmFuc2FjdGlvbjsK
QEAgLTI2OSw2ICszMDYsMTMgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2Fj
dGlvbkZpbmlzaGVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW4KICAgICBpZiAodHJh
bnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpIHsKICAg
ICAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLmdldCgpID09IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgICAgIG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbi5jbGVhcigpOworICAgIH0KK30KKwordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0
cmFuc2FjdGlvbkZpbmlzaGVkQW5kRXZlbnRzRmlyZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IHBycFRyYW5zYWN0aW9uKQoreworICAgIFJlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uID0gcHJwVHJhbnNhY3Rpb247Cisg
ICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hB
TkdFKSB7CiAgICAgICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKICAgICB9CiB9CkBAIC0zMTgs
NiArMzYyLDEzIEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdD
YWxscygpCiAgICAgaWYgKG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCAhbV9w
ZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmlzRW1wdHkoKSB8fCAhbV9wZW5kaW5nRGVsZXRlQ2FsbHMu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBEZXF1ZTxSZWZQdHI8UGVuZGluZ09w
ZW5XaXRoVmVyc2lvbkNhbGw+ID4gcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzOworICAgIG1f
cGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLnN3YXAocGVuZGluZ09wZW5XaXRoVmVyc2lvbkNh
bGxzKTsKKyAgICB3aGlsZSAoIXBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5pc0VtcHR5KCkp
IHsKKyAgICAgIFJlZlB0cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4gcGVuZGluZ09wZW5X
aXRoVmVyc2lvbkNhbGwgPSBwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMudGFrZUZpcnN0KCk7
CisgICAgICBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKHBlbmRpbmdPcGVuV2l0aFZlcnNpb25D
YWxsLT5jYWxsYmFja3MoKSwgcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPnZlcnNpb24oKSk7
CisgICAgfQorCiAgICAgLy8gR2l2ZW4gdGhlIGNoZWNrIGFib3ZlLCBpdCBhcHBlYXJzIHRoYXQg
Y2FsbHMgY2Fubm90IGJlIHJlcXVldWVkIGJ5CiAgICAgLy8gb3BlbkNvbm5lY3Rpb24sIGJ1dCB1
c2UgYSBkaWZmZXJlbnQgcXVldWUgZm9yIGl0ZXJhdGlvbiB0byBiZSBzYWZlLgogICAgIERlcXVl
PFJlZlB0cjxQZW5kaW5nT3BlbkNhbGw+ID4gcGVuZGluZ09wZW5DYWxsczsKQEAgLTM2Niw2ICs0
MTcsNzEgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgIH0KIH0KIAordm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50NjRfdCBy
ZXF1ZXN0ZWRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzKQor
eworICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKKyAg
ICBBU1NFUlQoY2FsbGJhY2tzKTsKKyAgICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25z
dF9pdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9k
YXRhYmFzZUNhbGxiYWNrc1NldC5lbmQoKTsgKytpdCkgeworICAgICAgICAvLyBUaGUgZnJvbnRl
bmQgdGFrZXMgY2FyZSBvZiB0aGUgZm9sbG93aW5nIGNsYXVzZSwgdGhlIGJhY2tlbmQganVzdAor
ICAgICAgICAvLyBmaXJlcyB2ZXJzaW9uIGNoYW5nZSBhdCBhbGwgdGhlIGNvbm5lY3Rpb25zLCB0
aGUgZnJvbnRlbmQgd2lsbCBub3QKKyAgICAgICAgLy8gZGVsaXZlciB0byBjb25uZWN0aW9ucyB3
aXRoIGNsb3NlUGVuZGluZyBzZXQuCisgICAgICAgIC8vICJUaGUgZXZlbnQgbXVzdCBub3QgYmUg
ZmlyZWQgb24gb2JqZWN0cyB3aGljaCBoYXMgdGhlIGNsb3NlUGVuZGluZworICAgICAgICAvLyBm
bGFnIHNldC4iCisgICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UobV9pbnRWZXJzaW9uLCBy
ZXF1ZXN0ZWRWZXJzaW9uKTsKKyAgICB9CisgICAgLy8gVGhlIHNwZWMgZGljdGF0ZXMgd2Ugd2Fp
dCB1bnRpbCBhbGwgdGhlIHZlcnNpb24gY2hhbmdlIGV2ZW50cyBhcmUKKyAgICAvLyBkZWxpdmVy
ZWQgYW5kIHRoZW4gY2hlY2sgbV9kYXRhYmFzZUNhbGxiYWNrcy5lbXB0eSgpIGJlZm9yZSBwcm9j
ZWVkaW5nCisgICAgLy8gb3IgZmlyaW5nIGEgYmxvY2tlZCBldmVudCwgYnV0IGluc3RlYWQgd2Ug
c2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCBob3cKKyAgICAvLyB0aGUgb2xkIHNldFZlcnNpb24g
KGluY29ycmVjdGx5KSBkaWQgaXQ6CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTcxMTMwCisgICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpID4gMCkKKyAgICAg
ICAgY2FsbGJhY2tzLT5vbkJsb2NrZWQobV9pbnRWZXJzaW9uKTsKKyAgICAvLyBGaWd1cmUgb3V0
IGhvdyB0byB0ZXN0IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi4KKyAgICBpZiAo
bV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8IGNvbm5lY3Rpb25Db3VudCgpID4g
MCkgeworICAgICAgICAvLyBJdCdzIGFscmVhZHkgcXVldWVkLgorICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3Ry
aW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24gPSB0aGlzLT50cmFu
c2FjdGlvbihvYmplY3RTdG9yZU5hbWVzLmdldCgpLCBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9D
SEFOR0UsIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKKworICAgIFJlZlB0cjxJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsPiBkYXRhYmFzZSA9IHRoaXM7CisgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1
bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW50
VmVyc2lvbkludGVybmFsLCBkYXRhYmFzZSwgcmVxdWVzdGVkVmVyc2lvbiwgY2FsbGJhY2tzLCB0
cmFuc2FjdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNh
bGxiYWNrVGFzaygmSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cmVzZXRWZXJzaW9uLCBkYXRhYmFz
ZSwgbV92ZXJzaW9uKSkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJB
TlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgIH0KK30KKwordm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBwcnBDYWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikKK3sKKyAgICBSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CisgICAgaWYgKCFtX3BlbmRpbmdEZWxldGVD
YWxscy5pc0VtcHR5KCkgfHwgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8ICFt
X3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fcGVuZGluZ09w
ZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3Jl
YXRlKGNhbGxiYWNrcywgdmVyc2lvbikpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlm
IChtX2lkID09IEludmFsaWRJZCkgeworICAgICAgICBpZiAob3BlbkludGVybmFsKCkpCisgICAg
ICAgICAgICBBU1NFUlQoIW1faW50VmVyc2lvbik7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHZlcnNpb24gPiBtX2ludFZlcnNp
b24pIHsKKyAgICAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKFBlbmRp
bmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCB2ZXJzaW9uKSk7CisgICAg
ICAgIHJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih2ZXJzaW9uLCBjYWxsYmFja3MpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICh2ZXJzaW9uIDwgbV9pbnRWZXJzaW9uKSB7
CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURC
RGF0YWJhc2VFeGNlcHRpb246OlZFUl9FUlIsIFN0cmluZzo6Zm9ybWF0KCJUaGUgcmVxdWVzdGVk
IHZlcnNpb24gKCVsZCkgaXMgbGVzcyB0aGFuIHRoZSBleGlzdGluZyB2ZXJzaW9uICglbGQpLiIs
IHZlcnNpb24sIG1faW50VmVyc2lvbikpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBB
U1NFUlQodmVyc2lvbiA9PSBtX2ludFZlcnNpb24pOworICAgICsrbV9wZW5kaW5nQ29ubmVjdGlv
bkNvdW50OworICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKHRoaXMpOworfQorCiB2b2lkIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBwcnBDYWxsYmFja3MpCiB7CiAgICAgaWYgKG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbiB8fCAhbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmlzRW1wdHkoKSkgewpAQCAtMzg2LDEy
ICs1MDIsMTQgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVEYXRhYmFzZShQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2sKICAgICAgICAgY2FsbGJhY2tzLT5v
bkJsb2NrZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBBU1NFUlQobV9iYWNraW5n
U3RvcmUpOwogICAgIGlmICghbV9iYWNraW5nU3RvcmUtPmRlbGV0ZURhdGFiYXNlKG1fbmFtZSkp
IHsKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV92ZXJzaW9uID0gIiI7CiAgICAgbV9pZCA9IElu
dmFsaWRJZDsKKyAgICBtX2ludFZlcnNpb24gPSAwOwogICAgIG1fb2JqZWN0U3RvcmVzLmNsZWFy
KCk7CiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxs
VmFsdWUoKSk7CiB9CkBAIC00MDQsMTIgKzUyMiwxNCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycENhbGxiYWNr
cwogICAgIGlmIChjb25uZWN0aW9uQ291bnQoKSA+IDEpCiAgICAgICAgIHJldHVybjsKIAorICAg
IFRyYW5zYWN0aW9uU2V0IHRyYW5zYWN0aW9ucyhtX3RyYW5zYWN0aW9ucyk7CiAgICAgcHJvY2Vz
c1BlbmRpbmdDYWxscygpOwogCi0gICAgaWYgKCFjb25uZWN0aW9uQ291bnQoKSkgewotICAgICAg
ICBUcmFuc2FjdGlvblNldCB0cmFuc2FjdGlvbnMobV90cmFuc2FjdGlvbnMpOworICAgIEFTU0VS
VChtX3RyYW5zYWN0aW9ucy5zaXplKCkgLSB0cmFuc2FjdGlvbnMuc2l6ZSgpIDw9IDEpOworICAg
IGlmICghY29ubmVjdGlvbkNvdW50KCkgJiYgIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLnNpemUoKSAm
JiBtX3RyYW5zYWN0aW9ucy5zaXplKCkgPT0gdHJhbnNhY3Rpb25zLnNpemUoKSkgewogICAgICAg
ICBmb3IgKFRyYW5zYWN0aW9uU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IHRyYW5zYWN0aW9ucy5i
ZWdpbigpOyBpdCAhPSB0cmFuc2FjdGlvbnMuZW5kKCk7ICsraXQpCiAgICAgICAgICAgICAoKml0
KS0+YWJvcnQoKTsKKwogICAgICAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuaXNFbXB0eSgpKTsK
IAogICAgICAgICBtX2JhY2tpbmdTdG9yZS5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4
IDIxZjRmOTNjMWIzZWIxYzY5NmIzMjk0ZGNjZTZiMDkxN2EyZWM1YmQuLjQ5YTlmMDlmZDI4Yjk1
ZWZhMGIwNmUyZjljZmIwMjkzMTE5ZDZiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTU2LDYg
KzU2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKICAgICB2b2lkIG9wZW5Db25uZWN0aW9u
KFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CisgICAgdm9pZCBvcGVuQ29ubmVjdGlvbldpdGhW
ZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgaW50NjRfdCB2ZXJzaW9uKTsKICAgICB2
b2lkIGRlbGV0ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAKICAgICB2aXJ0
dWFsIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKQEAgLTcwLDE4ICs3MSwy
MiBAQCBwdWJsaWM6CiAgICAgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciogdHJhbnNhY3Rpb25D
b29yZGluYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQo
KTsgfQogICAgIHZvaWQgdHJhbnNhY3Rpb25TdGFydGVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdm9pZCB0cmFuc2FjdGlvbkZpbmlzaGVkKFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CisgICAgdm9pZCB0cmFuc2Fj
dGlvbkZpbmlzaGVkQW5kRXZlbnRzRmlyZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+KTsKIAogcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNv
bnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlKiBkYXRhYmFzZSwgSURCVHJhbnNhY3Rp
b25Db29yZGluYXRvciosIElEQkZhY3RvcnlCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgdW5p
cXVlSWRlbnRpZmllcik7CiAKICAgICBib29sIG9wZW5JbnRlcm5hbCgpOworICAgIHZvaWQgcnVu
SW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+KTsKICAgICB2b2lkIGxvYWRPYmplY3RTdG9yZXMoKTsKICAg
ICBpbnQzMl90IGNvbm5lY3Rpb25Db3VudCgpOwogICAgIHZvaWQgcHJvY2Vzc1BlbmRpbmdDYWxs
cygpOworICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NQZW5kaW5nVGFzayh2b2lkKiBkYik7CiAKICAg
ICBzdGF0aWMgdm9pZCBjcmVhdGVPYmplY3RTdG9yZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4pOwogICAgIHN0YXRpYyB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlSW50ZXJuYWwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1w
bD4sIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgc3RhdGljIHZvaWQgc2V0VmVyc2lv
bkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEltcGw+LCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKKyAgICBz
dGF0aWMgdm9pZCBzZXRJbnRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4sIGludDY0X3QgdmVyc2lvbiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4pOwogCiAgICAgLy8gVGhlc2UgYXJlIHVzZWQgYXMgc2V0VmVyc2lvbiB0cmFuc2Fj
dGlvbiBhYm9ydCB0YXNrcy4KICAgICBzdGF0aWMgdm9pZCByZW1vdmVPYmplY3RTdG9yZUZyb21N
YXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW1wbD4sIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4pOwpAQCAtOTIsNiAr
OTcsNyBAQCBwcml2YXRlOgogICAgIGludDY0X3QgbV9pZDsKICAgICBTdHJpbmcgbV9uYW1lOwog
ICAgIFN0cmluZyBtX3ZlcnNpb247CisgICAgaW50NjRfdCBtX2ludFZlcnNpb247CiAKICAgICBT
dHJpbmcgbV9pZGVudGlmaWVyOwogICAgIC8vIFRoaXMgbWlnaHQgbm90IG5lZWQgdG8gYmUgYSBS
ZWZQdHIgc2luY2UgdGhlIGZhY3RvcnkncyBsaWZldGltZSBpcyB0aGF0IG9mIHRoZSBwYWdlIGdy
b3VwLCBidXQgaXQncyBiZXR0ZXIgdG8gYmUgY29uc2Vydml0aXZlIHRoYW4gc29ycnkuCkBAIC0x
MTIsNiArMTE4LDkgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBQZW5kaW5nT3BlbkNhbGw7CiAgICAg
RGVxdWU8UmVmUHRyPFBlbmRpbmdPcGVuQ2FsbD4gPiBtX3BlbmRpbmdPcGVuQ2FsbHM7CiAKKyAg
ICBjbGFzcyBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDsKKyAgICBEZXF1ZTxSZWZQdHI8UGVu
ZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+ID4gbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHM7
CisKICAgICBjbGFzcyBQZW5kaW5nRGVsZXRlQ2FsbDsKICAgICBEZXF1ZTxSZWZQdHI8UGVuZGlu
Z0RlbGV0ZUNhbGw+ID4gbV9wZW5kaW5nRGVsZXRlQ2FsbHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrcy5oCmluZGV4
IGIzZjI0NGY1MTZiNjk4N2VhMTE5Y2JmNzAxOWI3YjU0Mzc1ZjEyYmYuLjE2YTllYTZjNTA4YjBk
OTJiNjFlNDk5N2M1NDMwMTMyYTZkMmFjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3MuaApAQCAtMzgsNiArMzgs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRGF0YWJhc2VDYWxsYmFja3MoKSB7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IGN1cnJlbnRWZXJz
aW9uLCBpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCmlu
ZGV4IDE5NDEyZmNiZTUwYWI0NGJmNTNkYzAxZTAzZDg4NTNlMjhmN2M1ZmYuLmY3MTdhZGJkNTUx
ZDQ0MmViYjhmZDk4ZGQ4YTdjZmQ5MGQ2OWJjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNw
cApAQCAtNTIsNiArNTIsMTIgQEAgdm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6Om9uVmVy
c2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHZlcnNpb24pCiAgICAgICAgIG1fZGF0YWJhc2UtPm9u
VmVyc2lvbkNoYW5nZSh2ZXJzaW9uKTsKIH0KIAordm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGw6Om9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IGN1cnJlbnRWZXJzaW9uLCBpbnQ2NF90IHJlcXVl
c3RlZFZlcnNpb24pCit7CisgICAgaWYgKG1fZGF0YWJhc2UpCisgICAgICAgIG1fZGF0YWJhc2Ut
Pm9uVmVyc2lvbkNoYW5nZShjdXJyZW50VmVyc2lvbiwgcmVxdWVzdGVkVmVyc2lvbik7Cit9CisK
IHZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjp1bnJlZ2lzdGVyRGF0YWJhc2UoSURCRGF0
YWJhc2UqIGRhdGFiYXNlKQogewogICAgIEFTU0VSVF9VTlVTRUQoZGF0YWJhc2UsIGRhdGFiYXNl
ID09IG1fZGF0YWJhc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaAppbmRleCBlOGIxZjk5YjgzOGFm
N2I5MzdkOTRiN2FmOGY3ZjdkZmI4MmJlN2ZiLi4wODBmNWJhODdiZmQ2ODI1YzU1NWZjOGQ1ZDBm
N2Y3NjY3NDNhNDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaApAQCAtNDIsNiArNDIsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CisgICAg
dmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IGN1cnJlbnRWZXJzaW9uLCBpbnQ2
NF90IHJlcXVlc3RlZFZlcnNpb24pOwogICAgIHZvaWQgdW5yZWdpc3RlckRhdGFiYXNlKElEQkRh
dGFiYXNlKik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IGNmNTJjYzFmZTJiMTM1NWI2YzU0ZWRjZTI2NWUwZjNl
OGMzYTVlOTEuLjcyYWRhY2ZkNGZkMzlmYzE3ZGIyZWM5MzNjNmQzNTExOWRkNzFlNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCkBAIC00
MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCIKICNp
bmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgotI2luY2x1ZGUgIklE
QlJlcXVlc3QuaCIKKyNpbmNsdWRlICJJREJPcGVuREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSURC
VmVyc2lvbkNoYW5nZVJlcXVlc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFn
ZUdyb3VwLmgiCkBAIC0xMDUsNyArMTA1LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJG
YWN0b3J5OjpnZXREYXRhYmFzZU5hbWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnQKICAg
ICByZXR1cm4gcmVxdWVzdDsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJGYWN0b3J5
OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkZh
Y3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChu
YW1lLmlzTnVsbCgpKSB7CiAgICAgICAgIGVjID0gTkFUSVZFX1RZUEVfRVJSOwpAQCAtMTE0LDEx
ICsxMTQsMTYgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFMKICAgICBpZiAoIWlzQ29udGV4dFZh
bGlkKGNvbnRleHQpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxJREJSZXF1ZXN0
PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRo
aXMpLCAwKTsKLSAgICBtX2JhY2tlbmQtPm9wZW4obmFtZSwgcmVxdWVzdCwgY29udGV4dC0+c2Vj
dXJpdHlPcmlnaW4oKSwgY29udGV4dCwgZ2V0SW5kZXhlZERCRGF0YWJhc2VQYXRoKGNvbnRleHQp
KTsKKyAgICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdCA9IElEQk9wZW5EQlJlcXVl
c3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgdmVyc2lvbik7CisgICAg
bV9iYWNrZW5kLT5vcGVuKG5hbWUsIHZlcnNpb24sIHJlcXVlc3QsIGNvbnRleHQtPnNlY3VyaXR5
T3JpZ2luKCksIGNvbnRleHQsIGdldEluZGV4ZWREQkRhdGFiYXNlUGF0aChjb250ZXh0KSk7CiAg
ICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKK1Bhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURC
RmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIHJldHVybiBvcGVuKGNvbnRleHQs
IG5hbWUsIC0yLCBlYyk7Cit9CisKIFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+
IElEQkZhY3Rvcnk6OmRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG5h
bWUuaXNOdWxsKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnkuaAppbmRleCA0NjExY2I2YzRmZTgzOTkwYjQ3MjRhNDNiZjA5YzlhNWE5NWQ4ODhkLi4z
NjQ1YmI4MWRjN2VlOTY2OTA1ZGE2NTJjMDY0ZGE3Mzg2ZjY1M2ZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCkBAIC0zMCw3ICszMCw3IEBACiAK
ICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJ
bnRlcmZhY2UuaCIKLSNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCisjaW5jbHVkZSAiSURCT3BlbkRC
UmVxdWVzdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNTgsNyArNTgsOCBA
QCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldERhdGFiYXNlTmFtZXMo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBv
cGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IG9wZW4oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAg
IFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gb3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICBQYXNzUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBkZWxldGVEYXRhYmFzZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2Rl
Jik7CiAKICAgICBzaG9ydCBjbXAoUGFzc1JlZlB0cjxJREJLZXk+IGZpcnN0LCBQYXNzUmVmUHRy
PElEQktleT4gc2Vjb25kLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRsCmluZGV4IDAzODllYjJhYWU3ZTEyOTk1NGQ5
YWNmMDNhNTlmZmJjYzdmYmFhY2MuLmJmNzFhMmRkMjVkMWZmOTVlMjY0MzVmNGU0MWYwYzQxYjk3
NjcyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rv
cnkuaWRsCkBAIC0zMCw3ICszMCw3IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICBdIElEQkZhY3Rv
cnkgewogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1wbGVtZW50
ZWRBcz1nZXREYXRhYmFzZU5hbWVzXSBJREJSZXF1ZXN0IHdlYmtpdEdldERhdGFiYXNlTmFtZXMo
KTsKIAotICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVz
dCBvcGVuKGluIERPTVN0cmluZyBuYW1lKQorICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dF0gSURCT3BlbkRCUmVxdWVzdCBvcGVuKGluIERPTVN0cmluZyBuYW1lLCBpbiBb
T3B0aW9uYWxdIHVuc2lnbmVkIGxvbmcgbG9uZyB2ZXJzaW9uKQogICAgICAgICAgICAgcmFpc2Vz
IChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0XSBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCBkZWxldGVEYXRhYmFzZShpbiBET01T
dHJpbmcgbmFtZSkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJh
Y2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rv
cnlCYWNrZW5kSW1wbC5jcHAKaW5kZXggZGZiMTQ1N2EzMDZkYWE3YTU2OGMyMWFmNmVmYTM0NTQ2
Y2UzZmY0Ni4uMTdhOWM0ZDJlOGRkMjEyNmI3YTI1MzlmYTIxMGE0NTdlMTcxMGNlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
QmFja2VuZEltcGwuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VF
eGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJMZXZlbERCQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVk
ZSAiSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJh
bS5oPgogCkBAIC0xNDksMzIgKzE1MCwzMCBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4g
SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8UwogICAg
IHJldHVybiAwOwogfQogCi12b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBT
dHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IHBycFNlY3VyaXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyZWN0b3J5KQordm9pZCBJREJGYWN0b3J5QmFja2Vu
ZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHBy
cFNlY3VyaXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBk
YXRhRGlyZWN0b3J5KQogewogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmln
aW4gPSBwcnBTZWN1cml0eU9yaWdpbjsKICAgICBjb25zdCBTdHJpbmcgdW5pcXVlSWRlbnRpZmll
ciA9IGNvbXB1dGVVbmlxdWVJZGVudGlmaWVyKG5hbWUsIHNlY3VyaXR5T3JpZ2luLmdldCgpKTsK
IAorICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZUJhY2tlbmQ7CiAg
ICAgSURCRGF0YWJhc2VCYWNrZW5kTWFwOjppdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VCYWNrZW5k
TWFwLmZpbmQodW5pcXVlSWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ICE9IG1fZGF0YWJhc2VCYWNr
ZW5kTWFwLmVuZCgpKSB7Ci0gICAgICAgIC8vIElmIGl0J3MgYWxyZWFkeSBiZWVuIG9wZW5lZCwg
d2UgaGF2ZSB0byB3YWl0IGZvciBhbnkgcGVuZGluZwotICAgICAgICAvLyBzZXRWZXJzaW9uIGNh
bGxzIHRvIGNvbXBsZXRlLgotICAgICAgICBpdC0+c2Vjb25kLT5vcGVuQ29ubmVjdGlvbihjYWxs
YmFja3MpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IEV2ZXJ5dGhp
bmcgZnJvbSBub3cgb24gc2hvdWxkIGJlIGRvbmUgb24gYW5vdGhlciB0aHJlYWQuCi0gICAgUmVm
UHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gb3BlbkJhY2tpbmdTdG9yZShzZWN1
cml0eU9yaWdpbiwgZGF0YURpcmVjdG9yeSk7Ci0gICAgaWYgKCFiYWNraW5nU3RvcmUpIHsKLSAg
ICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0
YWJhc2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlKG5hbWUsIGJhY2tp
bmdTdG9yZS5nZXQoKSwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpLCB0aGlzLCB1bmlx
dWVJZGVudGlmaWVyKTsKLSAgICBpZiAoZGF0YWJhc2VCYWNrZW5kKSB7Ci0gICAgICAgIG1fZGF0
YWJhc2VCYWNrZW5kTWFwLnNldCh1bmlxdWVJZGVudGlmaWVyLCBkYXRhYmFzZUJhY2tlbmQuZ2V0
KCkpOwotICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPm9wZW5Db25uZWN0aW9uKGNhbGxiYWNrcyk7
CisgICAgaWYgKGl0ID09IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmVuZCgpKSB7CisgICAgICAgIFJl
ZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IG9wZW5CYWNraW5nU3RvcmUoc2Vj
dXJpdHlPcmlnaW4sIGRhdGFEaXJlY3RvcnkpOworICAgICAgICBpZiAoIWJhY2tpbmdTdG9yZSkg
eworICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZGF0YWJhc2VCYWNrZW5k
ID0gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlKG5hbWUsIGJhY2tpbmdTdG9yZS5nZXQo
KSwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpLCB0aGlzLCB1bmlxdWVJZGVudGlmaWVy
KTsKKyAgICAgICAgaWYgKGRhdGFiYXNlQmFja2VuZCkKKyAgICAgICAgICAgIG1fZGF0YWJhc2VC
YWNrZW5kTWFwLnNldCh1bmlxdWVJZGVudGlmaWVyLCBkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFs
IGVycm9yLiIpKTsKICAgICB9IGVsc2UKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJ
bnRlcm5hbCBlcnJvci4iKSk7CisgICAgICAgIGRhdGFiYXNlQmFja2VuZCA9IGl0LT5zZWNvbmQ7
CisgICAgaWYgKHZlcnNpb24gPCAwKQorICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPm9wZW5Db25u
ZWN0aW9uKGNhbGxiYWNrcyk7CisgICAgZWxzZQorICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPm9w
ZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oY2FsbGJhY2tzLCB2ZXJzaW9uKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaAppbmRleCBjYTFkMDUyODJhOGM1ZWRmNzY2
ZDVlNTU1MDhmYWUwYTljMDQ4YzY1Li5kMjZmNzQ2ODM0MmFhNmExOGRmY2RlOWJmMTc0MzY0MjI4
ZTEwNmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5QmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJGYWN0b3J5QmFja2VuZEltcGwuaApAQCAtMjksNyArMjksNiBAQAogI2RlZmluZSBJREJG
YWN0b3J5QmFja2VuZEltcGxfaAogCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZh
Y2UuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC01Nyw3ICs1Niw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSURCQmFja2luZ1N0b3JlKGNvbnN0IFN0
cmluZyYgZmlsZUlkZW50aWZpZXIpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFt
ZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7Ci0gICAgdmly
dHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKKyAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJp
bmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNz
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0
cmluZyYgZGF0YURpcik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0
cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7
CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oCmluZGV4IDQ0ZjVjNzg2ZWYy
MWVhNDcxOWY2MzY5NDI5Zjc2NzM5MDA0MDkyOTMuLjRlYTVkOGEzMzBmZDA0MWFmNTFjYjJhOTU0
NGVhNDhhY2Y2NjZmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNTQsNyArNTQs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UoKSB7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihj
b25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRh
dGFEaXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGlu
dDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURp
cikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5h
bWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4s
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVs
REJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMzJlMmY2ODE1Nzk0MDlhMDkwOGQyOWExODcy
YzBjZGM1NmI4OWVmOS4uYWI4NDVkYTg5NzRhZDRjOGE4OWYxMzYzZWZlYTA0MTEwOTYyNzhlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTg3LDYgKzg3LDEyIEBAIHN0YXRpYyBib29sIHB1
dEludChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleSwgaW50NjRf
dCB2YWx1ZSkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4KK3N0YXRp
YyBib29sIHB1dFZhckludChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4m
IGtleSwgaW50NjRfdCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gZGItPnB1dChrZXksIGVuY29kZVZh
ckludCh2YWx1ZSkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgog
c3RhdGljIGJvb2wgZ2V0U3RyaW5nKERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3Rvcjxj
aGFyPiYga2V5LCBTdHJpbmcmIGZvdW5kU3RyaW5nKQogewogICAgIFZlY3RvcjxjaGFyPiByZXN1
bHQ7CkBAIC0xMjksNyArMTM1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciog
bmFtZSgpIGNvbnN0IHsgcmV0dXJuICJpZGJfY21wMSI7IH0KIH07CiAKLXN0YXRpYyBib29sIHNl
dFVwTWV0YWRhdGEoTGV2ZWxEQkRhdGFiYXNlKiBkYikKK3N0YXRpYyBib29sIHNldFVwTWV0YWRh
dGEoTGV2ZWxEQkRhdGFiYXNlKiBkYiwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCiB7CiAgICAgY29u
c3QgVmVjdG9yPGNoYXI+IG1ldGFEYXRhS2V5ID0gU2NoZW1hVmVyc2lvbktleTo6ZW5jb2RlKCk7
CiAKQEAgLTIwOCw3ICsyMTQsNyBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6b3BlbihTZWN1cml0eU9yaWdpbiogc2VjdXJpdAogICAgIFJlZlB0
cjxJREJMZXZlbERCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUoYWRvcHRSZWYobmV3IElEQkxl
dmVsREJCYWNraW5nU3RvcmUoZmlsZUlkZW50aWZpZXIsIGZhY3RvcnksIGRiLnJlbGVhc2UoKSkp
KTsKICAgICBiYWNraW5nU3RvcmUtPm1fY29tcGFyYXRvciA9IGNvbXBhcmF0b3IucmVsZWFzZSgp
OwogCi0gICAgaWYgKCFzZXRVcE1ldGFkYXRhKGJhY2tpbmdTdG9yZS0+bV9kYi5nZXQoKSkpCisg
ICAgaWYgKCFzZXRVcE1ldGFkYXRhKGJhY2tpbmdTdG9yZS0+bV9kYi5nZXQoKSwgZmlsZUlkZW50
aWZpZXIpKQogICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+KCk7CiAK
ICAgICByZXR1cm4gYmFja2luZ1N0b3JlLnJlbGVhc2UoKTsKQEAgLTIzNCw3ICsyNDAsNyBAQCB2
b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldERhdGFiYXNlTmFtZXMoVmVjdG9yPFN0cmlu
Zz4mIGZvdW5kTmFtZXMpCiAgICAgfQogfQogCi1ib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6
OmdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5k
VmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCkKK2Jvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6
Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRT
dHJpbmdWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZEludFZlcnNpb24sIGludDY0X3QmIGZvdW5kSWQp
CiB7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IGtleSA9IERhdGFiYXNlTmFtZUtleTo6ZW5jb2Rl
KG1faWRlbnRpZmllciwgbmFtZSk7CiAKQEAgLTI0Miw3ICsyNDgsMTEgQEAgYm9vbCBJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFt
ZSwgU3RyaW5nJgogICAgIGlmICghb2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG9r
ID0gZ2V0U3RyaW5nKG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShmb3Vu
ZElkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VyVmVyc2lvbiksIGZvdW5kVmVyc2lvbik7Cisg
ICAgb2sgPSBnZXRTdHJpbmcobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2Rl
KGZvdW5kSWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgZm91bmRTdHJpbmdW
ZXJzaW9uKTsKKyAgICBpZiAoIW9rKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBvayA9
IGdldEludChtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoZm91bmRJZCwg
RGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlckludFZlcnNpb24pLCBmb3VuZEludFZlcnNpb24pOwog
ICAgIGlmICghb2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjY0LDcgKzI3NCw3IEBA
IHN0YXRpYyBpbnQ2NF90IGdldE5ld0RhdGFiYXNlSWQoTGV2ZWxEQkRhdGFiYXNlKiBkYikKICAg
ICByZXR1cm4gZGF0YWJhc2VJZDsKIH0KIAotYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpj
cmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2ZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkKK2Jvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6
Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbiwgY29uc3QgaW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkKIHsK
ICAgICByb3dJZCA9IGdldE5ld0RhdGFiYXNlSWQobV9kYi5nZXQoKSk7CiAgICAgaWYgKHJvd0lk
IDwgMCkKQEAgLTI3NSw2ICsyODUsMTcgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpj
cmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghcHV0U3RyaW5nKG1fZGIuZ2V0KCksIERhdGFiYXNl
TWV0YURhdGFLZXk6OmVuY29kZShyb3dJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlclZlcnNp
b24pLCB2ZXJzaW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghcHV0VmFySW50
KG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShyb3dJZCwgRGF0YWJhc2VN
ZXRhRGF0YUtleTo6VXNlckludFZlcnNpb24pLCBpbnRWZXJzaW9uKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIElEQkxldmVsREJCYWNraW5nU3Rv
cmU6OnVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbihpbnQ2NF90IHJvd0lkLCBpbnQ2NF90IGlu
dFZlcnNpb24pCit7CisgICAgQVNTRVJUKG1fY3VycmVudFRyYW5zYWN0aW9uKTsKKyAgICBpZiAo
IXB1dFZhckludChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtl
eTo6ZW5jb2RlKHJvd0lkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VySW50VmVyc2lvbiksIGlu
dFZlcnNpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtMzA1LDcgKzMyNiw4IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRl
RGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKQogCiAgICAgaW50NjRfdCBkYXRhYmFzZUlkOwog
ICAgIFN0cmluZyB2ZXJzaW9uOwotICAgIGlmICghZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShuYW1l
LCB2ZXJzaW9uLCBkYXRhYmFzZUlkKSkgeworICAgIGludDY0X3QgaW50VmVyc2lvbjsKKyAgICBp
ZiAoIWdldElEQkRhdGFiYXNlTWV0YURhdGEobmFtZSwgdmVyc2lvbiwgaW50VmVyc2lvbiwgZGF0
YWJhc2VJZCkpIHsKICAgICAgICAgdHJhbnNhY3Rpb24tPnJvbGxiYWNrKCk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAppbmRleCBjNWE5ZTJlZTMwOWU4Y2Ez
ZmQ3ZjcwZjBhYTJiYjgwY2VjMDQ2YjJlLi45YjMzNTMyNDgzNWZkMDk1NDVkYmNkYzRhOGExMGJj
ODA1ZmYzZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCkBAIC00NSw5ICs0NSwxMCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+SURCTGV2ZWxEQkJhY2tpbmdTdG9yZSgpOwogCiAgICAgdmlydHVhbCB2
b2lkIGdldERhdGFiYXNlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMpOwotICAgIHZp
cnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgU3Ry
aW5nJiBmb3VuZFZlcnNpb24sIGludDY0X3QmIGZvdW5kSWQpOwotICAgIHZpcnR1YWwgYm9vbCBj
cmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2ZXJzaW9uLCBpbnQ2NF90JiByb3dJZCk7CisgICAgdmlydHVhbCBib29sIGdldElEQkRhdGFi
YXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50
NjRfdCYgZm91bmRJbnRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElkKTsKKyAgICB2aXJ0dWFsIGJv
b2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmVyc2lvbiwgY29uc3QgaW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90JiByb3dJZCk7
CiAgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoaW50NjRfdCByb3dJ
ZCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKKyAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0
YWJhc2VJbnRWZXJzaW9uKGludDY0X3Qgcm93SWQsIGludDY0X3QgaW50VmVyc2lvbik7CiAgICAg
dmlydHVhbCBib29sIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGlu
dDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxJREJL
ZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZEF1dG9JbmNyZW1lbnRG
bGFncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZl
bERCQ29kaW5nLmgKaW5kZXggMzExM2U3ZDhhOTg4MmJkN2Q4ZTc3OWNhZGFhOTdlZDgyMWM1YThl
OC4uM2ZjZGM0NmQzNzIzN2RkYmMzMTA2Y2QxMDFkMTM1ZTQ2NzIxOGI3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaApAQCAt
MTQwLDcgKzE0MCw4IEBAIHB1YmxpYzoKICAgICAgICAgT3JpZ2luTmFtZSA9IDAsCiAgICAgICAg
IERhdGFiYXNlTmFtZSA9IDEsCiAgICAgICAgIFVzZXJWZXJzaW9uID0gMiwKLSAgICAgICAgTWF4
T2JqZWN0U3RvcmVJZCA9IDMKKyAgICAgICAgTWF4T2JqZWN0U3RvcmVJZCA9IDMsCisgICAgICAg
IFVzZXJJbnRWZXJzaW9uID0gNAogICAgIH07CiAKICAgICBzdGF0aWMgVmVjdG9yPGNoYXI+IGVu
Y29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIE1ldGFEYXRhVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY5N2E3MmEwY2EyYzY0MjMyZmFiNGZlMDRhYjg4OTE5MDUwMzg5ZGIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0
LmNwcApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIklEQk9wZW5EQlJlcXVlc3QuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQor
CisjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJJREJQZW5kaW5nVHJhbnNhY3Rp
b25Nb25pdG9yLmgiCisjaW5jbHVkZSAiSURCVXBncmFkZU5lZWRlZEV2ZW50LmgiCisjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bh
c3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGlu
dDY0X3QgdmVyc2lvbikKK3sKKyAgICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdChh
ZG9wdFJlZihuZXcgSURCT3BlbkRCUmVxdWVzdChjb250ZXh0LCBzb3VyY2UsIHZlcnNpb24pKSk7
CisgICAgcmVxdWVzdC0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIHJlcXVlc3QucmVs
ZWFzZSgpOworfQorCitJREJPcGVuREJSZXF1ZXN0OjpJREJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGludDY0
X3QgdmVyc2lvbikKKyAgICA6IElEQlJlcXVlc3QoY29udGV4dCwgc291cmNlLCAwKQorICAgICwg
bV92ZXJzaW9uKHZlcnNpb24pCit7CisgICAgQVNTRVJUKCFtX3Jlc3VsdCk7Cit9CisKK0lEQk9w
ZW5EQlJlcXVlc3Q6On5JREJPcGVuREJSZXF1ZXN0KCkKK3sKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBJREJPcGVuREJSZXF1ZXN0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvcklEQk9wZW5EQlJlcXVlc3Q7Cit9CisKK3ZvaWQg
SURCT3BlbkRCUmVxdWVzdDo6b25CbG9ja2VkKGludDY0X3Qgb2xkVmVyc2lvbikKK3sKKyAgICBB
U1NFUlQoIW1fZXJyb3JDb2RlICYmIG1fZXJyb3JNZXNzYWdlLmlzTnVsbCgpICYmICFtX3Jlc3Vs
dCk7CisgICAgZW5xdWV1ZUV2ZW50KElEQlVwZ3JhZGVOZWVkZWRFdmVudDo6Y3JlYXRlKG9sZFZl
cnNpb24sIG1fdmVyc2lvbiwgZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCkpOworfQorCit2b2lk
IElEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFkZU5lZWRlZChpbnQ2NF90IGN1cnJlbnRWZXJzaW9u
LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gcHJwVHJhbnNhY3Rp
b25CYWNrZW5kLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gcHJwRGF0
YWJhc2VCYWNrZW5kKQoreworICAgIEFTU0VSVCghbV9lcnJvckNvZGUpOworICAgIEFTU0VSVCht
X2Vycm9yTWVzc2FnZS5pc051bGwoKSk7CisgICAgQVNTRVJUKCFtX2Vycm9yKTsKKy8vICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoIW1fcmVzdWx0LCAiaW4gb2JqZWN0ICVwIiwgdGhpcyk7CisgICAg
aWYgKG1fY29udGV4dFN0b3BwZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0
YWJhc2VCYWNrZW5kID0gcHJwRGF0YWJhc2VCYWNrZW5kOworICAgIFJlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uQmFja2VuZCA9IHBycFRyYW5zYWN0aW9u
QmFja2VuZDsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlID0gSURCRGF0YWJh
c2U6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGRhdGFiYXNlQmFja2VuZCk7CisK
KyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGZyb250ZW5kID0gSURCVHJhbnNhY3Rpb246OmNy
ZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRyYW5zYWN0aW9uQmFja2VuZCwgSURCVHJh
bnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFLCBpZGJEYXRhYmFzZS5nZXQoKSwgdGhpcyk7CisgICAg
dHJhbnNhY3Rpb25CYWNrZW5kLT5zZXRDYWxsYmFja3MoZnJvbnRlbmQuZ2V0KCkpOworICAgIG1f
dHJhbnNhY3Rpb24gPSBmcm9udGVuZDsKKyAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGlk
YkRhdGFiYXNlLnJlbGVhc2UoKSk7CisKKyAgICBlbnF1ZXVlRXZlbnQoSURCVXBncmFkZU5lZWRl
ZEV2ZW50OjpjcmVhdGUoY3VycmVudFZlcnNpb24sIG1fdmVyc2lvbiwgZXZlbnROYW1lcygpLnVw
Z3JhZGVuZWVkZWRFdmVudCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRC
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVx
dWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmVjNWI4YmNjNjc3MzAzNWE0MTVjYzk0ZjFhMjUzYTRmYjE4NDUx
ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPcGVuREJSZXF1ZXN0LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCT3Bl
bkRCUmVxdWVzdF9oCisjZGVmaW5lIElEQk9wZW5EQlJlcXVlc3RfaAorCisjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgSURCT3BlbkRCUmVxdWVzdCA6IHB1YmxpYyBJREJSZXF1ZXN0IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGludDY0
X3QgdmVyc2lvbik7CisgICAgdmlydHVhbCB+SURCT3BlbkRCUmVxdWVzdCgpOworCisgICAgdmly
dHVhbCB2b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U+KSBPVkVSUklERTsKKworICAgIC8vIEV2ZW50VGFyZ2V0Cisg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKwor
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYmxvY2tlZCk7CisgICAgREVGSU5F
X0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih1cGdyYWRlbmVlZGVkKTsKKworcHJpdmF0ZToKKyAg
ICBJREJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
QkFueT4gc291cmNlLCBpbnQ2NF90IHZlcnNpb24pOworCisgICAgdmlydHVhbCBib29sIGlzT3Bl
bkRCUmVxdWVzdCgpIGNvbnN0IE9WRVJSSURFCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBpbnQ2NF90IG1fdmVyc2lvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjZW5kaWYgLy8g
SURCT3BlbkRCUmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyNjZjNzM1OWEwYTY1ZTY5
NWIwODQ1ZGU1ZjUzNTgzYTZjZDgyOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmlkbApAQCAtMCwwICsxLDM2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworbW9kdWxlIHN0b3JhZ2UgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29u
ZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRSwKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0LAorICAg
ICAgICBFdmVudFRhcmdldAorICAgIF0gSURCT3BlbkRCUmVxdWVzdCA6IElEQlJlcXVlc3Qgewor
ICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmJsb2NrZWQ7CisgICAgICAgIGF0dHJp
YnV0ZSBFdmVudExpc3RlbmVyIG9udXBncmFkZW5lZWRlZDsKKyAgICB9OworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCA1NGFmZTAz
YTZmMmVkZGRjMjNlZWNmMDg1MjA1YjViNTcyY2E2ODFmLi43ZTIxNWE1YjQ2MTFmMmMwNzY5YTQ0
ZmQ1NTIyMjBjNzk4ZmM3OGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtNTMsMTQgKzUzLDE1IEBAIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSCiAKIElEQlJlcXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX3Jl
c3VsdCgwKQogICAgICwgbV9lcnJvckNvZGUoMCkKLSAgICAsIG1fc291cmNlKHNvdXJjZSkKKyAg
ICAsIG1fY29udGV4dFN0b3BwZWQoZmFsc2UpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0
aW9uKQorICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAgICwgbV9yZWFkeVN0YXRlKFBFTkRJTkcp
CiAgICAgLCBtX3JlcXVlc3RBYm9ydGVkKGZhbHNlKQogICAgICwgbV9yZXF1ZXN0RmluaXNoZWQo
ZmFsc2UpCiAgICAgLCBtX2N1cnNvckZpbmlzaGVkKGZhbHNlKQotICAgICwgbV9jb250ZXh0U3Rv
cHBlZChmYWxzZSkKICAgICAsIG1fY3Vyc29yVHlwZShJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
OjpJbnZhbGlkQ3Vyc29yVHlwZSkKICAgICAsIG1fY3Vyc29yRGlyZWN0aW9uKElEQkN1cnNvcjo6
TkVYVCkKICAgICAsIG1fY3Vyc29yKDApCkBAIC0yNjEsMTQgKzI2MiwyMCBAQCB2b2lkIElEQlJl
cXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4g
YmFja2VuZCkKICAgICBJREJfVFJBQ0UoIklEQlJlcXVlc3Q6Om9uU3VjY2VzcyhJREJEYXRhYmFz
ZSkiKTsKICAgICBpZiAobV9yZXF1ZXN0QWJvcnRlZCkKICAgICAgICAgcmV0dXJuOwotICAgIEFT
U0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkgJiYgIW1fZXJyb3Ig
JiYgIW1fcmVzdWx0KTsKKyAgICBBU1NFUlQoIW1fZXJyb3JDb2RlICYmIG1fZXJyb3JNZXNzYWdl
LmlzTnVsbCgpICYmICFtX2Vycm9yKTsKICAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8SURC
RGF0YWJhc2U+IGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIGJhY2tlbmQpOwotICAgIGlkYkRhdGFiYXNlLT5yZWdpc3RlckZyb250ZW5k
Q2FsbGJhY2tzKCk7Ci0KLSAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGlkYkRhdGFiYXNl
LnJlbGVhc2UoKSk7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZTsKKyAgICBp
ZiAobV9yZXN1bHQpIHsKKyAgICAgICAgaWRiRGF0YWJhc2UgPSBtX3Jlc3VsdC0+aWRiRGF0YWJh
c2UoKTsKKyAgICAgICAgQVNTRVJUKGlkYkRhdGFiYXNlKTsKKyAgICAgICAgaWRiRGF0YWJhc2Ut
PnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZGJE
YXRhYmFzZSA9IElEQkRhdGFiYXNlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBi
YWNrZW5kKTsKKyAgICAgICAgaWRiRGF0YWJhc2UtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3Mo
KTsKKyAgICAgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShpZGJEYXRhYmFzZS5yZWxlYXNl
KCkpOworICAgIH0KICAgICBlbnF1ZXVlRXZlbnQoY3JlYXRlU3VjY2Vzc0V2ZW50KCkpOwogfQog
CkBAIC0zOTIsNyArMzk5LDcgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NS
ZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgIEFTU0VSVChtX2VucXVldWVkRXZlbnRzLnNpemUoKSk7
CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKGV2ZW50
LT50YXJnZXQoKSA9PSB0aGlzKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcmVhZHlTdGF0
ZSA8IERPTkUsICJtX3JlYWR5U3RhdGUgPCBET05FKCVkKSwgd2FzICVkIiwgRE9ORSwgbV9yZWFk
eVN0YXRlKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcmVhZHlTdGF0ZSA8IERPTkUgfHwg
aXNPcGVuREJSZXF1ZXN0KCksICJXaGVuIGRpc3BhdGNoaW5nIGV2ZW50ICVzLCBtX3JlYWR5U3Rh
dGUgPCBET05FKCVkKSwgd2FzICVkIiwgZXZlbnQtPnR5cGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCBET05FLCBtX3JlYWR5U3RhdGUpOwogICAgIGlmIChldmVudC0+dHlwZSgpICE9IGV2ZW50
TmFtZXMoKS5ibG9ja2VkRXZlbnQpCiAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IERPTkU7CiAKQEAg
LTQyMywxNyArNDMwLDE4IEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50PiBldmVudCkKICAgICB9CiAKICAgICAvLyBGSVhNRTogV2hlbiB3ZSBhbGxvdyBj
dXN0b20gZXZlbnQgZGlzcGF0Y2hpbmcsIHRoaXMgd2lsbCBwcm9iYWJseSBuZWVkIHRvIGNoYW5n
ZS4KLSAgICBBU1NFUlQoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50
IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgfHwgZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50KTsKLSAgICBjb25zdCBib29sIHNldFRy
YW5zYWN0aW9uQWN0aXZlID0gbV90cmFuc2FjdGlvbiAmJiAoZXZlbnQtPnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkuc3VjY2Vzc0V2ZW50IHx8IChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5l
cnJvckV2ZW50ICYmIG1fZXJyb3JDb2RlICE9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJP
UlRfRVJSKSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5zdWNjZXNzRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZXJy
b3JFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibG9ja2VkRXZlbnQgfHwg
ZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkudXBncmFkZW5lZWRlZEV2ZW50LCAiZXZlbnQg
dHlwZSB3YXMgJXMiLCBldmVudC0+dHlwZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
IGNvbnN0IGJvb2wgc2V0VHJhbnNhY3Rpb25BY3RpdmUgPSBtX3RyYW5zYWN0aW9uICYmIChldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9
PSBldmVudE5hbWVzKCkudXBncmFkZW5lZWRlZEV2ZW50IHx8IChldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5lcnJvckV2ZW50ICYmIG1fZXJyb3JDb2RlICE9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpJREJfQUJPUlRfRVJSKSk7CiAKICAgICBpZiAoc2V0VHJhbnNhY3Rpb25BY3RpdmUpCiAg
ICAgICAgIG1fdHJhbnNhY3Rpb24tPnNldEFjdGl2ZSh0cnVlKTsKKwogICAgIGJvb2wgZG9udFBy
ZXZlbnREZWZhdWx0ID0gSURCRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaChldmVudC5nZXQoKSwg
dGFyZ2V0cyk7CiAgICAgaWYgKHNldFRyYW5zYWN0aW9uQWN0aXZlKQogICAgICAgICBtX3RyYW5z
YWN0aW9uLT5zZXRBY3RpdmUoZmFsc2UpOwogCi0gICAgLy8gSWYgdGhlIHJlc3VsdCB3YXMgb2Yg
dHlwZSBJREJDdXJzb3IsIG9yIGEgb25CbG9ja2VkIGV2ZW50LCB0aGVuIHdlJ2xsIGZpcmUgYWdh
aW4uCi0gICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCAm
JiAoIWN1cnNvclRvTm90aWZ5IHx8IG1fY3Vyc29yRmluaXNoZWQpKQorICAgIC8vIElmIHRoZSBy
ZXN1bHQgd2FzIG9mIHR5cGUgSURCQ3Vyc29yLCBvciB3ZSdyZSBmaXJpbmcgYmxvY2tlZCBvciB1
cGdyYWRlbmVlZGVkLCB0aGVuIHdlJ2xsIGZpcmUgYWdhaW4uCisgICAgaWYgKGV2ZW50LT50eXBl
KCkgIT0gZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCAmJiAoIWN1cnNvclRvTm90aWZ5IHx8IG1f
Y3Vyc29yRmluaXNoZWQpICYmIGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLnVwZ3JhZGVu
ZWVkZWRFdmVudCkKICAgICAgICAgbV9yZXF1ZXN0RmluaXNoZWQgPSB0cnVlOwogCiAgICAgaWYg
KGN1cnNvclRvTm90aWZ5KQpAQCAtNDYzLDYgKzQ3MSwxMiBAQCB2b2lkIElEQlJlcXVlc3Q6OnVu
Y2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKQogICAgIH0KIH0KIAordm9pZCBJREJSZXF1
ZXN0OjpjbGVhclRyYW5zYWN0aW9uUHJvcGVydHkoKQoreworICAgIEFTU0VSVChtX3RyYW5zYWN0
aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSk7CisgICAgbV90cmFuc2FjdGlvbi5jbGVhcigpOworfQor
CiB2b2lkIElEQlJlcXVlc3Q6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkK
IHsKICAgICBBU1NFUlQoIW1fcmVxdWVzdEZpbmlzaGVkKTsKQEAgLTQ3MCw3ICs0ODQsNyBAQCB2
b2lkIElEQlJlcXVlc3Q6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAg
ICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQobV9yZWFkeVN0YXRlIDwgRE9ORSk7CisgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShtX3JlYWR5U3RhdGUgPCBET05FIHx8IGlzT3BlbkRCUmVxdWVzdCgp
LCAiV2hlbiBxdWV1ZWluZyBldmVudCAlcywgbV9yZWFkeVN0YXRlIDwgRE9ORSglZCksIHdhcyAl
ZCIsIGV2ZW50LT50eXBlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgRE9ORSwgbV9yZWFkeVN0
YXRlKTsKIAogICAgIEV2ZW50UXVldWUqIGV2ZW50UXVldWUgPSBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmV2ZW50UXVldWUoKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmluZGV4IDA2Y2E5ZGI5
YTc5M2Y4Mzc4MTMxZDlmMDc5MjNmYjYxMTU0NTBiMGIuLmFlZTZmMDEzNDhmOTVmMTFmMTQ0YWEy
YWYyMWMzM2Y2ZDVmZWM5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJSZXF1ZXN0LmgKQEAgLTkyLDYgKzkyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCk7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
c1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+ID4mKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IC8vIE5vdCBpbXBsZW1lbnRlZC4g
Q2FsbGJhY2sgc2hvdWxkIG5vdCByZWFjaCB0aGUgcmVuZGVyZXIgc2lkZS4KICAgICB2aXJ0dWFs
IHZvaWQgb25CbG9ja2VkKCk7CisgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4
aXN0aW5nVmVyc2lvbikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgLy8gQWN0aXZl
RE9NT2JqZWN0CiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IE9W
RVJSSURFOwpAQCAtMTA0LDYgKzEwNSw4IEBAIHB1YmxpYzoKICAgICBib29sIGRpc3BhdGNoRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBF
dmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOyB9CiAgICAgdmlydHVhbCB2b2lk
IHVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKTsKIAorICAgIHZvaWQgY2xlYXJUcmFu
c2FjdGlvblByb3BlcnR5KCk7CisKICAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJD
YWxsYmFja3M+OjpyZWY7CiAgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SURCQ2FsbGJh
Y2tzPjo6ZGVyZWY7CiAKQEAgLTExNCw2ICsxMTcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdW5zaWdu
ZWQgc2hvcnQgbV9lcnJvckNvZGU7CiAgICAgU3RyaW5nIG1fZXJyb3JNZXNzYWdlOwogICAgIFJl
ZlB0cjxET01FcnJvcj4gbV9lcnJvcjsKKyAgICBib29sIG1fY29udGV4dFN0b3BwZWQ7CisgICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwogCiBwcml2YXRlOgogICAgIC8v
IEV2ZW50VGFyZ2V0CkBAIC0xMjMsMTUgKzEyOCwxNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
RXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKIAogICAgIHZvaWQgc2V0
UmVzdWx0Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPiwgSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZTo6Q3Vyc29yVHlwZSk7CisgICAgdmlydHVhbCBib29sIGlzT3BlbkRCUmVxdWVzdCgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAgICAgUmVmUHRyPElE
QkFueT4gbV9zb3VyY2U7Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9u
OwogCiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAgICAgYm9vbCBtX3JlcXVlc3RBYm9y
dGVkOyAvLyBNYXkgYmUgYWJvcnRlZCBieSB0cmFuc2FjdGlvbiB0aGVuIHJlY2VpdmUgYXN5bmMg
b25zdWNjZXNzOyBpZ25vcmUgdnMuIGFzc2VydC4KICAgICBib29sIG1fcmVxdWVzdEZpbmlzaGVk
OyAvLyBJcyBpdCBwb3NzaWJsZSB0aGF0IHdlJ2xsIGZpcmUgYW55IG1vcmUgZXZlbnRzPyBJZiBu
b3QsIHdlJ3JlIGZpbmlzaGVkLgogICAgIGJvb2wgbV9jdXJzb3JGaW5pc2hlZDsKLSAgICBib29s
IG1fY29udGV4dFN0b3BwZWQ7CiAgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX2VucXVldWVk
RXZlbnRzOwogCiAgICAgLy8gT25seSB1c2VkIGlmIHRoZSByZXN1bHQgdHlwZSB3aWxsIGJlIGEg
Y3Vyc29yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwCmluZGV4IGY1ZTc2MWU2YTYyYzc1ODExM2QwZTkzZjgwMDUzNjY3MjU2MTkz
ZGQuLmM3MDA5MDgwMGMyYWUyMGQ0YzIzNGJjOGE1ZmE5ODNmYmYxNTUzYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJREJJbmRleC5oIgogI2luY2x1ZGUgIklEQk9iamVj
dFN0b3JlLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgiCisj
aW5jbHVkZSAiSURCT3BlbkRCUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlBlbmRpbmdUcmFuc2Fj
dGlvbk1vbml0b3IuaCIKICNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAKQEAgLTQzLDcgKzQ0LDE1
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURC
VHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCVHJhbnNh
Y3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiKQogewotICAgIFJlZlB0cjxJREJUcmFu
c2FjdGlvbj4gdHJhbnNhY3Rpb24oYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uKGNvbnRleHQs
IGJhY2tlbmQsIG1vZGUsIGRiKSkpOworICAgIC8vIEZJWE1FOiBUcnkgdG8gY29uc3RydWN0IGEg
dGVzdCB3aGVyZSB0aGlzIG91dGxpdmVzIG9wZW5EQlJlcXVlc3QgYW5kIHdlCisgICAgLy8gZ2V0
IGEgdXNlIGFmdGVyIGZyZWUuCisgICAgSURCT3BlbkRCUmVxdWVzdCogb3BlbkRCUmVxdWVzdCA9
IDA7CisgICAgcmV0dXJuIGNyZWF0ZShjb250ZXh0LCBiYWNrZW5kLCBtb2RlLCBkYiwgb3BlbkRC
UmVxdWVzdCk7Cit9CisKK1Bhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQlRyYW5zYWN0aW9u
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQlRyYW5zYWN0aW9uOjpNb2Rl
IG1vZGUsIElEQkRhdGFiYXNlKiBkYiwgSURCT3BlbkRCUmVxdWVzdCogb3BlbkRCUmVxdWVzdCkK
K3sKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFkb3B0UmVmKG5ldyBJ
REJUcmFuc2FjdGlvbihjb250ZXh0LCBiYWNrZW5kLCBtb2RlLCBkYiwgb3BlbkRCUmVxdWVzdCkp
KTsKICAgICB0cmFuc2FjdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHRyYW5z
YWN0aW9uLnJlbGVhc2UoKTsKIH0KQEAgLTc5LDEwICs4OCwxMSBAQCBjb25zdCBBdG9taWNTdHJp
bmcmIElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlTGVnYWN5KCkKIH0KIAogCi1JREJUcmFu
c2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQlRy
YW5zYWN0aW9uOjpNb2RlIG1vZGUsIElEQkRhdGFiYXNlKiBkYikKK0lEQlRyYW5zYWN0aW9uOjpJ
REJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCVHJhbnNhY3Rpb246
Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiLCBJREJPcGVuREJSZXF1ZXN0KiBvcGVuREJSZXF1
ZXN0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX2JhY2tl
bmQoYmFja2VuZCkKICAgICAsIG1fZGF0YWJhc2UoZGIpCisgICAgLCBtX29wZW5EQlJlcXVlc3Qo
b3BlbkRCUmVxdWVzdCkKICAgICAsIG1fbW9kZShtb2RlKQogICAgICwgbV9hY3RpdmUodHJ1ZSkK
ICAgICAsIG1fc3RhdGUoVW51c2VkKQpAQCAtMTgyLDcgKzE5Miw3IEBAIHZvaWQgSURCVHJhbnNh
Y3Rpb246Om9iamVjdFN0b3JlRGVsZXRlZChjb25zdCBTdHJpbmcmIG5hbWUpCiAKIHZvaWQgSURC
VHJhbnNhY3Rpb246OnNldEFjdGl2ZShib29sIGFjdGl2ZSkKIHsKLSAgICBBU1NFUlQobV9zdGF0
ZSAhPSBGaW5pc2hlZCk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3N0YXRlICE9IEZpbmlz
aGVkLCAiQSBmaW5pc2hlZCB0cmFuc2FjdGlvbiB0cmllZCB0byBzZXRBY3RpdmUoJXMpIGluICVw
IiwgYWN0aXZlID8gInRydWUiIDogImZhbHNlIiwgdGhpcyk7CiAgICAgaWYgKG1fc3RhdGUgPT0g
RmluaXNoaW5nKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gVW51c2Vk
IHx8IG1fc3RhdGUgPT0gVXNlZCk7CkBAIC0zNzIsNyArMzgyLDEwIEBAIGJvb2wgSURCVHJhbnNh
Y3Rpb246OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAKICAgICAvLyBG
SVhNRTogV2hlbiB3ZSBhbGxvdyBjdXN0b20gZXZlbnQgZGlzcGF0Y2hpbmcsIHRoaXMgd2lsbCBw
cm9iYWJseSBuZWVkIHRvIGNoYW5nZS4KICAgICBBU1NFUlQoZXZlbnQtPnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkuY29tcGxldGVFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5h
Ym9ydEV2ZW50KTsKLSAgICByZXR1cm4gSURCRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaChldmVu
dC5nZXQoKSwgdGFyZ2V0cyk7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IElEQkV2ZW50RGlzcGF0
Y2hlcjo6ZGlzcGF0Y2goZXZlbnQuZ2V0KCksIHRhcmdldHMpOworICAgIGlmIChtX29wZW5EQlJl
cXVlc3QpCisgICAgICAgIG1fb3BlbkRCUmVxdWVzdC0+Y2xlYXJUcmFuc2FjdGlvblByb3BlcnR5
KCk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBib29sIElEQlRyYW5zYWN0aW9uOjpj
YW5TdXNwZW5kKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IDMwMzc4NjI3ZmYwZjMyZTQxNDAwYTE0ZGQyNTFiNTIy
ZWZkZTBjNGEuLjBiNjdhYzk4N2U0NzY0NmM0MWM2ZjI4OGJkODhjZGNjOTNjOGE0MDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApA
QCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJREJDdXJzb3I7CiBj
bGFzcyBJREJEYXRhYmFzZTsKIGNsYXNzIElEQk9iamVjdFN0b3JlOworY2xhc3MgSURCT3BlbkRC
UmVxdWVzdDsKIAogY2xhc3MgSURCVHJhbnNhY3Rpb24gOiBwdWJsaWMgSURCVHJhbnNhY3Rpb25D
YWxsYmFja3MsIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBw
dWJsaWM6CkBAIC01Niw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBNb2RlLCBJREJEYXRh
YmFzZSopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiwgTW9kZSwgSURCRGF0YWJhc2UqLCBJREJPcGVuREJSZXF1ZXN0Kik7CiAgICAgdmly
dHVhbCB+SURCVHJhbnNhY3Rpb24oKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IG1vZGVSZWFkT25seSgpOwpAQCAtMTE5LDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBS
ZWZDb3VudGVkPElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPjo6ZGVyZWY7CiAKIHByaXZhdGU6Ci0g
ICAgSURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwgTW9kZSwgSURCRGF0YWJhc2UqKTsKKyAgICBJ
REJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBNb2RlLCBJREJEYXRhYmFzZSosIElEQk9wZW5EQlJl
cXVlc3QqKTsKIAogICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAg
ICB2b2lkIGNsb3NlT3BlbkN1cnNvcnMoKTsKQEAgLTE0Miw2ICsxNDQsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV9iYWNrZW5kOwog
ICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gbV9kYXRhYmFzZTsKKyAgICBJREJPcGVuREJSZXF1ZXN0
KiBtX29wZW5EQlJlcXVlc3Q7CiAgICAgY29uc3QgTW9kZSBtX21vZGU7CiAgICAgYm9vbCBtX2Fj
dGl2ZTsKICAgICBTdGF0ZSBtX3N0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAppbmRl
eCA5NGQzMGRjOTM2OTllYjkxMzZmNmFiZDcxYmIwNjczZWJiYWJiZGZjLi43MjI3ZTE5MGVkMjFi
OWRkMjg4NDUzMzRhZGE5MGQ0NmNhYzUxNTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNw
cApAQCAtMjI2LDYgKzIyNiw4IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y29t
bWl0KCkKICAgICBlbHNlCiAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkFib3J0KCk7CiAKKyAgICBt
X2RhdGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVkQW5kRXZlbnRzRmlyZWQodGhpcyk7CisKICAg
ICBtX2RhdGFiYXNlID0gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjEy
MDU0NThlNGY0Nzk1OWEzZWM4OTA0YmE1NjA2YzJmMTJkMTlhOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5j
cHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJREJVcGdyYWRlTmVlZGVkRXZlbnQuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQorCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIklEQkFueS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8SURCVXBncmFkZU5lZWRlZEV2ZW50PiBJREJV
cGdyYWRlTmVlZGVkRXZlbnQ6OmNyZWF0ZShpbnQ2NF90IG9sZFZlcnNpb24sIGludDY0X3QgbmV3
VmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJREJVcGdyYWRlTmVlZGVkRXZlbnQob2xkVmVyc2lvbiwgbmV3VmVyc2lvbiwg
ZXZlbnRUeXBlKSk7Cit9CisKK0lEQlVwZ3JhZGVOZWVkZWRFdmVudDo6SURCVXBncmFkZU5lZWRl
ZEV2ZW50KGludDY0X3Qgb2xkVmVyc2lvbiwgaW50NjRfdCBuZXdWZXJzaW9uLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSkKKyAgICA6IEV2ZW50KGV2ZW50VHlwZSwgZmFsc2UgLypjYW5C
dWJibGUqLywgZmFsc2UgLypjYW5jZWxhYmxlKi8pCisgICAgLCBtX29sZFZlcnNpb24ob2xkVmVy
c2lvbikKKyAgICAsIG1fbmV3VmVyc2lvbihuZXdWZXJzaW9uKQoreworfQorCitJREJVcGdyYWRl
TmVlZGVkRXZlbnQ6On5JREJVcGdyYWRlTmVlZGVkRXZlbnQoKQoreworfQorCitpbnQ2NF90IElE
QlVwZ3JhZGVOZWVkZWRFdmVudDo6b2xkVmVyc2lvbigpCit7CisgICAgcmV0dXJuIG1fb2xkVmVy
c2lvbjsKK30KKworaW50NjRfdCBJREJVcGdyYWRlTmVlZGVkRXZlbnQ6Om5ld1ZlcnNpb24oKQor
eworICAgIHJldHVybiBtX25ld1ZlcnNpb247Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgSURC
VXBncmFkZU5lZWRlZEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZXZlbnROYW1lcygpLmludGVyZmFjZUZvcklEQlVwZ3JhZGVOZWVkZWRFdmVudDsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmJjMTY1MTA2OGQ4Zjk0NzNjY2ZhNzZjZWNkNGM2NDJlNDg1NTJmNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVu
dC5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQlVwZ3JhZGVOZWVkZWRFdmVu
dF9oCisjZGVmaW5lIElEQlVwZ3JhZGVOZWVkZWRFdmVudF9oCisKKyNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJBbnk7CisKK2NsYXNzIElEQlVw
Z3JhZGVOZWVkZWRFdmVudCA6IHB1YmxpYyBFdmVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8SURCVXBncmFkZU5lZWRlZEV2ZW50PiBjcmVhdGUoaW50NjRfdCBvbGRWZXJzaW9u
ID0gLTUwLCBpbnQ2NF90IG5ld1ZlcnNpb24gPSAtNTAsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlID0gQXRvbWljU3RyaW5nKCkpOworICAgIHZpcnR1YWwgfklEQlVwZ3JhZGVOZWVkZWRF
dmVudCgpOworCisgICAgdmlydHVhbCBpbnQ2NF90IG9sZFZlcnNpb24oKTsKKyAgICB2aXJ0dWFs
IGludDY0X3QgbmV3VmVyc2lvbigpOworCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IGludGVyZmFjZU5hbWUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBJREJVcGdyYWRlTmVlZGVk
RXZlbnQoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNpb24sIGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlKTsKKworICAgIGludDY0X3QgbV9vbGRWZXJzaW9uOworICAgIGlu
dDY0X3QgbV9uZXdWZXJzaW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBJREJVcGdyYWRlTmVl
ZGVkRXZlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVXBncmFkZU5lZWRlZEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc3YjAwMGQ0MjJmYjcy
N2Q0MDA4MjM2OThhNDAxMWQyMjFkNTdhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5pZGwKQEAgLTAsMCAr
MSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK21vZHVsZSBzdG9yYWdlIHsKKworICAgIGludGVyZmFjZSBbCisgICAg
ICAgIENvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKKyAgICBdIElEQlVwZ3JhZGVOZWVkZWRF
dmVudCA6IEV2ZW50IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcg
bG9uZyBvbGRWZXJzaW9uOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9u
ZyBsb25nIG5ld1ZlcnNpb247CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhMTcyZDVl
NWJlZmQ1OTZmODgwNTlmY2ExNDgwNzU4ODhhYzU3NDhiLi4zYmM4MTgxMzYwOTRlYWIxMDU4OThl
NmQ5ZWU2NWIyMGM2MWVlYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC04MTUsOCArODE1LDEwIEBA
CiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmlkbCcsCiAgICAgICAgICAg
ICAnTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaWRsJywKICAgICAgICAgICAgICdNb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJV
cGdyYWRlTmVlZGVkRXZlbnQuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9J
REJWZXJzaW9uQ2hhbmdlRXZlbnQuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRk
Yi9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5k
ZXhlZGRiL1dvcmtlckNvbnRleHRJbmRleGVkRGF0YWJhc2UuaWRsJywKQEAgLTE1MDMsNiArMTUw
NSw4IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbC5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRk
Yi9JREJPcGVuREJSZXF1ZXN0LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lE
QlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgnLAogICAgICAgICAgICAgJ01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwJywKQEAgLTE1MTYsNiArMTUyMCw4IEBACiAg
ICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCcs
CiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRv
ci5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3IuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5l
ZWRlZEV2ZW50LmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFk
ZU5lZWRlZEV2ZW50LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNp
b25DaGFuZ2VFdmVudC5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlZl
cnNpb25DaGFuZ2VFdmVudC5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJW
ZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggODM2
ZTYzMDhiMGRhY2Y5ZGIxZjc3NWZmZjI5MzRmMWI3NmRmYzE4YS4uNGY0YmMxMjdjMjdmYWEyOTlm
NTRiYjk5MTQ4ZGM2ODg3MjhhMGM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0xMTAs
NiArMTEwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHRleHRJbnB1dCkgXAog
ICAgIG1hY3JvKHVubG9hZCkgXAogICAgIG1hY3JvKHVwZGF0ZXJlYWR5KSBcCisgICAgbWFjcm8o
dXBncmFkZW5lZWRlZCkgXAogICAgIG1hY3JvKHZlcnNpb25jaGFuZ2UpIFwKICAgICBtYWNybyh3
ZWJraXR2aXNpYmlsaXR5Y2hhbmdlKSBcCiAgICAgbWFjcm8od3JpdGUpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaW4KaW5kZXggOWMwYWM1NTU4YWFhYzE2MDFlOTMwOTE1YjBkN2I0N2E4ZGU2Njdl
Mi4uZjFlNmRhNzlkYTkxYWI3ODM2MzM2MzQ4MzhhYjdiNTc1ZTM4MTM4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaW4KQEAgLTM5LDYgKzM5LDcgQEAgU3RvcmFnZUV2ZW50CiBTVkdFdmVudHMg
aW50ZXJmYWNlTmFtZT1FdmVudCwgY29uZGl0aW9uYWw9U1ZHCiBTVkdab29tRXZlbnQgY29uZGl0
aW9uYWw9U1ZHCiBTVkdab29tRXZlbnRzIGludGVyZmFjZU5hbWU9U1ZHWm9vbUV2ZW50LCBjb25k
aXRpb25hbD1TVkcKK0lEQlVwZ3JhZGVOZWVkZWRFdmVudCBjb25kaXRpb25hbD1JTkRFWEVEX0RB
VEFCQVNFCiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFT
RQogVG91Y2hFdmVudCBjb25kaXRpb25hbD1UT1VDSF9FVkVOVFMsIHJ1bnRpbWVDb25kaXRpb25h
bD10b3VjaEVuYWJsZWQKIERldmljZU1vdGlvbkV2ZW50IGNvbmRpdGlvbmFsPURFVklDRV9PUklF
TlRBVElPTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9y
eS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggODIx
NzE3YjBkN2ZlNzY1M2FhZjNmNjVkYTM1ZWE4ZWY5NWJkMDRlNC4uNmVhM2Y3ZGI2NWRlYWIwOWZh
YzZlMjdlNDEyNzAyYTJhYTFjZGM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRG
YWN0b3J5LmluCkBAIC0xMCw2ICsxMCw3IEBAIEV2ZW50U291cmNlCiBGaWxlUmVhZGVyIGNvbmRp
dGlvbmFsPUJMT0IKIEZpbGVXcml0ZXIgY29uZGl0aW9uYWw9RklMRV9TWVNURU0KIElEQkRhdGFi
YXNlIGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKK0lEQk9wZW5EQlJlcXVlc3QgY29uZGl0
aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSURCUmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVEX0RB
VEFCQVNFCiBJREJUcmFuc2FjdGlvbiBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJREJW
ZXJzaW9uQ2hhbmdlUmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApp
bmRleCAwZmRhY2E2ZTI5ZTM4NDhjZmU3MTcyMGMyOTk1MmNiNzM0MWU4ODU4Li4wZDFhYTNmMzFi
MGIxYmM5ZjA2ZjJkZDkwOTIxODI2MWVkZGRjNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTIzNiw3ICsyMzYs
NyBAQCBwcml2YXRlOgogdm9pZCBFeGVjdXRhYmxlV2l0aERhdGFiYXNlOjpzdGFydChJREJGYWN0
b3J5QmFja2VuZEludGVyZmFjZSogaWRiRmFjdG9yeSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5
T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlTmFtZSkKIHsKICAgICBSZWZQdHI8T3BlbkRhdGFiYXNlQ2FsbGJhY2s+IGNhbGxiYWNr
ID0gT3BlbkRhdGFiYXNlQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzKTsKLSAgICBpZGJGYWN0b3J5LT5v
cGVuKGRhdGFiYXNlTmFtZSwgY2FsbGJhY2suZ2V0KCksIHNlY3VyaXR5T3JpZ2luLCBjb250ZXh0
LCBTdHJpbmcoKSk7CisgICAgaWRiRmFjdG9yeS0+b3BlbihkYXRhYmFzZU5hbWUsIC0yMCwgY2Fs
bGJhY2suZ2V0KCksIHNlY3VyaXR5T3JpZ2luLCBjb250ZXh0LCBTdHJpbmcoKSk7CiB9CiAKIHN0
YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rp
b25Gb3JEYXRhYmFzZShJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UqIGlkYkRhdGFiYXNlLCBj
b25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKQEAgLTMzOCwyMCArMzM4LDIwIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAuc2V0SW5kZXhlcyhpbmRleGVzKTsKICAgICAgICAgICAgIG9i
amVjdFN0b3Jlcy0+YWRkSXRlbShvYmplY3RTdG9yZSk7CiAgICAgICAgIH0KLSAgICAgICAgUmVm
UHRyPERhdGFiYXNlV2l0aE9iamVjdFN0b3Jlcz4gcmVzdWx0ID0gRGF0YWJhc2VXaXRoT2JqZWN0
U3RvcmVzOjpjcmVhdGUoKQotICAgICAgICAgICAgLnNldE5hbWUoZGF0YWJhc2VNZXRhZGF0YS5u
YW1lKQotICAgICAgICAgICAgLnNldFZlcnNpb24oZGF0YWJhc2VNZXRhZGF0YS52ZXJzaW9uKQot
ICAgICAgICAgICAgLnNldE9iamVjdFN0b3JlcyhvYmplY3RTdG9yZXMpOwotCi0gICAgICAgIG1f
ZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKS0+ZGF0YWJhc2VMb2FkZWQobV9yZXF1ZXN0SWQs
IHJlc3VsdCk7CisvLyAgICAgICAgUmVmUHRyPERhdGFiYXNlV2l0aE9iamVjdFN0b3Jlcz4gcmVz
dWx0ID0gRGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzOjpjcmVhdGUoKQorLy8gICAgICAgICAgICAu
c2V0TmFtZShkYXRhYmFzZU1ldGFkYXRhLm5hbWUpCisvLyAgICAgICAgICAgIC5zZXRWZXJzaW9u
KGRhdGFiYXNlTWV0YWRhdGEudmVyc2lvbikKKy8vICAgICAgICAgICAgLnNldE9iamVjdFN0b3Jl
cyhvYmplY3RTdG9yZXMpOworLy8KKy8vICAgICAgICBtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250
ZW5kKCktPmRhdGFiYXNlTG9hZGVkKG1fcmVxdWVzdElkLCByZXN1bHQpOwogICAgIH0KIAogcHJp
dmF0ZToKICAgICBEYXRhYmFzZUxvYWRlckNhbGxiYWNrKEluc3BlY3RvckluZGV4ZWREQkFnZW50
OjpGcm9udGVuZFByb3ZpZGVyKiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkKQogICAg
ICAgICA6IG1fZnJvbnRlbmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVyKQotICAgICAgICAsIG1f
cmVxdWVzdElkKHJlcXVlc3RJZCkgeyB9CisvKiAgICAgICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0
SWQpKi8geyB9CiAgICAgUmVmUHRyPEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpGcm9udGVuZFBy
b3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7Ci0gICAgaW50IG1fcmVxdWVzdElkOworLy8gICAg
aW50IG1fcmVxdWVzdElkOwogICAgIERhdGFiYXNlQ29ubmVjdGlvbiBtX2Nvbm5lY3Rpb247CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDYWxs
YmFja3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5o
CmluZGV4IGE2M2MwYmM5ZWU2YzRjYWYyZDY3ZDk1ZTVkMDBhMTFjOWZjZDgyOWQuLjAyYjQ5ODll
MWVlNzM4MGE3YWMzYmZlZjFkZTczMmI1OTJlNDM2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oCkBAIC01OCw3ICs1OCw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSYsIGNvbnN0IFdlYklEQktleSYsIGNvbnN0IFdlYklEQktleVBhdGgmKSB7IFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29u
dGludWF0aW9uKCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgb25CbG9ja2VkKCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgb25CbG9ja2VkKGludDY0X3QgZXhpc3RpbmdWZXJzaW9uKSB7IFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJl
ZmV0Y2goY29uc3QgV2ViVmVjdG9yPFdlYklEQktleT4mIGtleXMsIGNvbnN0IFdlYlZlY3RvcjxX
ZWJJREJLZXk+JiBwcmltYXJ5S2V5cywgY29uc3QgV2ViVmVjdG9yPFdlYlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4mIHZhbHVlcykgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgb25VcGdyYWRlTmVlZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwgV2ViSURCVHJh
bnNhY3Rpb24qLCBXZWJJREJEYXRhYmFzZSopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrcy5oCmluZGV4IDgzOGE3
MWZmOTE0ZmUzYzNmNWU1NGZjODQ0ZTc4MjA4YzljNzg3MzAuLjM4Yjc0ZDE0MTJkN2E3OTczMDRk
MmQ1ZTJiNDA4NWM0YmM5YzBmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3MuaApAQCAtMzUsNiArMzUsNyBAQCBj
bGFzcyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2Vi
SURCRGF0YWJhc2VDYWxsYmFja3MoKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25D
aGFuZ2UoaW50NjRfdCBjdXJyZW50VmVyc2lvbiwgaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKSB7
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBvblZlcnNp
b25DaGFuZ2UoY29uc3QgV2ViU3RyaW5nJiByZXF1ZXN0ZWRWZXJzaW9uKSB7IFdFQktJVF9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSURCRmFjdG9yeS5oCmluZGV4IGU5NTZlYmRlZDhjNDU5ZTdlZmU2MzIzNzFmNmU2ZDI0
YWRhODA5ZjIuLmRkN2YzY2IzZWUyNzBhZmY5ZDRiOGUxYjJlZDEzNzc5OWU3M2NkODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJGYWN0b3J5LmgKQEAgLTU0LDcg
KzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFdlYklE
QkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBX
ZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikgeyBXRUJLSVRfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIFRoZSBXZWJLaXQgaW1wbGVtZW50YXRpb24gb2Yg
b3BlbiBpZ25vcmVzIHRoZSBXZWJGcmFtZSogcGFyYW1ldGVyLgotICAgIHZpcnR1YWwgdm9pZCBv
cGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNv
bnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2Vi
U3RyaW5nJiBkYXRhRGlyKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBX
ZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdp
biwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2Uo
Y29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1cml0
eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKSB7IFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAppbmRleCBhNTQ0MTg5YjY2OGY0NGVkODE0ZDRjNzIy
ODA3MTQwM2MyN2I5N2NkLi5mZTM1MWU2YTMzOTQ3NTcwMTVjNmU2ZDE5MDA2OWFjZjljNzk0ZWZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHku
Y3BwCkBAIC0xMjUsNiArMTI1LDE2IEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uQmxvY2tl
ZCgpCiAgICAgbV9jYWxsYmFja3MtPm9uQmxvY2tlZCgpOwogfQogCit2b2lkIElEQkNhbGxiYWNr
c1Byb3h5OjpvbkJsb2NrZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24pCit7CisgICAgbV9jYWxs
YmFja3MtPm9uQmxvY2tlZChleGlzdGluZ1ZlcnNpb24pOworfQorCit2b2lkIElEQkNhbGxiYWNr
c1Byb3h5OjpvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24sIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZSkKK3sKKyAgICBtX2NhbGxiYWNrcy0+
b25VcGdyYWRlTmVlZGVkKG9sZFZlcnNpb24sIG5ldyBXZWJJREJUcmFuc2FjdGlvbkltcGwodHJh
bnNhY3Rpb24pLCBuZXcgV2ViSURCRGF0YWJhc2VJbXBsKGRhdGFiYXNlKSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAppbmRleCBk
YjMwNTY1NTBiMmIyZTE3ZTJlMzBkZGVmNzllOWRkMjljMjVmZmJkLi43YWQ0OTEwMjYxM2I5ZTAy
OGI5Y2IwYTg5YTM1NDQ2YTc1MjY0NGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKQEAgLTU2LDYgKzU2LDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCk7CiAgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OklEQktl
eT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpJREJLZXk+ID4mIHByaW1h
cnlLZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gPiYgdmFsdWVzKTsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7CisgICAgdmlydHVh
bCB2b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbik7CisgICAgdmlydHVhbCB2
b2lkIG9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKIAogcHJpdmF0ZToKICAgICBJREJDYWxsYmFj
a3NQcm94eShQYXNzT3duUHRyPFdlYklEQkNhbGxiYWNrcz4pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCmluZGV4IDkw
MWI1NWU1NGYyYWFmZTA0ZmZmYzIyY2E5NmIzNTMxOGVmOTQ3ODYuLjU2YWZlNWZiNWQyYjYyZmE0
NDQ5OTU0NDY5MzBhMDFkMGJjOTc3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKQEAgLTg3LDYgKzg3LDcgQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBJREJUcmFuc2FjdGkKIAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6
c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2Fs
bGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBBU1NFUlQobV93ZWJJREJEYXRhYmFz
ZSk7CiAgICAgbV93ZWJJREJEYXRhYmFzZS0+c2V0VmVyc2lvbih2ZXJzaW9uLCBuZXcgV2ViSURC
Q2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBlYyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5jcHAKaW5kZXgg
ODE2ZmFmNmM0ZGU3MGFlNjkyNjkzMGQwZGU1MGUwZWUyZDExNzg1Yi4uMTVmOTI4ZjM5YWQxZGE2
ZjBiZGFhYTk3NmM4YzIwYTFiNTc2NDBmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5jcHAKQEAgLTQ4LDYgKzQ4
LDExIEBAIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6On5JREJEYXRhYmFzZUNhbGxiYWNrc1By
b3h5KCkKIHsKIH0KIAordm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpvblZlcnNpb25D
aGFuZ2UoaW50NjRfdCBjdXJyZW50VmVyc2lvbiwgaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKQor
eworICAgIG1fY2FsbGJhY2tzLT5vblZlcnNpb25DaGFuZ2UoY3VycmVudFZlcnNpb24sIHJlcXVl
c3RlZFZlcnNpb24pOworfQorCiB2b2lkIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6Om9uVmVy
c2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHJlcXVlc3RlZFZlcnNpb24pCiB7CiAgICAgbV9jYWxs
YmFja3MtPm9uVmVyc2lvbkNoYW5nZShyZXF1ZXN0ZWRWZXJzaW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaAppbmRl
eCBhZmZkY2U3N2Q1ZDk1OGRjMDBlMGY2ZjgwYWNmZmI4MDEyOTU4YjNiLi40ZWViZjBjY2I4MWFk
ZDAzZGI1ODljMzlkNWNiMDNhZWEzZDA5Y2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oCkBAIC00MSw2ICs0MSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5KCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgcmVxdWVzdGVk
VmVyc2lvbik7CisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IGN1cnJl
bnRWZXJzaW9uLCBpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pOwogCiBwcml2YXRlOgogICAgIElE
QkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkoUGFzc093blB0cjxXZWJJREJEYXRhYmFzZUNhbGxiYWNr
cz4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJh
Y2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFj
a2VuZFByb3h5LmNwcAppbmRleCBlMmM5YmI5ZTIyYzIwYTU3YmMyZDk4ZTI1NWI2OGRiM2M1OTk2
MDAxLi4yMjEwZGExNjE2NTExNzZkYjVmNDg0NDlhN2YyOGI2ZmNkOTIyYTBhIDEwMDc1NQotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNw
cApAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6Z2V0RGF0
YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhCiB9CiAKIAotdm9p
ZCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdp
bj4gc2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgZGF0YURpcikKK3ZvaWQgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6b3Blbihjb25z
dCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4s
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZGF0YURpcikK
IHsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MocHJwQ2FsbGJhY2tzKTsKICAg
ICBXZWJTZWN1cml0eU9yaWdpbiBvcmlnaW4oc2VjdXJpdHlPcmlnaW4pOwpAQCAtMjExLDcgKzIx
MSw3IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6b3Blbihjb25zdCBTdHJpbmcmIG5h
bWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwCiAgICAgICAgIHJldHVybjsKIAogICAgIFdl
YkZyYW1lSW1wbCogd2ViRnJhbWUgPSBnZXRXZWJGcmFtZShjb250ZXh0KTsKLSAgICBtX3dlYklE
QkZhY3RvcnktPm9wZW4obmFtZSwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwg
b3JpZ2luLCB3ZWJGcmFtZSwgZGF0YURpcik7CisgICAgbV93ZWJJREJGYWN0b3J5LT5vcGVuKG5h
bWUsIHZlcnNpb24sIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIG9yaWdpbiwg
d2ViRnJhbWUsIGRhdGFEaXIpOwogfQogCiB2b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmRl
bGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4s
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZGF0YURpcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5k
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJv
eHkuaAppbmRleCAyMmE2ZjUyYTg2OTgxNmM4MDU2NjhkNjg0ZDBhN2JmZmZjMjZhZTY5Li5jMGRl
OTEwYTkyY2RlYTkxYTNkM2ExYzUzMGEyODA3YzVhYmZhYTdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5oCkBAIC00OSw3ICs0
OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJGYWN0b3J5QmFja2VuZFByb3h5KCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKLSAgICB2
aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOworICAg
IHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3Ry
aW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3Ry
aW5nJiBuYW1lLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKaW5kZXggNWI1YWVkZjdj
Y2IzN2UyNDljNTNjMWFmOWU4ZWM4ZWQ5YjBlNmUxMi4uOWQ3MGFhMzViNWVmNzVkZDMyYjNlYjYz
YTMzNzVlNjMwY2I4Y2E3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAKIFdlYklEQkNhbGxiYWNrc0ltcGw6OldlYklEQkNhbGxiYWNrc0ltcGwoUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICA6IG1fY2FsbGJhY2tzKGNhbGxiYWNrcykK
KyAgICAsIG1fZGlkQ3JlYXRlRGF0YWJhc2VQcm94eShmYWxzZSkKIHsKIH0KIApAQCAtNzIsNiAr
NzMsMTAgQEAgdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoV2ViSURCQ3Vyc29y
KiBjdXJzb3IpCiAKIHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYklEQkRh
dGFiYXNlKiB3ZWJLaXRJbnN0YW5jZSkKIHsKKyAgICBpZiAobV9kaWRDcmVhdGVEYXRhYmFzZVBy
b3h5KSB7CisgICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoSURCRGF0YWJhc2VCYWNrZW5k
UHJveHk6OmNyZWF0ZShhZG9wdFB0cihzdGF0aWNfY2FzdDxXZWJJREJEYXRhYmFzZSo+KDApKSkp
OworICAgICAgICByZXR1cm47CisgICAgfQogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoSURC
RGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZShhZG9wdFB0cih3ZWJLaXRJbnN0YW5jZSkpKTsK
IH0KIApAQCAtMTA1LDYgKzExMCwxNyBAQCB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uQmxv
Y2tlZCgpCiAgICAgbV9jYWxsYmFja3MtPm9uQmxvY2tlZCgpOwogfQogCit2b2lkIFdlYklEQkNh
bGxiYWNrc0ltcGw6Om9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbikKK3sKKyAgICBt
X2NhbGxiYWNrcy0+b25CbG9ja2VkKGV4aXN0aW5nVmVyc2lvbik7Cit9CisKK3ZvaWQgV2ViSURC
Q2FsbGJhY2tzSW1wbDo6b25VcGdyYWRlTmVlZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwgV2ViSURC
VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBXZWJJREJEYXRhYmFzZSogZGF0YWJhc2UpCit7Cisg
ICAgbV9kaWRDcmVhdGVEYXRhYmFzZVByb3h5ID0gdHJ1ZTsKKyAgICBtX2NhbGxiYWNrcy0+b25V
cGdyYWRlTmVlZGVkKG9sZFZlcnNpb24sIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjpjcmVh
dGUoYWRvcHRQdHIodHJhbnNhY3Rpb24pKSwgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0
ZShhZG9wdFB0cihkYXRhYmFzZSkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaAppbmRleCA3YjAyMTYzNTlkNTZkODE4Njk1
ZmU5NzNhMDE4MmFmYjUxMjUwMTYxLi44YTc4NWZkMDM0Njc5MDNjMmZmMDExZmUyMDU4Y2Y4OGMw
MGJhNzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxs
YmFja3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJh
Y2tzSW1wbC5oCkBAIC01MSw5ICs1MSwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9u
U3VjY2Vzcyhjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBjb25zdCBXZWJJREJLZXkm
LCBjb25zdCBXZWJJREJLZXlQYXRoJik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhD
b250aW51YXRpb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7CisgICAgdmlydHVh
bCB2b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbik7CisgICAgdmlydHVhbCB2
b2lkIG9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFdlYklEQlRyYW5zYWN0aW9u
KiwgV2ViSURCRGF0YWJhc2UqKTsKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6SURC
Q2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKKyAgICBib29sIG1fZGlkQ3JlYXRlRGF0YWJhc2VQcm94
eTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKaW5kZXgg
ZmYwZTg5ODY0YjIxYTY0Njg5YjAzMTI2Y2FhZjNmZTU2NTlmYWYzMS4uOGMxNDYyZDI0OTBlNjE5
NGNkZjAyYWUyNjEzYzA1MWNjYjQzZjBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCkBAIC00NCw2
ICs0NCwxMSBAQCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6On5XZWJJREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGwoKQogewogfQogCit2b2lkIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6
b25WZXJzaW9uQ2hhbmdlKGludDY0X3QgY3VycmVudFZlcnNpb24sIGludDY0X3QgcmVxdWVzdGVk
VmVyc2lvbikKK3sKKyAgICBtX2NhbGxiYWNrcy0+b25WZXJzaW9uQ2hhbmdlKGN1cnJlbnRWZXJz
aW9uLCByZXF1ZXN0ZWRWZXJzaW9uKTsKK30KKwogdm9pZCBXZWJJREJEYXRhYmFzZUNhbGxiYWNr
c0ltcGw6Om9uVmVyc2lvbkNoYW5nZShjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24pCiB7CiAgICAg
bV9jYWxsYmFja3MtPm9uVmVyc2lvbkNoYW5nZSh2ZXJzaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKaW5k
ZXggMjFjM2RjN2M1YWM0YWQwYmVhOGRmMjkxNmViYjNmODhjNjdmZjA1Zi4uMThkMDc0ZTY5MThi
ZGQ2YzYwNDQ1MWRlZGVjYmMwNDQzYTNjYjI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKQEAgLTQzLDYg
KzQzLDcgQEAgcHVibGljOgogICAgIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbChQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAgICAgdmlydHVhbCB+V2ViSURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hh
bmdlKGludDY0X3QgY3VycmVudFZlcnNpb24sIGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbik7CiAg
ICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24p
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRmFjdG9yeUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFj
dG9yeUltcGwuY3BwCmluZGV4IGQ4NzVlMTFiYzY1ZWY1ODhlMDZlMmI1ZjUxZGFjMTZkMjZiNjA4
ZWMuLjhlYzA0ZjNlOGNlZGM5NDMzOWY1NTg1MTgyYmQ5NzNhOWZjYTIxMDAgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHAKQEAgLTY0LDkg
KzY0LDkgQEAgdm9pZCBXZWJJREJGYWN0b3J5SW1wbDo6Z2V0RGF0YWJhc2VOYW1lcyhXZWJJREJD
YWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2UKIH0KIAogCi12b2lkIFdlYklEQkZhY3Rv
cnlJbXBsOjpvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxs
YmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiwgY29uc3Qg
V2ViU3RyaW5nJiBkYXRhRGlyKQordm9pZCBXZWJJREJGYWN0b3J5SW1wbDo6b3Blbihjb25zdCBX
ZWJTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFj
a3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiwgY29uc3QgV2Vi
U3RyaW5nJiBkYXRhRGlyKQogewotICAgIG1faWRiRmFjdG9yeUJhY2tlbmQtPm9wZW4obmFtZSwg
SURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKS5nZXQoKSwgb3Jp
Z2luLCAwLCBkYXRhRGlyKTsKKyAgICBtX2lkYkZhY3RvcnlCYWNrZW5kLT5vcGVuKG5hbWUsIHZl
cnNpb24sIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSkuZ2V0
KCksIG9yaWdpbiwgMCwgZGF0YURpcik7CiB9CiAKIHZvaWQgV2ViSURCRmFjdG9yeUltcGw6OmRl
bGV0ZURhdGFiYXNlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxs
YmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiwgY29uc3Qg
V2ViU3RyaW5nJiBkYXRhRGlyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCRmFjdG9yeUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkZhY3RvcnlJbXBsLmgKaW5kZXggYjNlNDc0ZGY5MjU1ZTg3N2YyZmY2ZDBlNjMxMDM1NTYyNDZk
MTcxOS4uY2NjZmFhZTNlNzFiMTFmMTJiOTg0YzhhMjM2NGYzZGZkZjQwYmE3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oCkBAIC00NSw3ICs0
NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJJREJGYWN0b3J5SW1wbCgpOwogCiAgICAg
dmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2Vi
U2VjdXJpdHlPcmlnaW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcik7Ci0g
ICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFj
a3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5n
JiBkYXRhRGlyKTsKKyAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUs
IGludDY0X3QgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmln
aW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcik7CiAgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tz
KiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYg
ZGF0YURpcik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKaW5kZXggZjUzYWQ1MGQxZDY3OGJlMjY0
MTBlZDg0MGUzZjdhNTJhNzc2ODcxYS4uZmMzMGYzZTMzZTg3NGVmOWQzYTdiNDhlNWFiM2FlNzYy
ZDQzMmE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9y
dE9uQ29ycnVwdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURC
QWJvcnRPbkNvcnJ1cHRUZXN0LmNwcApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZhaWxpbmdCYWNraW5nU3RvcmUpOwogICAgIH0K
LSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBpbnQ2NF90JikKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0
YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBpbnQ2NF90LCBpbnQ2
NF90JikKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xMDAsNyArMTAw
LDggQEAgVEVTVChJREJBYm9ydFRlc3QsIFRoZVRlc3QpCiAgICAgY29uc3QgU3RyaW5nJiBuYW1l
ID0gImRiIG5hbWUiOwogICAgIE1vY2tJREJDYWxsYmFja3MgY2FsbGJhY2tzOwogICAgIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgiaHR0cCIs
ICJsb2NhbGhvc3QiLCA4MSk7Ci0gICAgZmFjdG9yeS0+b3BlbihuYW1lLCAmY2FsbGJhY2tzLCBv
cmlnaW4sIDAgLypGcmFtZSovLCBTdHJpbmcoKSAvKnBhdGgqLyk7CisgICAgY29uc3QgaW50NjRf
dCBrVmVyc2lvbiA9IDI7CisgICAgZmFjdG9yeS0+b3BlbihuYW1lLCBrVmVyc2lvbiwgJmNhbGxi
YWNrcywgb3JpZ2luLCAwIC8qRnJhbWUqLywgU3RyaW5nKCkgLypwYXRoKi8pOwogfQogCiB9IC8v
IG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJG
YWtlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VC
YWNraW5nU3RvcmUuaAppbmRleCAwODQwNWNlMGFiNThjOTZmYzI5NmMzZjBmOGExNGZmNjlkNjVi
YTE4Li5kOTZmN2M2Y2EwZWE5NDJhMjVkMzgyNGI1ZTEyY2Q1YzQ5ZTdjNTFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaApAQCAt
MzMsOCArMzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJREJGYWtlQmFja2luZ1N0
b3JlIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGdldERhdGFiYXNlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMpIE9WRVJSSURFIHsg
fQotICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYg
bmFtZSwgU3RyaW5nJiBmb3VuZFZlcnNpb24sIGludDY0X3QmIGZvdW5kSWQpIE9WRVJSSURFIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURh
dGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3QmIHJv
d0lkKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGdldElEQkRh
dGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwg
aW50NjRfdCYgZm91bmRJbnRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElkKSBPVkVSUklERSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRh
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBpbnQ2NF90
IGludFZlcnNpb24sIGludDY0X3QmIHJvd0lkKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAg
ICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoaW50NjRfdCByb3dJZCwg
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpIE9WRVJSSURFIHsg
cmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDVlNTc0ZWQ0YjM1M2NmM2M0ZDk3NDM3MjQ5ODNlNTA5MGQzOTAw
MDcuLjk1ZjVhZTg4ZDM1ZjE5ZTUwZDk2NGNhYTk4ZmNmOWU4NGVmOTNjZWYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTEzLDYgKzUx
Myw3IEBAIFdPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29y
ay1zaGFyZWQtd29ya2VyLmh0bWwgPSBQQVNTCiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9zaGFyZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWFs
bG93ZWQuaHRtbCA9IFRFWFQKIFdPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYmxvY2tlZC5odG1s
ID0gVEVYVAogV09OVEZJWCBTS0lQIDogc3RvcmFnZS9pbmRleGVkZGIvYmFzaWNzLXNoYXJlZC13
b3JrZXJzLmh0bWwgPSBQQVNTCitXT05URklYIFNLSVAgOiBzdG9yYWdlL2luZGV4ZWRkYi9vcGVu
LXdpdGgtdmVyc2lvbi13aXRoLWRlbGV0ZS5odG1sID0gUEFTUwogCiAvLyB0ZXN0X3NoZWxsIGRv
ZXMgbm90IHN1cHBvcnQgbWVzc2FnZSBwb3J0cwogQlVHV0s3NDQ1OSBTS0lQIDogZmFzdC93b3Jr
ZXJzL3Rlcm1pbmF0aW9uLXdpdGgtcG9ydC1tZXNzYWdlcy5odG1sID0gUEFTUwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvYWJvcnQtaW4taW5pdGlhbC11cGdyYWRl
bmVlZGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Fib3J0
LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU5NmU4
ZDk3MTFkYjAwMDVhMGZlMzJlYzlhNmNhNjYyOGJmNWFmMAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Fib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRl
ZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorVGVzdCB0aGF0IGFuIGFib3J0IGluIHRo
ZSBpbml0aWFsIHVwZ3JhZGVuZWVkZWQgc2V0cyB2ZXJzaW9uIGJhY2sgdG8gMAorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2Vs
Zi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWRE
QiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUp
CitpbmRleGVkREIub3BlbihkYm5hbWUsIDIpCisKK3VwZ3JhZGVOZWVkZWQoKToKK1BBU1MgZGIu
dmVyc2lvbiBpcyAyCit0cmFuc2FjdGlvbi5hYm9ydCgpCisKK29uQWJvcnQoKToKK0ZBSUwgZXZl
bnQudGFyZ2V0LmRiLnZlcnNpb24gc2hvdWxkIGJlIDAuIFdhcyAyLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Fib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvYWJvcnQtaW4taW5pdGlhbC11cGdyYWRl
bmVlZGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJlZDQwNjJlNTg2ZGFmNmQ1MDY5MjdjMGRkNDIyYzY4
ZDQyMjZkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2Fib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Fib3J0LWlu
LWluaXRpYWwtdXBncmFkZW5lZWRlZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0
aC12ZXJzaW9uLWJsb2NrZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvb3Blbi13aXRoLXZlcnNpb24tYmxvY2tlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWY1MGQ1MTg2MWY5OGQ3OGQ0Yjk0YjM1ZDJmN2U4NjFkNjFhNmMzMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0aC12ZXJzaW9uLWJsb2Nr
ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTEgQEAKK1Rlc3QgdGhhdCBibG9ja2VkIGV2ZW50
cyBnZXQgZGVsaXZlcmVkIHByb3Blcmx5IHdpdGggdGhlIG5ldyBvcGVuIGFwaQorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2Vs
Zi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWRE
QiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUp
CisKK2RlbGV0ZVN1Y2Nlc3MoKToKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDIp
CisKK3JlcXVlc3Qub251cGdyYWRlbmVlZGVkKCk6Citnb3RGaXJzdFVwZ3JhZGVOZWVkZWRFdmVu
dCA9IHRydWUKK1BBU1MgZXZlbnQub2xkVmVyc2lvbiBpcyAwCitQQVNTIGV2ZW50Lm5ld1ZlcnNp
b24gaXMgMgorUEFTUyBTdHJpbmcoZXZlbnQpIGlzICJbb2JqZWN0IElEQlVwZ3JhZGVOZWVkZWRF
dmVudF0iCisKK2ZpcnN0U3VjY2Vzc0V2ZW50SGFuZGxlcigpOgorUEFTUyBnb3RGaXJzdFVwZ3Jh
ZGVOZWVkZWRFdmVudCBpcyB0cnVlCitjb25uZWN0aW9uMSA9IGV2ZW50LnRhcmdldC5yZXN1bHQK
K2Nvbm5lY3Rpb24xLm9udmVyc2lvbmNoYW5nZSA9IHZlcnNpb25DaGFuZ2VIYW5kbGVyCitQQVNT
IFN0cmluZyhjb25uZWN0aW9uMSkgaXMgIltvYmplY3QgSURCRGF0YWJhc2VdIgorcmVxdWVzdCA9
IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgMykKKwordmVyc2lvbkNoYW5nZUhhbmRsZXIoKToKK3Nh
d1ZlcnNpb25DaGFuZ2VFdmVudCA9IHRydWUKK1BBU1MgZXZlbnQudHlwZSBpcyAidmVyc2lvbmNo
YW5nZSIKK0ZBSUwgU3RyaW5nKGV2ZW50KSBzaG91bGQgYmUgW29iamVjdCBJREJWZXJzaW9uQ2hh
bmdlRXZlbnRdLiBXYXMgW29iamVjdCBJREJVcGdyYWRlTmVlZGVkRXZlbnRdLgorUEFTUyBldmVu
dC5vbGRWZXJzaW9uIGlzIDIKK1BBU1MgZXZlbnQubmV3VmVyc2lvbiBpcyAzCisKK2Jsb2NrZWRF
dmVudEhhbmRsZXIoKToKK1BBU1Mgc2F3VmVyc2lvbkNoYW5nZUV2ZW50IGlzIHRydWUKK2dvdEJs
b2NrZWRFdmVudCA9IHRydWUKK0ZBSUwgU3RyaW5nKGV2ZW50KSBzaG91bGQgYmUgW29iamVjdCBJ
REJWZXJzaW9uQ2hhbmdlRXZlbnRdLiBXYXMgW29iamVjdCBJREJVcGdyYWRlTmVlZGVkRXZlbnRd
LgorUEFTUyBldmVudC5vbGRWZXJzaW9uIGlzIDIKK1BBU1MgZXZlbnQubmV3VmVyc2lvbiBpcyAz
CitQQVNTIGV2ZW50LnR5cGUgaXMgImJsb2NrZWQiCitjb25uZWN0aW9uMS5jbG9zZSgpCisKK3Nl
Y29uZFVwZ3JhZGVOZWVkZWRFdmVudEhhbmRsZXIoKToKK1BBU1MgZ290QmxvY2tlZEV2ZW50IGlz
IHRydWUKK2dvdFNlY29uZFVwZ3JhZGVOZWVkZWRFdmVudCA9IHRydWUKKworc2Vjb25kU3VjY2Vz
c0NhbGxiYWNrKCk6CitQQVNTIGdvdFNlY29uZFVwZ3JhZGVOZWVkZWRFdmVudCBpcyB0cnVlCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24tYmxv
Y2tlZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNp
b24tYmxvY2tlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2ODI1MzM5YWQ2NzVmYmM1ZTA3MjMxZWQ5NjA2
M2NkOGUzOTAwYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi1ibG9ja2VkLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Blbi13aXRo
LXZlcnNpb24tYmxvY2tlZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0aC12ZXJz
aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0
aC12ZXJzaW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTZkYjk3NWFjY2JhOGY0ODFjN2U3
MTFkN2E5M2E2NzYzNDY1NzdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDUg
QEAKK1Rlc3QgdGhhdCBzcGVjaWZ5aW5nIGEgdmVyc2lvbiB3aGVuIG9wZW5pbmcgYSBub24tZXhp
c3RlbnQgZGIgY2F1c2VzIGFuIHVwZ3JhZGVuZWVkZWQgZXZlbnQgYW5kIHRoYXQgdGhlIHZlcnNp
b24gbnVtYmVyIGlzIHNldCBjb3JyZWN0bHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8
fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWRE
QjsKKworaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKK1Nob3VsZCB0cmlnZ2VyOgor
NC4xLjQ6IElmIG5vIGRhdGFiYXNlIHdpdGggdGhlIGdpdmVuIG5hbWUgZnJvbSB0aGUgb3JpZ2lu
IG9yaWdpbiB3YXMgZm91bmQsIG9yIGlmIGl0IHdhcyBkZWxldGVkIGR1cmluZyB0aGUgcHJldmlv
dXMgc3RlcCwgdGhlbiBjcmVhdGUgYSBkYXRhYmFzZSB3aXRoIG5hbWUgbmFtZSwgd2l0aCAwIGFz
IHZlcnNpb24sIGFuZCB3aXRoIG5vIG9iamVjdCBzdG9yZXMuIExldCBkYiBiZSB0aGUgbmV3IGRh
dGFiYXNlLgorNC4xLjY6IENyZWF0ZSBhIG5ldyBjb25uZWN0aW9uIHRvIGRiIGFuZCBsZXQgY29u
bmVjdGlvbiByZXByZXNlbnQgaXQuCis0LjEuNzogSWYgdGhlIHZlcnNpb24gb2YgZGIgaXMgbG93
ZXIgdGhhbiB2ZXJzaW9uLCB0aGVuIHJ1biB0aGUgc3RlcHMgZm9yIHJ1bm5pbmcgYSAidmVyc2lv
bmNoYW5nZSIgdHJhbnNhY3Rpb24gdXNpbmcgY29ubmVjdGlvbiwgdmVyc2lvbiwgcmVxdWVzdCBh
bmQgdXBncmFkZSBjYWxsYmFjay4KKzQuMS45OiBSZXR1cm4gY29ubmVjdGlvbi4KK3JlcXVlc3Qg
PSBpbmRleGVkREIub3BlbihkYm5hbWUsIDcpCitQQVNTIE9iamVjdC5wcm90b3R5cGUudG9TdHJp
bmcuYXBwbHkocmVxdWVzdCkgaXMgIltvYmplY3QgSURCT3BlbkRCUmVxdWVzdF0iCisKK1BBU1Mg
SW4gdGhlIHVwZ3JhZGVuZWVkZWQgZXZlbnQgaGFuZGVyOgorVGVzdCA0LjguOS4xOgorZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0CitQQVNTIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHko
ZGIpIGlzICJbb2JqZWN0IElEQkRhdGFiYXNlXSIKK1Rlc3QgNC44LjkuMzoKK1BBU1MgZXZlbnQu
b2xkVmVyc2lvbiBpcyAwCitQQVNTIGV2ZW50Lm5ld1ZlcnNpb24gaXMgNworUEFTUyBldmVudC50
YXJnZXQucmVhZHlTdGF0ZSBpcyAiZG9uZSIKK1Rlc3QgNC4xLjQ6CitQQVNTIGRiLm5hbWUgaXMg
ZGJuYW1lCitQQVNTIGRiLnZlcnNpb24gaXMgNworUEFTUyBkYi5vYmplY3RTdG9yZU5hbWVzLmxl
bmd0aCBpcyAwCit0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbgorUEFTUyBP
YmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KHRyYW5zYWN0aW9uKSBpcyAiW29iamVjdCBJ
REJUcmFuc2FjdGlvbl0iCitvcyA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzb21lT1MiKQorc2F3
VHJhbnNhY3Rpb25Db21wbGV0ZSA9IHRydWUKKworb3BlblN1Y2Nlc3MoKToKK1Rlc3QgNC4xLjcs
IHRoYXQgYSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHdhcyBydW4uCitQQVNTIHNhd1VwZ3Jh
ZGVOZWVkZWQgaXMgdHJ1ZQorUEFTUyBzYXdUcmFuc2FjdGlvbkNvbXBsZXRlIGlzIHRydWUKK2Ri
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorS2luZCBvZiB0ZXN0IDQuMS45OgorUEFTUyBPYmplY3Qu
cHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KGRiKSBpcyAiW29iamVjdCBJREJEYXRhYmFzZV0iCitQ
QVNTIGRiLnZlcnNpb24gaXMgNworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L29wZW4td2l0aC12ZXJzaW9uLWluaXRpYWwtdmVyc2lvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi1pbml0aWFsLXZlcnNpb24t
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxODAwNTExMDFlMjU5Njc4Yjc5NjRhMDRiNDFlNTM4
NDgxNmE4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9vcGVuLXdpdGgtdmVyc2lvbi1pbml0aWFsLXZlcnNpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTggQEAKK1Rlc3QgdGhhdCBpbml0aWFsIHZlcnNpb24gYWZ0ZXIgYSBzdWNjZXNzZnVsIG9w
ZW4gb2YgYSBub24tZXhpc3RlbnQgZGIgaXMgMQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIg
fHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVk
REI7CisKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3Blbihk
Ym5hbWUpCisKK29wZW5TdWNjZXNzKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1Rlc3Qg
bGluZSBmcm9tIElEQkZhY3Rvcnkub3BlbjogSWYgbm8gdmVyc2lvbiBpcyBzcGVjaWZpZWQgYW5k
IG5vIGRhdGFiYXNlIGV4aXN0cywgc2V0IGRhdGFiYXNlIHZlcnNpb24gdG8gMS4KK0ZBSUwgZGIu
dmVyc2lvbiBzaG91bGQgYmUgMSAob2YgdHlwZSBudW1iZXIpLiBXYXMgIChvZiB0eXBlIHN0cmlu
ZykuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNp
b24taW5pdGlhbC12ZXJzaW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
cGVuLXdpdGgtdmVyc2lvbi1pbml0aWFsLXZlcnNpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNWJkZTgz
NmJiOWI5NzE0MWY2N2JhYmIwNGM2MjViM2U1M2M5ZTViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24taW5pdGlhbC12ZXJz
aW9uLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24taW5pdGlhbC12ZXJzaW9uLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24td2l0aC1kZWxldGUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNp
b24td2l0aC1kZWxldGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3OGYzYWFhYTM2OGNiMjZl
MDY1MTRhYjk3M2UzN2U3MTc1NjdjOWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi13aXRoLWRlbGV0ZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwzNSBAQAorVGVzdCB0aGF0IGEgZGVsZXRlRGF0YWJhc2UgY2FsbGVkIHdo
aWxlIGhhbmRsaW5nIGFuIHVwZ3JhZGVuZWVkZWQgZXZlbnQgaXMgcXVldWVkIGFuZCBmaXJlcyBp
dHMgZXZlbnRzIGF0IHRoZSByaWdodCB0aW1lCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8
fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWRE
QjsKKworaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKKworaW5pdGlhbGx5RGVsZXRl
ZCgpOgorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgMSkKKworZmlyc3RVcGdyYWRl
TmVlZGVkKCk6CitQQVNTIHNhd0ZpcnN0VXBncmFkZU5lZWRlZCBpcyBmYWxzZQorc2F3Rmlyc3RV
cGdyYWRlTmVlZGVkID0gdHJ1ZQorUEFTUyBldmVudC5vbGRWZXJzaW9uIGlzIDAKK1BBU1MgZXZl
bnQubmV3VmVyc2lvbiBpcyAxCitkZWxldGVSZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFi
YXNlKGRibmFtZSkKKworbWlkUmVxdWVzdERlbGV0ZSgpOgorCitmaXJzdFVwZ3JhZGVOZWVkZWQo
KToKK0ZBSUwgc2F3Rmlyc3RVcGdyYWRlTmVlZGVkIHNob3VsZCBiZSBmYWxzZS4gV2FzIHRydWUu
CitzYXdGaXJzdFVwZ3JhZGVOZWVkZWQgPSB0cnVlCitQQVNTIGV2ZW50Lm9sZFZlcnNpb24gaXMg
MAorUEFTUyBldmVudC5uZXdWZXJzaW9uIGlzIDEKKworcmVxdWVzdC5vbnN1Y2Nlc3MoKToKK1BB
U1Mgc2F3Rmlyc3RVcGdyYWRlTmVlZGVkIGlzIHRydWUKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dAorUEFTUyBkYi52ZXJzaW9uIGlzIDEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi13aXRoLWRlbGV0ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24td2l0aC1kZWxldGUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jMjUyNjA0ZDljMDI1YjY2MGI4YTBiNjM2YzY4M2QwZDAxM2RlNmEwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24t
d2l0aC1kZWxldGUuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi13aXRoLWRlbGV0
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0aC12ZXJzaW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNiYTZmMGI3MmJmYjY1NmY0MDE4ZTk1ODhjNDI3OTRhMWEwZDRhYzMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi5o
dG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2Fib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC5qcyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVu
ZWVkZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjVlMWFlNmYzNzY1ZjI0NDgzZjRkYjRiNWMzN2M5MTAzMzVj
ODQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQuanMKQEAgLTAsMCArMSw0NiBA
QAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygn
c2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgYW4gYWJvcnQgaW4gdGhl
IGluaXRpYWwgdXBncmFkZW5lZWRlZCBzZXRzIHZlcnNpb24gYmFjayB0byAwIik7CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgZGJuYW1lID0g
c2VsZi5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMSArIHNlbGYubG9jYXRpb24ucGF0aG5h
bWUubGFzdEluZGV4T2YoIi8iKSk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRl
bGV0ZVN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoZXZ0KSB7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKGRibmFtZSwgMikiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVu
ZWVkZWQgPSB1cGdyYWRlTmVlZGVkOworfQorCitmdW5jdGlvbiB1cGdyYWRlTmVlZGVkKGV2dCkK
K3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInVwZ3JhZGVOZWVkZWQoKToiKTsKKyAgICBl
dmVudCA9IGV2dDsKKyAgICBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgc2hvdWxkQmUo
ImRiLnZlcnNpb24iLCAiMiIpOworICAgIHRyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnRyYW5z
YWN0aW9uOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVD
YWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gb25BYm9ydDsKKyAgICBldmFsQW5k
TG9nKCJ0cmFuc2FjdGlvbi5hYm9ydCgpIik7Cit9CisKK2Z1bmN0aW9uIG9uQWJvcnQoZXZ0KQor
eworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygib25BYm9ydCgpOiIpOworICAgIGV2ZW50ID0g
ZXZ0OworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZGIudmVyc2lvbiIsICIwIik7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1ibG9ja2VkLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9u
LWJsb2NrZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWE0OTQ1YWRmMTMyNDI0ODMzZWU3NTQ1M2VjN2IxMTAz
ZDExMzQ4YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1ibG9ja2VkLmpzCkBAIC0wLDAgKzEsOTYgQEAK
K2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3No
YXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGJsb2NrZWQgZXZlbnRzIGdl
dCBkZWxpdmVyZWQgcHJvcGVybHkgd2l0aCB0aGUgbmV3IG9wZW4gYXBpIik7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgZGJuYW1lID0gc2Vs
Zi5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMSArIHNlbGYubG9jYXRpb24ucGF0aG5hbWUu
bGFzdEluZGV4T2YoIi8iKSk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5k
ZWxldGVEYXRhYmFzZShkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVT
dWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBkZWxldGVTdWNjZXNzKGV2dCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygiZGVsZXRlU3VjY2VzcygpOiIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRl
eGVkREIub3BlbihkYm5hbWUsIDIpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmaXJzdFN1
Y2Nlc3NFdmVudEhhbmRsZXI7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgZ290Rmlyc3RVcGdyYWRlTmVlZGVkRXZlbnQgPSBmYWxzZTsKKyAgICBy
ZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgZXZlbnQgPSBl
dnQ7CisgICAgICBkZWJ1ZygiIik7CisgICAgICBkZWJ1ZygicmVxdWVzdC5vbnVwZ3JhZGVuZWVk
ZWQoKToiKTsKKyAgICAgIGV2YWxBbmRMb2coImdvdEZpcnN0VXBncmFkZU5lZWRlZEV2ZW50ID0g
dHJ1ZSIpOworICAgICAgc2hvdWxkQmUoImV2ZW50Lm9sZFZlcnNpb24iLCAiMCIpOworICAgICAg
c2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNpb24iLCAiMiIpOworICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJTdHJpbmcoZXZlbnQpIiwgIltvYmplY3QgSURCVXBncmFkZU5lZWRlZEV2ZW50XSIp
OworICAgIH0KK30KKworZ290QmxvY2tlZEV2ZW50ID0gZmFsc2U7CitmdW5jdGlvbiBmaXJzdFN1
Y2Nlc3NFdmVudEhhbmRsZXIoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiZmlyc3RTdWNjZXNzRXZlbnRIYW5kbGVyKCk6IikKKyAgICBzaG91bGRC
ZVRydWUoImdvdEZpcnN0VXBncmFkZU5lZWRlZEV2ZW50Iik7CisgICAgZXZhbEFuZExvZygiY29u
bmVjdGlvbjEgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZXZhbEFuZExvZygiY29ubmVj
dGlvbjEub252ZXJzaW9uY2hhbmdlID0gdmVyc2lvbkNoYW5nZUhhbmRsZXIiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIlN0cmluZyhjb25uZWN0aW9uMSkiLCAiW29iamVjdCBJREJEYXRh
YmFzZV0iKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1l
LCAzKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2Vjb25kU3VjY2Vzc0NhbGxiYWNrOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVl
c3Qub25ibG9ja2VkID0gYmxvY2tlZEV2ZW50SGFuZGxlcjsKKyAgICByZXF1ZXN0Lm9udXBncmFk
ZW5lZWRlZCA9IHNlY29uZFVwZ3JhZGVOZWVkZWRFdmVudEhhbmRsZXI7Cit9CisKK3ZhciBzYXdW
ZXJzaW9uQ2hhbmdlRXZlbnQgPSBmYWxzZTsKK2Z1bmN0aW9uIHZlcnNpb25DaGFuZ2VIYW5kbGVy
KGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInZl
cnNpb25DaGFuZ2VIYW5kbGVyKCk6Iik7CisgICAgZXZhbEFuZExvZygic2F3VmVyc2lvbkNoYW5n
ZUV2ZW50ID0gdHJ1ZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudHlwZSIs
ICJ2ZXJzaW9uY2hhbmdlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJTdHJpbmcoZXZl
bnQpIiwgIltvYmplY3QgSURCVmVyc2lvbkNoYW5nZUV2ZW50XSIpOworICAgIHNob3VsZEJlKCJl
dmVudC5vbGRWZXJzaW9uIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQubmV3VmVyc2lvbiIs
ICIzIik7Cit9CisKK2Z1bmN0aW9uIGJsb2NrZWRFdmVudEhhbmRsZXIoZXZ0KQoreworICAgIGV2
ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiYmxvY2tlZEV2ZW50SGFuZGxl
cigpOiIpOworICAgIHNob3VsZEJlVHJ1ZSgic2F3VmVyc2lvbkNoYW5nZUV2ZW50Iik7CisgICAg
ZXZhbEFuZExvZygiZ290QmxvY2tlZEV2ZW50ID0gdHJ1ZSIpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiU3RyaW5nKGV2ZW50KSIsICJbb2JqZWN0IElEQlZlcnNpb25DaGFuZ2VFdmVudF0i
KTsKKyAgICBzaG91bGRCZSgiZXZlbnQub2xkVmVyc2lvbiIsICIyIik7CisgICAgc2hvdWxkQmUo
ImV2ZW50Lm5ld1ZlcnNpb24iLCAiMyIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQudHlwZSIsICJibG9ja2VkIik7CisgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjEuY2xvc2Uo
KSIpOworfQorCitnb3RTZWNvbmRVcGdyYWRlTmVlZGVkRXZlbnQgPSBmYWxzZTsKK2Z1bmN0aW9u
IHNlY29uZFVwZ3JhZGVOZWVkZWRFdmVudEhhbmRsZXIoZXZ0KQoreworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1Zygic2Vjb25kVXBncmFkZU5lZWRlZEV2ZW50SGFuZGxlcigpOiIpOworICAgIHNo
b3VsZEJlVHJ1ZSgiZ290QmxvY2tlZEV2ZW50Iik7CisgICAgZXZhbEFuZExvZygiZ290U2Vjb25k
VXBncmFkZU5lZWRlZEV2ZW50ID0gdHJ1ZSIpOworfQorCitmdW5jdGlvbiBzZWNvbmRTdWNjZXNz
Q2FsbGJhY2soZXZ0KQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygic2Vjb25kU3VjY2Vz
c0NhbGxiYWNrKCk6Iik7CisgICAgc2hvdWxkQmVUcnVlKCJnb3RTZWNvbmRVcGdyYWRlTmVlZGVk
RXZlbnQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9u
LWluaXRpYWwtdmVyc2lvbi5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1pbml0aWFsLXZlcnNpb24uanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmU3
ZDBmM2U4M2VhMTMxNTc0NjBhYTAxOTM4MjQ0NTYzZjdlOTU4ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lv
bi1pbml0aWFsLXZlcnNpb24uanMKQEAgLTAsMCArMSwzOCBAQAoraWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IHRoYXQgaW5pdGlhbCB2ZXJzaW9uIGFmdGVyIGEgc3VjY2Vzc2Z1bCBv
cGVuIG9mIGEgbm9uLWV4aXN0ZW50IGRiIGlzIDEiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5hbWUgPSBzZWxmLmxvY2F0aW9uLnBh
dGhuYW1lLnN1YnN0cmluZygxICsgc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5sYXN0SW5kZXhPZigi
LyIpKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJh
c2UoZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlU3VjY2VzczsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gZGVsZXRlU3VjY2VzcyhldnQpIHsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbigpIHsKKyAgICAgIHRlc3RQYXNzZWQoIkdv
dCB1cGdyYWRlbmVlZGVkIGV2ZW50Iik7CisgICAgfQorfQorCitmdW5jdGlvbiBvcGVuU3VjY2Vz
cyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJv
cGVuU3VjY2VzcygpOiIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisgICAgZGVidWcoIlRlc3QgbGluZSBmcm9tIElEQkZhY3Rvcnkub3BlbjogSWYg
bm8gdmVyc2lvbiBpcyBzcGVjaWZpZWQgYW5kIG5vIGRhdGFiYXNlIGV4aXN0cywgc2V0IGRhdGFi
YXNlIHZlcnNpb24gdG8gMS4iKTsKKyAgICBzaG91bGRCZSgnZGIudmVyc2lvbicsICcxJyk7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi13aXRoLWRlbGV0
ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgt
dmVyc2lvbi13aXRoLWRlbGV0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTZmYjRkMzdlZjI5OTdmNDEzNjIz
YmJhNmI3NTgzNGQwYzdjYzY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLXdpdGgtZGVsZXRlLmpzCkBA
IC0wLDAgKzEsNzQgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3Jp
cHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGlt
cG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGEg
ZGVsZXRlRGF0YWJhc2UgY2FsbGVkIHdoaWxlIGhhbmRsaW5nIGFuIHVwZ3JhZGVuZWVkZWQgZXZl
bnQgaXMgcXVldWVkIGFuZCBmaXJlcyBpdHMgZXZlbnRzIGF0IHRoZSByaWdodCB0aW1lIik7CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgZGJu
YW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMSArIHNlbGYubG9jYXRpb24u
cGF0aG5hbWUubGFzdEluZGV4T2YoIi8iKSk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGluaXRpYWxseURlbGV0ZWQ7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK3ZhciBzYXdGaXJzdFVwZ3JhZGVOZWVkZWQgPSBmYWxzZTsKK3Zh
ciBhbHJlYWR5RGVsZXRlZCA9IGZhbHNlOworZnVuY3Rpb24gaW5pdGlhbGx5RGVsZXRlZChldnQp
IHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImluaXRpYWxseURlbGV0ZWQoKToiKTsKKyAg
ICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAxKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBm
aXJzdFVwZ3JhZGVOZWVkZWQ7Cit9CisKK2Z1bmN0aW9uIGZpcnN0VXBncmFkZU5lZWRlZChldnQp
Cit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJmaXJzdFVw
Z3JhZGVOZWVkZWQoKToiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJzYXdGaXJzdFVwZ3JhZGVOZWVk
ZWQiKTsKKyAgICBldmFsQW5kTG9nKCJzYXdGaXJzdFVwZ3JhZGVOZWVkZWQgPSB0cnVlIik7Cisg
ICAgc2hvdWxkQmUoImV2ZW50Lm9sZFZlcnNpb24iLCAiMCIpOworICAgIHNob3VsZEJlKCJldmVu
dC5uZXdWZXJzaW9uIiwgIjEiKTsKKyAgICBpZiAoIWFscmVhZHlEZWxldGVkKSB7CisgICAgICAg
IGFscmVhZHlEZWxldGVkID0gdHJ1ZTsKKyAgICAgICAgcmVxdWVzdDIgPSBldmFsQW5kTG9nKCJk
ZWxldGVSZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAgICAg
ICAgcmVxdWVzdDIub25zdWNjZXNzID0gbWlkUmVxdWVzdERlbGV0ZTsKKyAgICAgICAgcmVxdWVz
dDIub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Mi5v
bmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIH0KK30KKworZnVuY3Rp
b24gbWlkUmVxdWVzdERlbGV0ZShldnQpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJt
aWRSZXF1ZXN0RGVsZXRlKCk6Iik7Cit9CisKK3Nhd1ZlcnNpb25DaGFuZ2UgPSBmYWxzZTsKK2Z1
bmN0aW9uIG9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1Zygi
Iik7CisgICAgZGVidWcoInJlcXVlc3Qub25zdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmVUcnVl
KCJzYXdGaXJzdFVwZ3JhZGVOZWVkZWQiKTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKyAgICBkYi5vbnZlcnNpb25jaGFuZ2UgPSBmdW5jdGlvbihldnQpIHsK
KyAgICAgIGV2ZW50ID0gZXZ0OworICAgICAgZGVidWcoIiIpOworICAgICAgZGVidWcoImRiLm9u
dmVyc2lvbmNoYW5nZSgpOiIpOworICAgICAgc2hvdWxkQmUoImV2ZW50Lm9sZFZlcnNpb24iLCAi
MSIpOworICAgICAgc2hvdWxkQmVOdWxsKCJldmVudC5uZXdWZXJzaW9uIik7CisgICAgICBldmFs
QW5kTG9nKCJzYXdWZXJzaW9uQ2hhbmdlID0gdHJ1ZSIpOworICAgICAgZGIuY2xvc2UoKTsKKyAg
ICB9CisgICAgc2hvdWxkQmUoJ2RiLnZlcnNpb24nLCAnMScpOworICAgIGZpbmlzaEpTVGVzdCgp
OworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24uanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODg5ZWQz
OTI2ZmE5YjUyNDQ0YTczZTZmYTU1MjcyYzU5NDAwNDg1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi5q
cwpAQCAtMCwwICsxLDc2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAg
ICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgdGhh
dCBzcGVjaWZ5aW5nIGEgdmVyc2lvbiB3aGVuIG9wZW5pbmcgYSBub24tZXhpc3RlbnQgZGIgY2F1
c2VzIGFuIHVwZ3JhZGVuZWVkZWQgZXZlbnQgYW5kIHRoYXQgdGhlIHZlcnNpb24gbnVtYmVyIGlz
IHNldCBjb3JyZWN0bHkuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7CisgICAgZGJuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJp
bmcoMSArIHNlbGYubG9jYXRpb24ucGF0aG5hbWUubGFzdEluZGV4T2YoIi8iKSk7CisKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZVN1Y2Nl
c3MoZXZ0KSB7CisgICAgZGVidWcoIlNob3VsZCB0cmlnZ2VyOiIpOworICAgIGRlYnVnKCI0LjEu
NDogSWYgbm8gZGF0YWJhc2Ugd2l0aCB0aGUgZ2l2ZW4gbmFtZSBmcm9tIHRoZSBvcmlnaW4gb3Jp
Z2luIHdhcyBmb3VuZCwgb3IgaWYgaXQgd2FzIGRlbGV0ZWQgZHVyaW5nIHRoZSBwcmV2aW91cyBz
dGVwLCB0aGVuIGNyZWF0ZSBhIGRhdGFiYXNlIHdpdGggbmFtZSBuYW1lLCB3aXRoIDAgYXMgdmVy
c2lvbiwgYW5kIHdpdGggbm8gb2JqZWN0IHN0b3Jlcy4gTGV0IGRiIGJlIHRoZSBuZXcgZGF0YWJh
c2UuIik7CisgICAgZGVidWcoIjQuMS42OiBDcmVhdGUgYSBuZXcgY29ubmVjdGlvbiB0byBkYiBh
bmQgbGV0IGNvbm5lY3Rpb24gcmVwcmVzZW50IGl0LiIpOworICAgIGRlYnVnKCI0LjEuNzogSWYg
dGhlIHZlcnNpb24gb2YgZGIgaXMgbG93ZXIgdGhhbiB2ZXJzaW9uLCB0aGVuIHJ1biB0aGUgc3Rl
cHMgZm9yIHJ1bm5pbmcgYSBcInZlcnNpb25jaGFuZ2VcIiB0cmFuc2FjdGlvbiB1c2luZyBjb25u
ZWN0aW9uLCB2ZXJzaW9uLCByZXF1ZXN0IGFuZCB1cGdyYWRlIGNhbGxiYWNrLiIpOworICAgIGRl
YnVnKCI0LjEuOTogUmV0dXJuIGNvbm5lY3Rpb24uIik7CisKKyAgICBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCA3KSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShyZXF1ZXN0KSIsICJbb2JqZWN0
IElEQk9wZW5EQlJlcXVlc3RdIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2Vz
czsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHVwZ3JhZGVOZWVkZWQ7CisgICAgcmVx
dWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIGRlYnVnKCIi
KTsKK30KKwordmFyIHNhd1VwZ3JhZGVOZWVkZWQgPSBmYWxzZTsKK3ZhciBzYXdUcmFuc2FjdGlv
bkNvbXBsZXRlID0gZmFsc2U7CitmdW5jdGlvbiB1cGdyYWRlTmVlZGVkKGV2dCkKK3sKKyAgICBl
dmVudCA9IGV2dDsKKyAgICB0ZXN0UGFzc2VkKCJJbiB0aGUgdXBncmFkZW5lZWRlZCBldmVudCBo
YW5kZXI6Iik7CisgICAgZGVidWcoIlRlc3QgNC44LjkuMToiKTsKKyAgICBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk9i
amVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkoZGIpIiwgIltvYmplY3QgSURCRGF0YWJhc2Vd
Iik7CisgICAgZGVidWcoIlRlc3QgNC44LjkuMzoiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQub2xk
VmVyc2lvbiIsICIwIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNpb24iLCAiNyIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUiLCAiZG9u
ZSIpOworICAgIGRlYnVnKCJUZXN0IDQuMS40OiIpOworICAgIHNob3VsZEJlKCJkYi5uYW1lIiwg
ImRibmFtZSIpOworICAgIHNob3VsZEJlKCJkYi52ZXJzaW9uIiwgIjciKTsKKyAgICBzaG91bGRC
ZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOworCisgICAgZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQudHJhbnNhY3Rpb24iKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkodHJhbnNhY3Rpb24p
IiwgIltvYmplY3QgSURCVHJhbnNhY3Rpb25dIik7CisgICAgZXZhbEFuZExvZygnb3MgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgic29tZU9TIiknKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1
bmN0aW9uKGUpIHsKKyAgICAgIGV2YWxBbmRMb2coInNhd1RyYW5zYWN0aW9uQ29tcGxldGUgPSB0
cnVlIik7CisgICAgfQorICAgIHNhd1VwZ3JhZGVOZWVkZWQgPSB0cnVlOworfQorCitmdW5jdGlv
biBvcGVuU3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIGRlYnVnKCJUZXN0IDQuMS43LCB0aGF0
IGEgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB3YXMgcnVuLiIpOworICAgIHNob3VsZEJlKCJz
YXdVcGdyYWRlTmVlZGVkIiwgInRydWUiKTsKKyAgICBzaG91bGRCZVRydWUoInNhd1RyYW5zYWN0
aW9uQ29tcGxldGUiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworICAgIGRlYnVnKCJLaW5kIG9mIHRlc3QgNC4xLjk6Iik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KGRiKSIsICJbb2Jq
ZWN0IElEQkRhdGFiYXNlXSIpOworICAgIHNob3VsZEJlKCdkYi52ZXJzaW9uJywgIjciKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldHZlcnNpb24tdXBncmFkZW5lZWRlZC1pbnRl
cnR3aW5lZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXR2
ZXJzaW9uLXVwZ3JhZGVuZWVkZWQtaW50ZXJ0d2luZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU1MmQ0MWUx
ZmZiOGExMjk3MzViNzJkMWZlMzE4NDE0YmFlMzFmMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXR2ZXJzaW9uLXVwZ3JhZGVuZWVk
ZWQtaW50ZXJ0d2luZWQuanMKQEAgLTAsMCArMSwxNzUgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNj
cmlwdGlvbigiVGVzdCB0aGF0IGJsYWggYmxhaC4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5hbWUgPSBzZWxmLmxvY2F0aW9uLnBh
dGhuYW1lLnN1YnN0cmluZygxICsgc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5sYXN0SW5kZXhPZigi
LyIpKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJh
c2UoZGJuYW1lKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiU3RyaW5nKHJlcXVlc3Qp
IiwgIltvYmplY3QgSURCT3BlbkRCUmVxdWVzdF0iKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGRlbGV0ZVN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoZXZ0KSB7CisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJDYWxsIG9wZW4gd2l0aCBubyB2ZXJzaW9uIHBhcmFtZXRlcjoiKTsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSB1bmV4
cGVjdGVkVXBncmFkZU5lZWRlZENhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2Vzcyhl
dnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJvcGVu
U3VjY2VzcygpOiIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgIiIpOworICAg
IGV2YWxBbmRMb2coJ3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCJzb21lIHZlcnNpb24iKScpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5l
eHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKK30KKworZnVuY3Rpb24gaW5TZXRWZXJzaW9uKGV2dCkK
K3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImluU2V0VmVy
c2lvbigpOiIpOworICAgIHRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICB0cmFucy5v
bmNvbXBsZXRlID0gc2V0VmVyc2lvbkRvbmU7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOworICAgIGRiID0gdHJhbnMuZGI7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJkYi52ZXJzaW9uIiwgInNvbWUgdmVyc2lvbiIpOworICAgIC8vIEZJWE1FOiBBbHNv
IGNhbGwgb3BlbiB3aXRoIHZlcnNpb24gZnJvbSBoZXJlLgorfQorCitmdW5jdGlvbiBzZXRWZXJz
aW9uRG9uZShldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJzZXRWZXJzaW9uRG9uZSgpOiIpOworICAgIGRiID0gZXZlbnQudGFyZ2V0LmRiOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJzb21lIHZlcnNpb24iKTsKKyAg
ICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKGRibmFtZSkiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHNlY29uZE9wZW4iKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHVuZXhwZWN0ZWRVcGdyYWRl
TmVlZGVkQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNlY29uZE9wZW4oZXZ0KQoreworICAgIGV2
ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygic2Vjb25kT3BlbigpOiIpOwor
ICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiU3RyaW5nKGRiKSIsICJbb2JqZWN0IElEQkRhdGFiYXNlXSIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJzb21lIHZlcnNpb24iKTsKKyAg
ICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgLy8gRklYTUU6IEFsc28gY2FsbCBpdCB3
aXRoIDAsIC0xLCBhbmQgLTQuCisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5v
cGVuKGRibmFtZSwgMikiKTsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZpcnN0VXBn
cmFkZU5lZWRlZAorICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpcnN0T3BlbldpdGhWZXJzaW9uOworfQorCitmdW5jdGlv
biBmaXJzdFVwZ3JhZGVOZWVkZWQoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiZmlyc3RVcGdyYWRlTmVlZGVkKCk6Iik7CisgICAgZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJTdHJpbmcoZGIpIiwgIltvYmplY3QgSURCRGF0YWJhc2VdIik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJTdHJpbmcocmVxdWVzdC50cmFuc2FjdGlvbikiLCAiW29iamVjdCBJREJUcmFu
c2FjdGlvbl0iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50Lm9sZFZlcnNpb24i
LCAic29tZSB2ZXJzaW9uIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNpb24iLCAiMiIp
OworICAgIGV2YWxBbmRMb2coInJlcXVlc3QudHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHRyYW5z
YWN0aW9uQ29tcGxldGVkIik7CisgICAgcmVxdWVzdC50cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5l
eHBlY3RlZEFib3J0Q2FsbGJhY2s7Cit9CisKK3ZhciBkaWRUcmFuc2FjdGlvbkNvbXBsZXRlID0g
ZmFsc2U7CitmdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlZChldnQpCit7CisgICAgZXZlbnQg
PSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0cmFuc2FjdGlvbkNvbXBsZXRlZCgp
OiIpOworICAgIGV2YWxBbmRMb2coImRpZFRyYW5zYWN0aW9uQ29tcGxldGUgPSB0cnVlIik7Cit9
CisKK2Z1bmN0aW9uIGZpcnN0T3BlbldpdGhWZXJzaW9uKGV2dCkKK3sKKyAgICBldmVudCA9IGV2
dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImZpcnN0T3BlbldpdGhWZXJzaW9uKCk6Iik7
CisgICAgc2hvdWxkQmVUcnVlKCJkaWRUcmFuc2FjdGlvbkNvbXBsZXRlIik7CisgICAgZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJTdHJpbmcoZGIpIiwgIltvYmplY3QgSURCRGF0YWJhc2VdIik7CisgICAgc2hvdWxkQmVO
dWxsKCJyZXF1ZXN0LnRyYW5zYWN0aW9uIik7CisgICAgc2hvdWxkQmUoImRiLnZlcnNpb24iLCAi
MiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiU3RyaW5nKHJlcXVlc3QpIiwgIltvYmpl
Y3QgSURCT3BlbkRCUmVxdWVzdF0iKTsKKyAgICBldmFsQW5kTG9nKCdyZXF1ZXN0ID0gZGIuc2V0
VmVyc2lvbigic3RyaW5nIHZlcnNpb24gMiIpJyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJTdHJpbmcocmVxdWVzdCkiLCAiW29iamVjdCBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdF0iKTsK
KyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgIGV2YWxB
bmRMb2coInJlcXVlc3Qub25lcnJvciA9IHNldFZlcnNpb25Ob3RBbGxvd2VkIik7Cit9CisKK2Z1
bmN0aW9uIHNldFZlcnNpb25Ob3RBbGxvd2VkKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoInNldFZlcnNpb25Ob3RBbGxvd2VkKCk6Iik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50eXBlIiwgImVycm9yIik7CisgICAgZGVidWco
InJlcXVlc3Qud2Via2l0RXJyb3JNZXNzYWdlID0gIiArIHJlcXVlc3Qud2Via2l0RXJyb3JNZXNz
YWdlKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgZXZhbEFuZExvZygicmVx
dWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgMSkiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1
ZXN0Lm9uZXJyb3IgPSBlcnJvcldoZW5UcnlpbmdMb3dWZXJzaW9uIik7CisgICAgcmVxdWVzdC5v
bmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZXJyb3JXaGVu
VHJ5aW5nTG93VmVyc2lvbihldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJlcnJvcldoZW5UcnlpbmdMb3dWZXJzaW9uKCk6Iik7CisgICAgZGVidWco
InJlcXVlc3Qud2Via2l0RXJyb3JNZXNzYWdlID0gIiArIHJlcXVlc3Qud2Via2l0RXJyb3JNZXNz
YWdlKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCA0
KSIpOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBldmFs
QW5kTG9nKCJyZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHNlY29uZFVwZ3JhZGVOZWVkZWQiKTsK
KyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0Lm9uc3VjY2VzcyA9IHRoaXJkT3BlblN1Y2Nlc3MiKTsK
K30KKwordmFyIGdvdFNlY29uZFVwZ3JhZGVOZWVkZWQgPSBmYWxzZTsKK2Z1bmN0aW9uIHNlY29u
ZFVwZ3JhZGVOZWVkZWQoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1Zygic2Vjb25kVXBncmFkZU5lZWRlZCgpOiIpOworICAgIGV2YWxBbmRMb2coImdv
dFNlY29uZFVwZ3JhZGVOZWVkZWQgPSB0cnVlIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm9sZFZl
cnNpb24iLCAiMiIpOworICAgIHNob3VsZEJlKCJldmVudC5uZXdWZXJzaW9uIiwgIjQiKTsKK30K
KworZnVuY3Rpb24gdGhpcmRPcGVuU3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7Cisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0aGlyZE9wZW5TdWNjZXNzKCk6Iik7CisgICAgc2hv
dWxkQmVUcnVlKCJnb3RTZWNvbmRVcGdyYWRlTmVlZGVkIik7CisgICAgZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmUoImRiLnZlcnNpb24iLCAiNCIp
OworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXR2ZXJzaW9uLXVwZ3JhZGVuZWVkZWQtaW50ZXJ0d2lu
ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0dmVyc2lv
bi11cGdyYWRlbmVlZGVkLWludGVydHdpbmVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGFk
NDZiY2Y1YjA3YjdkZDc3MzRhOGQ0MjZjMGI1YTg4NmViNmRmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0dmVyc2lvbi11cGdyYWRlbmVlZGVkLWlu
dGVydHdpbmVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDgyIEBACitUZXN0IHRoYXQgYmxhaCBi
bGFoLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5p
bmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwg
c2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWREQi5kZWxldGVE
YXRhYmFzZShkYm5hbWUpCitGQUlMIFN0cmluZyhyZXF1ZXN0KSBzaG91bGQgYmUgW29iamVjdCBJ
REJPcGVuREJSZXF1ZXN0XS4gV2FzIFtvYmplY3QgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3RdLgor
CitDYWxsIG9wZW4gd2l0aCBubyB2ZXJzaW9uIHBhcmFtZXRlcjoKK2luZGV4ZWREQi5vcGVuKGRi
bmFtZSkKKworb3BlblN1Y2Nlc3MoKToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBk
Yi52ZXJzaW9uIGlzICIiCityZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigic29tZSB2ZXJzaW9uIikK
KworaW5TZXRWZXJzaW9uKCk6CitQQVNTIGRiLnZlcnNpb24gaXMgInNvbWUgdmVyc2lvbiIKKwor
c2V0VmVyc2lvbkRvbmUoKToKK1BBU1MgZGIudmVyc2lvbiBpcyAic29tZSB2ZXJzaW9uIgorZGIu
Y2xvc2UoKQoraW5kZXhlZERCLm9wZW4oZGJuYW1lKQorcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZWNv
bmRPcGVuCisKK3NlY29uZE9wZW4oKToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBT
dHJpbmcoZGIpIGlzICJbb2JqZWN0IElEQkRhdGFiYXNlXSIKK1BBU1MgZGIudmVyc2lvbiBpcyAi
c29tZSB2ZXJzaW9uIgorZGIuY2xvc2UoKQorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFt
ZSwgMikKKworZmlyc3RVcGdyYWRlTmVlZGVkKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQK
K1BBU1MgU3RyaW5nKGRiKSBpcyAiW29iamVjdCBJREJEYXRhYmFzZV0iCitQQVNTIFN0cmluZyhy
ZXF1ZXN0LnRyYW5zYWN0aW9uKSBpcyAiW29iamVjdCBJREJUcmFuc2FjdGlvbl0iCitGQUlMIGV2
ZW50Lm9sZFZlcnNpb24gc2hvdWxkIGJlIHNvbWUgdmVyc2lvbiAob2YgdHlwZSBzdHJpbmcpLiBX
YXMgMCAob2YgdHlwZSBudW1iZXIpLgorUEFTUyBldmVudC5uZXdWZXJzaW9uIGlzIDIKK3JlcXVl
c3QudHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGVkCisKK3RyYW5z
YWN0aW9uQ29tcGxldGVkKCk6CitkaWRUcmFuc2FjdGlvbkNvbXBsZXRlID0gdHJ1ZQorCitmaXJz
dE9wZW5XaXRoVmVyc2lvbigpOgorUEFTUyBkaWRUcmFuc2FjdGlvbkNvbXBsZXRlIGlzIHRydWUK
K2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBTdHJpbmcoZGIpIGlzICJbb2JqZWN0IElE
QkRhdGFiYXNlXSIKK1BBU1MgcmVxdWVzdC50cmFuc2FjdGlvbiBpcyBudWxsCitQQVNTIGRiLnZl
cnNpb24gaXMgMgorUEFTUyBTdHJpbmcocmVxdWVzdCkgaXMgIltvYmplY3QgSURCT3BlbkRCUmVx
dWVzdF0iCityZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigic3RyaW5nIHZlcnNpb24gMiIpCitQQVNT
IFN0cmluZyhyZXF1ZXN0KSBpcyAiW29iamVjdCBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdF0iCity
ZXF1ZXN0Lm9uZXJyb3IgPSBzZXRWZXJzaW9uTm90QWxsb3dlZAorCitzZXRWZXJzaW9uTm90QWxs
b3dlZCgpOgorUEFTUyBldmVudC50eXBlIGlzICJlcnJvciIKK3JlcXVlc3Qud2Via2l0RXJyb3JN
ZXNzYWdlID0gWW91IGNhbid0IHVzZSB0aGUgc2V0VmVyc2lvbiBmdW5jdGlvbiBpZiB5b3UndmUg
YWxyZWFkeSBzZXQgdGhlIHZlcnNpb24gdGhyb3VnaCBhbiBvcGVuIGNhbGwuICBUaGUgY3VycmVu
dCBpbnRlZ2VyIHZlcnNpb24gaXMgMgorZGIuY2xvc2UoKQorcmVxdWVzdCA9IGluZGV4ZWREQi5v
cGVuKGRibmFtZSwgMSkKK3JlcXVlc3Qub25lcnJvciA9IGVycm9yV2hlblRyeWluZ0xvd1ZlcnNp
b24KKworZXJyb3JXaGVuVHJ5aW5nTG93VmVyc2lvbigpOgorcmVxdWVzdC53ZWJraXRFcnJvck1l
c3NhZ2UgPSBUaGUgcmVxdWVzdGVkIHZlcnNpb24gKDEpIGlzIGxlc3MgdGhhbiB0aGUgZXhpc3Rp
bmcgdmVyc2lvbiAoMikuCityZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCA0KQorcmVx
dWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBzZWNvbmRVcGdyYWRlTmVlZGVkCityZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHRoaXJkT3BlblN1Y2Nlc3MKKworc2Vjb25kVXBncmFkZU5lZWRlZCgpOgorZ290U2Vj
b25kVXBncmFkZU5lZWRlZCA9IHRydWUKK1BBU1MgZXZlbnQub2xkVmVyc2lvbiBpcyAyCitQQVNT
IGV2ZW50Lm5ld1ZlcnNpb24gaXMgNAorCit0aGlyZE9wZW5TdWNjZXNzKCk6CitQQVNTIGdvdFNl
Y29uZFVwZ3JhZGVOZWVkZWQgaXMgdHJ1ZQorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNT
IGRiLnZlcnNpb24gaXMgNAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Nl
dHZlcnNpb24tdXBncmFkZW5lZWRlZC1pbnRlcnR3aW5lZC5odG1sIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvc2V0dmVyc2lvbi11cGdyYWRlbmVlZGVkLWludGVydHdpbmVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWIwODJhNzY0OWE2NWY1OTI0NjdmYmU2ZjE0NDQ0MDBiYTRiNzUyOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldHZlcnNpb24t
dXBncmFkZW5lZWRlZC1pbnRlcnR3aW5lZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NldHZlcnNpb24tdXBn
cmFkZW5lZWRlZC1pbnRlcnR3aW5lZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154811</attachid>
            <date>2012-07-26 19:12:04 -0700</date>
            <delta_ts>2012-07-26 20:44:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89505-20120726191152.patch</filename>
            <type>text/plain</type>
            <size>147738</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE1Y2MzNDkxMjEyYTJi
ZWMyODUwM2FlMTI4ZWYyMWZiYmViNDYxZC4uMDU2YTRiMDc4NWVhNDBjZWZhMjg2NTM5MGE3ODAy
M2QxY2E3NzE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxMi0wNy0yNiAgRGF2
aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBp
bXBsZW1lbnQgdXBncmFkZW5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODk1MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBh
cyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlv
bnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogc3RvcmFnZS9pbmRleGVkZGIvaW50
dmVyc2lvbi1hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQuaHRtbAorICAgICAgICAgICAg
ICAgc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hbmQtc2V0dmVyc2lvbi5odG1sCisgICAg
ICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWJsb2NrZWQuaHRtbAorICAg
ICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9zZS1iZXR3ZWVuLWV2
ZW50cy5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNs
b3NlLWluLW9uY29tcGxldGUuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIv
aW50dmVyc2lvbi1kZWxldGUtaW4tdXBncmFkZW5lZWRlZC5odG1sCisgICAgICAgICAgICAgICBz
dG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWRvbnQtZnJlZXplLW9uLXJlZnJlc2guaHRtbAor
ICAgICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0LXBhcmFtZXRl
ci5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9wZW4t
d2l0aC12ZXJzaW9uLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tp
bmdTdG9yZS5oOgorICAgICAgICAoSURCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkNhbGxiYWNrczo6b25CbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNhbGxiYWNrczo6
b25VcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6c2V0VmVyc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6b25WZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnJlZ2lzdGVyRnJvbnRlbmRD
YWxsYmFja3MpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6Cisg
ICAgICAgIChJREJEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQ
ZW5kaW5nT3BlbkNhbGwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRp
bmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OnZlcnNpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5X
aXRoVmVyc2lvbkNhbGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkludGVybmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFkYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW50VmVyc2lvbkludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0
aW9uRmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
dHJhbnNhY3Rpb25GaW5pc2hlZEFuZEV2ZW50c0ZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5nQ2FsbHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25u
ZWN0aW9uV2l0aFZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrczo6b25WZXJzaW9uQ2hhbmdlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25DaGFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsLmg6CisgICAgICAgIChJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRmFjdG9yeTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5Lmg6CisgICAgICAgIChJREJGYWN0b3J5KToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaDoKKyAgICAgICAgKElEQkZhY3RvcnlCYWNrZW5k
SW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2UuaDoKKyAgICAgICAgKElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnB1dFZhckludCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldFVwTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdT
dG9yZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpn
ZXRJREJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZURhdGFiYXNlKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgIChJREJMZXZlbERCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJMZXZlbERCQ29kaW5nLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
TWV0YWRhdGEuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9w
ZW5EQlJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0
OjpJREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6
On5JREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6
OmludGVyZmFjZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6b25C
bG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFkZU5l
ZWRlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGwuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCT3BlbkRCUmVx
dWVzdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5pZGw6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
Q2FsbGJhY2tzLmguCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1
ZXN0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmNsZWFy
VHJhbnNhY3Rpb25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlJlcXVlc3Q6OmVucXVldWVFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25CbG9ja2Vk
KToKKyAgICAgICAgKElEQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6
aXNPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklEQlRy
YW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzZXRBY3RpdmUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpc3BhdGNoRXZlbnQpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKElEQlRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNvbW1pdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVXBncmFkZU5lZWRlZEV2ZW50Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVXBncmFkZU5lZWRlZEV2ZW50OjpJREJVcGdy
YWRlTmVlZGVkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVXBncmFkZU5lZWRlZEV2ZW50
Ojp+SURCVXBncmFkZU5lZWRlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlVwZ3JhZGVO
ZWVkZWRFdmVudDo6b2xkVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJVcGdyYWRlTmVl
ZGVkRXZlbnQ6Om5ld1ZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCVXBncmFkZU5lZWRl
ZEV2ZW50OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJV
cGdyYWRlTmVlZGVkRXZlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmguCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKElEQlVwZ3JhZGVOZWVkZWRFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3MuaC4KKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmluOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdl
dEZhY3RvcnkuaW46CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA3LTI2ICBOYXlhbiBLdW1hciBLICA8
bmF5YW5ra0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgW1dlYkdMXSBJbml0aWFsIHNpemUgb2Yg
Y2FudmFzIGNhbiBiZSBsYXJnZXIgdGhhbiBNQVhfVklFV1BPUlRfRElNUy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggMWQ3MDQ3NDBjN2ZhZGQ4NjE5OThkYWU4ODUzOGU2MmE3NDE1MTZl
ZC4uOGY5N2NmNDFlODRkMWQxZDI1MzgwYTg5N2U0MDJmM2FmYTIwMjk5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxMi0wNy0yNiAgRGF2aWQgR3JvZ2Fu
ICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBpbXBsZW1lbnQg
dXBncmFkZW5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODk1MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2Fj
aCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cg
KE9PUFMhKS4KKworICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5OjpvbkJsb2NrZWQpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJhY2tzUHJveHk6Om9uVXBncmFkZU5lZWRlZCk6
CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5Lmg6CisgICAgICAgIChJREJDYWxsYmFj
a3NQcm94eSk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OnNldFZlcnNpb24pOgorICAg
ICAgICAqIHNyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6b25WZXJzaW9uQ2hhbmdlKToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaDoKKyAg
ICAgICAgKElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAqIHNyYy9JREJGYWN0
b3J5QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCRmFjdG9yeUJhY2tlbmRQ
cm94eTo6b3Blbik6CisgICAgICAgICogc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaDoKKyAg
ICAgICAgKElEQkZhY3RvcnlCYWNrZW5kUHJveHkpOgorICAgICAgICAqIHNyYy9XZWJJREJDYWxs
YmFja3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzSW1wbDo6V2Vi
SURCQ2FsbGJhY2tzSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNhbGxiYWNrc0ltcGw6
Om9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNhbGxiYWNrc0ltcGw6Om9uQmxv
Y2tlZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDYWxsYmFj
a3NJbXBsOjpvblVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAqIHNyYy9XZWJJREJDYWxsYmFja3NJ
bXBsLmg6CisgICAgICAgIChXZWJJREJDYWxsYmFja3NJbXBsKToKKyAgICAgICAgKiBzcmMvV2Vi
SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25DaGFuZ2UpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmg6CisgICAgICAgIChX
ZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJJREJGYWN0b3J5
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkZhY3RvcnlJbXBsOjpvcGVuKToKKyAg
ICAgICAgKiBzcmMvV2ViSURCRmFjdG9yeUltcGwuaDoKKyAgICAgICAgKFdlYklEQkZhY3RvcnlJ
bXBsKToKKyAgICAgICAgKiB0ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmFpbGluZ0JhY2tpbmdTdG9yZTo6Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9JREJGYWtlQmFj
a2luZ1N0b3JlLmg6CisKIDIwMTItMDctMjYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjM3OTku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5n
U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9y
ZS5oCmluZGV4IDc4YTlmNjY3YWRkMTMwZTYzZTNjMDc0NmQ0YTcwM2I0ODk1NDZiZDcuLjUyNzkw
MzQyZGQ3NDQ4MDllY2YzNDMwMTliMzliYzFiMWViMzMxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC00Nyw4ICs0Nyw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJCYWNraW5nU3RvcmUoKSB7fTsKIAogICAgIHZp
cnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzKSA9
IDA7Ci0gICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5n
JiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCkgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5n
JiBmb3VuZFN0cmluZ1ZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVyc2lvbiwgaW50NjRfdCYg
Zm91bmRJZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRh
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdWZXJzaW9uLCBjb25zdCBp
bnQ2NF90IGludFZlcnNpb24sIGludDY0X3QmIHJvd0lkKSA9IDA7CisgICAgdmlydHVhbCBib29s
IHVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbihpbnQ2NF90IHJvd0lkLCBpbnQ2NF90IGludFZl
cnNpb24pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRl
SURCRGF0YWJhc2VNZXRhRGF0YShpbnQ2NF90IHJvd0lkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24p
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1l
KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJh
Y2tzLmgKaW5kZXggODUzZmZjNzJkMjYwMzkxZmNjNDM2NjRkNTczZmM1ZGFlMzAyZGMwZi4uMmE2
YWZlZjM4MzE1YmU2NWIyNjYyOGU1Njg4NmRiYTMyYWM1MzY0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKQEAgLTU5LDcgKzU5LDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktleT4sIGNvbnN0IElEQktleVBhdGgmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElE
QktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIHByaW1hcnlLZXlz
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
b25CbG9ja2VkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBv
bkJsb2NrZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25VcGdyYWRlTmVlZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCA1YzNkZmNiNmI1NDJjMWJlMDZiMjQxYjQ3
Y2U5YmFjYjliNjYyOWI0Li45Y2FhNmIzODMwMDcwMDUyOGM1MGVmN2U2MTZiYjQ1NWNlNjFiZWIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
Y3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNs
dWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRl
ICJJREJVcGdyYWRlTmVlZGVkRXZlbnQuaCIKICNpbmNsdWRlICJJREJWZXJzaW9uQ2hhbmdlRXZl
bnQuaCIKICNpbmNsdWRlICJJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKQEAgLTIwOCw2ICsyMDksNyBAQCBQYXNzUmVmUHRyPElE
QlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBJREJEYXRhYmFzZTo6c2V0VmVyc2lvbihTY3JpcHRFeGVj
dXRpb25Db250ZQogICAgIH0KIAogICAgIFJlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4g
cmVxdWVzdCA9IElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55
OjpjcmVhdGUodGhpcyksIHZlcnNpb24pOworICAgIEFTU0VSVChtX2JhY2tlbmQpOwogICAgIG1f
YmFja2VuZC0+c2V0VmVyc2lvbih2ZXJzaW9uLCByZXF1ZXN0LCBtX2RhdGFiYXNlQ2FsbGJhY2tz
LCBlYyk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CkBAIC0zMDEsNiArMzAzLDE3IEBAIHZvaWQg
SURCRGF0YWJhc2U6OmNsb3NlQ29ubmVjdGlvbigpCiAgICAgfQogfQogCit2b2lkIElEQkRhdGFi
YXNlOjpvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24sIGludDY0X3QgcmVx
dWVzdGVkVmVyc2lvbikKK3sKKyAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9jbG9zZVBlbmRp
bmcpCisgICAgICAgIHJldHVybjsKKworICAgIGVucXVldWVFdmVudChJREJVcGdyYWRlTmVlZGVk
RXZlbnQ6OmNyZWF0ZShleGlzdGluZ1ZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24sIGV2ZW50TmFt
ZXMoKS52ZXJzaW9uY2hhbmdlRXZlbnQpKTsKK30KKwogdm9pZCBJREJEYXRhYmFzZTo6b25WZXJz
aW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIHsKICAgICBpZiAobV9jb250ZXh0U3Rv
cHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQpAQCAtMzE0LDYgKzMyNyw3IEBAIHZv
aWQgSURCRGF0YWJhc2U6Om9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHZlcnNpb24pCiAK
IHZvaWQgSURCRGF0YWJhc2U6OnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKQogeworICAgIEFT
U0VSVChtX2JhY2tlbmQpOwogICAgIG1fYmFja2VuZC0+cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNr
cyhtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggNjRjYmIzMjZhNTg4M2RjZjM5NDczY2FhMTA5
NzI5MDVmM2ZlNjc1ZS4uZDY5YzFiYjZlZjgwZDRiZDIwOGFiNTg2Nzk3ZmNkN2UxNGZhZTIyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBA
IC03OCw2ICs3OCw3IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKHZlcnNpb25jaGFuZ2UpOwogCiAgICAgLy8gSURCRGF0YWJhc2VDYWxsYmFja3MKKyAgICB2
aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGludDY0X3QgZXhpc3RpbmdWZXJzaW9uLCBpbnQ2
NF90IHJlcXVlc3RlZFZlcnNpb24pOwogICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2Uo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0ZWRWZXJzaW9uKTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVj
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCBlNDUxNDdkNWMwYjBiNjJiMzNkM2YzY2NkNjNh
NjE3ZmI1YjhiOThlLi42MzA2ZDY5MjRkNTNiZGNhYzE1YTk2NDYzMWUzZGFlODBiNDgzN2NlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtNDcsMTIgKzQ3LDMzIEBAIHB1YmxpYzoKICAgICB9
CiAgICAgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcygpIHsgcmV0dXJuIG1fY2Fs
bGJhY2tzOyB9CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgUGVuZGluZ09wZW5DYWxsKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgICAgIDogbV9jYWxsYmFja3Mo
Y2FsbGJhY2tzKQogICAgIHsKICAgICB9CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPElEQkNhbGxi
YWNrcz4gbV9jYWxsYmFja3M7Cit9OworCitjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQ
ZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlbmRpbmdPcGVu
V2l0aFZlcnNpb25DYWxsPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGw+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKGNhbGxiYWNrcywgdmVyc2lvbikpOworICAg
IH0KKyAgICBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKCkgeyByZXR1cm4gbV9j
YWxsYmFja3M7IH0KKyAgICBpbnQ2NF90IHZlcnNpb24oKSB7IHJldHVybiBtX3ZlcnNpb247IH0K
KworcHJpdmF0ZToKKyAgICBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbChQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCisgICAgICAgIDogbV9jYWxs
YmFja3MoY2FsbGJhY2tzKQorICAgICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQorICAgIHsKKyAg
ICB9CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CisgICAgaW50NjRfdCBt
X3ZlcnNpb247CiB9OwogCiBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nRGVs
ZXRlQ2FsbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlbmRpbmdEZWxldGVDYWxsPiB7CkBAIC0xMDYs
NiArMTI3LDcgQEAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1w
bChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG8KICAgICAsIG1faWQoSW52YWxpZElk
KQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3ZlcnNpb24oIiIpCisgICAgLCBtX2ludFZl
cnNpb24oSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKQogICAgICwgbV9pZGVudGlm
aWVyKHVuaXF1ZUlkZW50aWZpZXIpCiAgICAgLCBtX2ZhY3RvcnkoZmFjdG9yeSkKICAgICAsIG1f
dHJhbnNhY3Rpb25Db29yZGluYXRvcihjb29yZGluYXRvcikKQEAgLTExNiwxMyArMTM4LDEzIEBA
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3Ry
aW5nJiBuYW1lLCBJREJCYWNraW5nU3RvCiAKIGJvb2wgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
b3BlbkludGVybmFsKCkKIHsKLSAgICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0
SURCRGF0YWJhc2VNZXRhRGF0YShtX25hbWUsIG1fdmVyc2lvbiwgbV9pZCk7Ci0gICAgQVNTRVJU
KHN1Y2Nlc3MgPT0gKG1faWQgIT0gSW52YWxpZElkKSk7CisgICAgYm9vbCBzdWNjZXNzID0gbV9i
YWNraW5nU3RvcmUtPmdldElEQkRhdGFiYXNlTWV0YURhdGEobV9uYW1lLCBtX3ZlcnNpb24sIG1f
aW50VmVyc2lvbiwgbV9pZCk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShzdWNjZXNzID09ICht
X2lkICE9IEludmFsaWRJZCksICJzdWNjZXNzID0gJXMsIG1faWQgPSAlIlBSSWQ2NCwgc3VjY2Vz
cyA/ICJ0cnVlIiA6ICJmYWxzZSIsIG1faWQpOwogICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAg
IGxvYWRPYmplY3RTdG9yZXMoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIHJl
dHVybiBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShtX25hbWUsIG1f
dmVyc2lvbiwgbV9pZCk7CisgICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlLT5jcmVhdGVJREJEYXRh
YmFzZU1ldGFEYXRhKG1fbmFtZSwgbV92ZXJzaW9uLCBtX2ludFZlcnNpb24sIG1faWQpOwogfQog
CiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp+SURCRGF0YWJhc2VCYWNrZW5kSW1wbCgpCkBAIC0x
MzYsNyArMTU4LDcgQEAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmJhY2tpbmdTdG9yZSgpIGNvbnN0CiAKIElEQkRhdGFiYXNlTWV0YWRhdGEgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6bWV0YWRhdGEoKSBjb25zdAogewotICAgIElEQkRhdGFiYXNl
TWV0YWRhdGEgbWV0YWRhdGEobV9uYW1lLCBtX3ZlcnNpb24sIElEQkRhdGFiYXNlTWV0YWRhdGE6
Ok5vSW50VmVyc2lvbik7CisgICAgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YShtX25hbWUs
IG1fdmVyc2lvbiwgbV9pbnRWZXJzaW9uKTsKICAgICBmb3IgKE9iamVjdFN0b3JlTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG1fb2JqZWN0U3RvcmVzLmJlZ2luKCk7IGl0ICE9IG1fb2JqZWN0U3Rv
cmVzLmVuZCgpOyArK2l0KQogICAgICAgICBtZXRhZGF0YS5vYmplY3RTdG9yZXMuc2V0KGl0LT5m
aXJzdCwgaXQtPnNlY29uZC0+bWV0YWRhdGEoKSk7CiAgICAgcmV0dXJuIG1ldGFkYXRhOwpAQCAt
MjE0LDYgKzIzNiw4IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbihj
b25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsCiAgICAgICAgIGNhbGxiYWNr
cy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OklEQl9BQk9SVF9FUlIsICJDb25uZWN0aW9uIHdhcyBjbG9zZWQgYmVmb3JlIHNldCB2ZXJzaW9u
IHRyYW5zYWN0aW9uIHdhcyBjcmVhdGVkIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAg
IGlmIChtX2ludFZlcnNpb24gIT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKQor
ICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgU3RyaW5nOjpmb3JtYXQoIllvdSBjYW4ndCB1
c2UgdGhlIHNldFZlcnNpb24gZnVuY3Rpb24gaWYgeW91J3ZlIGFscmVhZHkgc2V0IHRoZSB2ZXJz
aW9uIHRocm91Z2ggYW4gb3BlbiBjYWxsLiAgVGhlIGN1cnJlbnQgaW50ZWdlciB2ZXJzaW9uIGlz
ICVsZCIsIG1faW50VmVyc2lvbikpKTsKICAgICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0Ojpj
b25zdF9pdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4oKTsgaXQgIT0g
bV9kYXRhYmFzZUNhbGxiYWNrc1NldC5lbmQoKTsgKytpdCkgewogICAgICAgICBpZiAoKml0ICE9
IGRhdGFiYXNlQ2FsbGJhY2tzKQogICAgICAgICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZSh2
ZXJzaW9uKTsKQEAgLTI1OSw2ICsyODMsMTkgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpzZXRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWYKICAg
ICBjYWxsYmFja3MtPm9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4odHJhbnNhY3Rpb24pKTsKIH0KIAordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpzZXRJbnRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UsIGludDY0X3QgdmVyc2lvbiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKQoreworICAgIGludDY0X3QgZGF0YWJhc2VJ
ZCA9IGRhdGFiYXNlLT5pZCgpOworICAgIGludDY0X3Qgb2xkVmVyc2lvbiA9IGRhdGFiYXNlLT5t
X2ludFZlcnNpb247CisgICAgZGF0YWJhc2UtPm1faW50VmVyc2lvbiA9IHZlcnNpb247CisgICAg
aWYgKCFkYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPnVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lv
bihkYXRhYmFzZUlkLCBkYXRhYmFzZS0+bV9pbnRWZXJzaW9uKSkgeworICAgICAgICBjYWxsYmFj
a3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpVTktOT1dOX0VSUiwgIkVycm9yIHdyaXRpbmcgZGF0YSB0byBzdGFibGUgc3RvcmFnZS4iKSk7
CisgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGNhbGxiYWNrcy0+b25VcGdyYWRlTmVlZGVkKG9sZFZlcnNpb24sIHRyYW5zYWN0aW9uLCBk
YXRhYmFzZSk7Cit9CisKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25T
dGFydGVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gcHJwVHJhbnNhY3Rp
b24pCiB7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9u
ID0gcHJwVHJhbnNhY3Rpb247CkBAIC0yNzYsNiArMzEzLDEzIEBAIHZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZF
UlNJT05fQ0hBTkdFKSB7CiAgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5nZXQoKSA9PSBtX3J1
bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgICAgICBtX3J1bm5pbmdW
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uY2xlYXIoKTsKKyAgICB9Cit9CisKK3ZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZEFuZEV2ZW50c0ZpcmVkKFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gcHJwVHJhbnNhY3Rpb24pCit7CisgICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gcHJwVHJhbnNh
Y3Rpb247CisgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZF
UlNJT05fQ0hBTkdFKSB7CiAgICAgICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKICAgICB9CiB9
CkBAIC0zMjUsNiArMzY5LDEzIEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vz
c1BlbmRpbmdDYWxscygpCiAgICAgaWYgKG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
biB8fCAhbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmlzRW1wdHkoKSB8fCAhbV9wZW5kaW5nRGVs
ZXRlQ2FsbHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBEZXF1ZTxSZWZQdHI8
UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+ID4gcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxz
OworICAgIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLnN3YXAocGVuZGluZ09wZW5XaXRo
VmVyc2lvbkNhbGxzKTsKKyAgICB3aGlsZSAoIXBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5p
c0VtcHR5KCkpIHsKKyAgICAgIFJlZlB0cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4gcGVu
ZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwgPSBwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMudGFr
ZUZpcnN0KCk7CisgICAgICBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKHBlbmRpbmdPcGVuV2l0
aFZlcnNpb25DYWxsLT5jYWxsYmFja3MoKSwgcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPnZl
cnNpb24oKSk7CisgICAgfQorCiAgICAgLy8gR2l2ZW4gdGhlIGNoZWNrIGFib3ZlLCBpdCBhcHBl
YXJzIHRoYXQgY2FsbHMgY2Fubm90IGJlIHJlcXVldWVkIGJ5CiAgICAgLy8gb3BlbkNvbm5lY3Rp
b24sIGJ1dCB1c2UgYSBkaWZmZXJlbnQgcXVldWUgZm9yIGl0ZXJhdGlvbiB0byBiZSBzYWZlLgog
ICAgIERlcXVlPFJlZlB0cjxQZW5kaW5nT3BlbkNhbGw+ID4gcGVuZGluZ09wZW5DYWxsczsKQEAg
LTM3Myw2ICs0MjQsNzIgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVj
dGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgIH0KIH0KIAordm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24o
aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2Fs
bGJhY2tzKQoreworICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxi
YWNrczsKKyAgICBBU1NFUlQoY2FsbGJhY2tzKTsKKyAgICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tz
U2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4oKTsg
aXQgIT0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5lbmQoKTsgKytpdCkgeworICAgICAgICAvLyBU
aGUgZnJvbnRlbmQgdGFrZXMgY2FyZSBvZiB0aGUgZm9sbG93aW5nIGNsYXVzZSwgdGhlIGJhY2tl
bmQganVzdAorICAgICAgICAvLyBmaXJlcyB2ZXJzaW9uIGNoYW5nZSBhdCBhbGwgdGhlIGNvbm5l
Y3Rpb25zLCB0aGUgZnJvbnRlbmQgd2lsbCBub3QKKyAgICAgICAgLy8gZGVsaXZlciB0byBjb25u
ZWN0aW9ucyB3aXRoIGNsb3NlUGVuZGluZyBzZXQuCisgICAgICAgIC8vICJUaGUgZXZlbnQgbXVz
dCBub3QgYmUgZmlyZWQgb24gb2JqZWN0cyB3aGljaCBoYXMgdGhlIGNsb3NlUGVuZGluZworICAg
ICAgICAvLyBmbGFnIHNldC4iCisgICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UobV9pbnRW
ZXJzaW9uLCByZXF1ZXN0ZWRWZXJzaW9uKTsKKyAgICB9CisgICAgLy8gVGhlIHNwZWMgZGljdGF0
ZXMgd2Ugd2FpdCB1bnRpbCBhbGwgdGhlIHZlcnNpb24gY2hhbmdlIGV2ZW50cyBhcmUKKyAgICAv
LyBkZWxpdmVyZWQgYW5kIHRoZW4gY2hlY2sgbV9kYXRhYmFzZUNhbGxiYWNrcy5lbXB0eSgpIGJl
Zm9yZSBwcm9jZWVkaW5nCisgICAgLy8gb3IgZmlyaW5nIGEgYmxvY2tlZCBldmVudCwgYnV0IGlu
c3RlYWQgd2Ugc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCBob3cKKyAgICAvLyB0aGUgb2xkIHNl
dFZlcnNpb24gKGluY29ycmVjdGx5KSBkaWQgaXQ6CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMwCisgICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpID4g
MCkKKyAgICAgICAgY2FsbGJhY2tzLT5vbkJsb2NrZWQobV9pbnRWZXJzaW9uKTsKKyAgICAvLyBG
aWd1cmUgb3V0IGhvdyB0byB0ZXN0IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi4K
KyAgICBpZiAobV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8IGNvbm5lY3Rpb25D
b3VudCgpID4gMCkgeworICAgICAgICAvLyBJdCdzIGFscmVhZHkgcXVldWVkLgorICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVz
ID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb25JbnRl
cmZhY2UgPSB0aGlzLT50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWVzLmdldCgpLCBJREJUcmFu
c2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UsIGVjKTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9t
KHRyYW5zYWN0aW9uSW50ZXJmYWNlLmdldCgpKTsKKyAgICBBU1NFUlQoIWVjKTsKKworICAgIFJl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSA9IHRoaXM7CisgICAgaWYgKCF0
cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6c2V0SW50VmVyc2lvbkludGVybmFsLCBkYXRhYmFzZSwgcmVxdWVzdGVkVmVy
c2lvbiwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cmVz
ZXRWZXJzaW9uLCBkYXRhYmFzZSwgbV92ZXJzaW9uKSkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgIH0KK30KKwordm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikKK3sKKyAg
ICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CisgICAgaWYg
KCFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5uaW5nVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVuZChQZW5kaW5nT3Blbldp
dGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgdmVyc2lvbikpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmIChtX2lkID09IEludmFsaWRJZCkgeworICAgICAgICBpZiAob3Bl
bkludGVybmFsKCkpCisgICAgICAgICAgICBBU1NFUlQoIW1faW50VmVyc2lvbik7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJv
ci4iKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHZl
cnNpb24gPiBtX2ludFZlcnNpb24pIHsKKyAgICAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9u
Q2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tz
LCB2ZXJzaW9uKSk7CisgICAgICAgIHJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih2ZXJz
aW9uLCBjYWxsYmFja3MpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICh2ZXJzaW9u
IDwgbV9pbnRWZXJzaW9uKSB7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFz
ZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlZFUl9FUlIsIFN0cmluZzo6Zm9y
bWF0KCJUaGUgcmVxdWVzdGVkIHZlcnNpb24gKCVsZCkgaXMgbGVzcyB0aGFuIHRoZSBleGlzdGlu
ZyB2ZXJzaW9uICglbGQpLiIsIHZlcnNpb24sIG1faW50VmVyc2lvbikpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBBU1NFUlQodmVyc2lvbiA9PSBtX2ludFZlcnNpb24pOworICAgICsr
bV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50OworICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKHRoaXMp
OworfQorCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZURhdGFiYXNlKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MpCiB7CiAgICAgaWYgKG1fcnVubmluZ1Zl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCAhbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmlzRW1w
dHkoKSkgewpAQCAtMzkzLDEyICs1MTAsMTQgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpkZWxldGVEYXRhYmFzZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2sKICAg
ICAgICAgY2FsbGJhY2tzLT5vbkJsb2NrZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwogICAgIGlmICghbV9iYWNraW5nU3RvcmUtPmRlbGV0
ZURhdGFiYXNlKG1fbmFtZSkpIHsKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRl
cm5hbCBlcnJvci4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV92ZXJzaW9uID0g
IiI7CiAgICAgbV9pZCA9IEludmFsaWRJZDsKKyAgICBtX2ludFZlcnNpb24gPSBJREJEYXRhYmFz
ZU1ldGFkYXRhOjpOb0ludFZlcnNpb247CiAgICAgbV9vYmplY3RTdG9yZXMuY2xlYXIoKTsKICAg
ICBjYWxsYmFja3MtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgp
KTsKIH0KQEAgLTQxMSwxMiArNTMwLDE0IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzCiAgICAg
aWYgKGNvbm5lY3Rpb25Db3VudCgpID4gMSkKICAgICAgICAgcmV0dXJuOwogCisgICAgVHJhbnNh
Y3Rpb25TZXQgdHJhbnNhY3Rpb25zKG1fdHJhbnNhY3Rpb25zKTsKICAgICBwcm9jZXNzUGVuZGlu
Z0NhbGxzKCk7CiAKLSAgICBpZiAoIWNvbm5lY3Rpb25Db3VudCgpKSB7Ci0gICAgICAgIFRyYW5z
YWN0aW9uU2V0IHRyYW5zYWN0aW9ucyhtX3RyYW5zYWN0aW9ucyk7CisgICAgQVNTRVJUKG1fdHJh
bnNhY3Rpb25zLnNpemUoKSAtIHRyYW5zYWN0aW9ucy5zaXplKCkgPD0gMSk7CisgICAgaWYgKCFj
b25uZWN0aW9uQ291bnQoKSAmJiAhbV9wZW5kaW5nRGVsZXRlQ2FsbHMuc2l6ZSgpICYmIG1fdHJh
bnNhY3Rpb25zLnNpemUoKSA9PSB0cmFuc2FjdGlvbnMuc2l6ZSgpKSB7CiAgICAgICAgIGZvciAo
VHJhbnNhY3Rpb25TZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdHJhbnNhY3Rpb25zLmJlZ2luKCk7
IGl0ICE9IHRyYW5zYWN0aW9ucy5lbmQoKTsgKytpdCkKICAgICAgICAgICAgICgqaXQpLT5hYm9y
dCgpOworCiAgICAgICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5pc0VtcHR5KCkpOwogCiAgICAg
ICAgIG1fYmFja2luZ1N0b3JlLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggODA1ZWI2
MTdmYjMyMTRkMGJiYjI1NzVmMzJiZjg5NWE0NWYxMGQxZC4uNDQxOTE2ZjU4N2FlZjI4ZDViODhm
YjNjYzE5MzhiYjNlMjRjZTE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAtNTcsNiArNTcsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogICAgIHZvaWQgb3BlbkNvbm5lY3Rpb24oUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+KTsKKyAgICB2b2lkIG9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24o
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBpbnQ2NF90IHZlcnNpb24pOwogICAgIHZvaWQgZGVs
ZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKIAogICAgIC8vIElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZQpAQCAtNzEsMTggKzcyLDIyIEBAIHB1YmxpYzoKICAgICBJREJU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yKiB0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpOyB9CiAgICAgdm9pZCB0cmFuc2Fj
dGlvblN0YXJ0ZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPik7CiAgICAg
dm9pZCB0cmFuc2FjdGlvbkZpbmlzaGVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbD4pOworICAgIHZvaWQgdHJhbnNhY3Rpb25GaW5pc2hlZEFuZEV2ZW50c0ZpcmVkKFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwogCiBwcml2YXRlOgogICAgIElEQkRh
dGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmUqIGRh
dGFiYXNlLCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiwgSURCRmFjdG9yeUJhY2tlbmRJbXBs
KiwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKTsKIAogICAgIGJvb2wgb3BlbkludGVy
bmFsKCk7CisgICAgdm9pZCBydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50NjRfdCBy
ZXF1ZXN0ZWRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogICAgIHZvaWQgbG9h
ZE9iamVjdFN0b3JlcygpOwogICAgIGludDMyX3QgY29ubmVjdGlvbkNvdW50KCk7CiAgICAgdm9p
ZCBwcm9jZXNzUGVuZGluZ0NhbGxzKCk7CisgICAgc3RhdGljIHZvaWQgcHJvY2Vzc1BlbmRpbmdU
YXNrKHZvaWQqIGRiKTsKIAogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlSW50ZXJu
YWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW1wbD4sIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwogICAgIHN0YXRpYyB2b2lkIGRlbGV0ZU9iamVj
dFN0b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4s
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwogICAgIHN0YXRpYyB2b2lk
IHNldFZlcnNpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwor
ICAgIHN0YXRpYyB2b2lkIHNldEludFZlcnNpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgaW50NjRfdCB2ZXJzaW9u
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPik7CiAKICAgICAvLyBUaGVzZSBhcmUgdXNlZCBhcyBzZXRWZXJzaW9uIHRy
YW5zYWN0aW9uIGFib3J0IHRhc2tzLgogICAgIHN0YXRpYyB2b2lkIHJlbW92ZU9iamVjdFN0b3Jl
RnJvbU1hcChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPik7CkBAIC05
Myw2ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgaW50NjRfdCBtX2lkOwogICAgIFN0cmluZyBtX25h
bWU7CiAgICAgU3RyaW5nIG1fdmVyc2lvbjsKKyAgICBpbnQ2NF90IG1faW50VmVyc2lvbjsKIAog
ICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgLy8gVGhpcyBtaWdodCBub3QgbmVlZCB0byBi
ZSBhIFJlZlB0ciBzaW5jZSB0aGUgZmFjdG9yeSdzIGxpZmV0aW1lIGlzIHRoYXQgb2YgdGhlIHBh
Z2UgZ3JvdXAsIGJ1dCBpdCdzIGJldHRlciB0byBiZSBjb25zZXJ2aXRpdmUgdGhhbiBzb3JyeS4K
QEAgLTExMyw2ICsxMTksOSBAQCBwcml2YXRlOgogICAgIGNsYXNzIFBlbmRpbmdPcGVuQ2FsbDsK
ICAgICBEZXF1ZTxSZWZQdHI8UGVuZGluZ09wZW5DYWxsPiA+IG1fcGVuZGluZ09wZW5DYWxsczsK
IAorICAgIGNsYXNzIFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOworICAgIERlcXVlPFJlZlB0
cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4gPiBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25D
YWxsczsKKwogICAgIGNsYXNzIFBlbmRpbmdEZWxldGVDYWxsOwogICAgIERlcXVlPFJlZlB0cjxQ
ZW5kaW5nRGVsZXRlQ2FsbD4gPiBtX3BlbmRpbmdEZWxldGVDYWxsczsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3MuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmgK
aW5kZXggYjNmMjQ0ZjUxNmI2OTg3ZWExMTljYmY3MDE5YjdiNTQzNzVmMTJiZi4uMTZhOWVhNmM1
MDhiMGQ5MmI2MWU0OTk3YzU0MzAxMzJhNmQyYWNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3MuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrcy5oCkBAIC0zOCw2
ICszOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUNhbGxiYWNrcygpIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHZlcnNp
b24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGludDY0X3QgY3VycmVu
dFZlcnNpb24sIGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5j
cHAKaW5kZXggMTk0MTJmY2JlNTBhYjQ0YmY1M2RjMDFlMDNkODg1M2UyOGY3YzVmZi4uZjcxN2Fk
YmQ1NTFkNDQyZWJiOGZkOThkZDhhN2NmZDkwZDY5YmNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGwuY3BwCkBAIC01Miw2ICs1MiwxMiBAQCB2b2lkIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6
b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKICAgICAgICAgbV9kYXRhYmFz
ZS0+b25WZXJzaW9uQ2hhbmdlKHZlcnNpb24pOwogfQogCit2b2lkIElEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbDo6b25WZXJzaW9uQ2hhbmdlKGludDY0X3QgY3VycmVudFZlcnNpb24sIGludDY0X3Qg
cmVxdWVzdGVkVmVyc2lvbikKK3sKKyAgICBpZiAobV9kYXRhYmFzZSkKKyAgICAgICAgbV9kYXRh
YmFzZS0+b25WZXJzaW9uQ2hhbmdlKGN1cnJlbnRWZXJzaW9uLCByZXF1ZXN0ZWRWZXJzaW9uKTsK
K30KKwogdm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OnVucmVnaXN0ZXJEYXRhYmFzZShJ
REJEYXRhYmFzZSogZGF0YWJhc2UpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChkYXRhYmFzZSwgZGF0
YWJhc2UgPT0gbV9kYXRhYmFzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCmluZGV4IGU4YjFmOTli
ODM4YWY3YjkzN2Q5NGI3YWY4ZjdmN2RmYjgyYmU3ZmIuLjA4MGY1YmE4N2JmZDY4MjVjNTU1ZmM4
ZDVkMGY3Zjc2Njc0M2E0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCkBAIC00Miw2ICs0Miw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsK
KyAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGludDY0X3QgY3VycmVudFZlcnNpb24s
IGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRGF0YWJhc2Uo
SURCRGF0YWJhc2UqKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXggY2Y1MmNjMWZlMmIxMzU1YjZjNTRlZGNlMjY1
ZTBmM2U4YzNhNWU5MS4uNzJhZGFjZmQ0ZmQzOWZjMTdkYjJlYzkzM2M2ZDM1MTE5ZGQ3MWU0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5o
IgogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCi0jaW5jbHVk
ZSAiSURCUmVxdWVzdC5oIgorI2luY2x1ZGUgIklEQk9wZW5EQlJlcXVlc3QuaCIKICNpbmNsdWRl
ICJJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJQYWdlR3JvdXAuaCIKQEAgLTEwNSw3ICsxMDUsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IElEQkZhY3Rvcnk6OmdldERhdGFiYXNlTmFtZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dAogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkZh
Y3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4g
SURCRmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
aWYgKG5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgZWMgPSBOQVRJVkVfVFlQRV9FUlI7CkBAIC0x
MTQsMTEgKzExNCwxNiBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW4o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgUwogICAgIGlmICghaXNDb250
ZXh0VmFsaWQoY29udGV4dCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPElEQlJl
cXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVh
dGUodGhpcyksIDApOwotICAgIG1fYmFja2VuZC0+b3BlbihuYW1lLCByZXF1ZXN0LCBjb250ZXh0
LT5zZWN1cml0eU9yaWdpbigpLCBjb250ZXh0LCBnZXRJbmRleGVkREJEYXRhYmFzZVBhdGgoY29u
dGV4dCkpOworICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCT3BlbkRC
UmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCB2ZXJzaW9uKTsK
KyAgICBtX2JhY2tlbmQtPm9wZW4obmFtZSwgdmVyc2lvbiwgcmVxdWVzdCwgY29udGV4dC0+c2Vj
dXJpdHlPcmlnaW4oKSwgY29udGV4dCwgZ2V0SW5kZXhlZERCRGF0YWJhc2VQYXRoKGNvbnRleHQp
KTsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAorUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0
PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgcmV0dXJuIG9wZW4oY29u
dGV4dCwgbmFtZSwgLTIsIGVjKTsKK30KKwogUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVx
dWVzdD4gSURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBp
ZiAobmFtZS5pc051bGwoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeS5oCmluZGV4IDQ2MTFjYjZjNGZlODM5OTBiNDcyNGE0M2JmMDljOWE1YTk1ZDg4
OGQuLjM2NDViYjgxZGM3ZWU5NjY5MDVkYTY1MmMwNjRkYTczODZmNjUzZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKQEAgLTMwLDcgKzMwLDcg
QEAKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFj
a2VuZEludGVyZmFjZS5oIgotI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKKyNpbmNsdWRlICJJREJP
cGVuREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC01OCw3ICs1
OCw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0RGF0YWJhc2VO
YW1lcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gb3BlbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7
CisgICAgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBvcGVuKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IGRlbGV0ZURhdGFi
YXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlv
bkNvZGUmKTsKIAogICAgIHNob3J0IGNtcChQYXNzUmVmUHRyPElEQktleT4gZmlyc3QsIFBhc3NS
ZWZQdHI8SURCS2V5PiBzZWNvbmQsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGwKaW5kZXggMDM4OWViMmFhZTdlMTI5
OTU0ZDlhY2YwM2E1OWZmYmNjN2ZiYWFjYy4uYmY3MWEyZGQyNWQxZmY5NWUyNjQzNWY0ZTQxZjBj
NDFiOTc2NzJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeS5pZGwKQEAgLTMwLDcgKzMwLDcgQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgIF0gSURC
RmFjdG9yeSB7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBJbXBs
ZW1lbnRlZEFzPWdldERhdGFiYXNlTmFtZXNdIElEQlJlcXVlc3Qgd2Via2l0R2V0RGF0YWJhc2VO
YW1lcygpOwogCi0gICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJS
ZXF1ZXN0IG9wZW4oaW4gRE9NU3RyaW5nIG5hbWUpCisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0XSBJREJPcGVuREJSZXF1ZXN0IG9wZW4oaW4gRE9NU3RyaW5nIG5hbWUs
IGluIFtPcHRpb25hbF0gdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24pCiAgICAgICAgICAgICBy
YWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRdIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IGRlbGV0ZURhdGFiYXNlKGlu
IERPTVN0cmluZyBuYW1lKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeUJhY2tlbmRJbXBsLmNwcAppbmRleCBkZmIxNDU3YTMwNmRhYTdhNTY4YzIxYWY2ZWZh
MzQ1NDZjZTNmZjQ2Li4xN2E5YzRkMmU4ZGQyMTI2YjdhMjUzOWZhMjEwYTQ1N2UxNzEwY2U0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFj
a2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnlCYWNrZW5kSW1wbC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkxldmVsREJCYWNraW5nU3RvcmUuaCIKICNp
bmNsdWRlICJJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNl
ZFBhcmFtLmg+CiAKQEAgLTE0OSwzMiArMTUwLDMwIEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0
b3JlPiBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5CYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxT
CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNv
bnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFz
c1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJwU2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXJlY3RvcnkpCit2b2lkIElEQkZhY3RvcnlC
YWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdp
bj4gcHJwU2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmIGRhdGFEaXJlY3RvcnkpCiB7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0
eU9yaWdpbiA9IHBycFNlY3VyaXR5T3JpZ2luOwogICAgIGNvbnN0IFN0cmluZyB1bmlxdWVJZGVu
dGlmaWVyID0gY29tcHV0ZVVuaXF1ZUlkZW50aWZpZXIobmFtZSwgc2VjdXJpdHlPcmlnaW4uZ2V0
KCkpOwogCisgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlQmFja2Vu
ZDsKICAgICBJREJEYXRhYmFzZUJhY2tlbmRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUJh
Y2tlbmRNYXAuZmluZCh1bmlxdWVJZGVudGlmaWVyKTsKLSAgICBpZiAoaXQgIT0gbV9kYXRhYmFz
ZUJhY2tlbmRNYXAuZW5kKCkpIHsKLSAgICAgICAgLy8gSWYgaXQncyBhbHJlYWR5IGJlZW4gb3Bl
bmVkLCB3ZSBoYXZlIHRvIHdhaXQgZm9yIGFueSBwZW5kaW5nCi0gICAgICAgIC8vIHNldFZlcnNp
b24gY2FsbHMgdG8gY29tcGxldGUuCi0gICAgICAgIGl0LT5zZWNvbmQtPm9wZW5Db25uZWN0aW9u
KGNhbGxiYWNrcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogRXZl
cnl0aGluZyBmcm9tIG5vdyBvbiBzaG91bGQgYmUgZG9uZSBvbiBhbm90aGVyIHRocmVhZC4KLSAg
ICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBvcGVuQmFja2luZ1N0b3Jl
KHNlY3VyaXR5T3JpZ2luLCBkYXRhRGlyZWN0b3J5KTsKLSAgICBpZiAoIWJhY2tpbmdTdG9yZSkg
ewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBs
PiBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFtZSwg
YmFja2luZ1N0b3JlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCksIHRoaXMs
IHVuaXF1ZUlkZW50aWZpZXIpOwotICAgIGlmIChkYXRhYmFzZUJhY2tlbmQpIHsKLSAgICAgICAg
bV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2Vu
ZC5nZXQoKSk7Ci0gICAgICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbkNvbm5lY3Rpb24oY2FsbGJh
Y2tzKTsKKyAgICBpZiAoaXQgPT0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZW5kKCkpIHsKKyAgICAg
ICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gb3BlbkJhY2tpbmdTdG9y
ZShzZWN1cml0eU9yaWdpbiwgZGF0YURpcmVjdG9yeSk7CisgICAgICAgIGlmICghYmFja2luZ1N0
b3JlKSB7CisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9y
LiIpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBkYXRhYmFzZUJh
Y2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFtZSwgYmFja2luZ1N0b3Jl
LmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCksIHRoaXMsIHVuaXF1ZUlkZW50
aWZpZXIpOworICAgICAgICBpZiAoZGF0YWJhc2VCYWNrZW5kKQorICAgICAgICAgICAgbV9kYXRh
YmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQo
KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiSW50
ZXJuYWwgZXJyb3IuIikpOwogICAgIH0gZWxzZQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3Io
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VS
UiwgIkludGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAgZGF0YWJhc2VCYWNrZW5kID0gaXQtPnNl
Y29uZDsKKyAgICBpZiAodmVyc2lvbiA8IDApCisgICAgICAgIGRhdGFiYXNlQmFja2VuZC0+b3Bl
bkNvbm5lY3Rpb24oY2FsbGJhY2tzKTsKKyAgICBlbHNlCisgICAgICAgIGRhdGFiYXNlQmFja2Vu
ZC0+b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihjYWxsYmFja3MsIHZlcnNpb24pOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCmluZGV4IGNhMWQwNTI4MmE4YzVl
ZGY3NjZkNWU1NTUwOGZhZTBhOWMwNDhjNjUuLmQyNmY3NDY4MzQyYWE2YTE4ZGZjZGU5YmYxNzQz
NjQyMjhlMTA2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjZGVmaW5l
IElEQkZhY3RvcnlCYWNrZW5kSW1wbF9oCiAKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZElu
dGVyZmFjZS5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTU3LDcgKzU2
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJREJCYWNraW5nU3RvcmUoY29u
c3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllcik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJh
c2VOYW1lcyhQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0
IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4s
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU3RyaW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29u
c3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRh
RGlyKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggNDRmNWM3
ODZlZjIxZWE0NzE5ZjYzNjk0MjlmNzY3MzkwMDQwOTI5My4uNGVhNWQ4YTMzMGZkMDQxYWY1MWNi
MmE5NTQ0ZWE0OGFjZjY2NmZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oCkBAIC01NCw3
ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJGYWN0b3J5QmFja2VuZEludGVyZmFj
ZSgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBv
cGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYgZGF0YURpcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFt
ZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBk
YXRhRGlyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgPSAw
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRleCAzMmUyZjY4MTU3OTQwOWEwOTA4ZDI5
YTE4NzJjMGNkYzU2Yjg5ZWY5Li5mODlmZWU1NTZlZjBmZjc5YTBhNTcwODNkMTlkNGY4YTExNzU5
MjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZl
bERCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAtODcsNiArODcsMTIgQEAgc3RhdGljIGJv
b2wgcHV0SW50KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5LCBp
bnQ2NF90IHZhbHVlKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgor
c3RhdGljIGJvb2wgcHV0VmFySW50KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3Rvcjxj
aGFyPiYga2V5LCBpbnQ2NF90IHZhbHVlKQoreworICAgIHJldHVybiBkYi0+cHV0KGtleSwgZW5j
b2RlVmFySW50KHZhbHVlKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBEQk9yVHJhbnNhY3Rp
b24+CiBzdGF0aWMgYm9vbCBnZXRTdHJpbmcoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgVmVj
dG9yPGNoYXI+JiBrZXksIFN0cmluZyYgZm91bmRTdHJpbmcpCiB7CiAgICAgVmVjdG9yPGNoYXI+
IHJlc3VsdDsKQEAgLTEyOSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBj
aGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gImlkYl9jbXAxIjsgfQogfTsKIAotc3RhdGljIGJv
b2wgc2V0VXBNZXRhZGF0YShMZXZlbERCRGF0YWJhc2UqIGRiKQorc3RhdGljIGJvb2wgc2V0VXBN
ZXRhZGF0YShMZXZlbERCRGF0YWJhc2UqIGRiLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKIHsKICAg
ICBjb25zdCBWZWN0b3I8Y2hhcj4gbWV0YURhdGFLZXkgPSBTY2hlbWFWZXJzaW9uS2V5OjplbmNv
ZGUoKTsKIApAQCAtMjA4LDcgKzIxNCw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJ
REJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0CiAgICAg
UmVmUHRyPElEQkxldmVsREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZShhZG9wdFJlZihuZXcg
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZShmaWxlSWRlbnRpZmllciwgZmFjdG9yeSwgZGIucmVsZWFz
ZSgpKSkpOwogICAgIGJhY2tpbmdTdG9yZS0+bV9jb21wYXJhdG9yID0gY29tcGFyYXRvci5yZWxl
YXNlKCk7CiAKLSAgICBpZiAoIXNldFVwTWV0YWRhdGEoYmFja2luZ1N0b3JlLT5tX2RiLmdldCgp
KSkKKyAgICBpZiAoIXNldFVwTWV0YWRhdGEoYmFja2luZ1N0b3JlLT5tX2RiLmdldCgpLCBmaWxl
SWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4o
KTsKIAogICAgIHJldHVybiBiYWNraW5nU3RvcmUucmVsZWFzZSgpOwpAQCAtMjM0LDcgKzI0MCw3
IEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0RGF0YWJhc2VOYW1lcyhWZWN0b3I8
U3RyaW5nPiYgZm91bmROYW1lcykKICAgICB9CiB9CiAKLWJvb2wgSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYg
Zm91bmRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElkKQorYm9vbCBJREJMZXZlbERCQmFja2luZ1N0
b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiBm
b3VuZFN0cmluZ1ZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVyc2lvbiwgaW50NjRfdCYgZm91
bmRJZCkKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5ID0gRGF0YWJhc2VOYW1lS2V5Ojpl
bmNvZGUobV9pZGVudGlmaWVyLCBuYW1lKTsKIApAQCAtMjQyLDEwICsyNDgsMTYgQEAgYm9vbCBJ
REJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgU3RyaW5nJgogICAgIGlmICghb2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIG9rID0gZ2V0U3RyaW5nKG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29k
ZShmb3VuZElkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VyVmVyc2lvbiksIGZvdW5kVmVyc2lv
bik7CisgICAgb2sgPSBnZXRTdHJpbmcobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6
ZW5jb2RlKGZvdW5kSWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgZm91bmRT
dHJpbmdWZXJzaW9uKTsKICAgICBpZiAoIW9rKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAg
ICBvayA9IGdldEludChtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoZm91
bmRJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlckludFZlcnNpb24pLCBmb3VuZEludFZlcnNp
b24pOworICAgIGlmICghb2spCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZm91bmRJ
bnRWZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uKQorICAg
ICAgZm91bmRJbnRWZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uOwor
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI2NCw3ICsyNzYsNyBAQCBzdGF0aWMgaW50NjRf
dCBnZXROZXdEYXRhYmFzZUlkKExldmVsREJEYXRhYmFzZSogZGIpCiAgICAgcmV0dXJuIGRhdGFi
YXNlSWQ7CiB9CiAKLWJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSURCRGF0YWJh
c2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgaW50
NjRfdCYgcm93SWQpCitib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUlEQkRhdGFi
YXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGlu
dDY0X3QgaW50VmVyc2lvbiwgaW50NjRfdCYgcm93SWQpCiB7CiAgICAgcm93SWQgPSBnZXROZXdE
YXRhYmFzZUlkKG1fZGIuZ2V0KCkpOwogICAgIGlmIChyb3dJZCA8IDApCkBAIC0yNzUsNiArMjg3
LDE5IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSURCRGF0YWJhc2VNZXRh
RGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIXB1dFN0cmluZyhtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUo
cm93SWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgdmVyc2lvbikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoaW50VmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFk
YXRhOjpOb0ludFZlcnNpb24pCisgICAgICBpbnRWZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0
YTo6RGVmYXVsdEludFZlcnNpb247CisgICAgaWYgKCFwdXRWYXJJbnQobV9kYi5nZXQoKSwgRGF0
YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKHJvd0lkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2Vy
SW50VmVyc2lvbiksIGludFZlcnNpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0
YWJhc2VJbnRWZXJzaW9uKGludDY0X3Qgcm93SWQsIGludDY0X3QgaW50VmVyc2lvbikKK3sKKyAg
ICBBU1NFUlQobV9jdXJyZW50VHJhbnNhY3Rpb24pOworICAgIGlmICghcHV0VmFySW50KG1fY3Vy
cmVudFRyYW5zYWN0aW9uLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUocm93SWQs
IERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJJbnRWZXJzaW9uKSwgaW50VmVyc2lvbikpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMDUsNyArMzMw
LDggQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpkZWxldGVEYXRhYmFzZShjb25zdCBT
dHJpbmcmIG5hbWUpCiAKICAgICBpbnQ2NF90IGRhdGFiYXNlSWQ7CiAgICAgU3RyaW5nIHZlcnNp
b247Ci0gICAgaWYgKCFnZXRJREJEYXRhYmFzZU1ldGFEYXRhKG5hbWUsIHZlcnNpb24sIGRhdGFi
YXNlSWQpKSB7CisgICAgaW50NjRfdCBpbnRWZXJzaW9uOworICAgIGlmICghZ2V0SURCRGF0YWJh
c2VNZXRhRGF0YShuYW1lLCB2ZXJzaW9uLCBpbnRWZXJzaW9uLCBkYXRhYmFzZUlkKSkgewogICAg
ICAgICB0cmFuc2FjdGlvbi0+cm9sbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGM1YTllMmVlMzA5ZThjYTNmZDdmNzBmMGFhMmJiODBj
ZWMwNDZiMmUuLjY3M2NhOWMxNWFlM2M2ZGFkNDU5N2UxNzRkYjI3ZWVhNjFlZDlmNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5n
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmgKQEAgLTQ1LDkgKzQ1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5J
REJMZXZlbERCQmFja2luZ1N0b3JlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VO
YW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcyk7Ci0gICAgdmlydHVhbCBib29sIGdldElE
QkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lv
biwgaW50NjRfdCYgZm91bmRJZCk7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZUlEQkRhdGFiYXNl
TWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGludDY0
X3QmIHJvd0lkKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25z
dCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZEludFZl
cnNpb24sIGludDY0X3QmIGZvdW5kSWQpOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRh
YmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBp
bnQ2NF90IGludFZlcnNpb24sIGludDY0X3QmIHJvd0lkKTsKICAgICB2aXJ0dWFsIGJvb2wgdXBk
YXRlSURCRGF0YWJhc2VNZXRhRGF0YShpbnQ2NF90IHJvd0lkLCBjb25zdCBTdHJpbmcmIHZlcnNp
b24pOworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24oaW50NjRf
dCByb3dJZCwgaW50NjRfdCBpbnRWZXJzaW9uKTsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0
YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RT
dG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0
b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhz
LCBWZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaAppbmRleCAzMTEz
ZTdkOGE5ODgyYmQ3ZDhlNzc5Y2FkYWE5N2VkODIxYzVhOGU4Li4zZmNkYzQ2ZDM3MjM3ZGRiYzMx
MDZjZDEwMWQxMzVlNDY3MjE4YjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oCkBAIC0xNDAsNyArMTQwLDggQEAgcHVibGlj
OgogICAgICAgICBPcmlnaW5OYW1lID0gMCwKICAgICAgICAgRGF0YWJhc2VOYW1lID0gMSwKICAg
ICAgICAgVXNlclZlcnNpb24gPSAyLAotICAgICAgICBNYXhPYmplY3RTdG9yZUlkID0gMworICAg
ICAgICBNYXhPYmplY3RTdG9yZUlkID0gMywKKyAgICAgICAgVXNlckludFZlcnNpb24gPSA0CiAg
ICAgfTsKIAogICAgIHN0YXRpYyBWZWN0b3I8Y2hhcj4gZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJ
ZCwgTWV0YURhdGFUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJNZXRhZGF0YS5oCmluZGV4IGRkMjMwNjIwYzdjMWZiMDExYjNmOTk0MTBiYzgyZTdlNmE4ZjUz
YmUuLmUzZjBlYzNmYjExOGI1OWFkNzE1NTU2NGQ4YjFlNDUxNzMzODY1ZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaApAQCAtNDMsNyArNDMs
OCBAQCBzdHJ1Y3QgSURCSW5kZXhNZXRhZGF0YTsKIAogc3RydWN0IElEQkRhdGFiYXNlTWV0YWRh
dGEgewogICAgIGVudW0gewotICAgICAgICBOb0ludFZlcnNpb24gPSAtMQorICAgICAgICBOb0lu
dFZlcnNpb24gPSAtMSwKKyAgICAgICAgRGVmYXVsdEludFZlcnNpb24gPSAwCiAgICAgfTsKIAog
ICAgIElEQkRhdGFiYXNlTWV0YWRhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Y2MxNWVmMWEy
MmViNTA5MmUxMTI2ZGMzNzAyOTMxNTA3OWEwMGFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKQEAgLTAsMCAr
MSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJPcGVuREJS
ZXF1ZXN0LmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklE
QkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oIgor
I2luY2x1ZGUgIklEQlVwZ3JhZGVOZWVkZWRFdmVudC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPElEQk9w
ZW5EQlJlcXVlc3Q+IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBpbnQ2NF90IHZlcnNpb24p
Cit7CisgICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVlc3QoYWRvcHRSZWYobmV3IElE
Qk9wZW5EQlJlcXVlc3QoY29udGV4dCwgc291cmNlLCB2ZXJzaW9uKSkpOworICAgIHJlcXVlc3Qt
PnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKK30KKwor
SURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBpbnQ2NF90IHZlcnNpb24pCisg
ICAgOiBJREJSZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSwgMCkKKyAgICAsIG1fdmVyc2lvbih2ZXJz
aW9uKQoreworICAgIEFTU0VSVCghbV9yZXN1bHQpOworfQorCitJREJPcGVuREJSZXF1ZXN0Ojp+
SURCT3BlbkRCUmVxdWVzdCgpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgSURCT3BlbkRC
UmVxdWVzdDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMo
KS5pbnRlcmZhY2VGb3JJREJPcGVuREJSZXF1ZXN0OworfQorCit2b2lkIElEQk9wZW5EQlJlcXVl
c3Q6Om9uQmxvY2tlZChpbnQ2NF90IG9sZFZlcnNpb24pCit7CisgICAgQVNTRVJUKCFtX2Vycm9y
Q29kZSAmJiBtX2Vycm9yTWVzc2FnZS5pc051bGwoKSAmJiAhbV9yZXN1bHQpOworICAgIGVucXVl
dWVFdmVudChJREJVcGdyYWRlTmVlZGVkRXZlbnQ6OmNyZWF0ZShvbGRWZXJzaW9uLCBtX3ZlcnNp
b24sIGV2ZW50TmFtZXMoKS5ibG9ja2VkRXZlbnQpKTsKK30KKwordm9pZCBJREJPcGVuREJSZXF1
ZXN0OjpvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gcHJwVHJhbnNhY3Rpb25CYWNrZW5kLCBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gcHJwRGF0YWJhc2VCYWNrZW5kKQorewor
ICAgIEFTU0VSVCghbV9lcnJvckNvZGUpOworICAgIEFTU0VSVChtX2Vycm9yTWVzc2FnZS5pc051
bGwoKSk7CisgICAgQVNTRVJUKCFtX2Vycm9yKTsKKy8vICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
IW1fcmVzdWx0LCAiaW4gb2JqZWN0ICVwIiwgdGhpcyk7CisgICAgaWYgKG1fY29udGV4dFN0b3Bw
ZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
UmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2VCYWNrZW5kID0gcHJw
RGF0YWJhc2VCYWNrZW5kOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IHRyYW5zYWN0aW9uQmFja2VuZCA9IHBycFRyYW5zYWN0aW9uQmFja2VuZDsKKyAgICBSZWZQ
dHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIGRhdGFiYXNlQmFja2VuZCk7CisKKyAgICBSZWZQdHI8SURCVHJh
bnNhY3Rpb24+IGZyb250ZW5kID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIHRyYW5zYWN0aW9uQmFja2VuZCwgSURCVHJhbnNhY3Rpb246OlZFUlNJT05f
Q0hBTkdFLCBpZGJEYXRhYmFzZS5nZXQoKSwgdGhpcyk7CisgICAgdHJhbnNhY3Rpb25CYWNrZW5k
LT5zZXRDYWxsYmFja3MoZnJvbnRlbmQuZ2V0KCkpOworICAgIG1fdHJhbnNhY3Rpb24gPSBmcm9u
dGVuZDsKKyAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGlkYkRhdGFiYXNlLnJlbGVhc2Uo
KSk7CisKKyAgICBpZiAob2xkVmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZl
cnNpb24pIHsKKyAgICAgIC8vIFRoZSBvcGVuIGNhbGwgdGhhdCBjcmVhdGVkIHRoaXMgSURCT3Bl
bkRCUmVxdWVzdCB3YXMgdGhlIGZpcnN0IGludGVnZXIKKyAgICAgIC8vIHZlcnNpb24gdGhhdCB0
aGlzIGRhdGFiYXNlIGhhZC4KKyAgICAgIG9sZFZlcnNpb24gPSBJREJEYXRhYmFzZU1ldGFkYXRh
OjpEZWZhdWx0SW50VmVyc2lvbjsKKyAgICB9CisgICAgZW5xdWV1ZUV2ZW50KElEQlVwZ3JhZGVO
ZWVkZWRFdmVudDo6Y3JlYXRlKG9sZFZlcnNpb24sIG1fdmVyc2lvbiwgZXZlbnROYW1lcygpLnVw
Z3JhZGVuZWVkZWRFdmVudCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRC
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVx
dWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmVjNWI4YmNjNjc3MzAzNWE0MTVjYzk0ZjFhMjUzYTRmYjE4NDUx
ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPcGVuREJSZXF1ZXN0LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCT3Bl
bkRCUmVxdWVzdF9oCisjZGVmaW5lIElEQk9wZW5EQlJlcXVlc3RfaAorCisjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgSURCT3BlbkRCUmVxdWVzdCA6IHB1YmxpYyBJREJSZXF1ZXN0IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGludDY0
X3QgdmVyc2lvbik7CisgICAgdmlydHVhbCB+SURCT3BlbkRCUmVxdWVzdCgpOworCisgICAgdmly
dHVhbCB2b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U+KSBPVkVSUklERTsKKworICAgIC8vIEV2ZW50VGFyZ2V0Cisg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKwor
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYmxvY2tlZCk7CisgICAgREVGSU5F
X0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih1cGdyYWRlbmVlZGVkKTsKKworcHJpdmF0ZToKKyAg
ICBJREJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
QkFueT4gc291cmNlLCBpbnQ2NF90IHZlcnNpb24pOworCisgICAgdmlydHVhbCBib29sIGlzT3Bl
bkRCUmVxdWVzdCgpIGNvbnN0IE9WRVJSSURFCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBpbnQ2NF90IG1fdmVyc2lvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjZW5kaWYgLy8g
SURCT3BlbkRCUmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyNjZjNzM1OWEwYTY1ZTY5
NWIwODQ1ZGU1ZjUzNTgzYTZjZDgyOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmlkbApAQCAtMCwwICsxLDM2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworbW9kdWxlIHN0b3JhZ2UgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29u
ZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRSwKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0LAorICAg
ICAgICBFdmVudFRhcmdldAorICAgIF0gSURCT3BlbkRCUmVxdWVzdCA6IElEQlJlcXVlc3Qgewor
ICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmJsb2NrZWQ7CisgICAgICAgIGF0dHJp
YnV0ZSBFdmVudExpc3RlbmVyIG9udXBncmFkZW5lZWRlZDsKKyAgICB9OworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCA3ZGQzMGU5
Y2ZmNWRiMDI2Mjg3Y2NjMGI0MWY2MWIwYWE5Zjk4ODE5Li40ZGVlOTc4NTE5NDU3ZTE5OTNjMmY4
ODI0NzdjZjVhYTdmYjViMjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtNTMsMTMgKzUzLDE0IEBAIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSCiAKIElEQlJlcXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX3Jl
c3VsdCgwKQogICAgICwgbV9lcnJvckNvZGUoMCkKLSAgICAsIG1fc291cmNlKHNvdXJjZSkKKyAg
ICAsIG1fY29udGV4dFN0b3BwZWQoZmFsc2UpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0
aW9uKQorICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAgICwgbV9yZWFkeVN0YXRlKFBFTkRJTkcp
CiAgICAgLCBtX3JlcXVlc3RBYm9ydGVkKGZhbHNlKQogICAgICwgbV9jdXJzb3JGaW5pc2hlZChm
YWxzZSkKLSAgICAsIG1fY29udGV4dFN0b3BwZWQoZmFsc2UpCiAgICAgLCBtX2N1cnNvclR5cGUo
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6SW52YWxpZEN1cnNvclR5cGUpCiAgICAgLCBtX2N1
cnNvckRpcmVjdGlvbihJREJDdXJzb3I6Ok5FWFQpCiAgICAgLCBtX3BlbmRpbmdDdXJzb3IoMCkK
QEAgLTI3MywxNSArMjc0LDIxIEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQogICAgIEFTU0VSVChtX3Jl
YWR5U3RhdGUgPT0gUEVORElORyB8fCBtX3JlYWR5U3RhdGUgPT0gRE9ORSk7CiAgICAgaWYgKG1f
cmVxdWVzdEFib3J0ZWQpCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQobV9yZWFkeVN0YXRl
ID09IFBFTkRJTkcpOwotICAgIEFTU0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3NhZ2Uu
aXNOdWxsKCkgJiYgIW1fZXJyb3IgJiYgIW1fcmVzdWx0KTsKKyAgICBBU1NFUlQobV9yZWFkeVN0
YXRlID09IFBFTkRJTkcgfHwgaXNPcGVuREJSZXF1ZXN0KCkpOworICAgIEFTU0VSVCghbV9lcnJv
ckNvZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkgJiYgIW1fZXJyb3IpOwogICAgIGlmICht
X2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UgPSBJREJEYXRhYmFz
ZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmFja2VuZCk7Ci0gICAgaWRiRGF0
YWJhc2UtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKTsKLQotICAgIG1fcmVzdWx0ID0gSURC
QW55OjpjcmVhdGUoaWRiRGF0YWJhc2UucmVsZWFzZSgpKTsKKyAgICBSZWZQdHI8SURCRGF0YWJh
c2U+IGlkYkRhdGFiYXNlOworICAgIGlmIChtX3Jlc3VsdCkgeworICAgICAgICBpZGJEYXRhYmFz
ZSA9IG1fcmVzdWx0LT5pZGJEYXRhYmFzZSgpOworICAgICAgICBBU1NFUlQoaWRiRGF0YWJhc2Up
OworICAgICAgICBpZGJEYXRhYmFzZS0+cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcygpOworICAg
IH0gZWxzZSB7CisgICAgICAgIGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIGJhY2tlbmQpOworICAgICAgICBpZGJEYXRhYmFzZS0+cmVn
aXN0ZXJGcm9udGVuZENhbGxiYWNrcygpOworICAgICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3Jl
YXRlKGlkYkRhdGFiYXNlLnJlbGVhc2UoKSk7CisgICAgfQogICAgIGVucXVldWVFdmVudChjcmVh
dGVTdWNjZXNzRXZlbnQoKSk7CiB9CiAKQEAgLTQwOCwxMyArNDE1LDEyIEBAIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIElEQlJlcXVlc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAog
Ym9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQog
ewogICAgIElEQl9UUkFDRSgiSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCIpOwotICAgIEFTU0VS
VChtX3JlYWR5U3RhdGUgPT0gUEVORElORyk7CisgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBQ
RU5ESU5HIHx8IGlzT3BlbkRCUmVxdWVzdCgpKTsKICAgICBBU1NFUlQoIW1fY29udGV4dFN0b3Bw
ZWQpOwogICAgIEFTU0VSVChtX2VucXVldWVkRXZlbnRzLnNpemUoKSk7CiAgICAgQVNTRVJUKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKGV2ZW50LT50YXJnZXQoKSA9PSB0
aGlzKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcmVhZHlTdGF0ZSA8IERPTkUsICJtX3Jl
YWR5U3RhdGUgPCBET05FKCVkKSwgd2FzICVkIiwgRE9ORSwgbV9yZWFkeVN0YXRlKTsKLQorICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UobV9yZWFkeVN0YXRlIDwgRE9ORSB8fCBpc09wZW5EQlJlcXVl
c3QoKSwgIldoZW4gZGlzcGF0Y2hpbmcgZXZlbnQgJXMsIG1fcmVhZHlTdGF0ZSA8IERPTkUoJWQp
LCB3YXMgJWQiLCBldmVudC0+dHlwZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIERPTkUsIG1f
cmVhZHlTdGF0ZSk7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLmJsb2Nr
ZWRFdmVudCkKICAgICAgICAgbV9yZWFkeVN0YXRlID0gRE9ORTsKIApAQCAtNDQzLDExICs0NDks
MTIgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2
ZW50KQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBXaGVuIHdlIGFsbG93IGN1c3RvbSBldmVudCBk
aXNwYXRjaGluZywgdGhpcyB3aWxsIHByb2JhYmx5IG5lZWQgdG8gY2hhbmdlLgotICAgIEFTU0VS
VChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQgfHwgZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkuZXJyb3JFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5ibG9ja2VkRXZlbnQpOwotICAgIGNvbnN0IGJvb2wgc2V0VHJhbnNhY3Rpb25BY3Rp
dmUgPSBtX3RyYW5zYWN0aW9uICYmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWNj
ZXNzRXZlbnQgfHwgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgJiYg
bV9lcnJvckNvZGUgIT0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKKyAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnN1Y2Nl
c3NFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50IHx8IGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCB8fCBldmVudC0+dHlwZSgp
ID09IGV2ZW50TmFtZXMoKS51cGdyYWRlbmVlZGVkRXZlbnQsICJldmVudCB0eXBlIHdhcyAlcyIs
IGV2ZW50LT50eXBlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgY29uc3QgYm9vbCBz
ZXRUcmFuc2FjdGlvbkFjdGl2ZSA9IG1fdHJhbnNhY3Rpb24gJiYgKGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS51cGdyYWRlbmVlZGVkRXZlbnQgfHwgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVy
cm9yRXZlbnQgJiYgbV9lcnJvckNvZGUgIT0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9S
VF9FUlIpKTsKIAogICAgIGlmIChzZXRUcmFuc2FjdGlvbkFjdGl2ZSkKICAgICAgICAgbV90cmFu
c2FjdGlvbi0+c2V0QWN0aXZlKHRydWUpOworCiAgICAgYm9vbCBkb250UHJldmVudERlZmF1bHQg
PSBJREJFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoKGV2ZW50LmdldCgpLCB0YXJnZXRzKTsKICAg
ICBpZiAoc2V0VHJhbnNhY3Rpb25BY3RpdmUpCiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPnNldEFj
dGl2ZShmYWxzZSk7CkBAIC00ODEsNiArNDg4LDEyIEBAIHZvaWQgSURCUmVxdWVzdDo6dW5jYXVn
aHRFeGNlcHRpb25JbkV2ZW50SGFuZGxlcigpCiAgICAgfQogfQogCit2b2lkIElEQlJlcXVlc3Q6
OmNsZWFyVHJhbnNhY3Rpb25Qcm9wZXJ0eSgpCit7CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24t
PmlzVmVyc2lvbkNoYW5nZSgpKTsKKyAgICBtX3RyYW5zYWN0aW9uLmNsZWFyKCk7Cit9CisKIHZv
aWQgSURCUmVxdWVzdDo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewog
ICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gUEVORElORyB8fCBtX3JlYWR5U3RhdGUgPT0gRE9O
RSk7CkBAIC00ODgsNyArNTAxLDcgQEAgdm9pZCBJREJSZXF1ZXN0OjplbnF1ZXVlRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgaWYgKG1fY29udGV4dFN0b3BwZWQgfHwgIXNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKG1fcmVh
ZHlTdGF0ZSA9PSBQRU5ESU5HKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcmVhZHlTdGF0
ZSA9PSBQRU5ESU5HIHx8IGlzT3BlbkRCUmVxdWVzdCgpLCAiV2hlbiBxdWV1ZWluZyBldmVudCAl
cywgbV9yZWFkeVN0YXRlIHdhcyAlZCIsIGV2ZW50LT50eXBlKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSwgbV9yZWFkeVN0YXRlKTsKIAogICAgIEV2ZW50UXVldWUqIGV2ZW50UXVldWUgPSBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmV2ZW50UXVldWUoKTsKICAgICBldmVudC0+c2V0VGFyZ2V0
KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5o
CmluZGV4IGE4MDRjMmJkNWViMWI3MzFhNTE5NzU1ODY4OWFkYjZhNjVlYWJjM2UuLjY3ZGY0ZmJk
MjJmN2JjNmFmNmY0NTZhMDAzZWNmZjk2YWRkYjYzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTkxLDYgKzkxLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCk7CiAgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4g
PiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4mKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IC8vIE5v
dCBpbXBsZW1lbnRlZC4gQ2FsbGJhY2sgc2hvdWxkIG5vdCByZWFjaCB0aGUgcmVuZGVyZXIgc2lk
ZS4KICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7CisgICAgdmlydHVhbCB2b2lkIG9uQmxv
Y2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQog
CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0IE9WRVJSSURFOwpAQCAtMTAzLDYgKzEwNCw4IEBAIHB1YmxpYzoKICAgICBi
b29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUm
IGVjKSB7IHJldHVybiBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKTsKIAorICAg
IHZvaWQgY2xlYXJUcmFuc2FjdGlvblByb3BlcnR5KCk7CisKICAgICB1c2luZyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxJREJDYWxsYmFja3M+OjpyZWY7CiAgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8SURCQ2FsbGJhY2tzPjo6ZGVyZWY7CiAKQEAgLTExMyw2ICsxMTYsOCBAQCBwcm90ZWN0
ZWQ6CiAgICAgdW5zaWduZWQgc2hvcnQgbV9lcnJvckNvZGU7CiAgICAgU3RyaW5nIG1fZXJyb3JN
ZXNzYWdlOwogICAgIFJlZlB0cjxET01FcnJvcj4gbV9lcnJvcjsKKyAgICBib29sIG1fY29udGV4
dFN0b3BwZWQ7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwogCiBw
cml2YXRlOgogICAgIC8vIEV2ZW50VGFyZ2V0CkBAIC0xMjMsMTQgKzEyOCwxNiBAQCBwcml2YXRl
OgogCiAgICAgUGFzc1JlZlB0cjxJREJDdXJzb3I+IGdldFJlc3VsdEN1cnNvcigpOwogICAgIHZv
aWQgc2V0UmVzdWx0Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPik7CisgICAgdmlydHVhbCBi
b29sIGlzT3BlbkRCUmVxdWVzdCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQogCiAgICAgUmVmUHRyPElEQkFueT4gbV9zb3VyY2U7Ci0gICAgUmVmUHRyPElEQlRy
YW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwogCiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7
CiAgICAgYm9vbCBtX3JlcXVlc3RBYm9ydGVkOyAvLyBNYXkgYmUgYWJvcnRlZCBieSB0cmFuc2Fj
dGlvbiB0aGVuIHJlY2VpdmUgYXN5bmMgb25zdWNjZXNzOyBpZ25vcmUgdnMuIGFzc2VydC4KICAg
ICBib29sIG1fY3Vyc29yRmluaXNoZWQ7Ci0gICAgYm9vbCBtX2NvbnRleHRTdG9wcGVkOwogICAg
IFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9lbnF1ZXVlZEV2ZW50czsKIAogICAgIC8vIE9ubHkg
dXNlZCBpZiB0aGUgcmVzdWx0IHR5cGUgd2lsbCBiZSBhIGN1cnNvci4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA3NjEy
MzQ3MDE0MTgzYzlkYTYxZThkYmFmZTY1ZmEzODU5OTkzNDdlLi5iNjE3NzBjZGIxOWI3OTVkMDU5
NDJmODdmZTU1ZjAzNTE2MTczNzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk
ZSAiSURCSW5kZXguaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIklE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQk9wZW5EQlJlcXVl
c3QuaCIKICNpbmNsdWRlICJJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgiCiAjaW5jbHVk
ZSAiSURCVHJhY2luZy5oIgogCkBAIC00Myw3ICs0NCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUsIElEQkRh
dGFiYXNlKiBkYikKIHsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFk
b3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0LCBiYWNrZW5kLCBtb2RlLCBkYikpKTsK
KyAgICAvLyBGSVhNRTogVHJ5IHRvIGNvbnN0cnVjdCBhIHRlc3Qgd2hlcmUgdGhpcyBvdXRsaXZl
cyBvcGVuREJSZXF1ZXN0IGFuZCB3ZQorICAgIC8vIGdldCBhIHVzZSBhZnRlciBmcmVlLgorICAg
IElEQk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJlcXVlc3QgPSAwOworICAgIHJldHVybiBjcmVhdGUo
Y29udGV4dCwgYmFja2VuZCwgbW9kZSwgZGIsIG9wZW5EQlJlcXVlc3QpOworfQorCitQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlPiBiYWNrZW5kLCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBJREJEYXRhYmFzZSogZGIs
IElEQk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJlcXVlc3QpCit7CisgICAgUmVmUHRyPElEQlRyYW5z
YWN0aW9uPiB0cmFuc2FjdGlvbihhZG9wdFJlZihuZXcgSURCVHJhbnNhY3Rpb24oY29udGV4dCwg
YmFja2VuZCwgbW9kZSwgZGIsIG9wZW5EQlJlcXVlc3QpKSk7CiAgICAgdHJhbnNhY3Rpb24tPnN1
c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZWxlYXNlKCk7CiB9CkBA
IC03OSwxMCArODgsMTEgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6bW9k
ZVJlYWRXcml0ZUxlZ2FjeSgpCiB9CiAKIAotSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBJ
REJEYXRhYmFzZSogZGIpCitJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+IGJhY2tlbmQsIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUsIElEQkRhdGFiYXNl
KiBkYiwgSURCT3BlbkRCUmVxdWVzdCogb3BlbkRCUmVxdWVzdCkKICAgICA6IEFjdGl2ZURPTU9i
amVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9iYWNrZW5kKGJhY2tlbmQpCiAgICAgLCBtX2Rh
dGFiYXNlKGRiKQorICAgICwgbV9vcGVuREJSZXF1ZXN0KG9wZW5EQlJlcXVlc3QpCiAgICAgLCBt
X21vZGUobW9kZSkKICAgICAsIG1fYWN0aXZlKHRydWUpCiAgICAgLCBtX3N0YXRlKFVudXNlZCkK
QEAgLTE4Miw3ICsxOTIsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZURlbGV0
ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpzZXRBY3RpdmUo
Ym9vbCBhY3RpdmUpCiB7Ci0gICAgQVNTRVJUKG1fc3RhdGUgIT0gRmluaXNoZWQpOworICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UobV9zdGF0ZSAhPSBGaW5pc2hlZCwgIkEgZmluaXNoZWQgdHJhbnNh
Y3Rpb24gdHJpZWQgdG8gc2V0QWN0aXZlKCVzKSBpbiAlcCIsIGFjdGl2ZSA/ICJ0cnVlIiA6ICJm
YWxzZSIsIHRoaXMpOwogICAgIGlmIChtX3N0YXRlID09IEZpbmlzaGluZykKICAgICAgICAgcmV0
dXJuOwogICAgIEFTU0VSVChtX3N0YXRlID09IFVudXNlZCB8fCBtX3N0YXRlID09IFVzZWQpOwpA
QCAtMzc1LDcgKzM4NSwxMCBAQCBib29sIElEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50KFBh
c3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogCiAgICAgLy8gRklYTUU6IFdoZW4gd2UgYWxsb3cgY3Vz
dG9tIGV2ZW50IGRpc3BhdGNoaW5nLCB0aGlzIHdpbGwgcHJvYmFibHkgbmVlZCB0byBjaGFuZ2Uu
CiAgICAgQVNTRVJUKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNvbXBsZXRlRXZlbnQg
fHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYWJvcnRFdmVudCk7Ci0gICAgcmV0dXJu
IElEQkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2goZXZlbnQuZ2V0KCksIHRhcmdldHMpOworICAg
IGJvb2wgcmV0dXJuVmFsdWUgPSBJREJFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoKGV2ZW50Lmdl
dCgpLCB0YXJnZXRzKTsKKyAgICBpZiAobV9vcGVuREJSZXF1ZXN0KQorICAgICAgICBtX29wZW5E
QlJlcXVlc3QtPmNsZWFyVHJhbnNhY3Rpb25Qcm9wZXJ0eSgpOworICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKIH0KIAogYm9vbCBJREJUcmFuc2FjdGlvbjo6Y2FuU3VzcGVuZCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAppbmRl
eCAxZjdhZjdkYWQxYmU5NDhmNmI0MTk1N2Y3OWU1ZjY4NzQyYjk5YWYwLi4wMDVlMzczNjMwYTRk
MmZmMmViYWZkODFlZTM2ZWEwYzk4OWE5MjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgSURCQ3Vyc29yOwogY2xhc3MgSURCRGF0YWJhc2U7CiBjbGFz
cyBJREJPYmplY3RTdG9yZTsKK2NsYXNzIElEQk9wZW5EQlJlcXVlc3Q7CiAKIGNsYXNzIElEQlRy
YW5zYWN0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLCBwdWJsaWMgRXZlbnRU
YXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgpAQCAtNTYsNiArNTcsNyBA
QCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPiwgTW9kZSwgSURCRGF0YWJhc2UqKTsKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4sIE1vZGUsIElEQkRhdGFi
YXNlKiwgSURCT3BlbkRCUmVxdWVzdCopOwogICAgIHZpcnR1YWwgfklEQlRyYW5zYWN0aW9uKCk7
CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlUmVhZE9ubHkoKTsKQEAgLTEx
OSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxJREJUcmFuc2FjdGlv
bkNhbGxiYWNrcz46OmRlcmVmOwogCiBwcml2YXRlOgotICAgIElEQlRyYW5zYWN0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4sIE1vZGUsIElEQkRhdGFiYXNlKik7CisgICAgSURCVHJhbnNhY3Rpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
PiwgTW9kZSwgSURCRGF0YWJhc2UqLCBJREJPcGVuREJSZXF1ZXN0Kik7CiAKICAgICB2b2lkIGVu
cXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAgdm9pZCBjbG9zZU9wZW5DdXJzb3Jz
KCk7CkBAIC0xNDIsNiArMTQ0LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKICAgICBSZWZQdHI8SURCRGF0YWJhc2U+
IG1fZGF0YWJhc2U7CisgICAgSURCT3BlbkRCUmVxdWVzdCogbV9vcGVuREJSZXF1ZXN0OwogICAg
IGNvbnN0IE1vZGUgbV9tb2RlOwogICAgIGJvb2wgbV9hY3RpdmU7CiAgICAgU3RhdGUgbV9zdGF0
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKaW5kZXggNzBmMzM2N2FiZmJjMWEwNGE5ZmVj
YTFjYWI0ZTQzMzBkZDYzNzM0MS4uMWJiZDIzYjU2YmJhMGY5ZTZlZjM0NDk5ZGViODA2YjNjMDg0
NzBlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKQEAgLTIyNyw2ICsyMjcsOCBAQCB2
b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNvbW1pdCgpCiAgICAgZWxzZQogICAgICAg
ICBtX2NhbGxiYWNrcy0+b25BYm9ydCgpOwogCisgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25G
aW5pc2hlZEFuZEV2ZW50c0ZpcmVkKHRoaXMpOworCiAgICAgbV9kYXRhYmFzZSA9IDA7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVO
ZWVkZWRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJVcGdy
YWRlTmVlZGVkRXZlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxMjA1NDU4ZTRmNDc5NTlhM2VjODkwNGJh
NTYwNmMyZjEyZDE5YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJVcGdyYWRlTmVlZGVkRXZlbnQuY3BwCkBAIC0wLDAgKzEsNjkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCVXBncmFkZU5lZWRlZEV2ZW50
LmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKKyNpbmNsdWRlICJJREJBbnkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNz
UmVmUHRyPElEQlVwZ3JhZGVOZWVkZWRFdmVudD4gSURCVXBncmFkZU5lZWRlZEV2ZW50OjpjcmVh
dGUoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNpb24sIGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCVXBncmFkZU5l
ZWRlZEV2ZW50KG9sZFZlcnNpb24sIG5ld1ZlcnNpb24sIGV2ZW50VHlwZSkpOworfQorCitJREJV
cGdyYWRlTmVlZGVkRXZlbnQ6OklEQlVwZ3JhZGVOZWVkZWRFdmVudChpbnQ2NF90IG9sZFZlcnNp
b24sIGludDY0X3QgbmV3VmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCisg
ICAgOiBFdmVudChldmVudFR5cGUsIGZhbHNlIC8qY2FuQnViYmxlKi8sIGZhbHNlIC8qY2FuY2Vs
YWJsZSovKQorICAgICwgbV9vbGRWZXJzaW9uKG9sZFZlcnNpb24pCisgICAgLCBtX25ld1ZlcnNp
b24obmV3VmVyc2lvbikKK3sKK30KKworSURCVXBncmFkZU5lZWRlZEV2ZW50Ojp+SURCVXBncmFk
ZU5lZWRlZEV2ZW50KCkKK3sKK30KKworaW50NjRfdCBJREJVcGdyYWRlTmVlZGVkRXZlbnQ6Om9s
ZFZlcnNpb24oKQoreworICAgIHJldHVybiBtX29sZFZlcnNpb247Cit9CisKK2ludDY0X3QgSURC
VXBncmFkZU5lZWRlZEV2ZW50OjpuZXdWZXJzaW9uKCkKK3sKKyAgICByZXR1cm4gbV9uZXdWZXJz
aW9uOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIElEQlVwZ3JhZGVOZWVkZWRFdmVudDo6aW50
ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VG
b3JJREJVcGdyYWRlTmVlZGVkRXZlbnQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJV
cGdyYWRlTmVlZGVkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlVwZ3JhZGVOZWVkZWRFdmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiYzE2NTEwNjhkOGY5NDczY2NmYTc2
Y2VjZDRjNjQyZTQ4NTUyZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJVcGdyYWRlTmVlZGVkRXZlbnQuaApAQCAtMCwwICsxLDYxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBJREJVcGdyYWRlTmVlZGVkRXZlbnRfaAorI2RlZmluZSBJREJVcGdyYWRl
TmVlZGVkRXZlbnRfaAorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRl
ICJFdmVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgSURCQW55OworCitjbGFzcyBJREJVcGdyYWRlTmVlZGVkRXZlbnQgOiBwdWJs
aWMgRXZlbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlVwZ3JhZGVOZWVk
ZWRFdmVudD4gY3JlYXRlKGludDY0X3Qgb2xkVmVyc2lvbiA9IC01MCwgaW50NjRfdCBuZXdWZXJz
aW9uID0gLTUwLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSA9IEF0b21pY1N0cmluZygp
KTsKKyAgICB2aXJ0dWFsIH5JREJVcGdyYWRlTmVlZGVkRXZlbnQoKTsKKworICAgIHZpcnR1YWwg
aW50NjRfdCBvbGRWZXJzaW9uKCk7CisgICAgdmlydHVhbCBpbnQ2NF90IG5ld1ZlcnNpb24oKTsK
KworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgSURCVXBncmFkZU5lZWRlZEV2ZW50KGludDY0X3Qgb2xkVmVyc2lv
biwgaW50NjRfdCBuZXdWZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CisK
KyAgICBpbnQ2NF90IG1fb2xkVmVyc2lvbjsKKyAgICBpbnQ2NF90IG1fbmV3VmVyc2lvbjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQorCisjZW5kaWYgLy8gSURCVXBncmFkZU5lZWRlZEV2ZW50X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJVcGdyYWRlTmVlZGVkRXZl
bnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA3N2IwMDBkNDIyZmI3MjdkNDAwODIzNjk4YTQwMTFkMjIxZDU3
YTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJVcGdyYWRlTmVlZGVkRXZlbnQuaWRsCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUg
c3RvcmFnZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1JTkRFWEVE
X0RBVEFCQVNFCisgICAgXSBJREJVcGdyYWRlTmVlZGVkRXZlbnQgOiBFdmVudCB7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcgb2xkVmVyc2lvbjsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdWZXJzaW9uOworICAg
IH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOGJjODBmMGZjZGU5YjZjZjE0NGI4OTYwMzRlZDgx
ZTkyMmQ5ZTc2My4uMWJjYzkyZDA0MDBiNGEzNWU3NDQxMDBjMjYyMGE4YjFlZjU4NDMwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQpAQCAtODEzLDggKzgxMywxMCBAQAogICAgICAgICAgICAgJ01vZHVsZXMv
aW5kZXhlZGRiL0lEQktleS5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lE
QktleVJhbmdlLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1
ZXN0LmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5pZGwn
LAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmlkbCcsCisg
ICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmlkbCcs
CiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50Lmlk
bCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZVJlcXVl
c3QuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJDb250ZXh0SW5k
ZXhlZERhdGFiYXNlLmlkbCcsCkBAIC0xNTA0LDYgKzE1MDYsOCBAQAogICAgICAgICAgICAgJ01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwJywKICAgICAgICAg
ICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZS5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNw
cCcsCisgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oJywK
ICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25p
dG9yLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCUGVuZGluZ1RyYW5z
YWN0aW9uTW9uaXRvci5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0LmNwcCcsCkBAIC0xNTE3LDYgKzE1MjEsOCBAQAogICAgICAgICAgICAgJ01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwJywKICAgICAgICAgICAgICdN
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgnLAorICAgICAgICAg
ICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5jcHAnLAorICAgICAg
ICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5oJywKICAgICAg
ICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwJywKICAg
ICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuY3Bw
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IGIwZWZiZTc2NTA4YzhlYjI1NGRmMjk2MmJi
ZTg5ZGM2MjcxNzE0MmQuLmM1NTllODU5MjI2Zjc2ZWRlYmI2NjQ3ZmJkM2YzZDFiMzg0NzJjMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAtMTEwLDYgKzExMCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBtYWNybyh0ZXh0SW5wdXQpIFwKICAgICBtYWNybyh1bmxvYWQpIFwKICAg
ICBtYWNybyh1cGRhdGVyZWFkeSkgXAorICAgIG1hY3JvKHVwZ3JhZGVuZWVkZWQpIFwKICAgICBt
YWNybyh2ZXJzaW9uY2hhbmdlKSBcCiAgICAgbWFjcm8od2Via2l0dmlzaWJpbGl0eWNoYW5nZSkg
XAogICAgIG1hY3JvKHdyaXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnROYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCmluZGV4IDljMGFj
NTU1OGFhYWMxNjAxZTkzMDkxNWIwZDdiNDdhOGRlNjY3ZTIuLmYxZTZkYTc5ZGE5MWFiNzgzNjMz
NjM0ODM4YWI3YjU3NWUzODEzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dE5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCkBAIC0zOSw2
ICszOSw3IEBAIFN0b3JhZ2VFdmVudAogU1ZHRXZlbnRzIGludGVyZmFjZU5hbWU9RXZlbnQsIGNv
bmRpdGlvbmFsPVNWRwogU1ZHWm9vbUV2ZW50IGNvbmRpdGlvbmFsPVNWRwogU1ZHWm9vbUV2ZW50
cyBpbnRlcmZhY2VOYW1lPVNWR1pvb21FdmVudCwgY29uZGl0aW9uYWw9U1ZHCitJREJVcGdyYWRl
TmVlZGVkRXZlbnQgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSURCVmVyc2lvbkNoYW5n
ZUV2ZW50IGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIFRvdWNoRXZlbnQgY29uZGl0aW9u
YWw9VE9VQ0hfRVZFTlRTLCBydW50aW1lQ29uZGl0aW9uYWw9dG91Y2hFbmFibGVkCiBEZXZpY2VN
b3Rpb25FdmVudCBjb25kaXRpb25hbD1ERVZJQ0VfT1JJRU5UQVRJT04KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IGZmNjBhYWQ0ZGI1OWY5Y2ZlN2Y5OGExYWRj
OTVmN2Q5MTFjMGFjMzIuLmQxMDhiN2IxYWY1NDRkYzRhOTI0OTk0Mjg1ODE2Y2NhYmEwMmE0MDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtOSw2ICs5LDcg
QEAgRXZlbnRTb3VyY2UKIEZpbGVSZWFkZXIgY29uZGl0aW9uYWw9QkxPQgogRmlsZVdyaXRlciBj
b25kaXRpb25hbD1GSUxFX1NZU1RFTQogSURCRGF0YWJhc2UgY29uZGl0aW9uYWw9SU5ERVhFRF9E
QVRBQkFTRQorSURCT3BlbkRCUmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJ
REJSZXF1ZXN0IGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIElEQlRyYW5zYWN0aW9uIGNv
bmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IGNvbmRp
dGlvbmFsPUlOREVYRURfREFUQUJBU0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IGM1ODRiMWU5ZmQzZWFmYTllZmVh
YzYxZDQxNjVkZjM2YzQyZWQ4YTcuLjVkODczZmNkNzJjZWJlMDMwNWEzNWVhMjZmOThhODhjOWY5
YjcwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmNwcApAQCAtMjM3LDcgKzIzNyw3IEBAIHByaXZhdGU6CiB2b2lkIEV4ZWN1
dGFibGVXaXRoRGF0YWJhc2U6OnN0YXJ0KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBpZGJG
YWN0b3J5LCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQogewogICAgIFJlZlB0
cjxPcGVuRGF0YWJhc2VDYWxsYmFjaz4gY2FsbGJhY2sgPSBPcGVuRGF0YWJhc2VDYWxsYmFjazo6
Y3JlYXRlKHRoaXMpOwotICAgIGlkYkZhY3RvcnktPm9wZW4oZGF0YWJhc2VOYW1lLCBjYWxsYmFj
ay5nZXQoKSwgc2VjdXJpdHlPcmlnaW4sIGNvbnRleHQsIFN0cmluZygpKTsKKyAgICBpZGJGYWN0
b3J5LT5vcGVuKGRhdGFiYXNlTmFtZSwgLTIwLCBjYWxsYmFjay5nZXQoKSwgc2VjdXJpdHlPcmln
aW4sIGNvbnRleHQsIFN0cmluZygpKTsKIH0KIAogc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbkZvckRhdGFiYXNlKElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZSogaWRiRGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVO
YW1lKQpAQCAtMzM5LDIwICszMzksMjAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIC5zZXRJ
bmRleGVzKGluZGV4ZXMpOwogICAgICAgICAgICAgb2JqZWN0U3RvcmVzLT5hZGRJdGVtKG9iamVj
dFN0b3JlKTsKICAgICAgICAgfQotICAgICAgICBSZWZQdHI8RGF0YWJhc2VXaXRoT2JqZWN0U3Rv
cmVzPiByZXN1bHQgPSBEYXRhYmFzZVdpdGhPYmplY3RTdG9yZXM6OmNyZWF0ZSgpCi0gICAgICAg
ICAgICAuc2V0TmFtZShkYXRhYmFzZU1ldGFkYXRhLm5hbWUpCi0gICAgICAgICAgICAuc2V0VmVy
c2lvbihkYXRhYmFzZU1ldGFkYXRhLnZlcnNpb24pCi0gICAgICAgICAgICAuc2V0T2JqZWN0U3Rv
cmVzKG9iamVjdFN0b3Jlcyk7Ci0KLSAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVu
ZCgpLT5kYXRhYmFzZUxvYWRlZChtX3JlcXVlc3RJZCwgcmVzdWx0KTsKKy8vICAgICAgICBSZWZQ
dHI8RGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzPiByZXN1bHQgPSBEYXRhYmFzZVdpdGhPYmplY3RT
dG9yZXM6OmNyZWF0ZSgpCisvLyAgICAgICAgICAgIC5zZXROYW1lKGRhdGFiYXNlTWV0YWRhdGEu
bmFtZSkKKy8vICAgICAgICAgICAgLnNldFZlcnNpb24oZGF0YWJhc2VNZXRhZGF0YS52ZXJzaW9u
KQorLy8gICAgICAgICAgICAuc2V0T2JqZWN0U3RvcmVzKG9iamVjdFN0b3Jlcyk7CisvLworLy8g
ICAgICAgIG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKS0+ZGF0YWJhc2VMb2FkZWQobV9y
ZXF1ZXN0SWQsIHJlc3VsdCk7CiAgICAgfQogCiBwcml2YXRlOgogICAgIERhdGFiYXNlTG9hZGVy
Q2FsbGJhY2soSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXIqIGZyb250
ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQpCiAgICAgICAgIDogbV9mcm9udGVuZFByb3ZpZGVy
KGZyb250ZW5kUHJvdmlkZXIpCi0gICAgICAgICwgbV9yZXF1ZXN0SWQocmVxdWVzdElkKSB7IH0K
Ky8qICAgICAgICAsIG1fcmVxdWVzdElkKHJlcXVlc3RJZCkqLyB7IH0KICAgICBSZWZQdHI8SW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+IG1fZnJvbnRlbmRQcm92aWRl
cjsKLSAgICBpbnQgbV9yZXF1ZXN0SWQ7CisvLyAgICBpbnQgbV9yZXF1ZXN0SWQ7CiAgICAgRGF0
YWJhc2VDb25uZWN0aW9uIG1fY29ubmVjdGlvbjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAppbmRleCA3ZGY4NGQyZmZiZTA3OTYx
MzU1NjVmYTAyY2Y3ZThlMWFkODIwOTJjLi43YTM0MWY5MDM4NzFhOTc1MjI2NGEyZGEzNzk4ZGFk
ZTVmMmRlMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxs
YmFja3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJh
Y2tzUHJveHkuY3BwCkBAIC0xMjksNiArMTI5LDE2IEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6
Om9uQmxvY2tlZCgpCiAgICAgbV9jYWxsYmFja3MtPm9uQmxvY2tlZCgpOwogfQogCit2b2lkIElE
QkNhbGxiYWNrc1Byb3h5OjpvbkJsb2NrZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24pCit7Cisg
ICAgbV9jYWxsYmFja3MtPm9uQmxvY2tlZChleGlzdGluZ1ZlcnNpb24pOworfQorCit2b2lkIElE
QkNhbGxiYWNrc1Byb3h5OjpvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24sIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZSkKK3sKKyAgICBtX2Nh
bGxiYWNrcy0+b25VcGdyYWRlTmVlZGVkKG9sZFZlcnNpb24sIG5ldyBXZWJJREJUcmFuc2FjdGlv
bkltcGwodHJhbnNhY3Rpb24pLCBuZXcgV2ViSURCRGF0YWJhc2VJbXBsKGRhdGFiYXNlKSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFj
a3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHku
aAppbmRleCBkYjMwNTY1NTBiMmIyZTE3ZTJlMzBkZGVmNzllOWRkMjljMjVmZmJkLi43YWQ0OTEw
MjYxM2I5ZTAyOGI5Y2IwYTg5YTM1NDQ2YTc1MjY0NGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKQEAgLTU2LDYgKzU2LDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCk7CiAgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OklEQktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpJREJLZXk+
ID4mIHByaW1hcnlLZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gPiYgdmFsdWVzKTsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7Cisg
ICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbik7CisgICAg
dmlydHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKIAogcHJpdmF0ZToKICAgICBJ
REJDYWxsYmFja3NQcm94eShQYXNzT3duUHRyPFdlYklEQkNhbGxiYWNrcz4pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3Bw
CmluZGV4IDkwMWI1NWU1NGYyYWFmZTA0ZmZmYzIyY2E5NmIzNTMxOGVmOTQ3ODYuLjU2YWZlNWZi
NWQyYjYyZmE0NDQ5OTU0NDY5MzBhMDFkMGJjOTc3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKQEAgLTg3LDYg
Kzg3LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6ZGVsZXRlT2JqZWN0U3RvcmUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGkKIAogdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRQcm94eTo6c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRh
dGFiYXNlQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBBU1NFUlQobV93ZWJJ
REJEYXRhYmFzZSk7CiAgICAgbV93ZWJJREJEYXRhYmFzZS0+c2V0VmVyc2lvbih2ZXJzaW9uLCBu
ZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBlYyk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5j
cHAKaW5kZXggODE2ZmFmNmM0ZGU3MGFlNjkyNjkzMGQwZGU1MGUwZWUyZDExNzg1Yi4uMTVmOTI4
ZjM5YWQxZGE2ZjBiZGFhYTk3NmM4YzIwYTFiNTc2NDBmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5jcHAKQEAg
LTQ4LDYgKzQ4LDExIEBAIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6On5JREJEYXRhYmFzZUNh
bGxiYWNrc1Byb3h5KCkKIHsKIH0KIAordm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5Ojpv
blZlcnNpb25DaGFuZ2UoaW50NjRfdCBjdXJyZW50VmVyc2lvbiwgaW50NjRfdCByZXF1ZXN0ZWRW
ZXJzaW9uKQoreworICAgIG1fY2FsbGJhY2tzLT5vblZlcnNpb25DaGFuZ2UoY3VycmVudFZlcnNp
b24sIHJlcXVlc3RlZFZlcnNpb24pOworfQorCiB2b2lkIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJv
eHk6Om9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHJlcXVlc3RlZFZlcnNpb24pCiB7CiAg
ICAgbV9jYWxsYmFja3MtPm9uVmVyc2lvbkNoYW5nZShyZXF1ZXN0ZWRWZXJzaW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJv
eHkuaAppbmRleCBhZmZkY2U3N2Q1ZDk1OGRjMDBlMGY2ZjgwYWNmZmI4MDEyOTU4YjNiLi40ZWVi
ZjBjY2I4MWFkZDAzZGI1ODljMzlkNWNiMDNhZWEzZDA5Y2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oCkBAIC00
MSw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUNhbGxiYWNrc1By
b3h5KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYg
cmVxdWVzdGVkVmVyc2lvbik7CisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShpbnQ2
NF90IGN1cnJlbnRWZXJzaW9uLCBpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pOwogCiBwcml2YXRl
OgogICAgIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkoUGFzc093blB0cjxXZWJJREJEYXRhYmFz
ZUNhbGxiYWNrcz4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RmFjdG9yeUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJG
YWN0b3J5QmFja2VuZFByb3h5LmNwcAppbmRleCBlMmM5YmI5ZTIyYzIwYTU3YmMyZDk4ZTI1NWI2
OGRiM2M1OTk2MDAxLi4yMjEwZGExNjE2NTExNzZkYjVmNDg0NDlhN2YyOGI2ZmNkOTIyYTBhIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2Vu
ZFByb3h5LmNwcApAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRQcm94
eTo6Z2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhCiB9
CiAKIAotdm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpvcGVuKGNvbnN0IFN0cmluZyYgbmFt
ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgZGF0YURpcikKK3ZvaWQgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6
b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJp
dHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
ZGF0YURpcikKIHsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MocHJwQ2FsbGJh
Y2tzKTsKICAgICBXZWJTZWN1cml0eU9yaWdpbiBvcmlnaW4oc2VjdXJpdHlPcmlnaW4pOwpAQCAt
MjExLDcgKzIxMSw3IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6b3Blbihjb25zdCBT
dHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwCiAgICAgICAgIHJldHVybjsK
IAogICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBnZXRXZWJGcmFtZShjb250ZXh0KTsKLSAg
ICBtX3dlYklEQkZhY3RvcnktPm9wZW4obmFtZSwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2Fs
bGJhY2tzKSwgb3JpZ2luLCB3ZWJGcmFtZSwgZGF0YURpcik7CisgICAgbV93ZWJJREJGYWN0b3J5
LT5vcGVuKG5hbWUsIHZlcnNpb24sIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyks
IG9yaWdpbiwgd2ViRnJhbWUsIGRhdGFEaXIpOwogfQogCiB2b2lkIElEQkZhY3RvcnlCYWNrZW5k
UHJveHk6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJp
dHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
ZGF0YURpcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3Rv
cnlCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlC
YWNrZW5kUHJveHkuaAppbmRleCAyMmE2ZjUyYTg2OTgxNmM4MDU2NjhkNjg0ZDBhN2JmZmZjMjZh
ZTY5Li5jMGRlOTEwYTkyY2RlYTkxYTNkM2ExYzUzMGEyODA3YzVhYmZhYTdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5oCkBA
IC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJGYWN0b3J5QmFja2VuZFBy
b3h5KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+
LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGly
KTsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4sIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFE
aXIpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2
ZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2Uo
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBh
c3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKaW5kZXgg
NWI1YWVkZjdjY2IzN2UyNDljNTNjMWFmOWU4ZWM4ZWQ5YjBlNmUxMi4uMWExMzIyYWE5NTFkNzI2
MGE5MTk5ODQxODIyYmRkNzYyZDUyNGRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIFdlYklEQkNhbGxiYWNrc0ltcGw6OldlYklEQkNhbGxiYWNrc0ltcGwo
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICA6IG1fY2FsbGJhY2tzKGNh
bGxiYWNrcykKKyAgICAsIG1fZGlkQ3JlYXRlRGF0YWJhc2VQcm94eShmYWxzZSkKIHsKIH0KIApA
QCAtNzIsNiArNzMsMTAgQEAgdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoV2Vi
SURCQ3Vyc29yKiBjdXJzb3IpCiAKIHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNz
KFdlYklEQkRhdGFiYXNlKiB3ZWJLaXRJbnN0YW5jZSkKIHsKKyAgICBpZiAobV9kaWRDcmVhdGVE
YXRhYmFzZVByb3h5KSB7CisgICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoSURCRGF0YWJh
c2VCYWNrZW5kUHJveHk6OmNyZWF0ZShhZG9wdFB0cihzdGF0aWNfY2FzdDxXZWJJREJEYXRhYmFz
ZSo+KDApKSkpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIG1fY2FsbGJhY2tzLT5vblN1
Y2Nlc3MoSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZShhZG9wdFB0cih3ZWJLaXRJbnN0
YW5jZSkpKTsKIH0KIApAQCAtMTA1LDYgKzExMCwxNyBAQCB2b2lkIFdlYklEQkNhbGxiYWNrc0lt
cGw6Om9uQmxvY2tlZCgpCiAgICAgbV9jYWxsYmFja3MtPm9uQmxvY2tlZCgpOwogfQogCit2b2lk
IFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uQmxvY2tlZChsb25nIGxvbmcgb2xkVmVyc2lvbikKK3sK
KyAgICBtX2NhbGxiYWNrcy0+b25CbG9ja2VkKG9sZFZlcnNpb24pOworfQorCit2b2lkIFdlYklE
QkNhbGxiYWNrc0ltcGw6Om9uVXBncmFkZU5lZWRlZChsb25nIGxvbmcgb2xkVmVyc2lvbiwgV2Vi
SURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBXZWJJREJEYXRhYmFzZSogZGF0YWJhc2UpCit7
CisgICAgbV9kaWRDcmVhdGVEYXRhYmFzZVByb3h5ID0gdHJ1ZTsKKyAgICBtX2NhbGxiYWNrcy0+
b25VcGdyYWRlTmVlZGVkKG9sZFZlcnNpb24sIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Ojpj
cmVhdGUoYWRvcHRQdHIodHJhbnNhY3Rpb24pKSwgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNy
ZWF0ZShhZG9wdFB0cihkYXRhYmFzZSkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaAppbmRleCA3YjAyMTYzNTlkNTZkODE4
Njk1ZmU5NzNhMDE4MmFmYjUxMjUwMTYxLi5iNWI1NTRlMDMwNmM2MmQzMzI0NmFiMGFkYTE1OWI1
Mzk2NWQ5ODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJD
YWxsYmFja3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2Fs
bGJhY2tzSW1wbC5oCkBAIC01MSw5ICs1MSwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2Vzcyhjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBjb25zdCBXZWJJREJL
ZXkmLCBjb25zdCBXZWJJREJLZXlQYXRoJik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dp
dGhDb250aW51YXRpb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7CisgICAgdmly
dHVhbCB2b2lkIG9uQmxvY2tlZChsb25nIGxvbmcgb2xkVmVyc2lvbik7CisgICAgdmlydHVhbCB2
b2lkIG9uVXBncmFkZU5lZWRlZChsb25nIGxvbmcgb2xkVmVyc2lvbiwgV2ViSURCVHJhbnNhY3Rp
b24qLCBXZWJJREJEYXRhYmFzZSopOwogCiBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJDb3JlOjpJ
REJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworICAgIGJvb2wgbV9kaWRDcmVhdGVEYXRhYmFzZVBy
b3h5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcAppbmRl
eCBmZjBlODk4NjRiMjFhNjQ2ODliMDMxMjZjYWFmM2ZlNTY1OWZhZjMxLi42ODI4ZGY2ZmY2OTZh
ZGU0N2VmOTRlOGJkNDA3NDJmNGFiNjE5ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTQ0
LDYgKzQ0LDExIEBAIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6fldlYklEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbCgpCiB7CiB9CiAKK3ZvaWQgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
OjpvblZlcnNpb25DaGFuZ2UobG9uZyBsb25nIGN1cnJlbnRWZXJzaW9uLCBsb25nIGxvbmcgcmVx
dWVzdGVkVmVyc2lvbikKK3sKKyAgICBtX2NhbGxiYWNrcy0+b25WZXJzaW9uQ2hhbmdlKGN1cnJl
bnRWZXJzaW9uLCByZXF1ZXN0ZWRWZXJzaW9uKTsKK30KKwogdm9pZCBXZWJJREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGw6Om9uVmVyc2lvbkNoYW5nZShjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24pCiB7
CiAgICAgbV9jYWxsYmFja3MtPm9uVmVyc2lvbkNoYW5nZSh2ZXJzaW9uKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
LmgKaW5kZXggMjFjM2RjN2M1YWM0YWQwYmVhOGRmMjkxNmViYjNmODhjNjdmZjA1Zi4uNTczNDkw
YmZmMzA0MmE1Y2RiZjRhMTc3MWY2YTVkZTQ0NzJlNWQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKQEAg
LTQzLDYgKzQzLDcgQEAgcHVibGljOgogICAgIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbChQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAgICAgdmlydHVhbCB+
V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgb25WZXJz
aW9uQ2hhbmdlKGxvbmcgbG9uZyBjdXJyZW50VmVyc2lvbiwgbG9uZyBsb25nIHJlcXVlc3RlZFZl
cnNpb24pOwogICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgV2ViU3RyaW5n
JiB2ZXJzaW9uKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkZhY3RvcnlJbXBsLmNwcAppbmRleCBkMTRhYzcxZTE4Yzg1OTMxNTJlZmRmZDVjODM5
ZTAxNzIwZTNmZmRjLi4yMTU4ZGFiOTZiOTIzNWYwYjg5M2YzZTRlYTZiNTdkNmQyMzljZTVlIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3Bw
CkBAIC02MywxNyArNjMsMTEgQEAgdm9pZCBXZWJJREJGYWN0b3J5SW1wbDo6Z2V0RGF0YWJhc2VO
YW1lcyhXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2UKICAgICBtX2lkYkZh
Y3RvcnlCYWNrZW5kLT5nZXREYXRhYmFzZU5hbWVzKElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUo
YWRvcHRQdHIoY2FsbGJhY2tzKSksIG9yaWdpbiwgMCwgZGF0YURpcik7CiB9CiAKLQotdm9pZCBX
ZWJJREJGYWN0b3J5SW1wbDo6b3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxi
YWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFt
ZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikKLXsKLSAgICBtX2lkYkZhY3RvcnlCYWNrZW5k
LT5vcGVuKG5hbWUsIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tz
KSkuZ2V0KCksIG9yaWdpbiwgMCwgZGF0YURpcik7Ci19Ci0KIHZvaWQgV2ViSURCRmFjdG9yeUlt
cGw6Om9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURC
Q2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdl
YkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKQogewogICAgIC8vIEZJWE1FOiBQYXNz
IHZlcnNpb24gYWxvbmcgd2hlbiBXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZQog
ICAgIC8vIGhhcyBhbiBvcGVuIG1ldGhvZCB0aGF0IGFjY2VwdHMgaXQuCi0gICAgbV9pZGJGYWN0
b3J5QmFja2VuZC0+b3BlbihuYW1lLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRy
KGNhbGxiYWNrcykpLmdldCgpLCBvcmlnaW4sIDAsIGRhdGFEaXIpOworICAgIG1faWRiRmFjdG9y
eUJhY2tlbmQtPm9wZW4obmFtZSwgdmVyc2lvbiwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShh
ZG9wdFB0cihjYWxsYmFja3MpKS5nZXQoKSwgb3JpZ2luLCAwLCBkYXRhRGlyKTsKIH0KIAogdm9p
ZCBXZWJJREJGYWN0b3J5SW1wbDo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgV2ViU3RyaW5nJiBuYW1l
LCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9y
aWdpbiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaAppbmRleCBmYTQzOGQ3NjQ4ZTM0
NjRjNWExY2JkNWNjZjU3Y2ZmMGU1NmYzMjg1Li44MzNlZWI1OTEyNTliODUzYzMyMWZkMTE4ZjA5
NGE1YjhhN2M4ODY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJGYWN0b3J5SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZh
Y3RvcnlJbXBsLmgKQEAgLTQ1LDcgKzQ1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYklE
QkZhY3RvcnlJbXBsKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhXZWJJ
REJDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3Qg
V2ViU3RyaW5nJiBkYXRhRGlyKTsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2Vi
RnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpOwogICAgIHZpcnR1YWwgdm9pZCBvcGVu
KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgbG9uZyBsb25nIHZlcnNpb24sIFdlYklEQkNhbGxiYWNr
cyosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcm
IGRhdGFEaXIpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2Vi
RnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKaW5kZXggZDll
M2Q2OTdiMTk3Yzc0MDZmNjNiYWViNDgzOTMxYjRlYWM5NTA4NS4uNzg3YTk2YmNjNzViYjc5ZTk3
ODQxMTYwYjRjMDgxZjA1NGFiMWZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcApAQCAtNzQsNyArNzQsNyBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZhaWxpbmdCYWNraW5n
U3RvcmUpOwogICAgIH0KLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0
YShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBpbnQ2NF90JikKKyAgICB2aXJ0dWFsIGJv
b2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBpbnQ2NF90LCBpbnQ2NF90JikKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CkBAIC0xMDIsNyArMTAyLDggQEAgVEVTVChJREJBYm9ydFRlc3QsIFRoZVRlc3QpCiAgICAgY29u
c3QgU3RyaW5nJiBuYW1lID0gImRiIG5hbWUiOwogICAgIE1vY2tJREJDYWxsYmFja3MgY2FsbGJh
Y2tzOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZSgiaHR0cCIsICJsb2NhbGhvc3QiLCA4MSk7Ci0gICAgZmFjdG9yeS0+b3BlbihuYW1l
LCAmY2FsbGJhY2tzLCBvcmlnaW4sIDAgLypGcmFtZSovLCBTdHJpbmcoKSAvKnBhdGgqLyk7Cisg
ICAgY29uc3QgaW50NjRfdCBrVmVyc2lvbiA9IDI7CisgICAgZmFjdG9yeS0+b3BlbihuYW1lLCBr
VmVyc2lvbiwgJmNhbGxiYWNrcywgb3JpZ2luLCAwIC8qRnJhbWUqLywgU3RyaW5nKCkgLypwYXRo
Ki8pOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaAppbmRleCAwODQwNWNlMGFiNThjOTZmYzI5NmMz
ZjBmOGExNGZmNjlkNjViYTE4Li5kOTZmN2M2Y2EwZWE5NDJhMjVkMzgyNGI1ZTEyY2Q1YzQ5ZTdj
NTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNr
aW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNr
aW5nU3RvcmUuaApAQCAtMzMsOCArMzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJ
REJGYWtlQmFja2luZ1N0b3JlIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFt
ZXMpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRh
KGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiBmb3VuZFZlcnNpb24sIGludDY0X3QmIGZvdW5k
SWQpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZUlE
QkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNp
b24sIGludDY0X3QmIHJvd0lkKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVh
bCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcm
IGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJbnRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElk
KSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJE
YXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9u
LCBjb25zdCBpbnQ2NF90IGludFZlcnNpb24sIGludDY0X3QmIHJvd0lkKSBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlTWV0YURhdGEo
aW50NjRfdCByb3dJZCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKSBPVkVSUklERSB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5h
bWUpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwNTM4ZGM1OWY1MTBmZjkx
MGNkMzhmZWNmYWY5MjY1Njc3NGJlODczLi4xN2Y0MDkzMjUwN2UyYjMzNWQ2ZTA1OGIxY2ZkMDll
NDA3YjJkYzAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTggQEAKKzIwMTItMDctMjYgIERhdmlkIEdyb2dh
biAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogaW1wbGVtZW50
IHVwZ3JhZGVuZWVkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg5NTA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9h
Y2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93
IChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25z
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2Fib3J0LWluLWluaXRpYWwtdXBncmFkZW5l
ZWRlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2lu
dHZlcnNpb24tYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hYm9ydC1pbi1pbml0
aWFsLXVwZ3JhZGVuZWVkZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvaW50dmVyc2lvbi1hbmQtc2V0dmVyc2lvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYW5kLXNldHZlcnNpb24uaHRtbDogQWRk
ZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1ibG9ja2VkLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1i
bG9ja2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNp
b24tY2xvc2UtYmV0d2Vlbi1ldmVudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNsb3NlLWJldHdlZW4tZXZlbnRzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtaW4tb25j
b21wbGV0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L2ludHZlcnNpb24tY2xvc2UtaW4tb25jb21wbGV0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWRlbGV0ZS1pbi11cGdyYWRlbmVlZGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tZG9udC1mcmVl
emUtb24tcmVmcmVzaC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9p
bnR2ZXJzaW9uLW9taXQtcGFyYW1ldGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0LXBhcmFtZXRlci5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9wZW4td2l0aC12ZXJzaW9u
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVy
c2lvbi1vcGVuLXdpdGgtdmVyc2lvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi1pbml0aWFsLXZlcnNpb24tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi13aXRo
LWRlbGV0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQuanM6IEFkZGVkLgorICAg
ICAgICAodGVzdCk6CisgICAgICAgIChkZWxldGVTdWNjZXNzKToKKyAgICAgICAgKHVwZ3JhZGVO
ZWVkZWQpOgorICAgICAgICAob25BYm9ydCk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2RvbnQtZnJlZXplLW9uLXJlZnJlc2guanM6IEFkZGVkLgorICAgICAgICAodGVz
dCk6CisgICAgICAgIChkZWxldGVTdWNjZXNzKToKKyAgICAgICAgKHVwZ3JhZGVOZWVkZWQudHJh
bnNhY3Rpb24ub25jb21wbGV0ZSk6CisgICAgICAgICh1cGdyYWRlTmVlZGVkKToKKyAgICAgICAg
KG9wZW5TdWNjZXNzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Bl
bi13aXRoLXZlcnNpb24tYmxvY2tlZC5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAg
ICAgKGRlbGV0ZVN1Y2Nlc3MucmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQpOgorICAgICAgICAoZGVs
ZXRlU3VjY2Vzcyk6CisgICAgICAgIChmaXJzdFN1Y2Nlc3NFdmVudEhhbmRsZXIpOgorICAgICAg
ICAodmVyc2lvbkNoYW5nZUhhbmRsZXIpOgorICAgICAgICAoYmxvY2tlZEV2ZW50SGFuZGxlcik6
CisgICAgICAgIChzZWNvbmRVcGdyYWRlTmVlZGVkRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKHNl
Y29uZFN1Y2Nlc3NDYWxsYmFjayk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL29wZW4td2l0aC12ZXJzaW9uLWNsb3NlLWJldHdlZW4tZXZlbnRzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAoZGVsZXRlU3VjY2Vzcyk6CisgICAgICAgICh1cGdyYWRl
TmVlZGVkLnRyYW5zYWN0aW9uLm9uY29tcGxldGUpOgorICAgICAgICAodXBncmFkZU5lZWRlZCk6
CisgICAgICAgIChjbG9zZURCKToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24tY2xvc2UtaW4tb25j
b21wbGV0ZS5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGRlbGV0ZVN1Y2Nl
c3MpOgorICAgICAgICAodXBncmFkZU5lZWRlZC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlKToKKyAg
ICAgICAgKHVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1pbml0aWFsLXZl
cnNpb24uanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChkZWxldGVTdWNjZXNz
LnJlcXVlc3Qub251cGdyYWRlbmVlZGVkKToKKyAgICAgICAgKGRlbGV0ZVN1Y2Nlc3MpOgorICAg
ICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9vcGVuLXdpdGgtdmVyc2lvbi13aXRoLWRlbGV0ZS5qczogQWRkZWQuCisgICAgICAgICh0ZXN0
KToKKyAgICAgICAgKGluaXRpYWxseURlbGV0ZWQpOgorICAgICAgICAoZmlyc3RVcGdyYWRlTmVl
ZGVkKToKKyAgICAgICAgKG1pZFJlcXVlc3REZWxldGUpOgorICAgICAgICAob3BlblN1Y2Nlc3Mu
ZGIub252ZXJzaW9uY2hhbmdlKToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24uanM6IEFkZGVkLgor
ICAgICAgICAodGVzdCk6CisgICAgICAgIChkZWxldGVTdWNjZXNzKToKKyAgICAgICAgKHVwZ3Jh
ZGVOZWVkZWQudHJhbnNhY3Rpb24ub25jb21wbGV0ZSk6CisgICAgICAgICh1cGdyYWRlTmVlZGVk
KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvc2V0dmVyc2lvbi11cGdyYWRlbmVlZGVkLWludGVydHdpbmVkLmpzOiBBZGRlZC4K
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAoZGVsZXRlU3VjY2Vzcyk6CisgICAgICAgIChvcGVu
U3VjY2Vzcyk6CisgICAgICAgIChpblNldFZlcnNpb24pOgorICAgICAgICAoc2V0VmVyc2lvbkRv
bmUpOgorICAgICAgICAoc2Vjb25kT3Blbik6CisgICAgICAgIChmaXJzdFVwZ3JhZGVOZWVkZWQp
OgorICAgICAgICAodHJhbnNhY3Rpb25Db21wbGV0ZWQpOgorICAgICAgICAoZmlyc3RPcGVuV2l0
aFZlcnNpb24pOgorICAgICAgICAoc2V0VmVyc2lvbk5vdEFsbG93ZWQpOgorICAgICAgICAoZXJy
b3JXaGVuVHJ5aW5nTG93VmVyc2lvbik6CisgICAgICAgIChzZWNvbmRVcGdyYWRlTmVlZGVkKToK
KyAgICAgICAgKHRoaXJkT3BlblN1Y2Nlc3MpOgorCiAyMDEyLTA3LTI2ICBOYXlhbiBLdW1hciBL
ICA8bmF5YW5ra0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgW1dlYkdMXSBJbml0aWFsIHNpemUg
b2YgY2FudmFzIGNhbiBiZSBsYXJnZXIgdGhhbiBNQVhfVklFV1BPUlRfRElNUy4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDY0MTM5MDkw
NGY2NzI3ODU2YjdmMGY2Yjc5MzE2YjIyMWJhOWIwY2MuLmZlYTU5OTA2MDU4YTAyM2NmNTcxNTIw
NTZiYTQ0MDRlNTU5NjQzMWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
VGVzdEV4cGVjdGF0aW9ucwpAQCAtNTE3LDYgKzUxNyw4IEBAIFdPTlRGSVggU0tJUCA6IGh0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1zaGFyZWQtd29ya2VyLmh0bWwgPSBQQVNT
CiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS9zaGFyZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWFsbG93ZWQuaHRtbCA9IFRFWFQKIFdPTlRGSVgg
U0tJUCA6IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3NoYXJlZC13
b3JrZXItY29ubmVjdC1zcmMtYmxvY2tlZC5odG1sID0gVEVYVAogV09OVEZJWCBTS0lQIDogc3Rv
cmFnZS9pbmRleGVkZGIvYmFzaWNzLXNoYXJlZC13b3JrZXJzLmh0bWwgPSBQQVNTCitXT05URklY
IFNLSVAgOiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWRlbGV0ZS1pbi11cGdyYWRlbmVl
ZGVkLmh0bWwgPSBQQVNTCitXT05URklYIFNLSVAgOiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJz
aW9uLWRvbnQtZnJlZXplLW9uLXJlZnJlc2guaHRtbCA9IFBBU1MKIAogLy8gdGVzdF9zaGVsbCBk
b2VzIG5vdCBzdXBwb3J0IG1lc3NhZ2UgcG9ydHMKIEJVR1dLNzQ0NTkgU0tJUCA6IGZhc3Qvd29y
a2Vycy90ZXJtaW5hdGlvbi13aXRoLXBvcnQtbWVzc2FnZXMuaHRtbCA9IFBBU1MKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Fib3J0LWluLWluaXRpYWwtdXBncmFk
ZW5lZWRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9hYm9y
dC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlOTZl
OGQ5NzExZGIwMDA1YTBmZTMyZWM5YTZjYTY2MjhiZjVhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVk
ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1Rlc3QgdGhhdCBhbiBhYm9ydCBpbiB0
aGUgaW5pdGlhbCB1cGdyYWRlbmVlZGVkIHNldHMgdmVyc2lvbiBiYWNrIHRvIDAKKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNl
bGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVk
REIgfHwgc2VsZi5PSW5kZXhlZERCOworCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1l
KQoraW5kZXhlZERCLm9wZW4oZGJuYW1lLCAyKQorCit1cGdyYWRlTmVlZGVkKCk6CitQQVNTIGRi
LnZlcnNpb24gaXMgMgordHJhbnNhY3Rpb24uYWJvcnQoKQorCitvbkFib3J0KCk6CitGQUlMIGV2
ZW50LnRhcmdldC5kYi52ZXJzaW9uIHNob3VsZCBiZSAwLiBXYXMgMi4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWFib3J0LWluLWluaXRpYWwtdXBncmFk
ZW5lZWRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2
ZXJzaW9uLWFib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZWU5NmU4ZDk3MTFkYjAwMDVhMGZlMzJlYzlhNmNhNjYyOGJmNWFmMAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYWJvcnQt
aW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACitU
ZXN0IHRoYXQgYW4gYWJvcnQgaW4gdGhlIGluaXRpYWwgdXBncmFkZW5lZWRlZCBzZXRzIHZlcnNp
b24gYmFjayB0byAwCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIg
PSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4
ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworaW5kZXhlZERC
LmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKK2luZGV4ZWREQi5vcGVuKGRibmFtZSwgMikKKwordXBn
cmFkZU5lZWRlZCgpOgorUEFTUyBkYi52ZXJzaW9uIGlzIDIKK3RyYW5zYWN0aW9uLmFib3J0KCkK
Kworb25BYm9ydCgpOgorRkFJTCBldmVudC50YXJnZXQuZGIudmVyc2lvbiBzaG91bGQgYmUgMC4g
V2FzIDIuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1h
Ym9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2ludHZlcnNpb24tYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjJlZDQwNjJlNTg2ZGFmNmQ1MDY5MjdjMGRkNDIyYzY4ZDQyMjZkYwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24t
YWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYWJvcnQtaW4t
aW5pdGlhbC11cGdyYWRlbmVlZGVkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lv
bi1hbmQtc2V0dmVyc2lvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9pbnR2ZXJzaW9uLWFuZC1zZXR2ZXJzaW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
MGFkNDZiY2Y1YjA3YjdkZDc3MzRhOGQ0MjZjMGI1YTg4NmViNmRmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hbmQtc2V0dmVyc2lv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4MiBAQAorVGVzdCB0aGF0IGJsYWggYmxhaC4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERC
IHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJ
bmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2Uo
ZGJuYW1lKQorRkFJTCBTdHJpbmcocmVxdWVzdCkgc2hvdWxkIGJlIFtvYmplY3QgSURCT3BlbkRC
UmVxdWVzdF0uIFdhcyBbb2JqZWN0IElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0XS4KKworQ2FsbCBv
cGVuIHdpdGggbm8gdmVyc2lvbiBwYXJhbWV0ZXI6CitpbmRleGVkREIub3BlbihkYm5hbWUpCisK
K29wZW5TdWNjZXNzKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgZGIudmVyc2lv
biBpcyAiIgorcmVxdWVzdCA9IGRiLnNldFZlcnNpb24oInNvbWUgdmVyc2lvbiIpCisKK2luU2V0
VmVyc2lvbigpOgorUEFTUyBkYi52ZXJzaW9uIGlzICJzb21lIHZlcnNpb24iCisKK3NldFZlcnNp
b25Eb25lKCk6CitQQVNTIGRiLnZlcnNpb24gaXMgInNvbWUgdmVyc2lvbiIKK2RiLmNsb3NlKCkK
K2luZGV4ZWREQi5vcGVuKGRibmFtZSkKK3JlcXVlc3Qub25zdWNjZXNzID0gc2Vjb25kT3Blbgor
CitzZWNvbmRPcGVuKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgU3RyaW5nKGRi
KSBpcyAiW29iamVjdCBJREJEYXRhYmFzZV0iCitQQVNTIGRiLnZlcnNpb24gaXMgInNvbWUgdmVy
c2lvbiIKK2RiLmNsb3NlKCkKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDIpCisK
K2ZpcnN0VXBncmFkZU5lZWRlZCgpOgorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIFN0
cmluZyhkYikgaXMgIltvYmplY3QgSURCRGF0YWJhc2VdIgorUEFTUyBTdHJpbmcocmVxdWVzdC50
cmFuc2FjdGlvbikgaXMgIltvYmplY3QgSURCVHJhbnNhY3Rpb25dIgorRkFJTCBldmVudC5vbGRW
ZXJzaW9uIHNob3VsZCBiZSBzb21lIHZlcnNpb24gKG9mIHR5cGUgc3RyaW5nKS4gV2FzIDAgKG9m
IHR5cGUgbnVtYmVyKS4KK1BBU1MgZXZlbnQubmV3VmVyc2lvbiBpcyAyCityZXF1ZXN0LnRyYW5z
YWN0aW9uLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlZAorCit0cmFuc2FjdGlvbkNv
bXBsZXRlZCgpOgorZGlkVHJhbnNhY3Rpb25Db21wbGV0ZSA9IHRydWUKKworZmlyc3RPcGVuV2l0
aFZlcnNpb24oKToKK1BBU1MgZGlkVHJhbnNhY3Rpb25Db21wbGV0ZSBpcyB0cnVlCitkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgU3RyaW5nKGRiKSBpcyAiW29iamVjdCBJREJEYXRhYmFz
ZV0iCitQQVNTIHJlcXVlc3QudHJhbnNhY3Rpb24gaXMgbnVsbAorUEFTUyBkYi52ZXJzaW9uIGlz
IDIKK1BBU1MgU3RyaW5nKHJlcXVlc3QpIGlzICJbb2JqZWN0IElEQk9wZW5EQlJlcXVlc3RdIgor
cmVxdWVzdCA9IGRiLnNldFZlcnNpb24oInN0cmluZyB2ZXJzaW9uIDIiKQorUEFTUyBTdHJpbmco
cmVxdWVzdCkgaXMgIltvYmplY3QgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3RdIgorcmVxdWVzdC5v
bmVycm9yID0gc2V0VmVyc2lvbk5vdEFsbG93ZWQKKworc2V0VmVyc2lvbk5vdEFsbG93ZWQoKToK
K1BBU1MgZXZlbnQudHlwZSBpcyAiZXJyb3IiCityZXF1ZXN0LndlYmtpdEVycm9yTWVzc2FnZSA9
IFlvdSBjYW4ndCB1c2UgdGhlIHNldFZlcnNpb24gZnVuY3Rpb24gaWYgeW91J3ZlIGFscmVhZHkg
c2V0IHRoZSB2ZXJzaW9uIHRocm91Z2ggYW4gb3BlbiBjYWxsLiAgVGhlIGN1cnJlbnQgaW50ZWdl
ciB2ZXJzaW9uIGlzIDIKK2RiLmNsb3NlKCkKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5h
bWUsIDEpCityZXF1ZXN0Lm9uZXJyb3IgPSBlcnJvcldoZW5UcnlpbmdMb3dWZXJzaW9uCisKK2Vy
cm9yV2hlblRyeWluZ0xvd1ZlcnNpb24oKToKK3JlcXVlc3Qud2Via2l0RXJyb3JNZXNzYWdlID0g
VGhlIHJlcXVlc3RlZCB2ZXJzaW9uICgxKSBpcyBsZXNzIHRoYW4gdGhlIGV4aXN0aW5nIHZlcnNp
b24gKDIpLgorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgNCkKK3JlcXVlc3Qub251
cGdyYWRlbmVlZGVkID0gc2Vjb25kVXBncmFkZU5lZWRlZAorcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0
aGlyZE9wZW5TdWNjZXNzCisKK3NlY29uZFVwZ3JhZGVOZWVkZWQoKToKK2dvdFNlY29uZFVwZ3Jh
ZGVOZWVkZWQgPSB0cnVlCitQQVNTIGV2ZW50Lm9sZFZlcnNpb24gaXMgMgorUEFTUyBldmVudC5u
ZXdWZXJzaW9uIGlzIDQKKwordGhpcmRPcGVuU3VjY2VzcygpOgorUEFTUyBnb3RTZWNvbmRVcGdy
YWRlTmVlZGVkIGlzIHRydWUKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBkYi52ZXJz
aW9uIGlzIDQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9u
LWFuZC1zZXR2ZXJzaW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2
ZXJzaW9uLWFuZC1zZXR2ZXJzaW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWIwODJhNzY0OWE2NWY1OTI0
NjdmYmU2ZjE0NDQ0MDBiYTRiNzUyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYW5kLXNldHZlcnNpb24uaHRtbApAQCAtMCwwICsx
LDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hh
cmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zZXR2ZXJzaW9uLXVwZ3JhZGVuZWVkZWQtaW50ZXJ0d2luZWQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9pbnR2ZXJzaW9uLWJsb2NrZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1ibG9ja2VkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41ZjUwZDUxODYxZjk4ZDc4ZDRiOTRiMzVkMmY3ZTg2MWQ2MWE2YzMyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1ibG9ja2VkLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDUxIEBACitUZXN0IHRoYXQgYmxvY2tlZCBldmVudHMgZ2V0
IGRlbGl2ZXJlZCBwcm9wZXJseSB3aXRoIHRoZSBuZXcgb3BlbiBhcGkKKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Vi
a2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwg
c2VsZi5PSW5kZXhlZERCOworCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQorCitk
ZWxldGVTdWNjZXNzKCk6CityZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAyKQorCity
ZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCgpOgorZ290Rmlyc3RVcGdyYWRlTmVlZGVkRXZlbnQgPSB0
cnVlCitQQVNTIGV2ZW50Lm9sZFZlcnNpb24gaXMgMAorUEFTUyBldmVudC5uZXdWZXJzaW9uIGlz
IDIKK1BBU1MgU3RyaW5nKGV2ZW50KSBpcyAiW29iamVjdCBJREJVcGdyYWRlTmVlZGVkRXZlbnRd
IgorCitmaXJzdFN1Y2Nlc3NFdmVudEhhbmRsZXIoKToKK1BBU1MgZ290Rmlyc3RVcGdyYWRlTmVl
ZGVkRXZlbnQgaXMgdHJ1ZQorY29ubmVjdGlvbjEgPSBldmVudC50YXJnZXQucmVzdWx0Citjb25u
ZWN0aW9uMS5vbnZlcnNpb25jaGFuZ2UgPSB2ZXJzaW9uQ2hhbmdlSGFuZGxlcgorUEFTUyBTdHJp
bmcoY29ubmVjdGlvbjEpIGlzICJbb2JqZWN0IElEQkRhdGFiYXNlXSIKK3JlcXVlc3QgPSBpbmRl
eGVkREIub3BlbihkYm5hbWUsIDMpCisKK3ZlcnNpb25DaGFuZ2VIYW5kbGVyKCk6CitzYXdWZXJz
aW9uQ2hhbmdlRXZlbnQgPSB0cnVlCitQQVNTIGV2ZW50LnR5cGUgaXMgInZlcnNpb25jaGFuZ2Ui
CitGQUlMIFN0cmluZyhldmVudCkgc2hvdWxkIGJlIFtvYmplY3QgSURCVmVyc2lvbkNoYW5nZUV2
ZW50XS4gV2FzIFtvYmplY3QgSURCVXBncmFkZU5lZWRlZEV2ZW50XS4KK1BBU1MgZXZlbnQub2xk
VmVyc2lvbiBpcyAyCitQQVNTIGV2ZW50Lm5ld1ZlcnNpb24gaXMgMworCitibG9ja2VkRXZlbnRI
YW5kbGVyKCk6CitQQVNTIHNhd1ZlcnNpb25DaGFuZ2VFdmVudCBpcyB0cnVlCitnb3RCbG9ja2Vk
RXZlbnQgPSB0cnVlCitGQUlMIFN0cmluZyhldmVudCkgc2hvdWxkIGJlIFtvYmplY3QgSURCVmVy
c2lvbkNoYW5nZUV2ZW50XS4gV2FzIFtvYmplY3QgSURCVXBncmFkZU5lZWRlZEV2ZW50XS4KK1BB
U1MgZXZlbnQub2xkVmVyc2lvbiBpcyAyCitQQVNTIGV2ZW50Lm5ld1ZlcnNpb24gaXMgMworUEFT
UyBldmVudC50eXBlIGlzICJibG9ja2VkIgorY29ubmVjdGlvbjEuY2xvc2UoKQorCitzZWNvbmRV
cGdyYWRlTmVlZGVkRXZlbnRIYW5kbGVyKCk6CitQQVNTIGdvdEJsb2NrZWRFdmVudCBpcyB0cnVl
Citnb3RTZWNvbmRVcGdyYWRlTmVlZGVkRXZlbnQgPSB0cnVlCisKK3NlY29uZFN1Y2Nlc3NDYWxs
YmFjaygpOgorUEFTUyBnb3RTZWNvbmRVcGdyYWRlTmVlZGVkRXZlbnQgaXMgdHJ1ZQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYmxvY2tlZC5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1ibG9ja2VkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODY4MjUzMzlhZDY3NWZiYzVlMDcyMzFlZDk2MDYzY2Q4ZTM5MDBjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYmxv
Y2tlZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLWJsb2NrZWQuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNsb3NlLWJldHdlZW4tZXZlbnRzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtYmV0
d2Vlbi1ldmVudHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4MDkxZjViZDVkNTA4MTc2ODIw
Y2Y0Y2Q5MmQ1Mzg2YmIzNTc4ODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNsb3NlLWJldHdlZW4tZXZlbnRzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDMzIEBACitUZXN0IHRoYXQgc3BlY2lmeWluZyBhIHZlcnNpb24gd2hlbiBv
cGVuaW5nIGEgbm9uLWV4aXN0ZW50IGRiIGNhdXNlcyBhbiB1cGdyYWRlbmVlZGVkIGV2ZW50IGFu
ZCB0aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBpcyBzZXQgY29ycmVjdGx5LgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53
ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8
fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCity
ZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCA3KQorCisKK3VwZ3JhZGVOZWVkZWQoKToK
K2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBldmVudC5uZXdWZXJzaW9uIGlzIDcKK3Ry
YW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uCisKK3RyYW5zYWN0aW9uLm9uY29t
cGxldGU6CitzYXdUcmFuc2FjdGlvbkNvbXBsZXRlID0gdHJ1ZQorc2V0VGltZW91dChjbG9zZURC
LCAwKQorCitvcGVuU3VjY2VzcygpOgorUEFTUyBkaWRDYWxsQ2xvc2VEQiBpcyBmYWxzZQorUEFT
UyBzYXdUcmFuc2FjdGlvbkNvbXBsZXRlIGlzIHRydWUKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dAorUEFTUyBkYi52ZXJzaW9uIGlzIDcKKworY2xvc2VEQigpOgorZGlkQ2FsbENsb3NlREIgPSB0
cnVlCitkYi5jbG9zZSgpCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50
dmVyc2lvbi1jbG9zZS1iZXR3ZWVuLWV2ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvaW50dmVyc2lvbi1jbG9zZS1iZXR3ZWVuLWV2ZW50cy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdkNjNhZDkwZmY3YTU3NzE2NTU0MTY1MzM5MjFhM2QwMWQyYzMzOTkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNsb3NlLWJldHdl
ZW4tZXZlbnRzLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24tY2xvc2UtYmV0d2Vl
bi1ldmVudHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNsb3NlLWluLW9u
Y29tcGxldGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50
dmVyc2lvbi1jbG9zZS1pbi1vbmNvbXBsZXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDM3
NzdiZDQ2M2RjMjMxOWE2ZTBmY2Y0NjZkYmUzYWI5Mjk1YTVjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9zZS1pbi1vbmNvbXBs
ZXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMyIEBACitUZXN0IHRoYXQgc3BlY2lmeWluZyBh
IHZlcnNpb24gd2hlbiBvcGVuaW5nIGEgbm9uLWV4aXN0ZW50IGRiIGNhdXNlcyBhbiB1cGdyYWRl
bmVlZGVkIGV2ZW50IGFuZCB0aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBpcyBzZXQgY29ycmVjdGx5
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRl
eGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2Vs
Zi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWREQi5kZWxldGVEYXRh
YmFzZShkYm5hbWUpCityZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCA3KQorCit1cGdy
YWRlTmVlZGVkKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgZXZlbnQubmV3VmVy
c2lvbiBpcyA3CitkYi5jcmVhdGVPYmplY3RTdG9yZSgib3MiKQordHJhbnNhY3Rpb24gPSBldmVu
dC50YXJnZXQudHJhbnNhY3Rpb24KKwordHJhbnNhY3Rpb24ub25jb21wbGV0ZToKK3Nhd1RyYW5z
YWN0aW9uQ29tcGxldGUgPSB0cnVlCitkYi5jbG9zZSgpCisKK29wZW5TdWNjZXNzKCk6CitQQVNT
IHNhd1RyYW5zYWN0aW9uQ29tcGxldGUgaXMgdHJ1ZQorZGIgPSBldmVudC50YXJnZXQucmVzdWx0
CitQQVNTIGRiLnZlcnNpb24gaXMgNworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHRyYW5zYWN0
aW9uID0gZGIudHJhbnNhY3Rpb24oJ29zJywgJ3JlYWR3cml0ZScpCitQQVNTIEV4Y2VwdGlvbiB3
YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgor
UEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9zZS1pbi1vbmNvbXBsZXRlLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNsb3NlLWluLW9uY29tcGxldGUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mMjUzN2Q5ZDM1MDNlNGY5NDEwMWZhMjJlYmUyY2MwNGI1NDQ2OWE2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVy
c2lvbi1jbG9zZS1pbi1vbmNvbXBsZXRlLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNp
b24tY2xvc2UtaW4tb25jb21wbGV0ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNp
b24tZGVsZXRlLWluLXVwZ3JhZGVuZWVkZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2ludHZlcnNpb24tZGVsZXRlLWluLXVwZ3JhZGVuZWVkZWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMjUyNjA0ZDljMDI1YjY2MGI4YTBiNjM2YzY4M2QwZDAxM2RlNmEwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1kZWxldGUtaW4t
dXBncmFkZW5lZWRlZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLXdpdGgtZGVs
ZXRlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1kb250LWZyZWV6ZS1vbi1y
ZWZyZXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWRv
bnQtZnJlZXplLW9uLXJlZnJlc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTk4OTEwZmJhOWFkNTFjODhi
ZmU0MDQxNGJlZDQ1OWRmZjBmN2YzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1kb250LWZyZWV6ZS1vbi1yZWZyZXNoLmh0bWwKQEAg
LTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvZG9udC1mcmVlemUtb24tcmVmcmVzaC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2ludHZlcnNpb24tb21pdC1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0LXBhcmFtZXRlci1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDE4MDA1MTEwMWUyNTk2NzhiNzk2NGEwNGI0MWU1Mzg0ODE2YTg1NgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tb21p
dC1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1Rlc3QgdGhhdCBpbml0
aWFsIHZlcnNpb24gYWZ0ZXIgYSBzdWNjZXNzZnVsIG9wZW4gb2YgYSBub24tZXhpc3RlbnQgZGIg
aXMgMQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5p
bmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwg
c2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWREQi5kZWxldGVE
YXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3BlbihkYm5hbWUpCisKK29wZW5TdWNjZXNzKCk6
CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1Rlc3QgbGluZSBmcm9tIElEQkZhY3Rvcnkub3Bl
bjogSWYgbm8gdmVyc2lvbiBpcyBzcGVjaWZpZWQgYW5kIG5vIGRhdGFiYXNlIGV4aXN0cywgc2V0
IGRhdGFiYXNlIHZlcnNpb24gdG8gMS4KK0ZBSUwgZGIudmVyc2lvbiBzaG91bGQgYmUgMSAob2Yg
dHlwZSBudW1iZXIpLiBXYXMgIChvZiB0eXBlIHN0cmluZykuCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0LXBhcmFtZXRlci5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0LXBhcmFtZXRlci5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU1YmRlODM2YmI5Yjk3MTQxZjY3YmFiYjA0YzYyNWIzZTUzYzllNWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9t
aXQtcGFyYW1ldGVyLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24taW5pdGlhbC12
ZXJzaW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vcGVuLXdpdGgtdmVy
c2lvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJz
aW9uLW9wZW4td2l0aC12ZXJzaW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTZkYjk3NWFj
Y2JhOGY0ODFjN2U3MTFkN2E5M2E2NzYzNDY1NzdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vcGVuLXdpdGgtdmVyc2lvbi1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw0NSBAQAorVGVzdCB0aGF0IHNwZWNpZnlpbmcgYSB2ZXJzaW9u
IHdoZW4gb3BlbmluZyBhIG5vbi1leGlzdGVudCBkYiBjYXVzZXMgYW4gdXBncmFkZW5lZWRlZCBl
dmVudCBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaXMgc2V0IGNvcnJlY3RseS4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8
IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRl
eGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJu
YW1lKQorU2hvdWxkIHRyaWdnZXI6Cis0LjEuNDogSWYgbm8gZGF0YWJhc2Ugd2l0aCB0aGUgZ2l2
ZW4gbmFtZSBmcm9tIHRoZSBvcmlnaW4gb3JpZ2luIHdhcyBmb3VuZCwgb3IgaWYgaXQgd2FzIGRl
bGV0ZWQgZHVyaW5nIHRoZSBwcmV2aW91cyBzdGVwLCB0aGVuIGNyZWF0ZSBhIGRhdGFiYXNlIHdp
dGggbmFtZSBuYW1lLCB3aXRoIDAgYXMgdmVyc2lvbiwgYW5kIHdpdGggbm8gb2JqZWN0IHN0b3Jl
cy4gTGV0IGRiIGJlIHRoZSBuZXcgZGF0YWJhc2UuCis0LjEuNjogQ3JlYXRlIGEgbmV3IGNvbm5l
Y3Rpb24gdG8gZGIgYW5kIGxldCBjb25uZWN0aW9uIHJlcHJlc2VudCBpdC4KKzQuMS43OiBJZiB0
aGUgdmVyc2lvbiBvZiBkYiBpcyBsb3dlciB0aGFuIHZlcnNpb24sIHRoZW4gcnVuIHRoZSBzdGVw
cyBmb3IgcnVubmluZyBhICJ2ZXJzaW9uY2hhbmdlIiB0cmFuc2FjdGlvbiB1c2luZyBjb25uZWN0
aW9uLCB2ZXJzaW9uLCByZXF1ZXN0IGFuZCB1cGdyYWRlIGNhbGxiYWNrLgorNC4xLjk6IFJldHVy
biBjb25uZWN0aW9uLgorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgNykKK1BBU1Mg
T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShyZXF1ZXN0KSBpcyAiW29iamVjdCBJREJP
cGVuREJSZXF1ZXN0XSIKKworUEFTUyBJbiB0aGUgdXBncmFkZW5lZWRlZCBldmVudCBoYW5kZXI6
CitUZXN0IDQuOC45LjE6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgT2JqZWN0LnBy
b3RvdHlwZS50b1N0cmluZy5hcHBseShkYikgaXMgIltvYmplY3QgSURCRGF0YWJhc2VdIgorVGVz
dCA0LjguOS4zOgorUEFTUyBldmVudC5vbGRWZXJzaW9uIGlzIDAKK1BBU1MgZXZlbnQubmV3VmVy
c2lvbiBpcyA3CitQQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzICJkb25lIgorVGVzdCA0
LjEuNDoKK1BBU1MgZGIubmFtZSBpcyBkYm5hbWUKK1BBU1MgZGIudmVyc2lvbiBpcyA3CitQQVNT
IGRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDAKK3RyYW5zYWN0aW9uID0gZXZlbnQudGFy
Z2V0LnRyYW5zYWN0aW9uCitQQVNTIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkodHJh
bnNhY3Rpb24pIGlzICJbb2JqZWN0IElEQlRyYW5zYWN0aW9uXSIKK29zID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoInNvbWVPUyIpCitzYXdUcmFuc2FjdGlvbkNvbXBsZXRlID0gdHJ1ZQorCitvcGVu
U3VjY2VzcygpOgorVGVzdCA0LjEuNywgdGhhdCBhIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24g
d2FzIHJ1bi4KK1BBU1Mgc2F3VXBncmFkZU5lZWRlZCBpcyB0cnVlCitQQVNTIHNhd1RyYW5zYWN0
aW9uQ29tcGxldGUgaXMgdHJ1ZQorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitLaW5kIG9mIHRl
c3QgNC4xLjk6CitQQVNTIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkoZGIpIGlzICJb
b2JqZWN0IElEQkRhdGFiYXNlXSIKK1BBU1MgZGIudmVyc2lvbiBpcyA3CitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vcGVuLXdpdGgtdmVyc2lvbi5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vcGVuLXdpdGgtdmVy
c2lvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiYTZmMGI3MmJmYjY1NmY0MDE4ZTk1ODhjNDI3OTRhMWEw
ZDRhYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9p
bnR2ZXJzaW9uLW9wZW4td2l0aC12ZXJzaW9uLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Blbi13aXRoLXZl
cnNpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi1pbml0aWFs
LXZlcnNpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Bl
bi13aXRoLXZlcnNpb24taW5pdGlhbC12ZXJzaW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
MTgwMDUxMTAxZTI1OTY3OGI3OTY0YTA0YjQxZTUzODQ4MTZhODU2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24taW5pdGlh
bC12ZXJzaW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUZXN0IHRoYXQgaW5pdGlh
bCB2ZXJzaW9uIGFmdGVyIGEgc3VjY2Vzc2Z1bCBvcGVuIG9mIGEgbm9uLWV4aXN0ZW50IGRiIGlz
IDEKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5k
ZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNl
bGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitpbmRleGVkREIuZGVsZXRlRGF0
YWJhc2UoZGJuYW1lKQoraW5kZXhlZERCLm9wZW4oZGJuYW1lKQorCitvcGVuU3VjY2VzcygpOgor
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitUZXN0IGxpbmUgZnJvbSBJREJGYWN0b3J5Lm9wZW46
IElmIG5vIHZlcnNpb24gaXMgc3BlY2lmaWVkIGFuZCBubyBkYXRhYmFzZSBleGlzdHMsIHNldCBk
YXRhYmFzZSB2ZXJzaW9uIHRvIDEuCitGQUlMIGRiLnZlcnNpb24gc2hvdWxkIGJlIDEgKG9mIHR5
cGUgbnVtYmVyKS4gV2FzICAob2YgdHlwZSBzdHJpbmcpLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0aC12ZXJzaW9uLXdpdGgtZGVsZXRlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0aC12ZXJzaW9uLXdpdGgt
ZGVsZXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzhmM2FhYWEzNjhjYjI2ZTA2NTE0YWI5
NzNlMzdlNzE3NTY3YzllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24td2l0aC1kZWxldGUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMzUgQEAKK1Rlc3QgdGhhdCBhIGRlbGV0ZURhdGFiYXNlIGNhbGxlZCB3aGlsZSBoYW5k
bGluZyBhbiB1cGdyYWRlbmVlZGVkIGV2ZW50IGlzIHF1ZXVlZCBhbmQgZmlyZXMgaXRzIGV2ZW50
cyBhdCB0aGUgcmlnaHQgdGltZQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5k
ZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5t
b3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2lu
ZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCisKK2luaXRpYWxseURlbGV0ZWQoKToKK3Jl
cXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDEpCisKK2ZpcnN0VXBncmFkZU5lZWRlZCgp
OgorUEFTUyBzYXdGaXJzdFVwZ3JhZGVOZWVkZWQgaXMgZmFsc2UKK3Nhd0ZpcnN0VXBncmFkZU5l
ZWRlZCA9IHRydWUKK1BBU1MgZXZlbnQub2xkVmVyc2lvbiBpcyAwCitQQVNTIGV2ZW50Lm5ld1Zl
cnNpb24gaXMgMQorZGVsZXRlUmVxdWVzdCA9IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5h
bWUpCisKK21pZFJlcXVlc3REZWxldGUoKToKKworZmlyc3RVcGdyYWRlTmVlZGVkKCk6CitGQUlM
IHNhd0ZpcnN0VXBncmFkZU5lZWRlZCBzaG91bGQgYmUgZmFsc2UuIFdhcyB0cnVlLgorc2F3Rmly
c3RVcGdyYWRlTmVlZGVkID0gdHJ1ZQorUEFTUyBldmVudC5vbGRWZXJzaW9uIGlzIDAKK1BBU1Mg
ZXZlbnQubmV3VmVyc2lvbiBpcyAxCisKK3JlcXVlc3Qub25zdWNjZXNzKCk6CitQQVNTIHNhd0Zp
cnN0VXBncmFkZU5lZWRlZCBpcyB0cnVlCitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1Mg
ZGIudmVyc2lvbiBpcyAxCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2Fib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC5qcyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjVlMWFlNmYzNzY1ZjI0NDgzZjRkYjRiNWMzN2M5MTAzMzVjODQ5ZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQuanMKQEAgLTAsMCArMSw0NiBAQAoraWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVk
LmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgYW4gYWJvcnQgaW4gdGhlIGluaXRp
YWwgdXBncmFkZW5lZWRlZCBzZXRzIHZlcnNpb24gYmFjayB0byAwIik7CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgZGJuYW1lID0gc2VsZi5s
b2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMSArIHNlbGYubG9jYXRpb24ucGF0aG5hbWUubGFz
dEluZGV4T2YoIi8iKSk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRl
bGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoZXZ0KSB7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKGRibmFtZSwgMikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQg
PSB1cGdyYWRlTmVlZGVkOworfQorCitmdW5jdGlvbiB1cGdyYWRlTmVlZGVkKGV2dCkKK3sKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoInVwZ3JhZGVOZWVkZWQoKToiKTsKKyAgICBldmVudCA9
IGV2dDsKKyAgICBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgc2hvdWxkQmUoImRiLnZl
cnNpb24iLCAiMiIpOworICAgIHRyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9u
OworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFj
azsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gb25BYm9ydDsKKyAgICBldmFsQW5kTG9nKCJ0
cmFuc2FjdGlvbi5hYm9ydCgpIik7Cit9CisKK2Z1bmN0aW9uIG9uQWJvcnQoZXZ0KQoreworICAg
IGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygib25BYm9ydCgpOiIpOworICAgIGV2ZW50ID0gZXZ0Owor
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZGIudmVyc2lvbiIsICIwIik7CisgICAgZmluaXNo
SlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9kb250LWZyZWV6ZS1vbi1yZWZyZXNoLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RvbnQtZnJlZXplLW9uLXJlZnJlc2guanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWFlMzI1ZDFiMTVlNDFiMWE2OGUxMTYwZTA5ZTc3MTg0ODY1OWE0ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9k
b250LWZyZWV6ZS1vbi1yZWZyZXNoLmpzCkBAIC0wLDAgKzEsNTcgQEAKK2lmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQor
CitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IHNwZWNpZnlpbmcgYSB2ZXJzaW9uIHdoZW4gb3Blbmlu
ZyBhIG5vbi1leGlzdGVudCBkYiBjYXVzZXMgYW4gdXBncmFkZW5lZWRlZCBldmVudCBhbmQgdGhh
dCB0aGUgdmVyc2lvbiBudW1iZXIgaXMgc2V0IGNvcnJlY3RseS4iKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5hbWUgPSBzZWxmLmxv
Y2F0aW9uLnBhdGhuYW1lLnN1YnN0cmluZygxICsgc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5sYXN0
SW5kZXhPZigiLyIpKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVs
ZXRlRGF0YWJhc2UoZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlU3Vj
Y2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gZGVsZXRlU3VjY2VzcyhldnQpIHsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCA3KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
b3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSB1cGdyYWRlTmVlZGVk
OworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAg
ICBkZWJ1ZygiIik7Cit9CisKK3ZhciBzYXdUcmFuc2FjdGlvbkNvbXBsZXRlID0gZmFsc2U7Citm
dW5jdGlvbiB1cGdyYWRlTmVlZGVkKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoInVwZ3JhZGVOZWVkZWQoKToiKTsKKyAgICBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQubmV3VmVyc2lv
biIsICI3Iik7CisKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC50
cmFuc2FjdGlvbiIpOworICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKKyAgICB0cmFuc2Fj
dGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24u
b25jb21wbGV0ZSA9IGZ1bmN0aW9uKGUpCisgICAgeworICAgICAgICBkZWJ1ZygiIik7CisgICAg
ICAgIGRlYnVnKCJ0cmFuc2FjdGlvbi5vbmNvbXBsZXRlOiIpOworICAgICAgICBldmFsQW5kTG9n
KCJzYXdUcmFuc2FjdGlvbkNvbXBsZXRlID0gdHJ1ZSIpOworICAgIH0KK30KKworZnVuY3Rpb24g
b3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAg
ICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZVRydWUoInNhd1RyYW5zYWN0
aW9uQ29tcGxldGUiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworICAgIHNob3VsZEJlKCdkYi52ZXJzaW9uJywgIjciKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLWJsb2NrZWQuanMgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24tYmxvY2tlZC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xYTQ5NDVhZGYxMzI0MjQ4MzNlZTc1NDUzZWM3YjExMDNkMTEzNDhhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L29wZW4td2l0aC12ZXJzaW9uLWJsb2NrZWQuanMKQEAgLTAsMCArMSw5NiBAQAoraWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgYmxvY2tlZCBldmVudHMgZ2V0IGRlbGl2ZXJl
ZCBwcm9wZXJseSB3aXRoIHRoZSBuZXcgb3BlbiBhcGkiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5hbWUgPSBzZWxmLmxvY2F0aW9u
LnBhdGhuYW1lLnN1YnN0cmluZygxICsgc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5sYXN0SW5kZXhP
ZigiLyIpKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFi
YXNlKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGRlbGV0ZVN1Y2Nlc3MoZXZ0KSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJkZWxl
dGVTdWNjZXNzKCk6Iik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVu
KGRibmFtZSwgMikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpcnN0U3VjY2Vzc0V2ZW50
SGFuZGxlcjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICBnb3RGaXJzdFVwZ3JhZGVOZWVkZWRFdmVudCA9IGZhbHNlOworICAgIHJlcXVlc3Qub251
cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgICBldmVudCA9IGV2dDsKKyAgICAg
IGRlYnVnKCIiKTsKKyAgICAgIGRlYnVnKCJyZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCgpOiIpOwor
ICAgICAgZXZhbEFuZExvZygiZ290Rmlyc3RVcGdyYWRlTmVlZGVkRXZlbnQgPSB0cnVlIik7Cisg
ICAgICBzaG91bGRCZSgiZXZlbnQub2xkVmVyc2lvbiIsICIwIik7CisgICAgICBzaG91bGRCZSgi
ZXZlbnQubmV3VmVyc2lvbiIsICIyIik7CisgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIlN0
cmluZyhldmVudCkiLCAiW29iamVjdCBJREJVcGdyYWRlTmVlZGVkRXZlbnRdIik7CisgICAgfQor
fQorCitnb3RCbG9ja2VkRXZlbnQgPSBmYWxzZTsKK2Z1bmN0aW9uIGZpcnN0U3VjY2Vzc0V2ZW50
SGFuZGxlcihldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJmaXJzdFN1Y2Nlc3NFdmVudEhhbmRsZXIoKToiKQorICAgIHNob3VsZEJlVHJ1ZSgiZ290
Rmlyc3RVcGdyYWRlTmVlZGVkRXZlbnQiKTsKKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMSA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMS5vbnZl
cnNpb25jaGFuZ2UgPSB2ZXJzaW9uQ2hhbmdlSGFuZGxlciIpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiU3RyaW5nKGNvbm5lY3Rpb24xKSIsICJbb2JqZWN0IElEQkRhdGFiYXNlXSIpOwor
ICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDMpIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZWNvbmRTdWNjZXNzQ2FsbGJhY2s7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbmJsb2Nr
ZWQgPSBibG9ja2VkRXZlbnRIYW5kbGVyOworICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0g
c2Vjb25kVXBncmFkZU5lZWRlZEV2ZW50SGFuZGxlcjsKK30KKwordmFyIHNhd1ZlcnNpb25DaGFu
Z2VFdmVudCA9IGZhbHNlOworZnVuY3Rpb24gdmVyc2lvbkNoYW5nZUhhbmRsZXIoZXZ0KQorewor
ICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidmVyc2lvbkNoYW5n
ZUhhbmRsZXIoKToiKTsKKyAgICBldmFsQW5kTG9nKCJzYXdWZXJzaW9uQ2hhbmdlRXZlbnQgPSB0
cnVlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50eXBlIiwgInZlcnNpb25j
aGFuZ2UiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIlN0cmluZyhldmVudCkiLCAiW29i
amVjdCBJREJWZXJzaW9uQ2hhbmdlRXZlbnRdIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm9sZFZl
cnNpb24iLCAiMiIpOworICAgIHNob3VsZEJlKCJldmVudC5uZXdWZXJzaW9uIiwgIjMiKTsKK30K
KworZnVuY3Rpb24gYmxvY2tlZEV2ZW50SGFuZGxlcihldnQpCit7CisgICAgZXZlbnQgPSBldnQ7
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJibG9ja2VkRXZlbnRIYW5kbGVyKCk6Iik7Cisg
ICAgc2hvdWxkQmVUcnVlKCJzYXdWZXJzaW9uQ2hhbmdlRXZlbnQiKTsKKyAgICBldmFsQW5kTG9n
KCJnb3RCbG9ja2VkRXZlbnQgPSB0cnVlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJT
dHJpbmcoZXZlbnQpIiwgIltvYmplY3QgSURCVmVyc2lvbkNoYW5nZUV2ZW50XSIpOworICAgIHNo
b3VsZEJlKCJldmVudC5vbGRWZXJzaW9uIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQubmV3
VmVyc2lvbiIsICIzIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50eXBlIiwg
ImJsb2NrZWQiKTsKKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMS5jbG9zZSgpIik7Cit9CisK
K2dvdFNlY29uZFVwZ3JhZGVOZWVkZWRFdmVudCA9IGZhbHNlOworZnVuY3Rpb24gc2Vjb25kVXBn
cmFkZU5lZWRlZEV2ZW50SGFuZGxlcihldnQpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJzZWNvbmRVcGdyYWRlTmVlZGVkRXZlbnRIYW5kbGVyKCk6Iik7CisgICAgc2hvdWxkQmVUcnVl
KCJnb3RCbG9ja2VkRXZlbnQiKTsKKyAgICBldmFsQW5kTG9nKCJnb3RTZWNvbmRVcGdyYWRlTmVl
ZGVkRXZlbnQgPSB0cnVlIik7Cit9CisKK2Z1bmN0aW9uIHNlY29uZFN1Y2Nlc3NDYWxsYmFjayhl
dnQpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJzZWNvbmRTdWNjZXNzQ2FsbGJhY2so
KToiKTsKKyAgICBzaG91bGRCZVRydWUoImdvdFNlY29uZFVwZ3JhZGVOZWVkZWRFdmVudCIpOwor
ICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24tY2xvc2UtYmV0
d2Vlbi1ldmVudHMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
b3Blbi13aXRoLXZlcnNpb24tY2xvc2UtYmV0d2Vlbi1ldmVudHMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U0
OTcyOTNiMTk1ODFhMWVmOTljZTJmYmY1NDIzNjM4ZWI2NTFkMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lv
bi1jbG9zZS1iZXR3ZWVuLWV2ZW50cy5qcwpAQCAtMCwwICsxLDY3IEBACitpZiAodGhpcy5pbXBv
cnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30K
KworZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBzcGVjaWZ5aW5nIGEgdmVyc2lvbiB3aGVuIG9wZW5p
bmcgYSBub24tZXhpc3RlbnQgZGIgY2F1c2VzIGFuIHVwZ3JhZGVuZWVkZWQgZXZlbnQgYW5kIHRo
YXQgdGhlIHZlcnNpb24gbnVtYmVyIGlzIHNldCBjb3JyZWN0bHkuIik7CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgZGJuYW1lID0gc2VsZi5s
b2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMSArIHNlbGYubG9jYXRpb24ucGF0aG5hbWUubGFz
dEluZGV4T2YoIi8iKSk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRl
bGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoZXZ0KSB7CisgICAgZXZhbEFuZExvZygicmVxdWVz
dCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgNykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gdXBncmFkZU5lZWRl
ZDsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7Cisg
ICAgZGVidWcoIiIpOworfQorCit2YXIgc2F3VHJhbnNhY3Rpb25Db21wbGV0ZSA9IGZhbHNlOwor
ZnVuY3Rpb24gdXBncmFkZU5lZWRlZChldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJ1cGdyYWRlTmVlZGVkKCk6Iik7CisgICAgZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNp
b24iLCAiNyIpOworCisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQu
dHJhbnNhY3Rpb24iKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGUpCisgICAg
eworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGRlYnVnKCJ0cmFuc2FjdGlvbi5vbmNvbXBs
ZXRlOiIpOworICAgICAgICBldmFsQW5kTG9nKCJzYXdUcmFuc2FjdGlvbkNvbXBsZXRlID0gdHJ1
ZSIpOworICAgICAgICBldmFsQW5kTG9nKCJzZXRUaW1lb3V0KGNsb3NlREIsIDApIik7CisgICAg
fQorfQorCit2YXIgZGlkQ2FsbENsb3NlREIgPSBmYWxzZTsKK2Z1bmN0aW9uIGNsb3NlREIoKQor
eworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiY2xvc2VEQigpOiIpOworICAgIGV2YWxBbmRM
b2coImRpZENhbGxDbG9zZURCID0gdHJ1ZSIpOworICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCki
KTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoZXZ0KQor
eworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygib3BlblN1Y2Nl
c3MoKToiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkaWRDYWxsQ2xvc2VEQiIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgic2F3VHJhbnNhY3Rpb25Db21wbGV0ZSIpOworICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmUoJ2RiLnZlcnNpb24nLCAi
NyIpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24tY2xvc2UtaW4tb25jb21wbGV0ZS5qcyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lv
bi1jbG9zZS1pbi1vbmNvbXBsZXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiZDk1OGFhMGU2MGRkNDk1NWM4
Njk2MzU5MWI0OTk3ZjI1YWZiOTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24tY2xvc2UtaW4tb25jb21w
bGV0ZS5qcwpAQCAtMCwwICsxLDU4IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRl
c3QgdGhhdCBzcGVjaWZ5aW5nIGEgdmVyc2lvbiB3aGVuIG9wZW5pbmcgYSBub24tZXhpc3RlbnQg
ZGIgY2F1c2VzIGFuIHVwZ3JhZGVuZWVkZWQgZXZlbnQgYW5kIHRoYXQgdGhlIHZlcnNpb24gbnVt
YmVyIGlzIHNldCBjb3JyZWN0bHkuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7CisgICAgZGJuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5z
dWJzdHJpbmcoMSArIHNlbGYubG9jYXRpb24ucGF0aG5hbWUubGFzdEluZGV4T2YoIi8iKSk7CisK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFt
ZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0
ZVN1Y2Nlc3MoZXZ0KSB7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVu
KGRibmFtZSwgNykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAg
IHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gdXBncmFkZU5lZWRlZDsKKyAgICByZXF1ZXN0Lm9u
YmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7Cit9CisKK3ZhciBzYXdUcmFuc2Fj
dGlvbkNvbXBsZXRlID0gZmFsc2U7CitmdW5jdGlvbiB1cGdyYWRlTmVlZGVkKGV2dCkKK3sKKyAg
ICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInVwZ3JhZGVOZWVkZWQo
KToiKTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBz
aG91bGRCZSgiZXZlbnQubmV3VmVyc2lvbiIsICI3Iik7CisgICAgZXZhbEFuZExvZygiZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoXCJvc1wiKSIpOworCisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24g
PSBldmVudC50YXJnZXQudHJhbnNhY3Rpb24iKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1
bmN0aW9uKGUpCisgICAgeworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGRlYnVnKCJ0cmFu
c2FjdGlvbi5vbmNvbXBsZXRlOiIpOworICAgICAgICBldmFsQW5kTG9nKCJzYXdUcmFuc2FjdGlv
bkNvbXBsZXRlID0gdHJ1ZSIpOworICAgICAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7Cisg
ICAgfQorfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgic2F3VHJhbnNhY3Rpb25Db21wbGV0ZSIpOworICAgIGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlKCdkYi52ZXJzaW9uJywgIjciKTsK
KyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9u
KCdvcycsICdyZWFkd3JpdGUnKSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAi
J0ludmFsaWRTdGF0ZUVycm9yJyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Bl
bi13aXRoLXZlcnNpb24taW5pdGlhbC12ZXJzaW9uLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLWluaXRpYWwtdmVyc2lvbi5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mZTdkMGYzZTgzZWExMzE1NzQ2MGFhMDE5MzgyNDQ1NjNmN2U5NThkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29w
ZW4td2l0aC12ZXJzaW9uLWluaXRpYWwtdmVyc2lvbi5qcwpAQCAtMCwwICsxLDM4IEBACitpZiAo
dGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQu
anMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBpbml0aWFsIHZlcnNpb24gYWZ0ZXIg
YSBzdWNjZXNzZnVsIG9wZW4gb2YgYSBub24tZXhpc3RlbnQgZGIgaXMgMSIpOworCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIGRibmFtZSA9IHNl
bGYubG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKDEgKyBzZWxmLmxvY2F0aW9uLnBhdGhuYW1l
Lmxhc3RJbmRleE9mKCIvIikpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5kZWxldGVEYXRhYmFzZShkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxl
dGVTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBkZWxldGVTdWNjZXNzKGV2dCkgeworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbihkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKCkgeworICAgICAg
dGVzdFBhc3NlZCgiR290IHVwZ3JhZGVuZWVkZWQgZXZlbnQiKTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIG9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBkZWJ1ZygiVGVzdCBsaW5lIGZyb20gSURCRmFj
dG9yeS5vcGVuOiBJZiBubyB2ZXJzaW9uIGlzIHNwZWNpZmllZCBhbmQgbm8gZGF0YWJhc2UgZXhp
c3RzLCBzZXQgZGF0YWJhc2UgdmVyc2lvbiB0byAxLiIpOworICAgIHNob3VsZEJlKCdkYi52ZXJz
aW9uJywgJzEnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJz
aW9uLXdpdGgtZGVsZXRlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL29wZW4td2l0aC12ZXJzaW9uLXdpdGgtZGVsZXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1NmZiNGQz
N2VmMjk5N2Y0MTM2MjNiYmE2Yjc1ODM0ZDBjN2NjNjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24td2l0
aC1kZWxldGUuanMKQEAgLTAsMCArMSw3NCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewor
ICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9u
KCJUZXN0IHRoYXQgYSBkZWxldGVEYXRhYmFzZSBjYWxsZWQgd2hpbGUgaGFuZGxpbmcgYW4gdXBn
cmFkZW5lZWRlZCBldmVudCBpcyBxdWV1ZWQgYW5kIGZpcmVzIGl0cyBldmVudHMgYXQgdGhlIHJp
Z2h0IHRpbWUiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKKyAgICBkYm5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lLnN1YnN0cmluZygxICsg
c2VsZi5sb2NhdGlvbi5wYXRobmFtZS5sYXN0SW5kZXhPZigiLyIpKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gaW5pdGlhbGx5RGVsZXRlZDsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwordmFyIHNhd0ZpcnN0VXBncmFkZU5lZWRl
ZCA9IGZhbHNlOwordmFyIGFscmVhZHlEZWxldGVkID0gZmFsc2U7CitmdW5jdGlvbiBpbml0aWFs
bHlEZWxldGVkKGV2dCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiaW5pdGlhbGx5RGVs
ZXRlZCgpOiIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5h
bWUsIDEpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9udXBn
cmFkZW5lZWRlZCA9IGZpcnN0VXBncmFkZU5lZWRlZDsKK30KKworZnVuY3Rpb24gZmlyc3RVcGdy
YWRlTmVlZGVkKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoImZpcnN0VXBncmFkZU5lZWRlZCgpOiIpOworICAgIHNob3VsZEJlRmFsc2UoInNhd0Zp
cnN0VXBncmFkZU5lZWRlZCIpOworICAgIGV2YWxBbmRMb2coInNhd0ZpcnN0VXBncmFkZU5lZWRl
ZCA9IHRydWUiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQub2xkVmVyc2lvbiIsICIwIik7CisgICAg
c2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNpb24iLCAiMSIpOworICAgIGlmICghYWxyZWFkeURlbGV0
ZWQpIHsKKyAgICAgICAgYWxyZWFkeURlbGV0ZWQgPSB0cnVlOworICAgICAgICByZXF1ZXN0MiA9
IGV2YWxBbmRMb2coImRlbGV0ZVJlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJu
YW1lKSIpOworICAgICAgICByZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSBtaWRSZXF1ZXN0RGVsZXRlOwor
ICAgICAgICByZXF1ZXN0Mi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
ICAgIHJlcXVlc3QyLm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAg
fQorfQorCitmdW5jdGlvbiBtaWRSZXF1ZXN0RGVsZXRlKGV2dCkKK3sKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIm1pZFJlcXVlc3REZWxldGUoKToiKTsKK30KKworc2F3VmVyc2lvbkNoYW5n
ZSA9IGZhbHNlOworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0
OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygicmVxdWVzdC5vbnN1Y2Nlc3MoKToiKTsKKyAg
ICBzaG91bGRCZVRydWUoInNhd0ZpcnN0VXBncmFkZU5lZWRlZCIpOworICAgIGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGRiLm9udmVyc2lvbmNoYW5nZSA9IGZ1
bmN0aW9uKGV2dCkgeworICAgICAgZXZlbnQgPSBldnQ7CisgICAgICBkZWJ1ZygiIik7CisgICAg
ICBkZWJ1ZygiZGIub252ZXJzaW9uY2hhbmdlKCk6Iik7CisgICAgICBzaG91bGRCZSgiZXZlbnQu
b2xkVmVyc2lvbiIsICIxIik7CisgICAgICBzaG91bGRCZU51bGwoImV2ZW50Lm5ld1ZlcnNpb24i
KTsKKyAgICAgIGV2YWxBbmRMb2coInNhd1ZlcnNpb25DaGFuZ2UgPSB0cnVlIik7CisgICAgICBk
Yi5jbG9zZSgpOworICAgIH0KKyAgICBzaG91bGRCZSgnZGIudmVyc2lvbicsICcxJyk7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi5qcyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44ODllZDM5MjZmYTliNTI0NDRhNzNlNmZhNTUyNzJjNTk0MDA0ODVkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4t
d2l0aC12ZXJzaW9uLmpzCkBAIC0wLDAgKzEsNzYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCB0aGF0IHNwZWNpZnlpbmcgYSB2ZXJzaW9uIHdoZW4gb3BlbmluZyBhIG5vbi1l
eGlzdGVudCBkYiBjYXVzZXMgYW4gdXBncmFkZW5lZWRlZCBldmVudCBhbmQgdGhhdCB0aGUgdmVy
c2lvbiBudW1iZXIgaXMgc2V0IGNvcnJlY3RseS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5hbWUgPSBzZWxmLmxvY2F0aW9uLnBh
dGhuYW1lLnN1YnN0cmluZygxICsgc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5sYXN0SW5kZXhPZigi
LyIpKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJh
c2UoZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlU3VjY2VzczsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gZGVsZXRlU3VjY2VzcyhldnQpIHsKKyAgICBkZWJ1ZygiU2hvdWxkIHRyaWdnZXI6Iik7Cisg
ICAgZGVidWcoIjQuMS40OiBJZiBubyBkYXRhYmFzZSB3aXRoIHRoZSBnaXZlbiBuYW1lIGZyb20g
dGhlIG9yaWdpbiBvcmlnaW4gd2FzIGZvdW5kLCBvciBpZiBpdCB3YXMgZGVsZXRlZCBkdXJpbmcg
dGhlIHByZXZpb3VzIHN0ZXAsIHRoZW4gY3JlYXRlIGEgZGF0YWJhc2Ugd2l0aCBuYW1lIG5hbWUs
IHdpdGggMCBhcyB2ZXJzaW9uLCBhbmQgd2l0aCBubyBvYmplY3Qgc3RvcmVzLiBMZXQgZGIgYmUg
dGhlIG5ldyBkYXRhYmFzZS4iKTsKKyAgICBkZWJ1ZygiNC4xLjY6IENyZWF0ZSBhIG5ldyBjb25u
ZWN0aW9uIHRvIGRiIGFuZCBsZXQgY29ubmVjdGlvbiByZXByZXNlbnQgaXQuIik7CisgICAgZGVi
dWcoIjQuMS43OiBJZiB0aGUgdmVyc2lvbiBvZiBkYiBpcyBsb3dlciB0aGFuIHZlcnNpb24sIHRo
ZW4gcnVuIHRoZSBzdGVwcyBmb3IgcnVubmluZyBhIFwidmVyc2lvbmNoYW5nZVwiIHRyYW5zYWN0
aW9uIHVzaW5nIGNvbm5lY3Rpb24sIHZlcnNpb24sIHJlcXVlc3QgYW5kIHVwZ3JhZGUgY2FsbGJh
Y2suIik7CisgICAgZGVidWcoIjQuMS45OiBSZXR1cm4gY29ubmVjdGlvbi4iKTsKKworICAgIGV2
YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDcpIik7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KHJlcXVl
c3QpIiwgIltvYmplY3QgSURCT3BlbkRCUmVxdWVzdF0iKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gdXBncmFkZU5l
ZWRlZDsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7
CisgICAgZGVidWcoIiIpOworfQorCit2YXIgc2F3VXBncmFkZU5lZWRlZCA9IGZhbHNlOwordmFy
IHNhd1RyYW5zYWN0aW9uQ29tcGxldGUgPSBmYWxzZTsKK2Z1bmN0aW9uIHVwZ3JhZGVOZWVkZWQo
ZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIHRlc3RQYXNzZWQoIkluIHRoZSB1cGdyYWRl
bmVlZGVkIGV2ZW50IGhhbmRlcjoiKTsKKyAgICBkZWJ1ZygiVGVzdCA0LjguOS4xOiIpOworICAg
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShkYikiLCAiW29iamVj
dCBJREJEYXRhYmFzZV0iKTsKKyAgICBkZWJ1ZygiVGVzdCA0LjguOS4zOiIpOworICAgIHNob3Vs
ZEJlKCJldmVudC5vbGRWZXJzaW9uIiwgIjAiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQubmV3VmVy
c2lvbiIsICI3Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVh
ZHlTdGF0ZSIsICJkb25lIik7CisgICAgZGVidWcoIlRlc3QgNC4xLjQ6Iik7CisgICAgc2hvdWxk
QmUoImRiLm5hbWUiLCAiZGJuYW1lIik7CisgICAgc2hvdWxkQmUoImRiLnZlcnNpb24iLCAiNyIp
OworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIwIik7CisKKyAg
ICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbiIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBs
eSh0cmFuc2FjdGlvbikiLCAiW29iamVjdCBJREJUcmFuc2FjdGlvbl0iKTsKKyAgICBldmFsQW5k
TG9nKCdvcyA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzb21lT1MiKScpOworICAgIHRyYW5zYWN0
aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5v
bmNvbXBsZXRlID0gZnVuY3Rpb24oZSkgeworICAgICAgZXZhbEFuZExvZygic2F3VHJhbnNhY3Rp
b25Db21wbGV0ZSA9IHRydWUiKTsKKyAgICB9CisgICAgc2F3VXBncmFkZU5lZWRlZCA9IHRydWU7
Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgZGVidWcoIlRl
c3QgNC4xLjcsIHRoYXQgYSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHdhcyBydW4uIik7Cisg
ICAgc2hvdWxkQmUoInNhd1VwZ3JhZGVOZWVkZWQiLCAidHJ1ZSIpOworICAgIHNob3VsZEJlVHJ1
ZSgic2F3VHJhbnNhY3Rpb25Db21wbGV0ZSIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZGVidWcoIktpbmQgb2YgdGVzdCA0LjEuOToiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBw
bHkoZGIpIiwgIltvYmplY3QgSURCRGF0YWJhc2VdIik7CisgICAgc2hvdWxkQmUoJ2RiLnZlcnNp
b24nLCAiNyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0dmVyc2lvbi11cGdy
YWRlbmVlZGVkLWludGVydHdpbmVkLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL3NldHZlcnNpb24tdXBncmFkZW5lZWRlZC1pbnRlcnR3aW5lZC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yZTUyZDQxZTFmZmI4YTEyOTczNWI3MmQxZmUzMTg0MTRiYWUzMWYyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldHZlcnNp
b24tdXBncmFkZW5lZWRlZC1pbnRlcnR3aW5lZC5qcwpAQCAtMCwwICsxLDE3NSBAQAoraWYgKHRo
aXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpz
Jyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgYmxhaCBibGFoLiIpOworCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIGRibmFtZSA9IHNl
bGYubG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKDEgKyBzZWxmLmxvY2F0aW9uLnBhdGhuYW1l
Lmxhc3RJbmRleE9mKCIvIikpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5kZWxldGVEYXRhYmFzZShkYm5hbWUpIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJT
dHJpbmcocmVxdWVzdCkiLCAiW29iamVjdCBJREJPcGVuREJSZXF1ZXN0XSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZGVsZXRlU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlU3VjY2VzcyhldnQpIHsK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkNhbGwgb3BlbiB3aXRoIG5vIHZlcnNpb24gcGFy
YW1ldGVyOiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihkYm5h
bWUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9udXBncmFk
ZW5lZWRlZCA9IHVuZXhwZWN0ZWRVcGdyYWRlTmVlZGVkQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7Cisg
ICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNp
b24iLCAiIik7CisgICAgZXZhbEFuZExvZygncmVxdWVzdCA9IGRiLnNldFZlcnNpb24oInNvbWUg
dmVyc2lvbiIpJyk7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb247CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworfQorCitmdW5jdGlvbiBpblNl
dFZlcnNpb24oZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygiaW5TZXRWZXJzaW9uKCk6Iik7CisgICAgdHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0
OworICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uRG9uZTsKKyAgICB0cmFucy5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgZGIgPSB0cmFucy5kYjsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAic29tZSB2ZXJzaW9uIik7CisgICAg
Ly8gRklYTUU6IEFsc28gY2FsbCBvcGVuIHdpdGggdmVyc2lvbiBmcm9tIGhlcmUuCit9CisKK2Z1
bmN0aW9uIHNldFZlcnNpb25Eb25lKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoInNldFZlcnNpb25Eb25lKCk6Iik7CisgICAgZGIgPSBldmVudC50
YXJnZXQuZGI7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgInNvbWUg
dmVyc2lvbiIpOworICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIGV2YWxBbmRMb2coInJl
cXVlc3Qub25zdWNjZXNzID0gc2Vjb25kT3BlbiIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gdW5l
eHBlY3RlZFVwZ3JhZGVOZWVkZWRDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2Vjb25kT3Blbihl
dnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJzZWNv
bmRPcGVuKCk6Iik7CisgICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJTdHJpbmcoZGIpIiwgIltvYmplY3QgSURCRGF0
YWJhc2VdIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgInNvbWUg
dmVyc2lvbiIpOworICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKKyAgICAvLyBGSVhNRTog
QWxzbyBjYWxsIGl0IHdpdGggMCwgLTEsIGFuZCAtNC4KKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAyKSIpOworICAgIHJlcXVlc3Qub251cGdyYWRlbmVl
ZGVkID0gZmlyc3RVcGdyYWRlTmVlZGVkCisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tl
ZENhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZmlyc3RPcGVuV2l0aFZlcnNpb247
Cit9CisKK2Z1bmN0aW9uIGZpcnN0VXBncmFkZU5lZWRlZChldnQpCit7CisgICAgZXZlbnQgPSBl
dnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJmaXJzdFVwZ3JhZGVOZWVkZWQoKToiKTsK
KyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoIlN0cmluZyhkYikiLCAiW29iamVjdCBJREJEYXRhYmFzZV0iKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIlN0cmluZyhyZXF1ZXN0LnRyYW5zYWN0aW9uKSIsICJb
b2JqZWN0IElEQlRyYW5zYWN0aW9uXSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQub2xkVmVyc2lvbiIsICJzb21lIHZlcnNpb24iKTsKKyAgICBzaG91bGRCZSgiZXZlbnQubmV3
VmVyc2lvbiIsICIyIik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdC50cmFuc2FjdGlvbi5vbmNv
bXBsZXRlID0gdHJhbnNhY3Rpb25Db21wbGV0ZWQiKTsKKyAgICByZXF1ZXN0LnRyYW5zYWN0aW9u
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKK30KKwordmFyIGRpZFRyYW5zYWN0
aW9uQ29tcGxldGUgPSBmYWxzZTsKK2Z1bmN0aW9uIHRyYW5zYWN0aW9uQ29tcGxldGVkKGV2dCkK
K3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRyYW5zYWN0
aW9uQ29tcGxldGVkKCk6Iik7CisgICAgZXZhbEFuZExvZygiZGlkVHJhbnNhY3Rpb25Db21wbGV0
ZSA9IHRydWUiKTsKK30KKworZnVuY3Rpb24gZmlyc3RPcGVuV2l0aFZlcnNpb24oZXZ0KQorewor
ICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiZmlyc3RPcGVuV2l0
aFZlcnNpb24oKToiKTsKKyAgICBzaG91bGRCZVRydWUoImRpZFRyYW5zYWN0aW9uQ29tcGxldGUi
KTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIlN0cmluZyhkYikiLCAiW29iamVjdCBJREJEYXRhYmFzZV0iKTsK
KyAgICBzaG91bGRCZU51bGwoInJlcXVlc3QudHJhbnNhY3Rpb24iKTsKKyAgICBzaG91bGRCZSgi
ZGIudmVyc2lvbiIsICIyIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJTdHJpbmcocmVx
dWVzdCkiLCAiW29iamVjdCBJREJPcGVuREJSZXF1ZXN0XSIpOworICAgIGV2YWxBbmRMb2coJ3Jl
cXVlc3QgPSBkYi5zZXRWZXJzaW9uKCJzdHJpbmcgdmVyc2lvbiAyIiknKTsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoIlN0cmluZyhyZXF1ZXN0KSIsICJbb2JqZWN0IElEQlZlcnNpb25DaGFu
Z2VSZXF1ZXN0XSIpOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRD
YWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJh
Y2s7CisgICAgZXZhbEFuZExvZygicmVxdWVzdC5vbmVycm9yID0gc2V0VmVyc2lvbk5vdEFsbG93
ZWQiKTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbk5vdEFsbG93ZWQoZXZ0KQoreworICAgIGV2
ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygic2V0VmVyc2lvbk5vdEFsbG93
ZWQoKToiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnR5cGUiLCAiZXJyb3Ii
KTsKKyAgICBkZWJ1ZygicmVxdWVzdC53ZWJraXRFcnJvck1lc3NhZ2UgPSAiICsgcmVxdWVzdC53
ZWJraXRFcnJvck1lc3NhZ2UpOworICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKKyAgICBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAxKSIpOworICAgIGV2
YWxBbmRMb2coInJlcXVlc3Qub25lcnJvciA9IGVycm9yV2hlblRyeWluZ0xvd1ZlcnNpb24iKTsK
KyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworfQorCitmdW5j
dGlvbiBlcnJvcldoZW5UcnlpbmdMb3dWZXJzaW9uKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImVycm9yV2hlblRyeWluZ0xvd1ZlcnNpb24oKToi
KTsKKyAgICBkZWJ1ZygicmVxdWVzdC53ZWJraXRFcnJvck1lc3NhZ2UgPSAiICsgcmVxdWVzdC53
ZWJraXRFcnJvck1lc3NhZ2UpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIu
b3BlbihkYm5hbWUsIDQpIik7CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxv
Y2tlZENhbGxiYWNrOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgIGV2YWxBbmRMb2coInJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gc2Vjb25kVXBn
cmFkZU5lZWRlZCIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3Qub25zdWNjZXNzID0gdGhpcmRP
cGVuU3VjY2VzcyIpOworfQorCit2YXIgZ290U2Vjb25kVXBncmFkZU5lZWRlZCA9IGZhbHNlOwor
ZnVuY3Rpb24gc2Vjb25kVXBncmFkZU5lZWRlZChldnQpCit7CisgICAgZXZlbnQgPSBldnQ7Cisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJzZWNvbmRVcGdyYWRlTmVlZGVkKCk6Iik7CisgICAg
ZXZhbEFuZExvZygiZ290U2Vjb25kVXBncmFkZU5lZWRlZCA9IHRydWUiKTsKKyAgICBzaG91bGRC
ZSgiZXZlbnQub2xkVmVyc2lvbiIsICIyIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNp
b24iLCAiNCIpOworfQorCitmdW5jdGlvbiB0aGlyZE9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBl
dmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRoaXJkT3BlblN1Y2Nlc3Mo
KToiKTsKKyAgICBzaG91bGRCZVRydWUoImdvdFNlY29uZFVwZ3JhZGVOZWVkZWQiKTsKKyAgICBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZSgiZGIu
dmVyc2lvbiIsICI0Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154824</attachid>
            <date>2012-07-26 20:44:34 -0700</date>
            <delta_ts>2012-07-26 20:53:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89505-20120726204422.patch</filename>
            <type>text/plain</type>
            <size>146714</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE1Y2MzNDkxMjEyYTJi
ZWMyODUwM2FlMTI4ZWYyMWZiYmViNDYxZC4uMDU2YTRiMDc4NWVhNDBjZWZhMjg2NTM5MGE3ODAy
M2QxY2E3NzE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxMi0wNy0yNiAgRGF2
aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBp
bXBsZW1lbnQgdXBncmFkZW5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODk1MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBh
cyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlv
bnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogc3RvcmFnZS9pbmRleGVkZGIvaW50
dmVyc2lvbi1hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQuaHRtbAorICAgICAgICAgICAg
ICAgc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hbmQtc2V0dmVyc2lvbi5odG1sCisgICAg
ICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWJsb2NrZWQuaHRtbAorICAg
ICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9zZS1iZXR3ZWVuLWV2
ZW50cy5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNs
b3NlLWluLW9uY29tcGxldGUuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIv
aW50dmVyc2lvbi1kZWxldGUtaW4tdXBncmFkZW5lZWRlZC5odG1sCisgICAgICAgICAgICAgICBz
dG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWRvbnQtZnJlZXplLW9uLXJlZnJlc2guaHRtbAor
ICAgICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0LXBhcmFtZXRl
ci5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9wZW4t
d2l0aC12ZXJzaW9uLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tp
bmdTdG9yZS5oOgorICAgICAgICAoSURCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkNhbGxiYWNrczo6b25CbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNhbGxiYWNrczo6
b25VcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6c2V0VmVyc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6b25WZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnJlZ2lzdGVyRnJvbnRlbmRD
YWxsYmFja3MpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6Cisg
ICAgICAgIChJREJEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQ
ZW5kaW5nT3BlbkNhbGwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRp
bmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OnZlcnNpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5X
aXRoVmVyc2lvbkNhbGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkludGVybmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFkYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW50VmVyc2lvbkludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0
aW9uRmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
dHJhbnNhY3Rpb25GaW5pc2hlZEFuZEV2ZW50c0ZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5nQ2FsbHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25u
ZWN0aW9uV2l0aFZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrczo6b25WZXJzaW9uQ2hhbmdlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25DaGFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsLmg6CisgICAgICAgIChJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRmFjdG9yeTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5Lmg6CisgICAgICAgIChJREJGYWN0b3J5KToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaDoKKyAgICAgICAgKElEQkZhY3RvcnlCYWNrZW5k
SW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2UuaDoKKyAgICAgICAgKElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnB1dFZhckludCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldFVwTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdT
dG9yZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpn
ZXRJREJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZURhdGFiYXNlKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgIChJREJMZXZlbERCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJMZXZlbERCQ29kaW5nLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
TWV0YWRhdGEuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9w
ZW5EQlJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0
OjpJREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6
On5JREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6
OmludGVyZmFjZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6b25C
bG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFkZU5l
ZWRlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGwuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCT3BlbkRCUmVx
dWVzdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5pZGw6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
Q2FsbGJhY2tzLmguCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1
ZXN0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmNsZWFy
VHJhbnNhY3Rpb25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlJlcXVlc3Q6OmVucXVldWVFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25CbG9ja2Vk
KToKKyAgICAgICAgKElEQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6
aXNPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklEQlRy
YW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzZXRBY3RpdmUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpc3BhdGNoRXZlbnQpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKElEQlRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNvbW1pdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVXBncmFkZU5lZWRlZEV2ZW50Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVXBncmFkZU5lZWRlZEV2ZW50OjpJREJVcGdy
YWRlTmVlZGVkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVXBncmFkZU5lZWRlZEV2ZW50
Ojp+SURCVXBncmFkZU5lZWRlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlVwZ3JhZGVO
ZWVkZWRFdmVudDo6b2xkVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJVcGdyYWRlTmVl
ZGVkRXZlbnQ6Om5ld1ZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCVXBncmFkZU5lZWRl
ZEV2ZW50OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJV
cGdyYWRlTmVlZGVkRXZlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmguCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKElEQlVwZ3JhZGVOZWVkZWRFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3MuaC4KKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmluOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdl
dEZhY3RvcnkuaW46CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA3LTI2ICBOYXlhbiBLdW1hciBLICA8
bmF5YW5ra0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgW1dlYkdMXSBJbml0aWFsIHNpemUgb2Yg
Y2FudmFzIGNhbiBiZSBsYXJnZXIgdGhhbiBNQVhfVklFV1BPUlRfRElNUy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggMWQ3MDQ3NDBjN2ZhZGQ4NjE5OThkYWU4ODUzOGU2MmE3NDE1MTZl
ZC4uOGY5N2NmNDFlODRkMWQxZDI1MzgwYTg5N2U0MDJmM2FmYTIwMjk5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxMi0wNy0yNiAgRGF2aWQgR3JvZ2Fu
ICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBpbXBsZW1lbnQg
dXBncmFkZW5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODk1MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2Fj
aCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cg
KE9PUFMhKS4KKworICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5OjpvbkJsb2NrZWQpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJhY2tzUHJveHk6Om9uVXBncmFkZU5lZWRlZCk6
CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5Lmg6CisgICAgICAgIChJREJDYWxsYmFj
a3NQcm94eSk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OnNldFZlcnNpb24pOgorICAg
ICAgICAqIHNyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6b25WZXJzaW9uQ2hhbmdlKToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaDoKKyAg
ICAgICAgKElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAqIHNyYy9JREJGYWN0
b3J5QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCRmFjdG9yeUJhY2tlbmRQ
cm94eTo6b3Blbik6CisgICAgICAgICogc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaDoKKyAg
ICAgICAgKElEQkZhY3RvcnlCYWNrZW5kUHJveHkpOgorICAgICAgICAqIHNyYy9XZWJJREJDYWxs
YmFja3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzSW1wbDo6V2Vi
SURCQ2FsbGJhY2tzSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNhbGxiYWNrc0ltcGw6
Om9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNhbGxiYWNrc0ltcGw6Om9uQmxv
Y2tlZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDYWxsYmFj
a3NJbXBsOjpvblVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAqIHNyYy9XZWJJREJDYWxsYmFja3NJ
bXBsLmg6CisgICAgICAgIChXZWJJREJDYWxsYmFja3NJbXBsKToKKyAgICAgICAgKiBzcmMvV2Vi
SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25DaGFuZ2UpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmg6CisgICAgICAgIChX
ZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJJREJGYWN0b3J5
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkZhY3RvcnlJbXBsOjpvcGVuKToKKyAg
ICAgICAgKiBzcmMvV2ViSURCRmFjdG9yeUltcGwuaDoKKyAgICAgICAgKFdlYklEQkZhY3RvcnlJ
bXBsKToKKyAgICAgICAgKiB0ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmFpbGluZ0JhY2tpbmdTdG9yZTo6Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9JREJGYWtlQmFj
a2luZ1N0b3JlLmg6CisKIDIwMTItMDctMjYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjM3OTku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5n
U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9y
ZS5oCmluZGV4IDc4YTlmNjY3YWRkMTMwZTYzZTNjMDc0NmQ0YTcwM2I0ODk1NDZiZDcuLjUyNzkw
MzQyZGQ3NDQ4MDllY2YzNDMwMTliMzliYzFiMWViMzMxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC00Nyw4ICs0Nyw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJCYWNraW5nU3RvcmUoKSB7fTsKIAogICAgIHZp
cnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzKSA9
IDA7Ci0gICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5n
JiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCkgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5n
JiBmb3VuZFN0cmluZ1ZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVyc2lvbiwgaW50NjRfdCYg
Zm91bmRJZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRh
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdWZXJzaW9uLCBjb25zdCBp
bnQ2NF90IGludFZlcnNpb24sIGludDY0X3QmIHJvd0lkKSA9IDA7CisgICAgdmlydHVhbCBib29s
IHVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbihpbnQ2NF90IHJvd0lkLCBpbnQ2NF90IGludFZl
cnNpb24pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRl
SURCRGF0YWJhc2VNZXRhRGF0YShpbnQ2NF90IHJvd0lkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24p
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1l
KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJh
Y2tzLmgKaW5kZXggODUzZmZjNzJkMjYwMzkxZmNjNDM2NjRkNTczZmM1ZGFlMzAyZGMwZi4uMmE2
YWZlZjM4MzE1YmU2NWIyNjYyOGU1Njg4NmRiYTMyYWM1MzY0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKQEAgLTU5LDcgKzU5LDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktleT4sIGNvbnN0IElEQktleVBhdGgmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElE
QktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIHByaW1hcnlLZXlz
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
b25CbG9ja2VkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBv
bkJsb2NrZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25VcGdyYWRlTmVlZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCA1YzNkZmNiNmI1NDJjMWJlMDZiMjQxYjQ3
Y2U5YmFjYjliNjYyOWI0Li45Y2FhNmIzODMwMDcwMDUyOGM1MGVmN2U2MTZiYjQ1NWNlNjFiZWIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
Y3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNs
dWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRl
ICJJREJVcGdyYWRlTmVlZGVkRXZlbnQuaCIKICNpbmNsdWRlICJJREJWZXJzaW9uQ2hhbmdlRXZl
bnQuaCIKICNpbmNsdWRlICJJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKQEAgLTIwOCw2ICsyMDksNyBAQCBQYXNzUmVmUHRyPElE
QlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBJREJEYXRhYmFzZTo6c2V0VmVyc2lvbihTY3JpcHRFeGVj
dXRpb25Db250ZQogICAgIH0KIAogICAgIFJlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4g
cmVxdWVzdCA9IElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55
OjpjcmVhdGUodGhpcyksIHZlcnNpb24pOworICAgIEFTU0VSVChtX2JhY2tlbmQpOwogICAgIG1f
YmFja2VuZC0+c2V0VmVyc2lvbih2ZXJzaW9uLCByZXF1ZXN0LCBtX2RhdGFiYXNlQ2FsbGJhY2tz
LCBlYyk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CkBAIC0zMDEsNiArMzAzLDE3IEBAIHZvaWQg
SURCRGF0YWJhc2U6OmNsb3NlQ29ubmVjdGlvbigpCiAgICAgfQogfQogCit2b2lkIElEQkRhdGFi
YXNlOjpvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24sIGludDY0X3QgcmVx
dWVzdGVkVmVyc2lvbikKK3sKKyAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9jbG9zZVBlbmRp
bmcpCisgICAgICAgIHJldHVybjsKKworICAgIGVucXVldWVFdmVudChJREJVcGdyYWRlTmVlZGVk
RXZlbnQ6OmNyZWF0ZShleGlzdGluZ1ZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24sIGV2ZW50TmFt
ZXMoKS52ZXJzaW9uY2hhbmdlRXZlbnQpKTsKK30KKwogdm9pZCBJREJEYXRhYmFzZTo6b25WZXJz
aW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIHsKICAgICBpZiAobV9jb250ZXh0U3Rv
cHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQpAQCAtMzE0LDYgKzMyNyw3IEBAIHZv
aWQgSURCRGF0YWJhc2U6Om9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHZlcnNpb24pCiAK
IHZvaWQgSURCRGF0YWJhc2U6OnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKQogeworICAgIEFT
U0VSVChtX2JhY2tlbmQpOwogICAgIG1fYmFja2VuZC0+cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNr
cyhtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggNjRjYmIzMjZhNTg4M2RjZjM5NDczY2FhMTA5
NzI5MDVmM2ZlNjc1ZS4uZDY5YzFiYjZlZjgwZDRiZDIwOGFiNTg2Nzk3ZmNkN2UxNGZhZTIyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBA
IC03OCw2ICs3OCw3IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKHZlcnNpb25jaGFuZ2UpOwogCiAgICAgLy8gSURCRGF0YWJhc2VDYWxsYmFja3MKKyAgICB2
aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGludDY0X3QgZXhpc3RpbmdWZXJzaW9uLCBpbnQ2
NF90IHJlcXVlc3RlZFZlcnNpb24pOwogICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2Uo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0ZWRWZXJzaW9uKTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVj
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCBlNDUxNDdkNWMwYjBiNjJiMzNkM2YzY2NkNjNh
NjE3ZmI1YjhiOThlLi42MzA2ZDY5MjRkNTNiZGNhYzE1YTk2NDYzMWUzZGFlODBiNDgzN2NlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtNDcsMTIgKzQ3LDMzIEBAIHB1YmxpYzoKICAgICB9
CiAgICAgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcygpIHsgcmV0dXJuIG1fY2Fs
bGJhY2tzOyB9CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgUGVuZGluZ09wZW5DYWxsKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgICAgIDogbV9jYWxsYmFja3Mo
Y2FsbGJhY2tzKQogICAgIHsKICAgICB9CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPElEQkNhbGxi
YWNrcz4gbV9jYWxsYmFja3M7Cit9OworCitjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQ
ZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlbmRpbmdPcGVu
V2l0aFZlcnNpb25DYWxsPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGw+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKGNhbGxiYWNrcywgdmVyc2lvbikpOworICAg
IH0KKyAgICBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKCkgeyByZXR1cm4gbV9j
YWxsYmFja3M7IH0KKyAgICBpbnQ2NF90IHZlcnNpb24oKSB7IHJldHVybiBtX3ZlcnNpb247IH0K
KworcHJpdmF0ZToKKyAgICBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbChQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCisgICAgICAgIDogbV9jYWxs
YmFja3MoY2FsbGJhY2tzKQorICAgICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQorICAgIHsKKyAg
ICB9CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CisgICAgaW50NjRfdCBt
X3ZlcnNpb247CiB9OwogCiBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nRGVs
ZXRlQ2FsbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlbmRpbmdEZWxldGVDYWxsPiB7CkBAIC0xMDYs
NiArMTI3LDcgQEAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1w
bChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG8KICAgICAsIG1faWQoSW52YWxpZElk
KQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3ZlcnNpb24oIiIpCisgICAgLCBtX2ludFZl
cnNpb24oSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKQogICAgICwgbV9pZGVudGlm
aWVyKHVuaXF1ZUlkZW50aWZpZXIpCiAgICAgLCBtX2ZhY3RvcnkoZmFjdG9yeSkKICAgICAsIG1f
dHJhbnNhY3Rpb25Db29yZGluYXRvcihjb29yZGluYXRvcikKQEAgLTExNiwxMyArMTM4LDEzIEBA
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3Ry
aW5nJiBuYW1lLCBJREJCYWNraW5nU3RvCiAKIGJvb2wgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
b3BlbkludGVybmFsKCkKIHsKLSAgICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0
SURCRGF0YWJhc2VNZXRhRGF0YShtX25hbWUsIG1fdmVyc2lvbiwgbV9pZCk7Ci0gICAgQVNTRVJU
KHN1Y2Nlc3MgPT0gKG1faWQgIT0gSW52YWxpZElkKSk7CisgICAgYm9vbCBzdWNjZXNzID0gbV9i
YWNraW5nU3RvcmUtPmdldElEQkRhdGFiYXNlTWV0YURhdGEobV9uYW1lLCBtX3ZlcnNpb24sIG1f
aW50VmVyc2lvbiwgbV9pZCk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShzdWNjZXNzID09ICht
X2lkICE9IEludmFsaWRJZCksICJzdWNjZXNzID0gJXMsIG1faWQgPSAlIlBSSWQ2NCwgc3VjY2Vz
cyA/ICJ0cnVlIiA6ICJmYWxzZSIsIG1faWQpOwogICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAg
IGxvYWRPYmplY3RTdG9yZXMoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIHJl
dHVybiBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShtX25hbWUsIG1f
dmVyc2lvbiwgbV9pZCk7CisgICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlLT5jcmVhdGVJREJEYXRh
YmFzZU1ldGFEYXRhKG1fbmFtZSwgbV92ZXJzaW9uLCBtX2ludFZlcnNpb24sIG1faWQpOwogfQog
CiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp+SURCRGF0YWJhc2VCYWNrZW5kSW1wbCgpCkBAIC0x
MzYsNyArMTU4LDcgQEAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmJhY2tpbmdTdG9yZSgpIGNvbnN0CiAKIElEQkRhdGFiYXNlTWV0YWRhdGEgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6bWV0YWRhdGEoKSBjb25zdAogewotICAgIElEQkRhdGFiYXNl
TWV0YWRhdGEgbWV0YWRhdGEobV9uYW1lLCBtX3ZlcnNpb24sIElEQkRhdGFiYXNlTWV0YWRhdGE6
Ok5vSW50VmVyc2lvbik7CisgICAgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YShtX25hbWUs
IG1fdmVyc2lvbiwgbV9pbnRWZXJzaW9uKTsKICAgICBmb3IgKE9iamVjdFN0b3JlTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG1fb2JqZWN0U3RvcmVzLmJlZ2luKCk7IGl0ICE9IG1fb2JqZWN0U3Rv
cmVzLmVuZCgpOyArK2l0KQogICAgICAgICBtZXRhZGF0YS5vYmplY3RTdG9yZXMuc2V0KGl0LT5m
aXJzdCwgaXQtPnNlY29uZC0+bWV0YWRhdGEoKSk7CiAgICAgcmV0dXJuIG1ldGFkYXRhOwpAQCAt
MjE0LDYgKzIzNiw4IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbihj
b25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsCiAgICAgICAgIGNhbGxiYWNr
cy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OklEQl9BQk9SVF9FUlIsICJDb25uZWN0aW9uIHdhcyBjbG9zZWQgYmVmb3JlIHNldCB2ZXJzaW9u
IHRyYW5zYWN0aW9uIHdhcyBjcmVhdGVkIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAg
IGlmIChtX2ludFZlcnNpb24gIT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKQor
ICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgU3RyaW5nOjpmb3JtYXQoIllvdSBjYW4ndCB1
c2UgdGhlIHNldFZlcnNpb24gZnVuY3Rpb24gaWYgeW91J3ZlIGFscmVhZHkgc2V0IHRoZSB2ZXJz
aW9uIHRocm91Z2ggYW4gb3BlbiBjYWxsLiAgVGhlIGN1cnJlbnQgaW50ZWdlciB2ZXJzaW9uIGlz
ICVsZCIsIG1faW50VmVyc2lvbikpKTsKICAgICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0Ojpj
b25zdF9pdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4oKTsgaXQgIT0g
bV9kYXRhYmFzZUNhbGxiYWNrc1NldC5lbmQoKTsgKytpdCkgewogICAgICAgICBpZiAoKml0ICE9
IGRhdGFiYXNlQ2FsbGJhY2tzKQogICAgICAgICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZSh2
ZXJzaW9uKTsKQEAgLTI1OSw2ICsyODMsMTkgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpzZXRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWYKICAg
ICBjYWxsYmFja3MtPm9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4odHJhbnNhY3Rpb24pKTsKIH0KIAordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpzZXRJbnRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UsIGludDY0X3QgdmVyc2lvbiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKQoreworICAgIGludDY0X3QgZGF0YWJhc2VJ
ZCA9IGRhdGFiYXNlLT5pZCgpOworICAgIGludDY0X3Qgb2xkVmVyc2lvbiA9IGRhdGFiYXNlLT5t
X2ludFZlcnNpb247CisgICAgZGF0YWJhc2UtPm1faW50VmVyc2lvbiA9IHZlcnNpb247CisgICAg
aWYgKCFkYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPnVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lv
bihkYXRhYmFzZUlkLCBkYXRhYmFzZS0+bV9pbnRWZXJzaW9uKSkgeworICAgICAgICBjYWxsYmFj
a3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpVTktOT1dOX0VSUiwgIkVycm9yIHdyaXRpbmcgZGF0YSB0byBzdGFibGUgc3RvcmFnZS4iKSk7
CisgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGNhbGxiYWNrcy0+b25VcGdyYWRlTmVlZGVkKG9sZFZlcnNpb24sIHRyYW5zYWN0aW9uLCBk
YXRhYmFzZSk7Cit9CisKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25T
dGFydGVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gcHJwVHJhbnNhY3Rp
b24pCiB7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9u
ID0gcHJwVHJhbnNhY3Rpb247CkBAIC0yNzYsNiArMzEzLDEzIEBAIHZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZF
UlNJT05fQ0hBTkdFKSB7CiAgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5nZXQoKSA9PSBtX3J1
bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgICAgICBtX3J1bm5pbmdW
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uY2xlYXIoKTsKKyAgICB9Cit9CisKK3ZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZEFuZEV2ZW50c0ZpcmVkKFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gcHJwVHJhbnNhY3Rpb24pCit7CisgICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gcHJwVHJhbnNh
Y3Rpb247CisgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZF
UlNJT05fQ0hBTkdFKSB7CiAgICAgICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKICAgICB9CiB9
CkBAIC0zMjUsNiArMzY5LDEzIEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vz
c1BlbmRpbmdDYWxscygpCiAgICAgaWYgKG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
biB8fCAhbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmlzRW1wdHkoKSB8fCAhbV9wZW5kaW5nRGVs
ZXRlQ2FsbHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBEZXF1ZTxSZWZQdHI8
UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+ID4gcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxz
OworICAgIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLnN3YXAocGVuZGluZ09wZW5XaXRo
VmVyc2lvbkNhbGxzKTsKKyAgICB3aGlsZSAoIXBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5p
c0VtcHR5KCkpIHsKKyAgICAgIFJlZlB0cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4gcGVu
ZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwgPSBwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMudGFr
ZUZpcnN0KCk7CisgICAgICBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKHBlbmRpbmdPcGVuV2l0
aFZlcnNpb25DYWxsLT5jYWxsYmFja3MoKSwgcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPnZl
cnNpb24oKSk7CisgICAgfQorCiAgICAgLy8gR2l2ZW4gdGhlIGNoZWNrIGFib3ZlLCBpdCBhcHBl
YXJzIHRoYXQgY2FsbHMgY2Fubm90IGJlIHJlcXVldWVkIGJ5CiAgICAgLy8gb3BlbkNvbm5lY3Rp
b24sIGJ1dCB1c2UgYSBkaWZmZXJlbnQgcXVldWUgZm9yIGl0ZXJhdGlvbiB0byBiZSBzYWZlLgog
ICAgIERlcXVlPFJlZlB0cjxQZW5kaW5nT3BlbkNhbGw+ID4gcGVuZGluZ09wZW5DYWxsczsKQEAg
LTM3Myw2ICs0MjQsNzIgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVj
dGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgIH0KIH0KIAordm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24o
aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2Fs
bGJhY2tzKQoreworICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxi
YWNrczsKKyAgICBBU1NFUlQoY2FsbGJhY2tzKTsKKyAgICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tz
U2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4oKTsg
aXQgIT0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5lbmQoKTsgKytpdCkgeworICAgICAgICAvLyBU
aGUgZnJvbnRlbmQgdGFrZXMgY2FyZSBvZiB0aGUgZm9sbG93aW5nIGNsYXVzZSwgdGhlIGJhY2tl
bmQganVzdAorICAgICAgICAvLyBmaXJlcyB2ZXJzaW9uIGNoYW5nZSBhdCBhbGwgdGhlIGNvbm5l
Y3Rpb25zLCB0aGUgZnJvbnRlbmQgd2lsbCBub3QKKyAgICAgICAgLy8gZGVsaXZlciB0byBjb25u
ZWN0aW9ucyB3aXRoIGNsb3NlUGVuZGluZyBzZXQuCisgICAgICAgIC8vICJUaGUgZXZlbnQgbXVz
dCBub3QgYmUgZmlyZWQgb24gb2JqZWN0cyB3aGljaCBoYXMgdGhlIGNsb3NlUGVuZGluZworICAg
ICAgICAvLyBmbGFnIHNldC4iCisgICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UobV9pbnRW
ZXJzaW9uLCByZXF1ZXN0ZWRWZXJzaW9uKTsKKyAgICB9CisgICAgLy8gVGhlIHNwZWMgZGljdGF0
ZXMgd2Ugd2FpdCB1bnRpbCBhbGwgdGhlIHZlcnNpb24gY2hhbmdlIGV2ZW50cyBhcmUKKyAgICAv
LyBkZWxpdmVyZWQgYW5kIHRoZW4gY2hlY2sgbV9kYXRhYmFzZUNhbGxiYWNrcy5lbXB0eSgpIGJl
Zm9yZSBwcm9jZWVkaW5nCisgICAgLy8gb3IgZmlyaW5nIGEgYmxvY2tlZCBldmVudCwgYnV0IGlu
c3RlYWQgd2Ugc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCBob3cKKyAgICAvLyB0aGUgb2xkIHNl
dFZlcnNpb24gKGluY29ycmVjdGx5KSBkaWQgaXQ6CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMwCisgICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpID4g
MCkKKyAgICAgICAgY2FsbGJhY2tzLT5vbkJsb2NrZWQobV9pbnRWZXJzaW9uKTsKKyAgICAvLyBG
aWd1cmUgb3V0IGhvdyB0byB0ZXN0IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi4K
KyAgICBpZiAobV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8IGNvbm5lY3Rpb25D
b3VudCgpID4gMCkgeworICAgICAgICAvLyBJdCdzIGFscmVhZHkgcXVldWVkLgorICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVz
ID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb25JbnRl
cmZhY2UgPSB0aGlzLT50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWVzLmdldCgpLCBJREJUcmFu
c2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UsIGVjKTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9t
KHRyYW5zYWN0aW9uSW50ZXJmYWNlLmdldCgpKTsKKyAgICBBU1NFUlQoIWVjKTsKKworICAgIFJl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSA9IHRoaXM7CisgICAgaWYgKCF0
cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6c2V0SW50VmVyc2lvbkludGVybmFsLCBkYXRhYmFzZSwgcmVxdWVzdGVkVmVy
c2lvbiwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cmVz
ZXRWZXJzaW9uLCBkYXRhYmFzZSwgbV92ZXJzaW9uKSkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgIH0KK30KKwordm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikKK3sKKyAg
ICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CisgICAgaWYg
KCFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5uaW5nVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVuZChQZW5kaW5nT3Blbldp
dGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgdmVyc2lvbikpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmIChtX2lkID09IEludmFsaWRJZCkgeworICAgICAgICBpZiAob3Bl
bkludGVybmFsKCkpCisgICAgICAgICAgICBBU1NFUlQoIW1faW50VmVyc2lvbik7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJv
ci4iKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHZl
cnNpb24gPiBtX2ludFZlcnNpb24pIHsKKyAgICAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9u
Q2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tz
LCB2ZXJzaW9uKSk7CisgICAgICAgIHJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih2ZXJz
aW9uLCBjYWxsYmFja3MpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICh2ZXJzaW9u
IDwgbV9pbnRWZXJzaW9uKSB7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFz
ZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlZFUl9FUlIsIFN0cmluZzo6Zm9y
bWF0KCJUaGUgcmVxdWVzdGVkIHZlcnNpb24gKCVsZCkgaXMgbGVzcyB0aGFuIHRoZSBleGlzdGlu
ZyB2ZXJzaW9uICglbGQpLiIsIHZlcnNpb24sIG1faW50VmVyc2lvbikpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBBU1NFUlQodmVyc2lvbiA9PSBtX2ludFZlcnNpb24pOworICAgICsr
bV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50OworICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKHRoaXMp
OworfQorCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZURhdGFiYXNlKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MpCiB7CiAgICAgaWYgKG1fcnVubmluZ1Zl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCAhbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmlzRW1w
dHkoKSkgewpAQCAtMzkzLDEyICs1MTAsMTQgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpkZWxldGVEYXRhYmFzZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2sKICAg
ICAgICAgY2FsbGJhY2tzLT5vbkJsb2NrZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwogICAgIGlmICghbV9iYWNraW5nU3RvcmUtPmRlbGV0
ZURhdGFiYXNlKG1fbmFtZSkpIHsKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRl
cm5hbCBlcnJvci4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV92ZXJzaW9uID0g
IiI7CiAgICAgbV9pZCA9IEludmFsaWRJZDsKKyAgICBtX2ludFZlcnNpb24gPSBJREJEYXRhYmFz
ZU1ldGFkYXRhOjpOb0ludFZlcnNpb247CiAgICAgbV9vYmplY3RTdG9yZXMuY2xlYXIoKTsKICAg
ICBjYWxsYmFja3MtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgp
KTsKIH0KQEAgLTQxMSwxMiArNTMwLDE0IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzCiAgICAg
aWYgKGNvbm5lY3Rpb25Db3VudCgpID4gMSkKICAgICAgICAgcmV0dXJuOwogCisgICAgVHJhbnNh
Y3Rpb25TZXQgdHJhbnNhY3Rpb25zKG1fdHJhbnNhY3Rpb25zKTsKICAgICBwcm9jZXNzUGVuZGlu
Z0NhbGxzKCk7CiAKLSAgICBpZiAoIWNvbm5lY3Rpb25Db3VudCgpKSB7Ci0gICAgICAgIFRyYW5z
YWN0aW9uU2V0IHRyYW5zYWN0aW9ucyhtX3RyYW5zYWN0aW9ucyk7CisgICAgQVNTRVJUKG1fdHJh
bnNhY3Rpb25zLnNpemUoKSAtIHRyYW5zYWN0aW9ucy5zaXplKCkgPD0gMSk7CisgICAgaWYgKCFj
b25uZWN0aW9uQ291bnQoKSAmJiAhbV9wZW5kaW5nRGVsZXRlQ2FsbHMuc2l6ZSgpICYmIG1fdHJh
bnNhY3Rpb25zLnNpemUoKSA9PSB0cmFuc2FjdGlvbnMuc2l6ZSgpKSB7CiAgICAgICAgIGZvciAo
VHJhbnNhY3Rpb25TZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdHJhbnNhY3Rpb25zLmJlZ2luKCk7
IGl0ICE9IHRyYW5zYWN0aW9ucy5lbmQoKTsgKytpdCkKICAgICAgICAgICAgICgqaXQpLT5hYm9y
dCgpOworCiAgICAgICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5pc0VtcHR5KCkpOwogCiAgICAg
ICAgIG1fYmFja2luZ1N0b3JlLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggODA1ZWI2
MTdmYjMyMTRkMGJiYjI1NzVmMzJiZjg5NWE0NWYxMGQxZC4uNDQxOTE2ZjU4N2FlZjI4ZDViODhm
YjNjYzE5MzhiYjNlMjRjZTE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAtNTcsNiArNTcsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogICAgIHZvaWQgb3BlbkNvbm5lY3Rpb24oUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+KTsKKyAgICB2b2lkIG9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24o
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBpbnQ2NF90IHZlcnNpb24pOwogICAgIHZvaWQgZGVs
ZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKIAogICAgIC8vIElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZQpAQCAtNzEsMTggKzcyLDIyIEBAIHB1YmxpYzoKICAgICBJREJU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yKiB0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpOyB9CiAgICAgdm9pZCB0cmFuc2Fj
dGlvblN0YXJ0ZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPik7CiAgICAg
dm9pZCB0cmFuc2FjdGlvbkZpbmlzaGVkKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbD4pOworICAgIHZvaWQgdHJhbnNhY3Rpb25GaW5pc2hlZEFuZEV2ZW50c0ZpcmVkKFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwogCiBwcml2YXRlOgogICAgIElEQkRh
dGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmUqIGRh
dGFiYXNlLCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiwgSURCRmFjdG9yeUJhY2tlbmRJbXBs
KiwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKTsKIAogICAgIGJvb2wgb3BlbkludGVy
bmFsKCk7CisgICAgdm9pZCBydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50NjRfdCBy
ZXF1ZXN0ZWRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogICAgIHZvaWQgbG9h
ZE9iamVjdFN0b3JlcygpOwogICAgIGludDMyX3QgY29ubmVjdGlvbkNvdW50KCk7CiAgICAgdm9p
ZCBwcm9jZXNzUGVuZGluZ0NhbGxzKCk7CisgICAgc3RhdGljIHZvaWQgcHJvY2Vzc1BlbmRpbmdU
YXNrKHZvaWQqIGRiKTsKIAogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlSW50ZXJu
YWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW1wbD4sIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwogICAgIHN0YXRpYyB2b2lkIGRlbGV0ZU9iamVj
dFN0b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4s
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwogICAgIHN0YXRpYyB2b2lk
IHNldFZlcnNpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwor
ICAgIHN0YXRpYyB2b2lkIHNldEludFZlcnNpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgaW50NjRfdCB2ZXJzaW9u
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPik7CiAKICAgICAvLyBUaGVzZSBhcmUgdXNlZCBhcyBzZXRWZXJzaW9uIHRy
YW5zYWN0aW9uIGFib3J0IHRhc2tzLgogICAgIHN0YXRpYyB2b2lkIHJlbW92ZU9iamVjdFN0b3Jl
RnJvbU1hcChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPik7CkBAIC05
Myw2ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgaW50NjRfdCBtX2lkOwogICAgIFN0cmluZyBtX25h
bWU7CiAgICAgU3RyaW5nIG1fdmVyc2lvbjsKKyAgICBpbnQ2NF90IG1faW50VmVyc2lvbjsKIAog
ICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgLy8gVGhpcyBtaWdodCBub3QgbmVlZCB0byBi
ZSBhIFJlZlB0ciBzaW5jZSB0aGUgZmFjdG9yeSdzIGxpZmV0aW1lIGlzIHRoYXQgb2YgdGhlIHBh
Z2UgZ3JvdXAsIGJ1dCBpdCdzIGJldHRlciB0byBiZSBjb25zZXJ2aXRpdmUgdGhhbiBzb3JyeS4K
QEAgLTExMyw2ICsxMTksOSBAQCBwcml2YXRlOgogICAgIGNsYXNzIFBlbmRpbmdPcGVuQ2FsbDsK
ICAgICBEZXF1ZTxSZWZQdHI8UGVuZGluZ09wZW5DYWxsPiA+IG1fcGVuZGluZ09wZW5DYWxsczsK
IAorICAgIGNsYXNzIFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOworICAgIERlcXVlPFJlZlB0
cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4gPiBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25D
YWxsczsKKwogICAgIGNsYXNzIFBlbmRpbmdEZWxldGVDYWxsOwogICAgIERlcXVlPFJlZlB0cjxQ
ZW5kaW5nRGVsZXRlQ2FsbD4gPiBtX3BlbmRpbmdEZWxldGVDYWxsczsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3MuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmgK
aW5kZXggYjNmMjQ0ZjUxNmI2OTg3ZWExMTljYmY3MDE5YjdiNTQzNzVmMTJiZi4uMTZhOWVhNmM1
MDhiMGQ5MmI2MWU0OTk3YzU0MzAxMzJhNmQyYWNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3MuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrcy5oCkBAIC0zOCw2
ICszOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUNhbGxiYWNrcygpIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHZlcnNp
b24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGludDY0X3QgY3VycmVu
dFZlcnNpb24sIGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5j
cHAKaW5kZXggMTk0MTJmY2JlNTBhYjQ0YmY1M2RjMDFlMDNkODg1M2UyOGY3YzVmZi4uZjcxN2Fk
YmQ1NTFkNDQyZWJiOGZkOThkZDhhN2NmZDkwZDY5YmNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGwuY3BwCkBAIC01Miw2ICs1MiwxMiBAQCB2b2lkIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6
b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKICAgICAgICAgbV9kYXRhYmFz
ZS0+b25WZXJzaW9uQ2hhbmdlKHZlcnNpb24pOwogfQogCit2b2lkIElEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbDo6b25WZXJzaW9uQ2hhbmdlKGludDY0X3QgY3VycmVudFZlcnNpb24sIGludDY0X3Qg
cmVxdWVzdGVkVmVyc2lvbikKK3sKKyAgICBpZiAobV9kYXRhYmFzZSkKKyAgICAgICAgbV9kYXRh
YmFzZS0+b25WZXJzaW9uQ2hhbmdlKGN1cnJlbnRWZXJzaW9uLCByZXF1ZXN0ZWRWZXJzaW9uKTsK
K30KKwogdm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OnVucmVnaXN0ZXJEYXRhYmFzZShJ
REJEYXRhYmFzZSogZGF0YWJhc2UpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChkYXRhYmFzZSwgZGF0
YWJhc2UgPT0gbV9kYXRhYmFzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCmluZGV4IGU4YjFmOTli
ODM4YWY3YjkzN2Q5NGI3YWY4ZjdmN2RmYjgyYmU3ZmIuLjA4MGY1YmE4N2JmZDY4MjVjNTU1ZmM4
ZDVkMGY3Zjc2Njc0M2E0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCkBAIC00Miw2ICs0Miw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsK
KyAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGludDY0X3QgY3VycmVudFZlcnNpb24s
IGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRGF0YWJhc2Uo
SURCRGF0YWJhc2UqKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXggY2Y1MmNjMWZlMmIxMzU1YjZjNTRlZGNlMjY1
ZTBmM2U4YzNhNWU5MS4uYzgzYmEzNjQ1ZGJmNmQzOTgzYzljY2E3ZDdiMzdhYjE1MDc3MmIyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5o
IgogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCi0jaW5jbHVk
ZSAiSURCUmVxdWVzdC5oIgorI2luY2x1ZGUgIklEQk9wZW5EQlJlcXVlc3QuaCIKICNpbmNsdWRl
ICJJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJQYWdlR3JvdXAuaCIKQEAgLTEwNSw3ICsxMDUsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IElEQkZhY3Rvcnk6OmdldERhdGFiYXNlTmFtZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dAogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkZh
Y3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4g
SURCRmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
aWYgKG5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgZWMgPSBOQVRJVkVfVFlQRV9FUlI7CkBAIC0x
MTQsMTEgKzExNCwxNiBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW4o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgUwogICAgIGlmICghaXNDb250
ZXh0VmFsaWQoY29udGV4dCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPElEQlJl
cXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVh
dGUodGhpcyksIDApOwotICAgIG1fYmFja2VuZC0+b3BlbihuYW1lLCByZXF1ZXN0LCBjb250ZXh0
LT5zZWN1cml0eU9yaWdpbigpLCBjb250ZXh0LCBnZXRJbmRleGVkREJEYXRhYmFzZVBhdGgoY29u
dGV4dCkpOworICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCT3BlbkRC
UmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCB2ZXJzaW9uKTsK
KyAgICBtX2JhY2tlbmQtPm9wZW4obmFtZSwgdmVyc2lvbiwgcmVxdWVzdCwgY29udGV4dC0+c2Vj
dXJpdHlPcmlnaW4oKSwgY29udGV4dCwgZ2V0SW5kZXhlZERCRGF0YWJhc2VQYXRoKGNvbnRleHQp
KTsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAorUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0
PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgcmV0dXJuIG9wZW4oY29u
dGV4dCwgbmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uLCBlYyk7Cit9CisK
IFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IElEQkZhY3Rvcnk6OmRlbGV0ZURh
dGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAppbmRleCA0NjExY2I2
YzRmZTgzOTkwYjQ3MjRhNDNiZjA5YzlhNWE5NWQ4ODhkLi4zNjQ1YmI4MWRjN2VlOTY2OTA1ZGE2
NTJjMDY0ZGE3Mzg2ZjY1M2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeS5oCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJET01TdHJpbmdM
aXN0LmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCIKLSNpbmNsdWRl
ICJJREJSZXF1ZXN0LmgiCisjaW5jbHVkZSAiSURCT3BlbkRCUmVxdWVzdC5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNTgsNyArNTgsOCBAQCBwdWJsaWM6CiAKICAgICBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IGdldERhdGFiYXNlTmFtZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopOwogCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVm
UHRyPElEQk9wZW5EQlJlcXVlc3Q+IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCT3BlbkRC
UmVxdWVzdD4gb3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBpbnQ2NF90IHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlZl
cnNpb25DaGFuZ2VSZXF1ZXN0PiBkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBzaG9ydCBjbXAo
UGFzc1JlZlB0cjxJREJLZXk+IGZpcnN0LCBQYXNzUmVmUHRyPElEQktleT4gc2Vjb25kLCBFeGNl
cHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJGYWN0b3J5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnkuaWRsCmluZGV4IDAzODllYjJhYWU3ZTEyOTk1NGQ5YWNmMDNhNTlmZmJjYzdmYmFhY2Mu
LmJmNzFhMmRkMjVkMWZmOTVlMjY0MzVmNGU0MWYwYzQxYjk3NjcyYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRsCkBAIC0zMCw3ICszMCw3
IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICBdIElEQkZhY3RvcnkgewogICAgICAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1wbGVtZW50ZWRBcz1nZXREYXRhYmFzZU5hbWVz
XSBJREJSZXF1ZXN0IHdlYmtpdEdldERhdGFiYXNlTmFtZXMoKTsKIAotICAgICAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBvcGVuKGluIERPTVN0cmluZyBu
YW1lKQorICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCT3BlbkRC
UmVxdWVzdCBvcGVuKGluIERPTVN0cmluZyBuYW1lLCBpbiBbT3B0aW9uYWxdIHVuc2lnbmVkIGxv
bmcgbG9uZyB2ZXJzaW9uKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlv
bik7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJWZXJzaW9u
Q2hhbmdlUmVxdWVzdCBkZWxldGVEYXRhYmFzZShpbiBET01TdHJpbmcgbmFtZSkKICAgICAgICAg
ICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKaW5k
ZXggZGZiMTQ1N2EzMDZkYWE3YTU2OGMyMWFmNmVmYTM0NTQ2Y2UzZmY0Ni4uMTdhOWM0ZDJlOGRk
MjEyNmI3YTI1MzlmYTIxMGE0NTdlMTcxMGNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRl
ICJJREJMZXZlbERCQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25Db29y
ZGluYXRvci5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCkBAIC0xNDksMzIgKzE1
MCwzMCBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCRmFjdG9yeUJhY2tlbmRJbXBs
OjpvcGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8UwogICAgIHJldHVybiAwOwogfQogCi12b2lk
IElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHBy
cFNlY3VyaXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBk
YXRhRGlyZWN0b3J5KQordm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3Ry
aW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHBycFNlY3VyaXR5T3JpZ2luLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyZWN0b3J5KQogewogICAg
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBwcnBTZWN1cml0eU9yaWdp
bjsKICAgICBjb25zdCBTdHJpbmcgdW5pcXVlSWRlbnRpZmllciA9IGNvbXB1dGVVbmlxdWVJZGVu
dGlmaWVyKG5hbWUsIHNlY3VyaXR5T3JpZ2luLmdldCgpKTsKIAorICAgIFJlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZUJhY2tlbmQ7CiAgICAgSURCRGF0YWJhc2VCYWNrZW5k
TWFwOjppdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmZpbmQodW5pcXVlSWRlbnRp
Zmllcik7Ci0gICAgaWYgKGl0ICE9IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmVuZCgpKSB7Ci0gICAg
ICAgIC8vIElmIGl0J3MgYWxyZWFkeSBiZWVuIG9wZW5lZCwgd2UgaGF2ZSB0byB3YWl0IGZvciBh
bnkgcGVuZGluZwotICAgICAgICAvLyBzZXRWZXJzaW9uIGNhbGxzIHRvIGNvbXBsZXRlLgotICAg
ICAgICBpdC0+c2Vjb25kLT5vcGVuQ29ubmVjdGlvbihjYWxsYmFja3MpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IEV2ZXJ5dGhpbmcgZnJvbSBub3cgb24gc2hvdWxk
IGJlIGRvbmUgb24gYW5vdGhlciB0aHJlYWQuCi0gICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4g
YmFja2luZ1N0b3JlID0gb3BlbkJhY2tpbmdTdG9yZShzZWN1cml0eU9yaWdpbiwgZGF0YURpcmVj
dG9yeSk7Ci0gICAgaWYgKCFiYWNraW5nU3RvcmUpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVy
cm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9X
Tl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlKG5hbWUsIGJhY2tpbmdTdG9yZS5nZXQoKSwgbV90cmFu
c2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpLCB0aGlzLCB1bmlxdWVJZGVudGlmaWVyKTsKLSAgICBp
ZiAoZGF0YWJhc2VCYWNrZW5kKSB7Ci0gICAgICAgIG1fZGF0YWJhc2VCYWNrZW5kTWFwLnNldCh1
bmlxdWVJZGVudGlmaWVyLCBkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpOwotICAgICAgICBkYXRhYmFz
ZUJhY2tlbmQtPm9wZW5Db25uZWN0aW9uKGNhbGxiYWNrcyk7CisgICAgaWYgKGl0ID09IG1fZGF0
YWJhc2VCYWNrZW5kTWFwLmVuZCgpKSB7CisgICAgICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+
IGJhY2tpbmdTdG9yZSA9IG9wZW5CYWNraW5nU3RvcmUoc2VjdXJpdHlPcmlnaW4sIGRhdGFEaXJl
Y3RvcnkpOworICAgICAgICBpZiAoIWJhY2tpbmdTdG9yZSkgeworICAgICAgICAgICAgY2FsbGJh
Y2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6Y3JlYXRlKG5hbWUsIGJhY2tpbmdTdG9yZS5nZXQoKSwgbV90cmFuc2FjdGlvbkNvb3Jk
aW5hdG9yLmdldCgpLCB0aGlzLCB1bmlxdWVJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKGRhdGFi
YXNlQmFja2VuZCkKKyAgICAgICAgICAgIG1fZGF0YWJhc2VCYWNrZW5kTWFwLnNldCh1bmlxdWVJ
ZGVudGlmaWVyLCBkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKICAgICB9IGVs
c2UKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7Cisg
ICAgICAgIGRhdGFiYXNlQmFja2VuZCA9IGl0LT5zZWNvbmQ7CisgICAgaWYgKHZlcnNpb24gPCAw
KQorICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPm9wZW5Db25uZWN0aW9uKGNhbGxiYWNrcyk7Cisg
ICAgZWxzZQorICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPm9wZW5Db25uZWN0aW9uV2l0aFZlcnNp
b24oY2FsbGJhY2tzLCB2ZXJzaW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tl
bmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFj
a2VuZEltcGwuaAppbmRleCBjYTFkMDUyODJhOGM1ZWRmNzY2ZDVlNTU1MDhmYWUwYTljMDQ4YzY1
Li5kMjZmNzQ2ODM0MmFhNmExOGRmY2RlOWJmMTc0MzY0MjI4ZTEwNmVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZElt
cGwuaApAQCAtMjksNyArMjksNiBAQAogI2RlZmluZSBJREJGYWN0b3J5QmFja2VuZEltcGxfaAog
CiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgogCkBAIC01Nyw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlSURCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIp
OwogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7Ci0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3Qg
U3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGly
KTsKKyAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVy
c2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAKIHByb3RlY3RlZDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5k
SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
QmFja2VuZEludGVyZmFjZS5oCmluZGV4IDQ0ZjVjNzg2ZWYyMWVhNDcxOWY2MzY5NDI5Zjc2NzM5
MDA0MDkyOTMuLjRlYTVkOGEzMzBmZDA0MWFmNTFjYjJhOTU0NGVhNDhhY2Y2NjZmZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5k
SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UoKSB7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRh
dGFEaXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5j
cHAKaW5kZXggMzJlMmY2ODE1Nzk0MDlhMDkwOGQyOWExODcyYzBjZGM1NmI4OWVmOS4uZjg5ZmVl
NTU2ZWYwZmY3OWEwYTU3MDgzZDE5ZDRmOGExMTc1OTIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5j
cHAKQEAgLTg3LDYgKzg3LDEyIEBAIHN0YXRpYyBib29sIHB1dEludChEQk9yVHJhbnNhY3Rpb24q
IGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleSwgaW50NjRfdCB2YWx1ZSkKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4KK3N0YXRpYyBib29sIHB1dFZhckludChEQk9y
VHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleSwgaW50NjRfdCB2YWx1ZSkK
K3sKKyAgICByZXR1cm4gZGItPnB1dChrZXksIGVuY29kZVZhckludCh2YWx1ZSkpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgogc3RhdGljIGJvb2wgZ2V0U3RyaW5n
KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5LCBTdHJpbmcmIGZv
dW5kU3RyaW5nKQogewogICAgIFZlY3RvcjxjaGFyPiByZXN1bHQ7CkBAIC0xMjksNyArMTM1LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IHsgcmV0dXJu
ICJpZGJfY21wMSI7IH0KIH07CiAKLXN0YXRpYyBib29sIHNldFVwTWV0YWRhdGEoTGV2ZWxEQkRh
dGFiYXNlKiBkYikKK3N0YXRpYyBib29sIHNldFVwTWV0YWRhdGEoTGV2ZWxEQkRhdGFiYXNlKiBk
YiwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCiB7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IG1ldGFE
YXRhS2V5ID0gU2NoZW1hVmVyc2lvbktleTo6ZW5jb2RlKCk7CiAKQEAgLTIwOCw3ICsyMTQsNyBA
QCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3Bl
bihTZWN1cml0eU9yaWdpbiogc2VjdXJpdAogICAgIFJlZlB0cjxJREJMZXZlbERCQmFja2luZ1N0
b3JlPiBiYWNraW5nU3RvcmUoYWRvcHRSZWYobmV3IElEQkxldmVsREJCYWNraW5nU3RvcmUoZmls
ZUlkZW50aWZpZXIsIGZhY3RvcnksIGRiLnJlbGVhc2UoKSkpKTsKICAgICBiYWNraW5nU3RvcmUt
Pm1fY29tcGFyYXRvciA9IGNvbXBhcmF0b3IucmVsZWFzZSgpOwogCi0gICAgaWYgKCFzZXRVcE1l
dGFkYXRhKGJhY2tpbmdTdG9yZS0+bV9kYi5nZXQoKSkpCisgICAgaWYgKCFzZXRVcE1ldGFkYXRh
KGJhY2tpbmdTdG9yZS0+bV9kYi5nZXQoKSwgZmlsZUlkZW50aWZpZXIpKQogICAgICAgICByZXR1
cm4gUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+KCk7CiAKICAgICByZXR1cm4gYmFja2luZ1N0
b3JlLnJlbGVhc2UoKTsKQEAgLTIzNCw3ICsyNDAsNyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5n
U3RvcmU6OmdldERhdGFiYXNlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMpCiAgICAg
fQogfQogCi1ib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldElEQkRhdGFiYXNlTWV0YURh
dGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91
bmRJZCkKK2Jvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0
YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRTdHJpbmdWZXJzaW9uLCBpbnQ2NF90
JiBmb3VuZEludFZlcnNpb24sIGludDY0X3QmIGZvdW5kSWQpCiB7CiAgICAgY29uc3QgVmVjdG9y
PGNoYXI+IGtleSA9IERhdGFiYXNlTmFtZUtleTo6ZW5jb2RlKG1faWRlbnRpZmllciwgbmFtZSk7
CiAKQEAgLTI0MiwxMCArMjQ4LDE2IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0
SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYKICAgICBpZiAo
IW9rKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBvayA9IGdldFN0cmluZyhtX2RiLmdl
dCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoZm91bmRJZCwgRGF0YWJhc2VNZXRhRGF0
YUtleTo6VXNlclZlcnNpb24pLCBmb3VuZFZlcnNpb24pOworICAgIG9rID0gZ2V0U3RyaW5nKG1f
ZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShmb3VuZElkLCBEYXRhYmFzZU1l
dGFEYXRhS2V5OjpVc2VyVmVyc2lvbiksIGZvdW5kU3RyaW5nVmVyc2lvbik7CiAgICAgaWYgKCFv
aykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgb2sgPSBnZXRJbnQobV9kYi5nZXQoKSwg
RGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKGZvdW5kSWQsIERhdGFiYXNlTWV0YURhdGFLZXk6
OlVzZXJJbnRWZXJzaW9uKSwgZm91bmRJbnRWZXJzaW9uKTsKKyAgICBpZiAoIW9rKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGZvdW5kSW50VmVyc2lvbiA9PSBJREJEYXRhYmFzZU1l
dGFkYXRhOjpEZWZhdWx0SW50VmVyc2lvbikKKyAgICAgIGZvdW5kSW50VmVyc2lvbiA9IElEQkRh
dGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbjsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0yNjQsNyArMjc2LDcgQEAgc3RhdGljIGludDY0X3QgZ2V0TmV3RGF0YWJhc2VJZChMZXZlbERC
RGF0YWJhc2UqIGRiKQogICAgIHJldHVybiBkYXRhYmFzZUlkOwogfQogCi1ib29sIElEQkxldmVs
REJCYWNraW5nU3RvcmU6OmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3QmIHJvd0lkKQorYm9vbCBJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90IGludFZlcnNpb24sIGludDY0X3Qm
IHJvd0lkKQogewogICAgIHJvd0lkID0gZ2V0TmV3RGF0YWJhc2VJZChtX2RiLmdldCgpKTsKICAg
ICBpZiAocm93SWQgPCAwKQpAQCAtMjc1LDYgKzI4NywxOSBAQCBib29sIElEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFwdXRTdHJpbmcobV9kYi5nZXQo
KSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKHJvd0lkLCBEYXRhYmFzZU1ldGFEYXRhS2V5
OjpVc2VyVmVyc2lvbiksIHZlcnNpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KGludFZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKQorICAgICAg
aW50VmVyc2lvbiA9IElEQkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uOworICAg
IGlmICghcHV0VmFySW50KG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShy
b3dJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlckludFZlcnNpb24pLCBpbnRWZXJzaW9uKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIElEQkxl
dmVsREJCYWNraW5nU3RvcmU6OnVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbihpbnQ2NF90IHJv
d0lkLCBpbnQ2NF90IGludFZlcnNpb24pCit7CisgICAgQVNTRVJUKG1fY3VycmVudFRyYW5zYWN0
aW9uKTsKKyAgICBpZiAoIXB1dFZhckludChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgRGF0
YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKHJvd0lkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2Vy
SW50VmVyc2lvbiksIGludFZlcnNpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzA1LDcgKzMzMCw4IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZTo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKQogCiAgICAgaW50NjRf
dCBkYXRhYmFzZUlkOwogICAgIFN0cmluZyB2ZXJzaW9uOwotICAgIGlmICghZ2V0SURCRGF0YWJh
c2VNZXRhRGF0YShuYW1lLCB2ZXJzaW9uLCBkYXRhYmFzZUlkKSkgeworICAgIGludDY0X3QgaW50
VmVyc2lvbjsKKyAgICBpZiAoIWdldElEQkRhdGFiYXNlTWV0YURhdGEobmFtZSwgdmVyc2lvbiwg
aW50VmVyc2lvbiwgZGF0YWJhc2VJZCkpIHsKICAgICAgICAgdHJhbnNhY3Rpb24tPnJvbGxiYWNr
KCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAppbmRleCBj
NWE5ZTJlZTMwOWU4Y2EzZmQ3ZjcwZjBhYTJiYjgwY2VjMDQ2YjJlLi42NzNjYTljMTVhZTNjNmRh
ZDQ1OTdlMTc0ZGIyN2VlYTYxZWQ5ZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCkBAIC00NSw5ICs0
NSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCTGV2ZWxEQkJhY2tpbmdTdG9yZSgpOwog
CiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZvdW5k
TmFtZXMpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0
cmluZyYgbmFtZSwgU3RyaW5nJiBmb3VuZFZlcnNpb24sIGludDY0X3QmIGZvdW5kSWQpOwotICAg
IHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90JiByb3dJZCk7CisgICAgdmlydHVhbCBi
b29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZv
dW5kVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJbnRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElkKTsK
KyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgaW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90
JiByb3dJZCk7CiAgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoaW50
NjRfdCByb3dJZCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKKyAgICB2aXJ0dWFsIGJvb2wgdXBk
YXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKGludDY0X3Qgcm93SWQsIGludDY0X3QgaW50VmVyc2lv
bik7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwg
VmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZl
Y3RvcjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZEF1dG9J
bmNyZW1lbnRGbGFncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJMZXZlbERCQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJMZXZlbERCQ29kaW5nLmgKaW5kZXggMzExM2U3ZDhhOTg4MmJkN2Q4ZTc3OWNhZGFhOTdl
ZDgyMWM1YThlOC4uM2ZjZGM0NmQzNzIzN2RkYmMzMTA2Y2QxMDFkMTM1ZTQ2NzIxOGI3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGlu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2Rp
bmcuaApAQCAtMTQwLDcgKzE0MCw4IEBAIHB1YmxpYzoKICAgICAgICAgT3JpZ2luTmFtZSA9IDAs
CiAgICAgICAgIERhdGFiYXNlTmFtZSA9IDEsCiAgICAgICAgIFVzZXJWZXJzaW9uID0gMiwKLSAg
ICAgICAgTWF4T2JqZWN0U3RvcmVJZCA9IDMKKyAgICAgICAgTWF4T2JqZWN0U3RvcmVJZCA9IDMs
CisgICAgICAgIFVzZXJJbnRWZXJzaW9uID0gNAogICAgIH07CiAKICAgICBzdGF0aWMgVmVjdG9y
PGNoYXI+IGVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIE1ldGFEYXRhVHlwZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaAppbmRleCBkZDIzMDYy
MGM3YzFmYjAxMWIzZjk5NDEwYmM4MmU3ZTZhOGY1M2JlLi5lM2YwZWMzZmIxMThiNTlhZDcxNTU1
NjRkOGIxZTQ1MTczMzg2NWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJNZXRhZGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk1ldGFkYXRhLmgKQEAgLTQzLDcgKzQzLDggQEAgc3RydWN0IElEQkluZGV4TWV0YWRh
dGE7CiAKIHN0cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRhIHsKICAgICBlbnVtIHsKLSAgICAgICAg
Tm9JbnRWZXJzaW9uID0gLTEKKyAgICAgICAgTm9JbnRWZXJzaW9uID0gLTEsCisgICAgICAgIERl
ZmF1bHRJbnRWZXJzaW9uID0gMAogICAgIH07CiAKICAgICBJREJEYXRhYmFzZU1ldGFkYXRhKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVx
dWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNjMTVlZjFhMjJlYjUwOTJlMTEyNmRjMzcwMjkzMTUwNzlh
MDBhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9wZW5EQlJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSURCT3BlbkRCUmVxdWVzdC5oIgorCisjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIklE
QlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCIKKyNpbmNsdWRlICJJREJVcGdyYWRlTmVlZGVk
RXZlbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJPcGVuREJSZXF1
ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJ
REJBbnk+IHNvdXJjZSwgaW50NjRfdCB2ZXJzaW9uKQoreworICAgIFJlZlB0cjxJREJPcGVuREJS
ZXF1ZXN0PiByZXF1ZXN0KGFkb3B0UmVmKG5ldyBJREJPcGVuREJSZXF1ZXN0KGNvbnRleHQsIHNv
dXJjZSwgdmVyc2lvbikpKTsKKyAgICByZXF1ZXN0LT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICBy
ZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7Cit9CisKK0lEQk9wZW5EQlJlcXVlc3Q6OklEQk9wZW5E
QlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJB
bnk+IHNvdXJjZSwgaW50NjRfdCB2ZXJzaW9uKQorICAgIDogSURCUmVxdWVzdChjb250ZXh0LCBz
b3VyY2UsIDApCisgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKK3sKKyAgICBBU1NFUlQoIW1fcmVz
dWx0KTsKK30KKworSURCT3BlbkRCUmVxdWVzdDo6fklEQk9wZW5EQlJlcXVlc3QoKQoreworfQor
Citjb25zdCBBdG9taWNTdHJpbmcmIElEQk9wZW5EQlJlcXVlc3Q6OmludGVyZmFjZU5hbWUoKSBj
b25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9ySURCT3BlbkRCUmVx
dWVzdDsKK30KKwordm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvbkJsb2NrZWQoaW50NjRfdCBvbGRW
ZXJzaW9uKQoreworICAgIEFTU0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNO
dWxsKCkgJiYgIW1fcmVzdWx0KTsKKyAgICBlbnF1ZXVlRXZlbnQoSURCVXBncmFkZU5lZWRlZEV2
ZW50OjpjcmVhdGUob2xkVmVyc2lvbiwgbV92ZXJzaW9uLCBldmVudE5hbWVzKCkuYmxvY2tlZEV2
ZW50KSk7Cit9CisKK3ZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKGludDY0
X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
IHBycFRyYW5zYWN0aW9uQmFja2VuZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U+IHBycERhdGFiYXNlQmFja2VuZCkKK3sKKyAgICBBU1NFUlQoIW1fZXJyb3JDb2RlKTsK
KyAgICBBU1NFUlQobV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkpOworICAgIEFTU0VSVCghbV9lcnJv
cik7CisvLyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX3Jlc3VsdCwgImluIG9iamVjdCAlcCIs
IHRoaXMpOworICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U+IGRhdGFiYXNlQmFja2VuZCA9IHBycERhdGFiYXNlQmFja2VuZDsKKyAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbkJhY2tlbmQgPSBw
cnBUcmFuc2FjdGlvbkJhY2tlbmQ7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFz
ZSA9IElEQkRhdGFiYXNlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBkYXRhYmFz
ZUJhY2tlbmQpOworCisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBmcm9udGVuZCA9IElEQlRy
YW5zYWN0aW9uOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0cmFuc2FjdGlvbkJh
Y2tlbmQsIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSwgaWRiRGF0YWJhc2UuZ2V0KCks
IHRoaXMpOworICAgIHRyYW5zYWN0aW9uQmFja2VuZC0+c2V0Q2FsbGJhY2tzKGZyb250ZW5kLmdl
dCgpKTsKKyAgICBtX3RyYW5zYWN0aW9uID0gZnJvbnRlbmQ7CisgICAgbV9yZXN1bHQgPSBJREJB
bnk6OmNyZWF0ZShpZGJEYXRhYmFzZS5yZWxlYXNlKCkpOworCisgICAgaWYgKG9sZFZlcnNpb24g
PT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKSB7CisgICAgICAvLyBUaGUgb3Bl
biBjYWxsIHRoYXQgY3JlYXRlZCB0aGlzIElEQk9wZW5EQlJlcXVlc3Qgd2FzIHRoZSBmaXJzdCBp
bnRlZ2VyCisgICAgICAvLyB2ZXJzaW9uIHRoYXQgdGhpcyBkYXRhYmFzZSBoYWQuCisgICAgICBv
bGRWZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6RGVmYXVsdEludFZlcnNpb247CisgICAg
fQorICAgIGVucXVldWVFdmVudChJREJVcGdyYWRlTmVlZGVkRXZlbnQ6OmNyZWF0ZShvbGRWZXJz
aW9uLCBtX3ZlcnNpb24sIGV2ZW50TmFtZXMoKS51cGdyYWRlbmVlZGVkRXZlbnQpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzViOGJj
YzY3NzMwMzVhNDE1Y2M5NGYxYTI1M2E0ZmIxODQ1MWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oCkBAIC0wLDAg
KzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQk9wZW5EQlJlcXVlc3RfaAorI2RlZmluZSBJREJP
cGVuREJSZXF1ZXN0X2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVk
ZSAiSURCUmVxdWVzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQk9wZW5E
QlJlcXVlc3QgOiBwdWJsaWMgSURCUmVxdWVzdCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
YXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBpbnQ2NF90IHZlcnNpb24pOworICAgIHZpcnR1YWwg
fklEQk9wZW5EQlJlcXVlc3QoKTsKKworICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoaW50NjRf
dCBleGlzdGluZ1ZlcnNpb24pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBvblVwZ3JhZGVO
ZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPikgT1ZF
UlJJREU7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKGJsb2NrZWQpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
dXBncmFkZW5lZWRlZCk7CisKK3ByaXZhdGU6CisgICAgSURCT3BlbkRCUmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgaW50NjRfdCB2ZXJz
aW9uKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc09wZW5EQlJlcXVlc3QoKSBjb25zdCBPVkVSUklE
RQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaW50NjRfdCBtX3Zl
cnNpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIElEQk9wZW5EQlJlcXVlc3RfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0Lmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hMjY2YzczNTlhMGE2NWU2OTViMDg0NWRlNWY1MzU4M2E2Y2Q4Mjk4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3Bl
bkRCUmVxdWVzdC5pZGwKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBzdG9yYWdlIHsK
KworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0Us
CisgICAgICAgIEFjdGl2ZURPTU9iamVjdCwKKyAgICAgICAgRXZlbnRUYXJnZXQKKyAgICBdIElE
Qk9wZW5EQlJlcXVlc3QgOiBJREJSZXF1ZXN0IHsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlz
dGVuZXIgb25ibG9ja2VkOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnVwZ3Jh
ZGVuZWVkZWQ7CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggN2RkMzBlOWNmZjVkYjAyNjI4N2NjYzBiNDFmNjFiMGFh
OWY5ODgxOS4uNGRlZTk3ODUxOTQ1N2UxOTkzYzJmODgyNDc3Y2Y1YWE3ZmI1YjI4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTUz
LDEzICs1MywxNCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQlJlcXVlc3Q6OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUgogCiBJREJSZXF1ZXN0OjpJREJS
ZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55
PiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICA6IEFjdGl2ZURPTU9i
amVjdChjb250ZXh0LCB0aGlzKQorICAgICwgbV9yZXN1bHQoMCkKICAgICAsIG1fZXJyb3JDb2Rl
KDApCi0gICAgLCBtX3NvdXJjZShzb3VyY2UpCisgICAgLCBtX2NvbnRleHRTdG9wcGVkKGZhbHNl
KQogICAgICwgbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKKyAgICAsIG1fc291cmNlKHNvdXJj
ZSkKICAgICAsIG1fcmVhZHlTdGF0ZShQRU5ESU5HKQogICAgICwgbV9yZXF1ZXN0QWJvcnRlZChm
YWxzZSkKICAgICAsIG1fY3Vyc29yRmluaXNoZWQoZmFsc2UpCi0gICAgLCBtX2NvbnRleHRTdG9w
cGVkKGZhbHNlKQogICAgICwgbV9jdXJzb3JUeXBlKElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6
OkludmFsaWRDdXJzb3JUeXBlKQogICAgICwgbV9jdXJzb3JEaXJlY3Rpb24oSURCQ3Vyc29yOjpO
RVhUKQogICAgICwgbV9wZW5kaW5nQ3Vyc29yKDApCkBAIC0yNzMsMTUgKzI3NCwyMSBAQCB2b2lk
IElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZT4gYmFja2VuZCkKICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IFBFTkRJTkcgfHwgbV9y
ZWFkeVN0YXRlID09IERPTkUpOwogICAgIGlmIChtX3JlcXVlc3RBYm9ydGVkKQogICAgICAgICBy
ZXR1cm47Ci0gICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBQRU5ESU5HKTsKLSAgICBBU1NFUlQo
IW1fZXJyb3JDb2RlICYmIG1fZXJyb3JNZXNzYWdlLmlzTnVsbCgpICYmICFtX2Vycm9yICYmICFt
X3Jlc3VsdCk7CisgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBQRU5ESU5HIHx8IGlzT3BlbkRC
UmVxdWVzdCgpKTsKKyAgICBBU1NFUlQoIW1fZXJyb3JDb2RlICYmIG1fZXJyb3JNZXNzYWdlLmlz
TnVsbCgpICYmICFtX2Vycm9yKTsKICAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8SURCRGF0
YWJhc2U+IGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIGJhY2tlbmQpOwotICAgIGlkYkRhdGFiYXNlLT5yZWdpc3RlckZyb250ZW5kQ2Fs
bGJhY2tzKCk7Ci0KLSAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGlkYkRhdGFiYXNlLnJl
bGVhc2UoKSk7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZTsKKyAgICBpZiAo
bV9yZXN1bHQpIHsKKyAgICAgICAgaWRiRGF0YWJhc2UgPSBtX3Jlc3VsdC0+aWRiRGF0YWJhc2Uo
KTsKKyAgICAgICAgQVNTRVJUKGlkYkRhdGFiYXNlKTsKKyAgICAgICAgaWRiRGF0YWJhc2UtPnJl
Z2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZGJEYXRh
YmFzZSA9IElEQkRhdGFiYXNlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBiYWNr
ZW5kKTsKKyAgICAgICAgaWRiRGF0YWJhc2UtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKTsK
KyAgICAgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShpZGJEYXRhYmFzZS5yZWxlYXNlKCkp
OworICAgIH0KICAgICBlbnF1ZXVlRXZlbnQoY3JlYXRlU3VjY2Vzc0V2ZW50KCkpOwogfQogCkBA
IC00MDgsMTMgKzQxNSwxMiBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBJREJSZXF1ZXN0Ojpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hF
dmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKICAgICBJREJfVFJBQ0UoIklEQlJlcXVl
c3Q6OmRpc3BhdGNoRXZlbnQiKTsKLSAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IFBFTkRJTkcp
OworICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gUEVORElORyB8fCBpc09wZW5EQlJlcXVlc3Qo
KSk7CiAgICAgQVNTRVJUKCFtX2NvbnRleHRTdG9wcGVkKTsKICAgICBBU1NFUlQobV9lbnF1ZXVl
ZEV2ZW50cy5zaXplKCkpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwog
ICAgIEFTU0VSVChldmVudC0+dGFyZ2V0KCkgPT0gdGhpcyk7Ci0gICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShtX3JlYWR5U3RhdGUgPCBET05FLCAibV9yZWFkeVN0YXRlIDwgRE9ORSglZCksIHdhcyAl
ZCIsIERPTkUsIG1fcmVhZHlTdGF0ZSk7Ci0KKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcmVh
ZHlTdGF0ZSA8IERPTkUgfHwgaXNPcGVuREJSZXF1ZXN0KCksICJXaGVuIGRpc3BhdGNoaW5nIGV2
ZW50ICVzLCBtX3JlYWR5U3RhdGUgPCBET05FKCVkKSwgd2FzICVkIiwgZXZlbnQtPnR5cGUoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpLCBET05FLCBtX3JlYWR5U3RhdGUpOwogICAgIGlmIChldmVu
dC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5ibG9ja2VkRXZlbnQpCiAgICAgICAgIG1fcmVhZHlT
dGF0ZSA9IERPTkU7CiAKQEAgLTQ0MywxMSArNDQ5LDEyIEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlz
cGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICB9CiAKICAgICAvLyBGSVhN
RTogV2hlbiB3ZSBhbGxvdyBjdXN0b20gZXZlbnQgZGlzcGF0Y2hpbmcsIHRoaXMgd2lsbCBwcm9i
YWJseSBuZWVkIHRvIGNoYW5nZS4KLSAgICBBU1NFUlQoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkuc3VjY2Vzc0V2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9y
RXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50KTsKLSAg
ICBjb25zdCBib29sIHNldFRyYW5zYWN0aW9uQWN0aXZlID0gbV90cmFuc2FjdGlvbiAmJiAoZXZl
bnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50IHx8IChldmVudC0+dHlwZSgp
ID09IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50ICYmIG1fZXJyb3JDb2RlICE9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9
PSBldmVudE5hbWVzKCkuZXJyb3JFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS5ibG9ja2VkRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkudXBncmFkZW5l
ZWRlZEV2ZW50LCAiZXZlbnQgdHlwZSB3YXMgJXMiLCBldmVudC0+dHlwZSgpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworICAgIGNvbnN0IGJvb2wgc2V0VHJhbnNhY3Rpb25BY3RpdmUgPSBtX3Ry
YW5zYWN0aW9uICYmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQg
fHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkudXBncmFkZW5lZWRlZEV2ZW50IHx8IChl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50ICYmIG1fZXJyb3JDb2RlICE9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7CiAKICAgICBpZiAoc2V0VHJh
bnNhY3Rpb25BY3RpdmUpCiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPnNldEFjdGl2ZSh0cnVlKTsK
KwogICAgIGJvb2wgZG9udFByZXZlbnREZWZhdWx0ID0gSURCRXZlbnREaXNwYXRjaGVyOjpkaXNw
YXRjaChldmVudC5nZXQoKSwgdGFyZ2V0cyk7CiAgICAgaWYgKHNldFRyYW5zYWN0aW9uQWN0aXZl
KQogICAgICAgICBtX3RyYW5zYWN0aW9uLT5zZXRBY3RpdmUoZmFsc2UpOwpAQCAtNDgxLDYgKzQ4
OCwxMiBAQCB2b2lkIElEQlJlcXVlc3Q6OnVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIo
KQogICAgIH0KIH0KIAordm9pZCBJREJSZXF1ZXN0OjpjbGVhclRyYW5zYWN0aW9uUHJvcGVydHko
KQoreworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSk7CisgICAg
bV90cmFuc2FjdGlvbi5jbGVhcigpOworfQorCiB2b2lkIElEQlJlcXVlc3Q6OmVucXVldWVFdmVu
dChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09
IFBFTkRJTkcgfHwgbV9yZWFkeVN0YXRlID09IERPTkUpOwpAQCAtNDg4LDcgKzUwMSw3IEBAIHZv
aWQgSURCUmVxdWVzdDo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAg
IGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gUEVORElORyk7CisgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShtX3JlYWR5U3RhdGUgPT0gUEVORElORyB8fCBpc09wZW5EQlJl
cXVlc3QoKSwgIldoZW4gcXVldWVpbmcgZXZlbnQgJXMsIG1fcmVhZHlTdGF0ZSB3YXMgJWQiLCBl
dmVudC0+dHlwZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fcmVhZHlTdGF0ZSk7CiAKICAg
ICBFdmVudFF1ZXVlKiBldmVudFF1ZXVlID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5ldmVu
dFF1ZXVlKCk7CiAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAppbmRleCBhODA0YzJiZDVlYjFiNzMxYTUx
OTc1NTg2ODlhZGI2YTY1ZWFiYzNlLi42N2RmNGZiZDIyZjdiYzZhZjZmNDU2YTAwM2VjZmY5NmFk
ZGI2MzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJS
ZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5oCkBAIC05MSw2ICs5MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
V2l0aENvbnRpbnVhdGlvbigpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0
Y2goY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPElE
QktleT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+Jikg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfSAvLyBOb3QgaW1wbGVtZW50ZWQuIENhbGxiYWNrIHNo
b3VsZCBub3QgcmVhY2ggdGhlIHJlbmRlcmVyIHNpZGUuCiAgICAgdmlydHVhbCB2b2lkIG9uQmxv
Y2tlZCgpOworICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNp
b24pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdAog
ICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBPVkVSUklERTsKQEAg
LTEwMyw2ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2ZW50LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gRXZlbnRUYXJnZXQ6
OmRpc3BhdGNoRXZlbnQoZXZlbnQsIGVjKTsgfQogICAgIHZpcnR1YWwgdm9pZCB1bmNhdWdodEV4
Y2VwdGlvbkluRXZlbnRIYW5kbGVyKCk7CiAKKyAgICB2b2lkIGNsZWFyVHJhbnNhY3Rpb25Qcm9w
ZXJ0eSgpOworCiAgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SURCQ2FsbGJhY2tzPjo6
cmVmOwogICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQkNhbGxiYWNrcz46OmRlcmVm
OwogCkBAIC0xMTMsNiArMTE2LDggQEAgcHJvdGVjdGVkOgogICAgIHVuc2lnbmVkIHNob3J0IG1f
ZXJyb3JDb2RlOwogICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKICAgICBSZWZQdHI8RE9NRXJy
b3I+IG1fZXJyb3I7CisgICAgYm9vbCBtX2NvbnRleHRTdG9wcGVkOworICAgIFJlZlB0cjxJREJU
cmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKIAogcHJpdmF0ZToKICAgICAvLyBFdmVudFRhcmdl
dApAQCAtMTIzLDE0ICsxMjgsMTYgQEAgcHJpdmF0ZToKIAogICAgIFBhc3NSZWZQdHI8SURCQ3Vy
c29yPiBnZXRSZXN1bHRDdXJzb3IoKTsKICAgICB2b2lkIHNldFJlc3VsdEN1cnNvcihQYXNzUmVm
UHRyPElEQkN1cnNvcj4pOworICAgIHZpcnR1YWwgYm9vbCBpc09wZW5EQlJlcXVlc3QoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIFJlZlB0cjxJREJB
bnk+IG1fc291cmNlOwotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsK
IAogICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwogICAgIGJvb2wgbV9yZXF1ZXN0QWJvcnRl
ZDsgLy8gTWF5IGJlIGFib3J0ZWQgYnkgdHJhbnNhY3Rpb24gdGhlbiByZWNlaXZlIGFzeW5jIG9u
c3VjY2VzczsgaWdub3JlIHZzLiBhc3NlcnQuCiAgICAgYm9vbCBtX2N1cnNvckZpbmlzaGVkOwot
ICAgIGJvb2wgbV9jb250ZXh0U3RvcHBlZDsKICAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1f
ZW5xdWV1ZWRFdmVudHM7CiAKICAgICAvLyBPbmx5IHVzZWQgaWYgdGhlIHJlc3VsdCB0eXBlIHdp
bGwgYmUgYSBjdXJzb3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggNzYxMjM0NzAxNDE4M2M5ZGE2MWU4ZGJhZmU2NWZh
Mzg1OTk5MzQ3ZS4uYjYxNzcwY2RiMTliNzk1ZDA1OTQyZjg3ZmU1NWYwMzUxNjE3MzcyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIklEQkluZGV4LmgiCiAjaW5jbHVkZSAi
SURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2UuaCIKKyNpbmNsdWRlICJJREJPcGVuREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSURCUGVuZGlu
Z1RyYW5zYWN0aW9uTW9uaXRvci5oIgogI2luY2x1ZGUgIklEQlRyYWNpbmcuaCIKIApAQCAtNDMs
NyArNDQsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJ
REJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBJREJEYXRhYmFzZSogZGIpCiB7Ci0gICAgUmVmUHRy
PElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbihhZG9wdFJlZihuZXcgSURCVHJhbnNhY3Rpb24o
Y29udGV4dCwgYmFja2VuZCwgbW9kZSwgZGIpKSk7CisgICAgLy8gRklYTUU6IFRyeSB0byBjb25z
dHJ1Y3QgYSB0ZXN0IHdoZXJlIHRoaXMgb3V0bGl2ZXMgb3BlbkRCUmVxdWVzdCBhbmQgd2UKKyAg
ICAvLyBnZXQgYSB1c2UgYWZ0ZXIgZnJlZS4KKyAgICBJREJPcGVuREJSZXF1ZXN0KiBvcGVuREJS
ZXF1ZXN0ID0gMDsKKyAgICByZXR1cm4gY3JlYXRlKGNvbnRleHQsIGJhY2tlbmQsIG1vZGUsIGRi
LCBvcGVuREJSZXF1ZXN0KTsKK30KKworUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCVHJh
bnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCVHJhbnNhY3Rp
b246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiLCBJREJPcGVuREJSZXF1ZXN0KiBvcGVuREJS
ZXF1ZXN0KQoreworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oYWRvcHRS
ZWYobmV3IElEQlRyYW5zYWN0aW9uKGNvbnRleHQsIGJhY2tlbmQsIG1vZGUsIGRiLCBvcGVuREJS
ZXF1ZXN0KSkpOwogICAgIHRyYW5zYWN0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1
cm4gdHJhbnNhY3Rpb24ucmVsZWFzZSgpOwogfQpAQCAtNzksMTAgKzg4LDExIEBAIGNvbnN0IEF0
b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkV3JpdGVMZWdhY3koKQogfQogCiAK
LUlEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2Vu
ZCwgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiKQorSURCVHJhbnNh
Y3Rpb246OklEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJUcmFu
c2FjdGlvbjo6TW9kZSBtb2RlLCBJREJEYXRhYmFzZSogZGIsIElEQk9wZW5EQlJlcXVlc3QqIG9w
ZW5EQlJlcXVlc3QpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAs
IG1fYmFja2VuZChiYWNrZW5kKQogICAgICwgbV9kYXRhYmFzZShkYikKKyAgICAsIG1fb3BlbkRC
UmVxdWVzdChvcGVuREJSZXF1ZXN0KQogICAgICwgbV9tb2RlKG1vZGUpCiAgICAgLCBtX2FjdGl2
ZSh0cnVlKQogICAgICwgbV9zdGF0ZShVbnVzZWQpCkBAIC0xODIsNyArMTkyLDcgQEAgdm9pZCBJ
REJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVEZWxldGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKIAog
dm9pZCBJREJUcmFuc2FjdGlvbjo6c2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogewotICAgIEFTU0VS
VChtX3N0YXRlICE9IEZpbmlzaGVkKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fc3RhdGUg
IT0gRmluaXNoZWQsICJBIGZpbmlzaGVkIHRyYW5zYWN0aW9uIHRyaWVkIHRvIHNldEFjdGl2ZSgl
cykgaW4gJXAiLCBhY3RpdmUgPyAidHJ1ZSIgOiAiZmFsc2UiLCB0aGlzKTsKICAgICBpZiAobV9z
dGF0ZSA9PSBGaW5pc2hpbmcpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQobV9zdGF0ZSA9
PSBVbnVzZWQgfHwgbV9zdGF0ZSA9PSBVc2VkKTsKQEAgLTM3NSw3ICszODUsMTAgQEAgYm9vbCBJ
REJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIAog
ICAgIC8vIEZJWE1FOiBXaGVuIHdlIGFsbG93IGN1c3RvbSBldmVudCBkaXNwYXRjaGluZywgdGhp
cyB3aWxsIHByb2JhYmx5IG5lZWQgdG8gY2hhbmdlLgogICAgIEFTU0VSVChldmVudC0+dHlwZSgp
ID09IGV2ZW50TmFtZXMoKS5jb21wbGV0ZUV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmFib3J0RXZlbnQpOwotICAgIHJldHVybiBJREJFdmVudERpc3BhdGNoZXI6OmRpc3Bh
dGNoKGV2ZW50LmdldCgpLCB0YXJnZXRzKTsKKyAgICBib29sIHJldHVyblZhbHVlID0gSURCRXZl
bnREaXNwYXRjaGVyOjpkaXNwYXRjaChldmVudC5nZXQoKSwgdGFyZ2V0cyk7CisgICAgaWYgKG1f
b3BlbkRCUmVxdWVzdCkKKyAgICAgICAgbV9vcGVuREJSZXF1ZXN0LT5jbGVhclRyYW5zYWN0aW9u
UHJvcGVydHkoKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIGJvb2wgSURCVHJhbnNh
Y3Rpb246OmNhblN1c3BlbmQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggMWY3YWY3ZGFkMWJlOTQ4ZjZiNDE5NTdm
NzllNWY2ODc0MmI5OWFmMC4uMDA1ZTM3MzYzMGE0ZDJmZjJlYmFmZDgxZWUzNmVhMGM5ODlhOTIw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5oCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIElEQkN1
cnNvcjsKIGNsYXNzIElEQkRhdGFiYXNlOwogY2xhc3MgSURCT2JqZWN0U3RvcmU7CitjbGFzcyBJ
REJPcGVuREJSZXF1ZXN0OwogCiBjbGFzcyBJREJUcmFuc2FjdGlvbiA6IHB1YmxpYyBJREJUcmFu
c2FjdGlvbkNhbGxiYWNrcywgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXZlRE9NT2Jq
ZWN0IHsKIHB1YmxpYzoKQEAgLTU2LDYgKzU3LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4sIE1vZGUs
IElEQkRhdGFiYXNlKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+LCBNb2RlLCBJREJEYXRhYmFzZSosIElEQk9wZW5EQlJlcXVlc3QqKTsK
ICAgICB2aXJ0dWFsIH5JREJUcmFuc2FjdGlvbigpOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgbW9kZVJlYWRPbmx5KCk7CkBAIC0xMTksNyArMTIxLDcgQEAgcHVibGljOgogICAg
IHVzaW5nIFJlZkNvdW50ZWQ8SURCVHJhbnNhY3Rpb25DYWxsYmFja3M+OjpkZXJlZjsKIAogcHJp
dmF0ZToKLSAgICBJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBNb2RlLCBJREJEYXRhYmFzZSop
OworICAgIElEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4sIE1vZGUsIElEQkRhdGFiYXNlKiwgSURC
T3BlbkRCUmVxdWVzdCopOwogCiAgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVu
dD4pOwogICAgIHZvaWQgY2xvc2VPcGVuQ3Vyc29ycygpOwpAQCAtMTQyLDYgKzE0NCw3IEBAIHBy
aXZhdGU6CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBtX2Jh
Y2tlbmQ7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBtX2RhdGFiYXNlOworICAgIElEQk9wZW5E
QlJlcXVlc3QqIG1fb3BlbkRCUmVxdWVzdDsKICAgICBjb25zdCBNb2RlIG1fbW9kZTsKICAgICBi
b29sIG1fYWN0aXZlOwogICAgIFN0YXRlIG1fc3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwu
Y3BwCmluZGV4IDcwZjMzNjdhYmZiYzFhMDRhOWZlY2ExY2FiNGU0MzMwZGQ2MzczNDEuLjFiYmQy
M2I1NmJiYTBmOWU2ZWYzNDQ5OWRlYjgwNmIzYzA4NDcwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGwuY3BwCkBAIC0yMjcsNiArMjI3LDggQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsOjpjb21taXQoKQogICAgIGVsc2UKICAgICAgICAgbV9jYWxsYmFja3MtPm9uQWJvcnQoKTsK
IAorICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWRBbmRFdmVudHNGaXJlZCh0aGlz
KTsKKwogICAgIG1fZGF0YWJhc2UgPSAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJVcGdyYWRlTmVlZGVkRXZlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iMTIwNTQ1OGU0ZjQ3OTU5YTNlYzg5MDRiYTU2MDZjMmYxMmQxOWE4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRl
ZEV2ZW50LmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIklEQlVwZ3JhZGVOZWVkZWRFdmVudC5oIgorCisjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiSURCQW55Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxJREJVcGdyYWRlTmVlZGVkRXZl
bnQ+IElEQlVwZ3JhZGVOZWVkZWRFdmVudDo6Y3JlYXRlKGludDY0X3Qgb2xkVmVyc2lvbiwgaW50
NjRfdCBuZXdWZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IElEQlVwZ3JhZGVOZWVkZWRFdmVudChvbGRWZXJzaW9uLCBuZXdW
ZXJzaW9uLCBldmVudFR5cGUpKTsKK30KKworSURCVXBncmFkZU5lZWRlZEV2ZW50OjpJREJVcGdy
YWRlTmVlZGVkRXZlbnQoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNpb24sIGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQorICAgIDogRXZlbnQoZXZlbnRUeXBlLCBmYWxz
ZSAvKmNhbkJ1YmJsZSovLCBmYWxzZSAvKmNhbmNlbGFibGUqLykKKyAgICAsIG1fb2xkVmVyc2lv
bihvbGRWZXJzaW9uKQorICAgICwgbV9uZXdWZXJzaW9uKG5ld1ZlcnNpb24pCit7Cit9CisKK0lE
QlVwZ3JhZGVOZWVkZWRFdmVudDo6fklEQlVwZ3JhZGVOZWVkZWRFdmVudCgpCit7Cit9CisKK2lu
dDY0X3QgSURCVXBncmFkZU5lZWRlZEV2ZW50OjpvbGRWZXJzaW9uKCkKK3sKKyAgICByZXR1cm4g
bV9vbGRWZXJzaW9uOworfQorCitpbnQ2NF90IElEQlVwZ3JhZGVOZWVkZWRFdmVudDo6bmV3VmVy
c2lvbigpCit7CisgICAgcmV0dXJuIG1fbmV3VmVyc2lvbjsKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBJREJVcGdyYWRlTmVlZGVkRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAg
IHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9ySURCVXBncmFkZU5lZWRlZEV2ZW50Owor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJVcGdyYWRlTmVlZGVkRXZlbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MDY3MWQyNDQ4YTc2MTA4MTJmYmY1NTAwOWM5NjJhYzRhMjA1ZTc4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5l
ZWRlZEV2ZW50LmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCVXBncmFkZU5l
ZWRlZEV2ZW50X2gKKyNkZWZpbmUgSURCVXBncmFkZU5lZWRlZEV2ZW50X2gKKworI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJJREJN
ZXRhZGF0YS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgSURCQW55OworCitjbGFzcyBJREJVcGdyYWRlTmVlZGVkRXZlbnQgOiBwdWJs
aWMgRXZlbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlVwZ3JhZGVOZWVk
ZWRFdmVudD4gY3JlYXRlKGludDY0X3Qgb2xkVmVyc2lvbiA9IElEQkRhdGFiYXNlTWV0YWRhdGE6
Ok5vSW50VmVyc2lvbiwgaW50NjRfdCBuZXdWZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6
Tm9JbnRWZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSA9IEF0b21pY1N0cmlu
ZygpKTsKKyAgICB2aXJ0dWFsIH5JREJVcGdyYWRlTmVlZGVkRXZlbnQoKTsKKworICAgIHZpcnR1
YWwgaW50NjRfdCBvbGRWZXJzaW9uKCk7CisgICAgdmlydHVhbCBpbnQ2NF90IG5ld1ZlcnNpb24o
KTsKKworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgSURCVXBncmFkZU5lZWRlZEV2ZW50KGludDY0X3Qgb2xkVmVy
c2lvbiwgaW50NjRfdCBuZXdWZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7
CisKKyAgICBpbnQ2NF90IG1fb2xkVmVyc2lvbjsKKyAgICBpbnQ2NF90IG1fbmV3VmVyc2lvbjsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQorCisjZW5kaWYgLy8gSURCVXBncmFkZU5lZWRlZEV2ZW50X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVu
dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJVcGdyYWRlTmVlZGVk
RXZlbnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3N2IwMDBkNDIyZmI3MjdkNDAwODIzNjk4YTQwMTFkMjIx
ZDU3YTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJVcGdyYWRlTmVlZGVkRXZlbnQuaWRsCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1
bGUgc3RvcmFnZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1JTkRF
WEVEX0RBVEFCQVNFCisgICAgXSBJREJVcGdyYWRlTmVlZGVkRXZlbnQgOiBFdmVudCB7CisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcgb2xkVmVyc2lvbjsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdWZXJzaW9uOwor
ICAgIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOGJjODBmMGZjZGU5YjZjZjE0NGI4OTYwMzRl
ZDgxZTkyMmQ5ZTc2My4uMWJjYzkyZDA0MDBiNGEzNWU3NDQxMDBjMjYyMGE4YjFlZjU4NDMwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtODEzLDggKzgxMywxMCBAQAogICAgICAgICAgICAgJ01vZHVs
ZXMvaW5kZXhlZGRiL0lEQktleS5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRi
L0lEQktleVJhbmdlLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJS
ZXF1ZXN0LmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5p
ZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmlkbCcs
CisgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50Lmlk
bCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50
LmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZVJl
cXVlc3QuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJDb250ZXh0
SW5kZXhlZERhdGFiYXNlLmlkbCcsCkBAIC0xNTA0LDYgKzE1MDYsOCBAQAogICAgICAgICAgICAg
J01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwJywKICAgICAg
ICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgnLAog
ICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZS5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0
LmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5o
JywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJQZW5kaW5nVHJhbnNhY3Rpb25N
b25pdG9yLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCUGVuZGluZ1Ry
YW5zYWN0aW9uTW9uaXRvci5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJS
ZXF1ZXN0LmNwcCcsCkBAIC0xNTE3LDYgKzE1MjEsOCBAQAogICAgICAgICAgICAgJ01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwJywKICAgICAgICAgICAg
ICdNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgnLAorICAgICAg
ICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5jcHAnLAorICAg
ICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5oJywKICAg
ICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwJywK
ICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaCcs
CiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qu
Y3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IGIwZWZiZTc2NTA4YzhlYjI1NGRmMjk2
MmJiZTg5ZGM2MjcxNzE0MmQuLmM1NTllODU5MjI2Zjc2ZWRlYmI2NjQ3ZmJkM2YzZDFiMzg0NzJj
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAtMTEwLDYgKzExMCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBtYWNybyh0ZXh0SW5wdXQpIFwKICAgICBtYWNybyh1bmxvYWQpIFwK
ICAgICBtYWNybyh1cGRhdGVyZWFkeSkgXAorICAgIG1hY3JvKHVwZ3JhZGVuZWVkZWQpIFwKICAg
ICBtYWNybyh2ZXJzaW9uY2hhbmdlKSBcCiAgICAgbWFjcm8od2Via2l0dmlzaWJpbGl0eWNoYW5n
ZSkgXAogICAgIG1hY3JvKHdyaXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCmluZGV4IDlj
MGFjNTU1OGFhYWMxNjAxZTkzMDkxNWIwZDdiNDdhOGRlNjY3ZTIuLmYxZTZkYTc5ZGE5MWFiNzgz
NjMzNjM0ODM4YWI3YjU3NWUzODEzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudE5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCkBAIC0z
OSw2ICszOSw3IEBAIFN0b3JhZ2VFdmVudAogU1ZHRXZlbnRzIGludGVyZmFjZU5hbWU9RXZlbnQs
IGNvbmRpdGlvbmFsPVNWRwogU1ZHWm9vbUV2ZW50IGNvbmRpdGlvbmFsPVNWRwogU1ZHWm9vbUV2
ZW50cyBpbnRlcmZhY2VOYW1lPVNWR1pvb21FdmVudCwgY29uZGl0aW9uYWw9U1ZHCitJREJVcGdy
YWRlTmVlZGVkRXZlbnQgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSURCVmVyc2lvbkNo
YW5nZUV2ZW50IGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIFRvdWNoRXZlbnQgY29uZGl0
aW9uYWw9VE9VQ0hfRVZFTlRTLCBydW50aW1lQ29uZGl0aW9uYWw9dG91Y2hFbmFibGVkCiBEZXZp
Y2VNb3Rpb25FdmVudCBjb25kaXRpb25hbD1ERVZJQ0VfT1JJRU5UQVRJT04KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IGZmNjBhYWQ0ZGI1OWY5Y2ZlN2Y5OGEx
YWRjOTVmN2Q5MTFjMGFjMzIuLmQxMDhiN2IxYWY1NDRkYzRhOTI0OTk0Mjg1ODE2Y2NhYmEwMmE0
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4K
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtOSw2ICs5
LDcgQEAgRXZlbnRTb3VyY2UKIEZpbGVSZWFkZXIgY29uZGl0aW9uYWw9QkxPQgogRmlsZVdyaXRl
ciBjb25kaXRpb25hbD1GSUxFX1NZU1RFTQogSURCRGF0YWJhc2UgY29uZGl0aW9uYWw9SU5ERVhF
RF9EQVRBQkFTRQorSURCT3BlbkRCUmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNF
CiBJREJSZXF1ZXN0IGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIElEQlRyYW5zYWN0aW9u
IGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IGNv
bmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IGM1ODRiMWU5ZmQzZWFmYTll
ZmVhYzYxZDQxNjVkZjM2YzQyZWQ4YTcuLjYzODk5MGU0NjE4MTVjZGQ1NDljYzZiZjlhNjU0NGJm
ZGIxZDZmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcApAQCAtMjM3LDcgKzIzNyw3IEBAIHByaXZhdGU6CiB2b2lkIEV4
ZWN1dGFibGVXaXRoRGF0YWJhc2U6OnN0YXJ0KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBp
ZGJGYWN0b3J5LCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQogewogICAgIFJl
ZlB0cjxPcGVuRGF0YWJhc2VDYWxsYmFjaz4gY2FsbGJhY2sgPSBPcGVuRGF0YWJhc2VDYWxsYmFj
azo6Y3JlYXRlKHRoaXMpOwotICAgIGlkYkZhY3RvcnktPm9wZW4oZGF0YWJhc2VOYW1lLCBjYWxs
YmFjay5nZXQoKSwgc2VjdXJpdHlPcmlnaW4sIGNvbnRleHQsIFN0cmluZygpKTsKKyAgICBpZGJG
YWN0b3J5LT5vcGVuKGRhdGFiYXNlTmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJz
aW9uLCBjYWxsYmFjay5nZXQoKSwgc2VjdXJpdHlPcmlnaW4sIGNvbnRleHQsIFN0cmluZygpKTsK
IH0KIAogc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0
cmFuc2FjdGlvbkZvckRhdGFiYXNlKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSogaWRiRGF0
YWJhc2UsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCmluZGV4IDdkZjg0ZDJmZmJlMDc5
NjEzNTU2NWZhMDJjZjdlOGUxYWQ4MjA5MmMuLjdhMzQxZjkwMzg3MWE5NzUyMjY0YTJkYTM3OThk
YWRlNWYyZGUwMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNh
bGxiYWNrc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxs
YmFja3NQcm94eS5jcHAKQEAgLTEyOSw2ICsxMjksMTYgQEAgdm9pZCBJREJDYWxsYmFja3NQcm94
eTo6b25CbG9ja2VkKCkKICAgICBtX2NhbGxiYWNrcy0+b25CbG9ja2VkKCk7CiB9CiAKK3ZvaWQg
SURCQ2FsbGJhY2tzUHJveHk6Om9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbikKK3sK
KyAgICBtX2NhbGxiYWNrcy0+b25CbG9ja2VkKGV4aXN0aW5nVmVyc2lvbik7Cit9CisKK3ZvaWQg
SURCQ2FsbGJhY2tzUHJveHk6Om9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbiwgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlKQoreworICAgIG1f
Y2FsbGJhY2tzLT5vblVwZ3JhZGVOZWVkZWQob2xkVmVyc2lvbiwgbmV3IFdlYklEQlRyYW5zYWN0
aW9uSW1wbCh0cmFuc2FjdGlvbiksIG5ldyBXZWJJREJEYXRhYmFzZUltcGwoZGF0YWJhc2UpKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxi
YWNrc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94
eS5oCmluZGV4IGRiMzA1NjU1MGIyYjJlMTdlMmUzMGRkZWY3OWU5ZGQyOWMyNWZmYmQuLjdhZDQ5
MTAyNjEzYjllMDI4YjljYjBhODlhMzU0NDZhNzUyNjQ0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKTsKICAgICB2
aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6SURCS2V5PiA+JiBrZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OklEQktl
eT4gPiYgcHJpbWFyeUtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiA+JiB2YWx1ZXMpOwogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKGludDY0X3QgZXhpc3RpbmdWZXJzaW9uKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgb25VcGdyYWRlTmVlZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pOwogCiBwcml2YXRlOgogICAg
IElEQkNhbGxiYWNrc1Byb3h5KFBhc3NPd25QdHI8V2ViSURCQ2FsbGJhY2tzPik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5j
cHAKaW5kZXggOTAxYjU1ZTU0ZjJhYWZlMDRmZmZjMjJjYTk2YjM1MzE4ZWY5NDc4Ni4uNTZhZmU1
ZmI1ZDJiNjJmYTQ0NDk5NTQ0NjkzMGEwMWQwYmM5Nzc5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcApAQCAtODcs
NiArODcsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpkZWxldGVPYmplY3RTdG9y
ZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aQogCiB2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZFByb3h5OjpzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4g
ZGF0YWJhc2VDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIEFTU0VSVChtX3dl
YklEQkRhdGFiYXNlKTsKICAgICBtX3dlYklEQkRhdGFiYXNlLT5zZXRWZXJzaW9uKHZlcnNpb24s
IG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIGVjKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5
LmNwcAppbmRleCA4MTZmYWY2YzRkZTcwYWU2OTI2OTMwZDBkZTUwZTBlZTJkMTE3ODViLi4xNWY5
MjhmMzlhZDFkYTZmMGJkYWFhOTc2YzhjMjBhMWI1NzY0MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmNwcApA
QCAtNDgsNiArNDgsMTEgQEAgSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6fklEQkRhdGFiYXNl
Q2FsbGJhY2tzUHJveHkoKQogewogfQogCit2b2lkIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6
Om9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IGN1cnJlbnRWZXJzaW9uLCBpbnQ2NF90IHJlcXVlc3Rl
ZFZlcnNpb24pCit7CisgICAgbV9jYWxsYmFja3MtPm9uVmVyc2lvbkNoYW5nZShjdXJyZW50VmVy
c2lvbiwgcmVxdWVzdGVkVmVyc2lvbik7Cit9CisKIHZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NQ
cm94eTo6b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgcmVxdWVzdGVkVmVyc2lvbikKIHsK
ICAgICBtX2NhbGxiYWNrcy0+b25WZXJzaW9uQ2hhbmdlKHJlcXVlc3RlZFZlcnNpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQ
cm94eS5oCmluZGV4IGFmZmRjZTc3ZDVkOTU4ZGMwMGUwZjZmODBhY2ZmYjgwMTI5NThiM2IuLjRl
ZWJmMGNjYjgxYWRkMDNkYjU4OWMzOWQ1Y2IwM2FlYTNkMDljZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgKQEAg
LTQxLDYgKzQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQ2FsbGJhY2tz
UHJveHkoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5n
JiByZXF1ZXN0ZWRWZXJzaW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGlu
dDY0X3QgY3VycmVudFZlcnNpb24sIGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbik7CiAKIHByaXZh
dGU6CiAgICAgSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eShQYXNzT3duUHRyPFdlYklEQkRhdGFi
YXNlQ2FsbGJhY2tzPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJGYWN0b3J5QmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCmluZGV4IGUyYzliYjllMjJjMjBhNTdiYzJkOThlMjU1
YjY4ZGIzYzU5OTYwMDEuLjIyMTBkYTE2MTY1MTE3NmRiNWY0ODQ0OWE3ZjI4YjZmY2Q5MjJhMGEg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5k
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNr
ZW5kUHJveHkuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZFBy
b3h5OjpnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmEK
IH0KIAogCi12b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6Om9wZW4oY29uc3QgU3RyaW5nJiBu
YW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKQordm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5
OjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1
cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBkYXRhRGlyKQogewogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyhwcnBDYWxs
YmFja3MpOwogICAgIFdlYlNlY3VyaXR5T3JpZ2luIG9yaWdpbihzZWN1cml0eU9yaWdpbik7CkBA
IC0yMTEsNyArMjExLDcgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpvcGVuKGNvbnN0
IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHAKICAgICAgICAgcmV0dXJu
OwogCiAgICAgV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IGdldFdlYkZyYW1lKGNvbnRleHQpOwot
ICAgIG1fd2ViSURCRmFjdG9yeS0+b3BlbihuYW1lLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChj
YWxsYmFja3MpLCBvcmlnaW4sIHdlYkZyYW1lLCBkYXRhRGlyKTsKKyAgICBtX3dlYklEQkZhY3Rv
cnktPm9wZW4obmFtZSwgdmVyc2lvbiwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tz
KSwgb3JpZ2luLCB3ZWJGcmFtZSwgZGF0YURpcik7CiB9CiAKIHZvaWQgSURCRmFjdG9yeUJhY2tl
bmRQcm94eTo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1
cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBkYXRhRGlyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFj
dG9yeUJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9y
eUJhY2tlbmRQcm94eS5oCmluZGV4IDIyYTZmNTJhODY5ODE2YzgwNTY2OGQ2ODRkMGE3YmZmZmMy
NmFlNjkuLmMwZGU5MTBhOTJjZGVhOTFhM2QzYTFjNTMwYTI4MDdjNWFiZmFhN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfklEQkZhY3RvcnlCYWNrZW5k
UHJveHkoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8
V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4sIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFE
aXIpOwotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luPiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0
YURpcik7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90
IHZlcnNpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFz
ZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcAppbmRl
eCA1YjVhZWRmN2NjYjM3ZTI0OWM1M2MxYWY5ZThlYzhlZDliMGU2ZTEyLi4xYTEzMjJhYTk1MWQ3
MjYwYTkxOTk4NDE4MjJiZGQ3NjJkNTI0ZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcApAQCAtNDgsNiArNDgsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogV2ViSURCQ2FsbGJhY2tzSW1wbDo6V2ViSURCQ2FsbGJhY2tzSW1w
bChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgIDogbV9jYWxsYmFja3Mo
Y2FsbGJhY2tzKQorICAgICwgbV9kaWRDcmVhdGVEYXRhYmFzZVByb3h5KGZhbHNlKQogewogfQog
CkBAIC03Miw2ICs3MywxMCBAQCB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2VzcyhX
ZWJJREJDdXJzb3IqIGN1cnNvcikKIAogdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nl
c3MoV2ViSURCRGF0YWJhc2UqIHdlYktpdEluc3RhbmNlKQogeworICAgIGlmIChtX2RpZENyZWF0
ZURhdGFiYXNlUHJveHkpIHsKKyAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhJREJEYXRh
YmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKHN0YXRpY19jYXN0PFdlYklEQkRhdGFi
YXNlKj4oMCkpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgbV9jYWxsYmFja3MtPm9u
U3VjY2VzcyhJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKHdlYktpdElu
c3RhbmNlKSkpOwogfQogCkBAIC0xMDUsNiArMTEwLDE3IEBAIHZvaWQgV2ViSURCQ2FsbGJhY2tz
SW1wbDo6b25CbG9ja2VkKCkKICAgICBtX2NhbGxiYWNrcy0+b25CbG9ja2VkKCk7CiB9CiAKK3Zv
aWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25CbG9ja2VkKGxvbmcgbG9uZyBvbGRWZXJzaW9uKQor
eworICAgIG1fY2FsbGJhY2tzLT5vbkJsb2NrZWQob2xkVmVyc2lvbik7Cit9CisKK3ZvaWQgV2Vi
SURCQ2FsbGJhY2tzSW1wbDo6b25VcGdyYWRlTmVlZGVkKGxvbmcgbG9uZyBvbGRWZXJzaW9uLCBX
ZWJJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIFdlYklEQkRhdGFiYXNlKiBkYXRhYmFzZSkK
K3sKKyAgICBtX2RpZENyZWF0ZURhdGFiYXNlUHJveHkgPSB0cnVlOworICAgIG1fY2FsbGJhY2tz
LT5vblVwZ3JhZGVOZWVkZWQob2xkVmVyc2lvbiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6
OmNyZWF0ZShhZG9wdFB0cih0cmFuc2FjdGlvbikpLCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6
Y3JlYXRlKGFkb3B0UHRyKGRhdGFiYXNlKSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCmluZGV4IDdiMDIxNjM1OWQ1NmQ4
MTg2OTVmZTk3M2EwMTgyYWZiNTEyNTAxNjEuLmI1YjU1NGUwMzA2YzYyZDMzMjQ2YWIwYWRhMTU5
YjUzOTY1ZDk4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkNhbGxiYWNrc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJD
YWxsYmFja3NJbXBsLmgKQEAgLTUxLDkgKzUxLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIGNvbnN0IFdlYklE
QktleSYsIGNvbnN0IFdlYklEQktleVBhdGgmKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
V2l0aENvbnRpbnVhdGlvbigpOwogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgb25CbG9ja2VkKGxvbmcgbG9uZyBvbGRWZXJzaW9uKTsKKyAgICB2aXJ0dWFs
IHZvaWQgb25VcGdyYWRlTmVlZGVkKGxvbmcgbG9uZyBvbGRWZXJzaW9uLCBXZWJJREJUcmFuc2Fj
dGlvbiosIFdlYklEQkRhdGFiYXNlKik7CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6
OklEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CisgICAgYm9vbCBtX2RpZENyZWF0ZURhdGFiYXNl
UHJveHk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCmlu
ZGV4IGZmMGU4OTg2NGIyMWE2NDY4OWIwMzEyNmNhYWYzZmU1NjU5ZmFmMzEuLjY4MjhkZjZmZjY5
NmFkZTQ3ZWY5NGU4YmQ0MDc0MmY0YWI2MTlkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcApAQCAt
NDQsNiArNDQsMTEgQEAgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjp+V2ViSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsKCkKIHsKIH0KIAordm9pZCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGw6Om9uVmVyc2lvbkNoYW5nZShsb25nIGxvbmcgY3VycmVudFZlcnNpb24sIGxvbmcgbG9uZyBy
ZXF1ZXN0ZWRWZXJzaW9uKQoreworICAgIG1fY2FsbGJhY2tzLT5vblZlcnNpb25DaGFuZ2UoY3Vy
cmVudFZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24pOworfQorCiB2b2lkIFdlYklEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbDo6b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFdlYlN0cmluZyYgdmVyc2lvbikK
IHsKICAgICBtX2NhbGxiYWNrcy0+b25WZXJzaW9uQ2hhbmdlKHZlcnNpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGwuaAppbmRleCAyMWMzZGM3YzVhYzRhZDBiZWE4ZGYyOTE2ZWJiM2Y4OGM2N2ZmMDVmLi41NzM0
OTBiZmYzMDQyYTVjZGJmNGExNzcxZjZhNWRlNDQ3MmU1ZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaApA
QCAtNDMsNiArNDMsNyBAQCBwdWJsaWM6CiAgICAgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKICAgICB2aXJ0dWFs
IH5XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBvblZl
cnNpb25DaGFuZ2UobG9uZyBsb25nIGN1cnJlbnRWZXJzaW9uLCBsb25nIGxvbmcgcmVxdWVzdGVk
VmVyc2lvbik7CiAgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShjb25zdCBXZWJTdHJp
bmcmIHZlcnNpb24pOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCmluZGV4IGQxNGFjNzFlMThjODU5MzE1MmVmZGZkNWM4
MzllMDE3MjBlM2ZmZGMuLjIxNThkYWI5NmI5MjM1ZjBiODkzZjNlNGVhNmI1N2Q2ZDIzOWNlNWUg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5j
cHAKQEAgLTYzLDE3ICs2MywxMSBAQCB2b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpnZXREYXRhYmFz
ZU5hbWVzKFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZQogICAgIG1faWRi
RmFjdG9yeUJhY2tlbmQtPmdldERhdGFiYXNlTmFtZXMoSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0
ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgb3JpZ2luLCAwLCBkYXRhRGlyKTsKIH0KIAotCi12b2lk
IFdlYklEQkZhY3RvcnlJbXBsOjpvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2Fs
bGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZy
YW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKQotewotICAgIG1faWRiRmFjdG9yeUJhY2tl
bmQtPm9wZW4obmFtZSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFj
a3MpKS5nZXQoKSwgb3JpZ2luLCAwLCBkYXRhRGlyKTsKLX0KLQogdm9pZCBXZWJJREJGYWN0b3J5
SW1wbDo6b3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGxvbmcgbG9uZyB2ZXJzaW9uLCBXZWJJ
REJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwg
V2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpCiB7CiAgICAgLy8gRklYTUU6IFBh
c3MgdmVyc2lvbiBhbG9uZyB3aGVuIFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNl
CiAgICAgLy8gaGFzIGFuIG9wZW4gbWV0aG9kIHRoYXQgYWNjZXB0cyBpdC4KLSAgICBtX2lkYkZh
Y3RvcnlCYWNrZW5kLT5vcGVuKG5hbWUsIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQ
dHIoY2FsbGJhY2tzKSkuZ2V0KCksIG9yaWdpbiwgMCwgZGF0YURpcik7CisgICAgbV9pZGJGYWN0
b3J5QmFja2VuZC0+b3BlbihuYW1lLCB2ZXJzaW9uLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRl
KGFkb3B0UHRyKGNhbGxiYWNrcykpLmdldCgpLCBvcmlnaW4sIDAsIGRhdGFEaXIpOwogfQogCiB2
b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpkZWxldGVEYXRhYmFzZShjb25zdCBXZWJTdHJpbmcmIG5h
bWUsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYg
b3JpZ2luLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oCmluZGV4IGZhNDM4ZDc2NDhl
MzQ2NGM1YTFjYmQ1Y2NmNTdjZmYwZTU2ZjMyODUuLjgzM2VlYjU5MTI1OWI4NTNjMzIxZmQxMThm
MDk0YTViOGE3Yzg4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkZhY3RvcnlJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
RmFjdG9yeUltcGwuaApAQCAtNDUsNyArNDUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2Vi
SURCRmFjdG9yeUltcGwoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFdl
YklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25z
dCBXZWJTdHJpbmcmIGRhdGFEaXIpOwotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0
cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBX
ZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcik7CiAgICAgdmlydHVhbCB2b2lkIG9w
ZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURCQ2FsbGJh
Y2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmlu
ZyYgZGF0YURpcik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYlN0
cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBX
ZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcAppbmRleCBk
OWUzZDY5N2IxOTdjNzQwNmY2M2JhZWI0ODM5MzFiNGVhYzk1MDg1Li43ODdhOTZiY2M3NWJiNzll
OTc4NDExNjBiNGMwODFmMDU0YWIxZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCkBAIC03NCw3ICs3NCw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmFpbGluZ0JhY2tp
bmdTdG9yZSk7CiAgICAgfQotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFE
YXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGludDY0X3QmKQorICAgIHZpcnR1YWwg
Ym9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIGludDY0X3QsIGludDY0X3QmKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KQEAgLTEwMiw3ICsxMDIsOCBAQCBURVNUKElEQkFib3J0VGVzdCwgVGhlVGVzdCkKICAgICBj
b25zdCBTdHJpbmcmIG5hbWUgPSAiZGIgbmFtZSI7CiAgICAgTW9ja0lEQkNhbGxiYWNrcyBjYWxs
YmFja3M7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKCJodHRwIiwgImxvY2FsaG9zdCIsIDgxKTsKLSAgICBmYWN0b3J5LT5vcGVuKG5h
bWUsICZjYWxsYmFja3MsIG9yaWdpbiwgMCAvKkZyYW1lKi8sIFN0cmluZygpIC8qcGF0aCovKTsK
KyAgICBjb25zdCBpbnQ2NF90IGtWZXJzaW9uID0gMjsKKyAgICBmYWN0b3J5LT5vcGVuKG5hbWUs
IGtWZXJzaW9uLCAmY2FsbGJhY2tzLCBvcmlnaW4sIDAgLypGcmFtZSovLCBTdHJpbmcoKSAvKnBh
dGgqLyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCmluZGV4IDA4NDA1Y2UwYWI1OGM5NmZjMjk2
YzNmMGY4YTE0ZmY2OWQ2NWJhMTguLmQ5NmY3YzZjYTBlYTk0MmEyNWQzODI0YjVlMTJjZDVjNDll
N2M1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJh
Y2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJh
Y2tpbmdTdG9yZS5oCkBAIC0zMyw4ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IElEQkZha2VCYWNraW5nU3RvcmUgOiBwdWJsaWMgSURCQmFja2luZ1N0b3JlIHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91bmRO
YW1lcykgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURh
dGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91
bmRJZCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRl
SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVy
c2lvbiwgaW50NjRfdCYgcm93SWQpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmlu
ZyYgZm91bmRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZEludFZlcnNpb24sIGludDY0X3QmIGZvdW5k
SWQpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUlE
QkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNp
b24sIGNvbnN0IGludDY0X3QgaW50VmVyc2lvbiwgaW50NjRfdCYgcm93SWQpIE9WRVJSSURFIHsg
cmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0
YShpbnQ2NF90IHJvd0lkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pIE9WRVJSSURFIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYg
bmFtZSkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA1MzhkYzU5ZjUxMGZm
OTEwY2QzOGZlY2ZhZjkyNjU2Nzc0YmU4NzMuLjE3ZjQwOTMyNTA3ZTJiMzM1ZDZlMDU4YjFjZmQw
OWU0MDdiMmRjMDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5OCBAQAorMjAxMi0wNy0yNiAgRGF2aWQgR3Jv
Z2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBpbXBsZW1l
bnQgdXBncmFkZW5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODk1MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHBy
b2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVs
b3cgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlv
bnM6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvYWJvcnQtaW4taW5pdGlhbC11cGdyYWRl
bmVlZGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
aW50dmVyc2lvbi1hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWFib3J0LWluLWlu
aXRpYWwtdXBncmFkZW5lZWRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9pbnR2ZXJzaW9uLWFuZC1zZXR2ZXJzaW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hbmQtc2V0dmVyc2lvbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWJsb2NrZWQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9u
LWJsb2NrZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVy
c2lvbi1jbG9zZS1iZXR3ZWVuLWV2ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtYmV0d2Vlbi1ldmVudHMuaHRtbDog
QWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9zZS1pbi1v
bmNvbXBsZXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvaW50dmVyc2lvbi1jbG9zZS1pbi1vbmNvbXBsZXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tZGVsZXRlLWluLXVwZ3JhZGVuZWVkZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1kb250LWZy
ZWV6ZS1vbi1yZWZyZXNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L2ludHZlcnNpb24tb21pdC1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9taXQtcGFyYW1ldGVyLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tb3Blbi13aXRoLXZlcnNp
b24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2
ZXJzaW9uLW9wZW4td2l0aC12ZXJzaW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL29wZW4td2l0aC12ZXJzaW9uLWluaXRpYWwtdmVyc2lvbi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0aC12ZXJzaW9uLXdp
dGgtZGVsZXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2Fib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC5qczogQWRkZWQuCisg
ICAgICAgICh0ZXN0KToKKyAgICAgICAgKGRlbGV0ZVN1Y2Nlc3MpOgorICAgICAgICAodXBncmFk
ZU5lZWRlZCk6CisgICAgICAgIChvbkFib3J0KToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvZG9udC1mcmVlemUtb24tcmVmcmVzaC5qczogQWRkZWQuCisgICAgICAgICh0
ZXN0KToKKyAgICAgICAgKGRlbGV0ZVN1Y2Nlc3MpOgorICAgICAgICAodXBncmFkZU5lZWRlZC50
cmFuc2FjdGlvbi5vbmNvbXBsZXRlKToKKyAgICAgICAgKHVwZ3JhZGVOZWVkZWQpOgorICAgICAg
ICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9v
cGVuLXdpdGgtdmVyc2lvbi1ibG9ja2VkLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAg
ICAgICAoZGVsZXRlU3VjY2Vzcy5yZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCk6CisgICAgICAgIChk
ZWxldGVTdWNjZXNzKToKKyAgICAgICAgKGZpcnN0U3VjY2Vzc0V2ZW50SGFuZGxlcik6CisgICAg
ICAgICh2ZXJzaW9uQ2hhbmdlSGFuZGxlcik6CisgICAgICAgIChibG9ja2VkRXZlbnRIYW5kbGVy
KToKKyAgICAgICAgKHNlY29uZFVwZ3JhZGVOZWVkZWRFdmVudEhhbmRsZXIpOgorICAgICAgICAo
c2Vjb25kU3VjY2Vzc0NhbGxiYWNrKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvb3Blbi13aXRoLXZlcnNpb24tY2xvc2UtYmV0d2Vlbi1ldmVudHMuanM6IEFkZGVkLgor
ICAgICAgICAodGVzdCk6CisgICAgICAgIChkZWxldGVTdWNjZXNzKToKKyAgICAgICAgKHVwZ3Jh
ZGVOZWVkZWQudHJhbnNhY3Rpb24ub25jb21wbGV0ZSk6CisgICAgICAgICh1cGdyYWRlTmVlZGVk
KToKKyAgICAgICAgKGNsb3NlREIpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1jbG9zZS1pbi1v
bmNvbXBsZXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoZGVsZXRlU3Vj
Y2Vzcyk6CisgICAgICAgICh1cGdyYWRlTmVlZGVkLnRyYW5zYWN0aW9uLm9uY29tcGxldGUpOgor
ICAgICAgICAodXBncmFkZU5lZWRlZCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLWluaXRpYWwt
dmVyc2lvbi5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGRlbGV0ZVN1Y2Nl
c3MucmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQpOgorICAgICAgICAoZGVsZXRlU3VjY2Vzcyk6Cisg
ICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL29wZW4td2l0aC12ZXJzaW9uLXdpdGgtZGVsZXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKHRl
c3QpOgorICAgICAgICAoaW5pdGlhbGx5RGVsZXRlZCk6CisgICAgICAgIChmaXJzdFVwZ3JhZGVO
ZWVkZWQpOgorICAgICAgICAobWlkUmVxdWVzdERlbGV0ZSk6CisgICAgICAgIChvcGVuU3VjY2Vz
cy5kYi5vbnZlcnNpb25jaGFuZ2UpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi5qczogQWRkZWQu
CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGRlbGV0ZVN1Y2Nlc3MpOgorICAgICAgICAodXBn
cmFkZU5lZWRlZC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlKToKKyAgICAgICAgKHVwZ3JhZGVOZWVk
ZWQpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9zZXR2ZXJzaW9uLXVwZ3JhZGVuZWVkZWQtaW50ZXJ0d2luZWQuanM6IEFkZGVk
LgorICAgICAgICAodGVzdCk6CisgICAgICAgIChkZWxldGVTdWNjZXNzKToKKyAgICAgICAgKG9w
ZW5TdWNjZXNzKToKKyAgICAgICAgKGluU2V0VmVyc2lvbik6CisgICAgICAgIChzZXRWZXJzaW9u
RG9uZSk6CisgICAgICAgIChzZWNvbmRPcGVuKToKKyAgICAgICAgKGZpcnN0VXBncmFkZU5lZWRl
ZCk6CisgICAgICAgICh0cmFuc2FjdGlvbkNvbXBsZXRlZCk6CisgICAgICAgIChmaXJzdE9wZW5X
aXRoVmVyc2lvbik6CisgICAgICAgIChzZXRWZXJzaW9uTm90QWxsb3dlZCk6CisgICAgICAgIChl
cnJvcldoZW5UcnlpbmdMb3dWZXJzaW9uKToKKyAgICAgICAgKHNlY29uZFVwZ3JhZGVOZWVkZWQp
OgorICAgICAgICAodGhpcmRPcGVuU3VjY2Vzcyk6CisKIDIwMTItMDctMjYgIE5heWFuIEt1bWFy
IEsgIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBbV2ViR0xdIEluaXRpYWwgc2l6
ZSBvZiBjYW52YXMgY2FuIGJlIGxhcmdlciB0aGFuIE1BWF9WSUVXUE9SVF9ESU1TLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNjQxMzkw
OTA0ZjY3Mjc4NTZiN2YwZjZiNzkzMTZiMjIxYmE5YjBjYy4uZmVhNTk5MDYwNThhMDIzY2Y1NzE1
MjA1NmJhNDQwNGU1NTk2NDMxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9UZXN0RXhwZWN0YXRpb25zCkBAIC01MTcsNiArNTE3LDggQEAgV09OVEZJWCBTS0lQIDogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXNoYXJlZC13b3JrZXIuaHRtbCA9IFBB
U1MKIFdPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYWxsb3dlZC5odG1sID0gVEVYVAogV09OVEZJ
WCBTS0lQIDogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvc2hhcmVk
LXdvcmtlci1jb25uZWN0LXNyYy1ibG9ja2VkLmh0bWwgPSBURVhUCiBXT05URklYIFNLSVAgOiBz
dG9yYWdlL2luZGV4ZWRkYi9iYXNpY3Mtc2hhcmVkLXdvcmtlcnMuaHRtbCA9IFBBU1MKK1dPTlRG
SVggU0tJUCA6IHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tZGVsZXRlLWluLXVwZ3JhZGVu
ZWVkZWQuaHRtbCA9IFBBU1MKK1dPTlRGSVggU0tJUCA6IHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZl
cnNpb24tZG9udC1mcmVlemUtb24tcmVmcmVzaC5odG1sID0gUEFTUwogCiAvLyB0ZXN0X3NoZWxs
IGRvZXMgbm90IHN1cHBvcnQgbWVzc2FnZSBwb3J0cwogQlVHV0s3NDQ1OSBTS0lQIDogZmFzdC93
b3JrZXJzL3Rlcm1pbmF0aW9uLXdpdGgtcG9ydC1tZXNzYWdlcy5odG1sID0gUEFTUwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvYWJvcnQtaW4taW5pdGlhbC11cGdy
YWRlbmVlZGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Fi
b3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU5
NmU4ZDk3MTFkYjAwMDVhMGZlMzJlYzlhNmNhNjYyOGJmNWFmMAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Fib3J0LWluLWluaXRpYWwtdXBncmFkZW5l
ZWRlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorVGVzdCB0aGF0IGFuIGFib3J0IGlu
IHRoZSBpbml0aWFsIHVwZ3JhZGVuZWVkZWQgc2V0cyB2ZXJzaW9uIGJhY2sgdG8gMAorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwg
c2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4
ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5h
bWUpCitpbmRleGVkREIub3BlbihkYm5hbWUsIDIpCisKK3VwZ3JhZGVOZWVkZWQoKToKK1BBU1Mg
ZGIudmVyc2lvbiBpcyAyCit0cmFuc2FjdGlvbi5hYm9ydCgpCisKK29uQWJvcnQoKToKK0ZBSUwg
ZXZlbnQudGFyZ2V0LmRiLnZlcnNpb24gc2hvdWxkIGJlIDAuIFdhcyAyLgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYWJvcnQtaW4taW5pdGlhbC11cGdy
YWRlbmVlZGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2lu
dHZlcnNpb24tYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lZTk2ZThkOTcxMWRiMDAwNWEwZmUzMmVjOWE2Y2E2NjI4YmY1YWYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hYm9y
dC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAK
K1Rlc3QgdGhhdCBhbiBhYm9ydCBpbiB0aGUgaW5pdGlhbCB1cGdyYWRlbmVlZGVkIHNldHMgdmVy
c2lvbiBiYWNrIHRvIDAKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWRE
QiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5k
ZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitpbmRleGVk
REIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQoraW5kZXhlZERCLm9wZW4oZGJuYW1lLCAyKQorCit1
cGdyYWRlTmVlZGVkKCk6CitQQVNTIGRiLnZlcnNpb24gaXMgMgordHJhbnNhY3Rpb24uYWJvcnQo
KQorCitvbkFib3J0KCk6CitGQUlMIGV2ZW50LnRhcmdldC5kYi52ZXJzaW9uIHNob3VsZCBiZSAw
LiBXYXMgMi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9u
LWFib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iMmVkNDA2MmU1ODZkYWY2ZDUwNjkyN2MwZGQ0MjJjNjhkNDIyNmRjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lv
bi1hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hYm9ydC1p
bi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJz
aW9uLWFuZC1zZXR2ZXJzaW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2ludHZlcnNpb24tYW5kLXNldHZlcnNpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjUwYWQ0NmJjZjViMDdiN2RkNzczNGE4ZDQyNmMwYjVhODg2ZWI2ZGYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWFuZC1zZXR2ZXJz
aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDgyIEBACitUZXN0IHRoYXQgYmxhaCBibGFoLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVk
REIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5t
c0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFz
ZShkYm5hbWUpCitGQUlMIFN0cmluZyhyZXF1ZXN0KSBzaG91bGQgYmUgW29iamVjdCBJREJPcGVu
REJSZXF1ZXN0XS4gV2FzIFtvYmplY3QgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3RdLgorCitDYWxs
IG9wZW4gd2l0aCBubyB2ZXJzaW9uIHBhcmFtZXRlcjoKK2luZGV4ZWREQi5vcGVuKGRibmFtZSkK
Kworb3BlblN1Y2Nlc3MoKToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBkYi52ZXJz
aW9uIGlzICIiCityZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigic29tZSB2ZXJzaW9uIikKKworaW5T
ZXRWZXJzaW9uKCk6CitQQVNTIGRiLnZlcnNpb24gaXMgInNvbWUgdmVyc2lvbiIKKworc2V0VmVy
c2lvbkRvbmUoKToKK1BBU1MgZGIudmVyc2lvbiBpcyAic29tZSB2ZXJzaW9uIgorZGIuY2xvc2Uo
KQoraW5kZXhlZERCLm9wZW4oZGJuYW1lKQorcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZWNvbmRPcGVu
CisKK3NlY29uZE9wZW4oKToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBTdHJpbmco
ZGIpIGlzICJbb2JqZWN0IElEQkRhdGFiYXNlXSIKK1BBU1MgZGIudmVyc2lvbiBpcyAic29tZSB2
ZXJzaW9uIgorZGIuY2xvc2UoKQorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgMikK
KworZmlyc3RVcGdyYWRlTmVlZGVkKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1Mg
U3RyaW5nKGRiKSBpcyAiW29iamVjdCBJREJEYXRhYmFzZV0iCitQQVNTIFN0cmluZyhyZXF1ZXN0
LnRyYW5zYWN0aW9uKSBpcyAiW29iamVjdCBJREJUcmFuc2FjdGlvbl0iCitGQUlMIGV2ZW50Lm9s
ZFZlcnNpb24gc2hvdWxkIGJlIHNvbWUgdmVyc2lvbiAob2YgdHlwZSBzdHJpbmcpLiBXYXMgMCAo
b2YgdHlwZSBudW1iZXIpLgorUEFTUyBldmVudC5uZXdWZXJzaW9uIGlzIDIKK3JlcXVlc3QudHJh
bnNhY3Rpb24ub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGVkCisKK3RyYW5zYWN0aW9u
Q29tcGxldGVkKCk6CitkaWRUcmFuc2FjdGlvbkNvbXBsZXRlID0gdHJ1ZQorCitmaXJzdE9wZW5X
aXRoVmVyc2lvbigpOgorUEFTUyBkaWRUcmFuc2FjdGlvbkNvbXBsZXRlIGlzIHRydWUKK2RiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBTdHJpbmcoZGIpIGlzICJbb2JqZWN0IElEQkRhdGFi
YXNlXSIKK1BBU1MgcmVxdWVzdC50cmFuc2FjdGlvbiBpcyBudWxsCitQQVNTIGRiLnZlcnNpb24g
aXMgMgorUEFTUyBTdHJpbmcocmVxdWVzdCkgaXMgIltvYmplY3QgSURCT3BlbkRCUmVxdWVzdF0i
CityZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigic3RyaW5nIHZlcnNpb24gMiIpCitQQVNTIFN0cmlu
ZyhyZXF1ZXN0KSBpcyAiW29iamVjdCBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdF0iCityZXF1ZXN0
Lm9uZXJyb3IgPSBzZXRWZXJzaW9uTm90QWxsb3dlZAorCitzZXRWZXJzaW9uTm90QWxsb3dlZCgp
OgorUEFTUyBldmVudC50eXBlIGlzICJlcnJvciIKK3JlcXVlc3Qud2Via2l0RXJyb3JNZXNzYWdl
ID0gWW91IGNhbid0IHVzZSB0aGUgc2V0VmVyc2lvbiBmdW5jdGlvbiBpZiB5b3UndmUgYWxyZWFk
eSBzZXQgdGhlIHZlcnNpb24gdGhyb3VnaCBhbiBvcGVuIGNhbGwuICBUaGUgY3VycmVudCBpbnRl
Z2VyIHZlcnNpb24gaXMgMgorZGIuY2xvc2UoKQorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRi
bmFtZSwgMSkKK3JlcXVlc3Qub25lcnJvciA9IGVycm9yV2hlblRyeWluZ0xvd1ZlcnNpb24KKwor
ZXJyb3JXaGVuVHJ5aW5nTG93VmVyc2lvbigpOgorcmVxdWVzdC53ZWJraXRFcnJvck1lc3NhZ2Ug
PSBUaGUgcmVxdWVzdGVkIHZlcnNpb24gKDEpIGlzIGxlc3MgdGhhbiB0aGUgZXhpc3RpbmcgdmVy
c2lvbiAoMikuCityZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCA0KQorcmVxdWVzdC5v
bnVwZ3JhZGVuZWVkZWQgPSBzZWNvbmRVcGdyYWRlTmVlZGVkCityZXF1ZXN0Lm9uc3VjY2VzcyA9
IHRoaXJkT3BlblN1Y2Nlc3MKKworc2Vjb25kVXBncmFkZU5lZWRlZCgpOgorZ290U2Vjb25kVXBn
cmFkZU5lZWRlZCA9IHRydWUKK1BBU1MgZXZlbnQub2xkVmVyc2lvbiBpcyAyCitQQVNTIGV2ZW50
Lm5ld1ZlcnNpb24gaXMgNAorCit0aGlyZE9wZW5TdWNjZXNzKCk6CitQQVNTIGdvdFNlY29uZFVw
Z3JhZGVOZWVkZWQgaXMgdHJ1ZQorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGRiLnZl
cnNpb24gaXMgNAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNp
b24tYW5kLXNldHZlcnNpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2lu
dHZlcnNpb24tYW5kLXNldHZlcnNpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjA4MmE3NjQ5YTY1ZjU5
MjQ2N2ZiZTZmMTQ0NDQwMGJhNGI3NTI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hbmQtc2V0dmVyc2lvbi5odG1sCkBAIC0wLDAg
KzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
aGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NldHZlcnNpb24tdXBncmFkZW5lZWRlZC1pbnRlcnR3aW5lZC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2ludHZlcnNpb24tYmxvY2tlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWJsb2NrZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjVmNTBkNTE4NjFmOThkNzhkNGI5NGIzNWQyZjdlODYxZDYxYTZjMzIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWJsb2NrZWQt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTEgQEAKK1Rlc3QgdGhhdCBibG9ja2VkIGV2ZW50cyBn
ZXQgZGVsaXZlcmVkIHByb3Blcmx5IHdpdGggdGhlIG5ldyBvcGVuIGFwaQorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53
ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8
fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCisK
K2RlbGV0ZVN1Y2Nlc3MoKToKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDIpCisK
K3JlcXVlc3Qub251cGdyYWRlbmVlZGVkKCk6Citnb3RGaXJzdFVwZ3JhZGVOZWVkZWRFdmVudCA9
IHRydWUKK1BBU1MgZXZlbnQub2xkVmVyc2lvbiBpcyAwCitQQVNTIGV2ZW50Lm5ld1ZlcnNpb24g
aXMgMgorUEFTUyBTdHJpbmcoZXZlbnQpIGlzICJbb2JqZWN0IElEQlVwZ3JhZGVOZWVkZWRFdmVu
dF0iCisKK2ZpcnN0U3VjY2Vzc0V2ZW50SGFuZGxlcigpOgorUEFTUyBnb3RGaXJzdFVwZ3JhZGVO
ZWVkZWRFdmVudCBpcyB0cnVlCitjb25uZWN0aW9uMSA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK2Nv
bm5lY3Rpb24xLm9udmVyc2lvbmNoYW5nZSA9IHZlcnNpb25DaGFuZ2VIYW5kbGVyCitQQVNTIFN0
cmluZyhjb25uZWN0aW9uMSkgaXMgIltvYmplY3QgSURCRGF0YWJhc2VdIgorcmVxdWVzdCA9IGlu
ZGV4ZWREQi5vcGVuKGRibmFtZSwgMykKKwordmVyc2lvbkNoYW5nZUhhbmRsZXIoKToKK3Nhd1Zl
cnNpb25DaGFuZ2VFdmVudCA9IHRydWUKK1BBU1MgZXZlbnQudHlwZSBpcyAidmVyc2lvbmNoYW5n
ZSIKK0ZBSUwgU3RyaW5nKGV2ZW50KSBzaG91bGQgYmUgW29iamVjdCBJREJWZXJzaW9uQ2hhbmdl
RXZlbnRdLiBXYXMgW29iamVjdCBJREJVcGdyYWRlTmVlZGVkRXZlbnRdLgorUEFTUyBldmVudC5v
bGRWZXJzaW9uIGlzIDIKK1BBU1MgZXZlbnQubmV3VmVyc2lvbiBpcyAzCisKK2Jsb2NrZWRFdmVu
dEhhbmRsZXIoKToKK1BBU1Mgc2F3VmVyc2lvbkNoYW5nZUV2ZW50IGlzIHRydWUKK2dvdEJsb2Nr
ZWRFdmVudCA9IHRydWUKK0ZBSUwgU3RyaW5nKGV2ZW50KSBzaG91bGQgYmUgW29iamVjdCBJREJW
ZXJzaW9uQ2hhbmdlRXZlbnRdLiBXYXMgW29iamVjdCBJREJVcGdyYWRlTmVlZGVkRXZlbnRdLgor
UEFTUyBldmVudC5vbGRWZXJzaW9uIGlzIDIKK1BBU1MgZXZlbnQubmV3VmVyc2lvbiBpcyAzCitQ
QVNTIGV2ZW50LnR5cGUgaXMgImJsb2NrZWQiCitjb25uZWN0aW9uMS5jbG9zZSgpCisKK3NlY29u
ZFVwZ3JhZGVOZWVkZWRFdmVudEhhbmRsZXIoKToKK1BBU1MgZ290QmxvY2tlZEV2ZW50IGlzIHRy
dWUKK2dvdFNlY29uZFVwZ3JhZGVOZWVkZWRFdmVudCA9IHRydWUKKworc2Vjb25kU3VjY2Vzc0Nh
bGxiYWNrKCk6CitQQVNTIGdvdFNlY29uZFVwZ3JhZGVOZWVkZWRFdmVudCBpcyB0cnVlCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1ibG9ja2VkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWJsb2NrZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44NjgyNTMzOWFkNjc1ZmJjNWUwNzIzMWVkOTYwNjNjZDhlMzkwMGM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1i
bG9ja2VkLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24tYmxvY2tlZC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtYmV0d2Vlbi1ldmVudHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9zZS1i
ZXR3ZWVuLWV2ZW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjgwOTFmNWJkNWQ1MDgxNzY4
MjBjZjRjZDkyZDUzODZiYjM1Nzg4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtYmV0d2Vlbi1ldmVudHMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMzMgQEAKK1Rlc3QgdGhhdCBzcGVjaWZ5aW5nIGEgdmVyc2lvbiB3aGVu
IG9wZW5pbmcgYSBub24tZXhpc3RlbnQgZGIgY2F1c2VzIGFuIHVwZ3JhZGVuZWVkZWQgZXZlbnQg
YW5kIHRoYXQgdGhlIHZlcnNpb24gbnVtYmVyIGlzIHNldCBjb3JyZWN0bHkuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxm
LndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERC
IHx8IHNlbGYuT0luZGV4ZWREQjsKKworaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkK
K3JlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDcpCisKKwordXBncmFkZU5lZWRlZCgp
OgorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGV2ZW50Lm5ld1ZlcnNpb24gaXMgNwor
dHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQudHJhbnNhY3Rpb24KKwordHJhbnNhY3Rpb24ub25j
b21wbGV0ZToKK3Nhd1RyYW5zYWN0aW9uQ29tcGxldGUgPSB0cnVlCitzZXRUaW1lb3V0KGNsb3Nl
REIsIDApCisKK29wZW5TdWNjZXNzKCk6CitQQVNTIGRpZENhbGxDbG9zZURCIGlzIGZhbHNlCitQ
QVNTIHNhd1RyYW5zYWN0aW9uQ29tcGxldGUgaXMgdHJ1ZQorZGIgPSBldmVudC50YXJnZXQucmVz
dWx0CitQQVNTIGRiLnZlcnNpb24gaXMgNworCitjbG9zZURCKCk6CitkaWRDYWxsQ2xvc2VEQiA9
IHRydWUKK2RiLmNsb3NlKCkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9p
bnR2ZXJzaW9uLWNsb3NlLWJldHdlZW4tZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNsb3NlLWJldHdlZW4tZXZlbnRzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2Q2M2FkOTBmZjdhNTc3MTY1NTQxNjUzMzkyMWEzZDAxZDJjMzM5OQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtYmV0
d2Vlbi1ldmVudHMuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1jbG9zZS1iZXR3
ZWVuLWV2ZW50cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtaW4t
b25jb21wbGV0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9p
bnR2ZXJzaW9uLWNsb3NlLWluLW9uY29tcGxldGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAw
Mzc3N2JkNDYzZGMyMzE5YTZlMGZjZjQ2NmRiZTNhYjkyOTVhNWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNsb3NlLWluLW9uY29t
cGxldGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzIgQEAKK1Rlc3QgdGhhdCBzcGVjaWZ5aW5n
IGEgdmVyc2lvbiB3aGVuIG9wZW5pbmcgYSBub24tZXhpc3RlbnQgZGIgY2F1c2VzIGFuIHVwZ3Jh
ZGVuZWVkZWQgZXZlbnQgYW5kIHRoYXQgdGhlIHZlcnNpb24gbnVtYmVyIGlzIHNldCBjb3JyZWN0
bHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmlu
ZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBz
ZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworaW5kZXhlZERCLmRlbGV0ZURh
dGFiYXNlKGRibmFtZSkKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDcpCisKK3Vw
Z3JhZGVOZWVkZWQoKToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBldmVudC5uZXdW
ZXJzaW9uIGlzIDcKK2RiLmNyZWF0ZU9iamVjdFN0b3JlKCJvcyIpCit0cmFuc2FjdGlvbiA9IGV2
ZW50LnRhcmdldC50cmFuc2FjdGlvbgorCit0cmFuc2FjdGlvbi5vbmNvbXBsZXRlOgorc2F3VHJh
bnNhY3Rpb25Db21wbGV0ZSA9IHRydWUKK2RiLmNsb3NlKCkKKworb3BlblN1Y2Nlc3MoKToKK1BB
U1Mgc2F3VHJhbnNhY3Rpb25Db21wbGV0ZSBpcyB0cnVlCitkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQKK1BBU1MgZGIudmVyc2lvbiBpcyA3CitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gdHJhbnNh
Y3Rpb24gPSBkYi50cmFuc2FjdGlvbignb3MnLCAncmVhZHdyaXRlJykKK1BBU1MgRXhjZXB0aW9u
IHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJS
CitQQVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVFcnJvcicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNsb3NlLWluLW9uY29tcGxldGUuaHRtbCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtaW4tb25jb21wbGV0
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmYyNTM3ZDlkMzUwM2U0Zjk0MTAxZmEyMmViZTJjYzA0YjU0NDY5
YTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2
ZXJzaW9uLWNsb3NlLWluLW9uY29tcGxldGUuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcGVuLXdpdGgtdmVy
c2lvbi1jbG9zZS1pbi1vbmNvbXBsZXRlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVy
c2lvbi1kZWxldGUtaW4tdXBncmFkZW5lZWRlZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvaW50dmVyc2lvbi1kZWxldGUtaW4tdXBncmFkZW5lZWRlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmMyNTI2MDRkOWMwMjViNjYwYjhhMGI2MzZjNjgzZDBkMDEzZGU2YTAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWRlbGV0ZS1p
bi11cGdyYWRlbmVlZGVkLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24td2l0aC1k
ZWxldGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWRvbnQtZnJlZXplLW9u
LXJlZnJlc2guaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24t
ZG9udC1mcmVlemUtb24tcmVmcmVzaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5OTg5MTBmYmE5YWQ1MWM4
OGJmZTQwNDE0YmVkNDU5ZGZmMGY3ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWRvbnQtZnJlZXplLW9uLXJlZnJlc2guaHRtbApA
QCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9kb250LWZyZWV6ZS1vbi1yZWZyZXNoLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvaW50dmVyc2lvbi1vbWl0LXBhcmFtZXRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9taXQtcGFyYW1ldGVyLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kMTgwMDUxMTAxZTI1OTY3OGI3OTY0YTA0YjQxZTUzODQ4MTZhODU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1v
bWl0LXBhcmFtZXRlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGVzdCB0aGF0IGlu
aXRpYWwgdmVyc2lvbiBhZnRlciBhIHN1Y2Nlc3NmdWwgb3BlbiBvZiBhIG5vbi1leGlzdGVudCBk
YiBpcyAxCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxm
LmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8
fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworaW5kZXhlZERCLmRlbGV0
ZURhdGFiYXNlKGRibmFtZSkKK2luZGV4ZWREQi5vcGVuKGRibmFtZSkKKworb3BlblN1Y2Nlc3Mo
KToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorVGVzdCBsaW5lIGZyb20gSURCRmFjdG9yeS5v
cGVuOiBJZiBubyB2ZXJzaW9uIGlzIHNwZWNpZmllZCBhbmQgbm8gZGF0YWJhc2UgZXhpc3RzLCBz
ZXQgZGF0YWJhc2UgdmVyc2lvbiB0byAxLgorRkFJTCBkYi52ZXJzaW9uIHNob3VsZCBiZSAxIChv
ZiB0eXBlIG51bWJlcikuIFdhcyAgKG9mIHR5cGUgc3RyaW5nKS4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9taXQtcGFyYW1ldGVyLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9taXQtcGFyYW1ldGVyLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTViZGU4MzZiYjliOTcxNDFmNjdiYWJiMDRjNjI1YjNlNTNjOWU1YgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24t
b21pdC1wYXJhbWV0ZXIuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1pbml0aWFs
LXZlcnNpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9wZW4td2l0aC12
ZXJzaW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZl
cnNpb24tb3Blbi13aXRoLXZlcnNpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5NmRiOTc1
YWNjYmE4ZjQ4MWM3ZTcxMWQ3YTkzYTY3NjM0NjU3N2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9wZW4td2l0aC12ZXJzaW9uLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQ1IEBACitUZXN0IHRoYXQgc3BlY2lmeWluZyBhIHZlcnNp
b24gd2hlbiBvcGVuaW5nIGEgbm9uLWV4aXN0ZW50IGRiIGNhdXNlcyBhbiB1cGdyYWRlbmVlZGVk
IGV2ZW50IGFuZCB0aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBpcyBzZXQgY29ycmVjdGx5LgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIg
fHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0lu
ZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShk
Ym5hbWUpCitTaG91bGQgdHJpZ2dlcjoKKzQuMS40OiBJZiBubyBkYXRhYmFzZSB3aXRoIHRoZSBn
aXZlbiBuYW1lIGZyb20gdGhlIG9yaWdpbiBvcmlnaW4gd2FzIGZvdW5kLCBvciBpZiBpdCB3YXMg
ZGVsZXRlZCBkdXJpbmcgdGhlIHByZXZpb3VzIHN0ZXAsIHRoZW4gY3JlYXRlIGEgZGF0YWJhc2Ug
d2l0aCBuYW1lIG5hbWUsIHdpdGggMCBhcyB2ZXJzaW9uLCBhbmQgd2l0aCBubyBvYmplY3Qgc3Rv
cmVzLiBMZXQgZGIgYmUgdGhlIG5ldyBkYXRhYmFzZS4KKzQuMS42OiBDcmVhdGUgYSBuZXcgY29u
bmVjdGlvbiB0byBkYiBhbmQgbGV0IGNvbm5lY3Rpb24gcmVwcmVzZW50IGl0LgorNC4xLjc6IElm
IHRoZSB2ZXJzaW9uIG9mIGRiIGlzIGxvd2VyIHRoYW4gdmVyc2lvbiwgdGhlbiBydW4gdGhlIHN0
ZXBzIGZvciBydW5uaW5nIGEgInZlcnNpb25jaGFuZ2UiIHRyYW5zYWN0aW9uIHVzaW5nIGNvbm5l
Y3Rpb24sIHZlcnNpb24sIHJlcXVlc3QgYW5kIHVwZ3JhZGUgY2FsbGJhY2suCis0LjEuOTogUmV0
dXJuIGNvbm5lY3Rpb24uCityZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCA3KQorUEFT
UyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KHJlcXVlc3QpIGlzICJbb2JqZWN0IElE
Qk9wZW5EQlJlcXVlc3RdIgorCitQQVNTIEluIHRoZSB1cGdyYWRlbmVlZGVkIGV2ZW50IGhhbmRl
cjoKK1Rlc3QgNC44LjkuMToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBPYmplY3Qu
cHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KGRiKSBpcyAiW29iamVjdCBJREJEYXRhYmFzZV0iCitU
ZXN0IDQuOC45LjM6CitQQVNTIGV2ZW50Lm9sZFZlcnNpb24gaXMgMAorUEFTUyBldmVudC5uZXdW
ZXJzaW9uIGlzIDcKK1BBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgImRvbmUiCitUZXN0
IDQuMS40OgorUEFTUyBkYi5uYW1lIGlzIGRibmFtZQorUEFTUyBkYi52ZXJzaW9uIGlzIDcKK1BB
U1MgZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMAordHJhbnNhY3Rpb24gPSBldmVudC50
YXJnZXQudHJhbnNhY3Rpb24KK1BBU1MgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseSh0
cmFuc2FjdGlvbikgaXMgIltvYmplY3QgSURCVHJhbnNhY3Rpb25dIgorb3MgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgic29tZU9TIikKK3Nhd1RyYW5zYWN0aW9uQ29tcGxldGUgPSB0cnVlCisKK29w
ZW5TdWNjZXNzKCk6CitUZXN0IDQuMS43LCB0aGF0IGEgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlv
biB3YXMgcnVuLgorUEFTUyBzYXdVcGdyYWRlTmVlZGVkIGlzIHRydWUKK1BBU1Mgc2F3VHJhbnNh
Y3Rpb25Db21wbGV0ZSBpcyB0cnVlCitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK0tpbmQgb2Yg
dGVzdCA0LjEuOToKK1BBU1MgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShkYikgaXMg
IltvYmplY3QgSURCRGF0YWJhc2VdIgorUEFTUyBkYi52ZXJzaW9uIGlzIDcKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9wZW4td2l0aC12ZXJzaW9uLmh0
bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9wZW4td2l0aC12
ZXJzaW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2JhNmYwYjcyYmZiNjU2ZjQwMThlOTU4OGM0Mjc5NGEx
YTBkNGFjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2ludHZlcnNpb24tb3Blbi13aXRoLXZlcnNpb24uaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcGVuLXdpdGgt
dmVyc2lvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0aC12ZXJzaW9uLWluaXRp
YWwtdmVyc2lvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
cGVuLXdpdGgtdmVyc2lvbi1pbml0aWFsLXZlcnNpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQxODAwNTExMDFlMjU5Njc4Yjc5NjRhMDRiNDFlNTM4NDgxNmE4NTYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi1pbml0
aWFsLXZlcnNpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1Rlc3QgdGhhdCBpbml0
aWFsIHZlcnNpb24gYWZ0ZXIgYSBzdWNjZXNzZnVsIG9wZW4gb2YgYSBub24tZXhpc3RlbnQgZGIg
aXMgMQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5p
bmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwg
c2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWREQi5kZWxldGVE
YXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3BlbihkYm5hbWUpCisKK29wZW5TdWNjZXNzKCk6
CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1Rlc3QgbGluZSBmcm9tIElEQkZhY3Rvcnkub3Bl
bjogSWYgbm8gdmVyc2lvbiBpcyBzcGVjaWZpZWQgYW5kIG5vIGRhdGFiYXNlIGV4aXN0cywgc2V0
IGRhdGFiYXNlIHZlcnNpb24gdG8gMS4KK0ZBSUwgZGIudmVyc2lvbiBzaG91bGQgYmUgMSAob2Yg
dHlwZSBudW1iZXIpLiBXYXMgIChvZiB0eXBlIHN0cmluZykuCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24td2l0aC1kZWxldGUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24td2l0
aC1kZWxldGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3OGYzYWFhYTM2OGNiMjZlMDY1MTRh
Yjk3M2UzN2U3MTc1NjdjOWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi13aXRoLWRlbGV0ZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwzNSBAQAorVGVzdCB0aGF0IGEgZGVsZXRlRGF0YWJhc2UgY2FsbGVkIHdoaWxlIGhh
bmRsaW5nIGFuIHVwZ3JhZGVuZWVkZWQgZXZlbnQgaXMgcXVldWVkIGFuZCBmaXJlcyBpdHMgZXZl
bnRzIGF0IHRoZSByaWdodCB0aW1lCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitp
bmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxm
Lm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKwor
aW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKKworaW5pdGlhbGx5RGVsZXRlZCgpOgor
cmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgMSkKKworZmlyc3RVcGdyYWRlTmVlZGVk
KCk6CitQQVNTIHNhd0ZpcnN0VXBncmFkZU5lZWRlZCBpcyBmYWxzZQorc2F3Rmlyc3RVcGdyYWRl
TmVlZGVkID0gdHJ1ZQorUEFTUyBldmVudC5vbGRWZXJzaW9uIGlzIDAKK1BBU1MgZXZlbnQubmV3
VmVyc2lvbiBpcyAxCitkZWxldGVSZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRi
bmFtZSkKKworbWlkUmVxdWVzdERlbGV0ZSgpOgorCitmaXJzdFVwZ3JhZGVOZWVkZWQoKToKK0ZB
SUwgc2F3Rmlyc3RVcGdyYWRlTmVlZGVkIHNob3VsZCBiZSBmYWxzZS4gV2FzIHRydWUuCitzYXdG
aXJzdFVwZ3JhZGVOZWVkZWQgPSB0cnVlCitQQVNTIGV2ZW50Lm9sZFZlcnNpb24gaXMgMAorUEFT
UyBldmVudC5uZXdWZXJzaW9uIGlzIDEKKworcmVxdWVzdC5vbnN1Y2Nlc3MoKToKK1BBU1Mgc2F3
Rmlyc3RVcGdyYWRlTmVlZGVkIGlzIHRydWUKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFT
UyBkYi52ZXJzaW9uIGlzIDEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2Fib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRl
ZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iNWUxYWU2ZjM3NjVmMjQ0ODNmNGRiNGI1YzM3YzkxMDMzNWM4NDlk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2Fib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC5qcwpAQCAtMCwwICsxLDQ2IEBACitp
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFy
ZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBhbiBhYm9ydCBpbiB0aGUgaW5p
dGlhbCB1cGdyYWRlbmVlZGVkIHNldHMgdmVyc2lvbiBiYWNrIHRvIDAiKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5hbWUgPSBzZWxm
LmxvY2F0aW9uLnBhdGhuYW1lLnN1YnN0cmluZygxICsgc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5s
YXN0SW5kZXhPZigiLyIpKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
ZGVsZXRlRGF0YWJhc2UoZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRl
U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gZGVsZXRlU3VjY2VzcyhldnQpIHsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAyKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRl
ZCA9IHVwZ3JhZGVOZWVkZWQ7Cit9CisKK2Z1bmN0aW9uIHVwZ3JhZGVOZWVkZWQoZXZ0KQorewor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidXBncmFkZU5lZWRlZCgpOiIpOworICAgIGV2ZW50
ID0gZXZ0OworICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICBzaG91bGRCZSgiZGIu
dmVyc2lvbiIsICIyIik7CisgICAgdHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQudHJhbnNhY3Rp
b247CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxi
YWNrOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBvbkFib3J0OworICAgIGV2YWxBbmRMb2co
InRyYW5zYWN0aW9uLmFib3J0KCkiKTsKK30KKworZnVuY3Rpb24gb25BYm9ydChldnQpCit7Cisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJvbkFib3J0KCk6Iik7CisgICAgZXZlbnQgPSBldnQ7
CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5kYi52ZXJzaW9uIiwgIjAiKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RvbnQtZnJlZXplLW9uLXJlZnJlc2guanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZG9udC1mcmVlemUtb24tcmVmcmVzaC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45YWUzMjVkMWIxNWU0MWIxYTY4ZTExNjBlMDllNzcxODQ4NjU5YTRmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2RvbnQtZnJlZXplLW9uLXJlZnJlc2guanMKQEAgLTAsMCArMSw1NyBAQAoraWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9
CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgc3BlY2lmeWluZyBhIHZlcnNpb24gd2hlbiBvcGVu
aW5nIGEgbm9uLWV4aXN0ZW50IGRiIGNhdXNlcyBhbiB1cGdyYWRlbmVlZGVkIGV2ZW50IGFuZCB0
aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBpcyBzZXQgY29ycmVjdGx5LiIpOworCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIGRibmFtZSA9IHNlbGYu
bG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKDEgKyBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lLmxh
c3RJbmRleE9mKCIvIikpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5k
ZWxldGVEYXRhYmFzZShkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVT
dWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBkZWxldGVTdWNjZXNzKGV2dCkgeworICAgIGV2YWxBbmRMb2coInJlcXVl
c3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHVwZ3JhZGVOZWVk
ZWQ7CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOwor
ICAgIGRlYnVnKCIiKTsKK30KKwordmFyIHNhd1RyYW5zYWN0aW9uQ29tcGxldGUgPSBmYWxzZTsK
K2Z1bmN0aW9uIHVwZ3JhZGVOZWVkZWQoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygidXBncmFkZU5lZWRlZCgpOiIpOworICAgIGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlKCJldmVudC5uZXdWZXJz
aW9uIiwgIjciKTsKKworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0
LnRyYW5zYWN0aW9uIik7CisgICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOworICAgIHRyYW5z
YWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlv
bi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZSkKKyAgICB7CisgICAgICAgIGRlYnVnKCIiKTsKKyAg
ICAgICAgZGVidWcoInRyYW5zYWN0aW9uLm9uY29tcGxldGU6Iik7CisgICAgICAgIGV2YWxBbmRM
b2coInNhd1RyYW5zYWN0aW9uQ29tcGxldGUgPSB0cnVlIik7CisgICAgfQorfQorCitmdW5jdGlv
biBvcGVuU3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlVHJ1ZSgic2F3VHJhbnNh
Y3Rpb25Db21wbGV0ZSIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisgICAgc2hvdWxkQmUoJ2RiLnZlcnNpb24nLCAiNyIpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24tYmxvY2tlZC5qcyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1ibG9ja2Vk
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFhNDk0NWFkZjEzMjQyNDgzM2VlNzU0NTNlYzdiMTEwM2QxMTM0OGEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvb3Blbi13aXRoLXZlcnNpb24tYmxvY2tlZC5qcwpAQCAtMCwwICsxLDk2IEBACitpZiAodGhp
cy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMn
KTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBibG9ja2VkIGV2ZW50cyBnZXQgZGVsaXZl
cmVkIHByb3Blcmx5IHdpdGggdGhlIG5ldyBvcGVuIGFwaSIpOworCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIGRibmFtZSA9IHNlbGYubG9jYXRp
b24ucGF0aG5hbWUuc3Vic3RyaW5nKDEgKyBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lLmxhc3RJbmRl
eE9mKCIvIikpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0
YWJhc2UoZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gZGVsZXRlU3VjY2VzcyhldnQpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImRl
bGV0ZVN1Y2Nlc3MoKToiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9w
ZW4oZGJuYW1lLCAyKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZmlyc3RTdWNjZXNzRXZl
bnRIYW5kbGVyOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIGdvdEZpcnN0VXBncmFkZU5lZWRlZEV2ZW50ID0gZmFsc2U7CisgICAgcmVxdWVzdC5v
bnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldnQpIHsKKyAgICAgIGV2ZW50ID0gZXZ0OworICAg
ICAgZGVidWcoIiIpOworICAgICAgZGVidWcoInJlcXVlc3Qub251cGdyYWRlbmVlZGVkKCk6Iik7
CisgICAgICBldmFsQW5kTG9nKCJnb3RGaXJzdFVwZ3JhZGVOZWVkZWRFdmVudCA9IHRydWUiKTsK
KyAgICAgIHNob3VsZEJlKCJldmVudC5vbGRWZXJzaW9uIiwgIjAiKTsKKyAgICAgIHNob3VsZEJl
KCJldmVudC5uZXdWZXJzaW9uIiwgIjIiKTsKKyAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
U3RyaW5nKGV2ZW50KSIsICJbb2JqZWN0IElEQlVwZ3JhZGVOZWVkZWRFdmVudF0iKTsKKyAgICB9
Cit9CisKK2dvdEJsb2NrZWRFdmVudCA9IGZhbHNlOworZnVuY3Rpb24gZmlyc3RTdWNjZXNzRXZl
bnRIYW5kbGVyKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoImZpcnN0U3VjY2Vzc0V2ZW50SGFuZGxlcigpOiIpCisgICAgc2hvdWxkQmVUcnVlKCJn
b3RGaXJzdFVwZ3JhZGVOZWVkZWRFdmVudCIpOworICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24x
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24xLm9u
dmVyc2lvbmNoYW5nZSA9IHZlcnNpb25DaGFuZ2VIYW5kbGVyIik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJTdHJpbmcoY29ubmVjdGlvbjEpIiwgIltvYmplY3QgSURCRGF0YWJhc2VdIik7
CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgMykiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNlY29uZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uYmxv
Y2tlZCA9IGJsb2NrZWRFdmVudEhhbmRsZXI7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQg
PSBzZWNvbmRVcGdyYWRlTmVlZGVkRXZlbnRIYW5kbGVyOworfQorCit2YXIgc2F3VmVyc2lvbkNo
YW5nZUV2ZW50ID0gZmFsc2U7CitmdW5jdGlvbiB2ZXJzaW9uQ2hhbmdlSGFuZGxlcihldnQpCit7
CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2ZXJzaW9uQ2hh
bmdlSGFuZGxlcigpOiIpOworICAgIGV2YWxBbmRMb2coInNhd1ZlcnNpb25DaGFuZ2VFdmVudCA9
IHRydWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnR5cGUiLCAidmVyc2lv
bmNoYW5nZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiU3RyaW5nKGV2ZW50KSIsICJb
b2JqZWN0IElEQlZlcnNpb25DaGFuZ2VFdmVudF0iKTsKKyAgICBzaG91bGRCZSgiZXZlbnQub2xk
VmVyc2lvbiIsICIyIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNpb24iLCAiMyIpOwor
fQorCitmdW5jdGlvbiBibG9ja2VkRXZlbnRIYW5kbGVyKGV2dCkKK3sKKyAgICBldmVudCA9IGV2
dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImJsb2NrZWRFdmVudEhhbmRsZXIoKToiKTsK
KyAgICBzaG91bGRCZVRydWUoInNhd1ZlcnNpb25DaGFuZ2VFdmVudCIpOworICAgIGV2YWxBbmRM
b2coImdvdEJsb2NrZWRFdmVudCA9IHRydWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
IlN0cmluZyhldmVudCkiLCAiW29iamVjdCBJREJWZXJzaW9uQ2hhbmdlRXZlbnRdIik7CisgICAg
c2hvdWxkQmUoImV2ZW50Lm9sZFZlcnNpb24iLCAiMiIpOworICAgIHNob3VsZEJlKCJldmVudC5u
ZXdWZXJzaW9uIiwgIjMiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnR5cGUi
LCAiYmxvY2tlZCIpOworICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24xLmNsb3NlKCkiKTsKK30K
KworZ290U2Vjb25kVXBncmFkZU5lZWRlZEV2ZW50ID0gZmFsc2U7CitmdW5jdGlvbiBzZWNvbmRV
cGdyYWRlTmVlZGVkRXZlbnRIYW5kbGVyKGV2dCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoInNlY29uZFVwZ3JhZGVOZWVkZWRFdmVudEhhbmRsZXIoKToiKTsKKyAgICBzaG91bGRCZVRy
dWUoImdvdEJsb2NrZWRFdmVudCIpOworICAgIGV2YWxBbmRMb2coImdvdFNlY29uZFVwZ3JhZGVO
ZWVkZWRFdmVudCA9IHRydWUiKTsKK30KKworZnVuY3Rpb24gc2Vjb25kU3VjY2Vzc0NhbGxiYWNr
KGV2dCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInNlY29uZFN1Y2Nlc3NDYWxsYmFj
aygpOiIpOworICAgIHNob3VsZEJlVHJ1ZSgiZ290U2Vjb25kVXBncmFkZU5lZWRlZEV2ZW50Iik7
CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1jbG9zZS1i
ZXR3ZWVuLWV2ZW50cy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9vcGVuLXdpdGgtdmVyc2lvbi1jbG9zZS1iZXR3ZWVuLWV2ZW50cy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
ZTQ5NzI5M2IxOTU4MWExZWY5OWNlMmZiZjU0MjM2MzhlYjY1MWQyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJz
aW9uLWNsb3NlLWJldHdlZW4tZXZlbnRzLmpzCkBAIC0wLDAgKzEsNjcgQEAKK2lmICh0aGlzLmlt
cG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOwor
fQorCitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IHNwZWNpZnlpbmcgYSB2ZXJzaW9uIHdoZW4gb3Bl
bmluZyBhIG5vbi1leGlzdGVudCBkYiBjYXVzZXMgYW4gdXBncmFkZW5lZWRlZCBldmVudCBhbmQg
dGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaXMgc2V0IGNvcnJlY3RseS4iKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5hbWUgPSBzZWxm
LmxvY2F0aW9uLnBhdGhuYW1lLnN1YnN0cmluZygxICsgc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5s
YXN0SW5kZXhPZigiLyIpKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
ZGVsZXRlRGF0YWJhc2UoZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRl
U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gZGVsZXRlU3VjY2VzcyhldnQpIHsKKyAgICBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCA3KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSB1cGdyYWRlTmVl
ZGVkOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsK
KyAgICBkZWJ1ZygiIik7Cit9CisKK3ZhciBzYXdUcmFuc2FjdGlvbkNvbXBsZXRlID0gZmFsc2U7
CitmdW5jdGlvbiB1cGdyYWRlTmVlZGVkKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoInVwZ3JhZGVOZWVkZWQoKToiKTsKKyAgICBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQubmV3VmVy
c2lvbiIsICI3Iik7CisKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdl
dC50cmFuc2FjdGlvbiIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJv
cnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZSkKKyAg
ICB7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWcoInRyYW5zYWN0aW9uLm9uY29t
cGxldGU6Iik7CisgICAgICAgIGV2YWxBbmRMb2coInNhd1RyYW5zYWN0aW9uQ29tcGxldGUgPSB0
cnVlIik7CisgICAgICAgIGV2YWxBbmRMb2coInNldFRpbWVvdXQoY2xvc2VEQiwgMCkiKTsKKyAg
ICB9Cit9CisKK3ZhciBkaWRDYWxsQ2xvc2VEQiA9IGZhbHNlOworZnVuY3Rpb24gY2xvc2VEQigp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJjbG9zZURCKCk6Iik7CisgICAgZXZhbEFu
ZExvZygiZGlkQ2FsbENsb3NlREIgPSB0cnVlIik7CisgICAgZXZhbEFuZExvZygiZGIuY2xvc2Uo
KSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcyhldnQp
Cit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJvcGVuU3Vj
Y2VzcygpOiIpOworICAgIHNob3VsZEJlRmFsc2UoImRpZENhbGxDbG9zZURCIik7CisgICAgc2hv
dWxkQmVUcnVlKCJzYXdUcmFuc2FjdGlvbkNvbXBsZXRlIik7CisgICAgZGIgPSBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZSgnZGIudmVyc2lvbics
ICI3Iik7Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1jbG9zZS1pbi1vbmNvbXBsZXRlLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJz
aW9uLWNsb3NlLWluLW9uY29tcGxldGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJkOTU4YWEwZTYwZGQ0OTU1
Yzg2OTYzNTkxYjQ5OTdmMjVhZmI5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1jbG9zZS1pbi1vbmNv
bXBsZXRlLmpzCkBAIC0wLDAgKzEsNTggQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigi
VGVzdCB0aGF0IHNwZWNpZnlpbmcgYSB2ZXJzaW9uIHdoZW4gb3BlbmluZyBhIG5vbi1leGlzdGVu
dCBkYiBjYXVzZXMgYW4gdXBncmFkZW5lZWRlZCBldmVudCBhbmQgdGhhdCB0aGUgdmVyc2lvbiBu
dW1iZXIgaXMgc2V0IGNvcnJlY3RseS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1l
LnN1YnN0cmluZygxICsgc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5sYXN0SW5kZXhPZigiLyIpKTsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJu
YW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlU3VjY2VzczsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVs
ZXRlU3VjY2VzcyhldnQpIHsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9w
ZW4oZGJuYW1lLCA3KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Cisg
ICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSB1cGdyYWRlTmVlZGVkOworICAgIHJlcXVlc3Qu
b25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKK30KKwordmFyIHNhd1RyYW5z
YWN0aW9uQ29tcGxldGUgPSBmYWxzZTsKK2Z1bmN0aW9uIHVwZ3JhZGVOZWVkZWQoZXZ0KQorewor
ICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidXBncmFkZU5lZWRl
ZCgpOiIpOworICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAg
IHNob3VsZEJlKCJldmVudC5uZXdWZXJzaW9uIiwgIjciKTsKKyAgICBldmFsQW5kTG9nKCJkYi5j
cmVhdGVPYmplY3RTdG9yZShcIm9zXCIpIik7CisKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlv
biA9IGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbiIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0g
ZnVuY3Rpb24oZSkKKyAgICB7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWcoInRy
YW5zYWN0aW9uLm9uY29tcGxldGU6Iik7CisgICAgICAgIGV2YWxBbmRMb2coInNhd1RyYW5zYWN0
aW9uQ29tcGxldGUgPSB0cnVlIik7CisgICAgICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBldmVudCA9IGV2
dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgc2hv
dWxkQmVUcnVlKCJzYXdUcmFuc2FjdGlvbkNvbXBsZXRlIik7CisgICAgZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmUoJ2RiLnZlcnNpb24nLCAiNyIp
OworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rp
b24oJ29zJywgJ3JlYWR3cml0ZScpIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIs
ICInSW52YWxpZFN0YXRlRXJyb3InIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3Qo
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9v
cGVuLXdpdGgtdmVyc2lvbi1pbml0aWFsLXZlcnNpb24uanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24taW5pdGlhbC12ZXJzaW9uLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZlN2QwZjNlODNlYTEzMTU3NDYwYWEwMTkzODI0NDU2M2Y3ZTk1OGQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
b3Blbi13aXRoLXZlcnNpb24taW5pdGlhbC12ZXJzaW9uLmpzCkBAIC0wLDAgKzEsMzggQEAKK2lm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGluaXRpYWwgdmVyc2lvbiBhZnRl
ciBhIHN1Y2Nlc3NmdWwgb3BlbiBvZiBhIG5vbi1leGlzdGVudCBkYiBpcyAxIik7CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgZGJuYW1lID0g
c2VsZi5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMSArIHNlbGYubG9jYXRpb24ucGF0aG5h
bWUubGFzdEluZGV4T2YoIi8iKSk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRl
bGV0ZVN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoZXZ0KSB7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oKSB7CisgICAg
ICB0ZXN0UGFzc2VkKCJHb3QgdXBncmFkZW5lZWRlZCBldmVudCIpOworICAgIH0KK30KKworZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGRlYnVnKCJUZXN0IGxpbmUgZnJvbSBJREJG
YWN0b3J5Lm9wZW46IElmIG5vIHZlcnNpb24gaXMgc3BlY2lmaWVkIGFuZCBubyBkYXRhYmFzZSBl
eGlzdHMsIHNldCBkYXRhYmFzZSB2ZXJzaW9uIHRvIDEuIik7CisgICAgc2hvdWxkQmUoJ2RiLnZl
cnNpb24nLCAnMScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZl
cnNpb24td2l0aC1kZWxldGUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvb3Blbi13aXRoLXZlcnNpb24td2l0aC1kZWxldGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU2ZmI0
ZDM3ZWYyOTk3ZjQxMzYyM2JiYTZiNzU4MzRkMGM3Y2M2NgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi13
aXRoLWRlbGV0ZS5qcwpAQCAtMCwwICsxLDc0IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7
CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRp
b24oIlRlc3QgdGhhdCBhIGRlbGV0ZURhdGFiYXNlIGNhbGxlZCB3aGlsZSBoYW5kbGluZyBhbiB1
cGdyYWRlbmVlZGVkIGV2ZW50IGlzIHF1ZXVlZCBhbmQgZmlyZXMgaXRzIGV2ZW50cyBhdCB0aGUg
cmlnaHQgdGltZSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOworICAgIGRibmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKDEg
KyBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lLmxhc3RJbmRleE9mKCIvIikpOworCisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBpbml0aWFsbHlEZWxldGVkOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCit2YXIgc2F3Rmlyc3RVcGdyYWRlTmVl
ZGVkID0gZmFsc2U7Cit2YXIgYWxyZWFkeURlbGV0ZWQgPSBmYWxzZTsKK2Z1bmN0aW9uIGluaXRp
YWxseURlbGV0ZWQoZXZ0KSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJpbml0aWFsbHlE
ZWxldGVkKCk6Iik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRi
bmFtZSwgMSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub251
cGdyYWRlbmVlZGVkID0gZmlyc3RVcGdyYWRlTmVlZGVkOworfQorCitmdW5jdGlvbiBmaXJzdFVw
Z3JhZGVOZWVkZWQoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAg
ICBkZWJ1ZygiZmlyc3RVcGdyYWRlTmVlZGVkKCk6Iik7CisgICAgc2hvdWxkQmVGYWxzZSgic2F3
Rmlyc3RVcGdyYWRlTmVlZGVkIik7CisgICAgZXZhbEFuZExvZygic2F3Rmlyc3RVcGdyYWRlTmVl
ZGVkID0gdHJ1ZSIpOworICAgIHNob3VsZEJlKCJldmVudC5vbGRWZXJzaW9uIiwgIjAiKTsKKyAg
ICBzaG91bGRCZSgiZXZlbnQubmV3VmVyc2lvbiIsICIxIik7CisgICAgaWYgKCFhbHJlYWR5RGVs
ZXRlZCkgeworICAgICAgICBhbHJlYWR5RGVsZXRlZCA9IHRydWU7CisgICAgICAgIHJlcXVlc3Qy
ID0gZXZhbEFuZExvZygiZGVsZXRlUmVxdWVzdCA9IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShk
Ym5hbWUpIik7CisgICAgICAgIHJlcXVlc3QyLm9uc3VjY2VzcyA9IG1pZFJlcXVlc3REZWxldGU7
CisgICAgICAgIHJlcXVlc3QyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICAgICAgcmVxdWVzdDIub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIG1pZFJlcXVlc3REZWxldGUoZXZ0KQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygibWlkUmVxdWVzdERlbGV0ZSgpOiIpOworfQorCitzYXdWZXJzaW9uQ2hh
bmdlID0gZmFsc2U7CitmdW5jdGlvbiBvcGVuU3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBl
dnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJyZXF1ZXN0Lm9uc3VjY2VzcygpOiIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgic2F3Rmlyc3RVcGdyYWRlTmVlZGVkIik7CisgICAgZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZGIub252ZXJzaW9uY2hhbmdlID0g
ZnVuY3Rpb24oZXZ0KSB7CisgICAgICBldmVudCA9IGV2dDsKKyAgICAgIGRlYnVnKCIiKTsKKyAg
ICAgIGRlYnVnKCJkYi5vbnZlcnNpb25jaGFuZ2UoKToiKTsKKyAgICAgIHNob3VsZEJlKCJldmVu
dC5vbGRWZXJzaW9uIiwgIjEiKTsKKyAgICAgIHNob3VsZEJlTnVsbCgiZXZlbnQubmV3VmVyc2lv
biIpOworICAgICAgZXZhbEFuZExvZygic2F3VmVyc2lvbkNoYW5nZSA9IHRydWUiKTsKKyAgICAg
IGRiLmNsb3NlKCk7CisgICAgfQorICAgIHNob3VsZEJlKCdkYi52ZXJzaW9uJywgJzEnKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg4OWVkMzkyNmZhOWI1MjQ0NGE3M2U2ZmE1NTI3MmM1OTQwMDQ4NWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Bl
bi13aXRoLXZlcnNpb24uanMKQEAgLTAsMCArMSw3NiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJUZXN0IHRoYXQgc3BlY2lmeWluZyBhIHZlcnNpb24gd2hlbiBvcGVuaW5nIGEgbm9u
LWV4aXN0ZW50IGRiIGNhdXNlcyBhbiB1cGdyYWRlbmVlZGVkIGV2ZW50IGFuZCB0aGF0IHRoZSB2
ZXJzaW9uIG51bWJlciBpcyBzZXQgY29ycmVjdGx5LiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIGRibmFtZSA9IHNlbGYubG9jYXRpb24u
cGF0aG5hbWUuc3Vic3RyaW5nKDEgKyBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lLmxhc3RJbmRleE9m
KCIvIikpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRh
YmFzZShkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVTdWNjZXNzOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBkZWxldGVTdWNjZXNzKGV2dCkgeworICAgIGRlYnVnKCJTaG91bGQgdHJpZ2dlcjoiKTsK
KyAgICBkZWJ1ZygiNC4xLjQ6IElmIG5vIGRhdGFiYXNlIHdpdGggdGhlIGdpdmVuIG5hbWUgZnJv
bSB0aGUgb3JpZ2luIG9yaWdpbiB3YXMgZm91bmQsIG9yIGlmIGl0IHdhcyBkZWxldGVkIGR1cmlu
ZyB0aGUgcHJldmlvdXMgc3RlcCwgdGhlbiBjcmVhdGUgYSBkYXRhYmFzZSB3aXRoIG5hbWUgbmFt
ZSwgd2l0aCAwIGFzIHZlcnNpb24sIGFuZCB3aXRoIG5vIG9iamVjdCBzdG9yZXMuIExldCBkYiBi
ZSB0aGUgbmV3IGRhdGFiYXNlLiIpOworICAgIGRlYnVnKCI0LjEuNjogQ3JlYXRlIGEgbmV3IGNv
bm5lY3Rpb24gdG8gZGIgYW5kIGxldCBjb25uZWN0aW9uIHJlcHJlc2VudCBpdC4iKTsKKyAgICBk
ZWJ1ZygiNC4xLjc6IElmIHRoZSB2ZXJzaW9uIG9mIGRiIGlzIGxvd2VyIHRoYW4gdmVyc2lvbiwg
dGhlbiBydW4gdGhlIHN0ZXBzIGZvciBydW5uaW5nIGEgXCJ2ZXJzaW9uY2hhbmdlXCIgdHJhbnNh
Y3Rpb24gdXNpbmcgY29ubmVjdGlvbiwgdmVyc2lvbiwgcmVxdWVzdCBhbmQgdXBncmFkZSBjYWxs
YmFjay4iKTsKKyAgICBkZWJ1ZygiNC4xLjk6IFJldHVybiBjb25uZWN0aW9uLiIpOworCisgICAg
ZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgNykiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkocmVx
dWVzdCkiLCAiW29iamVjdCBJREJPcGVuREJSZXF1ZXN0XSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSB1cGdyYWRl
TmVlZGVkOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFj
azsKKyAgICBkZWJ1ZygiIik7Cit9CisKK3ZhciBzYXdVcGdyYWRlTmVlZGVkID0gZmFsc2U7Cit2
YXIgc2F3VHJhbnNhY3Rpb25Db21wbGV0ZSA9IGZhbHNlOworZnVuY3Rpb24gdXBncmFkZU5lZWRl
ZChldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgdGVzdFBhc3NlZCgiSW4gdGhlIHVwZ3Jh
ZGVuZWVkZWQgZXZlbnQgaGFuZGVyOiIpOworICAgIGRlYnVnKCJUZXN0IDQuOC45LjE6Iik7Cisg
ICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KGRiKSIsICJbb2Jq
ZWN0IElEQkRhdGFiYXNlXSIpOworICAgIGRlYnVnKCJUZXN0IDQuOC45LjM6Iik7CisgICAgc2hv
dWxkQmUoImV2ZW50Lm9sZFZlcnNpb24iLCAiMCIpOworICAgIHNob3VsZEJlKCJldmVudC5uZXdW
ZXJzaW9uIiwgIjciKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5y
ZWFkeVN0YXRlIiwgImRvbmUiKTsKKyAgICBkZWJ1ZygiVGVzdCA0LjEuNDoiKTsKKyAgICBzaG91
bGRCZSgiZGIubmFtZSIsICJkYm5hbWUiKTsKKyAgICBzaG91bGRCZSgiZGIudmVyc2lvbiIsICI3
Iik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKKwor
ICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uIik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFw
cGx5KHRyYW5zYWN0aW9uKSIsICJbb2JqZWN0IElEQlRyYW5zYWN0aW9uXSIpOworICAgIGV2YWxB
bmRMb2coJ29zID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInNvbWVPUyIpJyk7CisgICAgdHJhbnNh
Y3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zYWN0aW9u
Lm9uY29tcGxldGUgPSBmdW5jdGlvbihlKSB7CisgICAgICBldmFsQW5kTG9nKCJzYXdUcmFuc2Fj
dGlvbkNvbXBsZXRlID0gdHJ1ZSIpOworICAgIH0KKyAgICBzYXdVcGdyYWRlTmVlZGVkID0gdHJ1
ZTsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0Owor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkZWJ1Zygi
VGVzdCA0LjEuNywgdGhhdCBhIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gd2FzIHJ1bi4iKTsK
KyAgICBzaG91bGRCZSgic2F3VXBncmFkZU5lZWRlZCIsICJ0cnVlIik7CisgICAgc2hvdWxkQmVU
cnVlKCJzYXdUcmFuc2FjdGlvbkNvbXBsZXRlIik7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBkZWJ1ZygiS2luZCBvZiB0ZXN0IDQuMS45OiIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5h
cHBseShkYikiLCAiW29iamVjdCBJREJEYXRhYmFzZV0iKTsKKyAgICBzaG91bGRCZSgnZGIudmVy
c2lvbicsICI3Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXR2ZXJzaW9uLXVw
Z3JhZGVuZWVkZWQtaW50ZXJ0d2luZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvc2V0dmVyc2lvbi11cGdyYWRlbmVlZGVkLWludGVydHdpbmVkLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJlNTJkNDFlMWZmYjhhMTI5NzM1YjcyZDFmZTMxODQxNGJhZTMxZjIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0dmVy
c2lvbi11cGdyYWRlbmVlZGVkLWludGVydHdpbmVkLmpzCkBAIC0wLDAgKzEsMTc1IEBACitpZiAo
dGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQu
anMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBibGFoIGJsYWguIik7CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgZGJuYW1lID0g
c2VsZi5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMSArIHNlbGYubG9jYXRpb24ucGF0aG5h
bWUubGFzdEluZGV4T2YoIi8iKSk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
IlN0cmluZyhyZXF1ZXN0KSIsICJbb2JqZWN0IElEQk9wZW5EQlJlcXVlc3RdIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVTdWNjZXNzKGV2dCkg
eworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiQ2FsbCBvcGVuIHdpdGggbm8gdmVyc2lvbiBw
YXJhbWV0ZXI6Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKGRi
bmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub251cGdy
YWRlbmVlZGVkID0gdW5leHBlY3RlZFVwZ3JhZGVOZWVkZWRDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gb3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVy
c2lvbiIsICIiKTsKKyAgICBldmFsQW5kTG9nKCdyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigic29t
ZSB2ZXJzaW9uIiknKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGlu
U2V0VmVyc2lvbihldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJpblNldFZlcnNpb24oKToiKTsKKyAgICB0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHNldFZlcnNpb25Eb25lOworICAgIHRyYW5zLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICBkYiA9IHRyYW5zLmRiOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJzb21lIHZlcnNpb24iKTsKKyAg
ICAvLyBGSVhNRTogQWxzbyBjYWxsIG9wZW4gd2l0aCB2ZXJzaW9uIGZyb20gaGVyZS4KK30KKwor
ZnVuY3Rpb24gc2V0VmVyc2lvbkRvbmUoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1Zygic2V0VmVyc2lvbkRvbmUoKToiKTsKKyAgICBkYiA9IGV2ZW50
LnRhcmdldC5kYjsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAic29t
ZSB2ZXJzaW9uIik7CisgICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihkYm5hbWUpIik7CisgICAgZXZhbEFuZExvZygi
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZWNvbmRPcGVuIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSB1
bmV4cGVjdGVkVXBncmFkZU5lZWRlZENhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZWNvbmRPcGVu
KGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInNl
Y29uZE9wZW4oKToiKTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIlN0cmluZyhkYikiLCAiW29iamVjdCBJREJE
YXRhYmFzZV0iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAic29t
ZSB2ZXJzaW9uIik7CisgICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOworICAgIC8vIEZJWE1F
OiBBbHNvIGNhbGwgaXQgd2l0aCAwLCAtMSwgYW5kIC00LgorICAgIGV2YWxBbmRMb2coInJlcXVl
c3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDIpIik7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVu
ZWVkZWQgPSBmaXJzdFVwZ3JhZGVOZWVkZWQKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9j
a2VkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmaXJzdE9wZW5XaXRoVmVyc2lv
bjsKK30KKworZnVuY3Rpb24gZmlyc3RVcGdyYWRlTmVlZGVkKGV2dCkKK3sKKyAgICBldmVudCA9
IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImZpcnN0VXBncmFkZU5lZWRlZCgpOiIp
OworICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiU3RyaW5nKGRiKSIsICJbb2JqZWN0IElEQkRhdGFiYXNlXSIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiU3RyaW5nKHJlcXVlc3QudHJhbnNhY3Rpb24pIiwg
IltvYmplY3QgSURCVHJhbnNhY3Rpb25dIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
dmVudC5vbGRWZXJzaW9uIiwgInNvbWUgdmVyc2lvbiIpOworICAgIHNob3VsZEJlKCJldmVudC5u
ZXdWZXJzaW9uIiwgIjIiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0LnRyYW5zYWN0aW9uLm9u
Y29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlZCIpOworICAgIHJlcXVlc3QudHJhbnNhY3Rp
b24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworfQorCit2YXIgZGlkVHJhbnNh
Y3Rpb25Db21wbGV0ZSA9IGZhbHNlOworZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZWQoZXZ0
KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidHJhbnNh
Y3Rpb25Db21wbGV0ZWQoKToiKTsKKyAgICBldmFsQW5kTG9nKCJkaWRUcmFuc2FjdGlvbkNvbXBs
ZXRlID0gdHJ1ZSIpOworfQorCitmdW5jdGlvbiBmaXJzdE9wZW5XaXRoVmVyc2lvbihldnQpCit7
CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJmaXJzdE9wZW5X
aXRoVmVyc2lvbigpOiIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGlkVHJhbnNhY3Rpb25Db21wbGV0
ZSIpOworICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiU3RyaW5nKGRiKSIsICJbb2JqZWN0IElEQkRhdGFiYXNlXSIp
OworICAgIHNob3VsZEJlTnVsbCgicmVxdWVzdC50cmFuc2FjdGlvbiIpOworICAgIHNob3VsZEJl
KCJkYi52ZXJzaW9uIiwgIjIiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIlN0cmluZyhy
ZXF1ZXN0KSIsICJbb2JqZWN0IElEQk9wZW5EQlJlcXVlc3RdIik7CisgICAgZXZhbEFuZExvZygn
cmVxdWVzdCA9IGRiLnNldFZlcnNpb24oInN0cmluZyB2ZXJzaW9uIDIiKScpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiU3RyaW5nKHJlcXVlc3QpIiwgIltvYmplY3QgSURCVmVyc2lvbkNo
YW5nZVJlcXVlc3RdIik7CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tl
ZENhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxs
YmFjazsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0Lm9uZXJyb3IgPSBzZXRWZXJzaW9uTm90QWxs
b3dlZCIpOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uTm90QWxsb3dlZChldnQpCit7CisgICAg
ZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJzZXRWZXJzaW9uTm90QWxs
b3dlZCgpOiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudHlwZSIsICJlcnJv
ciIpOworICAgIGRlYnVnKCJyZXF1ZXN0LndlYmtpdEVycm9yTWVzc2FnZSA9ICIgKyByZXF1ZXN0
LndlYmtpdEVycm9yTWVzc2FnZSk7CisgICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOworICAg
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDEpIik7CisgICAg
ZXZhbEFuZExvZygicmVxdWVzdC5vbmVycm9yID0gZXJyb3JXaGVuVHJ5aW5nTG93VmVyc2lvbiIp
OworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGVycm9yV2hlblRyeWluZ0xvd1ZlcnNpb24oZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0
OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiZXJyb3JXaGVuVHJ5aW5nTG93VmVyc2lvbigp
OiIpOworICAgIGRlYnVnKCJyZXF1ZXN0LndlYmtpdEVycm9yTWVzc2FnZSA9ICIgKyByZXF1ZXN0
LndlYmtpdEVycm9yTWVzc2FnZSk7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWRE
Qi5vcGVuKGRibmFtZSwgNCkiKTsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRC
bG9ja2VkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgZXZhbEFuZExvZygicmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBzZWNvbmRV
cGdyYWRlTmVlZGVkIik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdC5vbnN1Y2Nlc3MgPSB0aGly
ZE9wZW5TdWNjZXNzIik7Cit9CisKK3ZhciBnb3RTZWNvbmRVcGdyYWRlTmVlZGVkID0gZmFsc2U7
CitmdW5jdGlvbiBzZWNvbmRVcGdyYWRlTmVlZGVkKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInNlY29uZFVwZ3JhZGVOZWVkZWQoKToiKTsKKyAg
ICBldmFsQW5kTG9nKCJnb3RTZWNvbmRVcGdyYWRlTmVlZGVkID0gdHJ1ZSIpOworICAgIHNob3Vs
ZEJlKCJldmVudC5vbGRWZXJzaW9uIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQubmV3VmVy
c2lvbiIsICI0Iik7Cit9CisKK2Z1bmN0aW9uIHRoaXJkT3BlblN1Y2Nlc3MoZXZ0KQoreworICAg
IGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGhpcmRPcGVuU3VjY2Vz
cygpOiIpOworICAgIHNob3VsZEJlVHJ1ZSgiZ290U2Vjb25kVXBncmFkZU5lZWRlZCIpOworICAg
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlKCJk
Yi52ZXJzaW9uIiwgIjQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154825</attachid>
            <date>2012-07-26 20:53:18 -0700</date>
            <delta_ts>2012-07-26 22:44:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89505-20120726205306.patch</filename>
            <type>text/plain</type>
            <size>147175</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE1Y2MzNDkxMjEyYTJi
ZWMyODUwM2FlMTI4ZWYyMWZiYmViNDYxZC4uMDU2YTRiMDc4NWVhNDBjZWZhMjg2NTM5MGE3ODAy
M2QxY2E3NzE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxMi0wNy0yNiAgRGF2
aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBp
bXBsZW1lbnQgdXBncmFkZW5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODk1MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBh
cyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlv
bnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogc3RvcmFnZS9pbmRleGVkZGIvaW50
dmVyc2lvbi1hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQuaHRtbAorICAgICAgICAgICAg
ICAgc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hbmQtc2V0dmVyc2lvbi5odG1sCisgICAg
ICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWJsb2NrZWQuaHRtbAorICAg
ICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9zZS1iZXR3ZWVuLWV2
ZW50cy5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNs
b3NlLWluLW9uY29tcGxldGUuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIv
aW50dmVyc2lvbi1kZWxldGUtaW4tdXBncmFkZW5lZWRlZC5odG1sCisgICAgICAgICAgICAgICBz
dG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWRvbnQtZnJlZXplLW9uLXJlZnJlc2guaHRtbAor
ICAgICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0LXBhcmFtZXRl
ci5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9wZW4t
d2l0aC12ZXJzaW9uLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tp
bmdTdG9yZS5oOgorICAgICAgICAoSURCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkNhbGxiYWNrczo6b25CbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNhbGxiYWNrczo6
b25VcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6c2V0VmVyc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6b25WZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnJlZ2lzdGVyRnJvbnRlbmRD
YWxsYmFja3MpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6Cisg
ICAgICAgIChJREJEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQ
ZW5kaW5nT3BlbkNhbGwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRp
bmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OnZlcnNpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5X
aXRoVmVyc2lvbkNhbGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkludGVybmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFkYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW50VmVyc2lvbkludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0
aW9uRmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
dHJhbnNhY3Rpb25GaW5pc2hlZEFuZEV2ZW50c0ZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5nQ2FsbHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25u
ZWN0aW9uV2l0aFZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrczo6b25WZXJzaW9uQ2hhbmdlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25DaGFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsLmg6CisgICAgICAgIChJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRmFjdG9yeTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5Lmg6CisgICAgICAgIChJREJGYWN0b3J5KToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaDoKKyAgICAgICAgKElEQkZhY3RvcnlCYWNrZW5k
SW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2UuaDoKKyAgICAgICAgKElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnB1dFZhckludCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldFVwTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdT
dG9yZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpn
ZXRJREJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZURhdGFiYXNlKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgIChJREJMZXZlbERCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJMZXZlbERCQ29kaW5nLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
TWV0YWRhdGEuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9w
ZW5EQlJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0
OjpJREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6
On5JREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6
OmludGVyZmFjZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6b25C
bG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFkZU5l
ZWRlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGwuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCT3BlbkRCUmVx
dWVzdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5pZGw6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
Q2FsbGJhY2tzLmguCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1
ZXN0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmNsZWFy
VHJhbnNhY3Rpb25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlJlcXVlc3Q6OmVucXVldWVFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25CbG9ja2Vk
KToKKyAgICAgICAgKElEQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6
aXNPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklEQlRy
YW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzZXRBY3RpdmUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpc3BhdGNoRXZlbnQpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKElEQlRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNvbW1pdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVXBncmFkZU5lZWRlZEV2ZW50Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVXBncmFkZU5lZWRlZEV2ZW50OjpJREJVcGdy
YWRlTmVlZGVkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVXBncmFkZU5lZWRlZEV2ZW50
Ojp+SURCVXBncmFkZU5lZWRlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlVwZ3JhZGVO
ZWVkZWRFdmVudDo6b2xkVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJVcGdyYWRlTmVl
ZGVkRXZlbnQ6Om5ld1ZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCVXBncmFkZU5lZWRl
ZEV2ZW50OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJV
cGdyYWRlTmVlZGVkRXZlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmguCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKElEQlVwZ3JhZGVOZWVkZWRFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3MuaC4KKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmluOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdl
dEZhY3RvcnkuaW46CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA3LTI2ICBOYXlhbiBLdW1hciBLICA8
bmF5YW5ra0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgW1dlYkdMXSBJbml0aWFsIHNpemUgb2Yg
Y2FudmFzIGNhbiBiZSBsYXJnZXIgdGhhbiBNQVhfVklFV1BPUlRfRElNUy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggMWQ3MDQ3NDBjN2ZhZGQ4NjE5OThkYWU4ODUzOGU2MmE3NDE1MTZl
ZC4uOGY5N2NmNDFlODRkMWQxZDI1MzgwYTg5N2U0MDJmM2FmYTIwMjk5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxMi0wNy0yNiAgRGF2aWQgR3JvZ2Fu
ICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBpbXBsZW1lbnQg
dXBncmFkZW5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODk1MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2Fj
aCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cg
KE9PUFMhKS4KKworICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5OjpvbkJsb2NrZWQpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJhY2tzUHJveHk6Om9uVXBncmFkZU5lZWRlZCk6
CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5Lmg6CisgICAgICAgIChJREJDYWxsYmFj
a3NQcm94eSk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OnNldFZlcnNpb24pOgorICAg
ICAgICAqIHNyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6b25WZXJzaW9uQ2hhbmdlKToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaDoKKyAg
ICAgICAgKElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAqIHNyYy9JREJGYWN0
b3J5QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCRmFjdG9yeUJhY2tlbmRQ
cm94eTo6b3Blbik6CisgICAgICAgICogc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaDoKKyAg
ICAgICAgKElEQkZhY3RvcnlCYWNrZW5kUHJveHkpOgorICAgICAgICAqIHNyYy9XZWJJREJDYWxs
YmFja3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzSW1wbDo6V2Vi
SURCQ2FsbGJhY2tzSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNhbGxiYWNrc0ltcGw6
Om9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNhbGxiYWNrc0ltcGw6Om9uQmxv
Y2tlZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDYWxsYmFj
a3NJbXBsOjpvblVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAqIHNyYy9XZWJJREJDYWxsYmFja3NJ
bXBsLmg6CisgICAgICAgIChXZWJJREJDYWxsYmFja3NJbXBsKToKKyAgICAgICAgKiBzcmMvV2Vi
SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25DaGFuZ2UpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmg6CisgICAgICAgIChX
ZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJJREJGYWN0b3J5
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkZhY3RvcnlJbXBsOjpvcGVuKToKKyAg
ICAgICAgKiBzcmMvV2ViSURCRmFjdG9yeUltcGwuaDoKKyAgICAgICAgKFdlYklEQkZhY3RvcnlJ
bXBsKToKKyAgICAgICAgKiB0ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmFpbGluZ0JhY2tpbmdTdG9yZTo6Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9JREJGYWtlQmFj
a2luZ1N0b3JlLmg6CisKIDIwMTItMDctMjYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjM3OTku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5n
U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9y
ZS5oCmluZGV4IDc4YTlmNjY3YWRkMTMwZTYzZTNjMDc0NmQ0YTcwM2I0ODk1NDZiZDcuLjUyNzkw
MzQyZGQ3NDQ4MDllY2YzNDMwMTliMzliYzFiMWViMzMxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC00Nyw4ICs0Nyw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJCYWNraW5nU3RvcmUoKSB7fTsKIAogICAgIHZp
cnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzKSA9
IDA7Ci0gICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5n
JiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCkgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5n
JiBmb3VuZFN0cmluZ1ZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVyc2lvbiwgaW50NjRfdCYg
Zm91bmRJZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRh
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdWZXJzaW9uLCBjb25zdCBp
bnQ2NF90IGludFZlcnNpb24sIGludDY0X3QmIHJvd0lkKSA9IDA7CisgICAgdmlydHVhbCBib29s
IHVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbihpbnQ2NF90IHJvd0lkLCBpbnQ2NF90IGludFZl
cnNpb24pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRl
SURCRGF0YWJhc2VNZXRhRGF0YShpbnQ2NF90IHJvd0lkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24p
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1l
KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJh
Y2tzLmgKaW5kZXggODUzZmZjNzJkMjYwMzkxZmNjNDM2NjRkNTczZmM1ZGFlMzAyZGMwZi4uMmE2
YWZlZjM4MzE1YmU2NWIyNjYyOGU1Njg4NmRiYTMyYWM1MzY0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKQEAgLTU5LDcgKzU5LDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktleT4sIGNvbnN0IElEQktleVBhdGgmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElE
QktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIHByaW1hcnlLZXlz
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
b25CbG9ja2VkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBv
bkJsb2NrZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25VcGdyYWRlTmVlZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCA1YzNkZmNiNmI1NDJjMWJlMDZiMjQxYjQ3
Y2U5YmFjYjliNjYyOWI0Li45Y2FhNmIzODMwMDcwMDUyOGM1MGVmN2U2MTZiYjQ1NWNlNjFiZWIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
Y3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNs
dWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRl
ICJJREJVcGdyYWRlTmVlZGVkRXZlbnQuaCIKICNpbmNsdWRlICJJREJWZXJzaW9uQ2hhbmdlRXZl
bnQuaCIKICNpbmNsdWRlICJJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKQEAgLTIwOCw2ICsyMDksNyBAQCBQYXNzUmVmUHRyPElE
QlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBJREJEYXRhYmFzZTo6c2V0VmVyc2lvbihTY3JpcHRFeGVj
dXRpb25Db250ZQogICAgIH0KIAogICAgIFJlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4g
cmVxdWVzdCA9IElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55
OjpjcmVhdGUodGhpcyksIHZlcnNpb24pOworICAgIEFTU0VSVChtX2JhY2tlbmQpOwogICAgIG1f
YmFja2VuZC0+c2V0VmVyc2lvbih2ZXJzaW9uLCByZXF1ZXN0LCBtX2RhdGFiYXNlQ2FsbGJhY2tz
LCBlYyk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CkBAIC0zMDEsNiArMzAzLDE3IEBAIHZvaWQg
SURCRGF0YWJhc2U6OmNsb3NlQ29ubmVjdGlvbigpCiAgICAgfQogfQogCit2b2lkIElEQkRhdGFi
YXNlOjpvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24sIGludDY0X3QgcmVx
dWVzdGVkVmVyc2lvbikKK3sKKyAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9jbG9zZVBlbmRp
bmcpCisgICAgICAgIHJldHVybjsKKworICAgIGVucXVldWVFdmVudChJREJVcGdyYWRlTmVlZGVk
RXZlbnQ6OmNyZWF0ZShleGlzdGluZ1ZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24sIGV2ZW50TmFt
ZXMoKS52ZXJzaW9uY2hhbmdlRXZlbnQpKTsKK30KKwogdm9pZCBJREJEYXRhYmFzZTo6b25WZXJz
aW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIHsKICAgICBpZiAobV9jb250ZXh0U3Rv
cHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQpAQCAtMzE0LDYgKzMyNyw3IEBAIHZv
aWQgSURCRGF0YWJhc2U6Om9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHZlcnNpb24pCiAK
IHZvaWQgSURCRGF0YWJhc2U6OnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKQogeworICAgIEFT
U0VSVChtX2JhY2tlbmQpOwogICAgIG1fYmFja2VuZC0+cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNr
cyhtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggNjRjYmIzMjZhNTg4M2RjZjM5NDczY2FhMTA5
NzI5MDVmM2ZlNjc1ZS4uZDY5YzFiYjZlZjgwZDRiZDIwOGFiNTg2Nzk3ZmNkN2UxNGZhZTIyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBA
IC03OCw2ICs3OCw3IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKHZlcnNpb25jaGFuZ2UpOwogCiAgICAgLy8gSURCRGF0YWJhc2VDYWxsYmFja3MKKyAgICB2
aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGludDY0X3QgZXhpc3RpbmdWZXJzaW9uLCBpbnQ2
NF90IHJlcXVlc3RlZFZlcnNpb24pOwogICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2Uo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0ZWRWZXJzaW9uKTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVj
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCBlNDUxNDdkNWMwYjBiNjJiMzNkM2YzY2NkNjNh
NjE3ZmI1YjhiOThlLi4zOTE1YzA4ZDRkMzA0ODUyMjNiZjA1MDk2MThmY2E4MGVlNTcxMGI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtNTIsNyArNTIsMjcgQEAgcHJpdmF0ZToKICAgICAg
ICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCiAgICAgewogICAgIH0KKworICAgIFJlZlB0cjxJ
REJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworfTsKKworY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5k
aW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbChjYWxsYmFja3MsIHZlcnNpb24p
KTsKKyAgICB9CisgICAgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcygpIHsgcmV0
dXJuIG1fY2FsbGJhY2tzOyB9CisgICAgaW50NjRfdCB2ZXJzaW9uKCkgeyByZXR1cm4gbV92ZXJz
aW9uOyB9CisKK3ByaXZhdGU6CisgICAgUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwoUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQorICAgICAgICA6
IG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKKyAgICAgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKKyAg
ICB7CisgICAgfQogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworICAgIGlu
dDY0X3QgbV92ZXJzaW9uOwogfTsKIAogY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVu
ZGluZ0RlbGV0ZUNhbGwgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5kaW5nRGVsZXRlQ2FsbD4gewpA
QCAtMTA2LDYgKzEyNiw3IEBAIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFj
a2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvCiAgICAgLCBtX2lkKElu
dmFsaWRJZCkKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV92ZXJzaW9uKCIiKQorICAgICwg
bV9pbnRWZXJzaW9uKElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbikKICAgICAsIG1f
aWRlbnRpZmllcih1bmlxdWVJZGVudGlmaWVyKQogICAgICwgbV9mYWN0b3J5KGZhY3RvcnkpCiAg
ICAgLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IoY29vcmRpbmF0b3IpCkBAIC0xMTYsMTMgKzEz
NywxMyBAQCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNv
bnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0bwogCiBib29sIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6Om9wZW5JbnRlcm5hbCgpCiB7Ci0gICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3Rv
cmUtPmdldElEQkRhdGFiYXNlTWV0YURhdGEobV9uYW1lLCBtX3ZlcnNpb24sIG1faWQpOwotICAg
IEFTU0VSVChzdWNjZXNzID09IChtX2lkICE9IEludmFsaWRJZCkpOworICAgIGJvb2wgc3VjY2Vz
cyA9IG1fYmFja2luZ1N0b3JlLT5nZXRJREJEYXRhYmFzZU1ldGFEYXRhKG1fbmFtZSwgbV92ZXJz
aW9uLCBtX2ludFZlcnNpb24sIG1faWQpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uoc3VjY2Vz
cyA9PSAobV9pZCAhPSBJbnZhbGlkSWQpLCAic3VjY2VzcyA9ICVzLCBtX2lkID0gJSJQUklkNjQs
IHN1Y2Nlc3MgPyAidHJ1ZSIgOiAiZmFsc2UiLCBtX2lkKTsKICAgICBpZiAoc3VjY2Vzcykgewog
ICAgICAgICBsb2FkT2JqZWN0U3RvcmVzKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
LSAgICByZXR1cm4gbV9iYWNraW5nU3RvcmUtPmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEobV9u
YW1lLCBtX3ZlcnNpb24sIG1faWQpOworICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRl
SURCRGF0YWJhc2VNZXRhRGF0YShtX25hbWUsIG1fdmVyc2lvbiwgbV9pbnRWZXJzaW9uLCBtX2lk
KTsKIH0KIAogSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6fklEQkRhdGFiYXNlQmFja2VuZEltcGwo
KQpAQCAtMTM2LDcgKzE1Nyw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpiYWNraW5nU3RvcmUoKSBjb25zdAogCiBJREJEYXRhYmFzZU1ldGFk
YXRhIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFkYXRhKCkgY29uc3QKIHsKLSAgICBJREJE
YXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKG1fbmFtZSwgbV92ZXJzaW9uLCBJREJEYXRhYmFzZU1l
dGFkYXRhOjpOb0ludFZlcnNpb24pOworICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEo
bV9uYW1lLCBtX3ZlcnNpb24sIG1faW50VmVyc2lvbik7CiAgICAgZm9yIChPYmplY3RTdG9yZU1h
cDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29iamVjdFN0b3Jlcy5iZWdpbigpOyBpdCAhPSBtX29i
amVjdFN0b3Jlcy5lbmQoKTsgKytpdCkKICAgICAgICAgbWV0YWRhdGEub2JqZWN0U3RvcmVzLnNl
dChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQtPm1ldGFkYXRhKCkpOwogICAgIHJldHVybiBtZXRhZGF0
YTsKQEAgLTIxNCw2ICsyMzUsOCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZl
cnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbAogICAgICAgICBj
YWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAiQ29ubmVjdGlvbiB3YXMgY2xvc2VkIGJlZm9yZSBzZXQg
dmVyc2lvbiB0cmFuc2FjdGlvbiB3YXMgY3JlYXRlZCIpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KKyAgICBpZiAobV9pbnRWZXJzaW9uICE9IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVy
c2lvbikKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsIFN0cmluZzo6Zm9ybWF0KCJZb3Ug
Y2FuJ3QgdXNlIHRoZSBzZXRWZXJzaW9uIGZ1bmN0aW9uIGlmIHlvdSd2ZSBhbHJlYWR5IHNldCB0
aGUgdmVyc2lvbiB0aHJvdWdoIGFuIG9wZW4gY2FsbC4gIFRoZSBjdXJyZW50IGludGVnZXIgdmVy
c2lvbiBpcyAlIlBSSWQ2NCwgbV9pbnRWZXJzaW9uKSkpOwogICAgIGZvciAoRGF0YWJhc2VDYWxs
YmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5iZWdp
bigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVuZCgpOyArK2l0KSB7CiAgICAgICAg
IGlmICgqaXQgIT0gZGF0YWJhc2VDYWxsYmFja3MpCiAgICAgICAgICAgICAoKml0KS0+b25WZXJz
aW9uQ2hhbmdlKHZlcnNpb24pOwpAQCAtMjU5LDYgKzI4MiwxOSBAQCB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OnNldFZlcnNpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZgogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPih0cmFuc2FjdGlvbikpOwogfQogCit2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OnNldEludFZlcnNpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSwgaW50NjRfdCB2
ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24pCit7CisgICAgaW50NjRf
dCBkYXRhYmFzZUlkID0gZGF0YWJhc2UtPmlkKCk7CisgICAgaW50NjRfdCBvbGRWZXJzaW9uID0g
ZGF0YWJhc2UtPm1faW50VmVyc2lvbjsKKyAgICBkYXRhYmFzZS0+bV9pbnRWZXJzaW9uID0gdmVy
c2lvbjsKKyAgICBpZiAoIWRhdGFiYXNlLT5tX2JhY2tpbmdTdG9yZS0+dXBkYXRlSURCRGF0YWJh
c2VJbnRWZXJzaW9uKGRhdGFiYXNlSWQsIGRhdGFiYXNlLT5tX2ludFZlcnNpb24pKSB7CisgICAg
ICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJh
c2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiRXJyb3Igd3JpdGluZyBkYXRhIHRvIHN0YWJsZSBz
dG9yYWdlLiIpKTsKKyAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgY2FsbGJhY2tzLT5vblVwZ3JhZGVOZWVkZWQob2xkVmVyc2lvbiwgdHJh
bnNhY3Rpb24sIGRhdGFiYXNlKTsKK30KKwogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0
cmFuc2FjdGlvblN0YXJ0ZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBw
cnBUcmFuc2FjdGlvbikKIHsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4g
dHJhbnNhY3Rpb24gPSBwcnBUcmFuc2FjdGlvbjsKQEAgLTI3Niw2ICszMTIsMTMgQEAgdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkKFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW4KICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFu
c2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpIHsKICAgICAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLmdl
dCgpID09IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgICAg
IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi5jbGVhcigpOworICAgIH0KK30KKwor
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkQW5kRXZlbnRz
RmlyZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBwcnBUcmFuc2FjdGlv
bikKK3sKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24g
PSBwcnBUcmFuc2FjdGlvbjsKKyAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFu
c2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpIHsKICAgICAgICAgcHJvY2Vzc1BlbmRpbmdDYWxscygp
OwogICAgIH0KIH0KQEAgLTMyNSw2ICszNjgsMTMgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKICAgICBpZiAobV9ydW5uaW5nVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpIHx8ICFt
X3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIERl
cXVlPFJlZlB0cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4gPiBwZW5kaW5nT3BlbldpdGhW
ZXJzaW9uQ2FsbHM7CisgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuc3dhcChwZW5k
aW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMpOworICAgIHdoaWxlICghcGVuZGluZ09wZW5XaXRoVmVy
c2lvbkNhbGxzLmlzRW1wdHkoKSkgeworICAgICAgUmVmUHRyPFBlbmRpbmdPcGVuV2l0aFZlcnNp
b25DYWxsPiBwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCA9IHBlbmRpbmdPcGVuV2l0aFZlcnNp
b25DYWxscy50YWtlRmlyc3QoKTsKKyAgICAgIG9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24ocGVu
ZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPmNhbGxiYWNrcygpLCBwZW5kaW5nT3BlbldpdGhWZXJz
aW9uQ2FsbC0+dmVyc2lvbigpKTsKKyAgICB9CisKICAgICAvLyBHaXZlbiB0aGUgY2hlY2sgYWJv
dmUsIGl0IGFwcGVhcnMgdGhhdCBjYWxscyBjYW5ub3QgYmUgcmVxdWV1ZWQgYnkKICAgICAvLyBv
cGVuQ29ubmVjdGlvbiwgYnV0IHVzZSBhIGRpZmZlcmVudCBxdWV1ZSBmb3IgaXRlcmF0aW9uIHRv
IGJlIHNhZmUuCiAgICAgRGVxdWU8UmVmUHRyPFBlbmRpbmdPcGVuQ2FsbD4gPiBwZW5kaW5nT3Bl
bkNhbGxzOwpAQCAtMzczLDYgKzQyMyw3MiBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6
Om9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAg
fQogfQogCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbihpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBwcnBDYWxsYmFja3MpCit7CisgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
ID0gcHJwQ2FsbGJhY2tzOworICAgIEFTU0VSVChjYWxsYmFja3MpOworICAgIGZvciAoRGF0YWJh
c2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUNhbGxiYWNrc1Nl
dC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVuZCgpOyArK2l0KSB7Cisg
ICAgICAgIC8vIFRoZSBmcm9udGVuZCB0YWtlcyBjYXJlIG9mIHRoZSBmb2xsb3dpbmcgY2xhdXNl
LCB0aGUgYmFja2VuZCBqdXN0CisgICAgICAgIC8vIGZpcmVzIHZlcnNpb24gY2hhbmdlIGF0IGFs
bCB0aGUgY29ubmVjdGlvbnMsIHRoZSBmcm9udGVuZCB3aWxsIG5vdAorICAgICAgICAvLyBkZWxp
dmVyIHRvIGNvbm5lY3Rpb25zIHdpdGggY2xvc2VQZW5kaW5nIHNldC4KKyAgICAgICAgLy8gIlRo
ZSBldmVudCBtdXN0IG5vdCBiZSBmaXJlZCBvbiBvYmplY3RzIHdoaWNoIGhhcyB0aGUgY2xvc2VQ
ZW5kaW5nCisgICAgICAgIC8vIGZsYWcgc2V0LiIKKyAgICAgICAgKCppdCktPm9uVmVyc2lvbkNo
YW5nZShtX2ludFZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24pOworICAgIH0KKyAgICAvLyBUaGUg
c3BlYyBkaWN0YXRlcyB3ZSB3YWl0IHVudGlsIGFsbCB0aGUgdmVyc2lvbiBjaGFuZ2UgZXZlbnRz
IGFyZQorICAgIC8vIGRlbGl2ZXJlZCBhbmQgdGhlbiBjaGVjayBtX2RhdGFiYXNlQ2FsbGJhY2tz
LmVtcHR5KCkgYmVmb3JlIHByb2NlZWRpbmcKKyAgICAvLyBvciBmaXJpbmcgYSBibG9ja2VkIGV2
ZW50LCBidXQgaW5zdGVhZCB3ZSBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIGhvdworICAgIC8v
IHRoZSBvbGQgc2V0VmVyc2lvbiAoaW5jb3JyZWN0bHkpIGRpZCBpdDoKKyAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAKKyAgICBpZiAoY29ubmVjdGlv
bkNvdW50KCkgPiAwKQorICAgICAgICBjYWxsYmFja3MtPm9uQmxvY2tlZChtX2ludFZlcnNpb24p
OworICAgIC8vIEZpZ3VyZSBvdXQgaG93IHRvIHRlc3QgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uLgorICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwg
Y29ubmVjdGlvbkNvdW50KCkgPiAwKSB7CisgICAgICAgIC8vIEl0J3MgYWxyZWFkeSBxdWV1ZWQu
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVj
dFN0b3JlTmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKKyAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFu
c2FjdGlvbkludGVyZmFjZSA9IHRoaXMtPnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZXMuZ2V0
KCksIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSwgZWMpOworICAgIFJlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw6OmZyb20odHJhbnNhY3Rpb25JbnRlcmZhY2UuZ2V0KCkpOworICAgIEFTU0VSVCghZWMp
OworCisgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlID0gdGhpczsK
KyAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRJbnRWZXJzaW9uSW50ZXJuYWwsIGRhdGFiYXNlLCBy
ZXF1ZXN0ZWRWZXJzaW9uLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpyZXNldFZlcnNpb24sIGRhdGFiYXNlLCBtX3ZlcnNpb24pKSkgeworICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAg
fQorfQorCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZl
cnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgaW50NjRfdCB2ZXJz
aW9uKQoreworICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNr
czsKKyAgICBpZiAoIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSB8fCBtX3J1bm5pbmdW
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgIW1fcGVuZGluZ1NldFZlcnNpb25DYWxscy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKFBl
bmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCB2ZXJzaW9uKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1faWQgPT0gSW52YWxpZElkKSB7CisgICAg
ICAgIGlmIChvcGVuSW50ZXJuYWwoKSkKKyAgICAgICAgICAgIEFTU0VSVCghbV9pbnRWZXJzaW9u
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIklu
dGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
KyAgICBpZiAodmVyc2lvbiA+IG1faW50VmVyc2lvbikgeworICAgICAgICBtX3BlbmRpbmdPcGVu
V2l0aFZlcnNpb25DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0
ZShjYWxsYmFja3MsIHZlcnNpb24pKTsKKyAgICAgICAgcnVuSW50VmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uKHZlcnNpb24sIGNhbGxiYWNrcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aWYgKHZlcnNpb24gPCBtX2ludFZlcnNpb24pIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9y
KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VkVSX0VSUiwg
U3RyaW5nOjpmb3JtYXQoIlRoZSByZXF1ZXN0ZWQgdmVyc2lvbiAoJSJQUklkNjQiKSBpcyBsZXNz
IHRoYW4gdGhlIGV4aXN0aW5nIHZlcnNpb24gKCUiUFJJZDY0IikuIiwgdmVyc2lvbiwgbV9pbnRW
ZXJzaW9uKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVCh2ZXJzaW9uID09
IG1faW50VmVyc2lvbik7CisgICAgKyttX3BlbmRpbmdDb25uZWN0aW9uQ291bnQ7CisgICAgY2Fs
bGJhY2tzLT5vblN1Y2Nlc3ModGhpcyk7Cit9CisKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6ZGVsZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcykK
IHsKICAgICBpZiAobV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRp
bmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKSB7CkBAIC0zOTMsMTIgKzUwOSwxNCBAQCB2b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBwcnBDYWxsYmFjawogICAgICAgICBjYWxsYmFja3MtPm9uQmxvY2tlZCgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQorICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAgaWYg
KCFtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlRGF0YWJhc2UobV9uYW1lKSkgewogICAgICAgICBjYWxs
YmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBtX3ZlcnNpb24gPSAiIjsKICAgICBtX2lkID0gSW52YWxpZElkOworICAgIG1f
aW50VmVyc2lvbiA9IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbjsKICAgICBtX29i
amVjdFN0b3Jlcy5jbGVhcigpOwogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCkpOwogfQpAQCAtNDExLDEyICs1MjksMTQgQEAgdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzPiBwcnBDYWxsYmFja3MKICAgICBpZiAoY29ubmVjdGlvbkNvdW50KCkgPiAxKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBUcmFuc2FjdGlvblNldCB0cmFuc2FjdGlvbnMobV90cmFuc2FjdGlv
bnMpOwogICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKIAotICAgIGlmICghY29ubmVjdGlvbkNv
dW50KCkpIHsKLSAgICAgICAgVHJhbnNhY3Rpb25TZXQgdHJhbnNhY3Rpb25zKG1fdHJhbnNhY3Rp
b25zKTsKKyAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuc2l6ZSgpIC0gdHJhbnNhY3Rpb25zLnNp
emUoKSA8PSAxKTsKKyAgICBpZiAoIWNvbm5lY3Rpb25Db3VudCgpICYmICFtX3BlbmRpbmdEZWxl
dGVDYWxscy5zaXplKCkgJiYgbV90cmFuc2FjdGlvbnMuc2l6ZSgpID09IHRyYW5zYWN0aW9ucy5z
aXplKCkpIHsKICAgICAgICAgZm9yIChUcmFuc2FjdGlvblNldDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSB0cmFuc2FjdGlvbnMuYmVnaW4oKTsgaXQgIT0gdHJhbnNhY3Rpb25zLmVuZCgpOyArK2l0KQog
ICAgICAgICAgICAgKCppdCktPmFib3J0KCk7CisKICAgICAgICAgQVNTRVJUKG1fdHJhbnNhY3Rp
b25zLmlzRW1wdHkoKSk7CiAKICAgICAgICAgbV9iYWNraW5nU3RvcmUuY2xlYXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEltcGwuaAppbmRleCA4MDVlYjYxN2ZiMzIxNGQwYmJiMjU3NWYzMmJmODk1YTQ1ZjEwZDFk
Li40NDE5MTZmNTg3YWVmMjhkNWI4OGZiM2NjMTkzOGJiM2UyNGNlMTg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVnaXN0ZXJGcm9u
dGVuZENhbGxiYWNrcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAgICAgdm9p
ZCBvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIHZvaWQgb3Bl
bkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIGludDY0X3Qg
dmVyc2lvbik7CiAgICAgdm9pZCBkZWxldGVEYXRhYmFzZShQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4pOwogCiAgICAgLy8gSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlCkBAIC03MSwxOCArNzIs
MjIgQEAgcHVibGljOgogICAgIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIHRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0
KCk7IH0KICAgICB2b2lkIHRyYW5zYWN0aW9uU3RhcnRlZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw+KTsKICAgICB2b2lkIHRyYW5zYWN0aW9uRmluaXNoZWQoUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPik7CisgICAgdm9pZCB0cmFuc2FjdGlvbkZpbmlz
aGVkQW5kRXZlbnRzRmlyZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPik7
CiAKIHByaXZhdGU6CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5h
bWUsIElEQkJhY2tpbmdTdG9yZSogZGF0YWJhc2UsIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3Iq
LCBJREJGYWN0b3J5QmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIp
OwogCiAgICAgYm9vbCBvcGVuSW50ZXJuYWwoKTsKKyAgICB2b2lkIHJ1bkludFZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbihpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPik7CiAgICAgdm9pZCBsb2FkT2JqZWN0U3RvcmVzKCk7CiAgICAgaW50MzJfdCBjb25u
ZWN0aW9uQ291bnQoKTsKICAgICB2b2lkIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKKyAgICBzdGF0
aWMgdm9pZCBwcm9jZXNzUGVuZGluZ1Rhc2sodm9pZCogZGIpOwogCiAgICAgc3RhdGljIHZvaWQg
Y3JlYXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPik7CiAgICAg
c3RhdGljIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsPik7CiAgICAgc3RhdGljIHZvaWQgc2V0VmVyc2lvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+LCBjb25zdCBTdHJp
bmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsPik7CisgICAgc3RhdGljIHZvaWQgc2V0SW50VmVyc2lvbkludGVy
bmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw+LCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKIAogICAgIC8vIFRoZXNlIGFy
ZSB1c2VkIGFzIHNldFZlcnNpb24gdHJhbnNhY3Rpb24gYWJvcnQgdGFza3MuCiAgICAgc3RhdGlj
IHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmVGcm9tTWFwKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw+KTsKQEAgLTkzLDYgKzk4LDcgQEAgcHJpdmF0ZToKICAgICBpbnQ2NF90
IG1faWQ7CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcgbV92ZXJzaW9uOworICAgIGlu
dDY0X3QgbV9pbnRWZXJzaW9uOwogCiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICAvLyBU
aGlzIG1pZ2h0IG5vdCBuZWVkIHRvIGJlIGEgUmVmUHRyIHNpbmNlIHRoZSBmYWN0b3J5J3MgbGlm
ZXRpbWUgaXMgdGhhdCBvZiB0aGUgcGFnZSBncm91cCwgYnV0IGl0J3MgYmV0dGVyIHRvIGJlIGNv
bnNlcnZpdGl2ZSB0aGFuIHNvcnJ5LgpAQCAtMTEzLDYgKzExOSw5IEBAIHByaXZhdGU6CiAgICAg
Y2xhc3MgUGVuZGluZ09wZW5DYWxsOwogICAgIERlcXVlPFJlZlB0cjxQZW5kaW5nT3BlbkNhbGw+
ID4gbV9wZW5kaW5nT3BlbkNhbGxzOwogCisgICAgY2xhc3MgUGVuZGluZ09wZW5XaXRoVmVyc2lv
bkNhbGw7CisgICAgRGVxdWU8UmVmUHRyPFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsPiA+IG1f
cGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzOworCiAgICAgY2xhc3MgUGVuZGluZ0RlbGV0ZUNh
bGw7CiAgICAgRGVxdWU8UmVmUHRyPFBlbmRpbmdEZWxldGVDYWxsPiA+IG1fcGVuZGluZ0RlbGV0
ZUNhbGxzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VDYWxsYmFja3MuaAppbmRleCBiM2YyNDRmNTE2YjY5ODdlYTExOWNiZjcwMTli
N2I1NDM3NWYxMmJmLi4xNmE5ZWE2YzUwOGIwZDkyYjYxZTQ5OTdjNTQzMDEzMmE2ZDJhY2FhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNh
bGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQ2FsbGJhY2tzLmgKQEAgLTM4LDYgKzM4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfklE
QkRhdGFiYXNlQ2FsbGJhY2tzKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hh
bmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvblZlcnNp
b25DaGFuZ2UoaW50NjRfdCBjdXJyZW50VmVyc2lvbiwgaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9u
KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUNhbGxiYWNrc0ltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcAppbmRleCAxOTQxMmZjYmU1MGFiNDRiZjUzZGMwMWUw
M2Q4ODUzZTI4ZjdjNWZmLi5mNzE3YWRiZDU1MWQ0NDJlYmI4ZmQ5OGRkOGE3Y2ZkOTBkNjliY2Q5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTUyLDYgKzUyLDEyIEBAIHZvaWQgSURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJz
aW9uKQogICAgICAgICBtX2RhdGFiYXNlLT5vblZlcnNpb25DaGFuZ2UodmVyc2lvbik7CiB9CiAK
K3ZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBj
dXJyZW50VmVyc2lvbiwgaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKQoreworICAgIGlmIChtX2Rh
dGFiYXNlKQorICAgICAgICBtX2RhdGFiYXNlLT5vblZlcnNpb25DaGFuZ2UoY3VycmVudFZlcnNp
b24sIHJlcXVlc3RlZFZlcnNpb24pOworfQorCiB2b2lkIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bDo6dW5yZWdpc3RlckRhdGFiYXNlKElEQkRhdGFiYXNlKiBkYXRhYmFzZSkKIHsKICAgICBBU1NF
UlRfVU5VU0VEKGRhdGFiYXNlLCBkYXRhYmFzZSA9PSBtX2RhdGFiYXNlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsLmgKaW5kZXggZThiMWY5OWI4MzhhZjdiOTM3ZDk0YjdhZjhmN2Y3ZGZiODJiZTdmYi4u
MDgwZjViYTg3YmZkNjgyNWM1NTVmYzhkNWQwZjdmNzY2NzQzYTQyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfklEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbCgpOwogCiAgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShj
b25zdCBTdHJpbmcmIHZlcnNpb24pOworICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2Uo
aW50NjRfdCBjdXJyZW50VmVyc2lvbiwgaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKTsKICAgICB2
b2lkIHVucmVnaXN0ZXJEYXRhYmFzZShJREJEYXRhYmFzZSopOwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCBjZjUy
Y2MxZmUyYjEzNTViNmM1NGVkY2UyNjVlMGYzZThjM2E1ZTkxLi5jODNiYTM2NDVkYmY2ZDM5ODNj
OWNjYTdkN2IzN2FiMTUwNzcyYjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIklEQkZh
Y3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAi
SURCS2V5UmFuZ2UuaCIKLSNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCisjaW5jbHVkZSAiSURCT3Bl
bkRCUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtMTA1LDcgKzEwNSw3IEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCRmFjdG9yeTo6Z2V0RGF0YWJhc2VOYW1lcyhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKLVBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1Jl
ZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAobmFtZS5pc051bGwoKSkgewogICAgICAgICBlYyA9
IE5BVElWRV9UWVBFX0VSUjsKQEAgLTExNCwxMSArMTE0LDE2IEBAIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCRmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBTCiAgICAgaWYgKCFpc0NvbnRleHRWYWxpZChjb250ZXh0KSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0
ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgMCk7Ci0gICAgbV9iYWNrZW5kLT5vcGVu
KG5hbWUsIHJlcXVlc3QsIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIGNvbnRleHQsIGdldElu
ZGV4ZWREQkRhdGFiYXNlUGF0aChjb250ZXh0KSk7CisgICAgUmVmUHRyPElEQk9wZW5EQlJlcXVl
c3Q+IHJlcXVlc3QgPSBJREJPcGVuREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55Ojpj
cmVhdGUodGhpcyksIHZlcnNpb24pOworICAgIG1fYmFja2VuZC0+b3BlbihuYW1lLCB2ZXJzaW9u
LCByZXF1ZXN0LCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBjb250ZXh0LCBnZXRJbmRleGVk
REJEYXRhYmFzZVBhdGgoY29udGV4dCkpOwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCitQYXNz
UmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKKyAgICByZXR1cm4gb3Blbihjb250ZXh0LCBuYW1lLCBJREJEYXRhYmFzZU1ldGFkYXRhOjpO
b0ludFZlcnNpb24sIGVjKTsKK30KKwogUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVz
dD4gSURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAo
bmFtZS5pc051bGwoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeS5oCmluZGV4IDQ2MTFjYjZjNGZlODM5OTBiNDcyNGE0M2JmMDljOWE1YTk1ZDg4OGQu
LjM2NDViYjgxZGM3ZWU5NjY5MDVkYTY1MmMwNjRkYTczODZmNjUzZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKQEAgLTMwLDcgKzMwLDcgQEAK
IAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2Vu
ZEludGVyZmFjZS5oIgotI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKKyNpbmNsdWRlICJJREJPcGVu
REJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC01OCw3ICs1OCw4
IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0RGF0YWJhc2VOYW1l
cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0
aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gb3BlbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IGRlbGV0ZURhdGFiYXNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmKTsKIAogICAgIHNob3J0IGNtcChQYXNzUmVmUHRyPElEQktleT4gZmlyc3QsIFBhc3NSZWZQ
dHI8SURCS2V5PiBzZWNvbmQsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGwKaW5kZXggMDM4OWViMmFhZTdlMTI5OTU0
ZDlhY2YwM2E1OWZmYmNjN2ZiYWFjYy4uYmY3MWEyZGQyNWQxZmY5NWUyNjQzNWY0ZTQxZjBjNDFi
OTc2NzJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5pZGwKQEAgLTMwLDcgKzMwLDcgQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgIF0gSURCRmFj
dG9yeSB7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBJbXBsZW1l
bnRlZEFzPWdldERhdGFiYXNlTmFtZXNdIElEQlJlcXVlc3Qgd2Via2l0R2V0RGF0YWJhc2VOYW1l
cygpOwogCi0gICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1
ZXN0IG9wZW4oaW4gRE9NU3RyaW5nIG5hbWUpCisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0XSBJREJPcGVuREJSZXF1ZXN0IG9wZW4oaW4gRE9NU3RyaW5nIG5hbWUsIGlu
IFtPcHRpb25hbF0gdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24pCiAgICAgICAgICAgICByYWlz
ZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRdIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IGRlbGV0ZURhdGFiYXNlKGluIERP
TVN0cmluZyBuYW1lKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeUJhY2tlbmRJbXBsLmNwcAppbmRleCBkZmIxNDU3YTMwNmRhYTdhNTY4YzIxYWY2ZWZhMzQ1
NDZjZTNmZjQ2Li4xN2E5YzRkMmU4ZGQyMTI2YjdhMjUzOWZhMjEwYTQ1N2UxNzEwY2U0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2Vu
ZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rv
cnlCYWNrZW5kSW1wbC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkxldmVsREJCYWNraW5nU3RvcmUuaCIKICNpbmNs
dWRlICJJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBh
cmFtLmg+CiAKQEAgLTE0OSwzMiArMTUwLDMwIEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3Jl
PiBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5CYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxTCiAg
ICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0
IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJwU2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXJlY3RvcnkpCit2b2lkIElEQkZhY3RvcnlCYWNr
ZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
cHJwU2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IGRhdGFEaXJlY3RvcnkpCiB7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9y
aWdpbiA9IHBycFNlY3VyaXR5T3JpZ2luOwogICAgIGNvbnN0IFN0cmluZyB1bmlxdWVJZGVudGlm
aWVyID0gY29tcHV0ZVVuaXF1ZUlkZW50aWZpZXIobmFtZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCkp
OwogCisgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlQmFja2VuZDsK
ICAgICBJREJEYXRhYmFzZUJhY2tlbmRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUJhY2tl
bmRNYXAuZmluZCh1bmlxdWVJZGVudGlmaWVyKTsKLSAgICBpZiAoaXQgIT0gbV9kYXRhYmFzZUJh
Y2tlbmRNYXAuZW5kKCkpIHsKLSAgICAgICAgLy8gSWYgaXQncyBhbHJlYWR5IGJlZW4gb3BlbmVk
LCB3ZSBoYXZlIHRvIHdhaXQgZm9yIGFueSBwZW5kaW5nCi0gICAgICAgIC8vIHNldFZlcnNpb24g
Y2FsbHMgdG8gY29tcGxldGUuCi0gICAgICAgIGl0LT5zZWNvbmQtPm9wZW5Db25uZWN0aW9uKGNh
bGxiYWNrcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogRXZlcnl0
aGluZyBmcm9tIG5vdyBvbiBzaG91bGQgYmUgZG9uZSBvbiBhbm90aGVyIHRocmVhZC4KLSAgICBS
ZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBvcGVuQmFja2luZ1N0b3JlKHNl
Y3VyaXR5T3JpZ2luLCBkYXRhRGlyZWN0b3J5KTsKLSAgICBpZiAoIWJhY2tpbmdTdG9yZSkgewot
ICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBk
YXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFtZSwgYmFj
a2luZ1N0b3JlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCksIHRoaXMsIHVu
aXF1ZUlkZW50aWZpZXIpOwotICAgIGlmIChkYXRhYmFzZUJhY2tlbmQpIHsKLSAgICAgICAgbV9k
YXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5n
ZXQoKSk7Ci0gICAgICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbkNvbm5lY3Rpb24oY2FsbGJhY2tz
KTsKKyAgICBpZiAoaXQgPT0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZW5kKCkpIHsKKyAgICAgICAg
UmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gb3BlbkJhY2tpbmdTdG9yZShz
ZWN1cml0eU9yaWdpbiwgZGF0YURpcmVjdG9yeSk7CisgICAgICAgIGlmICghYmFja2luZ1N0b3Jl
KSB7CisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBkYXRhYmFzZUJhY2tl
bmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFtZSwgYmFja2luZ1N0b3JlLmdl
dCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCksIHRoaXMsIHVuaXF1ZUlkZW50aWZp
ZXIpOworICAgICAgICBpZiAoZGF0YWJhc2VCYWNrZW5kKQorICAgICAgICAgICAgbV9kYXRhYmFz
ZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFz
ZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiSW50ZXJu
YWwgZXJyb3IuIikpOwogICAgIH0gZWxzZQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURC
RGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwg
IkludGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAgZGF0YWJhc2VCYWNrZW5kID0gaXQtPnNlY29u
ZDsKKyAgICBpZiAodmVyc2lvbiA8IDApCisgICAgICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbkNv
bm5lY3Rpb24oY2FsbGJhY2tzKTsKKyAgICBlbHNlCisgICAgICAgIGRhdGFiYXNlQmFja2VuZC0+
b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihjYWxsYmFja3MsIHZlcnNpb24pOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCmluZGV4IGNhMWQwNTI4MmE4YzVlZGY3
NjZkNWU1NTUwOGZhZTBhOWMwNDhjNjUuLmQyNmY3NDY4MzQyYWE2YTE4ZGZjZGU5YmYxNzQzNjQy
MjhlMTA2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnlCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjZGVmaW5lIElE
QkZhY3RvcnlCYWNrZW5kSW1wbF9oCiAKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVy
ZmFjZS5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTU3LDcgKzU2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJREJCYWNraW5nU3RvcmUoY29uc3Qg
U3RyaW5nJiBmaWxlSWRlbnRpZmllcik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VO
YW1lcyhQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKLSAgICB2
aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0
cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
U3RyaW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3Qg
U3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGly
KTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggNDRmNWM3ODZl
ZjIxZWE0NzE5ZjYzNjk0MjlmNzY3MzkwMDQwOTI5My4uNGVhNWQ4YTMzMGZkMDQxYWY1MWNiMmE5
NTQ0ZWE0OGFjZjY2NmZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oCkBAIC01NCw3ICs1
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSgp
IHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBvcGVu
KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
ZGF0YURpcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwg
aW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRh
RGlyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYg
bmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgPSAwOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRleCAzMmUyZjY4MTU3OTQwOWEwOTA4ZDI5YTE4
NzJjMGNkYzU2Yjg5ZWY5Li5mODlmZWU1NTZlZjBmZjc5YTBhNTcwODNkMTlkNGY4YTExNzU5MjA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAtODcsNiArODcsMTIgQEAgc3RhdGljIGJvb2wg
cHV0SW50KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5LCBpbnQ2
NF90IHZhbHVlKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgorc3Rh
dGljIGJvb2wgcHV0VmFySW50KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFy
PiYga2V5LCBpbnQ2NF90IHZhbHVlKQoreworICAgIHJldHVybiBkYi0+cHV0KGtleSwgZW5jb2Rl
VmFySW50KHZhbHVlKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBEQk9yVHJhbnNhY3Rpb24+
CiBzdGF0aWMgYm9vbCBnZXRTdHJpbmcoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgVmVjdG9y
PGNoYXI+JiBrZXksIFN0cmluZyYgZm91bmRTdHJpbmcpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJl
c3VsdDsKQEAgLTEyOSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBjaGFy
KiBuYW1lKCkgY29uc3QgeyByZXR1cm4gImlkYl9jbXAxIjsgfQogfTsKIAotc3RhdGljIGJvb2wg
c2V0VXBNZXRhZGF0YShMZXZlbERCRGF0YWJhc2UqIGRiKQorc3RhdGljIGJvb2wgc2V0VXBNZXRh
ZGF0YShMZXZlbERCRGF0YWJhc2UqIGRiLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKIHsKICAgICBj
b25zdCBWZWN0b3I8Y2hhcj4gbWV0YURhdGFLZXkgPSBTY2hlbWFWZXJzaW9uS2V5OjplbmNvZGUo
KTsKIApAQCAtMjA4LDcgKzIxNCw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJM
ZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0CiAgICAgUmVm
UHRyPElEQkxldmVsREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZShhZG9wdFJlZihuZXcgSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZShmaWxlSWRlbnRpZmllciwgZmFjdG9yeSwgZGIucmVsZWFzZSgp
KSkpOwogICAgIGJhY2tpbmdTdG9yZS0+bV9jb21wYXJhdG9yID0gY29tcGFyYXRvci5yZWxlYXNl
KCk7CiAKLSAgICBpZiAoIXNldFVwTWV0YWRhdGEoYmFja2luZ1N0b3JlLT5tX2RiLmdldCgpKSkK
KyAgICBpZiAoIXNldFVwTWV0YWRhdGEoYmFja2luZ1N0b3JlLT5tX2RiLmdldCgpLCBmaWxlSWRl
bnRpZmllcikpCiAgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4oKTsK
IAogICAgIHJldHVybiBiYWNraW5nU3RvcmUucmVsZWFzZSgpOwpAQCAtMjM0LDcgKzI0MCw3IEBA
IHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0RGF0YWJhc2VOYW1lcyhWZWN0b3I8U3Ry
aW5nPiYgZm91bmROYW1lcykKICAgICB9CiB9CiAKLWJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91
bmRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElkKQorYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiBmb3Vu
ZFN0cmluZ1ZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVyc2lvbiwgaW50NjRfdCYgZm91bmRJ
ZCkKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5ID0gRGF0YWJhc2VOYW1lS2V5OjplbmNv
ZGUobV9pZGVudGlmaWVyLCBuYW1lKTsKIApAQCAtMjQyLDEwICsyNDgsMTYgQEAgYm9vbCBJREJM
ZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYg
bmFtZSwgU3RyaW5nJgogICAgIGlmICghb2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IG9rID0gZ2V0U3RyaW5nKG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShm
b3VuZElkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VyVmVyc2lvbiksIGZvdW5kVmVyc2lvbik7
CisgICAgb2sgPSBnZXRTdHJpbmcobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5j
b2RlKGZvdW5kSWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgZm91bmRTdHJp
bmdWZXJzaW9uKTsKICAgICBpZiAoIW9rKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBv
ayA9IGdldEludChtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoZm91bmRJ
ZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlckludFZlcnNpb24pLCBmb3VuZEludFZlcnNpb24p
OworICAgIGlmICghb2spCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZm91bmRJbnRW
ZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uKQorICAgICAg
Zm91bmRJbnRWZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uOworCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI2NCw3ICsyNzYsNyBAQCBzdGF0aWMgaW50NjRfdCBn
ZXROZXdEYXRhYmFzZUlkKExldmVsREJEYXRhYmFzZSogZGIpCiAgICAgcmV0dXJuIGRhdGFiYXNl
SWQ7CiB9CiAKLWJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSURCRGF0YWJhc2VN
ZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgaW50NjRf
dCYgcm93SWQpCitib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUlEQkRhdGFiYXNl
TWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGludDY0
X3QgaW50VmVyc2lvbiwgaW50NjRfdCYgcm93SWQpCiB7CiAgICAgcm93SWQgPSBnZXROZXdEYXRh
YmFzZUlkKG1fZGIuZ2V0KCkpOwogICAgIGlmIChyb3dJZCA8IDApCkBAIC0yNzUsNiArMjg3LDE5
IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0
YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoIXB1dFN0cmluZyhtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUocm93
SWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgdmVyc2lvbikpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoaW50VmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRh
OjpOb0ludFZlcnNpb24pCisgICAgICBpbnRWZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6
RGVmYXVsdEludFZlcnNpb247CisgICAgaWYgKCFwdXRWYXJJbnQobV9kYi5nZXQoKSwgRGF0YWJh
c2VNZXRhRGF0YUtleTo6ZW5jb2RlKHJvd0lkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VySW50
VmVyc2lvbiksIGludFZlcnNpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJh
c2VJbnRWZXJzaW9uKGludDY0X3Qgcm93SWQsIGludDY0X3QgaW50VmVyc2lvbikKK3sKKyAgICBB
U1NFUlQobV9jdXJyZW50VHJhbnNhY3Rpb24pOworICAgIGlmICghcHV0VmFySW50KG1fY3VycmVu
dFRyYW5zYWN0aW9uLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUocm93SWQsIERh
dGFiYXNlTWV0YURhdGFLZXk6OlVzZXJJbnRWZXJzaW9uKSwgaW50VmVyc2lvbikpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMDUsNyArMzMwLDgg
QEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJp
bmcmIG5hbWUpCiAKICAgICBpbnQ2NF90IGRhdGFiYXNlSWQ7CiAgICAgU3RyaW5nIHZlcnNpb247
Ci0gICAgaWYgKCFnZXRJREJEYXRhYmFzZU1ldGFEYXRhKG5hbWUsIHZlcnNpb24sIGRhdGFiYXNl
SWQpKSB7CisgICAgaW50NjRfdCBpbnRWZXJzaW9uOworICAgIGlmICghZ2V0SURCRGF0YWJhc2VN
ZXRhRGF0YShuYW1lLCB2ZXJzaW9uLCBpbnRWZXJzaW9uLCBkYXRhYmFzZUlkKSkgewogICAgICAg
ICB0cmFuc2FjdGlvbi0+cm9sbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZS5oCmluZGV4IGM1YTllMmVlMzA5ZThjYTNmZDdmNzBmMGFhMmJiODBjZWMw
NDZiMmUuLjY3M2NhOWMxNWFlM2M2ZGFkNDU5N2UxNzRkYjI3ZWVhNjFlZDlmNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFj
a2luZ1N0b3JlLmgKQEAgLTQ1LDkgKzQ1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJM
ZXZlbERCQmFja2luZ1N0b3JlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1l
cyhWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcyk7Ci0gICAgdmlydHVhbCBib29sIGdldElEQkRh
dGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwg
aW50NjRfdCYgZm91bmRJZCk7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0
YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3Qm
IHJvd0lkKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBT
dHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZEludFZlcnNp
b24sIGludDY0X3QmIGZvdW5kSWQpOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFz
ZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2
NF90IGludFZlcnNpb24sIGludDY0X3QmIHJvd0lkKTsKICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRl
SURCRGF0YWJhc2VNZXRhRGF0YShpbnQ2NF90IHJvd0lkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24p
OworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24oaW50NjRfdCBy
b3dJZCwgaW50NjRfdCBpbnRWZXJzaW9uKTsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJh
c2UoY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9y
ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8
U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBW
ZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaAppbmRleCAzMTEzZTdk
OGE5ODgyYmQ3ZDhlNzc5Y2FkYWE5N2VkODIxYzVhOGU4Li4zZmNkYzQ2ZDM3MjM3ZGRiYzMxMDZj
ZDEwMWQxMzVlNDY3MjE4YjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oCkBAIC0xNDAsNyArMTQwLDggQEAgcHVibGljOgog
ICAgICAgICBPcmlnaW5OYW1lID0gMCwKICAgICAgICAgRGF0YWJhc2VOYW1lID0gMSwKICAgICAg
ICAgVXNlclZlcnNpb24gPSAyLAotICAgICAgICBNYXhPYmplY3RTdG9yZUlkID0gMworICAgICAg
ICBNYXhPYmplY3RTdG9yZUlkID0gMywKKyAgICAgICAgVXNlckludFZlcnNpb24gPSA0CiAgICAg
fTsKIAogICAgIHN0YXRpYyBWZWN0b3I8Y2hhcj4gZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwg
TWV0YURhdGFUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJN
ZXRhZGF0YS5oCmluZGV4IGRkMjMwNjIwYzdjMWZiMDExYjNmOTk0MTBiYzgyZTdlNmE4ZjUzYmUu
LmUzZjBlYzNmYjExOGI1OWFkNzE1NTU2NGQ4YjFlNDUxNzMzODY1ZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaApAQCAtNDMsNyArNDMsOCBA
QCBzdHJ1Y3QgSURCSW5kZXhNZXRhZGF0YTsKIAogc3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGEg
ewogICAgIGVudW0gewotICAgICAgICBOb0ludFZlcnNpb24gPSAtMQorICAgICAgICBOb0ludFZl
cnNpb24gPSAtMSwKKyAgICAgICAgRGVmYXVsdEludFZlcnNpb24gPSAwCiAgICAgfTsKIAogICAg
IElEQkRhdGFiYXNlTWV0YWRhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Y2MxNWVmMWEyMmVi
NTA5MmUxMTI2ZGMzNzAyOTMxNTA3OWEwMGFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKQEAgLTAsMCArMSw5
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJPcGVuREJSZXF1
ZXN0LmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQkRh
dGFiYXNlLmgiCisjaW5jbHVkZSAiSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oIgorI2lu
Y2x1ZGUgIklEQlVwZ3JhZGVOZWVkZWRFdmVudC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPElEQk9wZW5E
QlJlcXVlc3Q+IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBpbnQ2NF90IHZlcnNpb24pCit7
CisgICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVlc3QoYWRvcHRSZWYobmV3IElEQk9w
ZW5EQlJlcXVlc3QoY29udGV4dCwgc291cmNlLCB2ZXJzaW9uKSkpOworICAgIHJlcXVlc3QtPnN1
c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKK30KKworSURC
T3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBpbnQ2NF90IHZlcnNpb24pCisgICAg
OiBJREJSZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSwgMCkKKyAgICAsIG1fdmVyc2lvbih2ZXJzaW9u
KQoreworICAgIEFTU0VSVCghbV9yZXN1bHQpOworfQorCitJREJPcGVuREJSZXF1ZXN0Ojp+SURC
T3BlbkRCUmVxdWVzdCgpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgSURCT3BlbkRCUmVx
dWVzdDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5p
bnRlcmZhY2VGb3JJREJPcGVuREJSZXF1ZXN0OworfQorCit2b2lkIElEQk9wZW5EQlJlcXVlc3Q6
Om9uQmxvY2tlZChpbnQ2NF90IG9sZFZlcnNpb24pCit7CisgICAgQVNTRVJUKCFtX2Vycm9yQ29k
ZSAmJiBtX2Vycm9yTWVzc2FnZS5pc051bGwoKSAmJiAhbV9yZXN1bHQpOworICAgIGVucXVldWVF
dmVudChJREJVcGdyYWRlTmVlZGVkRXZlbnQ6OmNyZWF0ZShvbGRWZXJzaW9uLCBtX3ZlcnNpb24s
IGV2ZW50TmFtZXMoKS5ibG9ja2VkRXZlbnQpKTsKK30KKwordm9pZCBJREJPcGVuREJSZXF1ZXN0
OjpvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gcHJwVHJhbnNhY3Rpb25CYWNrZW5kLCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gcHJwRGF0YWJhc2VCYWNrZW5kKQoreworICAg
IEFTU0VSVCghbV9lcnJvckNvZGUpOworICAgIEFTU0VSVChtX2Vycm9yTWVzc2FnZS5pc051bGwo
KSk7CisgICAgQVNTRVJUKCFtX2Vycm9yKTsKKy8vICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1f
cmVzdWx0LCAiaW4gb2JqZWN0ICVwIiwgdGhpcyk7CisgICAgaWYgKG1fY29udGV4dFN0b3BwZWQg
fHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2VCYWNrZW5kID0gcHJwRGF0
YWJhc2VCYWNrZW5kOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
IHRyYW5zYWN0aW9uQmFja2VuZCA9IHBycFRyYW5zYWN0aW9uQmFja2VuZDsKKyAgICBSZWZQdHI8
SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIGRhdGFiYXNlQmFja2VuZCk7CisKKyAgICBSZWZQdHI8SURCVHJhbnNh
Y3Rpb24+IGZyb250ZW5kID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIHRyYW5zYWN0aW9uQmFja2VuZCwgSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hB
TkdFLCBpZGJEYXRhYmFzZS5nZXQoKSwgdGhpcyk7CisgICAgdHJhbnNhY3Rpb25CYWNrZW5kLT5z
ZXRDYWxsYmFja3MoZnJvbnRlbmQuZ2V0KCkpOworICAgIG1fdHJhbnNhY3Rpb24gPSBmcm9udGVu
ZDsKKyAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGlkYkRhdGFiYXNlLnJlbGVhc2UoKSk7
CisKKyAgICBpZiAob2xkVmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNp
b24pIHsKKyAgICAgIC8vIFRoZSBvcGVuIGNhbGwgdGhhdCBjcmVhdGVkIHRoaXMgSURCT3BlbkRC
UmVxdWVzdCB3YXMgdGhlIGZpcnN0IGludGVnZXIKKyAgICAgIC8vIHZlcnNpb24gdGhhdCB0aGlz
IGRhdGFiYXNlIGhhZC4KKyAgICAgIG9sZFZlcnNpb24gPSBJREJEYXRhYmFzZU1ldGFkYXRhOjpE
ZWZhdWx0SW50VmVyc2lvbjsKKyAgICB9CisgICAgZW5xdWV1ZUV2ZW50KElEQlVwZ3JhZGVOZWVk
ZWRFdmVudDo6Y3JlYXRlKG9sZFZlcnNpb24sIG1fdmVyc2lvbiwgZXZlbnROYW1lcygpLnVwZ3Jh
ZGVuZWVkZWRFdmVudCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVx
dWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVz
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmVjNWI4YmNjNjc3MzAzNWE0MTVjYzk0ZjFhMjUzYTRmYjE4NDUxZDkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
cGVuREJSZXF1ZXN0LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCT3BlbkRC
UmVxdWVzdF9oCisjZGVmaW5lIElEQk9wZW5EQlJlcXVlc3RfaAorCisjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgSURCT3BlbkRCUmVxdWVzdCA6IHB1YmxpYyBJREJSZXF1ZXN0IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGludDY0X3Qg
dmVyc2lvbik7CisgICAgdmlydHVhbCB+SURCT3BlbkRCUmVxdWVzdCgpOworCisgICAgdmlydHVh
bCB2b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U+KSBPVkVSUklERTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKworICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYmxvY2tlZCk7CisgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUih1cGdyYWRlbmVlZGVkKTsKKworcHJpdmF0ZToKKyAgICBJ
REJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFu
eT4gc291cmNlLCBpbnQ2NF90IHZlcnNpb24pOworCisgICAgdmlydHVhbCBib29sIGlzT3BlbkRC
UmVxdWVzdCgpIGNvbnN0IE9WRVJSSURFCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBpbnQ2NF90IG1fdmVyc2lvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjZW5kaWYgLy8gSURC
T3BlbkRCUmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9wZW5EQlJlcXVlc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyNjZjNzM1OWEwYTY1ZTY5NWIw
ODQ1ZGU1ZjUzNTgzYTZjZDgyOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmlkbApAQCAtMCwwICsxLDM2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworbW9kdWxlIHN0b3JhZ2UgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0
aW9uYWw9SU5ERVhFRF9EQVRBQkFTRSwKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0LAorICAgICAg
ICBFdmVudFRhcmdldAorICAgIF0gSURCT3BlbkRCUmVxdWVzdCA6IElEQlJlcXVlc3QgeworICAg
ICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmJsb2NrZWQ7CisgICAgICAgIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9udXBncmFkZW5lZWRlZDsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCA3ZGQzMGU5Y2Zm
NWRiMDI2Mjg3Y2NjMGI0MWY2MWIwYWE5Zjk4ODE5Li40ZGVlOTc4NTE5NDU3ZTE5OTNjMmY4ODI0
NzdjZjVhYTdmYjViMjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJSZXF1ZXN0LmNwcApAQCAtNTMsMTMgKzUzLDE0IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gSURCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSCiAKIElEQlJlcXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX3Jlc3Vs
dCgwKQogICAgICwgbV9lcnJvckNvZGUoMCkKLSAgICAsIG1fc291cmNlKHNvdXJjZSkKKyAgICAs
IG1fY29udGV4dFN0b3BwZWQoZmFsc2UpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9u
KQorICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAgICwgbV9yZWFkeVN0YXRlKFBFTkRJTkcpCiAg
ICAgLCBtX3JlcXVlc3RBYm9ydGVkKGZhbHNlKQogICAgICwgbV9jdXJzb3JGaW5pc2hlZChmYWxz
ZSkKLSAgICAsIG1fY29udGV4dFN0b3BwZWQoZmFsc2UpCiAgICAgLCBtX2N1cnNvclR5cGUoSURC
Q3Vyc29yQmFja2VuZEludGVyZmFjZTo6SW52YWxpZEN1cnNvclR5cGUpCiAgICAgLCBtX2N1cnNv
ckRpcmVjdGlvbihJREJDdXJzb3I6Ok5FWFQpCiAgICAgLCBtX3BlbmRpbmdDdXJzb3IoMCkKQEAg
LTI3MywxNSArMjc0LDIxIEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQogICAgIEFTU0VSVChtX3JlYWR5
U3RhdGUgPT0gUEVORElORyB8fCBtX3JlYWR5U3RhdGUgPT0gRE9ORSk7CiAgICAgaWYgKG1fcmVx
dWVzdEFib3J0ZWQpCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09
IFBFTkRJTkcpOwotICAgIEFTU0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNO
dWxsKCkgJiYgIW1fZXJyb3IgJiYgIW1fcmVzdWx0KTsKKyAgICBBU1NFUlQobV9yZWFkeVN0YXRl
ID09IFBFTkRJTkcgfHwgaXNPcGVuREJSZXF1ZXN0KCkpOworICAgIEFTU0VSVCghbV9lcnJvckNv
ZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkgJiYgIW1fZXJyb3IpOwogICAgIGlmIChtX2Nv
bnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UgPSBJREJEYXRhYmFzZTo6
Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmFja2VuZCk7Ci0gICAgaWRiRGF0YWJh
c2UtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKTsKLQotICAgIG1fcmVzdWx0ID0gSURCQW55
OjpjcmVhdGUoaWRiRGF0YWJhc2UucmVsZWFzZSgpKTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2U+
IGlkYkRhdGFiYXNlOworICAgIGlmIChtX3Jlc3VsdCkgeworICAgICAgICBpZGJEYXRhYmFzZSA9
IG1fcmVzdWx0LT5pZGJEYXRhYmFzZSgpOworICAgICAgICBBU1NFUlQoaWRiRGF0YWJhc2UpOwor
ICAgICAgICBpZGJEYXRhYmFzZS0+cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcygpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIGJhY2tlbmQpOworICAgICAgICBpZGJEYXRhYmFzZS0+cmVnaXN0
ZXJGcm9udGVuZENhbGxiYWNrcygpOworICAgICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRl
KGlkYkRhdGFiYXNlLnJlbGVhc2UoKSk7CisgICAgfQogICAgIGVucXVldWVFdmVudChjcmVhdGVT
dWNjZXNzRXZlbnQoKSk7CiB9CiAKQEAgLTQwOCwxMyArNDE1LDEyIEBAIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIElEQlJlcXVlc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogYm9v
bCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewog
ICAgIElEQl9UUkFDRSgiSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCIpOwotICAgIEFTU0VSVCht
X3JlYWR5U3RhdGUgPT0gUEVORElORyk7CisgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBQRU5E
SU5HIHx8IGlzT3BlbkRCUmVxdWVzdCgpKTsKICAgICBBU1NFUlQoIW1fY29udGV4dFN0b3BwZWQp
OwogICAgIEFTU0VSVChtX2VucXVldWVkRXZlbnRzLnNpemUoKSk7CiAgICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKGV2ZW50LT50YXJnZXQoKSA9PSB0aGlz
KTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcmVhZHlTdGF0ZSA8IERPTkUsICJtX3JlYWR5
U3RhdGUgPCBET05FKCVkKSwgd2FzICVkIiwgRE9ORSwgbV9yZWFkeVN0YXRlKTsKLQorICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UobV9yZWFkeVN0YXRlIDwgRE9ORSB8fCBpc09wZW5EQlJlcXVlc3Qo
KSwgIldoZW4gZGlzcGF0Y2hpbmcgZXZlbnQgJXMsIG1fcmVhZHlTdGF0ZSA8IERPTkUoJWQpLCB3
YXMgJWQiLCBldmVudC0+dHlwZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIERPTkUsIG1fcmVh
ZHlTdGF0ZSk7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLmJsb2NrZWRF
dmVudCkKICAgICAgICAgbV9yZWFkeVN0YXRlID0gRE9ORTsKIApAQCAtNDQzLDExICs0NDksMTIg
QEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50
KQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBXaGVuIHdlIGFsbG93IGN1c3RvbSBldmVudCBkaXNw
YXRjaGluZywgdGhpcyB3aWxsIHByb2JhYmx5IG5lZWQgdG8gY2hhbmdlLgotICAgIEFTU0VSVChl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQgfHwgZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkuZXJyb3JFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5ibG9ja2VkRXZlbnQpOwotICAgIGNvbnN0IGJvb2wgc2V0VHJhbnNhY3Rpb25BY3RpdmUg
PSBtX3RyYW5zYWN0aW9uICYmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWNjZXNz
RXZlbnQgfHwgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgJiYgbV9l
cnJvckNvZGUgIT0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKKyAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnN1Y2Nlc3NF
dmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50IHx8IGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCB8fCBldmVudC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS51cGdyYWRlbmVlZGVkRXZlbnQsICJldmVudCB0eXBlIHdhcyAlcyIsIGV2
ZW50LT50eXBlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgY29uc3QgYm9vbCBzZXRU
cmFuc2FjdGlvbkFjdGl2ZSA9IG1fdHJhbnNhY3Rpb24gJiYgKGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLnN1Y2Nlc3NFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS51
cGdyYWRlbmVlZGVkRXZlbnQgfHwgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9y
RXZlbnQgJiYgbV9lcnJvckNvZGUgIT0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9F
UlIpKTsKIAogICAgIGlmIChzZXRUcmFuc2FjdGlvbkFjdGl2ZSkKICAgICAgICAgbV90cmFuc2Fj
dGlvbi0+c2V0QWN0aXZlKHRydWUpOworCiAgICAgYm9vbCBkb250UHJldmVudERlZmF1bHQgPSBJ
REJFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoKGV2ZW50LmdldCgpLCB0YXJnZXRzKTsKICAgICBp
ZiAoc2V0VHJhbnNhY3Rpb25BY3RpdmUpCiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPnNldEFjdGl2
ZShmYWxzZSk7CkBAIC00ODEsNiArNDg4LDEyIEBAIHZvaWQgSURCUmVxdWVzdDo6dW5jYXVnaHRF
eGNlcHRpb25JbkV2ZW50SGFuZGxlcigpCiAgICAgfQogfQogCit2b2lkIElEQlJlcXVlc3Q6OmNs
ZWFyVHJhbnNhY3Rpb25Qcm9wZXJ0eSgpCit7CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24tPmlz
VmVyc2lvbkNoYW5nZSgpKTsKKyAgICBtX3RyYW5zYWN0aW9uLmNsZWFyKCk7Cit9CisKIHZvaWQg
SURCUmVxdWVzdDo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAg
IEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gUEVORElORyB8fCBtX3JlYWR5U3RhdGUgPT0gRE9ORSk7
CkBAIC00ODgsNyArNTAxLDcgQEAgdm9pZCBJREJSZXF1ZXN0OjplbnF1ZXVlRXZlbnQoUGFzc1Jl
ZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgaWYgKG1fY29udGV4dFN0b3BwZWQgfHwgIXNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKG1fcmVhZHlT
dGF0ZSA9PSBQRU5ESU5HKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcmVhZHlTdGF0ZSA9
PSBQRU5ESU5HIHx8IGlzT3BlbkRCUmVxdWVzdCgpLCAiV2hlbiBxdWV1ZWluZyBldmVudCAlcywg
bV9yZWFkeVN0YXRlIHdhcyAlZCIsIGV2ZW50LT50eXBlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgbV9yZWFkeVN0YXRlKTsKIAogICAgIEV2ZW50UXVldWUqIGV2ZW50UXVldWUgPSBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmV2ZW50UXVldWUoKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmlu
ZGV4IGE4MDRjMmJkNWViMWI3MzFhNTE5NzU1ODY4OWFkYjZhNjVlYWJjM2UuLjY3ZGY0ZmJkMjJm
N2JjNmFmNmY0NTZhMDAzZWNmZjk2YWRkYjYzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTkxLDYgKzkxLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCk7CiAgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYs
IGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+ID4mKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IC8vIE5vdCBp
bXBsZW1lbnRlZC4gQ2FsbGJhY2sgc2hvdWxkIG5vdCByZWFjaCB0aGUgcmVuZGVyZXIgc2lkZS4K
ICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7CisgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tl
ZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAg
ICAgLy8gQWN0aXZlRE9NT2JqZWN0CiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0IE9WRVJSSURFOwpAQCAtMTAzLDYgKzEwNCw4IEBAIHB1YmxpYzoKICAgICBib29s
IGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVj
KSB7IHJldHVybiBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOyB9CiAgICAg
dmlydHVhbCB2b2lkIHVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKTsKIAorICAgIHZv
aWQgY2xlYXJUcmFuc2FjdGlvblByb3BlcnR5KCk7CisKICAgICB1c2luZyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxJREJDYWxsYmFja3M+OjpyZWY7CiAgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8SURCQ2FsbGJhY2tzPjo6ZGVyZWY7CiAKQEAgLTExMyw2ICsxMTYsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgdW5zaWduZWQgc2hvcnQgbV9lcnJvckNvZGU7CiAgICAgU3RyaW5nIG1fZXJyb3JNZXNz
YWdlOwogICAgIFJlZlB0cjxET01FcnJvcj4gbV9lcnJvcjsKKyAgICBib29sIG1fY29udGV4dFN0
b3BwZWQ7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwogCiBwcml2
YXRlOgogICAgIC8vIEV2ZW50VGFyZ2V0CkBAIC0xMjMsMTQgKzEyOCwxNiBAQCBwcml2YXRlOgog
CiAgICAgUGFzc1JlZlB0cjxJREJDdXJzb3I+IGdldFJlc3VsdEN1cnNvcigpOwogICAgIHZvaWQg
c2V0UmVzdWx0Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPik7CisgICAgdmlydHVhbCBib29s
IGlzT3BlbkRCUmVxdWVzdCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQogCiAgICAgUmVmUHRyPElEQkFueT4gbV9zb3VyY2U7Ci0gICAgUmVmUHRyPElEQlRyYW5z
YWN0aW9uPiBtX3RyYW5zYWN0aW9uOwogCiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAg
ICAgYm9vbCBtX3JlcXVlc3RBYm9ydGVkOyAvLyBNYXkgYmUgYWJvcnRlZCBieSB0cmFuc2FjdGlv
biB0aGVuIHJlY2VpdmUgYXN5bmMgb25zdWNjZXNzOyBpZ25vcmUgdnMuIGFzc2VydC4KICAgICBi
b29sIG1fY3Vyc29yRmluaXNoZWQ7Ci0gICAgYm9vbCBtX2NvbnRleHRTdG9wcGVkOwogICAgIFZl
Y3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9lbnF1ZXVlZEV2ZW50czsKIAogICAgIC8vIE9ubHkgdXNl
ZCBpZiB0aGUgcmVzdWx0IHR5cGUgd2lsbCBiZSBhIGN1cnNvci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA3NjEyMzQ3
MDE0MTgzYzlkYTYxZThkYmFmZTY1ZmEzODU5OTkzNDdlLi5iNjE3NzBjZGIxOWI3OTVkMDU5NDJm
ODdmZTU1ZjAzNTE2MTczNzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAi
SURCSW5kZXguaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIklEQk9i
amVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQk9wZW5EQlJlcXVlc3Qu
aCIKICNpbmNsdWRlICJJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgiCiAjaW5jbHVkZSAi
SURCVHJhY2luZy5oIgogCkBAIC00Myw3ICs0NCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUsIElEQkRhdGFi
YXNlKiBkYikKIHsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFkb3B0
UmVmKG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0LCBiYWNrZW5kLCBtb2RlLCBkYikpKTsKKyAg
ICAvLyBGSVhNRTogVHJ5IHRvIGNvbnN0cnVjdCBhIHRlc3Qgd2hlcmUgdGhpcyBvdXRsaXZlcyBv
cGVuREJSZXF1ZXN0IGFuZCB3ZQorICAgIC8vIGdldCBhIHVzZSBhZnRlciBmcmVlLgorICAgIElE
Qk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJlcXVlc3QgPSAwOworICAgIHJldHVybiBjcmVhdGUoY29u
dGV4dCwgYmFja2VuZCwgbW9kZSwgZGIsIG9wZW5EQlJlcXVlc3QpOworfQorCitQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
PiBiYWNrZW5kLCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBJREJEYXRhYmFzZSogZGIsIElE
Qk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJlcXVlc3QpCit7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0
aW9uPiB0cmFuc2FjdGlvbihhZG9wdFJlZihuZXcgSURCVHJhbnNhY3Rpb24oY29udGV4dCwgYmFj
a2VuZCwgbW9kZSwgZGIsIG9wZW5EQlJlcXVlc3QpKSk7CiAgICAgdHJhbnNhY3Rpb24tPnN1c3Bl
bmRJZk5lZWRlZCgpOwogICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZWxlYXNlKCk7CiB9CkBAIC03
OSwxMCArODgsMTEgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6bW9kZVJl
YWRXcml0ZUxlZ2FjeSgpCiB9CiAKIAotSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBJREJE
YXRhYmFzZSogZGIpCitJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+IGJhY2tlbmQsIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUsIElEQkRhdGFiYXNlKiBk
YiwgSURCT3BlbkRCUmVxdWVzdCogb3BlbkRCUmVxdWVzdCkKICAgICA6IEFjdGl2ZURPTU9iamVj
dChjb250ZXh0LCB0aGlzKQogICAgICwgbV9iYWNrZW5kKGJhY2tlbmQpCiAgICAgLCBtX2RhdGFi
YXNlKGRiKQorICAgICwgbV9vcGVuREJSZXF1ZXN0KG9wZW5EQlJlcXVlc3QpCiAgICAgLCBtX21v
ZGUobW9kZSkKICAgICAsIG1fYWN0aXZlKHRydWUpCiAgICAgLCBtX3N0YXRlKFVudXNlZCkKQEAg
LTE4Miw3ICsxOTIsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZURlbGV0ZWQo
Y29uc3QgU3RyaW5nJiBuYW1lKQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpzZXRBY3RpdmUoYm9v
bCBhY3RpdmUpCiB7Ci0gICAgQVNTRVJUKG1fc3RhdGUgIT0gRmluaXNoZWQpOworICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UobV9zdGF0ZSAhPSBGaW5pc2hlZCwgIkEgZmluaXNoZWQgdHJhbnNhY3Rp
b24gdHJpZWQgdG8gc2V0QWN0aXZlKCVzKSBpbiAlcCIsIGFjdGl2ZSA/ICJ0cnVlIiA6ICJmYWxz
ZSIsIHRoaXMpOwogICAgIGlmIChtX3N0YXRlID09IEZpbmlzaGluZykKICAgICAgICAgcmV0dXJu
OwogICAgIEFTU0VSVChtX3N0YXRlID09IFVudXNlZCB8fCBtX3N0YXRlID09IFVzZWQpOwpAQCAt
Mzc1LDcgKzM4NSwxMCBAQCBib29sIElEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50KFBhc3NS
ZWZQdHI8RXZlbnQ+IGV2ZW50KQogCiAgICAgLy8gRklYTUU6IFdoZW4gd2UgYWxsb3cgY3VzdG9t
IGV2ZW50IGRpc3BhdGNoaW5nLCB0aGlzIHdpbGwgcHJvYmFibHkgbmVlZCB0byBjaGFuZ2UuCiAg
ICAgQVNTRVJUKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNvbXBsZXRlRXZlbnQgfHwg
ZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYWJvcnRFdmVudCk7Ci0gICAgcmV0dXJuIElE
QkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2goZXZlbnQuZ2V0KCksIHRhcmdldHMpOworICAgIGJv
b2wgcmV0dXJuVmFsdWUgPSBJREJFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoKGV2ZW50LmdldCgp
LCB0YXJnZXRzKTsKKyAgICBpZiAobV9vcGVuREJSZXF1ZXN0KQorICAgICAgICBtX29wZW5EQlJl
cXVlc3QtPmNsZWFyVHJhbnNhY3Rpb25Qcm9wZXJ0eSgpOworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKIH0KIAogYm9vbCBJREJUcmFuc2FjdGlvbjo6Y2FuU3VzcGVuZCgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCAx
ZjdhZjdkYWQxYmU5NDhmNmI0MTk1N2Y3OWU1ZjY4NzQyYjk5YWYwLi4wMDVlMzczNjMwYTRkMmZm
MmViYWZkODFlZTM2ZWEwYzk4OWE5MjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgSURCQ3Vyc29yOwogY2xhc3MgSURCRGF0YWJhc2U7CiBjbGFzcyBJ
REJPYmplY3RTdG9yZTsKK2NsYXNzIElEQk9wZW5EQlJlcXVlc3Q7CiAKIGNsYXNzIElEQlRyYW5z
YWN0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLCBwdWJsaWMgRXZlbnRUYXJn
ZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgpAQCAtNTYsNiArNTcsNyBAQCBw
dWJsaWM6CiAgICAgfTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlPiwgTW9kZSwgSURCRGF0YWJhc2UqKTsKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4sIE1vZGUsIElEQkRhdGFiYXNl
KiwgSURCT3BlbkRCUmVxdWVzdCopOwogICAgIHZpcnR1YWwgfklEQlRyYW5zYWN0aW9uKCk7CiAK
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlUmVhZE9ubHkoKTsKQEAgLTExOSw3
ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxJREJUcmFuc2FjdGlvbkNh
bGxiYWNrcz46OmRlcmVmOwogCiBwcml2YXRlOgotICAgIElEQlRyYW5zYWN0aW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZT4sIE1vZGUsIElEQkRhdGFiYXNlKik7CisgICAgSURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwg
TW9kZSwgSURCRGF0YWJhc2UqLCBJREJPcGVuREJSZXF1ZXN0Kik7CiAKICAgICB2b2lkIGVucXVl
dWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAgdm9pZCBjbG9zZU9wZW5DdXJzb3JzKCk7
CkBAIC0xNDIsNiArMTQ0LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKICAgICBSZWZQdHI8SURCRGF0YWJhc2U+IG1f
ZGF0YWJhc2U7CisgICAgSURCT3BlbkRCUmVxdWVzdCogbV9vcGVuREJSZXF1ZXN0OwogICAgIGNv
bnN0IE1vZGUgbV9tb2RlOwogICAgIGJvb2wgbV9hY3RpdmU7CiAgICAgU3RhdGUgbV9zdGF0ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKaW5kZXggNzBmMzM2N2FiZmJjMWEwNGE5ZmVjYTFj
YWI0ZTQzMzBkZDYzNzM0MS4uMWJiZDIzYjU2YmJhMGY5ZTZlZjM0NDk5ZGViODA2YjNjMDg0NzBl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKQEAgLTIyNyw2ICsyMjcsOCBAQCB2b2lk
IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNvbW1pdCgpCiAgICAgZWxzZQogICAgICAgICBt
X2NhbGxiYWNrcy0+b25BYm9ydCgpOwogCisgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25GaW5p
c2hlZEFuZEV2ZW50c0ZpcmVkKHRoaXMpOworCiAgICAgbV9kYXRhYmFzZSA9IDA7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVk
ZWRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJVcGdyYWRl
TmVlZGVkRXZlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxMjA1NDU4ZTRmNDc5NTlhM2VjODkwNGJhNTYw
NmMyZjEyZDE5YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJVcGdyYWRlTmVlZGVkRXZlbnQuY3BwCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCVXBncmFkZU5lZWRlZEV2ZW50Lmgi
CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKKyNpbmNsdWRlICJJREJBbnkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVm
UHRyPElEQlVwZ3JhZGVOZWVkZWRFdmVudD4gSURCVXBncmFkZU5lZWRlZEV2ZW50OjpjcmVhdGUo
aW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNpb24sIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCVXBncmFkZU5lZWRl
ZEV2ZW50KG9sZFZlcnNpb24sIG5ld1ZlcnNpb24sIGV2ZW50VHlwZSkpOworfQorCitJREJVcGdy
YWRlTmVlZGVkRXZlbnQ6OklEQlVwZ3JhZGVOZWVkZWRFdmVudChpbnQ2NF90IG9sZFZlcnNpb24s
IGludDY0X3QgbmV3VmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCisgICAg
OiBFdmVudChldmVudFR5cGUsIGZhbHNlIC8qY2FuQnViYmxlKi8sIGZhbHNlIC8qY2FuY2VsYWJs
ZSovKQorICAgICwgbV9vbGRWZXJzaW9uKG9sZFZlcnNpb24pCisgICAgLCBtX25ld1ZlcnNpb24o
bmV3VmVyc2lvbikKK3sKK30KKworSURCVXBncmFkZU5lZWRlZEV2ZW50Ojp+SURCVXBncmFkZU5l
ZWRlZEV2ZW50KCkKK3sKK30KKworaW50NjRfdCBJREJVcGdyYWRlTmVlZGVkRXZlbnQ6Om9sZFZl
cnNpb24oKQoreworICAgIHJldHVybiBtX29sZFZlcnNpb247Cit9CisKK2ludDY0X3QgSURCVXBn
cmFkZU5lZWRlZEV2ZW50OjpuZXdWZXJzaW9uKCkKK3sKKyAgICByZXR1cm4gbV9uZXdWZXJzaW9u
OworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIElEQlVwZ3JhZGVOZWVkZWRFdmVudDo6aW50ZXJm
YWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JJ
REJVcGdyYWRlTmVlZGVkRXZlbnQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJVcGdy
YWRlTmVlZGVkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlVw
Z3JhZGVOZWVkZWRFdmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwNjcxZDI0NDhhNzYxMDgxMmZiZjU1MDA5
Yzk2MmFjNGEyMDVlNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJVcGdyYWRlTmVlZGVkRXZlbnQuaApAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBJREJVcGdyYWRlTmVlZGVkRXZlbnRfaAorI2RlZmluZSBJREJVcGdyYWRlTmVl
ZGVkRXZlbnRfaAorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJF
dmVudC5oIgorI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJBbnk7CisKK2NsYXNzIElEQlVw
Z3JhZGVOZWVkZWRFdmVudCA6IHB1YmxpYyBFdmVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8SURCVXBncmFkZU5lZWRlZEV2ZW50PiBjcmVhdGUoaW50NjRfdCBvbGRWZXJzaW9u
ID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNpb24g
PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24sIGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlID0gQXRvbWljU3RyaW5nKCkpOworICAgIHZpcnR1YWwgfklEQlVwZ3JhZGVOZWVk
ZWRFdmVudCgpOworCisgICAgdmlydHVhbCBpbnQ2NF90IG9sZFZlcnNpb24oKTsKKyAgICB2aXJ0
dWFsIGludDY0X3QgbmV3VmVyc2lvbigpOworCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJp
bmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBJREJVcGdyYWRlTmVl
ZGVkRXZlbnQoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNpb24sIGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKKworICAgIGludDY0X3QgbV9vbGRWZXJzaW9uOworICAg
IGludDY0X3QgbV9uZXdWZXJzaW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBJREJVcGdyYWRl
TmVlZGVkRXZlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc3YjAwMGQ0MjJm
YjcyN2Q0MDA4MjM2OThhNDAxMWQyMjFkNTdhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5pZGwKQEAgLTAs
MCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK21vZHVsZSBzdG9yYWdlIHsKKworICAgIGludGVyZmFjZSBbCisg
ICAgICAgIENvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKKyAgICBdIElEQlVwZ3JhZGVOZWVk
ZWRFdmVudCA6IEV2ZW50IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgbG9uZyBvbGRWZXJzaW9uOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQg
bG9uZyBsb25nIG5ld1ZlcnNpb247CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA4YmM4
MGYwZmNkZTliNmNmMTQ0Yjg5NjAzNGVkODFlOTIyZDllNzYzLi4xYmNjOTJkMDQwMGI0YTM1ZTc0
NDEwMGMyNjIwYThiMWVmNTg0MzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC04MTMsOCArODEzLDEw
IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmlkbCcsCiAgICAgICAg
ICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaWRsJywKICAgICAgICAgICAgICdN
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwnLAorICAgICAgICAgICAgJ01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9J
REJVcGdyYWRlTmVlZGVkRXZlbnQuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRk
Yi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4
ZWRkYi9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMv
aW5kZXhlZGRiL1dvcmtlckNvbnRleHRJbmRleGVkRGF0YWJhc2UuaWRsJywKQEAgLTE1MDQsNiAr
MTUwNiw4IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbC5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL2luZGV4
ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRi
L0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVz
L2luZGV4ZWRkYi9JREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgnLAogICAgICAgICAgICAg
J01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwJywKQEAgLTE1MTcsNiArMTUyMSw4IEBA
CiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25DYWxsYmFja3Mu
aCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvci5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFk
ZU5lZWRlZEV2ZW50LmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVXBn
cmFkZU5lZWRlZEV2ZW50LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlZl
cnNpb25DaGFuZ2VFdmVudC5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lE
QlZlcnNpb25DaGFuZ2VFdmVudC5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9J
REJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXgg
YjBlZmJlNzY1MDhjOGViMjU0ZGYyOTYyYmJlODlkYzYyNzE3MTQyZC4uYzU1OWU4NTkyMjZmNzZl
ZGViYjY2NDdmYmQzZjNkMWIzODQ3MmMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0x
MTAsNiArMTEwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHRleHRJbnB1dCkg
XAogICAgIG1hY3JvKHVubG9hZCkgXAogICAgIG1hY3JvKHVwZGF0ZXJlYWR5KSBcCisgICAgbWFj
cm8odXBncmFkZW5lZWRlZCkgXAogICAgIG1hY3JvKHZlcnNpb25jaGFuZ2UpIFwKICAgICBtYWNy
byh3ZWJraXR2aXNpYmlsaXR5Y2hhbmdlKSBcCiAgICAgbWFjcm8od3JpdGUpIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaW4KaW5kZXggOWMwYWM1NTU4YWFhYzE2MDFlOTMwOTE1YjBkN2I0N2E4ZGU2
NjdlMi4uZjFlNmRhNzlkYTkxYWI3ODM2MzM2MzQ4MzhhYjdiNTc1ZTM4MTM4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaW4KQEAgLTM5LDYgKzM5LDcgQEAgU3RvcmFnZUV2ZW50CiBTVkdFdmVu
dHMgaW50ZXJmYWNlTmFtZT1FdmVudCwgY29uZGl0aW9uYWw9U1ZHCiBTVkdab29tRXZlbnQgY29u
ZGl0aW9uYWw9U1ZHCiBTVkdab29tRXZlbnRzIGludGVyZmFjZU5hbWU9U1ZHWm9vbUV2ZW50LCBj
b25kaXRpb25hbD1TVkcKK0lEQlVwZ3JhZGVOZWVkZWRFdmVudCBjb25kaXRpb25hbD1JTkRFWEVE
X0RBVEFCQVNFCiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRB
QkFTRQogVG91Y2hFdmVudCBjb25kaXRpb25hbD1UT1VDSF9FVkVOVFMsIHJ1bnRpbWVDb25kaXRp
b25hbD10b3VjaEVuYWJsZWQKIERldmljZU1vdGlvbkV2ZW50IGNvbmRpdGlvbmFsPURFVklDRV9P
UklFTlRBVElPTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFj
dG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXgg
ZmY2MGFhZDRkYjU5ZjljZmU3Zjk4YTFhZGM5NWY3ZDkxMWMwYWMzMi4uZDEwOGI3YjFhZjU0NGRj
NGE5MjQ5OTQyODU4MTZjY2FiYTAyYTQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXRGYWN0b3J5LmluCkBAIC05LDYgKzksNyBAQCBFdmVudFNvdXJjZQogRmlsZVJlYWRlciBjb25k
aXRpb25hbD1CTE9CCiBGaWxlV3JpdGVyIGNvbmRpdGlvbmFsPUZJTEVfU1lTVEVNCiBJREJEYXRh
YmFzZSBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCitJREJPcGVuREJSZXF1ZXN0IGNvbmRp
dGlvbmFsPUlOREVYRURfREFUQUJBU0UKIElEQlJlcXVlc3QgY29uZGl0aW9uYWw9SU5ERVhFRF9E
QVRBQkFTRQogSURCVHJhbnNhY3Rpb24gY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSURC
VmVyc2lvbkNoYW5nZVJlcXVlc3QgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAK
aW5kZXggYzU4NGIxZTlmZDNlYWZhOWVmZWFjNjFkNDE2NWRmMzZjNDJlZDhhNy4uNjM4OTkwZTQ2
MTgxNWNkZDU0OWNjNmJmOWE2NTQ0YmZkYjFkNmYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC0yMzcsNyArMjM3
LDcgQEAgcHJpdmF0ZToKIHZvaWQgRXhlY3V0YWJsZVdpdGhEYXRhYmFzZTo6c3RhcnQoSURCRmFj
dG9yeUJhY2tlbmRJbnRlcmZhY2UqIGlkYkZhY3RvcnksIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0
eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZU5hbWUpCiB7CiAgICAgUmVmUHRyPE9wZW5EYXRhYmFzZUNhbGxiYWNrPiBjYWxsYmFj
ayA9IE9wZW5EYXRhYmFzZUNhbGxiYWNrOjpjcmVhdGUodGhpcyk7Ci0gICAgaWRiRmFjdG9yeS0+
b3BlbihkYXRhYmFzZU5hbWUsIGNhbGxiYWNrLmdldCgpLCBzZWN1cml0eU9yaWdpbiwgY29udGV4
dCwgU3RyaW5nKCkpOworICAgIGlkYkZhY3RvcnktPm9wZW4oZGF0YWJhc2VOYW1lLCBJREJEYXRh
YmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24sIGNhbGxiYWNrLmdldCgpLCBzZWN1cml0eU9yaWdp
biwgY29udGV4dCwgU3RyaW5nKCkpOwogfQogCiBzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uRm9yRGF0YWJhc2UoSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlKiBpZGJEYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5h
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5j
cHAKaW5kZXggN2RmODRkMmZmYmUwNzk2MTM1NTY1ZmEwMmNmN2U4ZTFhZDgyMDkyYy4uN2EzNDFm
OTAzODcxYTk3NTIyNjRhMmRhMzc5OGRhZGU1ZjJkZTAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcApAQCAtMTI5LDYgKzEyOSwxNiBA
QCB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvbkJsb2NrZWQoKQogICAgIG1fY2FsbGJhY2tzLT5v
bkJsb2NrZWQoKTsKIH0KIAordm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25CbG9ja2VkKGludDY0
X3QgZXhpc3RpbmdWZXJzaW9uKQoreworICAgIG1fY2FsbGJhY2tzLT5vbkJsb2NrZWQoZXhpc3Rp
bmdWZXJzaW9uKTsKK30KKwordm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25VcGdyYWRlTmVlZGVk
KGludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+IHRyYW5zYWN0aW9uLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZT4gZGF0YWJhc2UpCit7CisgICAgbV9jYWxsYmFja3MtPm9uVXBncmFkZU5lZWRlZChvbGRWZXJz
aW9uLCBuZXcgV2ViSURCVHJhbnNhY3Rpb25JbXBsKHRyYW5zYWN0aW9uKSwgbmV3IFdlYklEQkRh
dGFiYXNlSW1wbChkYXRhYmFzZSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKaW5kZXggZGIzMDU2NTUwYjJiMmUxN2UyZTMwZGRl
Zjc5ZTlkZDI5YzI1ZmZiZC4uN2FkNDkxMDI2MTNiOWUwMjhiOWNiMGE4OWEzNTQ0NmE3NTI2NDRl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5o
CkBAIC01Niw2ICs1Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0
aENvbnRpbnVhdGlvbigpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2go
Y29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpJREJLZXk+ID4mIGtleXMsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiA+JiBwcmltYXJ5S2V5cywgY29uc3QgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4mIHZhbHVlcyk7CiAgICAgdmly
dHVhbCB2b2lkIG9uQmxvY2tlZCgpOworICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoaW50NjRf
dCBleGlzdGluZ1ZlcnNpb24pOworICAgIHZpcnR1YWwgdm9pZCBvblVwZ3JhZGVOZWVkZWQoaW50
NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlPik7CiAKIHByaXZhdGU6CiAgICAgSURCQ2FsbGJhY2tzUHJveHkoUGFzc093blB0cjxXZWJJ
REJDYWxsYmFja3M+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAppbmRleCA5MDFiNTVlNTRmMmFhZmUwNGZmZmMyMmNh
OTZiMzUzMThlZjk0Nzg2Li41NmFmZTVmYjVkMmI2MmZhNDQ0OTk1NDQ2OTMwYTAxZDBiYzk3Nzk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tl
bmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VC
YWNrZW5kUHJveHkuY3BwCkBAIC04Nyw2ICs4Nyw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5k
UHJveHk6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rp
CiAKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OnNldFZlcnNpb24oY29uc3QgU3RyaW5n
JiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CisgICAgQVNTRVJUKG1fd2ViSURCRGF0YWJhc2UpOwogICAgIG1fd2ViSURCRGF0YWJh
c2UtPnNldFZlcnNpb24odmVyc2lvbiwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tz
KSwgZWMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJE
YXRhYmFzZUNhbGxiYWNrc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuY3BwCmluZGV4IDgxNmZhZjZjNGRlNzBhZTY5MjY5MzBk
MGRlNTBlMGVlMmQxMTc4NWIuLjE1ZjkyOGYzOWFkMWRhNmYwYmRhYWE5NzZjOGMyMGExYjU3NjQw
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2Fs
bGJhY2tzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFi
YXNlQ2FsbGJhY2tzUHJveHkuY3BwCkBAIC00OCw2ICs0OCwxMSBAQCBJREJEYXRhYmFzZUNhbGxi
YWNrc1Byb3h5Ojp+SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eSgpCiB7CiB9CiAKK3ZvaWQgSURC
RGF0YWJhc2VDYWxsYmFja3NQcm94eTo6b25WZXJzaW9uQ2hhbmdlKGludDY0X3QgY3VycmVudFZl
cnNpb24sIGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikKK3sKKyAgICBtX2NhbGxiYWNrcy0+b25W
ZXJzaW9uQ2hhbmdlKGN1cnJlbnRWZXJzaW9uLCByZXF1ZXN0ZWRWZXJzaW9uKTsKK30KKwogdm9p
ZCBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5n
JiByZXF1ZXN0ZWRWZXJzaW9uKQogewogICAgIG1fY2FsbGJhY2tzLT5vblZlcnNpb25DaGFuZ2Uo
cmVxdWVzdGVkVmVyc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgKaW5kZXggYWZmZGNlNzdkNWQ5NThkYzAwZTBm
NmY4MGFjZmZiODAxMjk1OGIzYi4uNGVlYmYwY2NiODFhZGQwM2RiNTg5YzM5ZDVjYjAzYWVhM2Qw
OWNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VD
YWxsYmFja3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFi
YXNlQ2FsbGJhY2tzUHJveHkuaApAQCAtNDEsNiArNDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eSgpOwogCiAgICAgdmlydHVhbCB2b2lkIG9uVmVy
c2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHJlcXVlc3RlZFZlcnNpb24pOworICAgIHZpcnR1YWwg
dm9pZCBvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBjdXJyZW50VmVyc2lvbiwgaW50NjRfdCByZXF1
ZXN0ZWRWZXJzaW9uKTsKIAogcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5
KFBhc3NPd25QdHI8V2ViSURCRGF0YWJhc2VDYWxsYmFja3M+KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKaW5kZXggZTJj
OWJiOWUyMmMyMGE1N2JjMmQ5OGUyNTViNjhkYjNjNTk5NjAwMS4uMjIxMGRhMTYxNjUxMTc2ZGI1
ZjQ4NDQ5YTdmMjhiNmZjZDkyMmEwYSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKQEAgLTIwMyw3ICsyMDMsNyBAQCB2
b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IHBycENhbGxiYQogfQogCiAKLXZvaWQgSURCRmFjdG9yeUJhY2tlbmRQcm94
eTo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBD
YWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpCit2b2lk
IElEQkZhY3RvcnlCYWNrZW5kUHJveHk6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90
IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpCiB7CiAgICAgUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzKHBycENhbGxiYWNrcyk7CiAgICAgV2ViU2VjdXJpdHlPcmlnaW4gb3Jp
Z2luKHNlY3VyaXR5T3JpZ2luKTsKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIElEQkZhY3RvcnlC
YWNrZW5kUHJveHk6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gcAogICAgICAgICByZXR1cm47CiAKICAgICBXZWJGcmFtZUltcGwqIHdlYkZyYW1lID0g
Z2V0V2ViRnJhbWUoY29udGV4dCk7Ci0gICAgbV93ZWJJREJGYWN0b3J5LT5vcGVuKG5hbWUsIG5l
dyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIG9yaWdpbiwgd2ViRnJhbWUsIGRhdGFE
aXIpOworICAgIG1fd2ViSURCRmFjdG9yeS0+b3BlbihuYW1lLCB2ZXJzaW9uLCBuZXcgV2ViSURC
Q2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBvcmlnaW4sIHdlYkZyYW1lLCBkYXRhRGlyKTsKIH0K
IAogdm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJp
bmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmgKaW5kZXggMjJhNmY1MmE4Njk4
MTZjODA1NjY4ZDY4NGQwYTdiZmZmYzI2YWU2OS4uYzBkZTkxMGE5MmNkZWE5MWEzZDNhMWM1MzBh
MjgwN2M1YWJmYWE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RmFjdG9yeUJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkZhY3RvcnlCYWNrZW5kUHJveHkuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+SURCRmFjdG9yeUJhY2tlbmRQcm94eSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldERh
dGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRy
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7Ci0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3Qg
U3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKKyAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25z
dCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJD
YWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAgICAgdmly
dHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
PiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURp
cik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IDViNWFlZGY3Y2NiMzdlMjQ5YzUzYzFhZjllOGVjOGVk
OWIwZTZlMTIuLjFhMTMyMmFhOTUxZDcyNjBhOTE5OTg0MTgyMmJkZDc2MmQ1MjRkYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3Bw
CkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJJREJDYWxsYmFja3NJ
bXBsOjpXZWJJREJDYWxsYmFja3NJbXBsKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCiAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCisgICAgLCBtX2RpZENyZWF0ZURhdGFi
YXNlUHJveHkoZmFsc2UpCiB7CiB9CiAKQEAgLTcyLDYgKzczLDEwIEBAIHZvaWQgV2ViSURCQ2Fs
bGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYklEQkN1cnNvciogY3Vyc29yKQogCiB2b2lkIFdlYklE
QkNhbGxiYWNrc0ltcGw6Om9uU3VjY2VzcyhXZWJJREJEYXRhYmFzZSogd2ViS2l0SW5zdGFuY2Up
CiB7CisgICAgaWYgKG1fZGlkQ3JlYXRlRGF0YWJhc2VQcm94eSkgeworICAgICAgICBtX2NhbGxi
YWNrcy0+b25TdWNjZXNzKElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGUoYWRvcHRQdHIo
c3RhdGljX2Nhc3Q8V2ViSURCRGF0YWJhc2UqPigwKSkpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKElEQkRhdGFiYXNlQmFja2VuZFByb3h5Ojpj
cmVhdGUoYWRvcHRQdHIod2ViS2l0SW5zdGFuY2UpKSk7CiB9CiAKQEAgLTEwNSw2ICsxMTAsMTcg
QEAgdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvbkJsb2NrZWQoKQogICAgIG1fY2FsbGJhY2tz
LT5vbkJsb2NrZWQoKTsKIH0KIAordm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvbkJsb2NrZWQo
bG9uZyBsb25nIG9sZFZlcnNpb24pCit7CisgICAgbV9jYWxsYmFja3MtPm9uQmxvY2tlZChvbGRW
ZXJzaW9uKTsKK30KKwordm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblVwZ3JhZGVOZWVkZWQo
bG9uZyBsb25nIG9sZFZlcnNpb24sIFdlYklEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgV2Vi
SURCRGF0YWJhc2UqIGRhdGFiYXNlKQoreworICAgIG1fZGlkQ3JlYXRlRGF0YWJhc2VQcm94eSA9
IHRydWU7CisgICAgbV9jYWxsYmFja3MtPm9uVXBncmFkZU5lZWRlZChvbGRWZXJzaW9uLCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKHRyYW5zYWN0aW9uKSksIElE
QkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGUoYWRvcHRQdHIoZGF0YWJhc2UpKSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFj
a3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBs
LmgKaW5kZXggN2IwMjE2MzU5ZDU2ZDgxODY5NWZlOTczYTAxODJhZmI1MTI1MDE2MS4uYjViNTU0
ZTAzMDZjNjJkMzMyNDZhYjBhZGExNTliNTM5NjVkOTg2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaApAQCAtNTEsOSArNTEsMTIgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlJiwgY29uc3QgV2ViSURCS2V5JiwgY29uc3QgV2ViSURCS2V5UGF0aCYpOwogICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCk7CiAgICAgdmlydHVhbCB2
b2lkIG9uQmxvY2tlZCgpOworICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQobG9uZyBsb25nIG9s
ZFZlcnNpb24pOworICAgIHZpcnR1YWwgdm9pZCBvblVwZ3JhZGVOZWVkZWQobG9uZyBsb25nIG9s
ZFZlcnNpb24sIFdlYklEQlRyYW5zYWN0aW9uKiwgV2ViSURCRGF0YWJhc2UqKTsKIAogcHJpdmF0
ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKKyAgICBi
b29sIG1fZGlkQ3JlYXRlRGF0YWJhc2VQcm94eTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbC5jcHAKaW5kZXggZmYwZTg5ODY0YjIxYTY0Njg5YjAzMTI2Y2FhZjNm
ZTU2NTlmYWYzMS4uNjgyOGRmNmZmNjk2YWRlNDdlZjk0ZThiZDQwNzQyZjRhYjYxOWRiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFz
ZUNhbGxiYWNrc0ltcGwuY3BwCkBAIC00NCw2ICs0NCwxMSBAQCBXZWJJREJEYXRhYmFzZUNhbGxi
YWNrc0ltcGw6On5XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKQogewogfQogCit2b2lkIFdl
YklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6b25WZXJzaW9uQ2hhbmdlKGxvbmcgbG9uZyBjdXJy
ZW50VmVyc2lvbiwgbG9uZyBsb25nIHJlcXVlc3RlZFZlcnNpb24pCit7CisgICAgbV9jYWxsYmFj
a3MtPm9uVmVyc2lvbkNoYW5nZShjdXJyZW50VmVyc2lvbiwgcmVxdWVzdGVkVmVyc2lvbik7Cit9
CisKIHZvaWQgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25DaGFuZ2UoY29u
c3QgV2ViU3RyaW5nJiB2ZXJzaW9uKQogewogICAgIG1fY2FsbGJhY2tzLT5vblZlcnNpb25DaGFu
Z2UodmVyc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCmluZGV4IDIxYzNkYzdjNWFjNGFkMGJlYThkZjI5
MTZlYmIzZjg4YzY3ZmYwNWYuLjU3MzQ5MGJmZjMwNDJhNWNkYmY0YTE3NzFmNmE1ZGU0NDcyZTVk
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRh
dGFiYXNlQ2FsbGJhY2tzSW1wbC5oCkBAIC00Myw2ICs0Myw3IEBAIHB1YmxpYzoKICAgICBXZWJJ
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUNh
bGxiYWNrcz4pOwogICAgIHZpcnR1YWwgfldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpOwog
CisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShsb25nIGxvbmcgY3VycmVudFZlcnNp
b24sIGxvbmcgbG9uZyByZXF1ZXN0ZWRWZXJzaW9uKTsKICAgICB2aXJ0dWFsIHZvaWQgb25WZXJz
aW9uQ2hhbmdlKGNvbnN0IFdlYlN0cmluZyYgdmVyc2lvbik7CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHAKaW5kZXggZDE0
YWM3MWUxOGM4NTkzMTUyZWZkZmQ1YzgzOWUwMTcyMGUzZmZkYy4uMjE1OGRhYjk2YjkyMzVmMGI4
OTNmM2U0ZWE2YjU3ZDZkMjM5Y2U1ZSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcApAQCAtNjMsMTcgKzYzLDExIEBAIHZvaWQgV2ViSURC
RmFjdG9yeUltcGw6OmdldERhdGFiYXNlTmFtZXMoV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3Ms
IGNvbnN0IFdlYlNlCiAgICAgbV9pZGJGYWN0b3J5QmFja2VuZC0+Z2V0RGF0YWJhc2VOYW1lcyhJ
REJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLCBvcmlnaW4sIDAs
IGRhdGFEaXIpOwogfQogCi0KLXZvaWQgV2ViSURCRmFjdG9yeUltcGw6Om9wZW4oY29uc3QgV2Vi
U3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJp
dHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpCi17
Ci0gICAgbV9pZGJGYWN0b3J5QmFja2VuZC0+b3BlbihuYW1lLCBJREJDYWxsYmFja3NQcm94eTo6
Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLmdldCgpLCBvcmlnaW4sIDAsIGRhdGFEaXIpOwot
fQotCiB2b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwg
bG9uZyBsb25nIHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJT
ZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURp
cikKIHsKICAgICAvLyBGSVhNRTogUGFzcyB2ZXJzaW9uIGFsb25nIHdoZW4gV2ViQ29yZTo6SURC
RmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UKICAgICAvLyBoYXMgYW4gb3BlbiBtZXRob2QgdGhhdCBh
Y2NlcHRzIGl0LgotICAgIG1faWRiRmFjdG9yeUJhY2tlbmQtPm9wZW4obmFtZSwgSURCQ2FsbGJh
Y2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKS5nZXQoKSwgb3JpZ2luLCAwLCBk
YXRhRGlyKTsKKyAgICBtX2lkYkZhY3RvcnlCYWNrZW5kLT5vcGVuKG5hbWUsIHZlcnNpb24sIElE
QkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSkuZ2V0KCksIG9yaWdp
biwgMCwgZGF0YURpcik7CiB9CiAKIHZvaWQgV2ViSURCRmFjdG9yeUltcGw6OmRlbGV0ZURhdGFi
YXNlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNv
bnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5n
JiBkYXRhRGlyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
RmFjdG9yeUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJ
bXBsLmgKaW5kZXggZmE0MzhkNzY0OGUzNDY0YzVhMWNiZDVjY2Y1N2NmZjBlNTZmMzI4NS4uODMz
ZWViNTkxMjU5Yjg1M2MzMjFmZDExOGYwOTRhNWI4YTdjODg2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oCkBAIC00NSw3ICs0NSw2IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJJREJGYWN0b3J5SW1wbCgpOwogCiAgICAgdmlydHVhbCB2
b2lkIGdldERhdGFiYXNlTmFtZXMoV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlP
cmlnaW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcik7Ci0gICAgdmlydHVh
bCB2b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqLCBjb25z
dCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGly
KTsKICAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGxvbmcgbG9u
ZyB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYsIFdl
YkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlRGF0YWJhc2UoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqLCBjb25z
dCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGly
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9u
Q29ycnVwdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9u
Q29ycnVwdFRlc3QuY3BwCmluZGV4IGQ5ZTNkNjk3YjE5N2M3NDA2ZjYzYmFlYjQ4MzkzMWI0ZWFj
OTUwODUuLjc4N2E5NmJjYzc1YmI3OWU5Nzg0MTE2MGI0YzA4MWYwNTRhYjFmZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVz
dC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBGYWlsaW5nQmFja2luZ1N0b3JlKTsKICAgICB9Ci0gICAgdmlydHVhbCBib29s
IGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
aW50NjRfdCYpCisgICAgdmlydHVhbCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgaW50NjRfdCwgaW50NjRfdCYpCiAgICAgewogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTAyLDcgKzEwMiw4IEBAIFRFU1QoSURCQWJv
cnRUZXN0LCBUaGVUZXN0KQogICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9ICJkYiBuYW1lIjsKICAg
ICBNb2NrSURCQ2FsbGJhY2tzIGNhbGxiYWNrczsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoImh0dHAiLCAibG9jYWxob3N0IiwgODEp
OwotICAgIGZhY3RvcnktPm9wZW4obmFtZSwgJmNhbGxiYWNrcywgb3JpZ2luLCAwIC8qRnJhbWUq
LywgU3RyaW5nKCkgLypwYXRoKi8pOworICAgIGNvbnN0IGludDY0X3Qga1ZlcnNpb24gPSAyOwor
ICAgIGZhY3RvcnktPm9wZW4obmFtZSwga1ZlcnNpb24sICZjYWxsYmFja3MsIG9yaWdpbiwgMCAv
KkZyYW1lKi8sIFN0cmluZygpIC8qcGF0aCovKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKaW5k
ZXggMDg0MDVjZTBhYjU4Yzk2ZmMyOTZjM2YwZjhhMTRmZjY5ZDY1YmExOC4uZDk2ZjdjNmNhMGVh
OTQyYTI1ZDM4MjRiNWUxMmNkNWM0OWU3YzUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKQEAgLTMzLDggKzMzLDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSURCRmFrZUJhY2tpbmdTdG9yZSA6IHB1YmxpYyBJREJC
YWNraW5nU3RvcmUgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVz
KFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzKSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91
bmRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElkKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkgT1ZFUlJJREUgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNv
bnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiBmb3VuZFZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50
VmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgaW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2
NF90JiByb3dJZCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1
cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGludDY0X3Qgcm93SWQsIGNvbnN0IFN0cmluZyYgdmVy
c2lvbikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRl
RGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMDUzOGRjNTlmNTEwZmY5MTBjZDM4ZmVjZmFmOTI2NTY3NzRiZTg3My4uMTdmNDA5
MzI1MDdlMmIzMzVkNmUwNThiMWNmZDA5ZTQwN2IyZGMwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBA
CisyMDEyLTA3LTI2ICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBJbmRleGVkREI6IGltcGxlbWVudCB1cGdyYWRlbmVlZGVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTUwNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2Yg
dGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1
bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9h
Ym9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWFib3J0LWluLWluaXRpYWwtdXBncmFk
ZW5lZWRlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L2ludHZlcnNpb24tYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYW5kLXNldHZlcnNpb24tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9u
LWFuZC1zZXR2ZXJzaW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L2ludHZlcnNpb24tYmxvY2tlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYmxvY2tlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNsb3NlLWJldHdlZW4tZXZlbnRzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9z
ZS1iZXR3ZWVuLWV2ZW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9pbnR2ZXJzaW9uLWNsb3NlLWluLW9uY29tcGxldGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNsb3NlLWluLW9uY29tcGxldGUu
aHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1kZWxl
dGUtaW4tdXBncmFkZW5lZWRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9pbnR2ZXJzaW9uLWRvbnQtZnJlZXplLW9uLXJlZnJlc2guaHRtbDogQWRkZWQuCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0LXBhcmFtZXRlci1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tb21p
dC1wYXJhbWV0ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50
dmVyc2lvbi1vcGVuLXdpdGgtdmVyc2lvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tb3Blbi13aXRoLXZlcnNpb24uaHRtbDogQWRk
ZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24taW5pdGlh
bC12ZXJzaW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvb3Blbi13aXRoLXZlcnNpb24td2l0aC1kZWxldGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvYWJvcnQtaW4taW5pdGlhbC11cGdy
YWRlbmVlZGVkLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoZGVsZXRlU3Vj
Y2Vzcyk6CisgICAgICAgICh1cGdyYWRlTmVlZGVkKToKKyAgICAgICAgKG9uQWJvcnQpOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kb250LWZyZWV6ZS1vbi1yZWZyZXNo
LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoZGVsZXRlU3VjY2Vzcyk6Cisg
ICAgICAgICh1cGdyYWRlTmVlZGVkLnRyYW5zYWN0aW9uLm9uY29tcGxldGUpOgorICAgICAgICAo
dXBncmFkZU5lZWRlZCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLWJsb2NrZWQuanM6IEFkZGVk
LgorICAgICAgICAodGVzdCk6CisgICAgICAgIChkZWxldGVTdWNjZXNzLnJlcXVlc3Qub251cGdy
YWRlbmVlZGVkKToKKyAgICAgICAgKGRlbGV0ZVN1Y2Nlc3MpOgorICAgICAgICAoZmlyc3RTdWNj
ZXNzRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKHZlcnNpb25DaGFuZ2VIYW5kbGVyKToKKyAgICAg
ICAgKGJsb2NrZWRFdmVudEhhbmRsZXIpOgorICAgICAgICAoc2Vjb25kVXBncmFkZU5lZWRlZEV2
ZW50SGFuZGxlcik6CisgICAgICAgIChzZWNvbmRTdWNjZXNzQ2FsbGJhY2spOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1jbG9zZS1iZXR3
ZWVuLWV2ZW50cy5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGRlbGV0ZVN1
Y2Nlc3MpOgorICAgICAgICAodXBncmFkZU5lZWRlZC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlKToK
KyAgICAgICAgKHVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAoY2xvc2VEQik6CisgICAgICAgIChv
cGVuU3VjY2Vzcyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4t
d2l0aC12ZXJzaW9uLWNsb3NlLWluLW9uY29tcGxldGUuanM6IEFkZGVkLgorICAgICAgICAodGVz
dCk6CisgICAgICAgIChkZWxldGVTdWNjZXNzKToKKyAgICAgICAgKHVwZ3JhZGVOZWVkZWQudHJh
bnNhY3Rpb24ub25jb21wbGV0ZSk6CisgICAgICAgICh1cGdyYWRlTmVlZGVkKToKKyAgICAgICAg
KG9wZW5TdWNjZXNzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Bl
bi13aXRoLXZlcnNpb24taW5pdGlhbC12ZXJzaW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3Qp
OgorICAgICAgICAoZGVsZXRlU3VjY2Vzcy5yZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCk6CisgICAg
ICAgIChkZWxldGVTdWNjZXNzKToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24td2l0aC1kZWxldGUu
anM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChpbml0aWFsbHlEZWxldGVkKToK
KyAgICAgICAgKGZpcnN0VXBncmFkZU5lZWRlZCk6CisgICAgICAgIChtaWRSZXF1ZXN0RGVsZXRl
KToKKyAgICAgICAgKG9wZW5TdWNjZXNzLmRiLm9udmVyc2lvbmNoYW5nZSk6CisgICAgICAgIChv
cGVuU3VjY2Vzcyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4t
d2l0aC12ZXJzaW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoZGVsZXRl
U3VjY2Vzcyk6CisgICAgICAgICh1cGdyYWRlTmVlZGVkLnRyYW5zYWN0aW9uLm9uY29tcGxldGUp
OgorICAgICAgICAodXBncmFkZU5lZWRlZCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldHZlcnNpb24tdXBncmFkZW5lZWRl
ZC1pbnRlcnR3aW5lZC5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGRlbGV0
ZVN1Y2Nlc3MpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoaW5TZXRWZXJzaW9u
KToKKyAgICAgICAgKHNldFZlcnNpb25Eb25lKToKKyAgICAgICAgKHNlY29uZE9wZW4pOgorICAg
ICAgICAoZmlyc3RVcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKHRyYW5zYWN0aW9uQ29tcGxldGVk
KToKKyAgICAgICAgKGZpcnN0T3BlbldpdGhWZXJzaW9uKToKKyAgICAgICAgKHNldFZlcnNpb25O
b3RBbGxvd2VkKToKKyAgICAgICAgKGVycm9yV2hlblRyeWluZ0xvd1ZlcnNpb24pOgorICAgICAg
ICAoc2Vjb25kVXBncmFkZU5lZWRlZCk6CisgICAgICAgICh0aGlyZE9wZW5TdWNjZXNzKToKKwog
MjAxMi0wNy0yNiAgTmF5YW4gS3VtYXIgSyAgPG5heWFua2tAbW90b3JvbGEuY29tPgogCiAgICAg
ICAgIFtXZWJHTF0gSW5pdGlhbCBzaXplIG9mIGNhbnZhcyBjYW4gYmUgbGFyZ2VyIHRoYW4gTUFY
X1ZJRVdQT1JUX0RJTVMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4
cGVjdGF0aW9ucwppbmRleCA2NDEzOTA5MDRmNjcyNzg1NmI3ZjBmNmI3OTMxNmIyMjFiYTliMGNj
Li5mZWE1OTkwNjA1OGEwMjNjZjU3MTUyMDU2YmE0NDA0ZTU1OTY0MzFlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTUxNyw2ICs1MTcs
OCBAQCBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmst
c2hhcmVkLXdvcmtlci5odG1sID0gUEFTUwogV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxv
d2VkLmh0bWwgPSBURVhUCiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS9zaGFyZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWJsb2NrZWQuaHRtbCA9
IFRFWFQKIFdPTlRGSVggU0tJUCA6IHN0b3JhZ2UvaW5kZXhlZGRiL2Jhc2ljcy1zaGFyZWQtd29y
a2Vycy5odG1sID0gUEFTUworV09OVEZJWCBTS0lQIDogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVy
c2lvbi1kZWxldGUtaW4tdXBncmFkZW5lZWRlZC5odG1sID0gUEFTUworV09OVEZJWCBTS0lQIDog
c3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1kb250LWZyZWV6ZS1vbi1yZWZyZXNoLmh0bWwg
PSBQQVNTCiAKIC8vIHRlc3Rfc2hlbGwgZG9lcyBub3Qgc3VwcG9ydCBtZXNzYWdlIHBvcnRzCiBC
VUdXSzc0NDU5IFNLSVAgOiBmYXN0L3dvcmtlcnMvdGVybWluYXRpb24td2l0aC1wb3J0LW1lc3Nh
Z2VzLmh0bWwgPSBQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lZTk2ZThkOTcxMWRiMDAwNWEwZmUzMmVjOWE2Y2E2NjI4YmY1
YWYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvYWJv
cnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBA
CitUZXN0IHRoYXQgYW4gYWJvcnQgaW4gdGhlIGluaXRpYWwgdXBncmFkZW5lZWRlZCBzZXRzIHZl
cnNpb24gYmFjayB0byAwCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVk
REIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1veklu
ZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworaW5kZXhl
ZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKK2luZGV4ZWREQi5vcGVuKGRibmFtZSwgMikKKwor
dXBncmFkZU5lZWRlZCgpOgorUEFTUyBkYi52ZXJzaW9uIGlzIDIKK3RyYW5zYWN0aW9uLmFib3J0
KCkKKworb25BYm9ydCgpOgorRkFJTCBldmVudC50YXJnZXQuZGIudmVyc2lvbiBzaG91bGQgYmUg
MC4gV2FzIDIuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lv
bi1hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVu
ZWVkZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlOTZlOGQ5NzExZGIwMDA1YTBmZTMyZWM5
YTZjYTY2MjhiZjVhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9pbnR2ZXJzaW9uLWFib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwyMCBAQAorVGVzdCB0aGF0IGFuIGFib3J0IGluIHRoZSBpbml0aWFs
IHVwZ3JhZGVuZWVkZWQgc2V0cyB2ZXJzaW9uIGJhY2sgdG8gMAorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJ
bmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxm
Lk9JbmRleGVkREI7CisKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVk
REIub3BlbihkYm5hbWUsIDIpCisKK3VwZ3JhZGVOZWVkZWQoKToKK1BBU1MgZGIudmVyc2lvbiBp
cyAyCit0cmFuc2FjdGlvbi5hYm9ydCgpCisKK29uQWJvcnQoKToKK0ZBSUwgZXZlbnQudGFyZ2V0
LmRiLnZlcnNpb24gc2hvdWxkIGJlIDAuIFdhcyAyLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWFib3J0LWluLWlu
aXRpYWwtdXBncmFkZW5lZWRlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyZWQ0MDYyZTU4NmRhZjZkNTA2
OTI3YzBkZDQyMmM2OGQ0MjI2ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWFib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC5o
dG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2Fib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYW5kLXNldHZlcnNpb24tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hbmQtc2V0dmVyc2lvbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjkwMjMzM2RmZjI2MDAxMDFmOWNkYWU0MGQ0MGM0YzQw
ZmZlOGMzYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2ludHZlcnNpb24tYW5kLXNldHZlcnNpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsODkgQEAK
K1Rlc3QgdGhhdCBibGFoIGJsYWguCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitp
bmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxm
Lm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKwor
aW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKK0ZBSUwgU3RyaW5nKHJlcXVlc3QpIHNo
b3VsZCBiZSBbb2JqZWN0IElEQk9wZW5EQlJlcXVlc3RdLiBXYXMgW29iamVjdCBJREJWZXJzaW9u
Q2hhbmdlUmVxdWVzdF0uCisKK0NhbGwgb3BlbiB3aXRoIG5vIHZlcnNpb24gcGFyYW1ldGVyOgor
aW5kZXhlZERCLm9wZW4oZGJuYW1lKQorCitvcGVuU3VjY2VzcygpOgorZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0CitQQVNTIGRiLnZlcnNpb24gaXMgIiIKK3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9u
KCJzb21lIHZlcnNpb24iKQorCitpblNldFZlcnNpb24oKToKK1BBU1MgZGIudmVyc2lvbiBpcyAi
c29tZSB2ZXJzaW9uIgorCitzZXRWZXJzaW9uRG9uZSgpOgorUEFTUyBkYi52ZXJzaW9uIGlzICJz
b21lIHZlcnNpb24iCitkYi5jbG9zZSgpCitpbmRleGVkREIub3BlbihkYm5hbWUpCityZXF1ZXN0
Lm9uc3VjY2VzcyA9IHNlY29uZE9wZW4KKworc2Vjb25kT3BlbigpOgorZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0CitQQVNTIFN0cmluZyhkYikgaXMgIltvYmplY3QgSURCRGF0YWJhc2VdIgorUEFT
UyBkYi52ZXJzaW9uIGlzICJzb21lIHZlcnNpb24iCitkYi5jbG9zZSgpCityZXF1ZXN0ID0gaW5k
ZXhlZERCLm9wZW4oZGJuYW1lLCAyKQorCitmaXJzdFVwZ3JhZGVOZWVkZWQoKToKK2RiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdAorUEFTUyBTdHJpbmcoZGIpIGlzICJbb2JqZWN0IElEQkRhdGFiYXNl
XSIKK1BBU1MgU3RyaW5nKHJlcXVlc3QudHJhbnNhY3Rpb24pIGlzICJbb2JqZWN0IElEQlRyYW5z
YWN0aW9uXSIKK0ZBSUwgZXZlbnQub2xkVmVyc2lvbiBzaG91bGQgYmUgc29tZSB2ZXJzaW9uIChv
ZiB0eXBlIHN0cmluZykuIFdhcyAwIChvZiB0eXBlIG51bWJlcikuCitQQVNTIGV2ZW50Lm5ld1Zl
cnNpb24gaXMgMgorcmVxdWVzdC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdHJhbnNhY3Rpb25D
b21wbGV0ZWQKKwordHJhbnNhY3Rpb25Db21wbGV0ZWQoKToKK2RpZFRyYW5zYWN0aW9uQ29tcGxl
dGUgPSB0cnVlCisKK2ZpcnN0T3BlbldpdGhWZXJzaW9uKCk6CitQQVNTIGRpZFRyYW5zYWN0aW9u
Q29tcGxldGUgaXMgdHJ1ZQorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIFN0cmluZyhk
YikgaXMgIltvYmplY3QgSURCRGF0YWJhc2VdIgorUEFTUyByZXF1ZXN0LnRyYW5zYWN0aW9uIGlz
IG51bGwKK1BBU1MgZGIudmVyc2lvbiBpcyAyCitQQVNTIFN0cmluZyhyZXF1ZXN0KSBpcyAiW29i
amVjdCBJREJPcGVuREJSZXF1ZXN0XSIKK3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCJzdHJpbmcg
dmVyc2lvbiAyIikKK1BBU1MgU3RyaW5nKHJlcXVlc3QpIGlzICJbb2JqZWN0IElEQlZlcnNpb25D
aGFuZ2VSZXF1ZXN0XSIKK3JlcXVlc3Qub25lcnJvciA9IHNldFZlcnNpb25Ob3RBbGxvd2VkCisK
K3NldFZlcnNpb25Ob3RBbGxvd2VkKCk6CitQQVNTIGV2ZW50LnR5cGUgaXMgImVycm9yIgorcmVx
dWVzdC53ZWJraXRFcnJvck1lc3NhZ2UgPSBZb3UgY2FuJ3QgdXNlIHRoZSBzZXRWZXJzaW9uIGZ1
bmN0aW9uIGlmIHlvdSd2ZSBhbHJlYWR5IHNldCB0aGUgdmVyc2lvbiB0aHJvdWdoIGFuIG9wZW4g
Y2FsbC4gIFRoZSBjdXJyZW50IGludGVnZXIgdmVyc2lvbiBpcyAyCitkYi5jbG9zZSgpCityZXF1
ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAxKQorcmVxdWVzdC5vbmVycm9yID0gZXJyb3JX
aGVuVHJ5aW5nTG93VmVyc2lvbgorCitlcnJvcldoZW5UcnlpbmdMb3dWZXJzaW9uKCk6CityZXF1
ZXN0LndlYmtpdEVycm9yTWVzc2FnZSA9IFRoZSByZXF1ZXN0ZWQgdmVyc2lvbiAoMSkgaXMgbGVz
cyB0aGFuIHRoZSBleGlzdGluZyB2ZXJzaW9uICgyKS4KK3JlcXVlc3QgPSBpbmRleGVkREIub3Bl
bihkYm5hbWUsIDQpCityZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHNlY29uZFVwZ3JhZGVOZWVk
ZWQKK3JlcXVlc3Qub25zdWNjZXNzID0gdGhpcmRPcGVuU3VjY2VzcworCitzZWNvbmRVcGdyYWRl
TmVlZGVkKCk6Citnb3RTZWNvbmRVcGdyYWRlTmVlZGVkID0gdHJ1ZQorUEFTUyBldmVudC5vbGRW
ZXJzaW9uIGlzIDIKK1BBU1MgZXZlbnQubmV3VmVyc2lvbiBpcyA0CisKK3RoaXJkT3BlblN1Y2Nl
c3MoKToKK1BBU1MgZ290U2Vjb25kVXBncmFkZU5lZWRlZCBpcyB0cnVlCitkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQKK1BBU1MgZGIudmVyc2lvbiBpcyA0CitkYi5jbG9zZSgpCityZXF1ZXN0ID0g
aW5kZXhlZERCLm9wZW4oZGJuYW1lKQorcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmb3VydGhPcGVuU3Vj
Y2VzcworCitmb3VydGhPcGVuU3VjY2VzcygpOgorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitQ
QVNTIGRiLnZlcnNpb24gaXMgNAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2ludHZlcnNpb24tYW5kLXNldHZlcnNpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2ludHZlcnNpb24tYW5kLXNldHZlcnNpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjA4MmE3
NjQ5YTY1ZjU5MjQ2N2ZiZTZmMTQ0NDQwMGJhNGI3NTI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hbmQtc2V0dmVyc2lvbi5odG1s
CkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NldHZlcnNpb24tdXBncmFkZW5lZWRlZC1pbnRlcnR3aW5lZC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYmxvY2tlZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWJsb2NrZWQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjVmNTBkNTE4NjFmOThkNzhkNGI5NGIzNWQyZjdlODYxZDYxYTZjMzIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9u
LWJsb2NrZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTEgQEAKK1Rlc3QgdGhhdCBibG9ja2Vk
IGV2ZW50cyBnZXQgZGVsaXZlcmVkIHByb3Blcmx5IHdpdGggdGhlIG5ldyBvcGVuIGFwaQorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIg
fHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0lu
ZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShk
Ym5hbWUpCisKK2RlbGV0ZVN1Y2Nlc3MoKToKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5h
bWUsIDIpCisKK3JlcXVlc3Qub251cGdyYWRlbmVlZGVkKCk6Citnb3RGaXJzdFVwZ3JhZGVOZWVk
ZWRFdmVudCA9IHRydWUKK1BBU1MgZXZlbnQub2xkVmVyc2lvbiBpcyAwCitQQVNTIGV2ZW50Lm5l
d1ZlcnNpb24gaXMgMgorUEFTUyBTdHJpbmcoZXZlbnQpIGlzICJbb2JqZWN0IElEQlVwZ3JhZGVO
ZWVkZWRFdmVudF0iCisKK2ZpcnN0U3VjY2Vzc0V2ZW50SGFuZGxlcigpOgorUEFTUyBnb3RGaXJz
dFVwZ3JhZGVOZWVkZWRFdmVudCBpcyB0cnVlCitjb25uZWN0aW9uMSA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQKK2Nvbm5lY3Rpb24xLm9udmVyc2lvbmNoYW5nZSA9IHZlcnNpb25DaGFuZ2VIYW5kbGVy
CitQQVNTIFN0cmluZyhjb25uZWN0aW9uMSkgaXMgIltvYmplY3QgSURCRGF0YWJhc2VdIgorcmVx
dWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgMykKKwordmVyc2lvbkNoYW5nZUhhbmRsZXIo
KToKK3Nhd1ZlcnNpb25DaGFuZ2VFdmVudCA9IHRydWUKK1BBU1MgZXZlbnQudHlwZSBpcyAidmVy
c2lvbmNoYW5nZSIKK0ZBSUwgU3RyaW5nKGV2ZW50KSBzaG91bGQgYmUgW29iamVjdCBJREJWZXJz
aW9uQ2hhbmdlRXZlbnRdLiBXYXMgW29iamVjdCBJREJVcGdyYWRlTmVlZGVkRXZlbnRdLgorUEFT
UyBldmVudC5vbGRWZXJzaW9uIGlzIDIKK1BBU1MgZXZlbnQubmV3VmVyc2lvbiBpcyAzCisKK2Js
b2NrZWRFdmVudEhhbmRsZXIoKToKK1BBU1Mgc2F3VmVyc2lvbkNoYW5nZUV2ZW50IGlzIHRydWUK
K2dvdEJsb2NrZWRFdmVudCA9IHRydWUKK0ZBSUwgU3RyaW5nKGV2ZW50KSBzaG91bGQgYmUgW29i
amVjdCBJREJWZXJzaW9uQ2hhbmdlRXZlbnRdLiBXYXMgW29iamVjdCBJREJVcGdyYWRlTmVlZGVk
RXZlbnRdLgorUEFTUyBldmVudC5vbGRWZXJzaW9uIGlzIDIKK1BBU1MgZXZlbnQubmV3VmVyc2lv
biBpcyAzCitQQVNTIGV2ZW50LnR5cGUgaXMgImJsb2NrZWQiCitjb25uZWN0aW9uMS5jbG9zZSgp
CisKK3NlY29uZFVwZ3JhZGVOZWVkZWRFdmVudEhhbmRsZXIoKToKK1BBU1MgZ290QmxvY2tlZEV2
ZW50IGlzIHRydWUKK2dvdFNlY29uZFVwZ3JhZGVOZWVkZWRFdmVudCA9IHRydWUKKworc2Vjb25k
U3VjY2Vzc0NhbGxiYWNrKCk6CitQQVNTIGdvdFNlY29uZFVwZ3JhZGVOZWVkZWRFdmVudCBpcyB0
cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1ibG9j
a2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWJsb2Nr
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44NjgyNTMzOWFkNjc1ZmJjNWUwNzIzMWVkOTYwNjNjZDhlMzkw
MGM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50
dmVyc2lvbi1ibG9ja2VkLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24tYmxvY2tl
ZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtYmV0d2Vlbi1ldmVu
dHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lv
bi1jbG9zZS1iZXR3ZWVuLWV2ZW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjgwOTFmNWJk
NWQ1MDgxNzY4MjBjZjRjZDkyZDUzODZiYjM1Nzg4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtYmV0d2Vlbi1ldmVudHMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzMgQEAKK1Rlc3QgdGhhdCBzcGVjaWZ5aW5nIGEgdmVy
c2lvbiB3aGVuIG9wZW5pbmcgYSBub24tZXhpc3RlbnQgZGIgY2F1c2VzIGFuIHVwZ3JhZGVuZWVk
ZWQgZXZlbnQgYW5kIHRoYXQgdGhlIHZlcnNpb24gbnVtYmVyIGlzIHNldCBjb3JyZWN0bHkuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWRE
QiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1z
SW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNl
KGRibmFtZSkKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDcpCisKKwordXBncmFk
ZU5lZWRlZCgpOgorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGV2ZW50Lm5ld1ZlcnNp
b24gaXMgNwordHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQudHJhbnNhY3Rpb24KKwordHJhbnNh
Y3Rpb24ub25jb21wbGV0ZToKK3Nhd1RyYW5zYWN0aW9uQ29tcGxldGUgPSB0cnVlCitzZXRUaW1l
b3V0KGNsb3NlREIsIDApCisKK29wZW5TdWNjZXNzKCk6CitQQVNTIGRpZENhbGxDbG9zZURCIGlz
IGZhbHNlCitQQVNTIHNhd1RyYW5zYWN0aW9uQ29tcGxldGUgaXMgdHJ1ZQorZGIgPSBldmVudC50
YXJnZXQucmVzdWx0CitQQVNTIGRiLnZlcnNpb24gaXMgNworCitjbG9zZURCKCk6CitkaWRDYWxs
Q2xvc2VEQiA9IHRydWUKK2RiLmNsb3NlKCkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9pbnR2ZXJzaW9uLWNsb3NlLWJldHdlZW4tZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNsb3NlLWJldHdlZW4tZXZlbnRzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2Q2M2FkOTBmZjdhNTc3MTY1NTQxNjUzMzkyMWEzZDAxZDJjMzM5OQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24t
Y2xvc2UtYmV0d2Vlbi1ldmVudHMuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1j
bG9zZS1iZXR3ZWVuLWV2ZW50cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24t
Y2xvc2UtaW4tb25jb21wbGV0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9pbnR2ZXJzaW9uLWNsb3NlLWluLW9uY29tcGxldGUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjAwMzc3N2JkNDYzZGMyMzE5YTZlMGZjZjQ2NmRiZTNhYjkyOTVhNWMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNsb3Nl
LWluLW9uY29tcGxldGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzIgQEAKK1Rlc3QgdGhhdCBz
cGVjaWZ5aW5nIGEgdmVyc2lvbiB3aGVuIG9wZW5pbmcgYSBub24tZXhpc3RlbnQgZGIgY2F1c2Vz
IGFuIHVwZ3JhZGVuZWVkZWQgZXZlbnQgYW5kIHRoYXQgdGhlIHZlcnNpb24gbnVtYmVyIGlzIHNl
dCBjb3JyZWN0bHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIg
PSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4
ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworaW5kZXhlZERC
LmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUs
IDcpCisKK3VwZ3JhZGVOZWVkZWQoKToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBl
dmVudC5uZXdWZXJzaW9uIGlzIDcKK2RiLmNyZWF0ZU9iamVjdFN0b3JlKCJvcyIpCit0cmFuc2Fj
dGlvbiA9IGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbgorCit0cmFuc2FjdGlvbi5vbmNvbXBsZXRl
Ogorc2F3VHJhbnNhY3Rpb25Db21wbGV0ZSA9IHRydWUKK2RiLmNsb3NlKCkKKworb3BlblN1Y2Nl
c3MoKToKK1BBU1Mgc2F3VHJhbnNhY3Rpb25Db21wbGV0ZSBpcyB0cnVlCitkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQKK1BBU1MgZGIudmVyc2lvbiBpcyA3CitFeHBlY3RpbmcgZXhjZXB0aW9uIGZy
b20gdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignb3MnLCAncmVhZHdyaXRlJykKK1BBU1Mg
RXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLklOVkFMSURf
U1RBVEVfRVJSCitQQVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVFcnJvcicKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNsb3NlLWluLW9uY29tcGxldGUu
aHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtaW4t
b25jb21wbGV0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyNTM3ZDlkMzUwM2U0Zjk0MTAxZmEyMmViZTJj
YzA0YjU0NDY5YTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9pbnR2ZXJzaW9uLWNsb3NlLWluLW9uY29tcGxldGUuaHRtbApAQCAtMCwwICsxLDEwIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcGVu
LXdpdGgtdmVyc2lvbi1jbG9zZS1pbi1vbmNvbXBsZXRlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvaW50dmVyc2lvbi1kZWxldGUtaW4tdXBncmFkZW5lZWRlZC5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1kZWxldGUtaW4tdXBncmFkZW5lZWRlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmMyNTI2MDRkOWMwMjViNjYwYjhhMGI2MzZjNjgzZDBkMDEzZGU2YTAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9u
LWRlbGV0ZS1pbi11cGdyYWRlbmVlZGVkLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNp
b24td2l0aC1kZWxldGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWRvbnQt
ZnJlZXplLW9uLXJlZnJlc2guaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2lu
dHZlcnNpb24tZG9udC1mcmVlemUtb24tcmVmcmVzaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5OTg5MTBm
YmE5YWQ1MWM4OGJmZTQwNDE0YmVkNDU5ZGZmMGY3ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWRvbnQtZnJlZXplLW9uLXJlZnJl
c2guaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9kb250LWZyZWV6ZS1vbi1yZWZyZXNoLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0LXBhcmFtZXRlci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9taXQtcGFyYW1ldGVyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kMTgwMDUxMTAxZTI1OTY3OGI3OTY0YTA0YjQxZTUzODQ4MTZh
ODU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50
dmVyc2lvbi1vbWl0LXBhcmFtZXRlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGVz
dCB0aGF0IGluaXRpYWwgdmVyc2lvbiBhZnRlciBhIHN1Y2Nlc3NmdWwgb3BlbiBvZiBhIG5vbi1l
eGlzdGVudCBkYiBpcyAxCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVk
REIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1veklu
ZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworaW5kZXhl
ZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKK2luZGV4ZWREQi5vcGVuKGRibmFtZSkKKworb3Bl
blN1Y2Nlc3MoKToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorVGVzdCBsaW5lIGZyb20gSURC
RmFjdG9yeS5vcGVuOiBJZiBubyB2ZXJzaW9uIGlzIHNwZWNpZmllZCBhbmQgbm8gZGF0YWJhc2Ug
ZXhpc3RzLCBzZXQgZGF0YWJhc2UgdmVyc2lvbiB0byAxLgorRkFJTCBkYi52ZXJzaW9uIHNob3Vs
ZCBiZSAxIChvZiB0eXBlIG51bWJlcikuIFdhcyAgKG9mIHR5cGUgc3RyaW5nKS4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9taXQtcGFyYW1ldGVyLmh0
bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9taXQtcGFyYW1l
dGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTViZGU4MzZiYjliOTcxNDFmNjdiYWJiMDRjNjI1YjNlNTNj
OWU1YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2lu
dHZlcnNpb24tb21pdC1wYXJhbWV0ZXIuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lv
bi1pbml0aWFsLXZlcnNpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9w
ZW4td2l0aC12ZXJzaW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2ludHZlcnNpb24tb3Blbi13aXRoLXZlcnNpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM5NmRiOTc1YWNjYmE4ZjQ4MWM3ZTcxMWQ3YTkzYTY3NjM0NjU3N2QKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9wZW4td2l0aC12
ZXJzaW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQ1IEBACitUZXN0IHRoYXQgc3BlY2lmeWlu
ZyBhIHZlcnNpb24gd2hlbiBvcGVuaW5nIGEgbm9uLWV4aXN0ZW50IGRiIGNhdXNlcyBhbiB1cGdy
YWRlbmVlZGVkIGV2ZW50IGFuZCB0aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBpcyBzZXQgY29ycmVj
dGx5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5p
bmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwg
c2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWREQi5kZWxldGVE
YXRhYmFzZShkYm5hbWUpCitTaG91bGQgdHJpZ2dlcjoKKzQuMS40OiBJZiBubyBkYXRhYmFzZSB3
aXRoIHRoZSBnaXZlbiBuYW1lIGZyb20gdGhlIG9yaWdpbiBvcmlnaW4gd2FzIGZvdW5kLCBvciBp
ZiBpdCB3YXMgZGVsZXRlZCBkdXJpbmcgdGhlIHByZXZpb3VzIHN0ZXAsIHRoZW4gY3JlYXRlIGEg
ZGF0YWJhc2Ugd2l0aCBuYW1lIG5hbWUsIHdpdGggMCBhcyB2ZXJzaW9uLCBhbmQgd2l0aCBubyBv
YmplY3Qgc3RvcmVzLiBMZXQgZGIgYmUgdGhlIG5ldyBkYXRhYmFzZS4KKzQuMS42OiBDcmVhdGUg
YSBuZXcgY29ubmVjdGlvbiB0byBkYiBhbmQgbGV0IGNvbm5lY3Rpb24gcmVwcmVzZW50IGl0Lgor
NC4xLjc6IElmIHRoZSB2ZXJzaW9uIG9mIGRiIGlzIGxvd2VyIHRoYW4gdmVyc2lvbiwgdGhlbiBy
dW4gdGhlIHN0ZXBzIGZvciBydW5uaW5nIGEgInZlcnNpb25jaGFuZ2UiIHRyYW5zYWN0aW9uIHVz
aW5nIGNvbm5lY3Rpb24sIHZlcnNpb24sIHJlcXVlc3QgYW5kIHVwZ3JhZGUgY2FsbGJhY2suCis0
LjEuOTogUmV0dXJuIGNvbm5lY3Rpb24uCityZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1l
LCA3KQorUEFTUyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KHJlcXVlc3QpIGlzICJb
b2JqZWN0IElEQk9wZW5EQlJlcXVlc3RdIgorCitQQVNTIEluIHRoZSB1cGdyYWRlbmVlZGVkIGV2
ZW50IGhhbmRlcjoKK1Rlc3QgNC44LjkuMToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFT
UyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KGRiKSBpcyAiW29iamVjdCBJREJEYXRh
YmFzZV0iCitUZXN0IDQuOC45LjM6CitQQVNTIGV2ZW50Lm9sZFZlcnNpb24gaXMgMAorUEFTUyBl
dmVudC5uZXdWZXJzaW9uIGlzIDcKK1BBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgImRv
bmUiCitUZXN0IDQuMS40OgorUEFTUyBkYi5uYW1lIGlzIGRibmFtZQorUEFTUyBkYi52ZXJzaW9u
IGlzIDcKK1BBU1MgZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMAordHJhbnNhY3Rpb24g
PSBldmVudC50YXJnZXQudHJhbnNhY3Rpb24KK1BBU1MgT2JqZWN0LnByb3RvdHlwZS50b1N0cmlu
Zy5hcHBseSh0cmFuc2FjdGlvbikgaXMgIltvYmplY3QgSURCVHJhbnNhY3Rpb25dIgorb3MgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgic29tZU9TIikKK3Nhd1RyYW5zYWN0aW9uQ29tcGxldGUgPSB0
cnVlCisKK29wZW5TdWNjZXNzKCk6CitUZXN0IDQuMS43LCB0aGF0IGEgdmVyc2lvbmNoYW5nZSB0
cmFuc2FjdGlvbiB3YXMgcnVuLgorUEFTUyBzYXdVcGdyYWRlTmVlZGVkIGlzIHRydWUKK1BBU1Mg
c2F3VHJhbnNhY3Rpb25Db21wbGV0ZSBpcyB0cnVlCitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQK
K0tpbmQgb2YgdGVzdCA0LjEuOToKK1BBU1MgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBs
eShkYikgaXMgIltvYmplY3QgSURCRGF0YWJhc2VdIgorUEFTUyBkYi52ZXJzaW9uIGlzIDcKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9wZW4td2l0aC12
ZXJzaW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9w
ZW4td2l0aC12ZXJzaW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2JhNmYwYjcyYmZiNjU2ZjQwMThlOTU4
OGM0Mjc5NGExYTBkNGFjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2ludHZlcnNpb24tb3Blbi13aXRoLXZlcnNpb24uaHRtbApAQCAtMCwwICsxLDEw
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9v
cGVuLXdpdGgtdmVyc2lvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4td2l0aC12ZXJz
aW9uLWluaXRpYWwtdmVyc2lvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi1pbml0aWFsLXZlcnNpb24tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQxODAwNTExMDFlMjU5Njc4Yjc5NjRhMDRiNDFlNTM4NDgxNmE4NTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVy
c2lvbi1pbml0aWFsLXZlcnNpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1Rlc3Qg
dGhhdCBpbml0aWFsIHZlcnNpb24gYWZ0ZXIgYSBzdWNjZXNzZnVsIG9wZW4gb2YgYSBub24tZXhp
c3RlbnQgZGIgaXMgMQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERC
ID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRl
eGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWRE
Qi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3BlbihkYm5hbWUpCisKK29wZW5T
dWNjZXNzKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1Rlc3QgbGluZSBmcm9tIElEQkZh
Y3Rvcnkub3BlbjogSWYgbm8gdmVyc2lvbiBpcyBzcGVjaWZpZWQgYW5kIG5vIGRhdGFiYXNlIGV4
aXN0cywgc2V0IGRhdGFiYXNlIHZlcnNpb24gdG8gMS4KK0ZBSUwgZGIudmVyc2lvbiBzaG91bGQg
YmUgMSAob2YgdHlwZSBudW1iZXIpLiBXYXMgIChvZiB0eXBlIHN0cmluZykuCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24td2l0aC1kZWxldGUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZl
cnNpb24td2l0aC1kZWxldGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3OGYzYWFhYTM2OGNi
MjZlMDY1MTRhYjk3M2UzN2U3MTc1NjdjOWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLXdpdGgtdmVyc2lvbi13aXRoLWRlbGV0ZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzNSBAQAorVGVzdCB0aGF0IGEgZGVsZXRlRGF0YWJhc2UgY2FsbGVk
IHdoaWxlIGhhbmRsaW5nIGFuIHVwZ3JhZGVuZWVkZWQgZXZlbnQgaXMgcXVldWVkIGFuZCBmaXJl
cyBpdHMgZXZlbnRzIGF0IHRoZSByaWdodCB0aW1lCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWRE
QiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4
ZWREQjsKKworaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKKworaW5pdGlhbGx5RGVs
ZXRlZCgpOgorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgMSkKKworZmlyc3RVcGdy
YWRlTmVlZGVkKCk6CitQQVNTIHNhd0ZpcnN0VXBncmFkZU5lZWRlZCBpcyBmYWxzZQorc2F3Rmly
c3RVcGdyYWRlTmVlZGVkID0gdHJ1ZQorUEFTUyBldmVudC5vbGRWZXJzaW9uIGlzIDAKK1BBU1Mg
ZXZlbnQubmV3VmVyc2lvbiBpcyAxCitkZWxldGVSZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURh
dGFiYXNlKGRibmFtZSkKKworbWlkUmVxdWVzdERlbGV0ZSgpOgorCitmaXJzdFVwZ3JhZGVOZWVk
ZWQoKToKK0ZBSUwgc2F3Rmlyc3RVcGdyYWRlTmVlZGVkIHNob3VsZCBiZSBmYWxzZS4gV2FzIHRy
dWUuCitzYXdGaXJzdFVwZ3JhZGVOZWVkZWQgPSB0cnVlCitQQVNTIGV2ZW50Lm9sZFZlcnNpb24g
aXMgMAorUEFTUyBldmVudC5uZXdWZXJzaW9uIGlzIDEKKworcmVxdWVzdC5vbnN1Y2Nlc3MoKToK
K1BBU1Mgc2F3Rmlyc3RVcGdyYWRlTmVlZGVkIGlzIHRydWUKK2RiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdAorUEFTUyBkYi52ZXJzaW9uIGlzIDEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2Fib3J0LWluLWluaXRpYWwtdXBn
cmFkZW5lZWRlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNWUxYWU2ZjM3NjVmMjQ0ODNmNGRiNGI1YzM3Yzkx
MDMzNWM4NDlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2Fib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC5qcwpAQCAtMCwwICsx
LDQ2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3Jp
cHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBhbiBhYm9ydCBp
biB0aGUgaW5pdGlhbCB1cGdyYWRlbmVlZGVkIHNldHMgdmVyc2lvbiBiYWNrIHRvIDAiKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5h
bWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lLnN1YnN0cmluZygxICsgc2VsZi5sb2NhdGlvbi5w
YXRobmFtZS5sYXN0SW5kZXhPZigiLyIpKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZGVsZXRlU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlU3VjY2VzcyhldnQpIHsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAyKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9udXBn
cmFkZW5lZWRlZCA9IHVwZ3JhZGVOZWVkZWQ7Cit9CisKK2Z1bmN0aW9uIHVwZ3JhZGVOZWVkZWQo
ZXZ0KQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidXBncmFkZU5lZWRlZCgpOiIpOwor
ICAgIGV2ZW50ID0gZXZ0OworICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICBzaG91
bGRCZSgiZGIudmVyc2lvbiIsICIyIik7CisgICAgdHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQu
dHJhbnNhY3Rpb247CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21w
bGV0ZUNhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBvbkFib3J0OworICAgIGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uLmFib3J0KCkiKTsKK30KKworZnVuY3Rpb24gb25BYm9ydChl
dnQpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJvbkFib3J0KCk6Iik7CisgICAgZXZl
bnQgPSBldnQ7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5kYi52ZXJzaW9uIiwgIjAiKTsK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RvbnQtZnJlZXplLW9uLXJlZnJlc2guanMg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZG9udC1mcmVlemUtb24t
cmVmcmVzaC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YWUzMjVkMWIxNWU0MWIxYTY4ZTExNjBlMDllNzcxODQ4
NjU5YTRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2RvbnQtZnJlZXplLW9uLXJlZnJlc2guanMKQEAgLTAsMCArMSw1NyBAQAoraWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVk
LmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgc3BlY2lmeWluZyBhIHZlcnNpb24g
d2hlbiBvcGVuaW5nIGEgbm9uLWV4aXN0ZW50IGRiIGNhdXNlcyBhbiB1cGdyYWRlbmVlZGVkIGV2
ZW50IGFuZCB0aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBpcyBzZXQgY29ycmVjdGx5LiIpOworCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIGRibmFt
ZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKDEgKyBzZWxmLmxvY2F0aW9uLnBh
dGhuYW1lLmxhc3RJbmRleE9mKCIvIikpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBkZWxldGVTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVTdWNjZXNzKGV2dCkgeworICAgIGV2YWxBbmRM
b2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDcpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHVw
Z3JhZGVOZWVkZWQ7CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENh
bGxiYWNrOworICAgIGRlYnVnKCIiKTsKK30KKwordmFyIHNhd1RyYW5zYWN0aW9uQ29tcGxldGUg
PSBmYWxzZTsKK2Z1bmN0aW9uIHVwZ3JhZGVOZWVkZWQoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0
OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidXBncmFkZU5lZWRlZCgpOiIpOworICAgIGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlKCJldmVu
dC5uZXdWZXJzaW9uIiwgIjciKTsKKworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZXZl
bnQudGFyZ2V0LnRyYW5zYWN0aW9uIik7CisgICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOwor
ICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0
cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZSkKKyAgICB7CisgICAgICAgIGRlYnVn
KCIiKTsKKyAgICAgICAgZGVidWcoInRyYW5zYWN0aW9uLm9uY29tcGxldGU6Iik7CisgICAgICAg
IGV2YWxBbmRMb2coInNhd1RyYW5zYWN0aW9uQ29tcGxldGUgPSB0cnVlIik7CisgICAgfQorfQor
CitmdW5jdGlvbiBvcGVuU3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlVHJ1ZSgi
c2F3VHJhbnNhY3Rpb25Db21wbGV0ZSIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmUoJ2RiLnZlcnNpb24nLCAiNyIpOworICAg
IGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24tYmxvY2tlZC5qcyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lv
bi1ibG9ja2VkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhNDk0NWFkZjEzMjQyNDgzM2VlNzU0NTNlYzdiMTEw
M2QxMTM0OGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24tYmxvY2tlZC5qcwpAQCAtMCwwICsxLDk2IEBA
CitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdz
aGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBibG9ja2VkIGV2ZW50cyBn
ZXQgZGVsaXZlcmVkIHByb3Blcmx5IHdpdGggdGhlIG5ldyBvcGVuIGFwaSIpOworCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIGRibmFtZSA9IHNl
bGYubG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKDEgKyBzZWxmLmxvY2F0aW9uLnBhdGhuYW1l
Lmxhc3RJbmRleE9mKCIvIikpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
ZGVsZXRlRGF0YWJhc2UoZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRl
U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gZGVsZXRlU3VjY2VzcyhldnQpIHsKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoImRlbGV0ZVN1Y2Nlc3MoKToiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5k
ZXhlZERCLm9wZW4oZGJuYW1lLCAyKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZmlyc3RT
dWNjZXNzRXZlbnRIYW5kbGVyOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIGdvdEZpcnN0VXBncmFkZU5lZWRlZEV2ZW50ID0gZmFsc2U7CisgICAg
cmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldnQpIHsKKyAgICAgIGV2ZW50ID0g
ZXZ0OworICAgICAgZGVidWcoIiIpOworICAgICAgZGVidWcoInJlcXVlc3Qub251cGdyYWRlbmVl
ZGVkKCk6Iik7CisgICAgICBldmFsQW5kTG9nKCJnb3RGaXJzdFVwZ3JhZGVOZWVkZWRFdmVudCA9
IHRydWUiKTsKKyAgICAgIHNob3VsZEJlKCJldmVudC5vbGRWZXJzaW9uIiwgIjAiKTsKKyAgICAg
IHNob3VsZEJlKCJldmVudC5uZXdWZXJzaW9uIiwgIjIiKTsKKyAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiU3RyaW5nKGV2ZW50KSIsICJbb2JqZWN0IElEQlVwZ3JhZGVOZWVkZWRFdmVudF0i
KTsKKyAgICB9Cit9CisKK2dvdEJsb2NrZWRFdmVudCA9IGZhbHNlOworZnVuY3Rpb24gZmlyc3RT
dWNjZXNzRXZlbnRIYW5kbGVyKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1Zygi
Iik7CisgICAgZGVidWcoImZpcnN0U3VjY2Vzc0V2ZW50SGFuZGxlcigpOiIpCisgICAgc2hvdWxk
QmVUcnVlKCJnb3RGaXJzdFVwZ3JhZGVOZWVkZWRFdmVudCIpOworICAgIGV2YWxBbmRMb2coImNv
bm5lY3Rpb24xID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGV2YWxBbmRMb2coImNvbm5l
Y3Rpb24xLm9udmVyc2lvbmNoYW5nZSA9IHZlcnNpb25DaGFuZ2VIYW5kbGVyIik7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJTdHJpbmcoY29ubmVjdGlvbjEpIiwgIltvYmplY3QgSURCRGF0
YWJhc2VdIik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFt
ZSwgMykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNlY29uZFN1Y2Nlc3NDYWxsYmFjazsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1
ZXN0Lm9uYmxvY2tlZCA9IGJsb2NrZWRFdmVudEhhbmRsZXI7CisgICAgcmVxdWVzdC5vbnVwZ3Jh
ZGVuZWVkZWQgPSBzZWNvbmRVcGdyYWRlTmVlZGVkRXZlbnRIYW5kbGVyOworfQorCit2YXIgc2F3
VmVyc2lvbkNoYW5nZUV2ZW50ID0gZmFsc2U7CitmdW5jdGlvbiB2ZXJzaW9uQ2hhbmdlSGFuZGxl
cihldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2
ZXJzaW9uQ2hhbmdlSGFuZGxlcigpOiIpOworICAgIGV2YWxBbmRMb2coInNhd1ZlcnNpb25DaGFu
Z2VFdmVudCA9IHRydWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnR5cGUi
LCAidmVyc2lvbmNoYW5nZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiU3RyaW5nKGV2
ZW50KSIsICJbb2JqZWN0IElEQlZlcnNpb25DaGFuZ2VFdmVudF0iKTsKKyAgICBzaG91bGRCZSgi
ZXZlbnQub2xkVmVyc2lvbiIsICIyIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNpb24i
LCAiMyIpOworfQorCitmdW5jdGlvbiBibG9ja2VkRXZlbnRIYW5kbGVyKGV2dCkKK3sKKyAgICBl
dmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImJsb2NrZWRFdmVudEhhbmRs
ZXIoKToiKTsKKyAgICBzaG91bGRCZVRydWUoInNhd1ZlcnNpb25DaGFuZ2VFdmVudCIpOworICAg
IGV2YWxBbmRMb2coImdvdEJsb2NrZWRFdmVudCA9IHRydWUiKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoIlN0cmluZyhldmVudCkiLCAiW29iamVjdCBJREJWZXJzaW9uQ2hhbmdlRXZlbnRd
Iik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm9sZFZlcnNpb24iLCAiMiIpOworICAgIHNob3VsZEJl
KCJldmVudC5uZXdWZXJzaW9uIiwgIjMiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2
ZW50LnR5cGUiLCAiYmxvY2tlZCIpOworICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24xLmNsb3Nl
KCkiKTsKK30KKworZ290U2Vjb25kVXBncmFkZU5lZWRlZEV2ZW50ID0gZmFsc2U7CitmdW5jdGlv
biBzZWNvbmRVcGdyYWRlTmVlZGVkRXZlbnRIYW5kbGVyKGV2dCkKK3sKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoInNlY29uZFVwZ3JhZGVOZWVkZWRFdmVudEhhbmRsZXIoKToiKTsKKyAgICBz
aG91bGRCZVRydWUoImdvdEJsb2NrZWRFdmVudCIpOworICAgIGV2YWxBbmRMb2coImdvdFNlY29u
ZFVwZ3JhZGVOZWVkZWRFdmVudCA9IHRydWUiKTsKK30KKworZnVuY3Rpb24gc2Vjb25kU3VjY2Vz
c0NhbGxiYWNrKGV2dCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInNlY29uZFN1Y2Nl
c3NDYWxsYmFjaygpOiIpOworICAgIHNob3VsZEJlVHJ1ZSgiZ290U2Vjb25kVXBncmFkZU5lZWRl
ZEV2ZW50Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lv
bi1jbG9zZS1iZXR3ZWVuLWV2ZW50cy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1jbG9zZS1iZXR3ZWVuLWV2ZW50cy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ZTQ5NzI5M2IxOTU4MWExZWY5OWNlMmZiZjU0MjM2MzhlYjY1MWQyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4t
d2l0aC12ZXJzaW9uLWNsb3NlLWJldHdlZW4tZXZlbnRzLmpzCkBAIC0wLDAgKzEsNjcgQEAKK2lm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IHNwZWNpZnlpbmcgYSB2ZXJzaW9u
IHdoZW4gb3BlbmluZyBhIG5vbi1leGlzdGVudCBkYiBjYXVzZXMgYW4gdXBncmFkZW5lZWRlZCBl
dmVudCBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaXMgc2V0IGNvcnJlY3RseS4iKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5h
bWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lLnN1YnN0cmluZygxICsgc2VsZi5sb2NhdGlvbi5w
YXRobmFtZS5sYXN0SW5kZXhPZigiLyIpKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZGVsZXRlU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlU3VjY2VzcyhldnQpIHsKKyAgICBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCA3KSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSB1
cGdyYWRlTmVlZGVkOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRD
YWxsYmFjazsKKyAgICBkZWJ1ZygiIik7Cit9CisKK3ZhciBzYXdUcmFuc2FjdGlvbkNvbXBsZXRl
ID0gZmFsc2U7CitmdW5jdGlvbiB1cGdyYWRlTmVlZGVkKGV2dCkKK3sKKyAgICBldmVudCA9IGV2
dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInVwZ3JhZGVOZWVkZWQoKToiKTsKKyAgICBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZSgiZXZl
bnQubmV3VmVyc2lvbiIsICI3Iik7CisKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2
ZW50LnRhcmdldC50cmFuc2FjdGlvbiIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rp
b24oZSkKKyAgICB7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWcoInRyYW5zYWN0
aW9uLm9uY29tcGxldGU6Iik7CisgICAgICAgIGV2YWxBbmRMb2coInNhd1RyYW5zYWN0aW9uQ29t
cGxldGUgPSB0cnVlIik7CisgICAgICAgIGV2YWxBbmRMb2coInNldFRpbWVvdXQoY2xvc2VEQiwg
MCkiKTsKKyAgICB9Cit9CisKK3ZhciBkaWRDYWxsQ2xvc2VEQiA9IGZhbHNlOworZnVuY3Rpb24g
Y2xvc2VEQigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJjbG9zZURCKCk6Iik7Cisg
ICAgZXZhbEFuZExvZygiZGlkQ2FsbENsb3NlREIgPSB0cnVlIik7CisgICAgZXZhbEFuZExvZygi
ZGIuY2xvc2UoKSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBvcGVuU3Vj
Y2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJvcGVuU3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlRmFsc2UoImRpZENhbGxDbG9zZURCIik7
CisgICAgc2hvdWxkQmVUcnVlKCJzYXdUcmFuc2FjdGlvbkNvbXBsZXRlIik7CisgICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZSgnZGIu
dmVyc2lvbicsICI3Iik7Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1jbG9zZS1pbi1vbmNv
bXBsZXRlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4t
d2l0aC12ZXJzaW9uLWNsb3NlLWluLW9uY29tcGxldGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJkOTU4YWEw
ZTYwZGQ0OTU1Yzg2OTYzNTkxYjQ5OTdmMjVhZmI5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1jbG9z
ZS1pbi1vbmNvbXBsZXRlLmpzCkBAIC0wLDAgKzEsNTggQEAKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNj
cmlwdGlvbigiVGVzdCB0aGF0IHNwZWNpZnlpbmcgYSB2ZXJzaW9uIHdoZW4gb3BlbmluZyBhIG5v
bi1leGlzdGVudCBkYiBjYXVzZXMgYW4gdXBncmFkZW5lZWRlZCBldmVudCBhbmQgdGhhdCB0aGUg
dmVyc2lvbiBudW1iZXIgaXMgc2V0IGNvcnJlY3RseS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5hbWUgPSBzZWxmLmxvY2F0aW9u
LnBhdGhuYW1lLnN1YnN0cmluZygxICsgc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5sYXN0SW5kZXhP
ZigiLyIpKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0
YWJhc2UoZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gZGVsZXRlU3VjY2VzcyhldnQpIHsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5k
ZXhlZERCLm9wZW4oZGJuYW1lLCA3KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSB1cGdyYWRlTmVlZGVkOworICAg
IHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKK30KKwordmFy
IHNhd1RyYW5zYWN0aW9uQ29tcGxldGUgPSBmYWxzZTsKK2Z1bmN0aW9uIHVwZ3JhZGVOZWVkZWQo
ZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidXBn
cmFkZU5lZWRlZCgpOiIpOworICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOworICAgIHNob3VsZEJlKCJldmVudC5uZXdWZXJzaW9uIiwgIjciKTsKKyAgICBldmFsQW5k
TG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZShcIm9zXCIpIik7CisKKyAgICBldmFsQW5kTG9nKCJ0
cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbiIpOworICAgIHRyYW5zYWN0aW9u
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNv
bXBsZXRlID0gZnVuY3Rpb24oZSkKKyAgICB7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAg
ZGVidWcoInRyYW5zYWN0aW9uLm9uY29tcGxldGU6Iik7CisgICAgICAgIGV2YWxBbmRMb2coInNh
d1RyYW5zYWN0aW9uQ29tcGxldGUgPSB0cnVlIik7CisgICAgICAgIGV2YWxBbmRMb2coImRiLmNs
b3NlKCkiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBl
dmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7
CisgICAgc2hvdWxkQmVUcnVlKCJzYXdUcmFuc2FjdGlvbkNvbXBsZXRlIik7CisgICAgZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmUoJ2RiLnZlcnNp
b24nLCAiNyIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zYWN0aW9uID0gZGIu
dHJhbnNhY3Rpb24oJ29zJywgJ3JlYWR3cml0ZScpIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NU
QVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9
CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1pbml0aWFsLXZlcnNpb24uanMgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24taW5pdGlhbC12
ZXJzaW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlN2QwZjNlODNlYTEzMTU3NDYwYWEwMTkzODI0NDU2M2Y3
ZTk1OGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24taW5pdGlhbC12ZXJzaW9uLmpzCkBAIC0wLDAgKzEs
MzggQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGluaXRpYWwgdmVy
c2lvbiBhZnRlciBhIHN1Y2Nlc3NmdWwgb3BlbiBvZiBhIG5vbi1leGlzdGVudCBkYiBpcyAxIik7
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAg
ZGJuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMSArIHNlbGYubG9jYXRp
b24ucGF0aG5hbWUubGFzdEluZGV4T2YoIi8iKSk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoZXZ0KSB7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24o
KSB7CisgICAgICB0ZXN0UGFzc2VkKCJHb3QgdXBncmFkZW5lZWRlZCBldmVudCIpOworICAgIH0K
K30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAg
IGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGRlYnVnKCJUZXN0IGxpbmUg
ZnJvbSBJREJGYWN0b3J5Lm9wZW46IElmIG5vIHZlcnNpb24gaXMgc3BlY2lmaWVkIGFuZCBubyBk
YXRhYmFzZSBleGlzdHMsIHNldCBkYXRhYmFzZSB2ZXJzaW9uIHRvIDEuIik7CisgICAgc2hvdWxk
QmUoJ2RiLnZlcnNpb24nLCAnMScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Bl
bi13aXRoLXZlcnNpb24td2l0aC1kZWxldGUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24td2l0aC1kZWxldGUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjU2ZmI0ZDM3ZWYyOTk3ZjQxMzYyM2JiYTZiNzU4MzRkMGM3Y2M2NgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgt
dmVyc2lvbi13aXRoLWRlbGV0ZS5qcwpAQCAtMCwwICsxLDc0IEBACitpZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKwor
ZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBhIGRlbGV0ZURhdGFiYXNlIGNhbGxlZCB3aGlsZSBoYW5k
bGluZyBhbiB1cGdyYWRlbmVlZGVkIGV2ZW50IGlzIHF1ZXVlZCBhbmQgZmlyZXMgaXRzIGV2ZW50
cyBhdCB0aGUgcmlnaHQgdGltZSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworICAgIGRibmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWUuc3Vi
c3RyaW5nKDEgKyBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lLmxhc3RJbmRleE9mKCIvIikpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUp
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBpbml0aWFsbHlEZWxldGVkOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCit2YXIgc2F3Rmlyc3RV
cGdyYWRlTmVlZGVkID0gZmFsc2U7Cit2YXIgYWxyZWFkeURlbGV0ZWQgPSBmYWxzZTsKK2Z1bmN0
aW9uIGluaXRpYWxseURlbGV0ZWQoZXZ0KSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJp
bml0aWFsbHlEZWxldGVkKCk6Iik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWRE
Qi5vcGVuKGRibmFtZSwgMSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJl
cXVlc3Qub251cGdyYWRlbmVlZGVkID0gZmlyc3RVcGdyYWRlTmVlZGVkOworfQorCitmdW5jdGlv
biBmaXJzdFVwZ3JhZGVOZWVkZWQoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiZmlyc3RVcGdyYWRlTmVlZGVkKCk6Iik7CisgICAgc2hvdWxkQmVG
YWxzZSgic2F3Rmlyc3RVcGdyYWRlTmVlZGVkIik7CisgICAgZXZhbEFuZExvZygic2F3Rmlyc3RV
cGdyYWRlTmVlZGVkID0gdHJ1ZSIpOworICAgIHNob3VsZEJlKCJldmVudC5vbGRWZXJzaW9uIiwg
IjAiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQubmV3VmVyc2lvbiIsICIxIik7CisgICAgaWYgKCFh
bHJlYWR5RGVsZXRlZCkgeworICAgICAgICBhbHJlYWR5RGVsZXRlZCA9IHRydWU7CisgICAgICAg
IHJlcXVlc3QyID0gZXZhbEFuZExvZygiZGVsZXRlUmVxdWVzdCA9IGluZGV4ZWREQi5kZWxldGVE
YXRhYmFzZShkYm5hbWUpIik7CisgICAgICAgIHJlcXVlc3QyLm9uc3VjY2VzcyA9IG1pZFJlcXVl
c3REZWxldGU7CisgICAgICAgIHJlcXVlc3QyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICAgICAgcmVxdWVzdDIub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxs
YmFjazsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIG1pZFJlcXVlc3REZWxldGUoZXZ0KQoreworICAg
IGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygibWlkUmVxdWVzdERlbGV0ZSgpOiIpOworfQorCitzYXdW
ZXJzaW9uQ2hhbmdlID0gZmFsc2U7CitmdW5jdGlvbiBvcGVuU3VjY2VzcyhldnQpCit7CisgICAg
ZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJyZXF1ZXN0Lm9uc3VjY2Vz
cygpOiIpOworICAgIHNob3VsZEJlVHJ1ZSgic2F3Rmlyc3RVcGdyYWRlTmVlZGVkIik7CisgICAg
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZGIub252ZXJzaW9u
Y2hhbmdlID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgICBldmVudCA9IGV2dDsKKyAgICAgIGRlYnVn
KCIiKTsKKyAgICAgIGRlYnVnKCJkYi5vbnZlcnNpb25jaGFuZ2UoKToiKTsKKyAgICAgIHNob3Vs
ZEJlKCJldmVudC5vbGRWZXJzaW9uIiwgIjEiKTsKKyAgICAgIHNob3VsZEJlTnVsbCgiZXZlbnQu
bmV3VmVyc2lvbiIpOworICAgICAgZXZhbEFuZExvZygic2F3VmVyc2lvbkNoYW5nZSA9IHRydWUi
KTsKKyAgICAgIGRiLmNsb3NlKCk7CisgICAgfQorICAgIHNob3VsZEJlKCdkYi52ZXJzaW9uJywg
JzEnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJz
aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg4OWVkMzkyNmZhOWI1MjQ0NGE3M2U2ZmE1NTI3MmM1OTQwMDQ4
NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvb3Blbi13aXRoLXZlcnNpb24uanMKQEAgLTAsMCArMSw3NiBAQAoraWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9
CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgc3BlY2lmeWluZyBhIHZlcnNpb24gd2hlbiBvcGVu
aW5nIGEgbm9uLWV4aXN0ZW50IGRiIGNhdXNlcyBhbiB1cGdyYWRlbmVlZGVkIGV2ZW50IGFuZCB0
aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBpcyBzZXQgY29ycmVjdGx5LiIpOworCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIGRibmFtZSA9IHNlbGYu
bG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKDEgKyBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lLmxh
c3RJbmRleE9mKCIvIikpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5k
ZWxldGVEYXRhYmFzZShkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVT
dWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBkZWxldGVTdWNjZXNzKGV2dCkgeworICAgIGRlYnVnKCJTaG91bGQgdHJp
Z2dlcjoiKTsKKyAgICBkZWJ1ZygiNC4xLjQ6IElmIG5vIGRhdGFiYXNlIHdpdGggdGhlIGdpdmVu
IG5hbWUgZnJvbSB0aGUgb3JpZ2luIG9yaWdpbiB3YXMgZm91bmQsIG9yIGlmIGl0IHdhcyBkZWxl
dGVkIGR1cmluZyB0aGUgcHJldmlvdXMgc3RlcCwgdGhlbiBjcmVhdGUgYSBkYXRhYmFzZSB3aXRo
IG5hbWUgbmFtZSwgd2l0aCAwIGFzIHZlcnNpb24sIGFuZCB3aXRoIG5vIG9iamVjdCBzdG9yZXMu
IExldCBkYiBiZSB0aGUgbmV3IGRhdGFiYXNlLiIpOworICAgIGRlYnVnKCI0LjEuNjogQ3JlYXRl
IGEgbmV3IGNvbm5lY3Rpb24gdG8gZGIgYW5kIGxldCBjb25uZWN0aW9uIHJlcHJlc2VudCBpdC4i
KTsKKyAgICBkZWJ1ZygiNC4xLjc6IElmIHRoZSB2ZXJzaW9uIG9mIGRiIGlzIGxvd2VyIHRoYW4g
dmVyc2lvbiwgdGhlbiBydW4gdGhlIHN0ZXBzIGZvciBydW5uaW5nIGEgXCJ2ZXJzaW9uY2hhbmdl
XCIgdHJhbnNhY3Rpb24gdXNpbmcgY29ubmVjdGlvbiwgdmVyc2lvbiwgcmVxdWVzdCBhbmQgdXBn
cmFkZSBjYWxsYmFjay4iKTsKKyAgICBkZWJ1ZygiNC4xLjk6IFJldHVybiBjb25uZWN0aW9uLiIp
OworCisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgNyki
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcu
YXBwbHkocmVxdWVzdCkiLCAiW29iamVjdCBJREJPcGVuREJSZXF1ZXN0XSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQg
PSB1cGdyYWRlTmVlZGVkOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2Nr
ZWRDYWxsYmFjazsKKyAgICBkZWJ1ZygiIik7Cit9CisKK3ZhciBzYXdVcGdyYWRlTmVlZGVkID0g
ZmFsc2U7Cit2YXIgc2F3VHJhbnNhY3Rpb25Db21wbGV0ZSA9IGZhbHNlOworZnVuY3Rpb24gdXBn
cmFkZU5lZWRlZChldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgdGVzdFBhc3NlZCgiSW4g
dGhlIHVwZ3JhZGVuZWVkZWQgZXZlbnQgaGFuZGVyOiIpOworICAgIGRlYnVnKCJUZXN0IDQuOC45
LjE6Iik7CisgICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KGRi
KSIsICJbb2JqZWN0IElEQkRhdGFiYXNlXSIpOworICAgIGRlYnVnKCJUZXN0IDQuOC45LjM6Iik7
CisgICAgc2hvdWxkQmUoImV2ZW50Lm9sZFZlcnNpb24iLCAiMCIpOworICAgIHNob3VsZEJlKCJl
dmVudC5uZXdWZXJzaW9uIiwgIjciKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50
LnRhcmdldC5yZWFkeVN0YXRlIiwgImRvbmUiKTsKKyAgICBkZWJ1ZygiVGVzdCA0LjEuNDoiKTsK
KyAgICBzaG91bGRCZSgiZGIubmFtZSIsICJkYm5hbWUiKTsKKyAgICBzaG91bGRCZSgiZGIudmVy
c2lvbiIsICI3Iik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwg
IjAiKTsKKworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnRyYW5z
YWN0aW9uIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRv
U3RyaW5nLmFwcGx5KHRyYW5zYWN0aW9uKSIsICJbb2JqZWN0IElEQlRyYW5zYWN0aW9uXSIpOwor
ICAgIGV2YWxBbmRMb2coJ29zID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInNvbWVPUyIpJyk7Cisg
ICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRy
YW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihlKSB7CisgICAgICBldmFsQW5kTG9nKCJz
YXdUcmFuc2FjdGlvbkNvbXBsZXRlID0gdHJ1ZSIpOworICAgIH0KKyAgICBzYXdVcGdyYWRlTmVl
ZGVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50
ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAg
ICBkZWJ1ZygiVGVzdCA0LjEuNywgdGhhdCBhIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gd2Fz
IHJ1bi4iKTsKKyAgICBzaG91bGRCZSgic2F3VXBncmFkZU5lZWRlZCIsICJ0cnVlIik7CisgICAg
c2hvdWxkQmVUcnVlKCJzYXdUcmFuc2FjdGlvbkNvbXBsZXRlIik7CisgICAgZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBkZWJ1ZygiS2luZCBvZiB0ZXN0
IDQuMS45OiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiT2JqZWN0LnByb3RvdHlwZS50
b1N0cmluZy5hcHBseShkYikiLCAiW29iamVjdCBJREJEYXRhYmFzZV0iKTsKKyAgICBzaG91bGRC
ZSgnZGIudmVyc2lvbicsICI3Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXR2
ZXJzaW9uLXVwZ3JhZGVuZWVkZWQtaW50ZXJ0d2luZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0dmVyc2lvbi11cGdyYWRlbmVlZGVkLWludGVydHdpbmVk
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdiZjg2YmRhYjUzOTNkMTI3MTllNjEwYTc1N2ZkYjU4ZjNhOTkxODAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvc2V0dmVyc2lvbi11cGdyYWRlbmVlZGVkLWludGVydHdpbmVkLmpzCkBAIC0wLDAgKzEsMTg5
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBibGFoIGJsYWguIik7
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAg
ZGJuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMSArIHNlbGYubG9jYXRp
b24ucGF0aG5hbWUubGFzdEluZGV4T2YoIi8iKSk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoIlN0cmluZyhyZXF1ZXN0KSIsICJbb2JqZWN0IElEQk9wZW5EQlJlcXVlc3RdIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVTdWNjZXNzOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVTdWNj
ZXNzKGV2dCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiQ2FsbCBvcGVuIHdpdGggbm8g
dmVyc2lvbiBwYXJhbWV0ZXI6Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVl
c3Qub251cGdyYWRlbmVlZGVkID0gdW5leHBlY3RlZFVwZ3JhZGVOZWVkZWRDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZGIudmVyc2lvbiIsICIiKTsKKyAgICBldmFsQW5kTG9nKCdyZXF1ZXN0ID0gZGIuc2V0VmVy
c2lvbigic29tZSB2ZXJzaW9uIiknKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGluU2V0VmVy
c2lvbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGluU2V0VmVyc2lvbihldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJpblNldFZlcnNpb24oKToiKTsKKyAgICB0cmFucyA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHNldFZlcnNpb25Eb25lOworICAg
IHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICBkYiA9IHRyYW5z
LmRiOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJzb21lIHZlcnNp
b24iKTsKKyAgICAvLyBGSVhNRTogQWxzbyBjYWxsIG9wZW4gd2l0aCB2ZXJzaW9uIGZyb20gaGVy
ZS4KK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkRvbmUoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0
OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygic2V0VmVyc2lvbkRvbmUoKToiKTsKKyAgICBk
YiA9IGV2ZW50LnRhcmdldC5kYjsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNp
b24iLCAic29tZSB2ZXJzaW9uIik7CisgICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihkYm5hbWUpIik7CisgICAgZXZh
bEFuZExvZygicmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZWNvbmRPcGVuIik7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVu
ZWVkZWQgPSB1bmV4cGVjdGVkVXBncmFkZU5lZWRlZENhbGxiYWNrOworfQorCitmdW5jdGlvbiBz
ZWNvbmRPcGVuKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoInNlY29uZE9wZW4oKToiKTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIlN0cmluZyhkYikiLCAiW29i
amVjdCBJREJEYXRhYmFzZV0iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNp
b24iLCAic29tZSB2ZXJzaW9uIik7CisgICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOworICAg
IC8vIEZJWE1FOiBBbHNvIGNhbGwgaXQgd2l0aCAwLCAtMSwgYW5kIC00LgorICAgIGV2YWxBbmRM
b2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDIpIik7CisgICAgcmVxdWVzdC5v
bnVwZ3JhZGVuZWVkZWQgPSBmaXJzdFVwZ3JhZGVOZWVkZWQKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhw
ZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmaXJzdE9wZW5X
aXRoVmVyc2lvbjsKK30KKworZnVuY3Rpb24gZmlyc3RVcGdyYWRlTmVlZGVkKGV2dCkKK3sKKyAg
ICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImZpcnN0VXBncmFkZU5l
ZWRlZCgpOiIpOworICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiU3RyaW5nKGRiKSIsICJbb2JqZWN0IElEQkRhdGFi
YXNlXSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiU3RyaW5nKHJlcXVlc3QudHJhbnNh
Y3Rpb24pIiwgIltvYmplY3QgSURCVHJhbnNhY3Rpb25dIik7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJldmVudC5vbGRWZXJzaW9uIiwgInNvbWUgdmVyc2lvbiIpOworICAgIHNob3VsZEJl
KCJldmVudC5uZXdWZXJzaW9uIiwgIjIiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0LnRyYW5z
YWN0aW9uLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlZCIpOworICAgIHJlcXVlc3Qu
dHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworfQorCit2YXIg
ZGlkVHJhbnNhY3Rpb25Db21wbGV0ZSA9IGZhbHNlOworZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21w
bGV0ZWQoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1
ZygidHJhbnNhY3Rpb25Db21wbGV0ZWQoKToiKTsKKyAgICBldmFsQW5kTG9nKCJkaWRUcmFuc2Fj
dGlvbkNvbXBsZXRlID0gdHJ1ZSIpOworfQorCitmdW5jdGlvbiBmaXJzdE9wZW5XaXRoVmVyc2lv
bihldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJm
aXJzdE9wZW5XaXRoVmVyc2lvbigpOiIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGlkVHJhbnNhY3Rp
b25Db21wbGV0ZSIpOworICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiU3RyaW5nKGRiKSIsICJbb2JqZWN0IElEQkRh
dGFiYXNlXSIpOworICAgIHNob3VsZEJlTnVsbCgicmVxdWVzdC50cmFuc2FjdGlvbiIpOworICAg
IHNob3VsZEJlKCJkYi52ZXJzaW9uIiwgIjIiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
IlN0cmluZyhyZXF1ZXN0KSIsICJbb2JqZWN0IElEQk9wZW5EQlJlcXVlc3RdIik7CisgICAgZXZh
bEFuZExvZygncmVxdWVzdCA9IGRiLnNldFZlcnNpb24oInN0cmluZyB2ZXJzaW9uIDIiKScpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiU3RyaW5nKHJlcXVlc3QpIiwgIltvYmplY3QgSURC
VmVyc2lvbkNoYW5nZVJlcXVlc3RdIik7CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVj
dGVkQmxvY2tlZENhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1
Y2Nlc3NDYWxsYmFjazsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0Lm9uZXJyb3IgPSBzZXRWZXJz
aW9uTm90QWxsb3dlZCIpOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uTm90QWxsb3dlZChldnQp
Cit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJzZXRWZXJz
aW9uTm90QWxsb3dlZCgpOiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudHlw
ZSIsICJlcnJvciIpOworICAgIGRlYnVnKCJyZXF1ZXN0LndlYmtpdEVycm9yTWVzc2FnZSA9ICIg
KyByZXF1ZXN0LndlYmtpdEVycm9yTWVzc2FnZSk7CisgICAgZXZhbEFuZExvZygiZGIuY2xvc2Uo
KSIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDEp
Iik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdC5vbmVycm9yID0gZXJyb3JXaGVuVHJ5aW5nTG93
VmVyc2lvbiIpOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxs
YmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGVycm9yV2hlblRyeWluZ0xvd1ZlcnNpb24oZXZ0KQoreworICAgIGV2
ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiZXJyb3JXaGVuVHJ5aW5nTG93
VmVyc2lvbigpOiIpOworICAgIGRlYnVnKCJyZXF1ZXN0LndlYmtpdEVycm9yTWVzc2FnZSA9ICIg
KyByZXF1ZXN0LndlYmtpdEVycm9yTWVzc2FnZSk7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9
IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgNCkiKTsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVu
ZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgZXZhbEFuZExvZygicmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQg
PSBzZWNvbmRVcGdyYWRlTmVlZGVkIik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdC5vbnN1Y2Nl
c3MgPSB0aGlyZE9wZW5TdWNjZXNzIik7Cit9CisKK3ZhciBnb3RTZWNvbmRVcGdyYWRlTmVlZGVk
ID0gZmFsc2U7CitmdW5jdGlvbiBzZWNvbmRVcGdyYWRlTmVlZGVkKGV2dCkKK3sKKyAgICBldmVu
dCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInNlY29uZFVwZ3JhZGVOZWVkZWQo
KToiKTsKKyAgICBldmFsQW5kTG9nKCJnb3RTZWNvbmRVcGdyYWRlTmVlZGVkID0gdHJ1ZSIpOwor
ICAgIHNob3VsZEJlKCJldmVudC5vbGRWZXJzaW9uIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiZXZl
bnQubmV3VmVyc2lvbiIsICI0Iik7Cit9CisKK2Z1bmN0aW9uIHRoaXJkT3BlblN1Y2Nlc3MoZXZ0
KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGhpcmRP
cGVuU3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlVHJ1ZSgiZ290U2Vjb25kVXBncmFkZU5lZWRl
ZCIpOworICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNo
b3VsZEJlKCJkYi52ZXJzaW9uIiwgIjQiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7
CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSkiKTsKKyAg
ICBldmFsQW5kTG9nKCJyZXF1ZXN0Lm9uc3VjY2VzcyA9IGZvdXJ0aE9wZW5TdWNjZXNzIik7Cisg
ICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSB1bmV4cGVjdGVkVXBncmFkZU5lZWRlZENhbGxi
YWNrOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRVcGdyYWRlTmVlZGVkQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIGZvdXJ0aE9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBldmVudCA9
IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImZvdXJ0aE9wZW5TdWNjZXNzKCk6Iik7
CisgICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxk
QmUoImRiLnZlcnNpb24iLCAiNCIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154844</attachid>
            <date>2012-07-26 22:44:43 -0700</date>
            <delta_ts>2012-07-26 22:57:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89505-20120726224432.patch</filename>
            <type>text/plain</type>
            <size>150963</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE1Y2MzNDkxMjEyYTJi
ZWMyODUwM2FlMTI4ZWYyMWZiYmViNDYxZC4uMDU2YTRiMDc4NWVhNDBjZWZhMjg2NTM5MGE3ODAy
M2QxY2E3NzE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxMi0wNy0yNiAgRGF2
aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBp
bXBsZW1lbnQgdXBncmFkZW5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODk1MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBh
cyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlv
bnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogc3RvcmFnZS9pbmRleGVkZGIvaW50
dmVyc2lvbi1hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQuaHRtbAorICAgICAgICAgICAg
ICAgc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hbmQtc2V0dmVyc2lvbi5odG1sCisgICAg
ICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWJsb2NrZWQuaHRtbAorICAg
ICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9zZS1iZXR3ZWVuLWV2
ZW50cy5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNs
b3NlLWluLW9uY29tcGxldGUuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIv
aW50dmVyc2lvbi1kZWxldGUtaW4tdXBncmFkZW5lZWRlZC5odG1sCisgICAgICAgICAgICAgICBz
dG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWRvbnQtZnJlZXplLW9uLXJlZnJlc2guaHRtbAor
ICAgICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0LXBhcmFtZXRl
ci5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9wZW4t
d2l0aC12ZXJzaW9uLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tp
bmdTdG9yZS5oOgorICAgICAgICAoSURCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkNhbGxiYWNrczo6b25CbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNhbGxiYWNrczo6
b25VcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6c2V0VmVyc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6b25WZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnJlZ2lzdGVyRnJvbnRlbmRD
YWxsYmFja3MpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6Cisg
ICAgICAgIChJREJEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQ
ZW5kaW5nT3BlbkNhbGwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRp
bmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OnZlcnNpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5X
aXRoVmVyc2lvbkNhbGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkludGVybmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFkYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW50VmVyc2lvbkludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0
aW9uRmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
dHJhbnNhY3Rpb25GaW5pc2hlZEFuZEV2ZW50c0ZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5nQ2FsbHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25u
ZWN0aW9uV2l0aFZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrczo6b25WZXJzaW9uQ2hhbmdlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25DaGFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsLmg6CisgICAgICAgIChJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRmFjdG9yeTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5Lmg6CisgICAgICAgIChJREJGYWN0b3J5KToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaDoKKyAgICAgICAgKElEQkZhY3RvcnlCYWNrZW5k
SW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2UuaDoKKyAgICAgICAgKElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnB1dFZhckludCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldFVwTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdT
dG9yZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpn
ZXRJREJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZURhdGFiYXNlKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgIChJREJMZXZlbERCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJMZXZlbERCQ29kaW5nLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
TWV0YWRhdGEuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9w
ZW5EQlJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0
OjpJREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6
On5JREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6
OmludGVyZmFjZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6b25C
bG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFkZU5l
ZWRlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGwuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCT3BlbkRCUmVx
dWVzdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5pZGw6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
Q2FsbGJhY2tzLmguCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1
ZXN0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmNsZWFy
VHJhbnNhY3Rpb25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlJlcXVlc3Q6OmVucXVldWVFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25CbG9ja2Vk
KToKKyAgICAgICAgKElEQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6
aXNPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklEQlRy
YW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzZXRBY3RpdmUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpc3BhdGNoRXZlbnQpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKElEQlRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNvbW1pdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVXBncmFkZU5lZWRlZEV2ZW50Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVXBncmFkZU5lZWRlZEV2ZW50OjpJREJVcGdy
YWRlTmVlZGVkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVXBncmFkZU5lZWRlZEV2ZW50
Ojp+SURCVXBncmFkZU5lZWRlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlVwZ3JhZGVO
ZWVkZWRFdmVudDo6b2xkVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJVcGdyYWRlTmVl
ZGVkRXZlbnQ6Om5ld1ZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCVXBncmFkZU5lZWRl
ZEV2ZW50OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJV
cGdyYWRlTmVlZGVkRXZlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmguCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKElEQlVwZ3JhZGVOZWVkZWRFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3MuaC4KKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmluOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdl
dEZhY3RvcnkuaW46CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA3LTI2ICBOYXlhbiBLdW1hciBLICA8
bmF5YW5ra0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgW1dlYkdMXSBJbml0aWFsIHNpemUgb2Yg
Y2FudmFzIGNhbiBiZSBsYXJnZXIgdGhhbiBNQVhfVklFV1BPUlRfRElNUy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggMWQ3MDQ3NDBjN2ZhZGQ4NjE5OThkYWU4ODUzOGU2MmE3NDE1MTZl
ZC4uOGY5N2NmNDFlODRkMWQxZDI1MzgwYTg5N2U0MDJmM2FmYTIwMjk5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxMi0wNy0yNiAgRGF2aWQgR3JvZ2Fu
ICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBpbXBsZW1lbnQg
dXBncmFkZW5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODk1MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2Fj
aCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cg
KE9PUFMhKS4KKworICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5OjpvbkJsb2NrZWQpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJhY2tzUHJveHk6Om9uVXBncmFkZU5lZWRlZCk6
CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5Lmg6CisgICAgICAgIChJREJDYWxsYmFj
a3NQcm94eSk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OnNldFZlcnNpb24pOgorICAg
ICAgICAqIHNyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6b25WZXJzaW9uQ2hhbmdlKToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaDoKKyAg
ICAgICAgKElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAqIHNyYy9JREJGYWN0
b3J5QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCRmFjdG9yeUJhY2tlbmRQ
cm94eTo6b3Blbik6CisgICAgICAgICogc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaDoKKyAg
ICAgICAgKElEQkZhY3RvcnlCYWNrZW5kUHJveHkpOgorICAgICAgICAqIHNyYy9XZWJJREJDYWxs
YmFja3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzSW1wbDo6V2Vi
SURCQ2FsbGJhY2tzSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNhbGxiYWNrc0ltcGw6
Om9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNhbGxiYWNrc0ltcGw6Om9uQmxv
Y2tlZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDYWxsYmFj
a3NJbXBsOjpvblVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAqIHNyYy9XZWJJREJDYWxsYmFja3NJ
bXBsLmg6CisgICAgICAgIChXZWJJREJDYWxsYmFja3NJbXBsKToKKyAgICAgICAgKiBzcmMvV2Vi
SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25DaGFuZ2UpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmg6CisgICAgICAgIChX
ZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJJREJGYWN0b3J5
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkZhY3RvcnlJbXBsOjpvcGVuKToKKyAg
ICAgICAgKiBzcmMvV2ViSURCRmFjdG9yeUltcGwuaDoKKyAgICAgICAgKFdlYklEQkZhY3RvcnlJ
bXBsKToKKyAgICAgICAgKiB0ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmFpbGluZ0JhY2tpbmdTdG9yZTo6Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9JREJGYWtlQmFj
a2luZ1N0b3JlLmg6CisKIDIwMTItMDctMjYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjM3OTku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5n
U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9y
ZS5oCmluZGV4IDc4YTlmNjY3YWRkMTMwZTYzZTNjMDc0NmQ0YTcwM2I0ODk1NDZiZDcuLjUyNzkw
MzQyZGQ3NDQ4MDllY2YzNDMwMTliMzliYzFiMWViMzMxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC00Nyw4ICs0Nyw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJCYWNraW5nU3RvcmUoKSB7fTsKIAogICAgIHZp
cnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzKSA9
IDA7Ci0gICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5n
JiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCkgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5n
JiBmb3VuZFN0cmluZ1ZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVyc2lvbiwgaW50NjRfdCYg
Zm91bmRJZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRh
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdWZXJzaW9uLCBjb25zdCBp
bnQ2NF90IGludFZlcnNpb24sIGludDY0X3QmIHJvd0lkKSA9IDA7CisgICAgdmlydHVhbCBib29s
IHVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbihpbnQ2NF90IHJvd0lkLCBpbnQ2NF90IGludFZl
cnNpb24pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRl
SURCRGF0YWJhc2VNZXRhRGF0YShpbnQ2NF90IHJvd0lkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24p
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1l
KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJh
Y2tzLmgKaW5kZXggODUzZmZjNzJkMjYwMzkxZmNjNDM2NjRkNTczZmM1ZGFlMzAyZGMwZi4uMmE2
YWZlZjM4MzE1YmU2NWIyNjYyOGU1Njg4NmRiYTMyYWM1MzY0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKQEAgLTU5LDcgKzU5LDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktleT4sIGNvbnN0IElEQktleVBhdGgmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElE
QktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIHByaW1hcnlLZXlz
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
b25CbG9ja2VkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBv
bkJsb2NrZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25VcGdyYWRlTmVlZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCA1YzNkZmNiNmI1NDJjMWJlMDZiMjQxYjQ3
Y2U5YmFjYjliNjYyOWI0Li45Y2FhNmIzODMwMDcwMDUyOGM1MGVmN2U2MTZiYjQ1NWNlNjFiZWIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
Y3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNs
dWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRl
ICJJREJVcGdyYWRlTmVlZGVkRXZlbnQuaCIKICNpbmNsdWRlICJJREJWZXJzaW9uQ2hhbmdlRXZl
bnQuaCIKICNpbmNsdWRlICJJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKQEAgLTIwOCw2ICsyMDksNyBAQCBQYXNzUmVmUHRyPElE
QlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBJREJEYXRhYmFzZTo6c2V0VmVyc2lvbihTY3JpcHRFeGVj
dXRpb25Db250ZQogICAgIH0KIAogICAgIFJlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4g
cmVxdWVzdCA9IElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55
OjpjcmVhdGUodGhpcyksIHZlcnNpb24pOworICAgIEFTU0VSVChtX2JhY2tlbmQpOwogICAgIG1f
YmFja2VuZC0+c2V0VmVyc2lvbih2ZXJzaW9uLCByZXF1ZXN0LCBtX2RhdGFiYXNlQ2FsbGJhY2tz
LCBlYyk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CkBAIC0zMDEsNiArMzAzLDE3IEBAIHZvaWQg
SURCRGF0YWJhc2U6OmNsb3NlQ29ubmVjdGlvbigpCiAgICAgfQogfQogCit2b2lkIElEQkRhdGFi
YXNlOjpvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24sIGludDY0X3QgcmVx
dWVzdGVkVmVyc2lvbikKK3sKKyAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9jbG9zZVBlbmRp
bmcpCisgICAgICAgIHJldHVybjsKKworICAgIGVucXVldWVFdmVudChJREJVcGdyYWRlTmVlZGVk
RXZlbnQ6OmNyZWF0ZShleGlzdGluZ1ZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24sIGV2ZW50TmFt
ZXMoKS52ZXJzaW9uY2hhbmdlRXZlbnQpKTsKK30KKwogdm9pZCBJREJEYXRhYmFzZTo6b25WZXJz
aW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIHsKICAgICBpZiAobV9jb250ZXh0U3Rv
cHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQpAQCAtMzE0LDYgKzMyNyw3IEBAIHZv
aWQgSURCRGF0YWJhc2U6Om9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHZlcnNpb24pCiAK
IHZvaWQgSURCRGF0YWJhc2U6OnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKQogeworICAgIEFT
U0VSVChtX2JhY2tlbmQpOwogICAgIG1fYmFja2VuZC0+cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNr
cyhtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggNjRjYmIzMjZhNTg4M2RjZjM5NDczY2FhMTA5
NzI5MDVmM2ZlNjc1ZS4uZDY5YzFiYjZlZjgwZDRiZDIwOGFiNTg2Nzk3ZmNkN2UxNGZhZTIyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBA
IC03OCw2ICs3OCw3IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKHZlcnNpb25jaGFuZ2UpOwogCiAgICAgLy8gSURCRGF0YWJhc2VDYWxsYmFja3MKKyAgICB2
aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGludDY0X3QgZXhpc3RpbmdWZXJzaW9uLCBpbnQ2
NF90IHJlcXVlc3RlZFZlcnNpb24pOwogICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2Uo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0ZWRWZXJzaW9uKTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVj
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCBlNDUxNDdkNWMwYjBiNjJiMzNkM2YzY2NkNjNh
NjE3ZmI1YjhiOThlLi5hMzI4Mzc4YmE5ZTE2NWU4ODRlMjExNWFjMmM0MDYxZGE3YWNiOWFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtNTIsNyArNTIsMjcgQEAgcHJpdmF0ZToKICAgICAg
ICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCiAgICAgewogICAgIH0KKworICAgIFJlZlB0cjxJ
REJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworfTsKKworY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5k
aW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbChjYWxsYmFja3MsIHZlcnNpb24p
KTsKKyAgICB9CisgICAgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcygpIHsgcmV0
dXJuIG1fY2FsbGJhY2tzOyB9CisgICAgaW50NjRfdCB2ZXJzaW9uKCkgeyByZXR1cm4gbV92ZXJz
aW9uOyB9CisKK3ByaXZhdGU6CisgICAgUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwoUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQorICAgICAgICA6
IG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKKyAgICAgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKKyAg
ICB7CisgICAgfQogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworICAgIGlu
dDY0X3QgbV92ZXJzaW9uOwogfTsKIAogY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVu
ZGluZ0RlbGV0ZUNhbGwgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5kaW5nRGVsZXRlQ2FsbD4gewpA
QCAtMTA2LDYgKzEyNiw3IEBAIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFj
a2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvCiAgICAgLCBtX2lkKElu
dmFsaWRJZCkKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV92ZXJzaW9uKCIiKQorICAgICwg
bV9pbnRWZXJzaW9uKElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbikKICAgICAsIG1f
aWRlbnRpZmllcih1bmlxdWVJZGVudGlmaWVyKQogICAgICwgbV9mYWN0b3J5KGZhY3RvcnkpCiAg
ICAgLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IoY29vcmRpbmF0b3IpCkBAIC0xMTYsMTMgKzEz
NywxMyBAQCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNv
bnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0bwogCiBib29sIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6Om9wZW5JbnRlcm5hbCgpCiB7Ci0gICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3Rv
cmUtPmdldElEQkRhdGFiYXNlTWV0YURhdGEobV9uYW1lLCBtX3ZlcnNpb24sIG1faWQpOwotICAg
IEFTU0VSVChzdWNjZXNzID09IChtX2lkICE9IEludmFsaWRJZCkpOworICAgIGJvb2wgc3VjY2Vz
cyA9IG1fYmFja2luZ1N0b3JlLT5nZXRJREJEYXRhYmFzZU1ldGFEYXRhKG1fbmFtZSwgbV92ZXJz
aW9uLCBtX2ludFZlcnNpb24sIG1faWQpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uoc3VjY2Vz
cyA9PSAobV9pZCAhPSBJbnZhbGlkSWQpLCAic3VjY2VzcyA9ICVzLCBtX2lkID0gJSJQUklkNjQs
IHN1Y2Nlc3MgPyAidHJ1ZSIgOiAiZmFsc2UiLCBtX2lkKTsKICAgICBpZiAoc3VjY2Vzcykgewog
ICAgICAgICBsb2FkT2JqZWN0U3RvcmVzKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
LSAgICByZXR1cm4gbV9iYWNraW5nU3RvcmUtPmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEobV9u
YW1lLCBtX3ZlcnNpb24sIG1faWQpOworICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRl
SURCRGF0YWJhc2VNZXRhRGF0YShtX25hbWUsIG1fdmVyc2lvbiwgbV9pbnRWZXJzaW9uLCBtX2lk
KTsKIH0KIAogSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6fklEQkRhdGFiYXNlQmFja2VuZEltcGwo
KQpAQCAtMTM2LDcgKzE1Nyw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpiYWNraW5nU3RvcmUoKSBjb25zdAogCiBJREJEYXRhYmFzZU1ldGFk
YXRhIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFkYXRhKCkgY29uc3QKIHsKLSAgICBJREJE
YXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKG1fbmFtZSwgbV92ZXJzaW9uLCBJREJEYXRhYmFzZU1l
dGFkYXRhOjpOb0ludFZlcnNpb24pOworICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEo
bV9uYW1lLCBtX3ZlcnNpb24sIG1faW50VmVyc2lvbik7CiAgICAgZm9yIChPYmplY3RTdG9yZU1h
cDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29iamVjdFN0b3Jlcy5iZWdpbigpOyBpdCAhPSBtX29i
amVjdFN0b3Jlcy5lbmQoKTsgKytpdCkKICAgICAgICAgbWV0YWRhdGEub2JqZWN0U3RvcmVzLnNl
dChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQtPm1ldGFkYXRhKCkpOwogICAgIHJldHVybiBtZXRhZGF0
YTsKQEAgLTIxNCw2ICsyMzUsOCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZl
cnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbAogICAgICAgICBj
YWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAiQ29ubmVjdGlvbiB3YXMgY2xvc2VkIGJlZm9yZSBzZXQg
dmVyc2lvbiB0cmFuc2FjdGlvbiB3YXMgY3JlYXRlZCIpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KKyAgICBpZiAobV9pbnRWZXJzaW9uICE9IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVy
c2lvbikKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsIFN0cmluZzo6Zm9ybWF0KCJZb3Ug
Y2FuJ3QgdXNlIHRoZSBzZXRWZXJzaW9uIGZ1bmN0aW9uIGlmIHlvdSd2ZSBhbHJlYWR5IHNldCB0
aGUgdmVyc2lvbiB0aHJvdWdoIGFuIG9wZW4gY2FsbC4gIFRoZSBjdXJyZW50IGludGVnZXIgdmVy
c2lvbiBpcyAlIlBSSWQ2NCwgbV9pbnRWZXJzaW9uKSkpOwogICAgIGZvciAoRGF0YWJhc2VDYWxs
YmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5iZWdp
bigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVuZCgpOyArK2l0KSB7CiAgICAgICAg
IGlmICgqaXQgIT0gZGF0YWJhc2VDYWxsYmFja3MpCiAgICAgICAgICAgICAoKml0KS0+b25WZXJz
aW9uQ2hhbmdlKHZlcnNpb24pOwpAQCAtMjU5LDYgKzI4MiwxOSBAQCB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OnNldFZlcnNpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZgogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPih0cmFuc2FjdGlvbikpOwogfQogCit2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OnNldEludFZlcnNpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSwgaW50NjRfdCB2
ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24pCit7CisgICAgaW50NjRf
dCBkYXRhYmFzZUlkID0gZGF0YWJhc2UtPmlkKCk7CisgICAgaW50NjRfdCBvbGRWZXJzaW9uID0g
ZGF0YWJhc2UtPm1faW50VmVyc2lvbjsKKyAgICBkYXRhYmFzZS0+bV9pbnRWZXJzaW9uID0gdmVy
c2lvbjsKKyAgICBpZiAoIWRhdGFiYXNlLT5tX2JhY2tpbmdTdG9yZS0+dXBkYXRlSURCRGF0YWJh
c2VJbnRWZXJzaW9uKGRhdGFiYXNlSWQsIGRhdGFiYXNlLT5tX2ludFZlcnNpb24pKSB7CisgICAg
ICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJh
c2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiRXJyb3Igd3JpdGluZyBkYXRhIHRvIHN0YWJsZSBz
dG9yYWdlLiIpKTsKKyAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgY2FsbGJhY2tzLT5vblVwZ3JhZGVOZWVkZWQob2xkVmVyc2lvbiwgdHJh
bnNhY3Rpb24sIGRhdGFiYXNlKTsKK30KKwogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0
cmFuc2FjdGlvblN0YXJ0ZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBw
cnBUcmFuc2FjdGlvbikKIHsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4g
dHJhbnNhY3Rpb24gPSBwcnBUcmFuc2FjdGlvbjsKQEAgLTI3Niw2ICszMTIsMTMgQEAgdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkKFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW4KICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFu
c2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpIHsKICAgICAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLmdl
dCgpID09IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgICAg
IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi5jbGVhcigpOworICAgIH0KK30KKwor
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkQW5kRXZlbnRz
RmlyZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBwcnBUcmFuc2FjdGlv
bikKK3sKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24g
PSBwcnBUcmFuc2FjdGlvbjsKKyAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFu
c2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpIHsKICAgICAgICAgcHJvY2Vzc1BlbmRpbmdDYWxscygp
OwogICAgIH0KIH0KQEAgLTMyNSw2ICszNjgsMTMgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKICAgICBpZiAobV9ydW5uaW5nVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpIHx8ICFt
X3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIERl
cXVlPFJlZlB0cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4gPiBwZW5kaW5nT3BlbldpdGhW
ZXJzaW9uQ2FsbHM7CisgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuc3dhcChwZW5k
aW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMpOworICAgIHdoaWxlICghcGVuZGluZ09wZW5XaXRoVmVy
c2lvbkNhbGxzLmlzRW1wdHkoKSkgeworICAgICAgICBSZWZQdHI8UGVuZGluZ09wZW5XaXRoVmVy
c2lvbkNhbGw+IHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsID0gcGVuZGluZ09wZW5XaXRoVmVy
c2lvbkNhbGxzLnRha2VGaXJzdCgpOworICAgICAgICBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9u
KHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT5jYWxsYmFja3MoKSwgcGVuZGluZ09wZW5XaXRo
VmVyc2lvbkNhbGwtPnZlcnNpb24oKSk7CisgICAgfQorCiAgICAgLy8gR2l2ZW4gdGhlIGNoZWNr
IGFib3ZlLCBpdCBhcHBlYXJzIHRoYXQgY2FsbHMgY2Fubm90IGJlIHJlcXVldWVkIGJ5CiAgICAg
Ly8gb3BlbkNvbm5lY3Rpb24sIGJ1dCB1c2UgYSBkaWZmZXJlbnQgcXVldWUgZm9yIGl0ZXJhdGlv
biB0byBiZSBzYWZlLgogICAgIERlcXVlPFJlZlB0cjxQZW5kaW5nT3BlbkNhbGw+ID4gcGVuZGlu
Z09wZW5DYWxsczsKQEAgLTM3Myw2ICs0MjMsNzIgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQog
ICAgIH0KIH0KIAordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24oaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gcHJwQ2FsbGJhY2tzKQoreworICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcyA9IHBycENhbGxiYWNrczsKKyAgICBBU1NFUlQoY2FsbGJhY2tzKTsKKyAgICBmb3IgKERh
dGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFj
a3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5lbmQoKTsgKytpdCkg
eworICAgICAgICAvLyBUaGUgZnJvbnRlbmQgdGFrZXMgY2FyZSBvZiB0aGUgZm9sbG93aW5nIGNs
YXVzZSwgdGhlIGJhY2tlbmQganVzdAorICAgICAgICAvLyBmaXJlcyB2ZXJzaW9uIGNoYW5nZSBh
dCBhbGwgdGhlIGNvbm5lY3Rpb25zLCB0aGUgZnJvbnRlbmQgd2lsbCBub3QKKyAgICAgICAgLy8g
ZGVsaXZlciB0byBjb25uZWN0aW9ucyB3aXRoIGNsb3NlUGVuZGluZyBzZXQuCisgICAgICAgIC8v
ICJUaGUgZXZlbnQgbXVzdCBub3QgYmUgZmlyZWQgb24gb2JqZWN0cyB3aGljaCBoYXMgdGhlIGNs
b3NlUGVuZGluZworICAgICAgICAvLyBmbGFnIHNldC4iCisgICAgICAgICgqaXQpLT5vblZlcnNp
b25DaGFuZ2UobV9pbnRWZXJzaW9uLCByZXF1ZXN0ZWRWZXJzaW9uKTsKKyAgICB9CisgICAgLy8g
VGhlIHNwZWMgZGljdGF0ZXMgd2Ugd2FpdCB1bnRpbCBhbGwgdGhlIHZlcnNpb24gY2hhbmdlIGV2
ZW50cyBhcmUKKyAgICAvLyBkZWxpdmVyZWQgYW5kIHRoZW4gY2hlY2sgbV9kYXRhYmFzZUNhbGxi
YWNrcy5lbXB0eSgpIGJlZm9yZSBwcm9jZWVkaW5nCisgICAgLy8gb3IgZmlyaW5nIGEgYmxvY2tl
ZCBldmVudCwgYnV0IGluc3RlYWQgd2Ugc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCBob3cKKyAg
ICAvLyB0aGUgb2xkIHNldFZlcnNpb24gKGluY29ycmVjdGx5KSBkaWQgaXQ6CisgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMwCisgICAgaWYgKGNvbm5l
Y3Rpb25Db3VudCgpID4gMCkKKyAgICAgICAgY2FsbGJhY2tzLT5vbkJsb2NrZWQobV9pbnRWZXJz
aW9uKTsKKyAgICAvLyBGSVhNRTogRmlndXJlIG91dCBob3cgdG8gdGVzdCBtX3J1bm5pbmdWZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24uCisgICAgaWYgKG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbiB8fCBjb25uZWN0aW9uQ291bnQoKSA+IDApIHsKKyAgICAgICAgLy8gSXQncyBhbHJl
YWR5IHF1ZXVlZC4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSZWZQdHI8RE9NU3RyaW5n
TGlzdD4gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOworICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+IHRyYW5zYWN0aW9uSW50ZXJmYWNlID0gdGhpcy0+dHJhbnNhY3Rpb24ob2JqZWN0U3Rv
cmVOYW1lcy5nZXQoKSwgSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFLCBlYyk7CisgICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvbkludGVyZmFjZS5nZXQoKSk7CisgICAg
QVNTRVJUKCFlYyk7CisKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJh
c2UgPSB0aGlzOworICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxs
YmFja1Rhc2soJklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldEludFZlcnNpb25JbnRlcm5hbCwg
ZGF0YWJhc2UsIHJlcXVlc3RlZFZlcnNpb24sIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQkRh
dGFiYXNlQmFja2VuZEltcGw6OnJlc2V0VmVyc2lvbiwgZGF0YWJhc2UsIG1fdmVyc2lvbikpKSB7
CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZF
X0VSUjsKKyAgICB9Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5l
Y3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBp
bnQ2NF90IHZlcnNpb24pCit7CisgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0g
cHJwQ2FsbGJhY2tzOworICAgIGlmICghbV9wZW5kaW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpIHx8
IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCAhbV9wZW5kaW5nU2V0VmVyc2lv
bkNhbGxzLmlzRW1wdHkoKSkgeworICAgICAgICBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxs
cy5hcHBlbmQoUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIHZl
cnNpb24pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9pZCA9PSBJbnZhbGlk
SWQpIHsKKyAgICAgICAgaWYgKG9wZW5JbnRlcm5hbCgpKQorICAgICAgICAgICAgQVNTRVJUKCFt
X2ludFZlcnNpb24pOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrcy0+b25F
cnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05P
V05fRVJSLCAiSW50ZXJuYWwgZXJyb3IuIikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfQorICAgIGlmICh2ZXJzaW9uID4gbV9pbnRWZXJzaW9uKSB7CisgICAgICAgIG1f
cGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbldpdGhWZXJzaW9u
Q2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgdmVyc2lvbikpOworICAgICAgICBydW5JbnRWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24odmVyc2lvbiwgY2FsbGJhY2tzKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBpZiAodmVyc2lvbiA8IG1faW50VmVyc2lvbikgeworICAgICAgICBjYWxsYmFj
a3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpWRVJfRVJSLCBTdHJpbmc6OmZvcm1hdCgiVGhlIHJlcXVlc3RlZCB2ZXJzaW9uICglIlBSSWQ2
NCIpIGlzIGxlc3MgdGhhbiB0aGUgZXhpc3RpbmcgdmVyc2lvbiAoJSJQUklkNjQiKS4iLCB2ZXJz
aW9uLCBtX2ludFZlcnNpb24pKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJU
KHZlcnNpb24gPT0gbV9pbnRWZXJzaW9uKTsKKyAgICArK21fcGVuZGluZ0Nvbm5lY3Rpb25Db3Vu
dDsKKyAgICBjYWxsYmFja3MtPm9uU3VjY2Vzcyh0aGlzKTsKK30KKwogdm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpkZWxldGVEYXRhYmFzZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJw
Q2FsbGJhY2tzKQogewogICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24g
fHwgIW1fcGVuZGluZ1NldFZlcnNpb25DYWxscy5pc0VtcHR5KCkpIHsKQEAgLTM5MywxMiArNTA5
LDE0IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UoUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrCiAgICAgICAgIGNhbGxiYWNrcy0+b25CbG9j
a2VkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgQVNTRVJUKG1fYmFja2luZ1N0b3Jl
KTsKICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5kZWxldGVEYXRhYmFzZShtX25hbWUpKSB7CiAg
ICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiSW50ZXJuYWwgZXJyb3IuIikpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIG1fdmVyc2lvbiA9ICIiOwogICAgIG1faWQgPSBJbnZhbGlk
SWQ7CisgICAgbV9pbnRWZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9u
OwogICAgIG1fb2JqZWN0U3RvcmVzLmNsZWFyKCk7CiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3Mo
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSk7CiB9CkBAIC00MTEsMTIgKzUyOSwx
NyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3M+IHBycENhbGxiYWNrcwogICAgIGlmIChjb25uZWN0aW9uQ291bnQoKSA+
IDEpCiAgICAgICAgIHJldHVybjsKIAorICAgIFRyYW5zYWN0aW9uU2V0IHRyYW5zYWN0aW9ucyht
X3RyYW5zYWN0aW9ucyk7CiAgICAgcHJvY2Vzc1BlbmRpbmdDYWxscygpOwogCi0gICAgaWYgKCFj
b25uZWN0aW9uQ291bnQoKSkgewotICAgICAgICBUcmFuc2FjdGlvblNldCB0cmFuc2FjdGlvbnMo
bV90cmFuc2FjdGlvbnMpOworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5zaXplKCkgLSB0cmFu
c2FjdGlvbnMuc2l6ZSgpIDw9IDEpOworICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHJlbHlpbmcg
b24gdHJhbnNhY3Rpb25zLnNpemUoKSwgbWFrZSBjb25uZWN0aW9uQ291bnQKKyAgICAvLyBhd2Fy
ZSBvZiBpbi1mbGlnaHQgdXBncmFkZW5lZWRlZCBldmVudHMgYXMgd2VsbCBhcyBpbi1mbGlnaHQg
c3VjY2VzcworICAgIC8vIGV2ZW50cy4KKyAgICBpZiAoIWNvbm5lY3Rpb25Db3VudCgpICYmICFt
X3BlbmRpbmdEZWxldGVDYWxscy5zaXplKCkgJiYgbV90cmFuc2FjdGlvbnMuc2l6ZSgpID09IHRy
YW5zYWN0aW9ucy5zaXplKCkpIHsKICAgICAgICAgZm9yIChUcmFuc2FjdGlvblNldDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSB0cmFuc2FjdGlvbnMuYmVnaW4oKTsgaXQgIT0gdHJhbnNhY3Rpb25zLmVu
ZCgpOyArK2l0KQogICAgICAgICAgICAgKCppdCktPmFib3J0KCk7CisKICAgICAgICAgQVNTRVJU
KG1fdHJhbnNhY3Rpb25zLmlzRW1wdHkoKSk7CiAKICAgICAgICAgbV9iYWNraW5nU3RvcmUuY2xl
YXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCA4MDVlYjYxN2ZiMzIxNGQwYmJiMjU3NWYzMmJm
ODk1YTQ1ZjEwZDFkLi40NDE5MTZmNTg3YWVmMjhkNWI4OGZiM2NjMTkzOGJiM2UyNGNlMTg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tz
Pik7CiAgICAgdm9pZCBvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwor
ICAgIHZvaWQgb3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIGludDY0X3QgdmVyc2lvbik7CiAgICAgdm9pZCBkZWxldGVEYXRhYmFzZShQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4pOwogCiAgICAgLy8gSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlCkBA
IC03MSwxOCArNzIsMjIgQEAgcHVibGljOgogICAgIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3Iq
IHRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zYWN0aW9uQ29v
cmRpbmF0b3IuZ2V0KCk7IH0KICAgICB2b2lkIHRyYW5zYWN0aW9uU3RhcnRlZChQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsKICAgICB2b2lkIHRyYW5zYWN0aW9uRmluaXNo
ZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPik7CisgICAgdm9pZCB0cmFu
c2FjdGlvbkZpbmlzaGVkQW5kRXZlbnRzRmlyZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsPik7CiAKIHByaXZhdGU6CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25z
dCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSogZGF0YWJhc2UsIElEQlRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IqLCBJREJGYWN0b3J5QmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIHVuaXF1
ZUlkZW50aWZpZXIpOwogCiAgICAgYm9vbCBvcGVuSW50ZXJuYWwoKTsKKyAgICB2b2lkIHJ1bklu
dFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAgICAgdm9pZCBsb2FkT2JqZWN0U3RvcmVzKCk7CiAgICAg
aW50MzJfdCBjb25uZWN0aW9uQ291bnQoKTsKICAgICB2b2lkIHByb2Nlc3NQZW5kaW5nQ2FsbHMo
KTsKKyAgICBzdGF0aWMgdm9pZCBwcm9jZXNzUGVuZGluZ1Rhc2sodm9pZCogZGIpOwogCiAgICAg
c3RhdGljIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsPik7CiAgICAgc3RhdGljIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgUGFz
c1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsPik7CiAgICAgc3RhdGljIHZvaWQgc2V0VmVyc2lvbkludGVybmFsKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+
LCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPik7CisgICAgc3RhdGljIHZvaWQgc2V0SW50
VmVyc2lvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQmFja2VuZEltcGw+LCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKIAogICAg
IC8vIFRoZXNlIGFyZSB1c2VkIGFzIHNldFZlcnNpb24gdHJhbnNhY3Rpb24gYWJvcnQgdGFza3Mu
CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmVGcm9tTWFwKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+KTsKQEAgLTkzLDYgKzk4LDcgQEAgcHJpdmF0ZToK
ICAgICBpbnQ2NF90IG1faWQ7CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcgbV92ZXJz
aW9uOworICAgIGludDY0X3QgbV9pbnRWZXJzaW9uOwogCiAgICAgU3RyaW5nIG1faWRlbnRpZmll
cjsKICAgICAvLyBUaGlzIG1pZ2h0IG5vdCBuZWVkIHRvIGJlIGEgUmVmUHRyIHNpbmNlIHRoZSBm
YWN0b3J5J3MgbGlmZXRpbWUgaXMgdGhhdCBvZiB0aGUgcGFnZSBncm91cCwgYnV0IGl0J3MgYmV0
dGVyIHRvIGJlIGNvbnNlcnZpdGl2ZSB0aGFuIHNvcnJ5LgpAQCAtMTEzLDYgKzExOSw5IEBAIHBy
aXZhdGU6CiAgICAgY2xhc3MgUGVuZGluZ09wZW5DYWxsOwogICAgIERlcXVlPFJlZlB0cjxQZW5k
aW5nT3BlbkNhbGw+ID4gbV9wZW5kaW5nT3BlbkNhbGxzOwogCisgICAgY2xhc3MgUGVuZGluZ09w
ZW5XaXRoVmVyc2lvbkNhbGw7CisgICAgRGVxdWU8UmVmUHRyPFBlbmRpbmdPcGVuV2l0aFZlcnNp
b25DYWxsPiA+IG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzOworCiAgICAgY2xhc3MgUGVu
ZGluZ0RlbGV0ZUNhbGw7CiAgICAgRGVxdWU8UmVmUHRyPFBlbmRpbmdEZWxldGVDYWxsPiA+IG1f
cGVuZGluZ0RlbGV0ZUNhbGxzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3MuaAppbmRleCBiM2YyNDRmNTE2YjY5ODdl
YTExOWNiZjcwMTliN2I1NDM3NWYxMmJmLi4xNmE5ZWE2YzUwOGIwZDkyYjYxZTQ5OTdjNTQzMDEz
MmE2ZDJhY2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmgKQEAgLTM4LDYgKzM4LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfklEQkRhdGFiYXNlQ2FsbGJhY2tzKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBjdXJyZW50VmVyc2lvbiwgaW50NjRfdCByZXF1
ZXN0ZWRWZXJzaW9uKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcAppbmRleCAxOTQxMmZjYmU1MGFi
NDRiZjUzZGMwMWUwM2Q4ODUzZTI4ZjdjNWZmLi5mNzE3YWRiZDU1MWQ0NDJlYmI4ZmQ5OGRkOGE3
Y2ZkOTBkNjliY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTUyLDYgKzUyLDEy
IEBAIHZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25DaGFuZ2UoY29uc3Qg
U3RyaW5nJiB2ZXJzaW9uKQogICAgICAgICBtX2RhdGFiYXNlLT5vblZlcnNpb25DaGFuZ2UodmVy
c2lvbik7CiB9CiAKK3ZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25DaGFu
Z2UoaW50NjRfdCBjdXJyZW50VmVyc2lvbiwgaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKQorewor
ICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAgICBtX2RhdGFiYXNlLT5vblZlcnNpb25DaGFuZ2Uo
Y3VycmVudFZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24pOworfQorCiB2b2lkIElEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbDo6dW5yZWdpc3RlckRhdGFiYXNlKElEQkRhdGFiYXNlKiBkYXRhYmFzZSkK
IHsKICAgICBBU1NFUlRfVU5VU0VEKGRhdGFiYXNlLCBkYXRhYmFzZSA9PSBtX2RhdGFiYXNlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsLmgKaW5kZXggZThiMWY5OWI4MzhhZjdiOTM3ZDk0YjdhZjhmN2Y3
ZGZiODJiZTdmYi4uMDgwZjViYTg3YmZkNjgyNWM1NTVmYzhkNWQwZjdmNzY2NzQzYTQyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxs
YmFja3NJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpOwogCiAgICAgdmlydHVhbCB2b2lkIG9uVmVy
c2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHZlcnNpb24pOworICAgIHZpcnR1YWwgdm9pZCBvblZl
cnNpb25DaGFuZ2UoaW50NjRfdCBjdXJyZW50VmVyc2lvbiwgaW50NjRfdCByZXF1ZXN0ZWRWZXJz
aW9uKTsKICAgICB2b2lkIHVucmVnaXN0ZXJEYXRhYmFzZShJREJEYXRhYmFzZSopOwogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNw
cAppbmRleCBjZjUyY2MxZmUyYjEzNTViNmM1NGVkY2UyNjVlMGYzZThjM2E1ZTkxLi5jODNiYTM2
NDVkYmY2ZDM5ODNjOWNjYTdkN2IzN2FiMTUwNzcyYjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2lu
Y2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCS2V5Lmgi
CiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKLSNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCisjaW5j
bHVkZSAiSURCT3BlbkRCUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlZlcnNpb25DaGFuZ2VSZXF1
ZXN0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtMTA1
LDcgKzEwNSw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCRmFjdG9yeTo6Z2V0RGF0YWJh
c2VOYW1lcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250CiAgICAgcmV0dXJuIHJlcXVlc3Q7
CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQorUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2
ZXJzaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAobmFtZS5pc051bGwoKSkgewog
ICAgICAgICBlYyA9IE5BVElWRV9UWVBFX0VSUjsKQEAgLTExNCwxMSArMTE0LDE2IEBAIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTCiAgICAgaWYgKCFpc0NvbnRleHRWYWxpZChjb250ZXh0KSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJl
cXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgMCk7Ci0gICAgbV9i
YWNrZW5kLT5vcGVuKG5hbWUsIHJlcXVlc3QsIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIGNv
bnRleHQsIGdldEluZGV4ZWREQkRhdGFiYXNlUGF0aChjb250ZXh0KSk7CisgICAgUmVmUHRyPElE
Qk9wZW5EQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJPcGVuREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4
dCwgSURCQW55OjpjcmVhdGUodGhpcyksIHZlcnNpb24pOworICAgIG1fYmFja2VuZC0+b3Blbihu
YW1lLCB2ZXJzaW9uLCByZXF1ZXN0LCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBjb250ZXh0
LCBnZXRJbmRleGVkREJEYXRhYmFzZVBhdGgoY29udGV4dCkpOwogICAgIHJldHVybiByZXF1ZXN0
OwogfQogCitQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW4oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICByZXR1cm4gb3Blbihjb250ZXh0LCBuYW1lLCBJREJEYXRhYmFz
ZU1ldGFkYXRhOjpOb0ludFZlcnNpb24sIGVjKTsKK30KKwogUGFzc1JlZlB0cjxJREJWZXJzaW9u
Q2hhbmdlUmVxdWVzdD4gSURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBpZiAobmFtZS5pc051bGwoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeS5oCmluZGV4IDQ2MTFjYjZjNGZlODM5OTBiNDcyNGE0M2JmMDlj
OWE1YTk1ZDg4OGQuLjM2NDViYjgxZGM3ZWU5NjY5MDVkYTY1MmMwNjRkYTczODZmNjUzZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKQEAgLTMw
LDcgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJG
YWN0b3J5QmFja2VuZEludGVyZmFjZS5oIgotI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKKyNpbmNs
dWRlICJJREJPcGVuREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBA
IC01OCw3ICs1OCw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0
RGF0YWJhc2VOYW1lcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKLSAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
bmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4g
b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRp
b25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBvcGVuKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IGRl
bGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUs
IEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHNob3J0IGNtcChQYXNzUmVmUHRyPElEQktleT4gZmly
c3QsIFBhc3NSZWZQdHI8SURCS2V5PiBzZWNvbmQsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGwKaW5kZXggMDM4OWVi
MmFhZTdlMTI5OTU0ZDlhY2YwM2E1OWZmYmNjN2ZiYWFjYy4uYmY3MWEyZGQyNWQxZmY5NWUyNjQz
NWY0ZTQxZjBjNDFiOTc2NzJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeS5pZGwKQEAgLTMwLDcgKzMwLDcgQEAgbW9kdWxlIHN0b3JhZ2Ugewog
ICAgIF0gSURCRmFjdG9yeSB7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBJbXBsZW1lbnRlZEFzPWdldERhdGFiYXNlTmFtZXNdIElEQlJlcXVlc3Qgd2Via2l0R2V0
RGF0YWJhc2VOYW1lcygpOwogCi0gICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0XSBJREJSZXF1ZXN0IG9wZW4oaW4gRE9NU3RyaW5nIG5hbWUpCisgICAgICAgIFtDYWxsV2l0
aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJPcGVuREJSZXF1ZXN0IG9wZW4oaW4gRE9NU3Ry
aW5nIG5hbWUsIGluIFtPcHRpb25hbF0gdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24pCiAgICAg
ICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAgICAgW0NhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IGRlbGV0ZURh
dGFiYXNlKGluIERPTVN0cmluZyBuYW1lKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFz
ZUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAppbmRleCBkZmIxNDU3YTMwNmRhYTdhNTY4
YzIxYWY2ZWZhMzQ1NDZjZTNmZjQ2Li5mOWM2ZTQxMTE3NjNmYmIwMDNkMDU1ZjJjOTliNDdmMmE5
NzQzMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkxldmVsREJCYWNraW5nU3Rv
cmUuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL1VudXNlZFBhcmFtLmg+CiAKQEAgLTE0OSwzMiArMTUwLDMwIEBAIFBhc3NSZWZQdHI8SURC
QmFja2luZ1N0b3JlPiBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5CYWNraW5nU3RvcmUoUGFz
c1JlZlB0cjxTCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBs
OjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJwU2VjdXJpdHlPcmlnaW4sIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXJlY3RvcnkpCit2b2lkIElE
QkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVy
c2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gcHJwU2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIGRhdGFEaXJlY3RvcnkpCiB7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBzZWN1cml0eU9yaWdpbiA9IHBycFNlY3VyaXR5T3JpZ2luOwogICAgIGNvbnN0IFN0cmluZyB1
bmlxdWVJZGVudGlmaWVyID0gY29tcHV0ZVVuaXF1ZUlkZW50aWZpZXIobmFtZSwgc2VjdXJpdHlP
cmlnaW4uZ2V0KCkpOwogCisgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFi
YXNlQmFja2VuZDsKICAgICBJREJEYXRhYmFzZUJhY2tlbmRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9k
YXRhYmFzZUJhY2tlbmRNYXAuZmluZCh1bmlxdWVJZGVudGlmaWVyKTsKLSAgICBpZiAoaXQgIT0g
bV9kYXRhYmFzZUJhY2tlbmRNYXAuZW5kKCkpIHsKLSAgICAgICAgLy8gSWYgaXQncyBhbHJlYWR5
IGJlZW4gb3BlbmVkLCB3ZSBoYXZlIHRvIHdhaXQgZm9yIGFueSBwZW5kaW5nCi0gICAgICAgIC8v
IHNldFZlcnNpb24gY2FsbHMgdG8gY29tcGxldGUuCi0gICAgICAgIGl0LT5zZWNvbmQtPm9wZW5D
b25uZWN0aW9uKGNhbGxiYWNrcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBG
SVhNRTogRXZlcnl0aGluZyBmcm9tIG5vdyBvbiBzaG91bGQgYmUgZG9uZSBvbiBhbm90aGVyIHRo
cmVhZC4KLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBvcGVuQmFj
a2luZ1N0b3JlKHNlY3VyaXR5T3JpZ2luLCBkYXRhRGlyZWN0b3J5KTsKLSAgICBpZiAoIWJhY2tp
bmdTdG9yZSkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9y
LiIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJlZlB0cjxJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsPiBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVh
dGUobmFtZSwgYmFja2luZ1N0b3JlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0
KCksIHRoaXMsIHVuaXF1ZUlkZW50aWZpZXIpOwotICAgIGlmIChkYXRhYmFzZUJhY2tlbmQpIHsK
LSAgICAgICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFi
YXNlQmFja2VuZC5nZXQoKSk7Ci0gICAgICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbkNvbm5lY3Rp
b24oY2FsbGJhY2tzKTsKKyAgICBpZiAoaXQgPT0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZW5kKCkp
IHsKKyAgICAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gb3BlbkJh
Y2tpbmdTdG9yZShzZWN1cml0eU9yaWdpbiwgZGF0YURpcmVjdG9yeSk7CisgICAgICAgIGlmICgh
YmFja2luZ1N0b3JlKSB7CisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVy
bmFsIGVycm9yLiIpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBk
YXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFtZSwgYmFj
a2luZ1N0b3JlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCksIHRoaXMsIHVu
aXF1ZUlkZW50aWZpZXIpOworICAgICAgICBpZiAoZGF0YWJhc2VCYWNrZW5kKQorICAgICAgICAg
ICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFj
a2VuZC5nZXQoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJv
cihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05f
RVJSLCAiSW50ZXJuYWwgZXJyb3IuIikpOwogICAgIH0gZWxzZQotICAgICAgICBjYWxsYmFja3Mt
Pm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpV
TktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAgZGF0YWJhc2VCYWNrZW5k
ID0gaXQtPnNlY29uZDsKKyAgICBpZiAodmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpO
b0ludFZlcnNpb24pCisgICAgICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbkNvbm5lY3Rpb24oY2Fs
bGJhY2tzKTsKKyAgICBlbHNlCisgICAgICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbkNvbm5lY3Rp
b25XaXRoVmVyc2lvbihjYWxsYmFja3MsIHZlcnNpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnlCYWNrZW5kSW1wbC5oCmluZGV4IGNhMWQwNTI4MmE4YzVlZGY3NjZkNWU1NTUwOGZh
ZTBhOWMwNDhjNjUuLmQyNmY3NDY4MzQyYWE2YTE4ZGZjZGU5YmYxNzQzNjQyMjhlMTA2ZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNr
ZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rv
cnlCYWNrZW5kSW1wbC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjZGVmaW5lIElEQkZhY3RvcnlCYWNr
ZW5kSW1wbF9oCiAKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIgotI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTU3LDcgKzU2LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5nJiBmaWxl
SWRlbnRpZmllcik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKLSAgICB2aXJ0dWFsIHZvaWQg
b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmIGRhdGFEaXIpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwg
aW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRh
RGlyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1l
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKIAogcHJvdGVj
dGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggNDRmNWM3ODZlZjIxZWE0NzE5ZjYz
Njk0MjlmNzY3MzkwMDQwOTI5My4uNGVhNWQ4YTMzMGZkMDQxYWY1MWNiMmE5NTQ0ZWE0OGFjZjY2
NmZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oCkBAIC01NCw3ICs1NCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSgpIHsgfQogCiAgICAg
dmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYgZGF0YURpcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJz
aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgPSAwOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFj
a2luZ1N0b3JlLmNwcAppbmRleCAzMmUyZjY4MTU3OTQwOWEwOTA4ZDI5YTE4NzJjMGNkYzU2Yjg5
ZWY5Li5mODlmZWU1NTZlZjBmZjc5YTBhNTcwODNkMTlkNGY4YTExNzU5MjA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFj
a2luZ1N0b3JlLmNwcApAQCAtODcsNiArODcsMTIgQEAgc3RhdGljIGJvb2wgcHV0SW50KERCT3JU
cmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5LCBpbnQ2NF90IHZhbHVlKQog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgorc3RhdGljIGJvb2wgcHV0
VmFySW50KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5LCBpbnQ2
NF90IHZhbHVlKQoreworICAgIHJldHVybiBkYi0+cHV0KGtleSwgZW5jb2RlVmFySW50KHZhbHVl
KSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBEQk9yVHJhbnNhY3Rpb24+CiBzdGF0aWMgYm9v
bCBnZXRTdHJpbmcoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgVmVjdG9yPGNoYXI+JiBrZXks
IFN0cmluZyYgZm91bmRTdHJpbmcpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJlc3VsdDsKQEAgLTEy
OSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBuYW1lKCkgY29u
c3QgeyByZXR1cm4gImlkYl9jbXAxIjsgfQogfTsKIAotc3RhdGljIGJvb2wgc2V0VXBNZXRhZGF0
YShMZXZlbERCRGF0YWJhc2UqIGRiKQorc3RhdGljIGJvb2wgc2V0VXBNZXRhZGF0YShMZXZlbERC
RGF0YWJhc2UqIGRiLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKIHsKICAgICBjb25zdCBWZWN0b3I8
Y2hhcj4gbWV0YURhdGFLZXkgPSBTY2hlbWFWZXJzaW9uS2V5OjplbmNvZGUoKTsKIApAQCAtMjA4
LDcgKzIxNCw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpvcGVuKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0CiAgICAgUmVmUHRyPElEQkxldmVs
REJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZShhZG9wdFJlZihuZXcgSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZShmaWxlSWRlbnRpZmllciwgZmFjdG9yeSwgZGIucmVsZWFzZSgpKSkpOwogICAgIGJh
Y2tpbmdTdG9yZS0+bV9jb21wYXJhdG9yID0gY29tcGFyYXRvci5yZWxlYXNlKCk7CiAKLSAgICBp
ZiAoIXNldFVwTWV0YWRhdGEoYmFja2luZ1N0b3JlLT5tX2RiLmdldCgpKSkKKyAgICBpZiAoIXNl
dFVwTWV0YWRhdGEoYmFja2luZ1N0b3JlLT5tX2RiLmdldCgpLCBmaWxlSWRlbnRpZmllcikpCiAg
ICAgICAgIHJldHVybiBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4oKTsKIAogICAgIHJldHVy
biBiYWNraW5nU3RvcmUucmVsZWFzZSgpOwpAQCAtMjM0LDcgKzI0MCw3IEBAIHZvaWQgSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0RGF0YWJhc2VOYW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91bmRO
YW1lcykKICAgICB9CiB9CiAKLWJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SURCRGF0
YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRWZXJzaW9uLCBp
bnQ2NF90JiBmb3VuZElkKQorYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRh
YmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiBmb3VuZFN0cmluZ1ZlcnNp
b24sIGludDY0X3QmIGZvdW5kSW50VmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCkKIHsKICAgICBj
b25zdCBWZWN0b3I8Y2hhcj4ga2V5ID0gRGF0YWJhc2VOYW1lS2V5OjplbmNvZGUobV9pZGVudGlm
aWVyLCBuYW1lKTsKIApAQCAtMjQyLDEwICsyNDgsMTYgQEAgYm9vbCBJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5n
JgogICAgIGlmICghb2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG9rID0gZ2V0U3Ry
aW5nKG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShmb3VuZElkLCBEYXRh
YmFzZU1ldGFEYXRhS2V5OjpVc2VyVmVyc2lvbiksIGZvdW5kVmVyc2lvbik7CisgICAgb2sgPSBn
ZXRTdHJpbmcobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKGZvdW5kSWQs
IERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgZm91bmRTdHJpbmdWZXJzaW9uKTsK
ICAgICBpZiAoIW9rKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBvayA9IGdldEludCht
X2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoZm91bmRJZCwgRGF0YWJhc2VN
ZXRhRGF0YUtleTo6VXNlckludFZlcnNpb24pLCBmb3VuZEludFZlcnNpb24pOworICAgIGlmICgh
b2spCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZm91bmRJbnRWZXJzaW9uID09IElE
QkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uKQorICAgICAgZm91bmRJbnRWZXJz
aW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uOworCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTI2NCw3ICsyNzYsNyBAQCBzdGF0aWMgaW50NjRfdCBnZXROZXdEYXRhYmFz
ZUlkKExldmVsREJEYXRhYmFzZSogZGIpCiAgICAgcmV0dXJuIGRhdGFiYXNlSWQ7CiB9CiAKLWJv
b2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgaW50NjRfdCYgcm93SWQpCiti
b29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3QgaW50VmVyc2lv
biwgaW50NjRfdCYgcm93SWQpCiB7CiAgICAgcm93SWQgPSBnZXROZXdEYXRhYmFzZUlkKG1fZGIu
Z2V0KCkpOwogICAgIGlmIChyb3dJZCA8IDApCkBAIC0yNzUsNiArMjg3LDE5IEBAIGJvb2wgSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIXB1dFN0cmlu
ZyhtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUocm93SWQsIERhdGFiYXNl
TWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgdmVyc2lvbikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoaW50VmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNp
b24pCisgICAgICBpbnRWZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6RGVmYXVsdEludFZl
cnNpb247CisgICAgaWYgKCFwdXRWYXJJbnQobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtl
eTo6ZW5jb2RlKHJvd0lkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VySW50VmVyc2lvbiksIGlu
dFZlcnNpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9u
KGludDY0X3Qgcm93SWQsIGludDY0X3QgaW50VmVyc2lvbikKK3sKKyAgICBBU1NFUlQobV9jdXJy
ZW50VHJhbnNhY3Rpb24pOworICAgIGlmICghcHV0VmFySW50KG1fY3VycmVudFRyYW5zYWN0aW9u
LmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUocm93SWQsIERhdGFiYXNlTWV0YURh
dGFLZXk6OlVzZXJJbnRWZXJzaW9uKSwgaW50VmVyc2lvbikpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMDUsNyArMzMwLDggQEAgYm9vbCBJREJM
ZXZlbERCQmFja2luZ1N0b3JlOjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpCiAK
ICAgICBpbnQ2NF90IGRhdGFiYXNlSWQ7CiAgICAgU3RyaW5nIHZlcnNpb247Ci0gICAgaWYgKCFn
ZXRJREJEYXRhYmFzZU1ldGFEYXRhKG5hbWUsIHZlcnNpb24sIGRhdGFiYXNlSWQpKSB7CisgICAg
aW50NjRfdCBpbnRWZXJzaW9uOworICAgIGlmICghZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShuYW1l
LCB2ZXJzaW9uLCBpbnRWZXJzaW9uLCBkYXRhYmFzZUlkKSkgewogICAgICAgICB0cmFuc2FjdGlv
bi0+cm9sbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZS5oCmluZGV4IGM1YTllMmVlMzA5ZThjYTNmZDdmNzBmMGFhMmJiODBjZWMwNDZiMmUuLjY3M2Nh
OWMxNWFlM2M2ZGFkNDU5N2UxNzRkYjI3ZWVhNjFlZDlmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgK
QEAgLTQ1LDkgKzQ1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJMZXZlbERCQmFja2lu
Z1N0b3JlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhWZWN0b3I8U3Ry
aW5nPiYgZm91bmROYW1lcyk7Ci0gICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURh
dGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91
bmRJZCk7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3QmIHJvd0lkKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUs
IFN0cmluZyYgZm91bmRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZEludFZlcnNpb24sIGludDY0X3Qm
IGZvdW5kSWQpOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90IGludFZlcnNp
b24sIGludDY0X3QmIHJvd0lkKTsKICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VN
ZXRhRGF0YShpbnQ2NF90IHJvd0lkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOworICAgIHZpcnR1
YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24oaW50NjRfdCByb3dJZCwgaW50NjRf
dCBpbnRWZXJzaW9uKTsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3Ry
aW5nJiBuYW1lKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBk
YXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91
bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4m
IGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaAppbmRleCAzMTEzZTdkOGE5ODgyYmQ3ZDhl
Nzc5Y2FkYWE5N2VkODIxYzVhOGU4Li4zZmNkYzQ2ZDM3MjM3ZGRiYzMxMDZjZDEwMWQxMzVlNDY3
MjE4YjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
TGV2ZWxEQkNvZGluZy5oCkBAIC0xNDAsNyArMTQwLDggQEAgcHVibGljOgogICAgICAgICBPcmln
aW5OYW1lID0gMCwKICAgICAgICAgRGF0YWJhc2VOYW1lID0gMSwKICAgICAgICAgVXNlclZlcnNp
b24gPSAyLAotICAgICAgICBNYXhPYmplY3RTdG9yZUlkID0gMworICAgICAgICBNYXhPYmplY3RT
dG9yZUlkID0gMywKKyAgICAgICAgVXNlckludFZlcnNpb24gPSA0CiAgICAgfTsKIAogICAgIHN0
YXRpYyBWZWN0b3I8Y2hhcj4gZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgTWV0YURhdGFUeXBl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFk
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oCmlu
ZGV4IGRkMjMwNjIwYzdjMWZiMDExYjNmOTk0MTBiYzgyZTdlNmE4ZjUzYmUuLmUzZjBlYzNmYjEx
OGI1OWFkNzE1NTU2NGQ4YjFlNDUxNzMzODY1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaApAQCAtNDMsNyArNDMsOCBAQCBzdHJ1Y3QgSURC
SW5kZXhNZXRhZGF0YTsKIAogc3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGEgewogICAgIGVudW0g
ewotICAgICAgICBOb0ludFZlcnNpb24gPSAtMQorICAgICAgICBOb0ludFZlcnNpb24gPSAtMSwK
KyAgICAgICAgRGVmYXVsdEludFZlcnNpb24gPSAwCiAgICAgfTsKIAogICAgIElEQkRhdGFiYXNl
TWV0YWRhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT3BlbkRCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPcGVuREJSZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Y2MxNWVmMWEyMmViNTA5MmUxMTI2ZGMz
NzAyOTMxNTA3OWEwMGFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJPcGVuREJSZXF1ZXN0LmgiCisKKyNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCisj
aW5jbHVkZSAiSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oIgorI2luY2x1ZGUgIklEQlVw
Z3JhZGVOZWVkZWRFdmVudC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElE
Qk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBpbnQ2NF90IHZlcnNpb24pCit7CisgICAgUmVmUHRy
PElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVlc3QoYWRvcHRSZWYobmV3IElEQk9wZW5EQlJlcXVlc3Qo
Y29udGV4dCwgc291cmNlLCB2ZXJzaW9uKSkpOworICAgIHJlcXVlc3QtPnN1c3BlbmRJZk5lZWRl
ZCgpOworICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKK30KKworSURCT3BlbkRCUmVxdWVz
dDo6SURCT3BlbkRCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPElEQkFueT4gc291cmNlLCBpbnQ2NF90IHZlcnNpb24pCisgICAgOiBJREJSZXF1ZXN0
KGNvbnRleHQsIHNvdXJjZSwgMCkKKyAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQoreworICAgIEFT
U0VSVCghbV9yZXN1bHQpOworfQorCitJREJPcGVuREJSZXF1ZXN0Ojp+SURCT3BlbkRCUmVxdWVz
dCgpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgSURCT3BlbkRCUmVxdWVzdDo6aW50ZXJm
YWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JJ
REJPcGVuREJSZXF1ZXN0OworfQorCit2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uQmxvY2tlZChp
bnQ2NF90IG9sZFZlcnNpb24pCit7CisgICAgQVNTRVJUKCFtX2Vycm9yQ29kZSAmJiBtX2Vycm9y
TWVzc2FnZS5pc051bGwoKSAmJiAhbV9yZXN1bHQpOworICAgIGVucXVldWVFdmVudChJREJVcGdy
YWRlTmVlZGVkRXZlbnQ6OmNyZWF0ZShvbGRWZXJzaW9uLCBtX3ZlcnNpb24sIGV2ZW50TmFtZXMo
KS5ibG9ja2VkRXZlbnQpKTsKK30KKwordm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3JhZGVO
ZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4gcHJwVHJhbnNhY3Rpb25CYWNrZW5kLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZT4gcHJwRGF0YWJhc2VCYWNrZW5kKQoreworICAgIEFTU0VSVCghbV9l
cnJvckNvZGUpOworICAgIEFTU0VSVChtX2Vycm9yTWVzc2FnZS5pc051bGwoKSk7CisgICAgQVNT
RVJUKCFtX2Vycm9yKTsKKy8vICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1fcmVzdWx0LCAiaW4g
b2JqZWN0ICVwIiwgdGhpcyk7CisgICAgaWYgKG1fY29udGV4dFN0b3BwZWQgfHwgIXNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2VCYWNrZW5kID0gcHJwRGF0YWJhc2VCYWNrZW5k
OworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9u
QmFja2VuZCA9IHBycFRyYW5zYWN0aW9uQmFja2VuZDsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2U+
IGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIGRhdGFiYXNlQmFja2VuZCk7CisKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGZyb250
ZW5kID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRy
YW5zYWN0aW9uQmFja2VuZCwgSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFLCBpZGJEYXRh
YmFzZS5nZXQoKSwgdGhpcyk7CisgICAgdHJhbnNhY3Rpb25CYWNrZW5kLT5zZXRDYWxsYmFja3Mo
ZnJvbnRlbmQuZ2V0KCkpOworICAgIG1fdHJhbnNhY3Rpb24gPSBmcm9udGVuZDsKKyAgICBtX3Jl
c3VsdCA9IElEQkFueTo6Y3JlYXRlKGlkYkRhdGFiYXNlLnJlbGVhc2UoKSk7CisKKyAgICBpZiAo
b2xkVmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pIHsKKyAgICAg
IC8vIFRoZSBvcGVuIGNhbGwgdGhhdCBjcmVhdGVkIHRoaXMgSURCT3BlbkRCUmVxdWVzdCB3YXMg
dGhlIGZpcnN0IGludGVnZXIKKyAgICAgIC8vIHZlcnNpb24gdGhhdCB0aGlzIGRhdGFiYXNlIGhh
ZC4KKyAgICAgIG9sZFZlcnNpb24gPSBJREJEYXRhYmFzZU1ldGFkYXRhOjpEZWZhdWx0SW50VmVy
c2lvbjsKKyAgICB9CisgICAgZW5xdWV1ZUV2ZW50KElEQlVwZ3JhZGVOZWVkZWRFdmVudDo6Y3Jl
YXRlKG9sZFZlcnNpb24sIG1fdmVyc2lvbiwgZXZlbnROYW1lcygpLnVwZ3JhZGVuZWVkZWRFdmVu
dCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmVjNWI4YmNjNjc3MzAzNWE0MTVjYzk0ZjFhMjUzYTRmYjE4NDUxZDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0
LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCT3BlbkRCUmVxdWVzdF9oCisj
ZGVmaW5lIElEQk9wZW5EQlJlcXVlc3RfaAorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CisKKyNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgSURCT3BlbkRCUmVxdWVzdCA6IHB1YmxpYyBJREJSZXF1ZXN0IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGludDY0X3QgdmVyc2lvbik7Cisg
ICAgdmlydHVhbCB+SURCT3BlbkRCUmVxdWVzdCgpOworCisgICAgdmlydHVhbCB2b2lkIG9uQmxv
Y2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IG9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U+KSBPVkVSUklERTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKworICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIoYmxvY2tlZCk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUih1cGdyYWRlbmVlZGVkKTsKKworcHJpdmF0ZToKKyAgICBJREJPcGVuREJSZXF1
ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBp
bnQ2NF90IHZlcnNpb24pOworCisgICAgdmlydHVhbCBib29sIGlzT3BlbkRCUmVxdWVzdCgpIGNv
bnN0IE9WRVJSSURFCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBp
bnQ2NF90IG1fdmVyc2lvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjZW5kaWYgLy8gSURCT3BlbkRCUmVxdWVz
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVu
REJSZXF1ZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5E
QlJlcXVlc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyNjZjNzM1OWEwYTY1ZTY5NWIwODQ1ZGU1ZjUzNTgz
YTZjZDgyOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmlkbApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxl
IHN0b3JhZ2UgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9SU5ERVhF
RF9EQVRBQkFTRSwKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0LAorICAgICAgICBFdmVudFRhcmdl
dAorICAgIF0gSURCT3BlbkRCUmVxdWVzdCA6IElEQlJlcXVlc3QgeworICAgICAgICBhdHRyaWJ1
dGUgRXZlbnRMaXN0ZW5lciBvbmJsb2NrZWQ7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3Rl
bmVyIG9udXBncmFkZW5lZWRlZDsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCA3ZGQzMGU5Y2ZmNWRiMDI2Mjg3Y2Nj
MGI0MWY2MWIwYWE5Zjk4ODE5Li40ZGVlOTc4NTE5NDU3ZTE5OTNjMmY4ODI0NzdjZjVhYTdmYjVi
Mjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0
LmNwcApAQCAtNTMsMTMgKzUzLDE0IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCUmVxdWVz
dDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSCiAKIElEQlJl
cXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1Jl
ZlB0cjxJREJBbnk+IHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAgIDog
QWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX3Jlc3VsdCgwKQogICAgICwg
bV9lcnJvckNvZGUoMCkKLSAgICAsIG1fc291cmNlKHNvdXJjZSkKKyAgICAsIG1fY29udGV4dFN0
b3BwZWQoZmFsc2UpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQorICAgICwgbV9z
b3VyY2Uoc291cmNlKQogICAgICwgbV9yZWFkeVN0YXRlKFBFTkRJTkcpCiAgICAgLCBtX3JlcXVl
c3RBYm9ydGVkKGZhbHNlKQogICAgICwgbV9jdXJzb3JGaW5pc2hlZChmYWxzZSkKLSAgICAsIG1f
Y29udGV4dFN0b3BwZWQoZmFsc2UpCiAgICAgLCBtX2N1cnNvclR5cGUoSURCQ3Vyc29yQmFja2Vu
ZEludGVyZmFjZTo6SW52YWxpZEN1cnNvclR5cGUpCiAgICAgLCBtX2N1cnNvckRpcmVjdGlvbihJ
REJDdXJzb3I6Ok5FWFQpCiAgICAgLCBtX3BlbmRpbmdDdXJzb3IoMCkKQEAgLTI3MywxNSArMjc0
LDIxIEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQogICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gUEVO
RElORyB8fCBtX3JlYWR5U3RhdGUgPT0gRE9ORSk7CiAgICAgaWYgKG1fcmVxdWVzdEFib3J0ZWQp
CiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IFBFTkRJTkcpOwot
ICAgIEFTU0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkgJiYgIW1f
ZXJyb3IgJiYgIW1fcmVzdWx0KTsKKyAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IFBFTkRJTkcg
fHwgaXNPcGVuREJSZXF1ZXN0KCkpOworICAgIEFTU0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJv
ck1lc3NhZ2UuaXNOdWxsKCkgJiYgIW1fZXJyb3IpOwogICAgIGlmIChtX2NvbnRleHRTdG9wcGVk
IHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
ZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UgPSBJREJEYXRhYmFzZTo6Y3JlYXRlKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgYmFja2VuZCk7Ci0gICAgaWRiRGF0YWJhc2UtPnJlZ2lzdGVy
RnJvbnRlbmRDYWxsYmFja3MoKTsKLQotICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVhdGUoaWRi
RGF0YWJhc2UucmVsZWFzZSgpKTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNl
OworICAgIGlmIChtX3Jlc3VsdCkgeworICAgICAgICBpZGJEYXRhYmFzZSA9IG1fcmVzdWx0LT5p
ZGJEYXRhYmFzZSgpOworICAgICAgICBBU1NFUlQoaWRiRGF0YWJhc2UpOworICAgICAgICBpZGJE
YXRhYmFzZS0+cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcygpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIGJhY2tlbmQpOworICAgICAgICBpZGJEYXRhYmFzZS0+cmVnaXN0ZXJGcm9udGVuZENh
bGxiYWNrcygpOworICAgICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGlkYkRhdGFiYXNl
LnJlbGVhc2UoKSk7CisgICAgfQogICAgIGVucXVldWVFdmVudChjcmVhdGVTdWNjZXNzRXZlbnQo
KSk7CiB9CiAKQEAgLTQwOCwxMyArNDE1LDEyIEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIElE
QlJlcXVlc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogYm9vbCBJREJSZXF1ZXN0
OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAgIElEQl9UUkFD
RSgiSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCIpOwotICAgIEFTU0VSVChtX3JlYWR5U3RhdGUg
PT0gUEVORElORyk7CisgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBQRU5ESU5HIHx8IGlzT3Bl
bkRCUmVxdWVzdCgpKTsKICAgICBBU1NFUlQoIW1fY29udGV4dFN0b3BwZWQpOwogICAgIEFTU0VS
VChtX2VucXVldWVkRXZlbnRzLnNpemUoKSk7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSk7CiAgICAgQVNTRVJUKGV2ZW50LT50YXJnZXQoKSA9PSB0aGlzKTsKLSAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKG1fcmVhZHlTdGF0ZSA8IERPTkUsICJtX3JlYWR5U3RhdGUgPCBET05F
KCVkKSwgd2FzICVkIiwgRE9ORSwgbV9yZWFkeVN0YXRlKTsKLQorICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UobV9yZWFkeVN0YXRlIDwgRE9ORSB8fCBpc09wZW5EQlJlcXVlc3QoKSwgIldoZW4gZGlz
cGF0Y2hpbmcgZXZlbnQgJXMsIG1fcmVhZHlTdGF0ZSA8IERPTkUoJWQpLCB3YXMgJWQiLCBldmVu
dC0+dHlwZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIERPTkUsIG1fcmVhZHlTdGF0ZSk7CiAg
ICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCkKICAgICAg
ICAgbV9yZWFkeVN0YXRlID0gRE9ORTsKIApAQCAtNDQzLDExICs0NDksMTIgQEAgYm9vbCBJREJS
ZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgIH0KIAog
ICAgIC8vIEZJWE1FOiBXaGVuIHdlIGFsbG93IGN1c3RvbSBldmVudCBkaXNwYXRjaGluZywgdGhp
cyB3aWxsIHByb2JhYmx5IG5lZWQgdG8gY2hhbmdlLgotICAgIEFTU0VSVChldmVudC0+dHlwZSgp
ID09IGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkuZXJyb3JFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibG9ja2Vk
RXZlbnQpOwotICAgIGNvbnN0IGJvb2wgc2V0VHJhbnNhY3Rpb25BY3RpdmUgPSBtX3RyYW5zYWN0
aW9uICYmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQgfHwgKGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgJiYgbV9lcnJvckNvZGUgIT0g
SURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKKyAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCB8fCBldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS51cGdyYWRlbmVlZGVkRXZlbnQsICJldmVudCB0eXBlIHdhcyAlcyIsIGV2ZW50LT50eXBlKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgY29uc3QgYm9vbCBzZXRUcmFuc2FjdGlvbkFj
dGl2ZSA9IG1fdHJhbnNhY3Rpb24gJiYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnN1
Y2Nlc3NFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS51cGdyYWRlbmVlZGVk
RXZlbnQgfHwgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgJiYgbV9l
cnJvckNvZGUgIT0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKIAogICAg
IGlmIChzZXRUcmFuc2FjdGlvbkFjdGl2ZSkKICAgICAgICAgbV90cmFuc2FjdGlvbi0+c2V0QWN0
aXZlKHRydWUpOworCiAgICAgYm9vbCBkb250UHJldmVudERlZmF1bHQgPSBJREJFdmVudERpc3Bh
dGNoZXI6OmRpc3BhdGNoKGV2ZW50LmdldCgpLCB0YXJnZXRzKTsKICAgICBpZiAoc2V0VHJhbnNh
Y3Rpb25BY3RpdmUpCiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPnNldEFjdGl2ZShmYWxzZSk7CkBA
IC00ODEsNiArNDg4LDEyIEBAIHZvaWQgSURCUmVxdWVzdDo6dW5jYXVnaHRFeGNlcHRpb25JbkV2
ZW50SGFuZGxlcigpCiAgICAgfQogfQogCit2b2lkIElEQlJlcXVlc3Q6OmNsZWFyVHJhbnNhY3Rp
b25Qcm9wZXJ0eSgpCit7CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5n
ZSgpKTsKKyAgICBtX3RyYW5zYWN0aW9uLmNsZWFyKCk7Cit9CisKIHZvaWQgSURCUmVxdWVzdDo6
ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAgIEFTU0VSVChtX3Jl
YWR5U3RhdGUgPT0gUEVORElORyB8fCBtX3JlYWR5U3RhdGUgPT0gRE9ORSk7CkBAIC00ODgsNyAr
NTAxLDcgQEAgdm9pZCBJREJSZXF1ZXN0OjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4g
ZXZlbnQpCiAgICAgaWYgKG1fY29udGV4dFN0b3BwZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBQRU5E
SU5HKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcmVhZHlTdGF0ZSA9PSBQRU5ESU5HIHx8
IGlzT3BlbkRCUmVxdWVzdCgpLCAiV2hlbiBxdWV1ZWluZyBldmVudCAlcywgbV9yZWFkeVN0YXRl
IHdhcyAlZCIsIGV2ZW50LT50eXBlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbV9yZWFkeVN0
YXRlKTsKIAogICAgIEV2ZW50UXVldWUqIGV2ZW50UXVldWUgPSBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmV2ZW50UXVldWUoKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmluZGV4IGE4MDRjMmJk
NWViMWI3MzFhNTE5NzU1ODY4OWFkYjZhNjVlYWJjM2UuLjY3ZGY0ZmJkMjJmN2JjNmFmNmY0NTZh
MDAzZWNmZjk2YWRkYjYzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJSZXF1ZXN0LmgKQEAgLTkxLDYgKzkxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCk7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
c1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+ID4mKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IC8vIE5vdCBpbXBsZW1lbnRlZC4g
Q2FsbGJhY2sgc2hvdWxkIG5vdCByZWFjaCB0aGUgcmVuZGVyZXIgc2lkZS4KICAgICB2aXJ0dWFs
IHZvaWQgb25CbG9ja2VkKCk7CisgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4
aXN0aW5nVmVyc2lvbikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgLy8gQWN0aXZl
RE9NT2JqZWN0CiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IE9W
RVJSSURFOwpAQCAtMTAzLDYgKzEwNCw4IEBAIHB1YmxpYzoKICAgICBib29sIGRpc3BhdGNoRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBF
dmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOyB9CiAgICAgdmlydHVhbCB2b2lk
IHVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKTsKIAorICAgIHZvaWQgY2xlYXJUcmFu
c2FjdGlvblByb3BlcnR5KCk7CisKICAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJD
YWxsYmFja3M+OjpyZWY7CiAgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SURCQ2FsbGJh
Y2tzPjo6ZGVyZWY7CiAKQEAgLTExMyw2ICsxMTYsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdW5zaWdu
ZWQgc2hvcnQgbV9lcnJvckNvZGU7CiAgICAgU3RyaW5nIG1fZXJyb3JNZXNzYWdlOwogICAgIFJl
ZlB0cjxET01FcnJvcj4gbV9lcnJvcjsKKyAgICBib29sIG1fY29udGV4dFN0b3BwZWQ7CisgICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwogCiBwcml2YXRlOgogICAgIC8v
IEV2ZW50VGFyZ2V0CkBAIC0xMjMsMTQgKzEyOCwxNiBAQCBwcml2YXRlOgogCiAgICAgUGFzc1Jl
ZlB0cjxJREJDdXJzb3I+IGdldFJlc3VsdEN1cnNvcigpOwogICAgIHZvaWQgc2V0UmVzdWx0Q3Vy
c29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPik7CisgICAgdmlydHVhbCBib29sIGlzT3BlbkRCUmVx
dWVzdCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAgICAg
UmVmUHRyPElEQkFueT4gbV9zb3VyY2U7Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3Ry
YW5zYWN0aW9uOwogCiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAgICAgYm9vbCBtX3Jl
cXVlc3RBYm9ydGVkOyAvLyBNYXkgYmUgYWJvcnRlZCBieSB0cmFuc2FjdGlvbiB0aGVuIHJlY2Vp
dmUgYXN5bmMgb25zdWNjZXNzOyBpZ25vcmUgdnMuIGFzc2VydC4KICAgICBib29sIG1fY3Vyc29y
RmluaXNoZWQ7Ci0gICAgYm9vbCBtX2NvbnRleHRTdG9wcGVkOwogICAgIFZlY3RvcjxSZWZQdHI8
RXZlbnQ+ID4gbV9lbnF1ZXVlZEV2ZW50czsKIAogICAgIC8vIE9ubHkgdXNlZCBpZiB0aGUgcmVz
dWx0IHR5cGUgd2lsbCBiZSBhIGN1cnNvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA3NjEyMzQ3MDE0MTgzYzlkYTYx
ZThkYmFmZTY1ZmEzODU5OTkzNDdlLi40Nzk2YjE0MTFmN2E0NGQzZWRiN2QyZTQxNmY0NjQwYWFm
MmI0OTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSURCSW5kZXguaCIK
ICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQk9wZW5EQlJlcXVlc3QuaCIKICNpbmNsdWRl
ICJJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgiCiAjaW5jbHVkZSAiSURCVHJhY2luZy5o
IgogCkBAIC00Myw3ICs0NCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb24+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
IGJhY2tlbmQsIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUsIElEQkRhdGFiYXNlKiBkYikKIHsK
LSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFkb3B0UmVmKG5ldyBJREJU
cmFuc2FjdGlvbihjb250ZXh0LCBiYWNrZW5kLCBtb2RlLCBkYikpKTsKKyAgICBJREJPcGVuREJS
ZXF1ZXN0KiBvcGVuREJSZXF1ZXN0ID0gMDsKKyAgICByZXR1cm4gY3JlYXRlKGNvbnRleHQsIGJh
Y2tlbmQsIG1vZGUsIGRiLCBvcGVuREJSZXF1ZXN0KTsKK30KKworUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2Vu
ZCwgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiLCBJREJPcGVuREJS
ZXF1ZXN0KiBvcGVuREJSZXF1ZXN0KQoreworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJh
bnNhY3Rpb24oYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uKGNvbnRleHQsIGJhY2tlbmQsIG1v
ZGUsIGRiLCBvcGVuREJSZXF1ZXN0KSkpOwogICAgIHRyYW5zYWN0aW9uLT5zdXNwZW5kSWZOZWVk
ZWQoKTsKICAgICByZXR1cm4gdHJhbnNhY3Rpb24ucmVsZWFzZSgpOwogfQpAQCAtNzksMTAgKzg2
LDExIEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkV3JpdGVM
ZWdhY3koKQogfQogCiAKLUlEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4gYmFja2VuZCwgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2Uq
IGRiKQorSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBi
YWNrZW5kLCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBJREJEYXRhYmFzZSogZGIsIElEQk9w
ZW5EQlJlcXVlc3QqIG9wZW5EQlJlcXVlc3QpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4
dCwgdGhpcykKICAgICAsIG1fYmFja2VuZChiYWNrZW5kKQogICAgICwgbV9kYXRhYmFzZShkYikK
KyAgICAsIG1fb3BlbkRCUmVxdWVzdChvcGVuREJSZXF1ZXN0KQogICAgICwgbV9tb2RlKG1vZGUp
CiAgICAgLCBtX2FjdGl2ZSh0cnVlKQogICAgICwgbV9zdGF0ZShVbnVzZWQpCkBAIC0xODIsNyAr
MTkwLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVEZWxldGVkKGNvbnN0IFN0
cmluZyYgbmFtZSkKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6c2V0QWN0aXZlKGJvb2wgYWN0aXZl
KQogewotICAgIEFTU0VSVChtX3N0YXRlICE9IEZpbmlzaGVkKTsKKyAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKG1fc3RhdGUgIT0gRmluaXNoZWQsICJBIGZpbmlzaGVkIHRyYW5zYWN0aW9uIHRyaWVk
IHRvIHNldEFjdGl2ZSglcykgaW4gJXAiLCBhY3RpdmUgPyAidHJ1ZSIgOiAiZmFsc2UiLCB0aGlz
KTsKICAgICBpZiAobV9zdGF0ZSA9PSBGaW5pc2hpbmcpCiAgICAgICAgIHJldHVybjsKICAgICBB
U1NFUlQobV9zdGF0ZSA9PSBVbnVzZWQgfHwgbV9zdGF0ZSA9PSBVc2VkKTsKQEAgLTM3NSw3ICsz
ODMsMTIgQEAgYm9vbCBJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2
ZW50PiBldmVudCkKIAogICAgIC8vIEZJWE1FOiBXaGVuIHdlIGFsbG93IGN1c3RvbSBldmVudCBk
aXNwYXRjaGluZywgdGhpcyB3aWxsIHByb2JhYmx5IG5lZWQgdG8gY2hhbmdlLgogICAgIEFTU0VS
VChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jb21wbGV0ZUV2ZW50IHx8IGV2ZW50LT50
eXBlKCkgPT0gZXZlbnROYW1lcygpLmFib3J0RXZlbnQpOwotICAgIHJldHVybiBJREJFdmVudERp
c3BhdGNoZXI6OmRpc3BhdGNoKGV2ZW50LmdldCgpLCB0YXJnZXRzKTsKKyAgICBib29sIHJldHVy
blZhbHVlID0gSURCRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaChldmVudC5nZXQoKSwgdGFyZ2V0
cyk7CisgICAgLy8gRklYTUU6IFRyeSB0byBjb25zdHJ1Y3QgYSB0ZXN0IHdoZXJlIHx0aGlzfCBv
dXRsaXZlcyBvcGVuREJSZXF1ZXN0IGFuZCB3ZQorICAgIC8vIGdldCBhIGNyYXNoLgorICAgIGlm
IChtX29wZW5EQlJlcXVlc3QpCisgICAgICAgIG1fb3BlbkRCUmVxdWVzdC0+Y2xlYXJUcmFuc2Fj
dGlvblByb3BlcnR5KCk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBib29sIElEQlRy
YW5zYWN0aW9uOjpjYW5TdXNwZW5kKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IDFmN2FmN2RhZDFiZTk0OGY2YjQx
OTU3Zjc5ZTVmNjg3NDJiOTlhZjAuLjAwNWUzNzM2MzBhNGQyZmYyZWJhZmQ4MWVlMzZlYTBjOTg5
YTkyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uaApAQCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJ
REJDdXJzb3I7CiBjbGFzcyBJREJEYXRhYmFzZTsKIGNsYXNzIElEQk9iamVjdFN0b3JlOworY2xh
c3MgSURCT3BlbkRCUmVxdWVzdDsKIAogY2xhc3MgSURCVHJhbnNhY3Rpb24gOiBwdWJsaWMgSURC
VHJhbnNhY3Rpb25DYWxsYmFja3MsIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURP
TU9iamVjdCB7CiBwdWJsaWM6CkBAIC01Niw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBN
b2RlLCBJREJEYXRhYmFzZSopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPiwgTW9kZSwgSURCRGF0YWJhc2UqLCBJREJPcGVuREJSZXF1ZXN0
Kik7CiAgICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb24oKTsKIAogICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIG1vZGVSZWFkT25seSgpOwpAQCAtMTE5LDcgKzEyMSw3IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBSZWZDb3VudGVkPElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPjo6ZGVyZWY7CiAK
IHByaXZhdGU6Ci0gICAgSURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwgTW9kZSwgSURCRGF0YWJh
c2UqKTsKKyAgICBJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBNb2RlLCBJREJEYXRhYmFzZSos
IElEQk9wZW5EQlJlcXVlc3QqKTsKIAogICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8
RXZlbnQ+KTsKICAgICB2b2lkIGNsb3NlT3BlbkN1cnNvcnMoKTsKQEAgLTE0Miw2ICsxNDQsNyBA
QCBwcml2YXRlOgogCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4g
bV9iYWNrZW5kOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gbV9kYXRhYmFzZTsKKyAgICBJREJP
cGVuREJSZXF1ZXN0KiBtX29wZW5EQlJlcXVlc3Q7CiAgICAgY29uc3QgTW9kZSBtX21vZGU7CiAg
ICAgYm9vbCBtX2FjdGl2ZTsKICAgICBTdGF0ZSBtX3N0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsLmNwcAppbmRleCA3MGYzMzY3YWJmYmMxYTA0YTlmZWNhMWNhYjRlNDMzMGRkNjM3MzQxLi4x
YmJkMjNiNTZiYmEwZjllNmVmMzQ0OTlkZWI4MDZiM2MwODQ3MGVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsLmNwcApAQCAtMjI3LDYgKzIyNyw4IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbDo6Y29tbWl0KCkKICAgICBlbHNlCiAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkFib3J0
KCk7CiAKKyAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVkQW5kRXZlbnRzRmlyZWQo
dGhpcyk7CisKICAgICBtX2RhdGFiYXNlID0gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjEyMDU0NThlNGY0Nzk1OWEzZWM4OTA0YmE1NjA2YzJmMTJkMTlhOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVO
ZWVkZWRFdmVudC5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJJREJVcGdyYWRlTmVlZGVkRXZlbnQuaCIKKworI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIklEQkFu
eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8SURCVXBncmFkZU5lZWRl
ZEV2ZW50PiBJREJVcGdyYWRlTmVlZGVkRXZlbnQ6OmNyZWF0ZShpbnQ2NF90IG9sZFZlcnNpb24s
IGludDY0X3QgbmV3VmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJVcGdyYWRlTmVlZGVkRXZlbnQob2xkVmVyc2lvbiwg
bmV3VmVyc2lvbiwgZXZlbnRUeXBlKSk7Cit9CisKK0lEQlVwZ3JhZGVOZWVkZWRFdmVudDo6SURC
VXBncmFkZU5lZWRlZEV2ZW50KGludDY0X3Qgb2xkVmVyc2lvbiwgaW50NjRfdCBuZXdWZXJzaW9u
LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKKyAgICA6IEV2ZW50KGV2ZW50VHlwZSwg
ZmFsc2UgLypjYW5CdWJibGUqLywgZmFsc2UgLypjYW5jZWxhYmxlKi8pCisgICAgLCBtX29sZFZl
cnNpb24ob2xkVmVyc2lvbikKKyAgICAsIG1fbmV3VmVyc2lvbihuZXdWZXJzaW9uKQoreworfQor
CitJREJVcGdyYWRlTmVlZGVkRXZlbnQ6On5JREJVcGdyYWRlTmVlZGVkRXZlbnQoKQoreworfQor
CitpbnQ2NF90IElEQlVwZ3JhZGVOZWVkZWRFdmVudDo6b2xkVmVyc2lvbigpCit7CisgICAgcmV0
dXJuIG1fb2xkVmVyc2lvbjsKK30KKworaW50NjRfdCBJREJVcGdyYWRlTmVlZGVkRXZlbnQ6Om5l
d1ZlcnNpb24oKQoreworICAgIHJldHVybiBtX25ld1ZlcnNpb247Cit9CisKK2NvbnN0IEF0b21p
Y1N0cmluZyYgSURCVXBncmFkZU5lZWRlZEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvcklEQlVwZ3JhZGVOZWVkZWRFdmVu
dDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODA2NzFkMjQ0OGE3NjEwODEyZmJmNTUwMDljOTYyYWM0YTIwNWU3OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3Jh
ZGVOZWVkZWRFdmVudC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQlVwZ3Jh
ZGVOZWVkZWRFdmVudF9oCisjZGVmaW5lIElEQlVwZ3JhZGVOZWVkZWRFdmVudF9oCisKKyNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAi
SURCTWV0YWRhdGEuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIElEQkFueTsKKworY2xhc3MgSURCVXBncmFkZU5lZWRlZEV2ZW50IDog
cHVibGljIEV2ZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJVcGdyYWRl
TmVlZGVkRXZlbnQ+IGNyZWF0ZShpbnQ2NF90IG9sZFZlcnNpb24gPSBJREJEYXRhYmFzZU1ldGFk
YXRhOjpOb0ludFZlcnNpb24sIGludDY0X3QgbmV3VmVyc2lvbiA9IElEQkRhdGFiYXNlTWV0YWRh
dGE6Ok5vSW50VmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUgPSBBdG9taWNT
dHJpbmcoKSk7CisgICAgdmlydHVhbCB+SURCVXBncmFkZU5lZWRlZEV2ZW50KCk7CisKKyAgICB2
aXJ0dWFsIGludDY0X3Qgb2xkVmVyc2lvbigpOworICAgIHZpcnR1YWwgaW50NjRfdCBuZXdWZXJz
aW9uKCk7CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgp
IGNvbnN0OworCitwcml2YXRlOgorICAgIElEQlVwZ3JhZGVOZWVkZWRFdmVudChpbnQ2NF90IG9s
ZFZlcnNpb24sIGludDY0X3QgbmV3VmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUpOworCisgICAgaW50NjRfdCBtX29sZFZlcnNpb247CisgICAgaW50NjRfdCBtX25ld1ZlcnNp
b247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIElEQlVwZ3JhZGVOZWVkZWRFdmVudF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJVcGdyYWRlTmVlZGVk
RXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5l
ZWRlZEV2ZW50LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzdiMDAwZDQyMmZiNzI3ZDQwMDgyMzY5OGE0MDEx
ZDIyMWQ1N2E5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmlkbApAQCAtMCwwICsxLDM0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
bW9kdWxlIHN0b3JhZ2UgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9
SU5ERVhFRF9EQVRBQkFTRQorICAgIF0gSURCVXBncmFkZU5lZWRlZEV2ZW50IDogRXZlbnQgewor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIG9sZFZlcnNpb247
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcgbmV3VmVyc2lv
bjsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDhiYzgwZjBmY2RlOWI2Y2YxNDRiODk2
MDM0ZWQ4MWU5MjJkOWU3NjMuLjFiY2M5MmQwNDAwYjRhMzVlNzQ0MTAwYzI2MjBhOGIxZWY1ODQz
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTgxMyw4ICs4MTMsMTAgQEAKICAgICAgICAgICAgICdN
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4
ZWRkYi9JREJLZXlSYW5nZS5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT3Bl
bkRCUmVxdWVzdC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVl
c3QuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5p
ZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVu
dC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VF
dmVudC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFu
Z2VSZXF1ZXN0LmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyQ29u
dGV4dEluZGV4ZWREYXRhYmFzZS5pZGwnLApAQCAtMTUwNCw2ICsxNTA2LDggQEAKICAgICAgICAg
ICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5o
JywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2UuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVx
dWVzdC5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVl
c3QuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCUGVuZGluZ1RyYW5zYWN0
aW9uTW9uaXRvci5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlBlbmRp
bmdUcmFuc2FjdGlvbk1vbml0b3IuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5jcHAnLApAQCAtMTUxNyw2ICsxNTIxLDggQEAKICAgICAgICAgICAgICdNb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oJywKICAgICAgICAgICAgICdN
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCcsCiAgICAgICAg
ICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oJywKKyAg
ICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJVcGdyYWRlTmVlZGVkRXZlbnQuY3BwJywK
KyAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJVcGdyYWRlTmVlZGVkRXZlbnQuaCcs
CiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNw
cCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50
LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VSZXF1
ZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCBiMGVmYmU3NjUwOGM4ZWIyNTRk
ZjI5NjJiYmU4OWRjNjI3MTcxNDJkLi5jNTU5ZTg1OTIyNmY3NmVkZWJiNjY0N2ZiZDNmM2QxYjM4
NDcyYzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTExMCw2ICsxMTAsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8odGV4dElucHV0KSBcCiAgICAgbWFjcm8odW5sb2Fk
KSBcCiAgICAgbWFjcm8odXBkYXRlcmVhZHkpIFwKKyAgICBtYWNybyh1cGdyYWRlbmVlZGVkKSBc
CiAgICAgbWFjcm8odmVyc2lvbmNoYW5nZSkgXAogICAgIG1hY3JvKHdlYmtpdHZpc2liaWxpdHlj
aGFuZ2UpIFwKICAgICBtYWNybyh3cml0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbgppbmRl
eCA5YzBhYzU1NThhYWFjMTYwMWU5MzA5MTViMGQ3YjQ3YThkZTY2N2UyLi5mMWU2ZGE3OWRhOTFh
Yjc4MzYzMzYzNDgzOGFiN2I1NzVlMzgxMzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnROYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbgpA
QCAtMzksNiArMzksNyBAQCBTdG9yYWdlRXZlbnQKIFNWR0V2ZW50cyBpbnRlcmZhY2VOYW1lPUV2
ZW50LCBjb25kaXRpb25hbD1TVkcKIFNWR1pvb21FdmVudCBjb25kaXRpb25hbD1TVkcKIFNWR1pv
b21FdmVudHMgaW50ZXJmYWNlTmFtZT1TVkdab29tRXZlbnQsIGNvbmRpdGlvbmFsPVNWRworSURC
VXBncmFkZU5lZWRlZEV2ZW50IGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIElEQlZlcnNp
b25DaGFuZ2VFdmVudCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBUb3VjaEV2ZW50IGNv
bmRpdGlvbmFsPVRPVUNIX0VWRU5UUywgcnVudGltZUNvbmRpdGlvbmFsPXRvdWNoRW5hYmxlZAog
RGV2aWNlTW90aW9uRXZlbnQgY29uZGl0aW9uYWw9REVWSUNFX09SSUVOVEFUSU9OCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCBmZjYwYWFkNGRiNTlmOWNmZTdm
OThhMWFkYzk1ZjdkOTExYzBhYzMyLi5kMTA4YjdiMWFmNTQ0ZGM0YTkyNDk5NDI4NTgxNmNjYWJh
MDJhNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTks
NiArOSw3IEBAIEV2ZW50U291cmNlCiBGaWxlUmVhZGVyIGNvbmRpdGlvbmFsPUJMT0IKIEZpbGVX
cml0ZXIgY29uZGl0aW9uYWw9RklMRV9TWVNURU0KIElEQkRhdGFiYXNlIGNvbmRpdGlvbmFsPUlO
REVYRURfREFUQUJBU0UKK0lEQk9wZW5EQlJlcXVlc3QgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRB
QkFTRQogSURCUmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJREJUcmFuc2Fj
dGlvbiBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJREJWZXJzaW9uQ2hhbmdlUmVxdWVz
dCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCBjNTg0YjFlOWZkM2Vh
ZmE5ZWZlYWM2MWQ0MTY1ZGYzNmM0MmVkOGE3Li42Mzg5OTBlNDYxODE1Y2RkNTQ5Y2M2YmY5YTY1
NDRiZmRiMWQ2ZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTIzNyw3ICsyMzcsNyBAQCBwcml2YXRlOgogdm9p
ZCBFeGVjdXRhYmxlV2l0aERhdGFiYXNlOjpzdGFydChJREJGYWN0b3J5QmFja2VuZEludGVyZmFj
ZSogaWRiRmFjdG9yeSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkKIHsKICAg
ICBSZWZQdHI8T3BlbkRhdGFiYXNlQ2FsbGJhY2s+IGNhbGxiYWNrID0gT3BlbkRhdGFiYXNlQ2Fs
bGJhY2s6OmNyZWF0ZSh0aGlzKTsKLSAgICBpZGJGYWN0b3J5LT5vcGVuKGRhdGFiYXNlTmFtZSwg
Y2FsbGJhY2suZ2V0KCksIHNlY3VyaXR5T3JpZ2luLCBjb250ZXh0LCBTdHJpbmcoKSk7CisgICAg
aWRiRmFjdG9yeS0+b3BlbihkYXRhYmFzZU5hbWUsIElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50
VmVyc2lvbiwgY2FsbGJhY2suZ2V0KCksIHNlY3VyaXR5T3JpZ2luLCBjb250ZXh0LCBTdHJpbmco
KSk7CiB9CiAKIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZT4gdHJhbnNhY3Rpb25Gb3JEYXRhYmFzZShJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UqIGlk
YkRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAppbmRleCA3ZGY4NGQyZmZi
ZTA3OTYxMzU1NjVmYTAyY2Y3ZThlMWFkODIwOTJjLi43YTM0MWY5MDM4NzFhOTc1MjI2NGEyZGEz
Nzk4ZGFkZTVmMmRlMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJDYWxsYmFja3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
Q2FsbGJhY2tzUHJveHkuY3BwCkBAIC0xMjksNiArMTI5LDE2IEBAIHZvaWQgSURCQ2FsbGJhY2tz
UHJveHk6Om9uQmxvY2tlZCgpCiAgICAgbV9jYWxsYmFja3MtPm9uQmxvY2tlZCgpOwogfQogCit2
b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvbkJsb2NrZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24p
Cit7CisgICAgbV9jYWxsYmFja3MtPm9uQmxvY2tlZChleGlzdGluZ1ZlcnNpb24pOworfQorCit2
b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9u
LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24s
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZSkKK3sKKyAg
ICBtX2NhbGxiYWNrcy0+b25VcGdyYWRlTmVlZGVkKG9sZFZlcnNpb24sIG5ldyBXZWJJREJUcmFu
c2FjdGlvbkltcGwodHJhbnNhY3Rpb24pLCBuZXcgV2ViSURCRGF0YWJhc2VJbXBsKGRhdGFiYXNl
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJD
YWxsYmFja3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tz
UHJveHkuaAppbmRleCBkYjMwNTY1NTBiMmIyZTE3ZTJlMzBkZGVmNzllOWRkMjljMjVmZmJkLi43
YWQ0OTEwMjYxM2I5ZTAyOGI5Y2IwYTg5YTM1NDQ2YTc1MjY0NGU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKQEAgLTU2LDYgKzU2LDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCk7CiAg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OklEQktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpJ
REJLZXk+ID4mIHByaW1hcnlLZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzKTsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2Vk
KCk7CisgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbik7
CisgICAgdmlydHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBh
c3NSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKIAogcHJpdmF0ZToK
ICAgICBJREJDYWxsYmFja3NQcm94eShQYXNzT3duUHRyPFdlYklEQkNhbGxiYWNrcz4pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkuY3BwCmluZGV4IDkwMWI1NWU1NGYyYWFmZTA0ZmZmYzIyY2E5NmIzNTMxOGVmOTQ3ODYuLjU2
YWZlNWZiNWQyYjYyZmE0NDQ5OTU0NDY5MzBhMDFkMGJjOTc3OTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKQEAg
LTg3LDYgKzg3LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6ZGVsZXRlT2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGkKIAogdm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRQcm94eTo6c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBBU1NFUlQo
bV93ZWJJREJEYXRhYmFzZSk7CiAgICAgbV93ZWJJREJEYXRhYmFzZS0+c2V0VmVyc2lvbih2ZXJz
aW9uLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBlYyk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQ
cm94eS5jcHAKaW5kZXggODE2ZmFmNmM0ZGU3MGFlNjkyNjkzMGQwZGU1MGUwZWUyZDExNzg1Yi4u
MTVmOTI4ZjM5YWQxZGE2ZjBiZGFhYTk3NmM4YzIwYTFiNTc2NDBmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5j
cHAKQEAgLTQ4LDYgKzQ4LDExIEBAIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6On5JREJEYXRh
YmFzZUNhbGxiYWNrc1Byb3h5KCkKIHsKIH0KIAordm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc1By
b3h5OjpvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBjdXJyZW50VmVyc2lvbiwgaW50NjRfdCByZXF1
ZXN0ZWRWZXJzaW9uKQoreworICAgIG1fY2FsbGJhY2tzLT5vblZlcnNpb25DaGFuZ2UoY3VycmVu
dFZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24pOworfQorCiB2b2lkIElEQkRhdGFiYXNlQ2FsbGJh
Y2tzUHJveHk6Om9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHJlcXVlc3RlZFZlcnNpb24p
CiB7CiAgICAgbV9jYWxsYmFja3MtPm9uVmVyc2lvbkNoYW5nZShyZXF1ZXN0ZWRWZXJzaW9uKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJh
Y2tzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJh
Y2tzUHJveHkuaAppbmRleCBhZmZkY2U3N2Q1ZDk1OGRjMDBlMGY2ZjgwYWNmZmI4MDEyOTU4YjNi
Li40ZWViZjBjY2I4MWFkZDAzZGI1ODljMzlkNWNiMDNhZWEzZDA5Y2Q4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5o
CkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUNhbGxi
YWNrc1Byb3h5KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0
cmluZyYgcmVxdWVzdGVkVmVyc2lvbik7CisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5n
ZShpbnQ2NF90IGN1cnJlbnRWZXJzaW9uLCBpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pOwogCiBw
cml2YXRlOgogICAgIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkoUGFzc093blB0cjxXZWJJREJE
YXRhYmFzZUNhbGxiYWNrcz4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcAppbmRleCBlMmM5YmI5ZTIyYzIwYTU3YmMyZDk4
ZTI1NWI2OGRiM2M1OTk2MDAxLi4yMjEwZGExNjE2NTExNzZkYjVmNDg0NDlhN2YyOGI2ZmNkOTIy
YTBhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFj
a2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5
QmFja2VuZFByb3h5LmNwcApAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tl
bmRQcm94eTo6Z2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2Fs
bGJhCiB9CiAKIAotdm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpvcGVuKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZGF0YURpcikKK3ZvaWQgSURCRmFjdG9yeUJhY2tlbmRQ
cm94eTo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
c2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgZGF0YURpcikKIHsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MocHJw
Q2FsbGJhY2tzKTsKICAgICBXZWJTZWN1cml0eU9yaWdpbiBvcmlnaW4oc2VjdXJpdHlPcmlnaW4p
OwpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6b3Blbihj
b25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBnZXRXZWJGcmFtZShjb250ZXh0
KTsKLSAgICBtX3dlYklEQkZhY3RvcnktPm9wZW4obmFtZSwgbmV3IFdlYklEQkNhbGxiYWNrc0lt
cGwoY2FsbGJhY2tzKSwgb3JpZ2luLCB3ZWJGcmFtZSwgZGF0YURpcik7CisgICAgbV93ZWJJREJG
YWN0b3J5LT5vcGVuKG5hbWUsIHZlcnNpb24sIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxi
YWNrcyksIG9yaWdpbiwgd2ViRnJhbWUsIGRhdGFEaXIpOwogfQogCiB2b2lkIElEQkZhY3RvcnlC
YWNrZW5kUHJveHk6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
c2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgZGF0YURpcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkZhY3RvcnlCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZh
Y3RvcnlCYWNrZW5kUHJveHkuaAppbmRleCAyMmE2ZjUyYTg2OTgxNmM4MDU2NjhkNjg0ZDBhN2Jm
ZmZjMjZhZTY5Li5jMGRlOTEwYTkyY2RlYTkxYTNkM2ExYzUzMGEyODA3YzVhYmZhYTdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94
eS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJGYWN0b3J5QmFj
a2VuZFByb3h5KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4+LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBk
YXRhRGlyKTsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbj4sIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IGRhdGFEaXIpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50
NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0
YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAK
aW5kZXggNWI1YWVkZjdjY2IzN2UyNDljNTNjMWFmOWU4ZWM4ZWQ5YjBlNmUxMi4uMWExMzIyYWE5
NTFkNzI2MGE5MTk5ODQxODIyYmRkNzYyZDUyNGRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYklEQkNhbGxiYWNrc0ltcGw6OldlYklEQkNhbGxiYWNr
c0ltcGwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICA6IG1fY2FsbGJh
Y2tzKGNhbGxiYWNrcykKKyAgICAsIG1fZGlkQ3JlYXRlRGF0YWJhc2VQcm94eShmYWxzZSkKIHsK
IH0KIApAQCAtNzIsNiArNzMsMTAgQEAgdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nl
c3MoV2ViSURCQ3Vyc29yKiBjdXJzb3IpCiAKIHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25T
dWNjZXNzKFdlYklEQkRhdGFiYXNlKiB3ZWJLaXRJbnN0YW5jZSkKIHsKKyAgICBpZiAobV9kaWRD
cmVhdGVEYXRhYmFzZVByb3h5KSB7CisgICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoSURC
RGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZShhZG9wdFB0cihzdGF0aWNfY2FzdDxXZWJJREJE
YXRhYmFzZSo+KDApKSkpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIG1fY2FsbGJhY2tz
LT5vblN1Y2Nlc3MoSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZShhZG9wdFB0cih3ZWJL
aXRJbnN0YW5jZSkpKTsKIH0KIApAQCAtMTA1LDYgKzExMCwxNyBAQCB2b2lkIFdlYklEQkNhbGxi
YWNrc0ltcGw6Om9uQmxvY2tlZCgpCiAgICAgbV9jYWxsYmFja3MtPm9uQmxvY2tlZCgpOwogfQog
Cit2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uQmxvY2tlZChsb25nIGxvbmcgb2xkVmVyc2lv
bikKK3sKKyAgICBtX2NhbGxiYWNrcy0+b25CbG9ja2VkKG9sZFZlcnNpb24pOworfQorCit2b2lk
IFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uVXBncmFkZU5lZWRlZChsb25nIGxvbmcgb2xkVmVyc2lv
biwgV2ViSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBXZWJJREJEYXRhYmFzZSogZGF0YWJh
c2UpCit7CisgICAgbV9kaWRDcmVhdGVEYXRhYmFzZVByb3h5ID0gdHJ1ZTsKKyAgICBtX2NhbGxi
YWNrcy0+b25VcGdyYWRlTmVlZGVkKG9sZFZlcnNpb24sIElEQlRyYW5zYWN0aW9uQmFja2VuZFBy
b3h5OjpjcmVhdGUoYWRvcHRQdHIodHJhbnNhY3Rpb24pKSwgSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHk6OmNyZWF0ZShhZG9wdFB0cihkYXRhYmFzZSkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaAppbmRleCA3YjAyMTYzNTlk
NTZkODE4Njk1ZmU5NzNhMDE4MmFmYjUxMjUwMTYxLi5iNWI1NTRlMDMwNmM2MmQzMzI0NmFiMGFk
YTE1OWI1Mzk2NWQ5ODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJDYWxsYmFja3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCQ2FsbGJhY2tzSW1wbC5oCkBAIC01MSw5ICs1MSwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBjb25zdCBX
ZWJJREJLZXkmLCBjb25zdCBXZWJJREJLZXlQYXRoJik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3Vj
Y2Vzc1dpdGhDb250aW51YXRpb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7Cisg
ICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZChsb25nIGxvbmcgb2xkVmVyc2lvbik7CisgICAgdmly
dHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZChsb25nIGxvbmcgb2xkVmVyc2lvbiwgV2ViSURCVHJh
bnNhY3Rpb24qLCBXZWJJREJEYXRhYmFzZSopOwogCiBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJD
b3JlOjpJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworICAgIGJvb2wgbV9kaWRDcmVhdGVEYXRh
YmFzZVByb3h5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNw
cAppbmRleCBmZjBlODk4NjRiMjFhNjQ2ODliMDMxMjZjYWFmM2ZlNTY1OWZhZjMxLi42ODI4ZGY2
ZmY2OTZhZGU0N2VmOTRlOGJkNDA3NDJmNGFiNjE5ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAK
QEAgLTQ0LDYgKzQ0LDExIEBAIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6fldlYklEQkRh
dGFiYXNlQ2FsbGJhY2tzSW1wbCgpCiB7CiB9CiAKK3ZvaWQgV2ViSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsOjpvblZlcnNpb25DaGFuZ2UobG9uZyBsb25nIGN1cnJlbnRWZXJzaW9uLCBsb25nIGxv
bmcgcmVxdWVzdGVkVmVyc2lvbikKK3sKKyAgICBtX2NhbGxiYWNrcy0+b25WZXJzaW9uQ2hhbmdl
KGN1cnJlbnRWZXJzaW9uLCByZXF1ZXN0ZWRWZXJzaW9uKTsKK30KKwogdm9pZCBXZWJJREJEYXRh
YmFzZUNhbGxiYWNrc0ltcGw6Om9uVmVyc2lvbkNoYW5nZShjb25zdCBXZWJTdHJpbmcmIHZlcnNp
b24pCiB7CiAgICAgbV9jYWxsYmFja3MtPm9uVmVyc2lvbkNoYW5nZSh2ZXJzaW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsLmgKaW5kZXggMjFjM2RjN2M1YWM0YWQwYmVhOGRmMjkxNmViYjNmODhjNjdmZjA1Zi4u
NTczNDkwYmZmMzA0MmE1Y2RiZjRhMTc3MWY2YTVkZTQ0NzJlNWQ5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
LmgKQEAgLTQzLDYgKzQzLDcgQEAgcHVibGljOgogICAgIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAgICAgdmly
dHVhbCB+V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQg
b25WZXJzaW9uQ2hhbmdlKGxvbmcgbG9uZyBjdXJyZW50VmVyc2lvbiwgbG9uZyBsb25nIHJlcXVl
c3RlZFZlcnNpb24pOwogICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgV2Vi
U3RyaW5nJiB2ZXJzaW9uKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcAppbmRleCBkMTRhYzcxZTE4Yzg1OTMxNTJlZmRm
ZDVjODM5ZTAxNzIwZTNmZmRjLi5hZDcxNDc2YjdlYmI0Njg2ZWE4MjViOTYyMTkxNmU2M2IyOTBh
Yzc3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUlt
cGwuY3BwCkBAIC02MywxNyArNjMsOSBAQCB2b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpnZXREYXRh
YmFzZU5hbWVzKFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZQogICAgIG1f
aWRiRmFjdG9yeUJhY2tlbmQtPmdldERhdGFiYXNlTmFtZXMoSURCQ2FsbGJhY2tzUHJveHk6OmNy
ZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgb3JpZ2luLCAwLCBkYXRhRGlyKTsKIH0KIAotCi12
b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURC
Q2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdl
YkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKQotewotICAgIG1faWRiRmFjdG9yeUJh
Y2tlbmQtPm9wZW4obmFtZSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxs
YmFja3MpKS5nZXQoKSwgb3JpZ2luLCAwLCBkYXRhRGlyKTsKLX0KLQogdm9pZCBXZWJJREJGYWN0
b3J5SW1wbDo6b3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGxvbmcgbG9uZyB2ZXJzaW9uLCBX
ZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdp
biwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpCiB7Ci0gICAgLy8gRklYTUU6
IFBhc3MgdmVyc2lvbiBhbG9uZyB3aGVuIFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW50ZXJm
YWNlCi0gICAgLy8gaGFzIGFuIG9wZW4gbWV0aG9kIHRoYXQgYWNjZXB0cyBpdC4KLSAgICBtX2lk
YkZhY3RvcnlCYWNrZW5kLT5vcGVuKG5hbWUsIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRv
cHRQdHIoY2FsbGJhY2tzKSkuZ2V0KCksIG9yaWdpbiwgMCwgZGF0YURpcik7CisgICAgbV9pZGJG
YWN0b3J5QmFja2VuZC0+b3BlbihuYW1lLCB2ZXJzaW9uLCBJREJDYWxsYmFja3NQcm94eTo6Y3Jl
YXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLmdldCgpLCBvcmlnaW4sIDAsIGRhdGFEaXIpOwogfQog
CiB2b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpkZWxldGVEYXRhYmFzZShjb25zdCBXZWJTdHJpbmcm
IG5hbWUsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdp
biYgb3JpZ2luLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oCmluZGV4IGZhNDM4ZDc2
NDhlMzQ2NGM1YTFjYmQ1Y2NmNTdjZmYwZTU2ZjMyODUuLjgzM2VlYjU5MTI1OWI4NTNjMzIxZmQx
MThmMDk0YTViOGE3Yzg4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkZhY3RvcnlJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRmFjdG9yeUltcGwuaApAQCAtNDUsNyArNDUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+
V2ViSURCRmFjdG9yeUltcGwoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVz
KFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBj
b25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpOwotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4m
LCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcik7CiAgICAgdmlydHVhbCB2b2lk
IG9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURCQ2Fs
bGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0
cmluZyYgZGF0YURpcik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4m
LCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcAppbmRl
eCBkOWUzZDY5N2IxOTdjNzQwNmY2M2JhZWI0ODM5MzFiNGVhYzk1MDg1Li5iNjUzZTdlZTJiNmJi
NzNjMWJlYmI5YzIzMjU0YzFjYzNkOGRhOWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCkBAIC03NCw3ICs3NCw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmFpbGluZ0Jh
Y2tpbmdTdG9yZSk7CiAgICAgfQotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1l
dGFEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGludDY0X3QmKQorICAgIHZpcnR1
YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIGludDY0X3QsIGludDY0X3QmKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KQEAgLTEwMiw3ICsxMDIsOCBAQCBURVNUKElEQkFib3J0VGVzdCwgVGhlVGVzdCkKICAg
ICBjb25zdCBTdHJpbmcmIG5hbWUgPSAiZGIgbmFtZSI7CiAgICAgTW9ja0lEQkNhbGxiYWNrcyBj
YWxsYmFja3M7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKCJodHRwIiwgImxvY2FsaG9zdCIsIDgxKTsKLSAgICBmYWN0b3J5LT5vcGVu
KG5hbWUsICZjYWxsYmFja3MsIG9yaWdpbiwgMCAvKkZyYW1lKi8sIFN0cmluZygpIC8qcGF0aCov
KTsKKyAgICBjb25zdCBpbnQ2NF90IER1bW15VmVyc2lvbiA9IDI7CisgICAgZmFjdG9yeS0+b3Bl
bihuYW1lLCBEdW1teVZlcnNpb24sICZjYWxsYmFja3MsIG9yaWdpbiwgMCAvKkZyYW1lKi8sIFN0
cmluZygpIC8qcGF0aCovKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKaW5kZXggMDg0MDVjZTBh
YjU4Yzk2ZmMyOTZjM2YwZjhhMTRmZjY5ZDY1YmExOC4uZDk2ZjdjNmNhMGVhOTQyYTI1ZDM4MjRi
NWUxMmNkNWM0OWU3YzUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKQEAgLTMzLDggKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgSURCRmFrZUJhY2tpbmdTdG9yZSA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmUg
ewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFZlY3RvcjxTdHJp
bmc+JiBmb3VuZE5hbWVzKSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0
YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRWZXJzaW9uLCBp
bnQ2NF90JiBmb3VuZElkKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYg
bmFtZSwgU3RyaW5nJiBmb3VuZFZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVyc2lvbiwgaW50
NjRfdCYgZm91bmRJZCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmVyc2lvbiwgY29uc3QgaW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkg
T1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRh
YmFzZU1ldGFEYXRhKGludDY0X3Qgcm93SWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikgT1ZFUlJJ
REUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoY29u
c3QgU3RyaW5nJiBuYW1lKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDUz
OGRjNTlmNTEwZmY5MTBjZDM4ZmVjZmFmOTI2NTY3NzRiZTg3My4uMTdmNDA5MzI1MDdlMmIzMzVk
NmUwNThiMWNmZDA5ZTQwN2IyZGMwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDEyLTA3LTI2
ICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVk
REI6IGltcGxlbWVudCB1cGdyYWRlbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04OTUwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBz
dWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2Ny
aXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vVGVz
dEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9hYm9ydC1pbi1pbml0
aWFsLXVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWFib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24t
YWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYW5kLXNldHZlcnNpb24tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWFuZC1zZXR2ZXJz
aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24t
YmxvY2tlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L2ludHZlcnNpb24tYmxvY2tlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9pbnR2ZXJzaW9uLWNsb3NlLWJldHdlZW4tZXZlbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9zZS1iZXR3ZWVuLWV2
ZW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9u
LWNsb3NlLWluLW9uY29tcGxldGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNsb3NlLWluLW9uY29tcGxldGUuaHRtbDogQWRkZWQu
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1kZWxldGUtaW4tdXBncmFk
ZW5lZWRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJz
aW9uLWRvbnQtZnJlZXplLW9uLXJlZnJlc2guaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0LXBhcmFtZXRlci1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tb21pdC1wYXJhbWV0ZXIu
aHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vcGVu
LXdpdGgtdmVyc2lvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL2ludHZlcnNpb24tb3Blbi13aXRoLXZlcnNpb24uaHRtbDogQWRkZWQuCisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRoLXZlcnNpb24taW5pdGlhbC12ZXJzaW9uLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb3Blbi13aXRo
LXZlcnNpb24td2l0aC1kZWxldGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLmpz
OiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoZGVsZXRlU3VjY2Vzcyk6CisgICAg
ICAgICh1cGdyYWRlTmVlZGVkKToKKyAgICAgICAgKG9uQWJvcnQpOgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kb250LWZyZWV6ZS1vbi1yZWZyZXNoLmpzOiBBZGRlZC4K
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAoZGVsZXRlU3VjY2Vzcyk6CisgICAgICAgICh1cGdy
YWRlTmVlZGVkLnRyYW5zYWN0aW9uLm9uY29tcGxldGUpOgorICAgICAgICAodXBncmFkZU5lZWRl
ZCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLWJsb2NrZWQuanM6IEFkZGVkLgorICAgICAgICAo
dGVzdCk6CisgICAgICAgIChkZWxldGVTdWNjZXNzLnJlcXVlc3Qub251cGdyYWRlbmVlZGVkKToK
KyAgICAgICAgKGRlbGV0ZVN1Y2Nlc3MpOgorICAgICAgICAoZmlyc3RTdWNjZXNzRXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKHZlcnNpb25DaGFuZ2VIYW5kbGVyKToKKyAgICAgICAgKGJsb2NrZWRF
dmVudEhhbmRsZXIpOgorICAgICAgICAoc2Vjb25kVXBncmFkZU5lZWRlZEV2ZW50SGFuZGxlcik6
CisgICAgICAgIChzZWNvbmRTdWNjZXNzQ2FsbGJhY2spOgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1jbG9zZS1iZXR3ZWVuLWV2ZW50cy5q
czogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGRlbGV0ZVN1Y2Nlc3MpOgorICAg
ICAgICAodXBncmFkZU5lZWRlZC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlKToKKyAgICAgICAgKHVw
Z3JhZGVOZWVkZWQpOgorICAgICAgICAoY2xvc2VEQik6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9u
LWNsb3NlLWluLW9uY29tcGxldGUuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAg
IChkZWxldGVTdWNjZXNzKToKKyAgICAgICAgKHVwZ3JhZGVOZWVkZWQudHJhbnNhY3Rpb24ub25j
b21wbGV0ZSk6CisgICAgICAgICh1cGdyYWRlTmVlZGVkKToKKyAgICAgICAgKG9wZW5TdWNjZXNz
KToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNp
b24taW5pdGlhbC12ZXJzaW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAo
ZGVsZXRlU3VjY2Vzcy5yZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCk6CisgICAgICAgIChkZWxldGVT
dWNjZXNzKToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24td2l0aC1kZWxldGUuanM6IEFkZGVkLgor
ICAgICAgICAodGVzdCk6CisgICAgICAgIChpbml0aWFsbHlEZWxldGVkKToKKyAgICAgICAgKGZp
cnN0VXBncmFkZU5lZWRlZCk6CisgICAgICAgIChtaWRSZXF1ZXN0RGVsZXRlKToKKyAgICAgICAg
KG9wZW5TdWNjZXNzLmRiLm9udmVyc2lvbmNoYW5nZSk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9u
LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoZGVsZXRlU3VjY2Vzcyk6Cisg
ICAgICAgICh1cGdyYWRlTmVlZGVkLnRyYW5zYWN0aW9uLm9uY29tcGxldGUpOgorICAgICAgICAo
dXBncmFkZU5lZWRlZCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldHZlcnNpb24tdXBncmFkZW5lZWRlZC1pbnRlcnR3aW5l
ZC5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGRlbGV0ZVN1Y2Nlc3MpOgor
ICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoaW5TZXRWZXJzaW9uKToKKyAgICAgICAg
KHNldFZlcnNpb25Eb25lKToKKyAgICAgICAgKHNlY29uZE9wZW4pOgorICAgICAgICAoZmlyc3RV
cGdyYWRlTmVlZGVkKToKKyAgICAgICAgKHRyYW5zYWN0aW9uQ29tcGxldGVkKToKKyAgICAgICAg
KGZpcnN0T3BlbldpdGhWZXJzaW9uKToKKyAgICAgICAgKHNldFZlcnNpb25Ob3RBbGxvd2VkKToK
KyAgICAgICAgKGVycm9yV2hlblRyeWluZ0xvd1ZlcnNpb24pOgorICAgICAgICAoc2Vjb25kVXBn
cmFkZU5lZWRlZCk6CisgICAgICAgICh0aGlyZE9wZW5TdWNjZXNzKToKKwogMjAxMi0wNy0yNiAg
TmF5YW4gS3VtYXIgSyAgPG5heWFua2tAbW90b3JvbGEuY29tPgogCiAgICAgICAgIFtXZWJHTF0g
SW5pdGlhbCBzaXplIG9mIGNhbnZhcyBjYW4gYmUgbGFyZ2VyIHRoYW4gTUFYX1ZJRVdQT1JUX0RJ
TVMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCA2NDEzOTA5MDRmNjcyNzg1NmI3ZjBmNmI3OTMxNmIyMjFiYTliMGNjLi5mZWE1OTkwNjA1
OGEwMjNjZjU3MTUyMDU2YmE0NDA0ZTU1OTY0MzFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTUxNyw2ICs1MTcsOCBAQCBXT05URklY
IFNLSVAgOiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstc2hhcmVkLXdvcmtl
ci5odG1sID0gUEFTUwogV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLmh0bWwgPSBU
RVhUCiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9zaGFyZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWJsb2NrZWQuaHRtbCA9IFRFWFQKIFdPTlRG
SVggU0tJUCA6IHN0b3JhZ2UvaW5kZXhlZGRiL2Jhc2ljcy1zaGFyZWQtd29ya2Vycy5odG1sID0g
UEFTUworV09OVEZJWCBTS0lQIDogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1kZWxldGUt
aW4tdXBncmFkZW5lZWRlZC5odG1sID0gUEFTUworV09OVEZJWCBTS0lQIDogc3RvcmFnZS9pbmRl
eGVkZGIvaW50dmVyc2lvbi1kb250LWZyZWV6ZS1vbi1yZWZyZXNoLmh0bWwgPSBQQVNTCiAKIC8v
IHRlc3Rfc2hlbGwgZG9lcyBub3Qgc3VwcG9ydCBtZXNzYWdlIHBvcnRzCiBCVUdXSzc0NDU5IFNL
SVAgOiBmYXN0L3dvcmtlcnMvdGVybWluYXRpb24td2l0aC1wb3J0LW1lc3NhZ2VzLmh0bWwgPSBQ
QVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9u
LWFib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWFib3J0LWluLWluaXRpYWwtdXBncmFkZW5l
ZWRlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU5NmU4ZDk3MTFkYjAwMDVhMGZlMzJlYzlh
NmNhNjYyOGJmNWFmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2ludHZlcnNpb24tYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDIwIEBACitUZXN0IHRoYXQgYW4gYWJvcnQgaW4gdGhlIGluaXRpYWwg
dXBncmFkZW5lZWRlZCBzZXRzIHZlcnNpb24gYmFjayB0byAwCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdElu
ZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYu
T0luZGV4ZWREQjsKKworaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKK2luZGV4ZWRE
Qi5vcGVuKGRibmFtZSwgMikKKwordXBncmFkZU5lZWRlZCgpOgorUEFTUyBkYi52ZXJzaW9uIGlz
IDIKK3RyYW5zYWN0aW9uLmFib3J0KCkKKworb25BYm9ydCgpOgorRkFJTCBldmVudC50YXJnZXQu
ZGIudmVyc2lvbiBzaG91bGQgYmUgMC4gV2FzIDIuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYWJvcnQtaW4taW5p
dGlhbC11cGdyYWRlbmVlZGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJlZDQwNjJlNTg2ZGFmNmQ1MDY5
MjdjMGRkNDIyYzY4ZDQyMjZkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLmh0
bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hbmQtc2V0dmVyc2lvbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWFuZC1zZXR2ZXJzaW9uLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTAyMzMzZGZmMjYwMDEwMWY5Y2RhZTQwZDQwYzRjNDBm
ZmU4YzNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
aW50dmVyc2lvbi1hbmQtc2V0dmVyc2lvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4OSBAQAor
VGVzdCB0aGF0IGJsYWggYmxhaC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2lu
ZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYu
bW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitp
bmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQorRkFJTCBTdHJpbmcocmVxdWVzdCkgc2hv
dWxkIGJlIFtvYmplY3QgSURCT3BlbkRCUmVxdWVzdF0uIFdhcyBbb2JqZWN0IElEQlZlcnNpb25D
aGFuZ2VSZXF1ZXN0XS4KKworQ2FsbCBvcGVuIHdpdGggbm8gdmVyc2lvbiBwYXJhbWV0ZXI6Citp
bmRleGVkREIub3BlbihkYm5hbWUpCisKK29wZW5TdWNjZXNzKCk6CitkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQKK1BBU1MgZGIudmVyc2lvbiBpcyAiIgorcmVxdWVzdCA9IGRiLnNldFZlcnNpb24o
InNvbWUgdmVyc2lvbiIpCisKK2luU2V0VmVyc2lvbigpOgorUEFTUyBkYi52ZXJzaW9uIGlzICJz
b21lIHZlcnNpb24iCisKK3NldFZlcnNpb25Eb25lKCk6CitQQVNTIGRiLnZlcnNpb24gaXMgInNv
bWUgdmVyc2lvbiIKK2RiLmNsb3NlKCkKK2luZGV4ZWREQi5vcGVuKGRibmFtZSkKK3JlcXVlc3Qu
b25zdWNjZXNzID0gc2Vjb25kT3BlbgorCitzZWNvbmRPcGVuKCk6CitkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQKK1BBU1MgU3RyaW5nKGRiKSBpcyAiW29iamVjdCBJREJEYXRhYmFzZV0iCitQQVNT
IGRiLnZlcnNpb24gaXMgInNvbWUgdmVyc2lvbiIKK2RiLmNsb3NlKCkKK3JlcXVlc3QgPSBpbmRl
eGVkREIub3BlbihkYm5hbWUsIDIpCisKK2ZpcnN0VXBncmFkZU5lZWRlZCgpOgorZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0CitQQVNTIFN0cmluZyhkYikgaXMgIltvYmplY3QgSURCRGF0YWJhc2Vd
IgorUEFTUyBTdHJpbmcocmVxdWVzdC50cmFuc2FjdGlvbikgaXMgIltvYmplY3QgSURCVHJhbnNh
Y3Rpb25dIgorRkFJTCBldmVudC5vbGRWZXJzaW9uIHNob3VsZCBiZSBzb21lIHZlcnNpb24gKG9m
IHR5cGUgc3RyaW5nKS4gV2FzIDAgKG9mIHR5cGUgbnVtYmVyKS4KK1BBU1MgZXZlbnQubmV3VmVy
c2lvbiBpcyAyCityZXF1ZXN0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNv
bXBsZXRlZAorCit0cmFuc2FjdGlvbkNvbXBsZXRlZCgpOgorZGlkVHJhbnNhY3Rpb25Db21wbGV0
ZSA9IHRydWUKKworZmlyc3RPcGVuV2l0aFZlcnNpb24oKToKK1BBU1MgZGlkVHJhbnNhY3Rpb25D
b21wbGV0ZSBpcyB0cnVlCitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgU3RyaW5nKGRi
KSBpcyAiW29iamVjdCBJREJEYXRhYmFzZV0iCitQQVNTIHJlcXVlc3QudHJhbnNhY3Rpb24gaXMg
bnVsbAorUEFTUyBkYi52ZXJzaW9uIGlzIDIKK1BBU1MgU3RyaW5nKHJlcXVlc3QpIGlzICJbb2Jq
ZWN0IElEQk9wZW5EQlJlcXVlc3RdIgorcmVxdWVzdCA9IGRiLnNldFZlcnNpb24oInN0cmluZyB2
ZXJzaW9uIDIiKQorUEFTUyBTdHJpbmcocmVxdWVzdCkgaXMgIltvYmplY3QgSURCVmVyc2lvbkNo
YW5nZVJlcXVlc3RdIgorcmVxdWVzdC5vbmVycm9yID0gc2V0VmVyc2lvbk5vdEFsbG93ZWQKKwor
c2V0VmVyc2lvbk5vdEFsbG93ZWQoKToKK1BBU1MgZXZlbnQudHlwZSBpcyAiZXJyb3IiCityZXF1
ZXN0LndlYmtpdEVycm9yTWVzc2FnZSA9IFlvdSBjYW4ndCB1c2UgdGhlIHNldFZlcnNpb24gZnVu
Y3Rpb24gaWYgeW91J3ZlIGFscmVhZHkgc2V0IHRoZSB2ZXJzaW9uIHRocm91Z2ggYW4gb3BlbiBj
YWxsLiAgVGhlIGN1cnJlbnQgaW50ZWdlciB2ZXJzaW9uIGlzIDIKK2RiLmNsb3NlKCkKK3JlcXVl
c3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDEpCityZXF1ZXN0Lm9uZXJyb3IgPSBlcnJvcldo
ZW5UcnlpbmdMb3dWZXJzaW9uCisKK2Vycm9yV2hlblRyeWluZ0xvd1ZlcnNpb24oKToKK3JlcXVl
c3Qud2Via2l0RXJyb3JNZXNzYWdlID0gVGhlIHJlcXVlc3RlZCB2ZXJzaW9uICgxKSBpcyBsZXNz
IHRoYW4gdGhlIGV4aXN0aW5nIHZlcnNpb24gKDIpLgorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVu
KGRibmFtZSwgNCkKK3JlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gc2Vjb25kVXBncmFkZU5lZWRl
ZAorcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0aGlyZE9wZW5TdWNjZXNzCisKK3NlY29uZFVwZ3JhZGVO
ZWVkZWQoKToKK2dvdFNlY29uZFVwZ3JhZGVOZWVkZWQgPSB0cnVlCitQQVNTIGV2ZW50Lm9sZFZl
cnNpb24gaXMgMgorUEFTUyBldmVudC5uZXdWZXJzaW9uIGlzIDQKKwordGhpcmRPcGVuU3VjY2Vz
cygpOgorUEFTUyBnb3RTZWNvbmRVcGdyYWRlTmVlZGVkIGlzIHRydWUKK2RiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdAorUEFTUyBkYi52ZXJzaW9uIGlzIDQKK2RiLmNsb3NlKCkKK3JlcXVlc3QgPSBp
bmRleGVkREIub3BlbihkYm5hbWUpCityZXF1ZXN0Lm9uc3VjY2VzcyA9IGZvdXJ0aE9wZW5TdWNj
ZXNzCisKK2ZvdXJ0aE9wZW5TdWNjZXNzKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BB
U1MgZGIudmVyc2lvbiBpcyA0CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
aW50dmVyc2lvbi1hbmQtc2V0dmVyc2lvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvaW50dmVyc2lvbi1hbmQtc2V0dmVyc2lvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViMDgyYTc2
NDlhNjVmNTkyNDY3ZmJlNmYxNDQ0NDAwYmE0Yjc1MjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWFuZC1zZXR2ZXJzaW9uLmh0bWwK
QEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc2V0dmVyc2lvbi11cGdyYWRlbmVlZGVkLWludGVydHdpbmVkLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1ibG9ja2VkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYmxvY2tlZC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWY1MGQ1MTg2MWY5OGQ3OGQ0Yjk0YjM1ZDJmN2U4NjFkNjFhNmMzMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24t
YmxvY2tlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1MSBAQAorVGVzdCB0aGF0IGJsb2NrZWQg
ZXZlbnRzIGdldCBkZWxpdmVyZWQgcHJvcGVybHkgd2l0aCB0aGUgbmV3IG9wZW4gYXBpCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8
fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5k
ZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRi
bmFtZSkKKworZGVsZXRlU3VjY2VzcygpOgorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFt
ZSwgMikKKworcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQoKToKK2dvdEZpcnN0VXBncmFkZU5lZWRl
ZEV2ZW50ID0gdHJ1ZQorUEFTUyBldmVudC5vbGRWZXJzaW9uIGlzIDAKK1BBU1MgZXZlbnQubmV3
VmVyc2lvbiBpcyAyCitQQVNTIFN0cmluZyhldmVudCkgaXMgIltvYmplY3QgSURCVXBncmFkZU5l
ZWRlZEV2ZW50XSIKKworZmlyc3RTdWNjZXNzRXZlbnRIYW5kbGVyKCk6CitQQVNTIGdvdEZpcnN0
VXBncmFkZU5lZWRlZEV2ZW50IGlzIHRydWUKK2Nvbm5lY3Rpb24xID0gZXZlbnQudGFyZ2V0LnJl
c3VsdAorY29ubmVjdGlvbjEub252ZXJzaW9uY2hhbmdlID0gdmVyc2lvbkNoYW5nZUhhbmRsZXIK
K1BBU1MgU3RyaW5nKGNvbm5lY3Rpb24xKSBpcyAiW29iamVjdCBJREJEYXRhYmFzZV0iCityZXF1
ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAzKQorCit2ZXJzaW9uQ2hhbmdlSGFuZGxlcigp
Ogorc2F3VmVyc2lvbkNoYW5nZUV2ZW50ID0gdHJ1ZQorUEFTUyBldmVudC50eXBlIGlzICJ2ZXJz
aW9uY2hhbmdlIgorRkFJTCBTdHJpbmcoZXZlbnQpIHNob3VsZCBiZSBbb2JqZWN0IElEQlZlcnNp
b25DaGFuZ2VFdmVudF0uIFdhcyBbb2JqZWN0IElEQlVwZ3JhZGVOZWVkZWRFdmVudF0uCitQQVNT
IGV2ZW50Lm9sZFZlcnNpb24gaXMgMgorUEFTUyBldmVudC5uZXdWZXJzaW9uIGlzIDMKKworYmxv
Y2tlZEV2ZW50SGFuZGxlcigpOgorUEFTUyBzYXdWZXJzaW9uQ2hhbmdlRXZlbnQgaXMgdHJ1ZQor
Z290QmxvY2tlZEV2ZW50ID0gdHJ1ZQorRkFJTCBTdHJpbmcoZXZlbnQpIHNob3VsZCBiZSBbb2Jq
ZWN0IElEQlZlcnNpb25DaGFuZ2VFdmVudF0uIFdhcyBbb2JqZWN0IElEQlVwZ3JhZGVOZWVkZWRF
dmVudF0uCitQQVNTIGV2ZW50Lm9sZFZlcnNpb24gaXMgMgorUEFTUyBldmVudC5uZXdWZXJzaW9u
IGlzIDMKK1BBU1MgZXZlbnQudHlwZSBpcyAiYmxvY2tlZCIKK2Nvbm5lY3Rpb24xLmNsb3NlKCkK
Kworc2Vjb25kVXBncmFkZU5lZWRlZEV2ZW50SGFuZGxlcigpOgorUEFTUyBnb3RCbG9ja2VkRXZl
bnQgaXMgdHJ1ZQorZ290U2Vjb25kVXBncmFkZU5lZWRlZEV2ZW50ID0gdHJ1ZQorCitzZWNvbmRT
dWNjZXNzQ2FsbGJhY2soKToKK1BBU1MgZ290U2Vjb25kVXBncmFkZU5lZWRlZEV2ZW50IGlzIHRy
dWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWJsb2Nr
ZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYmxvY2tl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg2ODI1MzM5YWQ2NzVmYmM1ZTA3MjMxZWQ5NjA2M2NkOGUzOTAw
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2
ZXJzaW9uLWJsb2NrZWQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1ibG9ja2Vk
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9zZS1iZXR3ZWVuLWV2ZW50
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9u
LWNsb3NlLWJldHdlZW4tZXZlbnRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODA5MWY1YmQ1
ZDUwODE3NjgyMGNmNGNkOTJkNTM4NmJiMzU3ODgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9zZS1iZXR3ZWVuLWV2ZW50cy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMyBAQAorVGVzdCB0aGF0IHNwZWNpZnlpbmcgYSB2ZXJz
aW9uIHdoZW4gb3BlbmluZyBhIG5vbi1leGlzdGVudCBkYiBjYXVzZXMgYW4gdXBncmFkZW5lZWRl
ZCBldmVudCBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaXMgc2V0IGNvcnJlY3RseS4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERC
IHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJ
bmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2Uo
ZGJuYW1lKQorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgNykKKworCit1cGdyYWRl
TmVlZGVkKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgZXZlbnQubmV3VmVyc2lv
biBpcyA3Cit0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbgorCit0cmFuc2Fj
dGlvbi5vbmNvbXBsZXRlOgorc2F3VHJhbnNhY3Rpb25Db21wbGV0ZSA9IHRydWUKK3NldFRpbWVv
dXQoY2xvc2VEQiwgMCkKKworb3BlblN1Y2Nlc3MoKToKK1BBU1MgZGlkQ2FsbENsb3NlREIgaXMg
ZmFsc2UKK1BBU1Mgc2F3VHJhbnNhY3Rpb25Db21wbGV0ZSBpcyB0cnVlCitkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQKK1BBU1MgZGIudmVyc2lvbiBpcyA3CisKK2Nsb3NlREIoKToKK2RpZENhbGxD
bG9zZURCID0gdHJ1ZQorZGIuY2xvc2UoKQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtYmV0d2Vlbi1ldmVudHMuaHRtbCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtYmV0d2Vlbi1ldmVudHMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43ZDYzYWQ5MGZmN2E1NzcxNjU1NDE2NTMzOTIxYTNkMDFkMmMzMzk5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1j
bG9zZS1iZXR3ZWVuLWV2ZW50cy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLWNs
b3NlLWJldHdlZW4tZXZlbnRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1j
bG9zZS1pbi1vbmNvbXBsZXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtaW4tb25jb21wbGV0ZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDAzNzc3YmQ0NjNkYzIzMTlhNmUwZmNmNDY2ZGJlM2FiOTI5NWE1YwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tY2xvc2Ut
aW4tb25jb21wbGV0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMiBAQAorVGVzdCB0aGF0IHNw
ZWNpZnlpbmcgYSB2ZXJzaW9uIHdoZW4gb3BlbmluZyBhIG5vbi1leGlzdGVudCBkYiBjYXVzZXMg
YW4gdXBncmFkZW5lZWRlZCBldmVudCBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaXMgc2V0
IGNvcnJlY3RseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9
IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhl
ZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitpbmRleGVkREIu
ZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwg
NykKKwordXBncmFkZU5lZWRlZCgpOgorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGV2
ZW50Lm5ld1ZlcnNpb24gaXMgNworZGIuY3JlYXRlT2JqZWN0U3RvcmUoIm9zIikKK3RyYW5zYWN0
aW9uID0gZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uCisKK3RyYW5zYWN0aW9uLm9uY29tcGxldGU6
CitzYXdUcmFuc2FjdGlvbkNvbXBsZXRlID0gdHJ1ZQorZGIuY2xvc2UoKQorCitvcGVuU3VjY2Vz
cygpOgorUEFTUyBzYXdUcmFuc2FjdGlvbkNvbXBsZXRlIGlzIHRydWUKK2RiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdAorUEFTUyBkYi52ZXJzaW9uIGlzIDcKK0V4cGVjdGluZyBleGNlcHRpb24gZnJv
bSB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdvcycsICdyZWFkd3JpdGUnKQorUEFTUyBF
eGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9T
VEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtaW4tb25jb21wbGV0ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9zZS1pbi1v
bmNvbXBsZXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjI1MzdkOWQzNTAzZTRmOTQxMDFmYTIyZWJlMmNj
MDRiNTQ0NjlhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2ludHZlcnNpb24tY2xvc2UtaW4tb25jb21wbGV0ZS5odG1sCkBAIC0wLDAgKzEsMTAgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wZW4t
d2l0aC12ZXJzaW9uLWNsb3NlLWluLW9uY29tcGxldGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9pbnR2ZXJzaW9uLWRlbGV0ZS1pbi11cGdyYWRlbmVlZGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWRlbGV0ZS1pbi11cGdyYWRlbmVlZGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzI1MjYwNGQ5YzAyNWI2NjBiOGEwYjYzNmM2ODNkMGQwMTNkZTZhMAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24t
ZGVsZXRlLWluLXVwZ3JhZGVuZWVkZWQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lv
bi13aXRoLWRlbGV0ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tZG9udC1m
cmVlemUtb24tcmVmcmVzaC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50
dmVyc2lvbi1kb250LWZyZWV6ZS1vbi1yZWZyZXNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTk5ODkxMGZi
YTlhZDUxYzg4YmZlNDA0MTRiZWQ0NTlkZmYwZjdmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tZG9udC1mcmVlemUtb24tcmVmcmVz
aC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2RvbnQtZnJlZXplLW9uLXJlZnJlc2guanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWhpZ2gtdmVyc2lvbi1maXJzdC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWhpZ2gtdmVyc2lvbi1maXJz
dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDAxMGJlMWE2NDYxZmZhM2U0MjZjZjM4ZTZhMTk0
YTVkYzllNDAzNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2ludHZlcnNpb24taGlnaC12ZXJzaW9uLWZpcnN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQ0IEBACitUZXN0IHRoYXQgaWYgdHdvIG9wZW4gcmVxdWVzdHMgYXJlIHdhaXRpbmcgYXQgdGhl
IHNhbWUgdGltZSwgdGhlIG9uZSB3aXRoIHRoZSBoaWdoZXIgdmVyc2lvbiBnZXRzIGNhbGxlZCBm
aXJzdAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5p
bmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwg
c2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWREQi5kZWxldGVE
YXRhYmFzZShkYm5hbWUpCisKK2RlbGV0ZVN1Y2Nlc3MoKToKK3JlcXVlc3QgPSBpbmRleGVkREIu
b3BlbihkYm5hbWUsIDEpCisKK3JlcXVlc3Qub251cGdyYWRlbmVlZGVkKCk6Citnb3RGaXJzdFVw
Z3JhZGVOZWVkZWRFdmVudCA9IHRydWUKK1BBU1MgZXZlbnQub2xkVmVyc2lvbiBpcyAwCitQQVNT
IGV2ZW50Lm5ld1ZlcnNpb24gaXMgMQorCitmaXJzdFN1Y2Nlc3NFdmVudEhhbmRsZXIoKToKK1BB
U1MgZ290Rmlyc3RVcGdyYWRlTmVlZGVkRXZlbnQgaXMgdHJ1ZQorY29ubmVjdGlvbjEgPSBldmVu
dC50YXJnZXQucmVzdWx0Citjb25uZWN0aW9uMS5vbnZlcnNpb25jaGFuZ2UgPSB2ZXJzaW9uQ2hh
bmdlSGFuZGxlcgorcmVxdWVzdDIgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDIpCityZXF1ZXN0
MyA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgMykKK3JlcXVlc3Q0ID0gaW5kZXhlZERCLm9wZW4o
ZGJuYW1lLCA0KQorCit2ZXJzaW9uQ2hhbmdlSGFuZGxlcigpOgorKyt2ZXJzaW9uQ2hhbmdlRXZl
bnRzU2VlbiA9IDEKK2V2ZW50Lm9sZFZlcnNpb24gPSAxCitldmVudC5uZXdWZXJzaW9uID0gMgor
CitibG9ja2VkRXZlbnRIYW5kbGVyMigpOgorUEFTUyBldmVudC5vbGRWZXJzaW9uIGlzIDEKK1BB
U1MgZXZlbnQubmV3VmVyc2lvbiBpcyAyCitQQVNTIGdvdEJsb2NrZWRFdmVudDQgaXMgZmFsc2UK
K2dvdEJsb2NrZWRFdmVudDIgPSB0cnVlCitjb25uZWN0aW9uMS5jbG9zZSgpCisKK2Jsb2NrZWRF
dmVudEhhbmRsZXIzKCk6CitGRiBhbHNvIGZhaWxzIHRoaXMgdGVzdC4KK0ZBSUwgb25ibG9ja2Vk
IGNhbGxlZCB1bmV4cGVjdGVkbHkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9pbnR2ZXJzaW9uLWhpZ2gtdmVyc2lvbi1maXJzdC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvaW50dmVyc2lvbi1oaWdoLXZlcnNpb24tZmlyc3QuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43MzhjZTRiYmRlYzNlZDMyNGJlMzhjNTM2MGE4MjJmODFhMjJkYjYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1oaWdoLXZlcnNp
b24tZmlyc3QuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9pbnR2ZXJzaW9uLWhpZ2gtdmVyc2lvbi1maXJzdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tb21pdC1wYXJhbWV0ZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0LXBh
cmFtZXRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDE4MDA1MTEwMWUyNTk2NzhiNzk2NGEw
NGI0MWU1Mzg0ODE2YTg1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2ludHZlcnNpb24tb21pdC1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTggQEAKK1Rlc3QgdGhhdCBpbml0aWFsIHZlcnNpb24gYWZ0ZXIgYSBzdWNjZXNzZnVsIG9w
ZW4gb2YgYSBub24tZXhpc3RlbnQgZGIgaXMgMQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIg
fHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVk
REI7CisKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3Blbihk
Ym5hbWUpCisKK29wZW5TdWNjZXNzKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1Rlc3Qg
bGluZSBmcm9tIElEQkZhY3Rvcnkub3BlbjogSWYgbm8gdmVyc2lvbiBpcyBzcGVjaWZpZWQgYW5k
IG5vIGRhdGFiYXNlIGV4aXN0cywgc2V0IGRhdGFiYXNlIHZlcnNpb24gdG8gMS4KK0ZBSUwgZGIu
dmVyc2lvbiBzaG91bGQgYmUgMSAob2YgdHlwZSBudW1iZXIpLiBXYXMgIChvZiB0eXBlIHN0cmlu
ZykuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0
LXBhcmFtZXRlci5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lv
bi1vbWl0LXBhcmFtZXRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1YmRlODM2YmI5Yjk3MTQxZjY3YmFi
YjA0YzYyNWIzZTUzYzllNWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9taXQtcGFyYW1ldGVyLmh0bWwKQEAgLTAsMCArMSwxMCBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Bl
bi13aXRoLXZlcnNpb24taW5pdGlhbC12ZXJzaW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
aW50dmVyc2lvbi1vcGVuLXdpdGgtdmVyc2lvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9wZW4td2l0aC12ZXJzaW9uLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jOTZkYjk3NWFjY2JhOGY0ODFjN2U3MTFkN2E5M2E2NzYzNDY1NzdkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lv
bi1vcGVuLXdpdGgtdmVyc2lvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0NSBAQAorVGVzdCB0
aGF0IHNwZWNpZnlpbmcgYSB2ZXJzaW9uIHdoZW4gb3BlbmluZyBhIG5vbi1leGlzdGVudCBkYiBj
YXVzZXMgYW4gdXBncmFkZW5lZWRlZCBldmVudCBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIg
aXMgc2V0IGNvcnJlY3RseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4
ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96
SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitpbmRl
eGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQorU2hvdWxkIHRyaWdnZXI6Cis0LjEuNDogSWYg
bm8gZGF0YWJhc2Ugd2l0aCB0aGUgZ2l2ZW4gbmFtZSBmcm9tIHRoZSBvcmlnaW4gb3JpZ2luIHdh
cyBmb3VuZCwgb3IgaWYgaXQgd2FzIGRlbGV0ZWQgZHVyaW5nIHRoZSBwcmV2aW91cyBzdGVwLCB0
aGVuIGNyZWF0ZSBhIGRhdGFiYXNlIHdpdGggbmFtZSBuYW1lLCB3aXRoIDAgYXMgdmVyc2lvbiwg
YW5kIHdpdGggbm8gb2JqZWN0IHN0b3Jlcy4gTGV0IGRiIGJlIHRoZSBuZXcgZGF0YWJhc2UuCis0
LjEuNjogQ3JlYXRlIGEgbmV3IGNvbm5lY3Rpb24gdG8gZGIgYW5kIGxldCBjb25uZWN0aW9uIHJl
cHJlc2VudCBpdC4KKzQuMS43OiBJZiB0aGUgdmVyc2lvbiBvZiBkYiBpcyBsb3dlciB0aGFuIHZl
cnNpb24sIHRoZW4gcnVuIHRoZSBzdGVwcyBmb3IgcnVubmluZyBhICJ2ZXJzaW9uY2hhbmdlIiB0
cmFuc2FjdGlvbiB1c2luZyBjb25uZWN0aW9uLCB2ZXJzaW9uLCByZXF1ZXN0IGFuZCB1cGdyYWRl
IGNhbGxiYWNrLgorNC4xLjk6IFJldHVybiBjb25uZWN0aW9uLgorcmVxdWVzdCA9IGluZGV4ZWRE
Qi5vcGVuKGRibmFtZSwgNykKK1BBU1MgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShy
ZXF1ZXN0KSBpcyAiW29iamVjdCBJREJPcGVuREJSZXF1ZXN0XSIKKworUEFTUyBJbiB0aGUgdXBn
cmFkZW5lZWRlZCBldmVudCBoYW5kZXI6CitUZXN0IDQuOC45LjE6CitkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQKK1BBU1MgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShkYikgaXMgIltv
YmplY3QgSURCRGF0YWJhc2VdIgorVGVzdCA0LjguOS4zOgorUEFTUyBldmVudC5vbGRWZXJzaW9u
IGlzIDAKK1BBU1MgZXZlbnQubmV3VmVyc2lvbiBpcyA3CitQQVNTIGV2ZW50LnRhcmdldC5yZWFk
eVN0YXRlIGlzICJkb25lIgorVGVzdCA0LjEuNDoKK1BBU1MgZGIubmFtZSBpcyBkYm5hbWUKK1BB
U1MgZGIudmVyc2lvbiBpcyA3CitQQVNTIGRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDAK
K3RyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uCitQQVNTIE9iamVjdC5wcm90
b3R5cGUudG9TdHJpbmcuYXBwbHkodHJhbnNhY3Rpb24pIGlzICJbb2JqZWN0IElEQlRyYW5zYWN0
aW9uXSIKK29zID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInNvbWVPUyIpCitzYXdUcmFuc2FjdGlv
bkNvbXBsZXRlID0gdHJ1ZQorCitvcGVuU3VjY2VzcygpOgorVGVzdCA0LjEuNywgdGhhdCBhIHZl
cnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gd2FzIHJ1bi4KK1BBU1Mgc2F3VXBncmFkZU5lZWRlZCBp
cyB0cnVlCitQQVNTIHNhd1RyYW5zYWN0aW9uQ29tcGxldGUgaXMgdHJ1ZQorZGIgPSBldmVudC50
YXJnZXQucmVzdWx0CitLaW5kIG9mIHRlc3QgNC4xLjk6CitQQVNTIE9iamVjdC5wcm90b3R5cGUu
dG9TdHJpbmcuYXBwbHkoZGIpIGlzICJbb2JqZWN0IElEQkRhdGFiYXNlXSIKK1BBU1MgZGIudmVy
c2lvbiBpcyA3CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lv
bi1vcGVuLXdpdGgtdmVyc2lvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
aW50dmVyc2lvbi1vcGVuLXdpdGgtdmVyc2lvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiYTZmMGI3MmJm
YjY1NmY0MDE4ZTk1ODhjNDI3OTRhMWEwZDRhYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9wZW4td2l0aC12ZXJzaW9uLmh0bWwK
QEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2Fib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRl
ZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iNWUxYWU2ZjM3NjVmMjQ0ODNmNGRiNGI1YzM3YzkxMDMzNWM4NDlk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2Fib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC5qcwpAQCAtMCwwICsxLDQ2IEBACitp
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFy
ZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBhbiBhYm9ydCBpbiB0aGUgaW5p
dGlhbCB1cGdyYWRlbmVlZGVkIHNldHMgdmVyc2lvbiBiYWNrIHRvIDAiKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5hbWUgPSBzZWxm
LmxvY2F0aW9uLnBhdGhuYW1lLnN1YnN0cmluZygxICsgc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5s
YXN0SW5kZXhPZigiLyIpKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
ZGVsZXRlRGF0YWJhc2UoZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRl
U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gZGVsZXRlU3VjY2VzcyhldnQpIHsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAyKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRl
ZCA9IHVwZ3JhZGVOZWVkZWQ7Cit9CisKK2Z1bmN0aW9uIHVwZ3JhZGVOZWVkZWQoZXZ0KQorewor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidXBncmFkZU5lZWRlZCgpOiIpOworICAgIGV2ZW50
ID0gZXZ0OworICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICBzaG91bGRCZSgiZGIu
dmVyc2lvbiIsICIyIik7CisgICAgdHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQudHJhbnNhY3Rp
b247CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxi
YWNrOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBvbkFib3J0OworICAgIGV2YWxBbmRMb2co
InRyYW5zYWN0aW9uLmFib3J0KCkiKTsKK30KKworZnVuY3Rpb24gb25BYm9ydChldnQpCit7Cisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJvbkFib3J0KCk6Iik7CisgICAgZXZlbnQgPSBldnQ7
CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5kYi52ZXJzaW9uIiwgIjAiKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RvbnQtZnJlZXplLW9uLXJlZnJlc2guanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZG9udC1mcmVlemUtb24tcmVmcmVzaC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45YWUzMjVkMWIxNWU0MWIxYTY4ZTExNjBlMDllNzcxODQ4NjU5YTRmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2RvbnQtZnJlZXplLW9uLXJlZnJlc2guanMKQEAgLTAsMCArMSw1NyBAQAoraWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9
CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgc3BlY2lmeWluZyBhIHZlcnNpb24gd2hlbiBvcGVu
aW5nIGEgbm9uLWV4aXN0ZW50IGRiIGNhdXNlcyBhbiB1cGdyYWRlbmVlZGVkIGV2ZW50IGFuZCB0
aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBpcyBzZXQgY29ycmVjdGx5LiIpOworCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIGRibmFtZSA9IHNlbGYu
bG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKDEgKyBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lLmxh
c3RJbmRleE9mKCIvIikpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5k
ZWxldGVEYXRhYmFzZShkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVT
dWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBkZWxldGVTdWNjZXNzKGV2dCkgeworICAgIGV2YWxBbmRMb2coInJlcXVl
c3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHVwZ3JhZGVOZWVk
ZWQ7CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOwor
ICAgIGRlYnVnKCIiKTsKK30KKwordmFyIHNhd1RyYW5zYWN0aW9uQ29tcGxldGUgPSBmYWxzZTsK
K2Z1bmN0aW9uIHVwZ3JhZGVOZWVkZWQoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygidXBncmFkZU5lZWRlZCgpOiIpOworICAgIGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlKCJldmVudC5uZXdWZXJz
aW9uIiwgIjciKTsKKworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0
LnRyYW5zYWN0aW9uIik7CisgICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOworICAgIHRyYW5z
YWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlv
bi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZSkKKyAgICB7CisgICAgICAgIGRlYnVnKCIiKTsKKyAg
ICAgICAgZGVidWcoInRyYW5zYWN0aW9uLm9uY29tcGxldGU6Iik7CisgICAgICAgIGV2YWxBbmRM
b2coInNhd1RyYW5zYWN0aW9uQ29tcGxldGUgPSB0cnVlIik7CisgICAgfQorfQorCitmdW5jdGlv
biBvcGVuU3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlVHJ1ZSgic2F3VHJhbnNh
Y3Rpb25Db21wbGV0ZSIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisgICAgc2hvdWxkQmUoJ2RiLnZlcnNpb24nLCAiNyIpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvaW50dmVyc2lvbi1oaWdoLXZlcnNpb24tZmlyc3QuanMgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW50dmVyc2lvbi1oaWdoLXZlcnNp
b24tZmlyc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI3NThhZjRlNjBmNjI3ODliMTEwOWVmOTRkM2RjYWVm
ZGQ3MDk1OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9pbnR2ZXJzaW9uLWhpZ2gtdmVyc2lvbi1maXJzdC5qcwpAQCAtMCwwICsxLDE1
MCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgaWYgdHdvIG9wZW4g
cmVxdWVzdHMgYXJlIHdhaXRpbmcgYXQgdGhlIHNhbWUgdGltZSwgdGhlIG9uZSB3aXRoIHRoZSBo
aWdoZXIgdmVyc2lvbiBnZXRzIGNhbGxlZCBmaXJzdCIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIGRibmFtZSA9IHNlbGYubG9jYXRpb24u
cGF0aG5hbWUuc3Vic3RyaW5nKDEgKyBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lLmxhc3RJbmRleE9m
KCIvIikpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJh
c2UoZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlU3VjY2VzczsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gZGVsZXRlU3VjY2VzcyhldnQpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImRlbGV0
ZVN1Y2Nlc3MoKToiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4o
ZGJuYW1lLCAxKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZmlyc3RTdWNjZXNzRXZlbnRI
YW5kbGVyOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgIGdvdEZpcnN0VXBncmFkZU5lZWRlZEV2ZW50ID0gZmFsc2U7CisgICAgcmVxdWVzdC5vbnVw
Z3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldnQpIHsKKyAgICAgIGV2ZW50ID0gZXZ0OworICAgICAg
ZGVidWcoIiIpOworICAgICAgZGVidWcoInJlcXVlc3Qub251cGdyYWRlbmVlZGVkKCk6Iik7Cisg
ICAgICBldmFsQW5kTG9nKCJnb3RGaXJzdFVwZ3JhZGVOZWVkZWRFdmVudCA9IHRydWUiKTsKKyAg
ICAgIHNob3VsZEJlKCJldmVudC5vbGRWZXJzaW9uIiwgIjAiKTsKKyAgICAgIHNob3VsZEJlKCJl
dmVudC5uZXdWZXJzaW9uIiwgIjEiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGZpcnN0U3VjY2Vz
c0V2ZW50SGFuZGxlcihldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJmaXJzdFN1Y2Nlc3NFdmVudEhhbmRsZXIoKToiKQorICAgIHNob3VsZEJlVHJ1
ZSgiZ290Rmlyc3RVcGdyYWRlTmVlZGVkRXZlbnQiKTsKKyAgICBldmFsQW5kTG9nKCJjb25uZWN0
aW9uMSA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9u
MS5vbnZlcnNpb25jaGFuZ2UgPSB2ZXJzaW9uQ2hhbmdlSGFuZGxlciIpOworICAgIGV2YWxBbmRM
b2coInJlcXVlc3QyID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAyKSIpOworICAgIGV2YWxBbmRM
b2coInJlcXVlc3QzID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAzKSIpOworICAgIGV2YWxBbmRM
b2coInJlcXVlc3Q0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCA0KSIpOworICAgIHJlcXVlc3Qy
Lm9uc3VjY2VzcyA9IHN1Y2Nlc3NDYWxsYmFjazI7CisgICAgcmVxdWVzdDIub25ibG9ja2VkID0g
YmxvY2tlZEV2ZW50SGFuZGxlcjI7CisgICAgcmVxdWVzdDIub251cGdyYWRlbmVlZGVkID0gdXBn
cmFkZU5lZWRlZEV2ZW50SGFuZGxlcjI7CisgICAgcmVxdWVzdDIub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworCisgICAgcmVxdWVzdDMub25zdWNjZXNzID0gdW5leHBlY3RlZFN1
Y2Nlc3NDYWxsYmFjazsKKyAgICByZXF1ZXN0My5vbmJsb2NrZWQgPSBibG9ja2VkRXZlbnRIYW5k
bGVyMzsKKyAgICByZXF1ZXN0My5vbnVwZ3JhZGVuZWVkZWQgPSB1bmV4cGVjdGVkVXBncmFkZU5l
ZWRlZENhbGxiYWNrOworICAgIHJlcXVlc3QzLm9uZXJyb3IgPSBlcnJvckhhbmRsZXIzOworCisg
ICAgcmVxdWVzdDQub25zdWNjZXNzID0gc3VjY2Vzc0NhbGxiYWNrNDsKKyAgICByZXF1ZXN0NC5v
bmJsb2NrZWQgPSBibG9ja2VkRXZlbnRIYW5kbGVyNDsKKyAgICByZXF1ZXN0NC5vbnVwZ3JhZGVu
ZWVkZWQgPSB1cGdyYWRlTmVlZGVkRXZlbnRIYW5kbGVyNDsKKyAgICByZXF1ZXN0NC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK3ZhciB2ZXJzaW9uQ2hhbmdlRXZlbnRz
U2VlbiA9IDA7CitmdW5jdGlvbiB2ZXJzaW9uQ2hhbmdlSGFuZGxlcihldnQpCit7CisgICAgZXZl
bnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2ZXJzaW9uQ2hhbmdlSGFuZGxl
cigpOiIpOworICAgIGRlYnVnKCIrK3ZlcnNpb25DaGFuZ2VFdmVudHNTZWVuID0gIiArICgrK3Zl
cnNpb25DaGFuZ2VFdmVudHNTZWVuKSk7CisgICAgZGVidWcoImV2ZW50Lm9sZFZlcnNpb24gPSAi
ICsgZXZlbnQub2xkVmVyc2lvbik7CisgICAgZGVidWcoImV2ZW50Lm5ld1ZlcnNpb24gPSAiICsg
ZXZlbnQubmV3VmVyc2lvbik7Cit9CisKK3ZhciBnb3RCbG9ja2VkRXZlbnQyID0gZmFsc2U7Citm
dW5jdGlvbiBibG9ja2VkRXZlbnRIYW5kbGVyMihldnQpCit7CisgICAgZXZlbnQgPSBldnQ7Cisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJibG9ja2VkRXZlbnRIYW5kbGVyMigpOiIpOworICAg
IHNob3VsZEJlKCJldmVudC5vbGRWZXJzaW9uIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQu
bmV3VmVyc2lvbiIsICIyIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZ290QmxvY2tlZEV2ZW50NCIp
OworICAgIGV2YWxBbmRMb2coImdvdEJsb2NrZWRFdmVudDIgPSB0cnVlIik7CisgICAgZXZhbEFu
ZExvZygiY29ubmVjdGlvbjEuY2xvc2UoKSIpOworICAgIGlmIChnb3RCbG9ja2VkRXZlbnQ0KQor
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gdXBncmFkZU5lZWRlZEV2ZW50
SGFuZGxlcjIoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygidXBncmFkZU5lZWRlZEV2ZW50SGFuZGxlcjIoKToiKTsKKyAgICBzaG91bGRCZUZhbHNl
KCJnb3RCbG9ja2VkRXZlbnQ0Iik7CisgICAgaWYgKGdvdEJsb2NrZWRFdmVudDQpCisgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2syKGV2dCkKK3sK
KyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInN1Y2Nlc3NDYWxs
YmFjazIoKToiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJnb3RCbG9ja2VkRXZlbnQ0Iik7CisgICAg
aWYgKGdvdEJsb2NrZWRFdmVudDQpCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit2YXIg
Z290QmxvY2tlZEV2ZW50NCA9IGZhbHNlOworZnVuY3Rpb24gYmxvY2tlZEV2ZW50SGFuZGxlcjQo
ZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiYmxv
Y2tlZEV2ZW50SGFuZGxlcjQoKToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQub2xkVmVyc2lvbiIs
ICIyIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNpb24iLCAiNCIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgiZ290QmxvY2tlZEV2ZW50MiIpOworICAgIGV2YWxBbmRMb2coImdvdEJsb2NrZWRF
dmVudDQgPSB0cnVlIik7Cit9CisKK2Z1bmN0aW9uIHVwZ3JhZGVOZWVkZWRFdmVudEhhbmRsZXI0
KGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInVw
Z3JhZGVOZWVkZWRFdmVudEhhbmRsZXI0KCk6Iik7Cit9CisKK2Z1bmN0aW9uIHN1Y2Nlc3NDYWxs
YmFjazQoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1
Zygic3VjY2Vzc0NhbGxiYWNrNCgpOiIpOworfQorCitmdW5jdGlvbiBlcnJvckhhbmRsZXIzKGV2
dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImVycm9y
SGFuZGxlcjMoKToiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gYmxvY2tl
ZEV2ZW50SGFuZGxlcjMoZXZ0KQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiYmxvY2tl
ZEV2ZW50SGFuZGxlcjMoKToiKTsKKyAgICBkZWJ1ZygiRkYgYWxzbyBmYWlscyB0aGlzIHRlc3Qu
Iik7CisgICAgdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjayhldnQpOworfQorCisKK3Rlc3QoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVu
LXdpdGgtdmVyc2lvbi1ibG9ja2VkLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLWJsb2NrZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWE0OTQ1
YWRmMTMyNDI0ODMzZWU3NTQ1M2VjN2IxMTAzZDExMzQ4YQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1i
bG9ja2VkLmpzCkBAIC0wLDAgKzEsOTYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigi
VGVzdCB0aGF0IGJsb2NrZWQgZXZlbnRzIGdldCBkZWxpdmVyZWQgcHJvcGVybHkgd2l0aCB0aGUg
bmV3IG9wZW4gYXBpIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7CisgICAgZGJuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmco
MSArIHNlbGYubG9jYXRpb24ucGF0aG5hbWUubGFzdEluZGV4T2YoIi8iKSk7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVTdWNjZXNzKGV2
dCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiZGVsZXRlU3VjY2VzcygpOiIpOworICAg
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDIpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmaXJzdFN1Y2Nlc3NFdmVudEhhbmRsZXI7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgZ290Rmlyc3RVcGdyYWRl
TmVlZGVkRXZlbnQgPSBmYWxzZTsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0
aW9uKGV2dCkgeworICAgICAgZXZlbnQgPSBldnQ7CisgICAgICBkZWJ1ZygiIik7CisgICAgICBk
ZWJ1ZygicmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQoKToiKTsKKyAgICAgIGV2YWxBbmRMb2coImdv
dEZpcnN0VXBncmFkZU5lZWRlZEV2ZW50ID0gdHJ1ZSIpOworICAgICAgc2hvdWxkQmUoImV2ZW50
Lm9sZFZlcnNpb24iLCAiMCIpOworICAgICAgc2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNpb24iLCAi
MiIpOworICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJTdHJpbmcoZXZlbnQpIiwgIltvYmpl
Y3QgSURCVXBncmFkZU5lZWRlZEV2ZW50XSIpOworICAgIH0KK30KKworZ290QmxvY2tlZEV2ZW50
ID0gZmFsc2U7CitmdW5jdGlvbiBmaXJzdFN1Y2Nlc3NFdmVudEhhbmRsZXIoZXZ0KQoreworICAg
IGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiZmlyc3RTdWNjZXNzRXZl
bnRIYW5kbGVyKCk6IikKKyAgICBzaG91bGRCZVRydWUoImdvdEZpcnN0VXBncmFkZU5lZWRlZEV2
ZW50Iik7CisgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjEgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjEub252ZXJzaW9uY2hhbmdlID0gdmVyc2lv
bkNoYW5nZUhhbmRsZXIiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIlN0cmluZyhjb25u
ZWN0aW9uMSkiLCAiW29iamVjdCBJREJEYXRhYmFzZV0iKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAzKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gc2Vjb25kU3VjY2Vzc0NhbGxiYWNrOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gYmxvY2tlZEV2ZW50SGFu
ZGxlcjsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHNlY29uZFVwZ3JhZGVOZWVkZWRF
dmVudEhhbmRsZXI7Cit9CisKK3ZhciBzYXdWZXJzaW9uQ2hhbmdlRXZlbnQgPSBmYWxzZTsKK2Z1
bmN0aW9uIHZlcnNpb25DaGFuZ2VIYW5kbGVyKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoInZlcnNpb25DaGFuZ2VIYW5kbGVyKCk6Iik7CisgICAg
ZXZhbEFuZExvZygic2F3VmVyc2lvbkNoYW5nZUV2ZW50ID0gdHJ1ZSIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZXZlbnQudHlwZSIsICJ2ZXJzaW9uY2hhbmdlIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJTdHJpbmcoZXZlbnQpIiwgIltvYmplY3QgSURCVmVyc2lvbkNoYW5n
ZUV2ZW50XSIpOworICAgIHNob3VsZEJlKCJldmVudC5vbGRWZXJzaW9uIiwgIjIiKTsKKyAgICBz
aG91bGRCZSgiZXZlbnQubmV3VmVyc2lvbiIsICIzIik7Cit9CisKK2Z1bmN0aW9uIGJsb2NrZWRF
dmVudEhhbmRsZXIoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAg
ICBkZWJ1ZygiYmxvY2tlZEV2ZW50SGFuZGxlcigpOiIpOworICAgIHNob3VsZEJlVHJ1ZSgic2F3
VmVyc2lvbkNoYW5nZUV2ZW50Iik7CisgICAgZXZhbEFuZExvZygiZ290QmxvY2tlZEV2ZW50ID0g
dHJ1ZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiU3RyaW5nKGV2ZW50KSIsICJbb2Jq
ZWN0IElEQlZlcnNpb25DaGFuZ2VFdmVudF0iKTsKKyAgICBzaG91bGRCZSgiZXZlbnQub2xkVmVy
c2lvbiIsICIyIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNpb24iLCAiMyIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudHlwZSIsICJibG9ja2VkIik7CisgICAgZXZh
bEFuZExvZygiY29ubmVjdGlvbjEuY2xvc2UoKSIpOworfQorCitnb3RTZWNvbmRVcGdyYWRlTmVl
ZGVkRXZlbnQgPSBmYWxzZTsKK2Z1bmN0aW9uIHNlY29uZFVwZ3JhZGVOZWVkZWRFdmVudEhhbmRs
ZXIoZXZ0KQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygic2Vjb25kVXBncmFkZU5lZWRl
ZEV2ZW50SGFuZGxlcigpOiIpOworICAgIHNob3VsZEJlVHJ1ZSgiZ290QmxvY2tlZEV2ZW50Iik7
CisgICAgZXZhbEFuZExvZygiZ290U2Vjb25kVXBncmFkZU5lZWRlZEV2ZW50ID0gdHJ1ZSIpOwor
fQorCitmdW5jdGlvbiBzZWNvbmRTdWNjZXNzQ2FsbGJhY2soZXZ0KQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1Zygic2Vjb25kU3VjY2Vzc0NhbGxiYWNrKCk6Iik7CisgICAgc2hvdWxkQmVU
cnVlKCJnb3RTZWNvbmRVcGdyYWRlTmVlZGVkRXZlbnQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsK
K30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLWNsb3NlLWJldHdlZW4tZXZlbnRzLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLWNs
b3NlLWJldHdlZW4tZXZlbnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlNDk3MjkzYjE5NTgxYTFlZjk5Y2Uy
ZmJmNTQyMzYzOGViNjUxZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24tY2xvc2UtYmV0d2Vlbi1ldmVu
dHMuanMKQEAgLTAsMCArMSw2NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGlt
cG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7
CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IHRoYXQgc3BlY2lmeWluZyBhIHZlcnNpb24gd2hlbiBvcGVuaW5nIGEgbm9uLWV4aXN0ZW50IGRi
IGNhdXNlcyBhbiB1cGdyYWRlbmVlZGVkIGV2ZW50IGFuZCB0aGF0IHRoZSB2ZXJzaW9uIG51bWJl
ciBpcyBzZXQgY29ycmVjdGx5LiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworICAgIGRibmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWUuc3Vi
c3RyaW5nKDEgKyBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lLmxhc3RJbmRleE9mKCIvIikpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUp
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVTdWNjZXNzOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVT
dWNjZXNzKGV2dCkgeworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3Blbihk
Ym5hbWUsIDcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICBy
ZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHVwZ3JhZGVOZWVkZWQ7CisgICAgcmVxdWVzdC5vbmJs
b2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIGRlYnVnKCIiKTsKK30KKwor
dmFyIHNhd1RyYW5zYWN0aW9uQ29tcGxldGUgPSBmYWxzZTsKK2Z1bmN0aW9uIHVwZ3JhZGVOZWVk
ZWQoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
dXBncmFkZU5lZWRlZCgpOiIpOworICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworICAgIHNob3VsZEJlKCJldmVudC5uZXdWZXJzaW9uIiwgIjciKTsKKworICAgIGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uIik7CisgICAg
dHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5z
YWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihlKQorICAgIHsKKyAgICAgICAgZGVidWcoIiIp
OworICAgICAgICBkZWJ1ZygidHJhbnNhY3Rpb24ub25jb21wbGV0ZToiKTsKKyAgICAgICAgZXZh
bEFuZExvZygic2F3VHJhbnNhY3Rpb25Db21wbGV0ZSA9IHRydWUiKTsKKyAgICAgICAgZXZhbEFu
ZExvZygic2V0VGltZW91dChjbG9zZURCLCAwKSIpOworICAgIH0KK30KKwordmFyIGRpZENhbGxD
bG9zZURCID0gZmFsc2U7CitmdW5jdGlvbiBjbG9zZURCKCkKK3sKKyAgICBkZWJ1ZygiIik7Cisg
ICAgZGVidWcoImNsb3NlREIoKToiKTsKKyAgICBldmFsQW5kTG9nKCJkaWRDYWxsQ2xvc2VEQiA9
IHRydWUiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgZmluaXNoSlNUZXN0
KCk7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgc2hvdWxk
QmVGYWxzZSgiZGlkQ2FsbENsb3NlREIiKTsKKyAgICBzaG91bGRCZVRydWUoInNhd1RyYW5zYWN0
aW9uQ29tcGxldGUiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworICAgIHNob3VsZEJlKCdkYi52ZXJzaW9uJywgIjciKTsKK30KKwordGVzdCgpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4t
d2l0aC12ZXJzaW9uLWNsb3NlLWluLW9uY29tcGxldGUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24tY2xvc2UtaW4tb25jb21wbGV0
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mYmQ5NThhYTBlNjBkZDQ5NTVjODY5NjM1OTFiNDk5N2YyNWFmYjk4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL29wZW4td2l0aC12ZXJzaW9uLWNsb3NlLWluLW9uY29tcGxldGUuanMKQEAgLTAsMCArMSw1
OCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgc3BlY2lmeWluZyBh
IHZlcnNpb24gd2hlbiBvcGVuaW5nIGEgbm9uLWV4aXN0ZW50IGRiIGNhdXNlcyBhbiB1cGdyYWRl
bmVlZGVkIGV2ZW50IGFuZCB0aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBpcyBzZXQgY29ycmVjdGx5
LiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwor
ICAgIGRibmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKDEgKyBzZWxmLmxv
Y2F0aW9uLnBhdGhuYW1lLmxhc3RJbmRleE9mKCIvIikpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBkZWxldGVTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVTdWNjZXNzKGV2dCkgeworICAg
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDcpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5l
ZWRlZCA9IHVwZ3JhZGVOZWVkZWQ7CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVk
QmxvY2tlZENhbGxiYWNrOworfQorCit2YXIgc2F3VHJhbnNhY3Rpb25Db21wbGV0ZSA9IGZhbHNl
OworZnVuY3Rpb24gdXBncmFkZU5lZWRlZChldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJ1cGdyYWRlTmVlZGVkKCk6Iik7CisgICAgZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm5ld1Zl
cnNpb24iLCAiNyIpOworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKFwib3Nc
IikiKTsKKworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnRyYW5z
YWN0aW9uIik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihlKQorICAgIHsKKyAg
ICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1ZygidHJhbnNhY3Rpb24ub25jb21wbGV0ZToi
KTsKKyAgICAgICAgZXZhbEFuZExvZygic2F3VHJhbnNhY3Rpb25Db21wbGV0ZSA9IHRydWUiKTsK
KyAgICAgICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOworICAgIH0KK30KKworZnVuY3Rpb24g
b3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAg
ICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZVRydWUoInNhd1RyYW5zYWN0
aW9uQ29tcGxldGUiKTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKyAgICBzaG91bGRCZSgnZGIudmVyc2lvbicsICI3Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignb3MnLCAncmVhZHdyaXRlJyki
LCAiRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSIiwgIidJbnZhbGlkU3RhdGVFcnJvcici
KTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLWluaXRp
YWwtdmVyc2lvbi5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9v
cGVuLXdpdGgtdmVyc2lvbi1pbml0aWFsLXZlcnNpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmU3ZDBmM2U4
M2VhMTMxNTc0NjBhYTAxOTM4MjQ0NTYzZjdlOTU4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi1pbml0
aWFsLXZlcnNpb24uanMKQEAgLTAsMCArMSwzOCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
eworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IHRoYXQgaW5pdGlhbCB2ZXJzaW9uIGFmdGVyIGEgc3VjY2Vzc2Z1bCBvcGVuIG9m
IGEgbm9uLWV4aXN0ZW50IGRiIGlzIDEiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1l
LnN1YnN0cmluZygxICsgc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5sYXN0SW5kZXhPZigiLyIpKTsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJu
YW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlU3VjY2VzczsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVs
ZXRlU3VjY2VzcyhldnQpIHsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbigpIHsKKyAgICAgIHRlc3RQYXNzZWQoIkdvdCB1cGdy
YWRlbmVlZGVkIGV2ZW50Iik7CisgICAgfQorfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcyhldnQp
Cit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJvcGVuU3Vj
Y2VzcygpOiIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisgICAgZGVidWcoIlRlc3QgbGluZSBmcm9tIElEQkZhY3Rvcnkub3BlbjogSWYgbm8gdmVy
c2lvbiBpcyBzcGVjaWZpZWQgYW5kIG5vIGRhdGFiYXNlIGV4aXN0cywgc2V0IGRhdGFiYXNlIHZl
cnNpb24gdG8gMS4iKTsKKyAgICBzaG91bGRCZSgnZGIudmVyc2lvbicsICcxJyk7CisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi13aXRoLWRlbGV0ZS5qcyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lv
bi13aXRoLWRlbGV0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTZmYjRkMzdlZjI5OTdmNDEzNjIzYmJhNmI3
NTgzNGQwYzdjYzY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL29wZW4td2l0aC12ZXJzaW9uLXdpdGgtZGVsZXRlLmpzCkBAIC0wLDAg
KzEsNzQgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNj
cmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGEgZGVsZXRl
RGF0YWJhc2UgY2FsbGVkIHdoaWxlIGhhbmRsaW5nIGFuIHVwZ3JhZGVuZWVkZWQgZXZlbnQgaXMg
cXVldWVkIGFuZCBmaXJlcyBpdHMgZXZlbnRzIGF0IHRoZSByaWdodCB0aW1lIik7CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgZGJuYW1lID0g
c2VsZi5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMSArIHNlbGYubG9jYXRpb24ucGF0aG5h
bWUubGFzdEluZGV4T2YoIi8iKSk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGlu
aXRpYWxseURlbGV0ZWQ7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK3ZhciBzYXdGaXJzdFVwZ3JhZGVOZWVkZWQgPSBmYWxzZTsKK3ZhciBhbHJl
YWR5RGVsZXRlZCA9IGZhbHNlOworZnVuY3Rpb24gaW5pdGlhbGx5RGVsZXRlZChldnQpIHsKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoImluaXRpYWxseURlbGV0ZWQoKToiKTsKKyAgICBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAxKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmaXJzdFVw
Z3JhZGVOZWVkZWQ7Cit9CisKK2Z1bmN0aW9uIGZpcnN0VXBncmFkZU5lZWRlZChldnQpCit7Cisg
ICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJmaXJzdFVwZ3JhZGVO
ZWVkZWQoKToiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJzYXdGaXJzdFVwZ3JhZGVOZWVkZWQiKTsK
KyAgICBldmFsQW5kTG9nKCJzYXdGaXJzdFVwZ3JhZGVOZWVkZWQgPSB0cnVlIik7CisgICAgc2hv
dWxkQmUoImV2ZW50Lm9sZFZlcnNpb24iLCAiMCIpOworICAgIHNob3VsZEJlKCJldmVudC5uZXdW
ZXJzaW9uIiwgIjEiKTsKKyAgICBpZiAoIWFscmVhZHlEZWxldGVkKSB7CisgICAgICAgIGFscmVh
ZHlEZWxldGVkID0gdHJ1ZTsKKyAgICAgICAgcmVxdWVzdDIgPSBldmFsQW5kTG9nKCJkZWxldGVS
ZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAgICAgICAgcmVx
dWVzdDIub25zdWNjZXNzID0gbWlkUmVxdWVzdERlbGV0ZTsKKyAgICAgICAgcmVxdWVzdDIub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Mi5vbmJsb2Nr
ZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIH0KK30KKworZnVuY3Rpb24gbWlk
UmVxdWVzdERlbGV0ZShldnQpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJtaWRSZXF1
ZXN0RGVsZXRlKCk6Iik7Cit9CisKK3Nhd1ZlcnNpb25DaGFuZ2UgPSBmYWxzZTsKK2Z1bmN0aW9u
IG9wZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7Cisg
ICAgZGVidWcoInJlcXVlc3Qub25zdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmVUcnVlKCJzYXdG
aXJzdFVwZ3JhZGVOZWVkZWQiKTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKyAgICBkYi5vbnZlcnNpb25jaGFuZ2UgPSBmdW5jdGlvbihldnQpIHsKKyAgICAg
IGV2ZW50ID0gZXZ0OworICAgICAgZGVidWcoIiIpOworICAgICAgZGVidWcoImRiLm9udmVyc2lv
bmNoYW5nZSgpOiIpOworICAgICAgc2hvdWxkQmUoImV2ZW50Lm9sZFZlcnNpb24iLCAiMSIpOwor
ICAgICAgc2hvdWxkQmVOdWxsKCJldmVudC5uZXdWZXJzaW9uIik7CisgICAgICBldmFsQW5kTG9n
KCJzYXdWZXJzaW9uQ2hhbmdlID0gdHJ1ZSIpOworICAgICAgZGIuY2xvc2UoKTsKKyAgICB9Cisg
ICAgc2hvdWxkQmUoJ2RiLnZlcnNpb24nLCAnMScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQor
Cit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvb3Blbi13aXRoLXZlcnNpb24uanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvb3Blbi13aXRoLXZlcnNpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODg5ZWQzOTI2ZmE5
YjUyNDQ0YTczZTZmYTU1MjcyYzU5NDAwNDg1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLXdpdGgtdmVyc2lvbi5qcwpAQCAt
MCwwICsxLDc2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBv
cnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBzcGVj
aWZ5aW5nIGEgdmVyc2lvbiB3aGVuIG9wZW5pbmcgYSBub24tZXhpc3RlbnQgZGIgY2F1c2VzIGFu
IHVwZ3JhZGVuZWVkZWQgZXZlbnQgYW5kIHRoYXQgdGhlIHZlcnNpb24gbnVtYmVyIGlzIHNldCBj
b3JyZWN0bHkuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7CisgICAgZGJuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMSAr
IHNlbGYubG9jYXRpb24ucGF0aG5hbWUubGFzdEluZGV4T2YoIi8iKSk7CisKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoZXZ0
KSB7CisgICAgZGVidWcoIlNob3VsZCB0cmlnZ2VyOiIpOworICAgIGRlYnVnKCI0LjEuNDogSWYg
bm8gZGF0YWJhc2Ugd2l0aCB0aGUgZ2l2ZW4gbmFtZSBmcm9tIHRoZSBvcmlnaW4gb3JpZ2luIHdh
cyBmb3VuZCwgb3IgaWYgaXQgd2FzIGRlbGV0ZWQgZHVyaW5nIHRoZSBwcmV2aW91cyBzdGVwLCB0
aGVuIGNyZWF0ZSBhIGRhdGFiYXNlIHdpdGggbmFtZSBuYW1lLCB3aXRoIDAgYXMgdmVyc2lvbiwg
YW5kIHdpdGggbm8gb2JqZWN0IHN0b3Jlcy4gTGV0IGRiIGJlIHRoZSBuZXcgZGF0YWJhc2UuIik7
CisgICAgZGVidWcoIjQuMS42OiBDcmVhdGUgYSBuZXcgY29ubmVjdGlvbiB0byBkYiBhbmQgbGV0
IGNvbm5lY3Rpb24gcmVwcmVzZW50IGl0LiIpOworICAgIGRlYnVnKCI0LjEuNzogSWYgdGhlIHZl
cnNpb24gb2YgZGIgaXMgbG93ZXIgdGhhbiB2ZXJzaW9uLCB0aGVuIHJ1biB0aGUgc3RlcHMgZm9y
IHJ1bm5pbmcgYSBcInZlcnNpb25jaGFuZ2VcIiB0cmFuc2FjdGlvbiB1c2luZyBjb25uZWN0aW9u
LCB2ZXJzaW9uLCByZXF1ZXN0IGFuZCB1cGdyYWRlIGNhbGxiYWNrLiIpOworICAgIGRlYnVnKCI0
LjEuOTogUmV0dXJuIGNvbm5lY3Rpb24uIik7CisKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
aW5kZXhlZERCLm9wZW4oZGJuYW1lLCA3KSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShyZXF1ZXN0KSIsICJbb2JqZWN0IElEQk9w
ZW5EQlJlcXVlc3RdIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAg
ICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHVwZ3JhZGVOZWVkZWQ7CisgICAgcmVxdWVzdC5v
bmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIGRlYnVnKCIiKTsKK30K
KwordmFyIHNhd1VwZ3JhZGVOZWVkZWQgPSBmYWxzZTsKK3ZhciBzYXdUcmFuc2FjdGlvbkNvbXBs
ZXRlID0gZmFsc2U7CitmdW5jdGlvbiB1cGdyYWRlTmVlZGVkKGV2dCkKK3sKKyAgICBldmVudCA9
IGV2dDsKKyAgICB0ZXN0UGFzc2VkKCJJbiB0aGUgdXBncmFkZW5lZWRlZCBldmVudCBoYW5kZXI6
Iik7CisgICAgZGVidWcoIlRlc3QgNC44LjkuMToiKTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk9iamVjdC5w
cm90b3R5cGUudG9TdHJpbmcuYXBwbHkoZGIpIiwgIltvYmplY3QgSURCRGF0YWJhc2VdIik7Cisg
ICAgZGVidWcoIlRlc3QgNC44LjkuMzoiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQub2xkVmVyc2lv
biIsICIwIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNpb24iLCAiNyIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUiLCAiZG9uZSIpOwor
ICAgIGRlYnVnKCJUZXN0IDQuMS40OiIpOworICAgIHNob3VsZEJlKCJkYi5uYW1lIiwgImRibmFt
ZSIpOworICAgIHNob3VsZEJlKCJkYi52ZXJzaW9uIiwgIjciKTsKKyAgICBzaG91bGRCZSgiZGIu
b2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOworCisgICAgZXZhbEFuZExvZygidHJhbnNh
Y3Rpb24gPSBldmVudC50YXJnZXQudHJhbnNhY3Rpb24iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkodHJhbnNhY3Rpb24pIiwgIltv
YmplY3QgSURCVHJhbnNhY3Rpb25dIik7CisgICAgZXZhbEFuZExvZygnb3MgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgic29tZU9TIiknKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9u
KGUpIHsKKyAgICAgIGV2YWxBbmRMb2coInNhd1RyYW5zYWN0aW9uQ29tcGxldGUgPSB0cnVlIik7
CisgICAgfQorICAgIHNhd1VwZ3JhZGVOZWVkZWQgPSB0cnVlOworfQorCitmdW5jdGlvbiBvcGVu
U3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIGRlYnVnKCJUZXN0IDQuMS43LCB0aGF0IGEgdmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB3YXMgcnVuLiIpOworICAgIHNob3VsZEJlKCJzYXdVcGdy
YWRlTmVlZGVkIiwgInRydWUiKTsKKyAgICBzaG91bGRCZVRydWUoInNhd1RyYW5zYWN0aW9uQ29t
cGxldGUiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OworICAgIGRlYnVnKCJLaW5kIG9mIHRlc3QgNC4xLjk6Iik7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KGRiKSIsICJbb2JqZWN0IElE
QkRhdGFiYXNlXSIpOworICAgIHNob3VsZEJlKCdkYi52ZXJzaW9uJywgIjciKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldHZlcnNpb24tdXBncmFkZW5lZWRlZC1pbnRlcnR3aW5l
ZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXR2ZXJzaW9u
LXVwZ3JhZGVuZWVkZWQtaW50ZXJ0d2luZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2JmODZiZGFiNTM5M2Qx
MjcxOWU2MTBhNzU3ZmRiNThmM2E5OTE4MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXR2ZXJzaW9uLXVwZ3JhZGVuZWVkZWQtaW50
ZXJ0d2luZWQuanMKQEAgLTAsMCArMSwxODkgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsK
KyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlv
bigiVGVzdCB0aGF0IGJsYWggYmxhaC4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1l
LnN1YnN0cmluZygxICsgc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5sYXN0SW5kZXhPZigiLyIpKTsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJu
YW1lKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiU3RyaW5nKHJlcXVlc3QpIiwgIltv
YmplY3QgSURCT3BlbkRCUmVxdWVzdF0iKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0
ZVN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoZXZ0KSB7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJDYWxsIG9wZW4gd2l0aCBubyB2ZXJzaW9uIHBhcmFtZXRlcjoiKTsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSB1bmV4cGVjdGVk
VXBncmFkZU5lZWRlZENhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcyhldnQpCit7
CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJvcGVuU3VjY2Vz
cygpOiIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgIiIpOworICAgIGV2YWxB
bmRMb2coJ3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCJzb21lIHZlcnNpb24iKScpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3Rl
ZEJsb2NrZWRDYWxsYmFjazsKK30KKworZnVuY3Rpb24gaW5TZXRWZXJzaW9uKGV2dCkKK3sKKyAg
ICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImluU2V0VmVyc2lvbigp
OiIpOworICAgIHRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICB0cmFucy5vbmNvbXBs
ZXRlID0gc2V0VmVyc2lvbkRvbmU7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOworICAgIGRiID0gdHJhbnMuZGI7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJkYi52ZXJzaW9uIiwgInNvbWUgdmVyc2lvbiIpOworICAgIC8vIEZJWE1FOiBBbHNvIGNhbGwg
b3BlbiB3aXRoIHZlcnNpb24gZnJvbSBoZXJlLgorfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uRG9u
ZShldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJz
ZXRWZXJzaW9uRG9uZSgpOiIpOworICAgIGRiID0gZXZlbnQudGFyZ2V0LmRiOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJzb21lIHZlcnNpb24iKTsKKyAgICBldmFs
QW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKGRibmFtZSkiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0Lm9uc3VjY2VzcyA9IHNl
Y29uZE9wZW4iKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHVuZXhwZWN0ZWRVcGdyYWRlTmVlZGVk
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNlY29uZE9wZW4oZXZ0KQoreworICAgIGV2ZW50ID0g
ZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygic2Vjb25kT3BlbigpOiIpOworICAgIGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiU3RyaW5nKGRiKSIsICJbb2JqZWN0IElEQkRhdGFiYXNlXSIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJzb21lIHZlcnNpb24iKTsKKyAgICBldmFs
QW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgLy8gRklYTUU6IEFsc28gY2FsbCBpdCB3aXRoIDAs
IC0xLCBhbmQgLTQuCisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRi
bmFtZSwgMikiKTsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZpcnN0VXBncmFkZU5l
ZWRlZAorICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZpcnN0T3BlbldpdGhWZXJzaW9uOworfQorCitmdW5jdGlvbiBmaXJz
dFVwZ3JhZGVOZWVkZWQoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1ZygiZmlyc3RVcGdyYWRlTmVlZGVkKCk6Iik7CisgICAgZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJTdHJp
bmcoZGIpIiwgIltvYmplY3QgSURCRGF0YWJhc2VdIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJTdHJpbmcocmVxdWVzdC50cmFuc2FjdGlvbikiLCAiW29iamVjdCBJREJUcmFuc2FjdGlv
bl0iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50Lm9sZFZlcnNpb24iLCAic29t
ZSB2ZXJzaW9uIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNpb24iLCAiMiIpOworICAg
IGV2YWxBbmRMb2coInJlcXVlc3QudHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9u
Q29tcGxldGVkIik7CisgICAgcmVxdWVzdC50cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3Rl
ZEFib3J0Q2FsbGJhY2s7Cit9CisKK3ZhciBkaWRUcmFuc2FjdGlvbkNvbXBsZXRlID0gZmFsc2U7
CitmdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlZChldnQpCit7CisgICAgZXZlbnQgPSBldnQ7
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0cmFuc2FjdGlvbkNvbXBsZXRlZCgpOiIpOwor
ICAgIGV2YWxBbmRMb2coImRpZFRyYW5zYWN0aW9uQ29tcGxldGUgPSB0cnVlIik7Cit9CisKK2Z1
bmN0aW9uIGZpcnN0T3BlbldpdGhWZXJzaW9uKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoImZpcnN0T3BlbldpdGhWZXJzaW9uKCk6Iik7CisgICAg
c2hvdWxkQmVUcnVlKCJkaWRUcmFuc2FjdGlvbkNvbXBsZXRlIik7CisgICAgZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJT
dHJpbmcoZGIpIiwgIltvYmplY3QgSURCRGF0YWJhc2VdIik7CisgICAgc2hvdWxkQmVOdWxsKCJy
ZXF1ZXN0LnRyYW5zYWN0aW9uIik7CisgICAgc2hvdWxkQmUoImRiLnZlcnNpb24iLCAiMiIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiU3RyaW5nKHJlcXVlc3QpIiwgIltvYmplY3QgSURC
T3BlbkRCUmVxdWVzdF0iKTsKKyAgICBldmFsQW5kTG9nKCdyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bigic3RyaW5nIHZlcnNpb24gMiIpJyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJTdHJp
bmcocmVxdWVzdCkiLCAiW29iamVjdCBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdF0iKTsKKyAgICBy
ZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgIGV2YWxBbmRMb2co
InJlcXVlc3Qub25lcnJvciA9IHNldFZlcnNpb25Ob3RBbGxvd2VkIik7Cit9CisKK2Z1bmN0aW9u
IHNldFZlcnNpb25Ob3RBbGxvd2VkKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoInNldFZlcnNpb25Ob3RBbGxvd2VkKCk6Iik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJldmVudC50eXBlIiwgImVycm9yIik7CisgICAgZGVidWcoInJlcXVl
c3Qud2Via2l0RXJyb3JNZXNzYWdlID0gIiArIHJlcXVlc3Qud2Via2l0RXJyb3JNZXNzYWdlKTsK
KyAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9
IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgMSkiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0Lm9u
ZXJyb3IgPSBlcnJvcldoZW5UcnlpbmdMb3dWZXJzaW9uIik7CisgICAgcmVxdWVzdC5vbmJsb2Nr
ZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
dW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZXJyb3JXaGVuVHJ5aW5n
TG93VmVyc2lvbihldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJlcnJvcldoZW5UcnlpbmdMb3dWZXJzaW9uKCk6Iik7CisgICAgZGVidWcoInJlcXVl
c3Qud2Via2l0RXJyb3JNZXNzYWdlID0gIiArIHJlcXVlc3Qud2Via2l0RXJyb3JNZXNzYWdlKTsK
KyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCA0KSIpOwor
ICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBldmFsQW5kTG9n
KCJyZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHNlY29uZFVwZ3JhZGVOZWVkZWQiKTsKKyAgICBl
dmFsQW5kTG9nKCJyZXF1ZXN0Lm9uc3VjY2VzcyA9IHRoaXJkT3BlblN1Y2Nlc3MiKTsKK30KKwor
dmFyIGdvdFNlY29uZFVwZ3JhZGVOZWVkZWQgPSBmYWxzZTsKK2Z1bmN0aW9uIHNlY29uZFVwZ3Jh
ZGVOZWVkZWQoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1Zygic2Vjb25kVXBncmFkZU5lZWRlZCgpOiIpOworICAgIGV2YWxBbmRMb2coImdvdFNlY29u
ZFVwZ3JhZGVOZWVkZWQgPSB0cnVlIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm9sZFZlcnNpb24i
LCAiMiIpOworICAgIHNob3VsZEJlKCJldmVudC5uZXdWZXJzaW9uIiwgIjQiKTsKK30KKworZnVu
Y3Rpb24gdGhpcmRPcGVuU3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJ0aGlyZE9wZW5TdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmVU
cnVlKCJnb3RTZWNvbmRVcGdyYWRlTmVlZGVkIik7CisgICAgZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmUoImRiLnZlcnNpb24iLCAiNCIpOworICAg
IGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5k
ZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3Qub25zdWNjZXNz
ID0gZm91cnRoT3BlblN1Y2Nlc3MiKTsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHVu
ZXhwZWN0ZWRVcGdyYWRlTmVlZGVkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZFVwZ3JhZGVOZWVkZWRDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZm91cnRoT3BlblN1
Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1
ZygiZm91cnRoT3BlblN1Y2Nlc3MoKToiKTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZSgiZGIudmVyc2lvbiIsICI0Iik7CisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154847</attachid>
            <date>2012-07-26 22:57:04 -0700</date>
            <delta_ts>2012-07-26 22:57:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89505-20120726225652.patch</filename>
            <type>text/plain</type>
            <size>151464</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE1Y2MzNDkxMjEyYTJi
ZWMyODUwM2FlMTI4ZWYyMWZiYmViNDYxZC4uZWFiOGFkMmYzZjgwNDAxYTQzN2ExZWUyZDJkMDVj
YWRhYjViYTI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NCBAQAorMjAxMi0wNy0yNiAgRGF2
aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBp
bXBsZW1lbnQgdXBncmFkZW5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODk1MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBh
cyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlv
bnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogc3RvcmFnZS9pbmRleGVkZGIvaW50
dmVyc2lvbi1hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQuaHRtbAorICAgICAgICAgICAg
ICAgc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hbmQtc2V0dmVyc2lvbi5odG1sCisgICAg
ICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWJsb2NrZWQuaHRtbAorICAg
ICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9zZS1iZXR3ZWVuLWV2
ZW50cy5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNs
b3NlLWluLW9uY29tcGxldGUuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIv
aW50dmVyc2lvbi1kZWxldGUtaW4tdXBncmFkZW5lZWRlZC5odG1sCisgICAgICAgICAgICAgICBz
dG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWRvbnQtZnJlZXplLW9uLXJlZnJlc2guaHRtbAor
ICAgICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1oaWdoLXZlcnNpb24t
Zmlyc3QuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1v
bWl0LXBhcmFtZXRlci5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2
ZXJzaW9uLW9wZW4td2l0aC12ZXJzaW9uLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoSURCQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9u
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQkNhbGxiYWNrczo6b25CbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkNhbGxiYWNrczo6b25VcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6c2V0VmVy
c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6b25WZXJzaW9uQ2hhbmdlKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnJlZ2lz
dGVyRnJvbnRlbmRDYWxsYmFja3MpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlLmg6CisgICAgICAgIChJREJEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpQZW5kaW5nT3BlbkNhbGwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhW
ZXJzaW9uQ2FsbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjYWxsYmFja3MpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNh
bGw6OnZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFj
a2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3Bl
bkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1l
dGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZl
cnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW50
VmVyc2lvbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZElt
cGw6OnRyYW5zYWN0aW9uRmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZEFuZEV2ZW50c0ZpcmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5nQ2FsbHMpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZElt
cGw6Om9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZElt
cGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmg6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrczo6b25WZXJzaW9uQ2hhbmdl
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNp
b25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmg6CisgICAgICAgIChJREJEYXRhYmFzZUNhbGxi
YWNrc0ltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5Lmg6CisgICAgICAgIChJREJG
YWN0b3J5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaDoKKyAgICAgICAgKElEQkZh
Y3RvcnlCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNl
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnB1dFZhckludCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldFVwTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFj
a2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJhc2VJbnRW
ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0
ZURhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2lu
Z1N0b3JlLmg6CisgICAgICAgIChJREJMZXZlbERCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmg6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCTWV0YWRhdGEuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJP
cGVuREJSZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJP
cGVuREJSZXF1ZXN0OjpJREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9w
ZW5EQlJlcXVlc3Q6On5JREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9w
ZW5EQlJlcXVlc3Q6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRC
UmVxdWVzdDo6b25CbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6
Om9uVXBncmFkZU5lZWRlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRC
UmVxdWVzdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
SURCT3BlbkRCUmVxdWVzdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRC
UmVxdWVzdC5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmguCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJD
b3JlOjpJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJl
cXVlc3Q6OmNsZWFyVHJhbnNhY3Rpb25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmVucXVldWVFdmVudCk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVz
dDo6b25CbG9ja2VkKToKKyAgICAgICAgKElEQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVxdWVzdDo6aXNPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246OklEQlRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpzZXRBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpc3BhdGNo
RXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKElEQlRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNvbW1pdCk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
LmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVXBncmFkZU5l
ZWRlZEV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVXBncmFkZU5lZWRlZEV2
ZW50OjpJREJVcGdyYWRlTmVlZGVkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVXBncmFk
ZU5lZWRlZEV2ZW50Ojp+SURCVXBncmFkZU5lZWRlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlVwZ3JhZGVOZWVkZWRFdmVudDo6b2xkVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJVcGdyYWRlTmVlZGVkRXZlbnQ6Om5ld1ZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURC
VXBncmFkZU5lZWRlZEV2ZW50OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJVcGdyYWRlTmVlZGVkRXZlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmguCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKElEQlVwZ3JhZGVOZWVkZWRFdmVudCk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmlkbDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3MuaC4KKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmluOgorICAgICAgICAqIGRv
bS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA3LTI2ICBOYXlh
biBLdW1hciBLICA8bmF5YW5ra0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgW1dlYkdMXSBJbml0
aWFsIHNpemUgb2YgY2FudmFzIGNhbiBiZSBsYXJnZXIgdGhhbiBNQVhfVklFV1BPUlRfRElNUy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMWQ3MDQ3NDBjN2ZhZGQ4NjE5OThkYWU4ODUz
OGU2MmE3NDE1MTZlZC4uOGY5N2NmNDFlODRkMWQxZDI1MzgwYTg5N2U0MDJmM2FmYTIwMjk5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxMi0wNy0yNiAg
RGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERC
OiBpbXBsZW1lbnQgdXBncmFkZW5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODk1MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3Vj
aCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlw
dGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5OjpvbkJsb2NrZWQpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJhY2tzUHJveHk6Om9uVXBn
cmFkZU5lZWRlZCk6CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5Lmg6CisgICAgICAg
IChJREJDYWxsYmFja3NQcm94eSk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OnNldFZl
cnNpb24pOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6b25WZXJzaW9uQ2hhbmdl
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tz
UHJveHkuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAq
IHNyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCRmFj
dG9yeUJhY2tlbmRQcm94eTo6b3Blbik6CisgICAgICAgICogc3JjL0lEQkZhY3RvcnlCYWNrZW5k
UHJveHkuaDoKKyAgICAgICAgKElEQkZhY3RvcnlCYWNrZW5kUHJveHkpOgorICAgICAgICAqIHNy
Yy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ2FsbGJh
Y2tzSW1wbDo6V2ViSURCQ2FsbGJhY2tzSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNh
bGxiYWNrc0ltcGw6Om9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNhbGxiYWNr
c0ltcGw6Om9uQmxvY2tlZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDYWxsYmFja3NJbXBsOjpvblVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAqIHNyYy9XZWJJ
REJDYWxsYmFja3NJbXBsLmg6CisgICAgICAgIChXZWJJREJDYWxsYmFja3NJbXBsKToKKyAgICAg
ICAgKiBzcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25DaGFuZ2UpOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmg6
CisgICAgICAgIChXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwpOgorICAgICAgICAqIHNyYy9X
ZWJJREJGYWN0b3J5SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkZhY3RvcnlJbXBs
OjpvcGVuKToKKyAgICAgICAgKiBzcmMvV2ViSURCRmFjdG9yeUltcGwuaDoKKyAgICAgICAgKFdl
YklEQkZhY3RvcnlJbXBsKToKKyAgICAgICAgKiB0ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmFpbGluZ0JhY2tpbmdTdG9yZTo6Y3JlYXRlSURCRGF0
YWJhc2VNZXRhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0
cy9JREJGYWtlQmFja2luZ1N0b3JlLmg6CisKIDIwMTItMDctMjYgIFNoZXJpZmYgQm90ICA8d2Vi
a2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxMjM3OTkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkJhY2tpbmdTdG9yZS5oCmluZGV4IDc4YTlmNjY3YWRkMTMwZTYzZTNjMDc0NmQ0YTcwM2I0ODk1
NDZiZDcuLjUyNzkwMzQyZGQ3NDQ4MDllY2YzNDMwMTliMzliYzFiMWViMzMxMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCkBA
IC00Nyw4ICs0Nyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJCYWNraW5nU3RvcmUoKSB7
fTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFZlY3RvcjxTdHJpbmc+JiBm
b3VuZE5hbWVzKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEo
Y29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJ
ZCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYg
bmFtZSwgU3RyaW5nJiBmb3VuZFN0cmluZ1ZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVyc2lv
biwgaW50NjRfdCYgZm91bmRJZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRh
YmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdWZXJz
aW9uLCBjb25zdCBpbnQ2NF90IGludFZlcnNpb24sIGludDY0X3QmIHJvd0lkKSA9IDA7CisgICAg
dmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbihpbnQ2NF90IHJvd0lkLCBp
bnQ2NF90IGludFZlcnNpb24pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFs
IGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YShpbnQ2NF90IHJvd0lkLCBjb25zdCBTdHJp
bmcmIHZlcnNpb24pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoY29uc3Qg
U3RyaW5nJiBuYW1lKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ2FsbGJhY2tzLmgKaW5kZXggODUzZmZjNzJkMjYwMzkxZmNjNDM2NjRkNTczZmM1ZGFl
MzAyZGMwZi4uMmE2YWZlZjM4MzE1YmU2NWIyNjYyOGU1Njg4NmRiYTMyYWM1MzY0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKQEAgLTU5
LDcgKzU5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktleT4sIGNvbnN0IElEQktl
eVBhdGgmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24o
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0
b3I8UmVmUHRyPElEQktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4m
IHByaW1hcnlLZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
PiYgdmFsdWVzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBvbkJsb2NrZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24pIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25VcGdyYWRlTmVlZGVkKGludDY0X3Qg
b2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pIHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCA1YzNkZmNiNmI1NDJj
MWJlMDZiMjQxYjQ3Y2U5YmFjYjliNjYyOWI0Li45Y2FhNmIzODMwMDcwMDUyOGM1MGVmN2U2MTZi
YjQ1NWNlNjFiZWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSURCT2JqZWN0U3Rv
cmUuaCIKICNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24u
aCIKKyNpbmNsdWRlICJJREJVcGdyYWRlTmVlZGVkRXZlbnQuaCIKICNpbmNsdWRlICJJREJWZXJz
aW9uQ2hhbmdlRXZlbnQuaCIKICNpbmNsdWRlICJJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKQEAgLTIwOCw2ICsyMDksNyBAQCBQ
YXNzUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBJREJEYXRhYmFzZTo6c2V0VmVyc2lv
bihTY3JpcHRFeGVjdXRpb25Db250ZQogICAgIH0KIAogICAgIFJlZlB0cjxJREJWZXJzaW9uQ2hh
bmdlUmVxdWVzdD4gcmVxdWVzdCA9IElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpjcmVhdGUoY29u
dGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIHZlcnNpb24pOworICAgIEFTU0VSVChtX2JhY2tl
bmQpOwogICAgIG1fYmFja2VuZC0+c2V0VmVyc2lvbih2ZXJzaW9uLCByZXF1ZXN0LCBtX2RhdGFi
YXNlQ2FsbGJhY2tzLCBlYyk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CkBAIC0zMDEsNiArMzAz
LDE3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmNsb3NlQ29ubmVjdGlvbigpCiAgICAgfQogfQogCit2
b2lkIElEQkRhdGFiYXNlOjpvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24s
IGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikKK3sKKyAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8
fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
bV9jbG9zZVBlbmRpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIGVucXVldWVFdmVudChJREJV
cGdyYWRlTmVlZGVkRXZlbnQ6OmNyZWF0ZShleGlzdGluZ1ZlcnNpb24sIHJlcXVlc3RlZFZlcnNp
b24sIGV2ZW50TmFtZXMoKS52ZXJzaW9uY2hhbmdlRXZlbnQpKTsKK30KKwogdm9pZCBJREJEYXRh
YmFzZTo6b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIHsKICAgICBpZiAo
bV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQpAQCAtMzE0LDYg
KzMyNyw3IEBAIHZvaWQgSURCRGF0YWJhc2U6Om9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJpbmcm
IHZlcnNpb24pCiAKIHZvaWQgSURCRGF0YWJhc2U6OnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3Mo
KQogeworICAgIEFTU0VSVChtX2JhY2tlbmQpOwogICAgIG1fYmFja2VuZC0+cmVnaXN0ZXJGcm9u
dGVuZENhbGxiYWNrcyhtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggNjRjYmIzMjZhNTg4M2Rj
ZjM5NDczY2FhMTA5NzI5MDVmM2ZlNjc1ZS4uZDY5YzFiYjZlZjgwZDRiZDIwOGFiNTg2Nzk3ZmNk
N2UxNGZhZTIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5oCkBAIC03OCw2ICs3OCw3IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKHZlcnNpb25jaGFuZ2UpOwogCiAgICAgLy8gSURCRGF0YWJhc2VDYWxs
YmFja3MKKyAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGludDY0X3QgZXhpc3RpbmdW
ZXJzaW9uLCBpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pOwogICAgIHZpcnR1YWwgdm9pZCBvblZl
cnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0ZWRWZXJzaW9uKTsKIAogICAgIC8vIEFj
dGl2ZURPTU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCBlNDUxNDdkNWMwYjBiNjJi
MzNkM2YzY2NkNjNhNjE3ZmI1YjhiOThlLi5hMzI4Mzc4YmE5ZTE2NWU4ODRlMjExNWFjMmM0MDYx
ZGE3YWNiOWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtNTIsNyArNTIsMjcgQEAgcHJp
dmF0ZToKICAgICAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCiAgICAgewogICAgIH0KKwor
ICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworfTsKKworY2xhc3MgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwgOiBwdWJsaWMgUmVm
Q291bnRlZDxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4geworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsPiBjcmVhdGUoUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbChjYWxsYmFj
a3MsIHZlcnNpb24pKTsKKyAgICB9CisgICAgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcygpIHsgcmV0dXJuIG1fY2FsbGJhY2tzOyB9CisgICAgaW50NjRfdCB2ZXJzaW9uKCkgeyBy
ZXR1cm4gbV92ZXJzaW9uOyB9CisKK3ByaXZhdGU6CisgICAgUGVuZGluZ09wZW5XaXRoVmVyc2lv
bkNhbGwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9u
KQorICAgICAgICA6IG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKKyAgICAgICAgLCBtX3ZlcnNpb24o
dmVyc2lvbikKKyAgICB7CisgICAgfQogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJh
Y2tzOworICAgIGludDY0X3QgbV92ZXJzaW9uOwogfTsKIAogY2xhc3MgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6UGVuZGluZ0RlbGV0ZUNhbGwgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5kaW5nRGVs
ZXRlQ2FsbD4gewpAQCAtMTA2LDYgKzEyNiw3IEBAIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OklE
QkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvCiAg
ICAgLCBtX2lkKEludmFsaWRJZCkKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV92ZXJzaW9u
KCIiKQorICAgICwgbV9pbnRWZXJzaW9uKElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lv
bikKICAgICAsIG1faWRlbnRpZmllcih1bmlxdWVJZGVudGlmaWVyKQogICAgICwgbV9mYWN0b3J5
KGZhY3RvcnkpCiAgICAgLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IoY29vcmRpbmF0b3IpCkBA
IC0xMTYsMTMgKzEzNywxMyBAQCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0bwogCiBib29sIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCgpCiB7Ci0gICAgYm9vbCBzdWNjZXNzID0g
bV9iYWNraW5nU3RvcmUtPmdldElEQkRhdGFiYXNlTWV0YURhdGEobV9uYW1lLCBtX3ZlcnNpb24s
IG1faWQpOwotICAgIEFTU0VSVChzdWNjZXNzID09IChtX2lkICE9IEludmFsaWRJZCkpOworICAg
IGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5nZXRJREJEYXRhYmFzZU1ldGFEYXRhKG1f
bmFtZSwgbV92ZXJzaW9uLCBtX2ludFZlcnNpb24sIG1faWQpOworICAgIEFTU0VSVF9XSVRIX01F
U1NBR0Uoc3VjY2VzcyA9PSAobV9pZCAhPSBJbnZhbGlkSWQpLCAic3VjY2VzcyA9ICVzLCBtX2lk
ID0gJSJQUklkNjQsIHN1Y2Nlc3MgPyAidHJ1ZSIgOiAiZmFsc2UiLCBtX2lkKTsKICAgICBpZiAo
c3VjY2VzcykgewogICAgICAgICBsb2FkT2JqZWN0U3RvcmVzKCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KLSAgICByZXR1cm4gbV9iYWNraW5nU3RvcmUtPmNyZWF0ZUlEQkRhdGFiYXNl
TWV0YURhdGEobV9uYW1lLCBtX3ZlcnNpb24sIG1faWQpOworICAgIHJldHVybiBtX2JhY2tpbmdT
dG9yZS0+Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShtX25hbWUsIG1fdmVyc2lvbiwgbV9pbnRW
ZXJzaW9uLCBtX2lkKTsKIH0KIAogSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6fklEQkRhdGFiYXNl
QmFja2VuZEltcGwoKQpAQCAtMTM2LDcgKzE1Nyw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0
b3JlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpiYWNraW5nU3RvcmUoKSBjb25zdAogCiBJREJE
YXRhYmFzZU1ldGFkYXRhIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFkYXRhKCkgY29uc3QK
IHsKLSAgICBJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKG1fbmFtZSwgbV92ZXJzaW9uLCBJ
REJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pOworICAgIElEQkRhdGFiYXNlTWV0YWRh
dGEgbWV0YWRhdGEobV9uYW1lLCBtX3ZlcnNpb24sIG1faW50VmVyc2lvbik7CiAgICAgZm9yIChP
YmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29iamVjdFN0b3Jlcy5iZWdpbigp
OyBpdCAhPSBtX29iamVjdFN0b3Jlcy5lbmQoKTsgKytpdCkKICAgICAgICAgbWV0YWRhdGEub2Jq
ZWN0U3RvcmVzLnNldChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQtPm1ldGFkYXRhKCkpOwogICAgIHJl
dHVybiBtZXRhZGF0YTsKQEAgLTIxNCw2ICsyMzUsOCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OnNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNh
bAogICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAiQ29ubmVjdGlvbiB3YXMgY2xvc2Vk
IGJlZm9yZSBzZXQgdmVyc2lvbiB0cmFuc2FjdGlvbiB3YXMgY3JlYXRlZCIpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KKyAgICBpZiAobV9pbnRWZXJzaW9uICE9IElEQkRhdGFiYXNlTWV0YWRh
dGE6Ok5vSW50VmVyc2lvbikKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsIFN0cmluZzo6
Zm9ybWF0KCJZb3UgY2FuJ3QgdXNlIHRoZSBzZXRWZXJzaW9uIGZ1bmN0aW9uIGlmIHlvdSd2ZSBh
bHJlYWR5IHNldCB0aGUgdmVyc2lvbiB0aHJvdWdoIGFuIG9wZW4gY2FsbC4gIFRoZSBjdXJyZW50
IGludGVnZXIgdmVyc2lvbiBpcyAlIlBSSWQ2NCwgbV9pbnRWZXJzaW9uKSkpOwogICAgIGZvciAo
RGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUNhbGxi
YWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVuZCgpOyArK2l0
KSB7CiAgICAgICAgIGlmICgqaXQgIT0gZGF0YWJhc2VDYWxsYmFja3MpCiAgICAgICAgICAgICAo
Kml0KS0+b25WZXJzaW9uQ2hhbmdlKHZlcnNpb24pOwpAQCAtMjU5LDYgKzI4MiwxOSBAQCB2b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZgogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPih0cmFuc2FjdGlvbikpOwogfQogCit2b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldEludFZlcnNpb25JbnRlcm5hbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFz
ZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24pCit7
CisgICAgaW50NjRfdCBkYXRhYmFzZUlkID0gZGF0YWJhc2UtPmlkKCk7CisgICAgaW50NjRfdCBv
bGRWZXJzaW9uID0gZGF0YWJhc2UtPm1faW50VmVyc2lvbjsKKyAgICBkYXRhYmFzZS0+bV9pbnRW
ZXJzaW9uID0gdmVyc2lvbjsKKyAgICBpZiAoIWRhdGFiYXNlLT5tX2JhY2tpbmdTdG9yZS0+dXBk
YXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKGRhdGFiYXNlSWQsIGRhdGFiYXNlLT5tX2ludFZlcnNp
b24pKSB7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVh
dGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiRXJyb3Igd3JpdGluZyBkYXRh
IHRvIHN0YWJsZSBzdG9yYWdlLiIpKTsKKyAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FsbGJhY2tzLT5vblVwZ3JhZGVOZWVkZWQob2xk
VmVyc2lvbiwgdHJhbnNhY3Rpb24sIGRhdGFiYXNlKTsKK30KKwogdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjp0cmFuc2FjdGlvblN0YXJ0ZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsPiBwcnBUcmFuc2FjdGlvbikKIHsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBwcnBUcmFuc2FjdGlvbjsKQEAgLTI3Niw2ICszMTIs
MTMgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkKFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW4KICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUo
KSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpIHsKICAgICAgICAgQVNTRVJUKHRy
YW5zYWN0aW9uLmdldCgpID09IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi5nZXQo
KSk7CiAgICAgICAgIG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi5jbGVhcigpOwor
ICAgIH0KK30KKwordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlz
aGVkQW5kRXZlbnRzRmlyZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBw
cnBUcmFuc2FjdGlvbikKK3sKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4g
dHJhbnNhY3Rpb24gPSBwcnBUcmFuc2FjdGlvbjsKKyAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUo
KSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpIHsKICAgICAgICAgcHJvY2Vzc1Bl
bmRpbmdDYWxscygpOwogICAgIH0KIH0KQEAgLTMyNSw2ICszNjgsMTMgQEAgdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKICAgICBpZiAobV9ydW5uaW5n
VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNF
bXB0eSgpIHx8ICFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIERlcXVlPFJlZlB0cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4gPiBwZW5k
aW5nT3BlbldpdGhWZXJzaW9uQ2FsbHM7CisgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2Fs
bHMuc3dhcChwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMpOworICAgIHdoaWxlICghcGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGxzLmlzRW1wdHkoKSkgeworICAgICAgICBSZWZQdHI8UGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGw+IHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsID0gcGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGxzLnRha2VGaXJzdCgpOworICAgICAgICBvcGVuQ29ubmVjdGlv
bldpdGhWZXJzaW9uKHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT5jYWxsYmFja3MoKSwgcGVu
ZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPnZlcnNpb24oKSk7CisgICAgfQorCiAgICAgLy8gR2l2
ZW4gdGhlIGNoZWNrIGFib3ZlLCBpdCBhcHBlYXJzIHRoYXQgY2FsbHMgY2Fubm90IGJlIHJlcXVl
dWVkIGJ5CiAgICAgLy8gb3BlbkNvbm5lY3Rpb24sIGJ1dCB1c2UgYSBkaWZmZXJlbnQgcXVldWUg
Zm9yIGl0ZXJhdGlvbiB0byBiZSBzYWZlLgogICAgIERlcXVlPFJlZlB0cjxQZW5kaW5nT3BlbkNh
bGw+ID4gcGVuZGluZ09wZW5DYWxsczsKQEAgLTM3Myw2ICs0MjMsNzIgQEAgdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzKQogICAgIH0KIH0KIAordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5J
bnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzKQoreworICAgIFJlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKKyAgICBBU1NFUlQoY2FsbGJhY2tzKTsK
KyAgICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0
YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5l
bmQoKTsgKytpdCkgeworICAgICAgICAvLyBUaGUgZnJvbnRlbmQgdGFrZXMgY2FyZSBvZiB0aGUg
Zm9sbG93aW5nIGNsYXVzZSwgdGhlIGJhY2tlbmQganVzdAorICAgICAgICAvLyBmaXJlcyB2ZXJz
aW9uIGNoYW5nZSBhdCBhbGwgdGhlIGNvbm5lY3Rpb25zLCB0aGUgZnJvbnRlbmQgd2lsbCBub3QK
KyAgICAgICAgLy8gZGVsaXZlciB0byBjb25uZWN0aW9ucyB3aXRoIGNsb3NlUGVuZGluZyBzZXQu
CisgICAgICAgIC8vICJUaGUgZXZlbnQgbXVzdCBub3QgYmUgZmlyZWQgb24gb2JqZWN0cyB3aGlj
aCBoYXMgdGhlIGNsb3NlUGVuZGluZworICAgICAgICAvLyBmbGFnIHNldC4iCisgICAgICAgICgq
aXQpLT5vblZlcnNpb25DaGFuZ2UobV9pbnRWZXJzaW9uLCByZXF1ZXN0ZWRWZXJzaW9uKTsKKyAg
ICB9CisgICAgLy8gVGhlIHNwZWMgZGljdGF0ZXMgd2Ugd2FpdCB1bnRpbCBhbGwgdGhlIHZlcnNp
b24gY2hhbmdlIGV2ZW50cyBhcmUKKyAgICAvLyBkZWxpdmVyZWQgYW5kIHRoZW4gY2hlY2sgbV9k
YXRhYmFzZUNhbGxiYWNrcy5lbXB0eSgpIGJlZm9yZSBwcm9jZWVkaW5nCisgICAgLy8gb3IgZmly
aW5nIGEgYmxvY2tlZCBldmVudCwgYnV0IGluc3RlYWQgd2Ugc2hvdWxkIGJlIGNvbnNpc3RlbnQg
d2l0aCBob3cKKyAgICAvLyB0aGUgb2xkIHNldFZlcnNpb24gKGluY29ycmVjdGx5KSBkaWQgaXQ6
CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMwCisg
ICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpID4gMCkKKyAgICAgICAgY2FsbGJhY2tzLT5vbkJsb2Nr
ZWQobV9pbnRWZXJzaW9uKTsKKyAgICAvLyBGSVhNRTogRmlndXJlIG91dCBob3cgdG8gdGVzdCBt
X3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uCisgICAgaWYgKG1fcnVubmluZ1ZlcnNp
b25DaGFuZ2VUcmFuc2FjdGlvbiB8fCBjb25uZWN0aW9uQ291bnQoKSA+IDApIHsKKyAgICAgICAg
Ly8gSXQncyBhbHJlYWR5IHF1ZXVlZC4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0
ZSgpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uSW50ZXJmYWNlID0gdGhpcy0+dHJhbnNhY3Rp
b24ob2JqZWN0U3RvcmVOYW1lcy5nZXQoKSwgSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdF
LCBlYyk7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9u
ID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvbkludGVyZmFjZS5n
ZXQoKSk7CisgICAgQVNTRVJUKCFlYyk7CisKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW1wbD4gZGF0YWJhc2UgPSB0aGlzOworICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFz
ayhjcmVhdGVDYWxsYmFja1Rhc2soJklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldEludFZlcnNp
b25JbnRlcm5hbCwgZGF0YWJhc2UsIHJlcXVlc3RlZFZlcnNpb24sIGNhbGxiYWNrcywgdHJhbnNh
Y3Rpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVDYWxsYmFj
a1Rhc2soJklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJlc2V0VmVyc2lvbiwgZGF0YWJhc2UsIG1f
dmVyc2lvbikpKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNU
SU9OX0lOQUNUSVZFX0VSUjsKKyAgICB9Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJw
Q2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCit7CisgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOworICAgIGlmICghbV9wZW5kaW5nRGVsZXRlQ2FsbHMu
aXNFbXB0eSgpIHx8IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCAhbV9wZW5k
aW5nU2V0VmVyc2lvbkNhbGxzLmlzRW1wdHkoKSkgeworICAgICAgICBtX3BlbmRpbmdPcGVuV2l0
aFZlcnNpb25DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShj
YWxsYmFja3MsIHZlcnNpb24pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9p
ZCA9PSBJbnZhbGlkSWQpIHsKKyAgICAgICAgaWYgKG9wZW5JbnRlcm5hbCgpKQorICAgICAgICAg
ICAgQVNTRVJUKCFtX2ludFZlcnNpb24pOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNh
bGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNl
cHRpb246OlVOS05PV05fRVJSLCAiSW50ZXJuYWwgZXJyb3IuIikpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgfQorICAgIGlmICh2ZXJzaW9uID4gbV9pbnRWZXJzaW9uKSB7
CisgICAgICAgIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVuZChQZW5kaW5nT3Bl
bldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgdmVyc2lvbikpOworICAgICAgICBy
dW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odmVyc2lvbiwgY2FsbGJhY2tzKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAodmVyc2lvbiA8IG1faW50VmVyc2lvbikgeworICAg
ICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpWRVJfRVJSLCBTdHJpbmc6OmZvcm1hdCgiVGhlIHJlcXVlc3RlZCB2ZXJz
aW9uICglIlBSSWQ2NCIpIGlzIGxlc3MgdGhhbiB0aGUgZXhpc3RpbmcgdmVyc2lvbiAoJSJQUklk
NjQiKS4iLCB2ZXJzaW9uLCBtX2ludFZlcnNpb24pKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgQVNTRVJUKHZlcnNpb24gPT0gbV9pbnRWZXJzaW9uKTsKKyAgICArK21fcGVuZGluZ0Nv
bm5lY3Rpb25Db3VudDsKKyAgICBjYWxsYmFja3MtPm9uU3VjY2Vzcyh0aGlzKTsKK30KKwogdm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVEYXRhYmFzZShQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gcHJwQ2FsbGJhY2tzKQogewogICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24gfHwgIW1fcGVuZGluZ1NldFZlcnNpb25DYWxscy5pc0VtcHR5KCkpIHsKQEAg
LTM5MywxMiArNTA5LDE0IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0
YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrCiAgICAgICAgIGNhbGxi
YWNrcy0+b25CbG9ja2VkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgQVNTRVJUKG1f
YmFja2luZ1N0b3JlKTsKICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5kZWxldGVEYXRhYmFzZSht
X25hbWUpKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiSW50ZXJuYWwgZXJyb3Iu
IikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fdmVyc2lvbiA9ICIiOwogICAgIG1f
aWQgPSBJbnZhbGlkSWQ7CisgICAgbV9pbnRWZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6
Tm9JbnRWZXJzaW9uOwogICAgIG1fb2JqZWN0U3RvcmVzLmNsZWFyKCk7CiAgICAgY2FsbGJhY2tz
LT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSk7CiB9CkBAIC00
MTEsMTIgKzUyOSwxNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycENhbGxiYWNrcwogICAgIGlmIChjb25uZWN0
aW9uQ291bnQoKSA+IDEpCiAgICAgICAgIHJldHVybjsKIAorICAgIFRyYW5zYWN0aW9uU2V0IHRy
YW5zYWN0aW9ucyhtX3RyYW5zYWN0aW9ucyk7CiAgICAgcHJvY2Vzc1BlbmRpbmdDYWxscygpOwog
Ci0gICAgaWYgKCFjb25uZWN0aW9uQ291bnQoKSkgewotICAgICAgICBUcmFuc2FjdGlvblNldCB0
cmFuc2FjdGlvbnMobV90cmFuc2FjdGlvbnMpOworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5z
aXplKCkgLSB0cmFuc2FjdGlvbnMuc2l6ZSgpIDw9IDEpOworICAgIC8vIEZJWE1FOiBJbnN0ZWFk
IG9mIHJlbHlpbmcgb24gdHJhbnNhY3Rpb25zLnNpemUoKSwgbWFrZSBjb25uZWN0aW9uQ291bnQK
KyAgICAvLyBhd2FyZSBvZiBpbi1mbGlnaHQgdXBncmFkZW5lZWRlZCBldmVudHMgYXMgd2VsbCBh
cyBpbi1mbGlnaHQgc3VjY2VzcworICAgIC8vIGV2ZW50cy4KKyAgICBpZiAoIWNvbm5lY3Rpb25D
b3VudCgpICYmICFtX3BlbmRpbmdEZWxldGVDYWxscy5zaXplKCkgJiYgbV90cmFuc2FjdGlvbnMu
c2l6ZSgpID09IHRyYW5zYWN0aW9ucy5zaXplKCkpIHsKICAgICAgICAgZm9yIChUcmFuc2FjdGlv
blNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0cmFuc2FjdGlvbnMuYmVnaW4oKTsgaXQgIT0gdHJh
bnNhY3Rpb25zLmVuZCgpOyArK2l0KQogICAgICAgICAgICAgKCppdCktPmFib3J0KCk7CisKICAg
ICAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmlzRW1wdHkoKSk7CiAKICAgICAgICAgbV9iYWNr
aW5nU3RvcmUuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCA4MDVlYjYxN2ZiMzIxNGQw
YmJiMjU3NWYzMmJmODk1YTQ1ZjEwZDFkLi40NDE5MTZmNTg3YWVmMjhkNWI4OGZiM2NjMTkzOGJi
M2UyNGNlMTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPik7CiAgICAgdm9pZCBvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4pOworICAgIHZvaWQgb3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIGludDY0X3QgdmVyc2lvbik7CiAgICAgdm9pZCBkZWxldGVEYXRhYmFz
ZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCiAgICAgLy8gSURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlCkBAIC03MSwxOCArNzIsMjIgQEAgcHVibGljOgogICAgIElEQlRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IqIHRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3Ry
YW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCk7IH0KICAgICB2b2lkIHRyYW5zYWN0aW9uU3RhcnRl
ZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsKICAgICB2b2lkIHRyYW5z
YWN0aW9uRmluaXNoZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPik7Cisg
ICAgdm9pZCB0cmFuc2FjdGlvbkZpbmlzaGVkQW5kRXZlbnRzRmlyZWQoUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPik7CiAKIHByaXZhdGU6CiAgICAgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSogZGF0YWJhc2UsIElE
QlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqLCBJREJGYWN0b3J5QmFja2VuZEltcGwqLCBjb25zdCBT
dHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpOwogCiAgICAgYm9vbCBvcGVuSW50ZXJuYWwoKTsKKyAg
ICB2b2lkIHJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihpbnQ2NF90IHJlcXVlc3RlZFZl
cnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAgICAgdm9pZCBsb2FkT2JqZWN0U3Rv
cmVzKCk7CiAgICAgaW50MzJfdCBjb25uZWN0aW9uQ291bnQoKTsKICAgICB2b2lkIHByb2Nlc3NQ
ZW5kaW5nQ2FsbHMoKTsKKyAgICBzdGF0aWMgdm9pZCBwcm9jZXNzUGVuZGluZ1Rhc2sodm9pZCog
ZGIpOwogCiAgICAgc3RhdGljIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgUGFz
c1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsPik7CiAgICAgc3RhdGljIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmVJbnRl
cm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tl
bmRJbXBsPiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPik7CiAgICAgc3RhdGljIHZvaWQgc2V0VmVyc2lv
bkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEltcGw+LCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPik7CisgICAgc3RhdGlj
IHZvaWQgc2V0SW50VmVyc2lvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+LCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+KTsKIAogICAgIC8vIFRoZXNlIGFyZSB1c2VkIGFzIHNldFZlcnNpb24gdHJhbnNhY3Rpb24g
YWJvcnQgdGFza3MuCiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmVGcm9tTWFwKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+
LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+KTsKQEAgLTkzLDYgKzk4LDcg
QEAgcHJpdmF0ZToKICAgICBpbnQ2NF90IG1faWQ7CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBT
dHJpbmcgbV92ZXJzaW9uOworICAgIGludDY0X3QgbV9pbnRWZXJzaW9uOwogCiAgICAgU3RyaW5n
IG1faWRlbnRpZmllcjsKICAgICAvLyBUaGlzIG1pZ2h0IG5vdCBuZWVkIHRvIGJlIGEgUmVmUHRy
IHNpbmNlIHRoZSBmYWN0b3J5J3MgbGlmZXRpbWUgaXMgdGhhdCBvZiB0aGUgcGFnZSBncm91cCwg
YnV0IGl0J3MgYmV0dGVyIHRvIGJlIGNvbnNlcnZpdGl2ZSB0aGFuIHNvcnJ5LgpAQCAtMTEzLDYg
KzExOSw5IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgUGVuZGluZ09wZW5DYWxsOwogICAgIERlcXVl
PFJlZlB0cjxQZW5kaW5nT3BlbkNhbGw+ID4gbV9wZW5kaW5nT3BlbkNhbGxzOwogCisgICAgY2xh
c3MgUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw7CisgICAgRGVxdWU8UmVmUHRyPFBlbmRpbmdP
cGVuV2l0aFZlcnNpb25DYWxsPiA+IG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzOworCiAg
ICAgY2xhc3MgUGVuZGluZ0RlbGV0ZUNhbGw7CiAgICAgRGVxdWU8UmVmUHRyPFBlbmRpbmdEZWxl
dGVDYWxsPiA+IG1fcGVuZGluZ0RlbGV0ZUNhbGxzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrcy5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3MuaAppbmRleCBiM2Yy
NDRmNTE2YjY5ODdlYTExOWNiZjcwMTliN2I1NDM3NWYxMmJmLi4xNmE5ZWE2YzUwOGIwZDkyYjYx
ZTQ5OTdjNTQzMDEzMmE2ZDJhY2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmgKQEAgLTM4LDYgKzM4LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQ2FsbGJhY2tzKCkgeyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBjdXJyZW50VmVyc2lvbiwg
aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcAppbmRleCAx
OTQxMmZjYmU1MGFiNDRiZjUzZGMwMWUwM2Q4ODUzZTI4ZjdjNWZmLi5mNzE3YWRiZDU1MWQ0NDJl
YmI4ZmQ5OGRkOGE3Y2ZkOTBkNjliY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKQEAg
LTUyLDYgKzUyLDEyIEBAIHZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25D
aGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogICAgICAgICBtX2RhdGFiYXNlLT5vblZlcnNp
b25DaGFuZ2UodmVyc2lvbik7CiB9CiAKK3ZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpv
blZlcnNpb25DaGFuZ2UoaW50NjRfdCBjdXJyZW50VmVyc2lvbiwgaW50NjRfdCByZXF1ZXN0ZWRW
ZXJzaW9uKQoreworICAgIGlmIChtX2RhdGFiYXNlKQorICAgICAgICBtX2RhdGFiYXNlLT5vblZl
cnNpb25DaGFuZ2UoY3VycmVudFZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24pOworfQorCiB2b2lk
IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6dW5yZWdpc3RlckRhdGFiYXNlKElEQkRhdGFiYXNl
KiBkYXRhYmFzZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGRhdGFiYXNlLCBkYXRhYmFzZSA9PSBt
X2RhdGFiYXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKaW5kZXggZThiMWY5OWI4MzhhZjdiOTM3
ZDk0YjdhZjhmN2Y3ZGZiODJiZTdmYi4uMDgwZjViYTg3YmZkNjgyNWM1NTVmYzhkNWQwZjdmNzY2
NzQzYTQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpOwogCiAgICAgdmlydHVh
bCB2b2lkIG9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHZlcnNpb24pOworICAgIHZpcnR1
YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBjdXJyZW50VmVyc2lvbiwgaW50NjRfdCBy
ZXF1ZXN0ZWRWZXJzaW9uKTsKICAgICB2b2lkIHVucmVnaXN0ZXJEYXRhYmFzZShJREJEYXRhYmFz
ZSopOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5LmNwcAppbmRleCBjZjUyY2MxZmUyYjEzNTViNmM1NGVkY2UyNjVlMGYzZThjM2E1
ZTkxLi5jODNiYTM2NDVkYmY2ZDM5ODNjOWNjYTdkN2IzN2FiMTUwNzcyYjI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtNDEsNyAr
NDEsNyBAQAogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVk
ZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKLSNpbmNsdWRlICJJREJSZXF1
ZXN0LmgiCisjaW5jbHVkZSAiSURCT3BlbkRCUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlZlcnNp
b25DaGFuZ2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91
cC5oIgpAQCAtMTA1LDcgKzEwNSw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCRmFjdG9y
eTo6Z2V0RGF0YWJhc2VOYW1lcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250CiAgICAgcmV0
dXJuIHJlcXVlc3Q7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3Bl
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5
OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgaW50NjRfdCB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAobmFtZS5p
c051bGwoKSkgewogICAgICAgICBlYyA9IE5BVElWRV9UWVBFX0VSUjsKQEAgLTExNCwxMSArMTE0
LDE2IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTCiAgICAgaWYgKCFpc0NvbnRleHRWYWxpZChj
b250ZXh0KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVx
dWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwg
MCk7Ci0gICAgbV9iYWNrZW5kLT5vcGVuKG5hbWUsIHJlcXVlc3QsIGNvbnRleHQtPnNlY3VyaXR5
T3JpZ2luKCksIGNvbnRleHQsIGdldEluZGV4ZWREQkRhdGFiYXNlUGF0aChjb250ZXh0KSk7Cisg
ICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJPcGVuREJSZXF1ZXN0Ojpj
cmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIHZlcnNpb24pOworICAgIG1fYmFj
a2VuZC0+b3BlbihuYW1lLCB2ZXJzaW9uLCByZXF1ZXN0LCBjb250ZXh0LT5zZWN1cml0eU9yaWdp
bigpLCBjb250ZXh0LCBnZXRJbmRleGVkREJEYXRhYmFzZVBhdGgoY29udGV4dCkpOwogICAgIHJl
dHVybiByZXF1ZXN0OwogfQogCitQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rv
cnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICByZXR1cm4gb3Blbihjb250ZXh0LCBuYW1l
LCBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24sIGVjKTsKK30KKwogUGFzc1JlZlB0
cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gSURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBpZiAobmFtZS5pc051bGwoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCmluZGV4IDQ2MTFjYjZjNGZlODM5OTBi
NDcyNGE0M2JmMDljOWE1YTk1ZDg4OGQuLjM2NDViYjgxZGM3ZWU5NjY5MDVkYTY1MmMwNjRkYTcz
ODZmNjUzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5LmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNp
bmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIgotI2luY2x1ZGUgIklEQlJlcXVl
c3QuaCIKKyNpbmNsdWRlICJJREJPcGVuREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CkBAIC01OCw3ICs1OCw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gZ2V0RGF0YWJhc2VOYW1lcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKLSAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCT3Bl
bkRCUmVxdWVzdD4gb3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBu
YW1lLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBv
cGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3Qg
dmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5n
ZVJlcXVlc3Q+IGRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHNob3J0IGNtcChQYXNzUmVmUHRy
PElEQktleT4gZmlyc3QsIFBhc3NSZWZQdHI8SURCS2V5PiBzZWNvbmQsIEV4Y2VwdGlvbkNvZGUm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rv
cnkuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGwK
aW5kZXggMDM4OWViMmFhZTdlMTI5OTU0ZDlhY2YwM2E1OWZmYmNjN2ZiYWFjYy4uYmY3MWEyZGQy
NWQxZmY5NWUyNjQzNWY0ZTQxZjBjNDFiOTc2NzJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGwKQEAgLTMwLDcgKzMwLDcgQEAgbW9kdWxl
IHN0b3JhZ2UgewogICAgIF0gSURCRmFjdG9yeSB7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBJbXBsZW1lbnRlZEFzPWdldERhdGFiYXNlTmFtZXNdIElEQlJlcXVl
c3Qgd2Via2l0R2V0RGF0YWJhc2VOYW1lcygpOwogCi0gICAgICAgIFtDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IG9wZW4oaW4gRE9NU3RyaW5nIG5hbWUpCisgICAg
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJPcGVuREJSZXF1ZXN0IG9w
ZW4oaW4gRE9NU3RyaW5nIG5hbWUsIGluIFtPcHRpb25hbF0gdW5zaWduZWQgbG9uZyBsb25nIHZl
cnNpb24pCiAgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAg
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlZlcnNpb25DaGFuZ2VSZXF1
ZXN0IGRlbGV0ZURhdGFiYXNlKGluIERPTVN0cmluZyBuYW1lKQogICAgICAgICAgICAgcmFpc2Vz
IChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAppbmRleCBkZmIxNDU3
YTMwNmRhYTdhNTY4YzIxYWY2ZWZhMzQ1NDZjZTNmZjQ2Li5mOWM2ZTQxMTE3NjNmYmIwMDNkMDU1
ZjJjOTliNDdmMmE5NzQzMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKQEAgLTM1LDYgKzM1LDcg
QEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkxldmVs
REJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgi
CisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAKQEAgLTE0OSwzMiArMTUwLDMwIEBAIFBh
c3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5CYWNr
aW5nU3RvcmUoUGFzc1JlZlB0cjxTCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgSURCRmFjdG9y
eUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJwU2VjdXJpdHlP
cmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXJlY3Rv
cnkpCit2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUs
IGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFz
c1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJwU2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXJlY3RvcnkpCiB7CiAgICAgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IHBycFNlY3VyaXR5T3JpZ2luOwogICAgIGNv
bnN0IFN0cmluZyB1bmlxdWVJZGVudGlmaWVyID0gY29tcHV0ZVVuaXF1ZUlkZW50aWZpZXIobmFt
ZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwogCisgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw+IGRhdGFiYXNlQmFja2VuZDsKICAgICBJREJEYXRhYmFzZUJhY2tlbmRNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZmluZCh1bmlxdWVJZGVudGlmaWVyKTsKLSAg
ICBpZiAoaXQgIT0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZW5kKCkpIHsKLSAgICAgICAgLy8gSWYg
aXQncyBhbHJlYWR5IGJlZW4gb3BlbmVkLCB3ZSBoYXZlIHRvIHdhaXQgZm9yIGFueSBwZW5kaW5n
Ci0gICAgICAgIC8vIHNldFZlcnNpb24gY2FsbHMgdG8gY29tcGxldGUuCi0gICAgICAgIGl0LT5z
ZWNvbmQtPm9wZW5Db25uZWN0aW9uKGNhbGxiYWNrcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICAvLyBGSVhNRTogRXZlcnl0aGluZyBmcm9tIG5vdyBvbiBzaG91bGQgYmUgZG9uZSBv
biBhbm90aGVyIHRocmVhZC4KLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3Rv
cmUgPSBvcGVuQmFja2luZ1N0b3JlKHNlY3VyaXR5T3JpZ2luLCBkYXRhRGlyZWN0b3J5KTsKLSAg
ICBpZiAoIWJhY2tpbmdTdG9yZSkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIklu
dGVybmFsIGVycm9yLiIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJlZlB0cjxJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpjcmVhdGUobmFtZSwgYmFja2luZ1N0b3JlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29v
cmRpbmF0b3IuZ2V0KCksIHRoaXMsIHVuaXF1ZUlkZW50aWZpZXIpOwotICAgIGlmIChkYXRhYmFz
ZUJhY2tlbmQpIHsKLSAgICAgICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50
aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7Ci0gICAgICAgIGRhdGFiYXNlQmFja2VuZC0+
b3BlbkNvbm5lY3Rpb24oY2FsbGJhY2tzKTsKKyAgICBpZiAoaXQgPT0gbV9kYXRhYmFzZUJhY2tl
bmRNYXAuZW5kKCkpIHsKKyAgICAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0
b3JlID0gb3BlbkJhY2tpbmdTdG9yZShzZWN1cml0eU9yaWdpbiwgZGF0YURpcmVjdG9yeSk7Cisg
ICAgICAgIGlmICghYmFja2luZ1N0b3JlKSB7CisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJy
b3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dO
X0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVh
dGUobmFtZSwgYmFja2luZ1N0b3JlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0
KCksIHRoaXMsIHVuaXF1ZUlkZW50aWZpZXIpOworICAgICAgICBpZiAoZGF0YWJhc2VCYWNrZW5k
KQorICAgICAgICAgICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIs
IGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNhbGxi
YWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OlVOS05PV05fRVJSLCAiSW50ZXJuYWwgZXJyb3IuIikpOwogICAgIH0gZWxzZQotICAgICAg
ICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAgZGF0
YWJhc2VCYWNrZW5kID0gaXQtPnNlY29uZDsKKyAgICBpZiAodmVyc2lvbiA9PSBJREJEYXRhYmFz
ZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pCisgICAgICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbkNv
bm5lY3Rpb24oY2FsbGJhY2tzKTsKKyAgICBlbHNlCisgICAgICAgIGRhdGFiYXNlQmFja2VuZC0+
b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihjYWxsYmFja3MsIHZlcnNpb24pOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCmluZGV4IGNhMWQwNTI4MmE4YzVlZGY3
NjZkNWU1NTUwOGZhZTBhOWMwNDhjNjUuLmQyNmY3NDY4MzQyYWE2YTE4ZGZjZGU5YmYxNzQzNjQy
MjhlMTA2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnlCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjZGVmaW5lIElE
QkZhY3RvcnlCYWNrZW5kSW1wbF9oCiAKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVy
ZmFjZS5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTU3LDcgKzU2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJREJCYWNraW5nU3RvcmUoY29uc3Qg
U3RyaW5nJiBmaWxlSWRlbnRpZmllcik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VO
YW1lcyhQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKLSAgICB2
aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0
cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
U3RyaW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3Qg
U3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGly
KTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggNDRmNWM3ODZl
ZjIxZWE0NzE5ZjYzNjk0MjlmNzY3MzkwMDQwOTI5My4uNGVhNWQ4YTMzMGZkMDQxYWY1MWNiMmE5
NTQ0ZWE0OGFjZjY2NmZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oCkBAIC01NCw3ICs1
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSgp
IHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBvcGVu
KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
ZGF0YURpcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwg
aW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRh
RGlyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYg
bmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgPSAwOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRleCAzMmUyZjY4MTU3OTQwOWEwOTA4ZDI5YTE4
NzJjMGNkYzU2Yjg5ZWY5Li5mODlmZWU1NTZlZjBmZjc5YTBhNTcwODNkMTlkNGY4YTExNzU5MjA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAtODcsNiArODcsMTIgQEAgc3RhdGljIGJvb2wg
cHV0SW50KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5LCBpbnQ2
NF90IHZhbHVlKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgorc3Rh
dGljIGJvb2wgcHV0VmFySW50KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFy
PiYga2V5LCBpbnQ2NF90IHZhbHVlKQoreworICAgIHJldHVybiBkYi0+cHV0KGtleSwgZW5jb2Rl
VmFySW50KHZhbHVlKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBEQk9yVHJhbnNhY3Rpb24+
CiBzdGF0aWMgYm9vbCBnZXRTdHJpbmcoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgVmVjdG9y
PGNoYXI+JiBrZXksIFN0cmluZyYgZm91bmRTdHJpbmcpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJl
c3VsdDsKQEAgLTEyOSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBjaGFy
KiBuYW1lKCkgY29uc3QgeyByZXR1cm4gImlkYl9jbXAxIjsgfQogfTsKIAotc3RhdGljIGJvb2wg
c2V0VXBNZXRhZGF0YShMZXZlbERCRGF0YWJhc2UqIGRiKQorc3RhdGljIGJvb2wgc2V0VXBNZXRh
ZGF0YShMZXZlbERCRGF0YWJhc2UqIGRiLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKIHsKICAgICBj
b25zdCBWZWN0b3I8Y2hhcj4gbWV0YURhdGFLZXkgPSBTY2hlbWFWZXJzaW9uS2V5OjplbmNvZGUo
KTsKIApAQCAtMjA4LDcgKzIxNCw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJM
ZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0CiAgICAgUmVm
UHRyPElEQkxldmVsREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZShhZG9wdFJlZihuZXcgSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZShmaWxlSWRlbnRpZmllciwgZmFjdG9yeSwgZGIucmVsZWFzZSgp
KSkpOwogICAgIGJhY2tpbmdTdG9yZS0+bV9jb21wYXJhdG9yID0gY29tcGFyYXRvci5yZWxlYXNl
KCk7CiAKLSAgICBpZiAoIXNldFVwTWV0YWRhdGEoYmFja2luZ1N0b3JlLT5tX2RiLmdldCgpKSkK
KyAgICBpZiAoIXNldFVwTWV0YWRhdGEoYmFja2luZ1N0b3JlLT5tX2RiLmdldCgpLCBmaWxlSWRl
bnRpZmllcikpCiAgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4oKTsK
IAogICAgIHJldHVybiBiYWNraW5nU3RvcmUucmVsZWFzZSgpOwpAQCAtMjM0LDcgKzI0MCw3IEBA
IHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0RGF0YWJhc2VOYW1lcyhWZWN0b3I8U3Ry
aW5nPiYgZm91bmROYW1lcykKICAgICB9CiB9CiAKLWJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91
bmRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElkKQorYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiBmb3Vu
ZFN0cmluZ1ZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVyc2lvbiwgaW50NjRfdCYgZm91bmRJ
ZCkKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5ID0gRGF0YWJhc2VOYW1lS2V5OjplbmNv
ZGUobV9pZGVudGlmaWVyLCBuYW1lKTsKIApAQCAtMjQyLDEwICsyNDgsMTYgQEAgYm9vbCBJREJM
ZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYg
bmFtZSwgU3RyaW5nJgogICAgIGlmICghb2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IG9rID0gZ2V0U3RyaW5nKG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShm
b3VuZElkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VyVmVyc2lvbiksIGZvdW5kVmVyc2lvbik7
CisgICAgb2sgPSBnZXRTdHJpbmcobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5j
b2RlKGZvdW5kSWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgZm91bmRTdHJp
bmdWZXJzaW9uKTsKICAgICBpZiAoIW9rKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBv
ayA9IGdldEludChtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoZm91bmRJ
ZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlckludFZlcnNpb24pLCBmb3VuZEludFZlcnNpb24p
OworICAgIGlmICghb2spCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZm91bmRJbnRW
ZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uKQorICAgICAg
Zm91bmRJbnRWZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uOworCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI2NCw3ICsyNzYsNyBAQCBzdGF0aWMgaW50NjRfdCBn
ZXROZXdEYXRhYmFzZUlkKExldmVsREJEYXRhYmFzZSogZGIpCiAgICAgcmV0dXJuIGRhdGFiYXNl
SWQ7CiB9CiAKLWJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSURCRGF0YWJhc2VN
ZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgaW50NjRf
dCYgcm93SWQpCitib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUlEQkRhdGFiYXNl
TWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGludDY0
X3QgaW50VmVyc2lvbiwgaW50NjRfdCYgcm93SWQpCiB7CiAgICAgcm93SWQgPSBnZXROZXdEYXRh
YmFzZUlkKG1fZGIuZ2V0KCkpOwogICAgIGlmIChyb3dJZCA8IDApCkBAIC0yNzUsNiArMjg3LDE5
IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0
YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoIXB1dFN0cmluZyhtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUocm93
SWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgdmVyc2lvbikpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoaW50VmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRh
OjpOb0ludFZlcnNpb24pCisgICAgICBpbnRWZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6
RGVmYXVsdEludFZlcnNpb247CisgICAgaWYgKCFwdXRWYXJJbnQobV9kYi5nZXQoKSwgRGF0YWJh
c2VNZXRhRGF0YUtleTo6ZW5jb2RlKHJvd0lkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VySW50
VmVyc2lvbiksIGludFZlcnNpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJh
c2VJbnRWZXJzaW9uKGludDY0X3Qgcm93SWQsIGludDY0X3QgaW50VmVyc2lvbikKK3sKKyAgICBB
U1NFUlQobV9jdXJyZW50VHJhbnNhY3Rpb24pOworICAgIGlmICghcHV0VmFySW50KG1fY3VycmVu
dFRyYW5zYWN0aW9uLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUocm93SWQsIERh
dGFiYXNlTWV0YURhdGFLZXk6OlVzZXJJbnRWZXJzaW9uKSwgaW50VmVyc2lvbikpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMDUsNyArMzMwLDgg
QEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJp
bmcmIG5hbWUpCiAKICAgICBpbnQ2NF90IGRhdGFiYXNlSWQ7CiAgICAgU3RyaW5nIHZlcnNpb247
Ci0gICAgaWYgKCFnZXRJREJEYXRhYmFzZU1ldGFEYXRhKG5hbWUsIHZlcnNpb24sIGRhdGFiYXNl
SWQpKSB7CisgICAgaW50NjRfdCBpbnRWZXJzaW9uOworICAgIGlmICghZ2V0SURCRGF0YWJhc2VN
ZXRhRGF0YShuYW1lLCB2ZXJzaW9uLCBpbnRWZXJzaW9uLCBkYXRhYmFzZUlkKSkgewogICAgICAg
ICB0cmFuc2FjdGlvbi0+cm9sbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZS5oCmluZGV4IGM1YTllMmVlMzA5ZThjYTNmZDdmNzBmMGFhMmJiODBjZWMw
NDZiMmUuLjY3M2NhOWMxNWFlM2M2ZGFkNDU5N2UxNzRkYjI3ZWVhNjFlZDlmNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFj
a2luZ1N0b3JlLmgKQEAgLTQ1LDkgKzQ1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJM
ZXZlbERCQmFja2luZ1N0b3JlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1l
cyhWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcyk7Ci0gICAgdmlydHVhbCBib29sIGdldElEQkRh
dGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwg
aW50NjRfdCYgZm91bmRJZCk7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0
YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3Qm
IHJvd0lkKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBT
dHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZEludFZlcnNp
b24sIGludDY0X3QmIGZvdW5kSWQpOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFz
ZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2
NF90IGludFZlcnNpb24sIGludDY0X3QmIHJvd0lkKTsKICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRl
SURCRGF0YWJhc2VNZXRhRGF0YShpbnQ2NF90IHJvd0lkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24p
OworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24oaW50NjRfdCBy
b3dJZCwgaW50NjRfdCBpbnRWZXJzaW9uKTsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJh
c2UoY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9y
ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8
U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBW
ZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaAppbmRleCAzMTEzZTdk
OGE5ODgyYmQ3ZDhlNzc5Y2FkYWE5N2VkODIxYzVhOGU4Li4zZmNkYzQ2ZDM3MjM3ZGRiYzMxMDZj
ZDEwMWQxMzVlNDY3MjE4YjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oCkBAIC0xNDAsNyArMTQwLDggQEAgcHVibGljOgog
ICAgICAgICBPcmlnaW5OYW1lID0gMCwKICAgICAgICAgRGF0YWJhc2VOYW1lID0gMSwKICAgICAg
ICAgVXNlclZlcnNpb24gPSAyLAotICAgICAgICBNYXhPYmplY3RTdG9yZUlkID0gMworICAgICAg
ICBNYXhPYmplY3RTdG9yZUlkID0gMywKKyAgICAgICAgVXNlckludFZlcnNpb24gPSA0CiAgICAg
fTsKIAogICAgIHN0YXRpYyBWZWN0b3I8Y2hhcj4gZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwg
TWV0YURhdGFUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJN
ZXRhZGF0YS5oCmluZGV4IGRkMjMwNjIwYzdjMWZiMDExYjNmOTk0MTBiYzgyZTdlNmE4ZjUzYmUu
LmUzZjBlYzNmYjExOGI1OWFkNzE1NTU2NGQ4YjFlNDUxNzMzODY1ZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaApAQCAtNDMsNyArNDMsOCBA
QCBzdHJ1Y3QgSURCSW5kZXhNZXRhZGF0YTsKIAogc3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGEg
ewogICAgIGVudW0gewotICAgICAgICBOb0ludFZlcnNpb24gPSAtMQorICAgICAgICBOb0ludFZl
cnNpb24gPSAtMSwKKyAgICAgICAgRGVmYXVsdEludFZlcnNpb24gPSAwCiAgICAgfTsKIAogICAg
IElEQkRhdGFiYXNlTWV0YWRhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Y2MxNWVmMWEyMmVi
NTA5MmUxMTI2ZGMzNzAyOTMxNTA3OWEwMGFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKQEAgLTAsMCArMSw5
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJPcGVuREJSZXF1
ZXN0LmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQkRh
dGFiYXNlLmgiCisjaW5jbHVkZSAiSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oIgorI2lu
Y2x1ZGUgIklEQlVwZ3JhZGVOZWVkZWRFdmVudC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPElEQk9wZW5E
QlJlcXVlc3Q+IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBpbnQ2NF90IHZlcnNpb24pCit7
CisgICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVlc3QoYWRvcHRSZWYobmV3IElEQk9w
ZW5EQlJlcXVlc3QoY29udGV4dCwgc291cmNlLCB2ZXJzaW9uKSkpOworICAgIHJlcXVlc3QtPnN1
c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKK30KKworSURC
T3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBpbnQ2NF90IHZlcnNpb24pCisgICAg
OiBJREJSZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSwgMCkKKyAgICAsIG1fdmVyc2lvbih2ZXJzaW9u
KQoreworICAgIEFTU0VSVCghbV9yZXN1bHQpOworfQorCitJREJPcGVuREJSZXF1ZXN0Ojp+SURC
T3BlbkRCUmVxdWVzdCgpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgSURCT3BlbkRCUmVx
dWVzdDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5p
bnRlcmZhY2VGb3JJREJPcGVuREJSZXF1ZXN0OworfQorCit2b2lkIElEQk9wZW5EQlJlcXVlc3Q6
Om9uQmxvY2tlZChpbnQ2NF90IG9sZFZlcnNpb24pCit7CisgICAgQVNTRVJUKCFtX2Vycm9yQ29k
ZSAmJiBtX2Vycm9yTWVzc2FnZS5pc051bGwoKSAmJiAhbV9yZXN1bHQpOworICAgIGVucXVldWVF
dmVudChJREJVcGdyYWRlTmVlZGVkRXZlbnQ6OmNyZWF0ZShvbGRWZXJzaW9uLCBtX3ZlcnNpb24s
IGV2ZW50TmFtZXMoKS5ibG9ja2VkRXZlbnQpKTsKK30KKwordm9pZCBJREJPcGVuREJSZXF1ZXN0
OjpvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gcHJwVHJhbnNhY3Rpb25CYWNrZW5kLCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gcHJwRGF0YWJhc2VCYWNrZW5kKQoreworICAg
IEFTU0VSVCghbV9lcnJvckNvZGUpOworICAgIEFTU0VSVChtX2Vycm9yTWVzc2FnZS5pc051bGwo
KSk7CisgICAgQVNTRVJUKCFtX2Vycm9yKTsKKy8vICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1f
cmVzdWx0LCAiaW4gb2JqZWN0ICVwIiwgdGhpcyk7CisgICAgaWYgKG1fY29udGV4dFN0b3BwZWQg
fHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2VCYWNrZW5kID0gcHJwRGF0
YWJhc2VCYWNrZW5kOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
IHRyYW5zYWN0aW9uQmFja2VuZCA9IHBycFRyYW5zYWN0aW9uQmFja2VuZDsKKyAgICBSZWZQdHI8
SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIGRhdGFiYXNlQmFja2VuZCk7CisKKyAgICBSZWZQdHI8SURCVHJhbnNh
Y3Rpb24+IGZyb250ZW5kID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIHRyYW5zYWN0aW9uQmFja2VuZCwgSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hB
TkdFLCBpZGJEYXRhYmFzZS5nZXQoKSwgdGhpcyk7CisgICAgdHJhbnNhY3Rpb25CYWNrZW5kLT5z
ZXRDYWxsYmFja3MoZnJvbnRlbmQuZ2V0KCkpOworICAgIG1fdHJhbnNhY3Rpb24gPSBmcm9udGVu
ZDsKKyAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGlkYkRhdGFiYXNlLnJlbGVhc2UoKSk7
CisKKyAgICBpZiAob2xkVmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNp
b24pIHsKKyAgICAgIC8vIFRoZSBvcGVuIGNhbGwgdGhhdCBjcmVhdGVkIHRoaXMgSURCT3BlbkRC
UmVxdWVzdCB3YXMgdGhlIGZpcnN0IGludGVnZXIKKyAgICAgIC8vIHZlcnNpb24gdGhhdCB0aGlz
IGRhdGFiYXNlIGhhZC4KKyAgICAgIG9sZFZlcnNpb24gPSBJREJEYXRhYmFzZU1ldGFkYXRhOjpE
ZWZhdWx0SW50VmVyc2lvbjsKKyAgICB9CisgICAgZW5xdWV1ZUV2ZW50KElEQlVwZ3JhZGVOZWVk
ZWRFdmVudDo6Y3JlYXRlKG9sZFZlcnNpb24sIG1fdmVyc2lvbiwgZXZlbnROYW1lcygpLnVwZ3Jh
ZGVuZWVkZWRFdmVudCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVx
dWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVz
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmVjNWI4YmNjNjc3MzAzNWE0MTVjYzk0ZjFhMjUzYTRmYjE4NDUxZDkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
cGVuREJSZXF1ZXN0LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCT3BlbkRC
UmVxdWVzdF9oCisjZGVmaW5lIElEQk9wZW5EQlJlcXVlc3RfaAorCisjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgSURCT3BlbkRCUmVxdWVzdCA6IHB1YmxpYyBJREJSZXF1ZXN0IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGludDY0X3Qg
dmVyc2lvbik7CisgICAgdmlydHVhbCB+SURCT3BlbkRCUmVxdWVzdCgpOworCisgICAgdmlydHVh
bCB2b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U+KSBPVkVSUklERTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKworICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYmxvY2tlZCk7CisgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUih1cGdyYWRlbmVlZGVkKTsKKworcHJpdmF0ZToKKyAgICBJ
REJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFu
eT4gc291cmNlLCBpbnQ2NF90IHZlcnNpb24pOworCisgICAgdmlydHVhbCBib29sIGlzT3BlbkRC
UmVxdWVzdCgpIGNvbnN0IE9WRVJSSURFCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBpbnQ2NF90IG1fdmVyc2lvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjZW5kaWYgLy8gSURC
T3BlbkRCUmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9wZW5EQlJlcXVlc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyNjZjNzM1OWEwYTY1ZTY5NWIw
ODQ1ZGU1ZjUzNTgzYTZjZDgyOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmlkbApAQCAtMCwwICsxLDM2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworbW9kdWxlIHN0b3JhZ2UgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0
aW9uYWw9SU5ERVhFRF9EQVRBQkFTRSwKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0LAorICAgICAg
ICBFdmVudFRhcmdldAorICAgIF0gSURCT3BlbkRCUmVxdWVzdCA6IElEQlJlcXVlc3QgeworICAg
ICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmJsb2NrZWQ7CisgICAgICAgIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9udXBncmFkZW5lZWRlZDsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCA3ZGQzMGU5Y2Zm
NWRiMDI2Mjg3Y2NjMGI0MWY2MWIwYWE5Zjk4ODE5Li40ZGVlOTc4NTE5NDU3ZTE5OTNjMmY4ODI0
NzdjZjVhYTdmYjViMjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJSZXF1ZXN0LmNwcApAQCAtNTMsMTMgKzUzLDE0IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gSURCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSCiAKIElEQlJlcXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX3Jlc3Vs
dCgwKQogICAgICwgbV9lcnJvckNvZGUoMCkKLSAgICAsIG1fc291cmNlKHNvdXJjZSkKKyAgICAs
IG1fY29udGV4dFN0b3BwZWQoZmFsc2UpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9u
KQorICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAgICwgbV9yZWFkeVN0YXRlKFBFTkRJTkcpCiAg
ICAgLCBtX3JlcXVlc3RBYm9ydGVkKGZhbHNlKQogICAgICwgbV9jdXJzb3JGaW5pc2hlZChmYWxz
ZSkKLSAgICAsIG1fY29udGV4dFN0b3BwZWQoZmFsc2UpCiAgICAgLCBtX2N1cnNvclR5cGUoSURC
Q3Vyc29yQmFja2VuZEludGVyZmFjZTo6SW52YWxpZEN1cnNvclR5cGUpCiAgICAgLCBtX2N1cnNv
ckRpcmVjdGlvbihJREJDdXJzb3I6Ok5FWFQpCiAgICAgLCBtX3BlbmRpbmdDdXJzb3IoMCkKQEAg
LTI3MywxNSArMjc0LDIxIEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQogICAgIEFTU0VSVChtX3JlYWR5
U3RhdGUgPT0gUEVORElORyB8fCBtX3JlYWR5U3RhdGUgPT0gRE9ORSk7CiAgICAgaWYgKG1fcmVx
dWVzdEFib3J0ZWQpCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09
IFBFTkRJTkcpOwotICAgIEFTU0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNO
dWxsKCkgJiYgIW1fZXJyb3IgJiYgIW1fcmVzdWx0KTsKKyAgICBBU1NFUlQobV9yZWFkeVN0YXRl
ID09IFBFTkRJTkcgfHwgaXNPcGVuREJSZXF1ZXN0KCkpOworICAgIEFTU0VSVCghbV9lcnJvckNv
ZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkgJiYgIW1fZXJyb3IpOwogICAgIGlmIChtX2Nv
bnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UgPSBJREJEYXRhYmFzZTo6
Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmFja2VuZCk7Ci0gICAgaWRiRGF0YWJh
c2UtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKTsKLQotICAgIG1fcmVzdWx0ID0gSURCQW55
OjpjcmVhdGUoaWRiRGF0YWJhc2UucmVsZWFzZSgpKTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2U+
IGlkYkRhdGFiYXNlOworICAgIGlmIChtX3Jlc3VsdCkgeworICAgICAgICBpZGJEYXRhYmFzZSA9
IG1fcmVzdWx0LT5pZGJEYXRhYmFzZSgpOworICAgICAgICBBU1NFUlQoaWRiRGF0YWJhc2UpOwor
ICAgICAgICBpZGJEYXRhYmFzZS0+cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcygpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIGJhY2tlbmQpOworICAgICAgICBpZGJEYXRhYmFzZS0+cmVnaXN0
ZXJGcm9udGVuZENhbGxiYWNrcygpOworICAgICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRl
KGlkYkRhdGFiYXNlLnJlbGVhc2UoKSk7CisgICAgfQogICAgIGVucXVldWVFdmVudChjcmVhdGVT
dWNjZXNzRXZlbnQoKSk7CiB9CiAKQEAgLTQwOCwxMyArNDE1LDEyIEBAIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIElEQlJlcXVlc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogYm9v
bCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewog
ICAgIElEQl9UUkFDRSgiSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCIpOwotICAgIEFTU0VSVCht
X3JlYWR5U3RhdGUgPT0gUEVORElORyk7CisgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBQRU5E
SU5HIHx8IGlzT3BlbkRCUmVxdWVzdCgpKTsKICAgICBBU1NFUlQoIW1fY29udGV4dFN0b3BwZWQp
OwogICAgIEFTU0VSVChtX2VucXVldWVkRXZlbnRzLnNpemUoKSk7CiAgICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKGV2ZW50LT50YXJnZXQoKSA9PSB0aGlz
KTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcmVhZHlTdGF0ZSA8IERPTkUsICJtX3JlYWR5
U3RhdGUgPCBET05FKCVkKSwgd2FzICVkIiwgRE9ORSwgbV9yZWFkeVN0YXRlKTsKLQorICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UobV9yZWFkeVN0YXRlIDwgRE9ORSB8fCBpc09wZW5EQlJlcXVlc3Qo
KSwgIldoZW4gZGlzcGF0Y2hpbmcgZXZlbnQgJXMsIG1fcmVhZHlTdGF0ZSA8IERPTkUoJWQpLCB3
YXMgJWQiLCBldmVudC0+dHlwZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIERPTkUsIG1fcmVh
ZHlTdGF0ZSk7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLmJsb2NrZWRF
dmVudCkKICAgICAgICAgbV9yZWFkeVN0YXRlID0gRE9ORTsKIApAQCAtNDQzLDExICs0NDksMTIg
QEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50
KQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBXaGVuIHdlIGFsbG93IGN1c3RvbSBldmVudCBkaXNw
YXRjaGluZywgdGhpcyB3aWxsIHByb2JhYmx5IG5lZWQgdG8gY2hhbmdlLgotICAgIEFTU0VSVChl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQgfHwgZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkuZXJyb3JFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5ibG9ja2VkRXZlbnQpOwotICAgIGNvbnN0IGJvb2wgc2V0VHJhbnNhY3Rpb25BY3RpdmUg
PSBtX3RyYW5zYWN0aW9uICYmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWNjZXNz
RXZlbnQgfHwgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgJiYgbV9l
cnJvckNvZGUgIT0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKKyAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnN1Y2Nlc3NF
dmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50IHx8IGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCB8fCBldmVudC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS51cGdyYWRlbmVlZGVkRXZlbnQsICJldmVudCB0eXBlIHdhcyAlcyIsIGV2
ZW50LT50eXBlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgY29uc3QgYm9vbCBzZXRU
cmFuc2FjdGlvbkFjdGl2ZSA9IG1fdHJhbnNhY3Rpb24gJiYgKGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLnN1Y2Nlc3NFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS51
cGdyYWRlbmVlZGVkRXZlbnQgfHwgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9y
RXZlbnQgJiYgbV9lcnJvckNvZGUgIT0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9F
UlIpKTsKIAogICAgIGlmIChzZXRUcmFuc2FjdGlvbkFjdGl2ZSkKICAgICAgICAgbV90cmFuc2Fj
dGlvbi0+c2V0QWN0aXZlKHRydWUpOworCiAgICAgYm9vbCBkb250UHJldmVudERlZmF1bHQgPSBJ
REJFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoKGV2ZW50LmdldCgpLCB0YXJnZXRzKTsKICAgICBp
ZiAoc2V0VHJhbnNhY3Rpb25BY3RpdmUpCiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPnNldEFjdGl2
ZShmYWxzZSk7CkBAIC00ODEsNiArNDg4LDEyIEBAIHZvaWQgSURCUmVxdWVzdDo6dW5jYXVnaHRF
eGNlcHRpb25JbkV2ZW50SGFuZGxlcigpCiAgICAgfQogfQogCit2b2lkIElEQlJlcXVlc3Q6OmNs
ZWFyVHJhbnNhY3Rpb25Qcm9wZXJ0eSgpCit7CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24tPmlz
VmVyc2lvbkNoYW5nZSgpKTsKKyAgICBtX3RyYW5zYWN0aW9uLmNsZWFyKCk7Cit9CisKIHZvaWQg
SURCUmVxdWVzdDo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAg
IEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gUEVORElORyB8fCBtX3JlYWR5U3RhdGUgPT0gRE9ORSk7
CkBAIC00ODgsNyArNTAxLDcgQEAgdm9pZCBJREJSZXF1ZXN0OjplbnF1ZXVlRXZlbnQoUGFzc1Jl
ZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgaWYgKG1fY29udGV4dFN0b3BwZWQgfHwgIXNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKG1fcmVhZHlT
dGF0ZSA9PSBQRU5ESU5HKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcmVhZHlTdGF0ZSA9
PSBQRU5ESU5HIHx8IGlzT3BlbkRCUmVxdWVzdCgpLCAiV2hlbiBxdWV1ZWluZyBldmVudCAlcywg
bV9yZWFkeVN0YXRlIHdhcyAlZCIsIGV2ZW50LT50eXBlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgbV9yZWFkeVN0YXRlKTsKIAogICAgIEV2ZW50UXVldWUqIGV2ZW50UXVldWUgPSBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmV2ZW50UXVldWUoKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmlu
ZGV4IGE4MDRjMmJkNWViMWI3MzFhNTE5NzU1ODY4OWFkYjZhNjVlYWJjM2UuLjY3ZGY0ZmJkMjJm
N2JjNmFmNmY0NTZhMDAzZWNmZjk2YWRkYjYzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTkxLDYgKzkxLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCk7CiAgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYs
IGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+ID4mKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IC8vIE5vdCBp
bXBsZW1lbnRlZC4gQ2FsbGJhY2sgc2hvdWxkIG5vdCByZWFjaCB0aGUgcmVuZGVyZXIgc2lkZS4K
ICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7CisgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tl
ZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAg
ICAgLy8gQWN0aXZlRE9NT2JqZWN0CiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0IE9WRVJSSURFOwpAQCAtMTAzLDYgKzEwNCw4IEBAIHB1YmxpYzoKICAgICBib29s
IGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVj
KSB7IHJldHVybiBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOyB9CiAgICAg
dmlydHVhbCB2b2lkIHVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKTsKIAorICAgIHZv
aWQgY2xlYXJUcmFuc2FjdGlvblByb3BlcnR5KCk7CisKICAgICB1c2luZyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxJREJDYWxsYmFja3M+OjpyZWY7CiAgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8SURCQ2FsbGJhY2tzPjo6ZGVyZWY7CiAKQEAgLTExMyw2ICsxMTYsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgdW5zaWduZWQgc2hvcnQgbV9lcnJvckNvZGU7CiAgICAgU3RyaW5nIG1fZXJyb3JNZXNz
YWdlOwogICAgIFJlZlB0cjxET01FcnJvcj4gbV9lcnJvcjsKKyAgICBib29sIG1fY29udGV4dFN0
b3BwZWQ7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwogCiBwcml2
YXRlOgogICAgIC8vIEV2ZW50VGFyZ2V0CkBAIC0xMjMsMTQgKzEyOCwxNiBAQCBwcml2YXRlOgog
CiAgICAgUGFzc1JlZlB0cjxJREJDdXJzb3I+IGdldFJlc3VsdEN1cnNvcigpOwogICAgIHZvaWQg
c2V0UmVzdWx0Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPik7CisgICAgdmlydHVhbCBib29s
IGlzT3BlbkRCUmVxdWVzdCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQogCiAgICAgUmVmUHRyPElEQkFueT4gbV9zb3VyY2U7Ci0gICAgUmVmUHRyPElEQlRyYW5z
YWN0aW9uPiBtX3RyYW5zYWN0aW9uOwogCiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAg
ICAgYm9vbCBtX3JlcXVlc3RBYm9ydGVkOyAvLyBNYXkgYmUgYWJvcnRlZCBieSB0cmFuc2FjdGlv
biB0aGVuIHJlY2VpdmUgYXN5bmMgb25zdWNjZXNzOyBpZ25vcmUgdnMuIGFzc2VydC4KICAgICBi
b29sIG1fY3Vyc29yRmluaXNoZWQ7Ci0gICAgYm9vbCBtX2NvbnRleHRTdG9wcGVkOwogICAgIFZl
Y3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9lbnF1ZXVlZEV2ZW50czsKIAogICAgIC8vIE9ubHkgdXNl
ZCBpZiB0aGUgcmVzdWx0IHR5cGUgd2lsbCBiZSBhIGN1cnNvci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA3NjEyMzQ3
MDE0MTgzYzlkYTYxZThkYmFmZTY1ZmEzODU5OTkzNDdlLi40Nzk2YjE0MTFmN2E0NGQzZWRiN2Qy
ZTQxNmY0NjQwYWFmMmI0OTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAi
SURCSW5kZXguaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIklEQk9i
amVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQk9wZW5EQlJlcXVlc3Qu
aCIKICNpbmNsdWRlICJJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgiCiAjaW5jbHVkZSAi
SURCVHJhY2luZy5oIgogCkBAIC00Myw3ICs0NCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUsIElEQkRhdGFi
YXNlKiBkYikKIHsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFkb3B0
UmVmKG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0LCBiYWNrZW5kLCBtb2RlLCBkYikpKTsKKyAg
ICBJREJPcGVuREJSZXF1ZXN0KiBvcGVuREJSZXF1ZXN0ID0gMDsKKyAgICByZXR1cm4gY3JlYXRl
KGNvbnRleHQsIGJhY2tlbmQsIG1vZGUsIGRiLCBvcGVuREJSZXF1ZXN0KTsKK30KKworUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4gYmFja2VuZCwgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRi
LCBJREJPcGVuREJSZXF1ZXN0KiBvcGVuREJSZXF1ZXN0KQoreworICAgIFJlZlB0cjxJREJUcmFu
c2FjdGlvbj4gdHJhbnNhY3Rpb24oYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uKGNvbnRleHQs
IGJhY2tlbmQsIG1vZGUsIGRiLCBvcGVuREJSZXF1ZXN0KSkpOwogICAgIHRyYW5zYWN0aW9uLT5z
dXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gdHJhbnNhY3Rpb24ucmVsZWFzZSgpOwogfQpA
QCAtNzksMTAgKzg2LDExIEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1v
ZGVSZWFkV3JpdGVMZWdhY3koKQogfQogCiAKLUlEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwg
SURCRGF0YWJhc2UqIGRiKQorSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlPiBiYWNrZW5kLCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBJREJEYXRhYmFz
ZSogZGIsIElEQk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJlcXVlc3QpCiAgICAgOiBBY3RpdmVET01P
YmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fYmFja2VuZChiYWNrZW5kKQogICAgICwgbV9k
YXRhYmFzZShkYikKKyAgICAsIG1fb3BlbkRCUmVxdWVzdChvcGVuREJSZXF1ZXN0KQogICAgICwg
bV9tb2RlKG1vZGUpCiAgICAgLCBtX2FjdGl2ZSh0cnVlKQogICAgICwgbV9zdGF0ZShVbnVzZWQp
CkBAIC0xODIsNyArMTkwLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVEZWxl
dGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6c2V0QWN0aXZl
KGJvb2wgYWN0aXZlKQogewotICAgIEFTU0VSVChtX3N0YXRlICE9IEZpbmlzaGVkKTsKKyAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKG1fc3RhdGUgIT0gRmluaXNoZWQsICJBIGZpbmlzaGVkIHRyYW5z
YWN0aW9uIHRyaWVkIHRvIHNldEFjdGl2ZSglcykgaW4gJXAiLCBhY3RpdmUgPyAidHJ1ZSIgOiAi
ZmFsc2UiLCB0aGlzKTsKICAgICBpZiAobV9zdGF0ZSA9PSBGaW5pc2hpbmcpCiAgICAgICAgIHJl
dHVybjsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBVbnVzZWQgfHwgbV9zdGF0ZSA9PSBVc2VkKTsK
QEAgLTM3NSw3ICszODMsMTIgQEAgYm9vbCBJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudChQ
YXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIAogICAgIC8vIEZJWE1FOiBXaGVuIHdlIGFsbG93IGN1
c3RvbSBldmVudCBkaXNwYXRjaGluZywgdGhpcyB3aWxsIHByb2JhYmx5IG5lZWQgdG8gY2hhbmdl
LgogICAgIEFTU0VSVChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jb21wbGV0ZUV2ZW50
IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmFib3J0RXZlbnQpOwotICAgIHJldHVy
biBJREJFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoKGV2ZW50LmdldCgpLCB0YXJnZXRzKTsKKyAg
ICBib29sIHJldHVyblZhbHVlID0gSURCRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaChldmVudC5n
ZXQoKSwgdGFyZ2V0cyk7CisgICAgLy8gRklYTUU6IFRyeSB0byBjb25zdHJ1Y3QgYSB0ZXN0IHdo
ZXJlIHx0aGlzfCBvdXRsaXZlcyBvcGVuREJSZXF1ZXN0IGFuZCB3ZQorICAgIC8vIGdldCBhIGNy
YXNoLgorICAgIGlmIChtX29wZW5EQlJlcXVlc3QpCisgICAgICAgIG1fb3BlbkRCUmVxdWVzdC0+
Y2xlYXJUcmFuc2FjdGlvblByb3BlcnR5KCk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQog
CiBib29sIElEQlRyYW5zYWN0aW9uOjpjYW5TdXNwZW5kKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IDFmN2FmN2Rh
ZDFiZTk0OGY2YjQxOTU3Zjc5ZTVmNjg3NDJiOTlhZjAuLjAwNWUzNzM2MzBhNGQyZmYyZWJhZmQ4
MWVlMzZlYTBjOTg5YTkyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBJREJDdXJzb3I7CiBjbGFzcyBJREJEYXRhYmFzZTsKIGNsYXNzIElEQk9iamVj
dFN0b3JlOworY2xhc3MgSURCT3BlbkRCUmVxdWVzdDsKIAogY2xhc3MgSURCVHJhbnNhY3Rpb24g
OiBwdWJsaWMgSURCVHJhbnNhY3Rpb25DYWxsYmFja3MsIHB1YmxpYyBFdmVudFRhcmdldCwgcHVi
bGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CkBAIC01Niw2ICs1Nyw3IEBAIHB1YmxpYzoK
ICAgICB9OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+LCBNb2RlLCBJREJEYXRhYmFzZSopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwgTW9kZSwgSURCRGF0YWJhc2UqLCBJREJP
cGVuREJSZXF1ZXN0Kik7CiAgICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb24oKTsKIAogICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1vZGVSZWFkT25seSgpOwpAQCAtMTE5LDcgKzEyMSw3
IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
Pjo6ZGVyZWY7CiAKIHByaXZhdGU6Ci0gICAgSURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwgTW9k
ZSwgSURCRGF0YWJhc2UqKTsKKyAgICBJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBNb2RlLCBJ
REJEYXRhYmFzZSosIElEQk9wZW5EQlJlcXVlc3QqKTsKIAogICAgIHZvaWQgZW5xdWV1ZUV2ZW50
KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICB2b2lkIGNsb3NlT3BlbkN1cnNvcnMoKTsKQEAgLTE0
Miw2ICsxNDQsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4gbV9iYWNrZW5kOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gbV9kYXRhYmFz
ZTsKKyAgICBJREJPcGVuREJSZXF1ZXN0KiBtX29wZW5EQlJlcXVlc3Q7CiAgICAgY29uc3QgTW9k
ZSBtX21vZGU7CiAgICAgYm9vbCBtX2FjdGl2ZTsKICAgICBTdGF0ZSBtX3N0YXRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsLmNwcAppbmRleCA3MGYzMzY3YWJmYmMxYTA0YTlmZWNhMWNhYjRlNDMz
MGRkNjM3MzQxLi4xYmJkMjNiNTZiYmEwZjllNmVmMzQ0OTlkZWI4MDZiM2MwODQ3MGVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcApAQCAtMjI3LDYgKzIyNyw4IEBAIHZvaWQgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6Y29tbWl0KCkKICAgICBlbHNlCiAgICAgICAgIG1fY2FsbGJh
Y2tzLT5vbkFib3J0KCk7CiAKKyAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVkQW5k
RXZlbnRzRmlyZWQodGhpcyk7CisKICAgICBtX2RhdGFiYXNlID0gMDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVkZWRF
dmVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjEyMDU0NThlNGY0Nzk1OWEzZWM4OTA0YmE1NjA2YzJmMTJk
MTlhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJVcGdyYWRlTmVlZGVkRXZlbnQuaCIKKworI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2lu
Y2x1ZGUgIklEQkFueS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8SURC
VXBncmFkZU5lZWRlZEV2ZW50PiBJREJVcGdyYWRlTmVlZGVkRXZlbnQ6OmNyZWF0ZShpbnQ2NF90
IG9sZFZlcnNpb24sIGludDY0X3QgbmV3VmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJVcGdyYWRlTmVlZGVkRXZlbnQo
b2xkVmVyc2lvbiwgbmV3VmVyc2lvbiwgZXZlbnRUeXBlKSk7Cit9CisKK0lEQlVwZ3JhZGVOZWVk
ZWRFdmVudDo6SURCVXBncmFkZU5lZWRlZEV2ZW50KGludDY0X3Qgb2xkVmVyc2lvbiwgaW50NjRf
dCBuZXdWZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKKyAgICA6IEV2ZW50
KGV2ZW50VHlwZSwgZmFsc2UgLypjYW5CdWJibGUqLywgZmFsc2UgLypjYW5jZWxhYmxlKi8pCisg
ICAgLCBtX29sZFZlcnNpb24ob2xkVmVyc2lvbikKKyAgICAsIG1fbmV3VmVyc2lvbihuZXdWZXJz
aW9uKQoreworfQorCitJREJVcGdyYWRlTmVlZGVkRXZlbnQ6On5JREJVcGdyYWRlTmVlZGVkRXZl
bnQoKQoreworfQorCitpbnQ2NF90IElEQlVwZ3JhZGVOZWVkZWRFdmVudDo6b2xkVmVyc2lvbigp
Cit7CisgICAgcmV0dXJuIG1fb2xkVmVyc2lvbjsKK30KKworaW50NjRfdCBJREJVcGdyYWRlTmVl
ZGVkRXZlbnQ6Om5ld1ZlcnNpb24oKQoreworICAgIHJldHVybiBtX25ld1ZlcnNpb247Cit9CisK
K2NvbnN0IEF0b21pY1N0cmluZyYgSURCVXBncmFkZU5lZWRlZEV2ZW50OjppbnRlcmZhY2VOYW1l
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvcklEQlVwZ3Jh
ZGVOZWVkZWRFdmVudDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3JhZGVOZWVk
ZWRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5l
ZWRlZEV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA2NzFkMjQ0OGE3NjEwODEyZmJmNTUwMDljOTYyYWM0
YTIwNWU3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlVwZ3JhZGVOZWVkZWRFdmVudC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIElEQlVwZ3JhZGVOZWVkZWRFdmVudF9oCisjZGVmaW5lIElEQlVwZ3JhZGVOZWVkZWRFdmVu
dF9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkV2ZW50Lmgi
CisjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQkFueTsKKworY2xhc3MgSURCVXBncmFkZU5l
ZWRlZEV2ZW50IDogcHVibGljIEV2ZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJREJVcGdyYWRlTmVlZGVkRXZlbnQ+IGNyZWF0ZShpbnQ2NF90IG9sZFZlcnNpb24gPSBJREJE
YXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24sIGludDY0X3QgbmV3VmVyc2lvbiA9IElEQkRh
dGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUgPSBBdG9taWNTdHJpbmcoKSk7CisgICAgdmlydHVhbCB+SURCVXBncmFkZU5lZWRlZEV2ZW50
KCk7CisKKyAgICB2aXJ0dWFsIGludDY0X3Qgb2xkVmVyc2lvbigpOworICAgIHZpcnR1YWwgaW50
NjRfdCBuZXdWZXJzaW9uKCk7CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50
ZXJmYWNlTmFtZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIElEQlVwZ3JhZGVOZWVkZWRFdmVu
dChpbnQ2NF90IG9sZFZlcnNpb24sIGludDY0X3QgbmV3VmVyc2lvbiwgY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUpOworCisgICAgaW50NjRfdCBtX29sZFZlcnNpb247CisgICAgaW50NjRf
dCBtX25ld1ZlcnNpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIElEQlVwZ3JhZGVOZWVkZWRF
dmVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJV
cGdyYWRlTmVlZGVkRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVXBncmFkZU5lZWRlZEV2ZW50LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzdiMDAwZDQyMmZiNzI3ZDQw
MDgyMzY5OGE0MDExZDIyMWQ1N2E5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVXBncmFkZU5lZWRlZEV2ZW50LmlkbApAQCAtMCwwICsxLDM0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworbW9kdWxlIHN0b3JhZ2UgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAg
Q29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQorICAgIF0gSURCVXBncmFkZU5lZWRlZEV2ZW50
IDogRXZlbnQgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25n
IG9sZFZlcnNpb247CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxv
bmcgbmV3VmVyc2lvbjsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDhiYzgwZjBmY2Rl
OWI2Y2YxNDRiODk2MDM0ZWQ4MWU5MjJkOWU3NjMuLjFiY2M5MmQwNDAwYjRhMzVlNzQ0MTAwYzI2
MjBhOGIxZWY1ODQzMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTgxMyw4ICs4MTMsMTAgQEAKICAg
ICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaWRsJywKICAgICAgICAgICAgICdN
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9pbmRl
eGVkZGIvSURCT3BlbkRCUmVxdWVzdC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlJlcXVlc3QuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5pZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlVwZ3Jh
ZGVOZWVkZWRFdmVudC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlZl
cnNpb25DaGFuZ2VFdmVudC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lE
QlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVk
ZGIvV29ya2VyQ29udGV4dEluZGV4ZWREYXRhYmFzZS5pZGwnLApAQCAtMTUwNCw2ICsxNTA2LDgg
QEAKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbC5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2UuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIv
SURCT3BlbkRCUmVxdWVzdC5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9wZW5EQlJlcXVlc3QuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCUGVu
ZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAnLApAQCAtMTUxNyw2ICsxNTIxLDggQEAKICAgICAg
ICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oJywKICAg
ICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNw
cCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvci5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJVcGdyYWRlTmVlZGVk
RXZlbnQuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJVcGdyYWRlTmVl
ZGVkRXZlbnQuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNo
YW5nZUV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lv
bkNoYW5nZUV2ZW50LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNp
b25DaGFuZ2VSZXF1ZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCBiMGVmYmU3
NjUwOGM4ZWIyNTRkZjI5NjJiYmU4OWRjNjI3MTcxNDJkLi5jNTU5ZTg1OTIyNmY3NmVkZWJiNjY0
N2ZiZDNmM2QxYjM4NDcyYzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTExMCw2ICsx
MTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8odGV4dElucHV0KSBcCiAgICAg
bWFjcm8odW5sb2FkKSBcCiAgICAgbWFjcm8odXBkYXRlcmVhZHkpIFwKKyAgICBtYWNybyh1cGdy
YWRlbmVlZGVkKSBcCiAgICAgbWFjcm8odmVyc2lvbmNoYW5nZSkgXAogICAgIG1hY3JvKHdlYmtp
dHZpc2liaWxpdHljaGFuZ2UpIFwKICAgICBtYWNybyh3cml0ZSkgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5pbgppbmRleCA5YzBhYzU1NThhYWFjMTYwMWU5MzA5MTViMGQ3YjQ3YThkZTY2N2UyLi5m
MWU2ZGE3OWRhOTFhYjc4MzYzMzYzNDgzOGFiN2I1NzVlMzgxMzg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnROYW1lcy5pbgpAQCAtMzksNiArMzksNyBAQCBTdG9yYWdlRXZlbnQKIFNWR0V2ZW50cyBpbnRl
cmZhY2VOYW1lPUV2ZW50LCBjb25kaXRpb25hbD1TVkcKIFNWR1pvb21FdmVudCBjb25kaXRpb25h
bD1TVkcKIFNWR1pvb21FdmVudHMgaW50ZXJmYWNlTmFtZT1TVkdab29tRXZlbnQsIGNvbmRpdGlv
bmFsPVNWRworSURCVXBncmFkZU5lZWRlZEV2ZW50IGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJB
U0UKIElEQlZlcnNpb25DaGFuZ2VFdmVudCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBU
b3VjaEV2ZW50IGNvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUywgcnVudGltZUNvbmRpdGlvbmFsPXRv
dWNoRW5hYmxlZAogRGV2aWNlTW90aW9uRXZlbnQgY29uZGl0aW9uYWw9REVWSUNFX09SSUVOVEFU
SU9OCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5Lmlu
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCBmZjYwYWFk
NGRiNTlmOWNmZTdmOThhMWFkYzk1ZjdkOTExYzBhYzMyLi5kMTA4YjdiMWFmNTQ0ZGM0YTkyNDk5
NDI4NTgxNmNjYWJhMDJhNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4KQEAgLTksNiArOSw3IEBAIEV2ZW50U291cmNlCiBGaWxlUmVhZGVyIGNvbmRpdGlvbmFs
PUJMT0IKIEZpbGVXcml0ZXIgY29uZGl0aW9uYWw9RklMRV9TWVNURU0KIElEQkRhdGFiYXNlIGNv
bmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKK0lEQk9wZW5EQlJlcXVlc3QgY29uZGl0aW9uYWw9
SU5ERVhFRF9EQVRBQkFTRQogSURCUmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNF
CiBJREJUcmFuc2FjdGlvbiBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJREJWZXJzaW9u
Q2hhbmdlUmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCBj
NTg0YjFlOWZkM2VhZmE5ZWZlYWM2MWQ0MTY1ZGYzNmM0MmVkOGE3Li42Mzg5OTBlNDYxODE1Y2Rk
NTQ5Y2M2YmY5YTY1NDRiZmRiMWQ2ZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTIzNyw3ICsyMzcsNyBAQCBw
cml2YXRlOgogdm9pZCBFeGVjdXRhYmxlV2l0aERhdGFiYXNlOjpzdGFydChJREJGYWN0b3J5QmFj
a2VuZEludGVyZmFjZSogaWRiRmFjdG9yeSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2lu
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGFiYXNl
TmFtZSkKIHsKICAgICBSZWZQdHI8T3BlbkRhdGFiYXNlQ2FsbGJhY2s+IGNhbGxiYWNrID0gT3Bl
bkRhdGFiYXNlQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzKTsKLSAgICBpZGJGYWN0b3J5LT5vcGVuKGRh
dGFiYXNlTmFtZSwgY2FsbGJhY2suZ2V0KCksIHNlY3VyaXR5T3JpZ2luLCBjb250ZXh0LCBTdHJp
bmcoKSk7CisgICAgaWRiRmFjdG9yeS0+b3BlbihkYXRhYmFzZU5hbWUsIElEQkRhdGFiYXNlTWV0
YWRhdGE6Ok5vSW50VmVyc2lvbiwgY2FsbGJhY2suZ2V0KCksIHNlY3VyaXR5T3JpZ2luLCBjb250
ZXh0LCBTdHJpbmcoKSk7CiB9CiAKIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb25Gb3JEYXRhYmFzZShJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2UqIGlkYkRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAppbmRl
eCA3ZGY4NGQyZmZiZTA3OTYxMzU1NjVmYTAyY2Y3ZThlMWFkODIwOTJjLi43YTM0MWY5MDM4NzFh
OTc1MjI2NGEyZGEzNzk4ZGFkZTVmMmRlMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCkBAIC0xMjksNiArMTI5LDE2IEBAIHZvaWQg
SURCQ2FsbGJhY2tzUHJveHk6Om9uQmxvY2tlZCgpCiAgICAgbV9jYWxsYmFja3MtPm9uQmxvY2tl
ZCgpOwogfQogCit2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvbkJsb2NrZWQoaW50NjRfdCBleGlz
dGluZ1ZlcnNpb24pCit7CisgICAgbV9jYWxsYmFja3MtPm9uQmxvY2tlZChleGlzdGluZ1ZlcnNp
b24pOworfQorCit2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblVwZ3JhZGVOZWVkZWQoaW50NjRf
dCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4g
dHJhbnNhY3Rpb24sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRh
YmFzZSkKK3sKKyAgICBtX2NhbGxiYWNrcy0+b25VcGdyYWRlTmVlZGVkKG9sZFZlcnNpb24sIG5l
dyBXZWJJREJUcmFuc2FjdGlvbkltcGwodHJhbnNhY3Rpb24pLCBuZXcgV2ViSURCRGF0YWJhc2VJ
bXBsKGRhdGFiYXNlKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCQ2FsbGJhY2tzUHJveHkuaAppbmRleCBkYjMwNTY1NTBiMmIyZTE3ZTJlMzBkZGVmNzllOWRk
MjljMjVmZmJkLi43YWQ0OTEwMjYxM2I5ZTAyOGI5Y2IwYTg5YTM1NDQ2YTc1MjY0NGU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKQEAgLTU2
LDYgKzU2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGlu
dWF0aW9uKCk7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OklEQktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpJREJLZXk+ID4mIHByaW1hcnlLZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzKTsKICAgICB2aXJ0dWFsIHZv
aWQgb25CbG9ja2VkKCk7CisgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4aXN0
aW5nVmVyc2lvbik7CisgICAgdmlydHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9s
ZFZlcnNpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsK
IAogcHJpdmF0ZToKICAgICBJREJDYWxsYmFja3NQcm94eShQYXNzT3duUHRyPFdlYklEQkNhbGxi
YWNrcz4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJh
c2VCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJh
c2VCYWNrZW5kUHJveHkuY3BwCmluZGV4IDkwMWI1NWU1NGYyYWFmZTA0ZmZmYzIyY2E5NmIzNTMx
OGVmOTQ3ODYuLjU2YWZlNWZiNWQyYjYyZmE0NDQ5OTU0NDY5MzBhMDFkMGJjOTc3OTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQ
cm94eS5jcHAKQEAgLTg3LDYgKzg3LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6
ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGkKIAogdm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNp
b24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
KyAgICBBU1NFUlQobV93ZWJJREJEYXRhYmFzZSk7CiAgICAgbV93ZWJJREJEYXRhYmFzZS0+c2V0
VmVyc2lvbih2ZXJzaW9uLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBlYyk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNl
Q2FsbGJhY2tzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJh
c2VDYWxsYmFja3NQcm94eS5jcHAKaW5kZXggODE2ZmFmNmM0ZGU3MGFlNjkyNjkzMGQwZGU1MGUw
ZWUyZDExNzg1Yi4uMTVmOTI4ZjM5YWQxZGE2ZjBiZGFhYTk3NmM4YzIwYTFiNTc2NDBmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxs
YmFja3NQcm94eS5jcHAKQEAgLTQ4LDYgKzQ4LDExIEBAIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJv
eHk6On5JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5KCkKIHsKIH0KIAordm9pZCBJREJEYXRhYmFz
ZUNhbGxiYWNrc1Byb3h5OjpvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBjdXJyZW50VmVyc2lvbiwg
aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKQoreworICAgIG1fY2FsbGJhY2tzLT5vblZlcnNpb25D
aGFuZ2UoY3VycmVudFZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24pOworfQorCiB2b2lkIElEQkRh
dGFiYXNlQ2FsbGJhY2tzUHJveHk6Om9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHJlcXVl
c3RlZFZlcnNpb24pCiB7CiAgICAgbV9jYWxsYmFja3MtPm9uVmVyc2lvbkNoYW5nZShyZXF1ZXN0
ZWRWZXJzaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRh
dGFiYXNlQ2FsbGJhY2tzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRh
dGFiYXNlQ2FsbGJhY2tzUHJveHkuaAppbmRleCBhZmZkY2U3N2Q1ZDk1OGRjMDBlMGY2ZjgwYWNm
ZmI4MDEyOTU4YjNiLi40ZWViZjBjY2I4MWFkZDAzZGI1ODljMzlkNWNiMDNhZWEzZDA5Y2Q4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUNhbGxiYWNr
c1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxs
YmFja3NQcm94eS5oCkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJE
YXRhYmFzZUNhbGxiYWNrc1Byb3h5KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hh
bmdlKGNvbnN0IFN0cmluZyYgcmVxdWVzdGVkVmVyc2lvbik7CisgICAgdmlydHVhbCB2b2lkIG9u
VmVyc2lvbkNoYW5nZShpbnQ2NF90IGN1cnJlbnRWZXJzaW9uLCBpbnQ2NF90IHJlcXVlc3RlZFZl
cnNpb24pOwogCiBwcml2YXRlOgogICAgIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkoUGFzc093
blB0cjxXZWJJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcAppbmRleCBlMmM5YmI5ZTIy
YzIwYTU3YmMyZDk4ZTI1NWI2OGRiM2M1OTk2MDAxLi4yMjEwZGExNjE2NTExNzZkYjVmNDg0NDlh
N2YyOGI2ZmNkOTIyYTBhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJGYWN0b3J5QmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcApAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgSURC
RmFjdG9yeUJhY2tlbmRQcm94eTo6Z2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gcHJwQ2FsbGJhCiB9CiAKIAotdm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpvcGVu
KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNr
cywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZGF0YURpcikKK3ZvaWQgSURCRmFj
dG9yeUJhY2tlbmRQcm94eTo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lv
biwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgZGF0YURpcikKIHsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MocHJwQ2FsbGJhY2tzKTsKICAgICBXZWJTZWN1cml0eU9yaWdpbiBvcmlnaW4oc2Vj
dXJpdHlPcmlnaW4pOwpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRQ
cm94eTo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBw
CiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBnZXRXZWJG
cmFtZShjb250ZXh0KTsKLSAgICBtX3dlYklEQkZhY3RvcnktPm9wZW4obmFtZSwgbmV3IFdlYklE
QkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgb3JpZ2luLCB3ZWJGcmFtZSwgZGF0YURpcik7Cisg
ICAgbV93ZWJJREJGYWN0b3J5LT5vcGVuKG5hbWUsIHZlcnNpb24sIG5ldyBXZWJJREJDYWxsYmFj
a3NJbXBsKGNhbGxiYWNrcyksIG9yaWdpbiwgd2ViRnJhbWUsIGRhdGFEaXIpOwogfQogCiB2b2lk
IElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgZGF0YURpcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaAppbmRleCAyMmE2ZjUyYTg2OTgxNmM4MDU2
NjhkNjg0ZDBhN2JmZmZjMjZhZTY5Li5jMGRlOTEwYTkyY2RlYTkxYTNkM2ExYzUzMGEyODA3YzVh
YmZhYTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5
QmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9y
eUJhY2tlbmRQcm94eS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5J
REJGYWN0b3J5QmFja2VuZFByb3h5KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VO
YW1lcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU3RyaW5nJiBkYXRhRGlyKTsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcm
IG5hbWUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4sIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIGRhdGFEaXIpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFdlYkNvcmU6
OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNh
bGxiYWNrc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJh
Y2tzSW1wbC5jcHAKaW5kZXggNWI1YWVkZjdjY2IzN2UyNDljNTNjMWFmOWU4ZWM4ZWQ5YjBlNmUx
Mi4uMWExMzIyYWE5NTFkNzI2MGE5MTk5ODQxODIyYmRkNzYyZDUyNGRiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTQ4
LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYklEQkNhbGxiYWNrc0ltcGw6Oldl
YklEQkNhbGxiYWNrc0ltcGwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAg
ICA6IG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKKyAgICAsIG1fZGlkQ3JlYXRlRGF0YWJhc2VQcm94
eShmYWxzZSkKIHsKIH0KIApAQCAtNzIsNiArNzMsMTAgQEAgdm9pZCBXZWJJREJDYWxsYmFja3NJ
bXBsOjpvblN1Y2Nlc3MoV2ViSURCQ3Vyc29yKiBjdXJzb3IpCiAKIHZvaWQgV2ViSURCQ2FsbGJh
Y2tzSW1wbDo6b25TdWNjZXNzKFdlYklEQkRhdGFiYXNlKiB3ZWJLaXRJbnN0YW5jZSkKIHsKKyAg
ICBpZiAobV9kaWRDcmVhdGVEYXRhYmFzZVByb3h5KSB7CisgICAgICAgIG1fY2FsbGJhY2tzLT5v
blN1Y2Nlc3MoSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZShhZG9wdFB0cihzdGF0aWNf
Y2FzdDxXZWJJREJEYXRhYmFzZSo+KDApKSkpOworICAgICAgICByZXR1cm47CisgICAgfQogICAg
IG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZShh
ZG9wdFB0cih3ZWJLaXRJbnN0YW5jZSkpKTsKIH0KIApAQCAtMTA1LDYgKzExMCwxNyBAQCB2b2lk
IFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uQmxvY2tlZCgpCiAgICAgbV9jYWxsYmFja3MtPm9uQmxv
Y2tlZCgpOwogfQogCit2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uQmxvY2tlZChsb25nIGxv
bmcgb2xkVmVyc2lvbikKK3sKKyAgICBtX2NhbGxiYWNrcy0+b25CbG9ja2VkKG9sZFZlcnNpb24p
OworfQorCit2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uVXBncmFkZU5lZWRlZChsb25nIGxv
bmcgb2xkVmVyc2lvbiwgV2ViSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBXZWJJREJEYXRh
YmFzZSogZGF0YWJhc2UpCit7CisgICAgbV9kaWRDcmVhdGVEYXRhYmFzZVByb3h5ID0gdHJ1ZTsK
KyAgICBtX2NhbGxiYWNrcy0+b25VcGdyYWRlTmVlZGVkKG9sZFZlcnNpb24sIElEQlRyYW5zYWN0
aW9uQmFja2VuZFByb3h5OjpjcmVhdGUoYWRvcHRQdHIodHJhbnNhY3Rpb24pKSwgSURCRGF0YWJh
c2VCYWNrZW5kUHJveHk6OmNyZWF0ZShhZG9wdFB0cihkYXRhYmFzZSkpKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaAppbmRl
eCA3YjAyMTYzNTlkNTZkODE4Njk1ZmU5NzNhMDE4MmFmYjUxMjUwMTYxLi5iNWI1NTRlMDMwNmM2
MmQzMzI0NmFiMGFkYTE1OWI1Mzk2NWQ5ODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCkBAIC01MSw5ICs1MSwxMiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFs
dWUmLCBjb25zdCBXZWJJREJLZXkmLCBjb25zdCBXZWJJREJLZXlQYXRoJik7CiAgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgb25C
bG9ja2VkKCk7CisgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZChsb25nIGxvbmcgb2xkVmVyc2lv
bik7CisgICAgdmlydHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZChsb25nIGxvbmcgb2xkVmVyc2lv
biwgV2ViSURCVHJhbnNhY3Rpb24qLCBXZWJJREJEYXRhYmFzZSopOwogCiBwcml2YXRlOgogICAg
IFJlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworICAgIGJvb2wgbV9k
aWRDcmVhdGVEYXRhYmFzZVByb3h5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNr
c0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxs
YmFja3NJbXBsLmNwcAppbmRleCBmZjBlODk4NjRiMjFhNjQ2ODliMDMxMjZjYWFmM2ZlNTY1OWZh
ZjMxLi42ODI4ZGY2ZmY2OTZhZGU0N2VmOTRlOGJkNDA3NDJmNGFiNjE5ZGJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbC5jcHAKQEAgLTQ0LDYgKzQ0LDExIEBAIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bDo6fldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpCiB7CiB9CiAKK3ZvaWQgV2ViSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25DaGFuZ2UobG9uZyBsb25nIGN1cnJlbnRWZXJz
aW9uLCBsb25nIGxvbmcgcmVxdWVzdGVkVmVyc2lvbikKK3sKKyAgICBtX2NhbGxiYWNrcy0+b25W
ZXJzaW9uQ2hhbmdlKGN1cnJlbnRWZXJzaW9uLCByZXF1ZXN0ZWRWZXJzaW9uKTsKK30KKwogdm9p
ZCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6Om9uVmVyc2lvbkNoYW5nZShjb25zdCBXZWJT
dHJpbmcmIHZlcnNpb24pCiB7CiAgICAgbV9jYWxsYmFja3MtPm9uVmVyc2lvbkNoYW5nZSh2ZXJz
aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsLmgKaW5kZXggMjFjM2RjN2M1YWM0YWQwYmVhOGRmMjkxNmViYjNm
ODhjNjdmZjA1Zi4uNTczNDkwYmZmMzA0MmE1Y2RiZjRhMTc3MWY2YTVkZTQ0NzJlNWQ5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsLmgKQEAgLTQzLDYgKzQzLDcgQEAgcHVibGljOgogICAgIFdlYklEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tz
Pik7CiAgICAgdmlydHVhbCB+V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKCk7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGxvbmcgbG9uZyBjdXJyZW50VmVyc2lvbiwgbG9u
ZyBsb25nIHJlcXVlc3RlZFZlcnNpb24pOwogICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFu
Z2UoY29uc3QgV2ViU3RyaW5nJiB2ZXJzaW9uKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcAppbmRleCBkMTRhYzcxZTE4
Yzg1OTMxNTJlZmRmZDVjODM5ZTAxNzIwZTNmZmRjLi5hZDcxNDc2YjdlYmI0Njg2ZWE4MjViOTYy
MTkxNmU2M2IyOTBhYzc3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJGYWN0b3J5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRmFjdG9yeUltcGwuY3BwCkBAIC02MywxNyArNjMsOSBAQCB2b2lkIFdlYklEQkZhY3RvcnlJ
bXBsOjpnZXREYXRhYmFzZU5hbWVzKFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBX
ZWJTZQogICAgIG1faWRiRmFjdG9yeUJhY2tlbmQtPmdldERhdGFiYXNlTmFtZXMoSURCQ2FsbGJh
Y2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgb3JpZ2luLCAwLCBkYXRhRGly
KTsKIH0KIAotCi12b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpvcGVuKGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2lu
JiBvcmlnaW4sIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKQotewotICAgIG1f
aWRiRmFjdG9yeUJhY2tlbmQtPm9wZW4obmFtZSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShh
ZG9wdFB0cihjYWxsYmFja3MpKS5nZXQoKSwgb3JpZ2luLCAwLCBkYXRhRGlyKTsKLX0KLQogdm9p
ZCBXZWJJREJGYWN0b3J5SW1wbDo6b3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGxvbmcgbG9u
ZyB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpCiB7Ci0g
ICAgLy8gRklYTUU6IFBhc3MgdmVyc2lvbiBhbG9uZyB3aGVuIFdlYkNvcmU6OklEQkZhY3RvcnlC
YWNrZW5kSW50ZXJmYWNlCi0gICAgLy8gaGFzIGFuIG9wZW4gbWV0aG9kIHRoYXQgYWNjZXB0cyBp
dC4KLSAgICBtX2lkYkZhY3RvcnlCYWNrZW5kLT5vcGVuKG5hbWUsIElEQkNhbGxiYWNrc1Byb3h5
OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSkuZ2V0KCksIG9yaWdpbiwgMCwgZGF0YURpcik7
CisgICAgbV9pZGJGYWN0b3J5QmFja2VuZC0+b3BlbihuYW1lLCB2ZXJzaW9uLCBJREJDYWxsYmFj
a3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLmdldCgpLCBvcmlnaW4sIDAsIGRh
dGFEaXIpOwogfQogCiB2b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpkZWxldGVEYXRhYmFzZShjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJT
ZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURp
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oCmlu
ZGV4IGZhNDM4ZDc2NDhlMzQ2NGM1YTFjYmQ1Y2NmNTdjZmYwZTU2ZjMyODUuLjgzM2VlYjU5MTI1
OWI4NTNjMzIxZmQxMThmMDk0YTViOGE3Yzg4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaApAQCAtNDUsNyArNDUsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+V2ViSURCRmFjdG9yeUltcGwoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRE
YXRhYmFzZU5hbWVzKFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwg
V2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpOwotICAgIHZpcnR1YWwgdm9pZCBv
cGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2Vj
dXJpdHlPcmlnaW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcik7CiAgICAg
dmlydHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lv
biwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBXZWJGcmFtZSos
IGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFi
YXNlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2Vj
dXJpdHlPcmlnaW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRU
ZXN0LmNwcAppbmRleCBkOWUzZDY5N2IxOTdjNzQwNmY2M2JhZWI0ODM5MzFiNGVhYzk1MDg1Li5i
NjUzZTdlZTJiNmJiNzNjMWJlYmI5YzIzMjU0YzFjYzNkOGRhOWFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCkBA
IC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRmFpbGluZ0JhY2tpbmdTdG9yZSk7CiAgICAgfQotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJ
REJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGludDY0X3Qm
KQorICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIGludDY0X3QsIGludDY0X3QmKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KQEAgLTEwMiw3ICsxMDIsOCBAQCBURVNUKElEQkFib3J0VGVzdCwg
VGhlVGVzdCkKICAgICBjb25zdCBTdHJpbmcmIG5hbWUgPSAiZGIgbmFtZSI7CiAgICAgTW9ja0lE
QkNhbGxiYWNrcyBjYWxsYmFja3M7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4g
PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKCJodHRwIiwgImxvY2FsaG9zdCIsIDgxKTsKLSAgICBm
YWN0b3J5LT5vcGVuKG5hbWUsICZjYWxsYmFja3MsIG9yaWdpbiwgMCAvKkZyYW1lKi8sIFN0cmlu
ZygpIC8qcGF0aCovKTsKKyAgICBjb25zdCBpbnQ2NF90IER1bW15VmVyc2lvbiA9IDI7CisgICAg
ZmFjdG9yeS0+b3BlbihuYW1lLCBEdW1teVZlcnNpb24sICZjYWxsYmFja3MsIG9yaWdpbiwgMCAv
KkZyYW1lKi8sIFN0cmluZygpIC8qcGF0aCovKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKaW5k
ZXggMDg0MDVjZTBhYjU4Yzk2ZmMyOTZjM2YwZjhhMTRmZjY5ZDY1YmExOC4uZDk2ZjdjNmNhMGVh
OTQyYTI1ZDM4MjRiNWUxMmNkNWM0OWU3YzUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKQEAgLTMzLDggKzMzLDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSURCRmFrZUJhY2tpbmdTdG9yZSA6IHB1YmxpYyBJREJC
YWNraW5nU3RvcmUgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVz
KFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzKSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91
bmRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElkKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkgT1ZFUlJJREUgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNv
bnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiBmb3VuZFZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50
VmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgaW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2
NF90JiByb3dJZCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1
cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGludDY0X3Qgcm93SWQsIGNvbnN0IFN0cmluZyYgdmVy
c2lvbikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRl
RGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMDUzOGRjNTlmNTEwZmY5MTBjZDM4ZmVjZmFmOTI2NTY3NzRiZTg3My4uYzAwNDk1
MDIxMzAwNTdkYmFjMzVjYjI5MTdkOTk1MjBmOWZlN2QyZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBA
QAorMjAxMi0wNy0yNiAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgSW5kZXhlZERCOiBpbXBsZW1lbnQgdXBncmFkZW5lZWRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1MDUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9m
IHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1m
dW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
aW50dmVyc2lvbi1hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWFib3J0LWluLWlu
aXRpYWwtdXBncmFkZW5lZWRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9pbnR2ZXJzaW9uLWFuZC1zZXR2ZXJzaW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hbmQtc2V0dmVyc2lvbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWJsb2NrZWQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9u
LWJsb2NrZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVy
c2lvbi1jbG9zZS1iZXR3ZWVuLWV2ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtYmV0d2Vlbi1ldmVudHMuaHRtbDog
QWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9zZS1pbi1v
bmNvbXBsZXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvaW50dmVyc2lvbi1jbG9zZS1pbi1vbmNvbXBsZXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tZGVsZXRlLWluLXVwZ3JhZGVuZWVkZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1kb250LWZy
ZWV6ZS1vbi1yZWZyZXNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L2ludHZlcnNpb24taGlnaC12ZXJzaW9uLWZpcnN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1oaWdoLXZlcnNpb24tZmlyc3QuaHRt
bDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0LXBh
cmFtZXRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L2ludHZlcnNpb24tb21pdC1wYXJhbWV0ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vcGVuLXdpdGgtdmVyc2lvbi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tb3Blbi13aXRoLXZl
cnNpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2ludHZlcnNpb24tYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAoZGVsZXRlU3VjY2Vzcyk6CisgICAgICAgICh1cGdyYWRl
TmVlZGVkKToKKyAgICAgICAgKG9uQWJvcnQpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9pbnR2ZXJzaW9uLWFuZC1zZXR2ZXJzaW9uLmpzOiBBZGRlZC4KKyAgICAgICAg
KHRlc3QpOgorICAgICAgICAoZGVsZXRlU3VjY2Vzcyk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6
CisgICAgICAgIChpblNldFZlcnNpb24pOgorICAgICAgICAoc2V0VmVyc2lvbkRvbmUpOgorICAg
ICAgICAoc2Vjb25kT3Blbik6CisgICAgICAgIChmaXJzdFVwZ3JhZGVOZWVkZWQpOgorICAgICAg
ICAodHJhbnNhY3Rpb25Db21wbGV0ZWQpOgorICAgICAgICAoZmlyc3RPcGVuV2l0aFZlcnNpb24p
OgorICAgICAgICAoc2V0VmVyc2lvbk5vdEFsbG93ZWQpOgorICAgICAgICAoZXJyb3JXaGVuVHJ5
aW5nTG93VmVyc2lvbik6CisgICAgICAgIChzZWNvbmRVcGdyYWRlTmVlZGVkKToKKyAgICAgICAg
KHRoaXJkT3BlblN1Y2Nlc3MpOgorICAgICAgICAoZm91cnRoT3BlblN1Y2Nlc3MpOgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9uLWJsb2NrZWQuanM6IEFk
ZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChkZWxldGVTdWNjZXNzLnJlcXVlc3Qub251
cGdyYWRlbmVlZGVkKToKKyAgICAgICAgKGRlbGV0ZVN1Y2Nlc3MpOgorICAgICAgICAoZmlyc3RT
dWNjZXNzRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKHZlcnNpb25DaGFuZ2VIYW5kbGVyKToKKyAg
ICAgICAgKGJsb2NrZWRFdmVudEhhbmRsZXIpOgorICAgICAgICAoc2Vjb25kVXBncmFkZU5lZWRl
ZEV2ZW50SGFuZGxlcik6CisgICAgICAgIChzZWNvbmRTdWNjZXNzQ2FsbGJhY2spOgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9uLWNsb3NlLWJldHdlZW4t
ZXZlbnRzLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoZGVsZXRlU3VjY2Vz
cyk6CisgICAgICAgICh1cGdyYWRlTmVlZGVkLnRyYW5zYWN0aW9uLm9uY29tcGxldGUpOgorICAg
ICAgICAodXBncmFkZU5lZWRlZCk6CisgICAgICAgIChjbG9zZURCKToKKyAgICAgICAgKG9wZW5T
dWNjZXNzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW50dmVyc2lv
bi1jbG9zZS1pbi1vbmNvbXBsZXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAoZGVsZXRlU3VjY2Vzcyk6CisgICAgICAgICh1cGdyYWRlTmVlZGVkLnRyYW5zYWN0aW9uLm9u
Y29tcGxldGUpOgorICAgICAgICAodXBncmFkZU5lZWRlZCk6CisgICAgICAgIChvcGVuU3VjY2Vz
cyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ludHZlcnNpb24tZGVs
ZXRlLWluLXVwZ3JhZGVuZWVkZWQuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAg
IChpbml0aWFsbHlEZWxldGVkKToKKyAgICAgICAgKGZpcnN0VXBncmFkZU5lZWRlZCk6CisgICAg
ICAgIChtaWRSZXF1ZXN0RGVsZXRlKToKKyAgICAgICAgKG9wZW5TdWNjZXNzLmRiLm9udmVyc2lv
bmNoYW5nZSk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2ludHZlcnNpb24tZG9udC1mcmVlemUtb24tcmVmcmVzaC5qczogQWRk
ZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGRlbGV0ZVN1Y2Nlc3MpOgorICAgICAgICAo
dXBncmFkZU5lZWRlZC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlKToKKyAgICAgICAgKHVwZ3JhZGVO
ZWVkZWQpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9uLWhpZ2gtdmVyc2lvbi1maXJzdC5qczogQWRkZWQuCisg
ICAgICAgICh0ZXN0KToKKyAgICAgICAgKGRlbGV0ZVN1Y2Nlc3MucmVxdWVzdC5vbnVwZ3JhZGVu
ZWVkZWQpOgorICAgICAgICAoZGVsZXRlU3VjY2Vzcyk6CisgICAgICAgIChmaXJzdFN1Y2Nlc3NF
dmVudEhhbmRsZXIpOgorICAgICAgICAodmVyc2lvbkNoYW5nZUhhbmRsZXIpOgorICAgICAgICAo
YmxvY2tlZEV2ZW50SGFuZGxlcjIpOgorICAgICAgICAodXBncmFkZU5lZWRlZEV2ZW50SGFuZGxl
cjIpOgorICAgICAgICAoc3VjY2Vzc0NhbGxiYWNrMik6CisgICAgICAgIChibG9ja2VkRXZlbnRI
YW5kbGVyNCk6CisgICAgICAgICh1cGdyYWRlTmVlZGVkRXZlbnRIYW5kbGVyNCk6CisgICAgICAg
IChzdWNjZXNzQ2FsbGJhY2s0KToKKyAgICAgICAgKGVycm9ySGFuZGxlcjMpOgorICAgICAgICAo
YmxvY2tlZEV2ZW50SGFuZGxlcjMpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9pbnR2ZXJzaW9uLW9taXQtcGFyYW1ldGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3Qp
OgorICAgICAgICAoZGVsZXRlU3VjY2Vzcy5yZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCk6CisgICAg
ICAgIChkZWxldGVTdWNjZXNzKToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW50dmVyc2lvbi1vcGVuLXdpdGgtdmVyc2lvbi5q
czogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGRlbGV0ZVN1Y2Nlc3MpOgorICAg
ICAgICAodXBncmFkZU5lZWRlZC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlKToKKyAgICAgICAgKHVw
Z3JhZGVOZWVkZWQpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorCiAyMDEyLTA3LTI2ICBOYXlh
biBLdW1hciBLICA8bmF5YW5ra0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgW1dlYkdMXSBJbml0
aWFsIHNpemUgb2YgY2FudmFzIGNhbiBiZSBsYXJnZXIgdGhhbiBNQVhfVklFV1BPUlRfRElNUy4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDY0MTM5MDkwNGY2NzI3ODU2YjdmMGY2Yjc5MzE2YjIyMWJhOWIwY2MuLmZlYTU5OTA2MDU4YTAy
M2NmNTcxNTIwNTZiYTQ0MDRlNTU5NjQzMWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTE3LDYgKzUxNyw4IEBAIFdPTlRGSVggU0tJ
UCA6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1zaGFyZWQtd29ya2VyLmh0
bWwgPSBQQVNTCiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9zaGFyZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWFsbG93ZWQuaHRtbCA9IFRFWFQK
IFdPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYmxvY2tlZC5odG1sID0gVEVYVAogV09OVEZJWCBT
S0lQIDogc3RvcmFnZS9pbmRleGVkZGIvYmFzaWNzLXNoYXJlZC13b3JrZXJzLmh0bWwgPSBQQVNT
CitXT05URklYIFNLSVAgOiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWRlbGV0ZS1pbi11
cGdyYWRlbmVlZGVkLmh0bWwgPSBQQVNTCitXT05URklYIFNLSVAgOiBzdG9yYWdlL2luZGV4ZWRk
Yi9pbnR2ZXJzaW9uLWRvbnQtZnJlZXplLW9uLXJlZnJlc2guaHRtbCA9IFBBU1MKIAogLy8gdGVz
dF9zaGVsbCBkb2VzIG5vdCBzdXBwb3J0IG1lc3NhZ2UgcG9ydHMKIEJVR1dLNzQ0NTkgU0tJUCA6
IGZhc3Qvd29ya2Vycy90ZXJtaW5hdGlvbi13aXRoLXBvcnQtbWVzc2FnZXMuaHRtbCA9IFBBU1MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYWJv
cnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVk
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTk2ZThkOTcxMWRiMDAwNWEwZmUzMmVjOWE2Y2E2
NjI4YmY1YWYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvaW50dmVyc2lvbi1hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMjAgQEAKK1Rlc3QgdGhhdCBhbiBhYm9ydCBpbiB0aGUgaW5pdGlhbCB1cGdy
YWRlbmVlZGVkIHNldHMgdmVyc2lvbiBiYWNrIHRvIDAKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhl
ZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5k
ZXhlZERCOworCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQoraW5kZXhlZERCLm9w
ZW4oZGJuYW1lLCAyKQorCit1cGdyYWRlTmVlZGVkKCk6CitQQVNTIGRiLnZlcnNpb24gaXMgMgor
dHJhbnNhY3Rpb24uYWJvcnQoKQorCitvbkFib3J0KCk6CitGQUlMIGV2ZW50LnRhcmdldC5kYi52
ZXJzaW9uIHNob3VsZCBiZSAwLiBXYXMgMi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9pbnR2ZXJzaW9uLWFib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hYm9ydC1pbi1pbml0aWFs
LXVwZ3JhZGVuZWVkZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjhhYzBkMGU3Yzk4MDU1MjNkZTQ4Y2Ew
MzIxNzYxYjNmMjUzZjdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvaW50dmVyc2lvbi1hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQuaHRtbApA
QCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9pbnR2ZXJzaW9uLWFib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYW5kLXNldHZlcnNpb24tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hbmQtc2V0dmVy
c2lvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjkwMjMzM2RmZjI2MDAxMDFmOWNkYWU0MGQ0
MGM0YzQwZmZlOGMzYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2ludHZlcnNpb24tYW5kLXNldHZlcnNpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
ODkgQEAKK1Rlc3QgdGhhdCBibGFoIGJsYWguCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8
fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWRE
QjsKKworaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKK0ZBSUwgU3RyaW5nKHJlcXVl
c3QpIHNob3VsZCBiZSBbb2JqZWN0IElEQk9wZW5EQlJlcXVlc3RdLiBXYXMgW29iamVjdCBJREJW
ZXJzaW9uQ2hhbmdlUmVxdWVzdF0uCisKK0NhbGwgb3BlbiB3aXRoIG5vIHZlcnNpb24gcGFyYW1l
dGVyOgoraW5kZXhlZERCLm9wZW4oZGJuYW1lKQorCitvcGVuU3VjY2VzcygpOgorZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0CitQQVNTIGRiLnZlcnNpb24gaXMgIiIKK3JlcXVlc3QgPSBkYi5zZXRW
ZXJzaW9uKCJzb21lIHZlcnNpb24iKQorCitpblNldFZlcnNpb24oKToKK1BBU1MgZGIudmVyc2lv
biBpcyAic29tZSB2ZXJzaW9uIgorCitzZXRWZXJzaW9uRG9uZSgpOgorUEFTUyBkYi52ZXJzaW9u
IGlzICJzb21lIHZlcnNpb24iCitkYi5jbG9zZSgpCitpbmRleGVkREIub3BlbihkYm5hbWUpCity
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHNlY29uZE9wZW4KKworc2Vjb25kT3BlbigpOgorZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0CitQQVNTIFN0cmluZyhkYikgaXMgIltvYmplY3QgSURCRGF0YWJhc2Vd
IgorUEFTUyBkYi52ZXJzaW9uIGlzICJzb21lIHZlcnNpb24iCitkYi5jbG9zZSgpCityZXF1ZXN0
ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAyKQorCitmaXJzdFVwZ3JhZGVOZWVkZWQoKToKK2Ri
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBTdHJpbmcoZGIpIGlzICJbb2JqZWN0IElEQkRh
dGFiYXNlXSIKK1BBU1MgU3RyaW5nKHJlcXVlc3QudHJhbnNhY3Rpb24pIGlzICJbb2JqZWN0IElE
QlRyYW5zYWN0aW9uXSIKK0ZBSUwgZXZlbnQub2xkVmVyc2lvbiBzaG91bGQgYmUgc29tZSB2ZXJz
aW9uIChvZiB0eXBlIHN0cmluZykuIFdhcyAwIChvZiB0eXBlIG51bWJlcikuCitQQVNTIGV2ZW50
Lm5ld1ZlcnNpb24gaXMgMgorcmVxdWVzdC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdHJhbnNh
Y3Rpb25Db21wbGV0ZWQKKwordHJhbnNhY3Rpb25Db21wbGV0ZWQoKToKK2RpZFRyYW5zYWN0aW9u
Q29tcGxldGUgPSB0cnVlCisKK2ZpcnN0T3BlbldpdGhWZXJzaW9uKCk6CitQQVNTIGRpZFRyYW5z
YWN0aW9uQ29tcGxldGUgaXMgdHJ1ZQorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIFN0
cmluZyhkYikgaXMgIltvYmplY3QgSURCRGF0YWJhc2VdIgorUEFTUyByZXF1ZXN0LnRyYW5zYWN0
aW9uIGlzIG51bGwKK1BBU1MgZGIudmVyc2lvbiBpcyAyCitQQVNTIFN0cmluZyhyZXF1ZXN0KSBp
cyAiW29iamVjdCBJREJPcGVuREJSZXF1ZXN0XSIKK3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCJz
dHJpbmcgdmVyc2lvbiAyIikKK1BBU1MgU3RyaW5nKHJlcXVlc3QpIGlzICJbb2JqZWN0IElEQlZl
cnNpb25DaGFuZ2VSZXF1ZXN0XSIKK3JlcXVlc3Qub25lcnJvciA9IHNldFZlcnNpb25Ob3RBbGxv
d2VkCisKK3NldFZlcnNpb25Ob3RBbGxvd2VkKCk6CitQQVNTIGV2ZW50LnR5cGUgaXMgImVycm9y
IgorcmVxdWVzdC53ZWJraXRFcnJvck1lc3NhZ2UgPSBZb3UgY2FuJ3QgdXNlIHRoZSBzZXRWZXJz
aW9uIGZ1bmN0aW9uIGlmIHlvdSd2ZSBhbHJlYWR5IHNldCB0aGUgdmVyc2lvbiB0aHJvdWdoIGFu
IG9wZW4gY2FsbC4gIFRoZSBjdXJyZW50IGludGVnZXIgdmVyc2lvbiBpcyAyCitkYi5jbG9zZSgp
CityZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAxKQorcmVxdWVzdC5vbmVycm9yID0g
ZXJyb3JXaGVuVHJ5aW5nTG93VmVyc2lvbgorCitlcnJvcldoZW5UcnlpbmdMb3dWZXJzaW9uKCk6
CityZXF1ZXN0LndlYmtpdEVycm9yTWVzc2FnZSA9IFRoZSByZXF1ZXN0ZWQgdmVyc2lvbiAoMSkg
aXMgbGVzcyB0aGFuIHRoZSBleGlzdGluZyB2ZXJzaW9uICgyKS4KK3JlcXVlc3QgPSBpbmRleGVk
REIub3BlbihkYm5hbWUsIDQpCityZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHNlY29uZFVwZ3Jh
ZGVOZWVkZWQKK3JlcXVlc3Qub25zdWNjZXNzID0gdGhpcmRPcGVuU3VjY2VzcworCitzZWNvbmRV
cGdyYWRlTmVlZGVkKCk6Citnb3RTZWNvbmRVcGdyYWRlTmVlZGVkID0gdHJ1ZQorUEFTUyBldmVu
dC5vbGRWZXJzaW9uIGlzIDIKK1BBU1MgZXZlbnQubmV3VmVyc2lvbiBpcyA0CisKK3RoaXJkT3Bl
blN1Y2Nlc3MoKToKK1BBU1MgZ290U2Vjb25kVXBncmFkZU5lZWRlZCBpcyB0cnVlCitkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgZGIudmVyc2lvbiBpcyA0CitkYi5jbG9zZSgpCityZXF1
ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKQorcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmb3VydGhP
cGVuU3VjY2VzcworCitmb3VydGhPcGVuU3VjY2VzcygpOgorZGIgPSBldmVudC50YXJnZXQucmVz
dWx0CitQQVNTIGRiLnZlcnNpb24gaXMgNAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2ludHZlcnNpb24tYW5kLXNldHZlcnNpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYW5kLXNldHZlcnNpb24uaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
MDZkZWQzOWUwMTNmM2NjNTU3Y2JiNjA4M2Y4ZTc2ZmFjMjI4ZjhhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hbmQtc2V0dmVyc2lv
bi5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2ludHZlcnNpb24tYW5kLXNldHZlcnNpb24uanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWJsb2NrZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1ibG9ja2VkLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ZjUwZDUxODYxZjk4ZDc4ZDRiOTRiMzVkMmY3ZTg2MWQ2MWE2YzMyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1ibG9j
a2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUxIEBACitUZXN0IHRoYXQgYmxvY2tlZCBldmVu
dHMgZ2V0IGRlbGl2ZXJlZCBwcm9wZXJseSB3aXRoIHRoZSBuZXcgb3BlbiBhcGkKKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNl
bGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVk
REIgfHwgc2VsZi5PSW5kZXhlZERCOworCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1l
KQorCitkZWxldGVTdWNjZXNzKCk6CityZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAy
KQorCityZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCgpOgorZ290Rmlyc3RVcGdyYWRlTmVlZGVkRXZl
bnQgPSB0cnVlCitQQVNTIGV2ZW50Lm9sZFZlcnNpb24gaXMgMAorUEFTUyBldmVudC5uZXdWZXJz
aW9uIGlzIDIKK1BBU1MgU3RyaW5nKGV2ZW50KSBpcyAiW29iamVjdCBJREJVcGdyYWRlTmVlZGVk
RXZlbnRdIgorCitmaXJzdFN1Y2Nlc3NFdmVudEhhbmRsZXIoKToKK1BBU1MgZ290Rmlyc3RVcGdy
YWRlTmVlZGVkRXZlbnQgaXMgdHJ1ZQorY29ubmVjdGlvbjEgPSBldmVudC50YXJnZXQucmVzdWx0
Citjb25uZWN0aW9uMS5vbnZlcnNpb25jaGFuZ2UgPSB2ZXJzaW9uQ2hhbmdlSGFuZGxlcgorUEFT
UyBTdHJpbmcoY29ubmVjdGlvbjEpIGlzICJbb2JqZWN0IElEQkRhdGFiYXNlXSIKK3JlcXVlc3Qg
PSBpbmRleGVkREIub3BlbihkYm5hbWUsIDMpCisKK3ZlcnNpb25DaGFuZ2VIYW5kbGVyKCk6Citz
YXdWZXJzaW9uQ2hhbmdlRXZlbnQgPSB0cnVlCitQQVNTIGV2ZW50LnR5cGUgaXMgInZlcnNpb25j
aGFuZ2UiCitGQUlMIFN0cmluZyhldmVudCkgc2hvdWxkIGJlIFtvYmplY3QgSURCVmVyc2lvbkNo
YW5nZUV2ZW50XS4gV2FzIFtvYmplY3QgSURCVXBncmFkZU5lZWRlZEV2ZW50XS4KK1BBU1MgZXZl
bnQub2xkVmVyc2lvbiBpcyAyCitQQVNTIGV2ZW50Lm5ld1ZlcnNpb24gaXMgMworCitibG9ja2Vk
RXZlbnRIYW5kbGVyKCk6CitQQVNTIHNhd1ZlcnNpb25DaGFuZ2VFdmVudCBpcyB0cnVlCitnb3RC
bG9ja2VkRXZlbnQgPSB0cnVlCitGQUlMIFN0cmluZyhldmVudCkgc2hvdWxkIGJlIFtvYmplY3Qg
SURCVmVyc2lvbkNoYW5nZUV2ZW50XS4gV2FzIFtvYmplY3QgSURCVXBncmFkZU5lZWRlZEV2ZW50
XS4KK1BBU1MgZXZlbnQub2xkVmVyc2lvbiBpcyAyCitQQVNTIGV2ZW50Lm5ld1ZlcnNpb24gaXMg
MworUEFTUyBldmVudC50eXBlIGlzICJibG9ja2VkIgorY29ubmVjdGlvbjEuY2xvc2UoKQorCitz
ZWNvbmRVcGdyYWRlTmVlZGVkRXZlbnRIYW5kbGVyKCk6CitQQVNTIGdvdEJsb2NrZWRFdmVudCBp
cyB0cnVlCitnb3RTZWNvbmRVcGdyYWRlTmVlZGVkRXZlbnQgPSB0cnVlCisKK3NlY29uZFN1Y2Nl
c3NDYWxsYmFjaygpOgorUEFTUyBnb3RTZWNvbmRVcGdyYWRlTmVlZGVkRXZlbnQgaXMgdHJ1ZQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYmxvY2tlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1ibG9ja2VkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjM4N2RlZWI4MDQwNGE1OTc3MTJhMzNhZGM4NmExOGM2M2VlNGY4YQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNp
b24tYmxvY2tlZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ludHZlcnNpb24tYmxvY2tlZC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtYmV0d2Vlbi1ldmVudHMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9zZS1iZXR3
ZWVuLWV2ZW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjgwOTFmNWJkNWQ1MDgxNzY4MjBj
ZjRjZDkyZDUzODZiYjM1Nzg4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtYmV0d2Vlbi1ldmVudHMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMzMgQEAKK1Rlc3QgdGhhdCBzcGVjaWZ5aW5nIGEgdmVyc2lvbiB3aGVuIG9w
ZW5pbmcgYSBub24tZXhpc3RlbnQgZGIgY2F1c2VzIGFuIHVwZ3JhZGVuZWVkZWQgZXZlbnQgYW5k
IHRoYXQgdGhlIHZlcnNpb24gbnVtYmVyIGlzIHNldCBjb3JyZWN0bHkuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndl
YmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8
IHNlbGYuT0luZGV4ZWREQjsKKworaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKK3Jl
cXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDcpCisKKwordXBncmFkZU5lZWRlZCgpOgor
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGV2ZW50Lm5ld1ZlcnNpb24gaXMgNwordHJh
bnNhY3Rpb24gPSBldmVudC50YXJnZXQudHJhbnNhY3Rpb24KKwordHJhbnNhY3Rpb24ub25jb21w
bGV0ZToKK3Nhd1RyYW5zYWN0aW9uQ29tcGxldGUgPSB0cnVlCitzZXRUaW1lb3V0KGNsb3NlREIs
IDApCisKK29wZW5TdWNjZXNzKCk6CitQQVNTIGRpZENhbGxDbG9zZURCIGlzIGZhbHNlCitQQVNT
IHNhd1RyYW5zYWN0aW9uQ29tcGxldGUgaXMgdHJ1ZQorZGIgPSBldmVudC50YXJnZXQucmVzdWx0
CitQQVNTIGRiLnZlcnNpb24gaXMgNworCitjbG9zZURCKCk6CitkaWRDYWxsQ2xvc2VEQiA9IHRy
dWUKK2RiLmNsb3NlKCkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2
ZXJzaW9uLWNsb3NlLWJldHdlZW4tZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9pbnR2ZXJzaW9uLWNsb3NlLWJldHdlZW4tZXZlbnRzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWUwZTNjMWE3MjhjNzNkNWEyNzAyZDEzMTU1MDU0OGU0NmYxMTZlOAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtYmV0d2Vl
bi1ldmVudHMuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9pbnR2ZXJzaW9uLWNsb3NlLWJldHdlZW4tZXZlbnRz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9zZS1pbi1vbmNvbXBsZXRl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24t
Y2xvc2UtaW4tb25jb21wbGV0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAzNzc3YmQ0NjNk
YzIzMTlhNmUwZmNmNDY2ZGJlM2FiOTI5NWE1YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtaW4tb25jb21wbGV0ZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzMiBAQAorVGVzdCB0aGF0IHNwZWNpZnlpbmcgYSB2ZXJzaW9u
IHdoZW4gb3BlbmluZyBhIG5vbi1leGlzdGVudCBkYiBjYXVzZXMgYW4gdXBncmFkZW5lZWRlZCBl
dmVudCBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaXMgc2V0IGNvcnJlY3RseS4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8
IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRl
eGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJu
YW1lKQorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgNykKKwordXBncmFkZU5lZWRl
ZCgpOgorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGV2ZW50Lm5ld1ZlcnNpb24gaXMg
NworZGIuY3JlYXRlT2JqZWN0U3RvcmUoIm9zIikKK3RyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0
LnRyYW5zYWN0aW9uCisKK3RyYW5zYWN0aW9uLm9uY29tcGxldGU6CitzYXdUcmFuc2FjdGlvbkNv
bXBsZXRlID0gdHJ1ZQorZGIuY2xvc2UoKQorCitvcGVuU3VjY2VzcygpOgorUEFTUyBzYXdUcmFu
c2FjdGlvbkNvbXBsZXRlIGlzIHRydWUKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBk
Yi52ZXJzaW9uIGlzIDcKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSB0cmFuc2FjdGlvbiA9IGRi
LnRyYW5zYWN0aW9uKCdvcycsICdyZWFkd3JpdGUnKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93
bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1MgZW5h
bWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtaW4tb25jb21wbGV0ZS5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9zZS1pbi1vbmNvbXBsZXRlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTU5YzYwNWIwM2Q2ODEwYTM2NjcwYWNmYTUyNzVjMjBhMjgyOTY1YQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tY2xv
c2UtaW4tb25jb21wbGV0ZS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ludHZlcnNpb24tY2xvc2UtaW4tb25j
b21wbGV0ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tZGVsZXRlLWluLXVw
Z3JhZGVuZWVkZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNp
b24tZGVsZXRlLWluLXVwZ3JhZGVuZWVkZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTQ5ZmE1OTI1NjRk
MWEwYTEyYTZjYzJmY2UxYTk0N2FiMWQ0MTEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1kZWxldGUtaW4tdXBncmFkZW5lZWRlZC5o
dG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2ludHZlcnNpb24tZGVsZXRlLWluLXVwZ3JhZGVuZWVkZWQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWRvbnQtZnJlZXplLW9uLXJlZnJlc2guaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tZG9udC1mcmVlemUt
b24tcmVmcmVzaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzMDc3ODQ3MmIyMDk3MTFkYjVmODIwZjM2Yzhk
NzQ0NmQwMjY1YTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9pbnR2ZXJzaW9uLWRvbnQtZnJlZXplLW9uLXJlZnJlc2guaHRtbApAQCAtMCwwICsxLDEw
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9p
bnR2ZXJzaW9uLWRvbnQtZnJlZXplLW9uLXJlZnJlc2guanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9pbnR2ZXJzaW9uLWhpZ2gtdmVyc2lvbi1maXJzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWhpZ2gtdmVyc2lvbi1maXJzdC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDAxMGJlMWE2NDYxZmZhM2U0MjZjZjM4ZTZhMTk0YTVkYzllNDAz
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZl
cnNpb24taGlnaC12ZXJzaW9uLWZpcnN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQ0IEBACitU
ZXN0IHRoYXQgaWYgdHdvIG9wZW4gcmVxdWVzdHMgYXJlIHdhaXRpbmcgYXQgdGhlIHNhbWUgdGlt
ZSwgdGhlIG9uZSB3aXRoIHRoZSBoaWdoZXIgdmVyc2lvbiBnZXRzIGNhbGxlZCBmaXJzdAorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIg
fHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0lu
ZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShk
Ym5hbWUpCisKK2RlbGV0ZVN1Y2Nlc3MoKToKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5h
bWUsIDEpCisKK3JlcXVlc3Qub251cGdyYWRlbmVlZGVkKCk6Citnb3RGaXJzdFVwZ3JhZGVOZWVk
ZWRFdmVudCA9IHRydWUKK1BBU1MgZXZlbnQub2xkVmVyc2lvbiBpcyAwCitQQVNTIGV2ZW50Lm5l
d1ZlcnNpb24gaXMgMQorCitmaXJzdFN1Y2Nlc3NFdmVudEhhbmRsZXIoKToKK1BBU1MgZ290Rmly
c3RVcGdyYWRlTmVlZGVkRXZlbnQgaXMgdHJ1ZQorY29ubmVjdGlvbjEgPSBldmVudC50YXJnZXQu
cmVzdWx0Citjb25uZWN0aW9uMS5vbnZlcnNpb25jaGFuZ2UgPSB2ZXJzaW9uQ2hhbmdlSGFuZGxl
cgorcmVxdWVzdDIgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDIpCityZXF1ZXN0MyA9IGluZGV4
ZWREQi5vcGVuKGRibmFtZSwgMykKK3JlcXVlc3Q0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCA0
KQorCit2ZXJzaW9uQ2hhbmdlSGFuZGxlcigpOgorKyt2ZXJzaW9uQ2hhbmdlRXZlbnRzU2VlbiA9
IDEKK2V2ZW50Lm9sZFZlcnNpb24gPSAxCitldmVudC5uZXdWZXJzaW9uID0gMgorCitibG9ja2Vk
RXZlbnRIYW5kbGVyMigpOgorUEFTUyBldmVudC5vbGRWZXJzaW9uIGlzIDEKK1BBU1MgZXZlbnQu
bmV3VmVyc2lvbiBpcyAyCitQQVNTIGdvdEJsb2NrZWRFdmVudDQgaXMgZmFsc2UKK2dvdEJsb2Nr
ZWRFdmVudDIgPSB0cnVlCitjb25uZWN0aW9uMS5jbG9zZSgpCisKK2Jsb2NrZWRFdmVudEhhbmRs
ZXIzKCk6CitGRiBhbHNvIGZhaWxzIHRoaXMgdGVzdC4KK0ZBSUwgb25ibG9ja2VkIGNhbGxlZCB1
bmV4cGVjdGVkbHkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJz
aW9uLWhpZ2gtdmVyc2lvbi1maXJzdC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvaW50dmVyc2lvbi1oaWdoLXZlcnNpb24tZmlyc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzhjZTRi
YmRlYzNlZDMyNGJlMzhjNTM2MGE4MjJmODFhMjJkYjYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1oaWdoLXZlcnNpb24tZmlyc3Qu
aHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9pbnR2ZXJzaW9uLWhpZ2gtdmVyc2lvbi1maXJzdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tb21pdC1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0LXBhcmFtZXRlci1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDE4MDA1MTEwMWUyNTk2NzhiNzk2NGEwNGI0MWU1Mzg0
ODE2YTg1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2ludHZlcnNpb24tb21pdC1wYXJhbWV0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAK
K1Rlc3QgdGhhdCBpbml0aWFsIHZlcnNpb24gYWZ0ZXIgYSBzdWNjZXNzZnVsIG9wZW4gb2YgYSBu
b24tZXhpc3RlbnQgZGIgaXMgMQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5k
ZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5t
b3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2lu
ZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3BlbihkYm5hbWUpCisK
K29wZW5TdWNjZXNzKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1Rlc3QgbGluZSBmcm9t
IElEQkZhY3Rvcnkub3BlbjogSWYgbm8gdmVyc2lvbiBpcyBzcGVjaWZpZWQgYW5kIG5vIGRhdGFi
YXNlIGV4aXN0cywgc2V0IGRhdGFiYXNlIHZlcnNpb24gdG8gMS4KK0ZBSUwgZGIudmVyc2lvbiBz
aG91bGQgYmUgMSAob2YgdHlwZSBudW1iZXIpLiBXYXMgIChvZiB0eXBlIHN0cmluZykuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0LXBhcmFtZXRl
ci5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0LXBh
cmFtZXRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiYjU0YTIwZGJhNGU1YWVhNmQ3MjkzODI3MGQxNTNj
ODc2MDJkZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9pbnR2ZXJzaW9uLW9taXQtcGFyYW1ldGVyLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaW50dmVyc2lvbi1v
bWl0LXBhcmFtZXRlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tb3Blbi13
aXRoLXZlcnNpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
aW50dmVyc2lvbi1vcGVuLXdpdGgtdmVyc2lvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzk2
ZGI5NzVhY2NiYThmNDgxYzdlNzExZDdhOTNhNjc2MzQ2NTc3ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tb3Blbi13aXRoLXZlcnNp
b24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDUgQEAKK1Rlc3QgdGhhdCBzcGVjaWZ5aW5nIGEg
dmVyc2lvbiB3aGVuIG9wZW5pbmcgYSBub24tZXhpc3RlbnQgZGIgY2F1c2VzIGFuIHVwZ3JhZGVu
ZWVkZWQgZXZlbnQgYW5kIHRoYXQgdGhlIHZlcnNpb24gbnVtYmVyIGlzIHNldCBjb3JyZWN0bHku
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4
ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxm
Lm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworaW5kZXhlZERCLmRlbGV0ZURhdGFi
YXNlKGRibmFtZSkKK1Nob3VsZCB0cmlnZ2VyOgorNC4xLjQ6IElmIG5vIGRhdGFiYXNlIHdpdGgg
dGhlIGdpdmVuIG5hbWUgZnJvbSB0aGUgb3JpZ2luIG9yaWdpbiB3YXMgZm91bmQsIG9yIGlmIGl0
IHdhcyBkZWxldGVkIGR1cmluZyB0aGUgcHJldmlvdXMgc3RlcCwgdGhlbiBjcmVhdGUgYSBkYXRh
YmFzZSB3aXRoIG5hbWUgbmFtZSwgd2l0aCAwIGFzIHZlcnNpb24sIGFuZCB3aXRoIG5vIG9iamVj
dCBzdG9yZXMuIExldCBkYiBiZSB0aGUgbmV3IGRhdGFiYXNlLgorNC4xLjY6IENyZWF0ZSBhIG5l
dyBjb25uZWN0aW9uIHRvIGRiIGFuZCBsZXQgY29ubmVjdGlvbiByZXByZXNlbnQgaXQuCis0LjEu
NzogSWYgdGhlIHZlcnNpb24gb2YgZGIgaXMgbG93ZXIgdGhhbiB2ZXJzaW9uLCB0aGVuIHJ1biB0
aGUgc3RlcHMgZm9yIHJ1bm5pbmcgYSAidmVyc2lvbmNoYW5nZSIgdHJhbnNhY3Rpb24gdXNpbmcg
Y29ubmVjdGlvbiwgdmVyc2lvbiwgcmVxdWVzdCBhbmQgdXBncmFkZSBjYWxsYmFjay4KKzQuMS45
OiBSZXR1cm4gY29ubmVjdGlvbi4KK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDcp
CitQQVNTIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkocmVxdWVzdCkgaXMgIltvYmpl
Y3QgSURCT3BlbkRCUmVxdWVzdF0iCisKK1BBU1MgSW4gdGhlIHVwZ3JhZGVuZWVkZWQgZXZlbnQg
aGFuZGVyOgorVGVzdCA0LjguOS4xOgorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIE9i
amVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkoZGIpIGlzICJbb2JqZWN0IElEQkRhdGFiYXNl
XSIKK1Rlc3QgNC44LjkuMzoKK1BBU1MgZXZlbnQub2xkVmVyc2lvbiBpcyAwCitQQVNTIGV2ZW50
Lm5ld1ZlcnNpb24gaXMgNworUEFTUyBldmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyAiZG9uZSIK
K1Rlc3QgNC4xLjQ6CitQQVNTIGRiLm5hbWUgaXMgZGJuYW1lCitQQVNTIGRiLnZlcnNpb24gaXMg
NworUEFTUyBkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAwCit0cmFuc2FjdGlvbiA9IGV2
ZW50LnRhcmdldC50cmFuc2FjdGlvbgorUEFTUyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFw
cGx5KHRyYW5zYWN0aW9uKSBpcyAiW29iamVjdCBJREJUcmFuc2FjdGlvbl0iCitvcyA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCJzb21lT1MiKQorc2F3VHJhbnNhY3Rpb25Db21wbGV0ZSA9IHRydWUK
Kworb3BlblN1Y2Nlc3MoKToKK1Rlc3QgNC4xLjcsIHRoYXQgYSB2ZXJzaW9uY2hhbmdlIHRyYW5z
YWN0aW9uIHdhcyBydW4uCitQQVNTIHNhd1VwZ3JhZGVOZWVkZWQgaXMgdHJ1ZQorUEFTUyBzYXdU
cmFuc2FjdGlvbkNvbXBsZXRlIGlzIHRydWUKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorS2lu
ZCBvZiB0ZXN0IDQuMS45OgorUEFTUyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KGRi
KSBpcyAiW29iamVjdCBJREJEYXRhYmFzZV0iCitQQVNTIGRiLnZlcnNpb24gaXMgNworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tb3Blbi13aXRoLXZlcnNp
b24uaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tb3Blbi13
aXRoLXZlcnNpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGM3M2Q0NGY4MmIyMTdhY2U3YzEyMTc2MDhi
MGFhZjE3NGFjMjlhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvaW50dmVyc2lvbi1vcGVuLXdpdGgtdmVyc2lvbi5odG1sCkBAIC0wLDAgKzEsMTAgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ludHZl
cnNpb24tb3Blbi13aXRoLXZlcnNpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvaW50dmVyc2lvbi1hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQuanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW50dmVyc2lvbi1hYm9ydC1pbi1pbml0
aWFsLXVwZ3JhZGVuZWVkZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjVlMWFlNmYzNzY1ZjI0NDgzZjRkYjRi
NWMzN2M5MTAzMzVjODQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9uLWFib3J0LWluLWluaXRpYWwtdXBncmFkZW5l
ZWRlZC5qcwpAQCAtMCwwICsxLDQ2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRl
c3QgdGhhdCBhbiBhYm9ydCBpbiB0aGUgaW5pdGlhbCB1cGdyYWRlbmVlZGVkIHNldHMgdmVyc2lv
biBiYWNrIHRvIDAiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKKyAgICBkYm5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lLnN1YnN0cmluZygx
ICsgc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5sYXN0SW5kZXhPZigiLyIpKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlU3VjY2Vzcyhl
dnQpIHsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAy
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsK
KyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHVwZ3JhZGVOZWVkZWQ7Cit9CisKK2Z1bmN0
aW9uIHVwZ3JhZGVOZWVkZWQoZXZ0KQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidXBn
cmFkZU5lZWRlZCgpOiIpOworICAgIGV2ZW50ID0gZXZ0OworICAgIGRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsKKyAgICBzaG91bGRCZSgiZGIudmVyc2lvbiIsICIyIik7CisgICAgdHJhbnNhY3Rp
b24gPSBldmVudC50YXJnZXQudHJhbnNhY3Rpb247CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQg
PSBvbkFib3J0OworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLmFib3J0KCkiKTsKK30KKwor
ZnVuY3Rpb24gb25BYm9ydChldnQpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJvbkFi
b3J0KCk6Iik7CisgICAgZXZlbnQgPSBldnQ7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5k
Yi52ZXJzaW9uIiwgIjAiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ludHZlcnNp
b24tYW5kLXNldHZlcnNpb24uanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvaW50dmVyc2lvbi1hbmQtc2V0dmVyc2lvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YmY4NmJkYWI1
MzkzZDEyNzE5ZTYxMGE3NTdmZGI1OGYzYTk5MTgwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ludHZlcnNpb24tYW5kLXNldHZlcnNp
b24uanMKQEAgLTAsMCArMSwxODkgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBp
bXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycp
OworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVz
dCB0aGF0IGJsYWggYmxhaC4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lLnN1YnN0
cmluZygxICsgc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5sYXN0SW5kZXhPZigiLyIpKTsKKworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKSIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiU3RyaW5nKHJlcXVlc3QpIiwgIltvYmplY3Qg
SURCT3BlbkRCUmVxdWVzdF0iKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1Y2Nl
c3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoZXZ0KSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJDYWxsIG9wZW4gd2l0aCBubyB2ZXJzaW9uIHBhcmFtZXRlcjoiKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSB1bmV4cGVjdGVkVXBncmFk
ZU5lZWRlZENhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcyhldnQpCit7CisgICAg
ZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIp
OworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgIiIpOworICAgIGV2YWxBbmRMb2co
J3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCJzb21lIHZlcnNpb24iKScpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gaW5TZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2Nr
ZWRDYWxsYmFjazsKK30KKworZnVuY3Rpb24gaW5TZXRWZXJzaW9uKGV2dCkKK3sKKyAgICBldmVu
dCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImluU2V0VmVyc2lvbigpOiIpOwor
ICAgIHRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0g
c2V0VmVyc2lvbkRvbmU7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOworICAgIGRiID0gdHJhbnMuZGI7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52
ZXJzaW9uIiwgInNvbWUgdmVyc2lvbiIpOworICAgIC8vIEZJWE1FOiBBbHNvIGNhbGwgb3BlbiB3
aXRoIHZlcnNpb24gZnJvbSBoZXJlLgorfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uRG9uZShldnQp
Cit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJzZXRWZXJz
aW9uRG9uZSgpOiIpOworICAgIGRiID0gZXZlbnQudGFyZ2V0LmRiOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJzb21lIHZlcnNpb24iKTsKKyAgICBldmFsQW5kTG9n
KCJkYi5jbG9zZSgpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KGRibmFtZSkiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0Lm9uc3VjY2VzcyA9IHNlY29uZE9w
ZW4iKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHVuZXhwZWN0ZWRVcGdyYWRlTmVlZGVkQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIHNlY29uZE9wZW4oZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0Owor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygic2Vjb25kT3BlbigpOiIpOworICAgIGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiU3RyaW5nKGRiKSIsICJbb2JqZWN0IElEQkRhdGFiYXNlXSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJzb21lIHZlcnNpb24iKTsKKyAgICBldmFsQW5kTG9n
KCJkYi5jbG9zZSgpIik7CisgICAgLy8gRklYTUU6IEFsc28gY2FsbCBpdCB3aXRoIDAsIC0xLCBh
bmQgLTQuCisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwg
MikiKTsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZpcnN0VXBncmFkZU5lZWRlZAor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVl
c3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZpcnN0T3BlbldpdGhWZXJzaW9uOworfQorCitmdW5jdGlvbiBmaXJzdFVwZ3Jh
ZGVOZWVkZWQoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygiZmlyc3RVcGdyYWRlTmVlZGVkKCk6Iik7CisgICAgZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJTdHJpbmcoZGIp
IiwgIltvYmplY3QgSURCRGF0YWJhc2VdIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJT
dHJpbmcocmVxdWVzdC50cmFuc2FjdGlvbikiLCAiW29iamVjdCBJREJUcmFuc2FjdGlvbl0iKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50Lm9sZFZlcnNpb24iLCAic29tZSB2ZXJz
aW9uIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNpb24iLCAiMiIpOworICAgIGV2YWxB
bmRMb2coInJlcXVlc3QudHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxl
dGVkIik7CisgICAgcmVxdWVzdC50cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7Cit9CisKK3ZhciBkaWRUcmFuc2FjdGlvbkNvbXBsZXRlID0gZmFsc2U7CitmdW5j
dGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlZChldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJ0cmFuc2FjdGlvbkNvbXBsZXRlZCgpOiIpOworICAgIGV2
YWxBbmRMb2coImRpZFRyYW5zYWN0aW9uQ29tcGxldGUgPSB0cnVlIik7Cit9CisKK2Z1bmN0aW9u
IGZpcnN0T3BlbldpdGhWZXJzaW9uKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoImZpcnN0T3BlbldpdGhWZXJzaW9uKCk6Iik7CisgICAgc2hvdWxk
QmVUcnVlKCJkaWRUcmFuc2FjdGlvbkNvbXBsZXRlIik7CisgICAgZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJTdHJpbmco
ZGIpIiwgIltvYmplY3QgSURCRGF0YWJhc2VdIik7CisgICAgc2hvdWxkQmVOdWxsKCJyZXF1ZXN0
LnRyYW5zYWN0aW9uIik7CisgICAgc2hvdWxkQmUoImRiLnZlcnNpb24iLCAiMiIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiU3RyaW5nKHJlcXVlc3QpIiwgIltvYmplY3QgSURCT3BlbkRC
UmVxdWVzdF0iKTsKKyAgICBldmFsQW5kTG9nKCdyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigic3Ry
aW5nIHZlcnNpb24gMiIpJyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJTdHJpbmcocmVx
dWVzdCkiLCAiW29iamVjdCBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdF0iKTsKKyAgICByZXF1ZXN0
Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgIGV2YWxBbmRMb2coInJlcXVl
c3Qub25lcnJvciA9IHNldFZlcnNpb25Ob3RBbGxvd2VkIik7Cit9CisKK2Z1bmN0aW9uIHNldFZl
cnNpb25Ob3RBbGxvd2VkKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoInNldFZlcnNpb25Ob3RBbGxvd2VkKCk6Iik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJldmVudC50eXBlIiwgImVycm9yIik7CisgICAgZGVidWcoInJlcXVlc3Qud2Vi
a2l0RXJyb3JNZXNzYWdlID0gIiArIHJlcXVlc3Qud2Via2l0RXJyb3JNZXNzYWdlKTsKKyAgICBl
dmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4
ZWREQi5vcGVuKGRibmFtZSwgMSkiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0Lm9uZXJyb3Ig
PSBlcnJvcldoZW5UcnlpbmdMb3dWZXJzaW9uIik7CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1
bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBl
Y3RlZFN1Y2Nlc3NDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZXJyb3JXaGVuVHJ5aW5nTG93VmVy
c2lvbihldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJlcnJvcldoZW5UcnlpbmdMb3dWZXJzaW9uKCk6Iik7CisgICAgZGVidWcoInJlcXVlc3Qud2Vi
a2l0RXJyb3JNZXNzYWdlID0gIiArIHJlcXVlc3Qud2Via2l0RXJyb3JNZXNzYWdlKTsKKyAgICBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCA0KSIpOworICAgIHJl
cXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBldmFsQW5kTG9nKCJyZXF1
ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHNlY29uZFVwZ3JhZGVOZWVkZWQiKTsKKyAgICBldmFsQW5k
TG9nKCJyZXF1ZXN0Lm9uc3VjY2VzcyA9IHRoaXJkT3BlblN1Y2Nlc3MiKTsKK30KKwordmFyIGdv
dFNlY29uZFVwZ3JhZGVOZWVkZWQgPSBmYWxzZTsKK2Z1bmN0aW9uIHNlY29uZFVwZ3JhZGVOZWVk
ZWQoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
c2Vjb25kVXBncmFkZU5lZWRlZCgpOiIpOworICAgIGV2YWxBbmRMb2coImdvdFNlY29uZFVwZ3Jh
ZGVOZWVkZWQgPSB0cnVlIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm9sZFZlcnNpb24iLCAiMiIp
OworICAgIHNob3VsZEJlKCJldmVudC5uZXdWZXJzaW9uIiwgIjQiKTsKK30KKworZnVuY3Rpb24g
dGhpcmRPcGVuU3VjY2VzcyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJ0aGlyZE9wZW5TdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmVUcnVlKCJn
b3RTZWNvbmRVcGdyYWRlTmVlZGVkIik7CisgICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmUoImRiLnZlcnNpb24iLCAiNCIpOworICAgIGV2YWxB
bmRMb2coImRiLmNsb3NlKCkiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERC
Lm9wZW4oZGJuYW1lKSIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3Qub25zdWNjZXNzID0gZm91
cnRoT3BlblN1Y2Nlc3MiKTsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHVuZXhwZWN0
ZWRVcGdyYWRlTmVlZGVkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZFVwZ3JhZGVOZWVkZWRDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZm91cnRoT3BlblN1Y2Nlc3Mo
ZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiZm91
cnRoT3BlblN1Y2Nlc3MoKToiKTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKyAgICBzaG91bGRCZSgiZGIudmVyc2lvbiIsICI0Iik7CisgICAgZmluaXNoSlNU
ZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9uLWJsb2NrZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW50dmVyc2lvbi1ibG9ja2VkLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFhNDk0NWFkZjEzMjQyNDgzM2VlNzU0NTNlYzdiMTEwM2QxMTM0OGEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW50dmVyc2lvbi1i
bG9ja2VkLmpzCkBAIC0wLDAgKzEsOTYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigi
VGVzdCB0aGF0IGJsb2NrZWQgZXZlbnRzIGdldCBkZWxpdmVyZWQgcHJvcGVybHkgd2l0aCB0aGUg
bmV3IG9wZW4gYXBpIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7CisgICAgZGJuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmco
MSArIHNlbGYubG9jYXRpb24ucGF0aG5hbWUubGFzdEluZGV4T2YoIi8iKSk7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVTdWNjZXNzKGV2
dCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiZGVsZXRlU3VjY2VzcygpOiIpOworICAg
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDIpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmaXJzdFN1Y2Nlc3NFdmVudEhhbmRsZXI7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgZ290Rmlyc3RVcGdyYWRl
TmVlZGVkRXZlbnQgPSBmYWxzZTsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0
aW9uKGV2dCkgeworICAgICAgZXZlbnQgPSBldnQ7CisgICAgICBkZWJ1ZygiIik7CisgICAgICBk
ZWJ1ZygicmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQoKToiKTsKKyAgICAgIGV2YWxBbmRMb2coImdv
dEZpcnN0VXBncmFkZU5lZWRlZEV2ZW50ID0gdHJ1ZSIpOworICAgICAgc2hvdWxkQmUoImV2ZW50
Lm9sZFZlcnNpb24iLCAiMCIpOworICAgICAgc2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNpb24iLCAi
MiIpOworICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJTdHJpbmcoZXZlbnQpIiwgIltvYmpl
Y3QgSURCVXBncmFkZU5lZWRlZEV2ZW50XSIpOworICAgIH0KK30KKworZ290QmxvY2tlZEV2ZW50
ID0gZmFsc2U7CitmdW5jdGlvbiBmaXJzdFN1Y2Nlc3NFdmVudEhhbmRsZXIoZXZ0KQoreworICAg
IGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiZmlyc3RTdWNjZXNzRXZl
bnRIYW5kbGVyKCk6IikKKyAgICBzaG91bGRCZVRydWUoImdvdEZpcnN0VXBncmFkZU5lZWRlZEV2
ZW50Iik7CisgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjEgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjEub252ZXJzaW9uY2hhbmdlID0gdmVyc2lv
bkNoYW5nZUhhbmRsZXIiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIlN0cmluZyhjb25u
ZWN0aW9uMSkiLCAiW29iamVjdCBJREJEYXRhYmFzZV0iKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAzKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gc2Vjb25kU3VjY2Vzc0NhbGxiYWNrOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gYmxvY2tlZEV2ZW50SGFu
ZGxlcjsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHNlY29uZFVwZ3JhZGVOZWVkZWRF
dmVudEhhbmRsZXI7Cit9CisKK3ZhciBzYXdWZXJzaW9uQ2hhbmdlRXZlbnQgPSBmYWxzZTsKK2Z1
bmN0aW9uIHZlcnNpb25DaGFuZ2VIYW5kbGVyKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoInZlcnNpb25DaGFuZ2VIYW5kbGVyKCk6Iik7CisgICAg
ZXZhbEFuZExvZygic2F3VmVyc2lvbkNoYW5nZUV2ZW50ID0gdHJ1ZSIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZXZlbnQudHlwZSIsICJ2ZXJzaW9uY2hhbmdlIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJTdHJpbmcoZXZlbnQpIiwgIltvYmplY3QgSURCVmVyc2lvbkNoYW5n
ZUV2ZW50XSIpOworICAgIHNob3VsZEJlKCJldmVudC5vbGRWZXJzaW9uIiwgIjIiKTsKKyAgICBz
aG91bGRCZSgiZXZlbnQubmV3VmVyc2lvbiIsICIzIik7Cit9CisKK2Z1bmN0aW9uIGJsb2NrZWRF
dmVudEhhbmRsZXIoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAg
ICBkZWJ1ZygiYmxvY2tlZEV2ZW50SGFuZGxlcigpOiIpOworICAgIHNob3VsZEJlVHJ1ZSgic2F3
VmVyc2lvbkNoYW5nZUV2ZW50Iik7CisgICAgZXZhbEFuZExvZygiZ290QmxvY2tlZEV2ZW50ID0g
dHJ1ZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiU3RyaW5nKGV2ZW50KSIsICJbb2Jq
ZWN0IElEQlZlcnNpb25DaGFuZ2VFdmVudF0iKTsKKyAgICBzaG91bGRCZSgiZXZlbnQub2xkVmVy
c2lvbiIsICIyIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNpb24iLCAiMyIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudHlwZSIsICJibG9ja2VkIik7CisgICAgZXZh
bEFuZExvZygiY29ubmVjdGlvbjEuY2xvc2UoKSIpOworfQorCitnb3RTZWNvbmRVcGdyYWRlTmVl
ZGVkRXZlbnQgPSBmYWxzZTsKK2Z1bmN0aW9uIHNlY29uZFVwZ3JhZGVOZWVkZWRFdmVudEhhbmRs
ZXIoZXZ0KQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygic2Vjb25kVXBncmFkZU5lZWRl
ZEV2ZW50SGFuZGxlcigpOiIpOworICAgIHNob3VsZEJlVHJ1ZSgiZ290QmxvY2tlZEV2ZW50Iik7
CisgICAgZXZhbEFuZExvZygiZ290U2Vjb25kVXBncmFkZU5lZWRlZEV2ZW50ID0gdHJ1ZSIpOwor
fQorCitmdW5jdGlvbiBzZWNvbmRTdWNjZXNzQ2FsbGJhY2soZXZ0KQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1Zygic2Vjb25kU3VjY2Vzc0NhbGxiYWNrKCk6Iik7CisgICAgc2hvdWxkQmVU
cnVlKCJnb3RTZWNvbmRVcGdyYWRlTmVlZGVkRXZlbnQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsK
K30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2ludHZlcnNpb24tY2xvc2UtYmV0d2Vlbi1ldmVudHMuanMgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW50dmVyc2lvbi1jbG9zZS1iZXR3ZWVuLWV2
ZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43ZTQ5NzI5M2IxOTU4MWExZWY5OWNlMmZiZjU0MjM2MzhlYjY1
MWQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2ludHZlcnNpb24tY2xvc2UtYmV0d2Vlbi1ldmVudHMuanMKQEAgLTAsMCArMSw2NyBA
QAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygn
c2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgc3BlY2lmeWluZyBhIHZl
cnNpb24gd2hlbiBvcGVuaW5nIGEgbm9uLWV4aXN0ZW50IGRiIGNhdXNlcyBhbiB1cGdyYWRlbmVl
ZGVkIGV2ZW50IGFuZCB0aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBpcyBzZXQgY29ycmVjdGx5LiIp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAg
IGRibmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKDEgKyBzZWxmLmxvY2F0
aW9uLnBhdGhuYW1lLmxhc3RJbmRleE9mKCIvIikpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBkZWxldGVTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVTdWNjZXNzKGV2dCkgeworICAgIGV2
YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDcpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRl
ZCA9IHVwZ3JhZGVOZWVkZWQ7CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxv
Y2tlZENhbGxiYWNrOworICAgIGRlYnVnKCIiKTsKK30KKwordmFyIHNhd1RyYW5zYWN0aW9uQ29t
cGxldGUgPSBmYWxzZTsKK2Z1bmN0aW9uIHVwZ3JhZGVOZWVkZWQoZXZ0KQoreworICAgIGV2ZW50
ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidXBncmFkZU5lZWRlZCgpOiIpOwor
ICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJl
KCJldmVudC5uZXdWZXJzaW9uIiwgIjciKTsKKworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9u
ID0gZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uIik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBm
dW5jdGlvbihlKQorICAgIHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1ZygidHJh
bnNhY3Rpb24ub25jb21wbGV0ZToiKTsKKyAgICAgICAgZXZhbEFuZExvZygic2F3VHJhbnNhY3Rp
b25Db21wbGV0ZSA9IHRydWUiKTsKKyAgICAgICAgZXZhbEFuZExvZygic2V0VGltZW91dChjbG9z
ZURCLCAwKSIpOworICAgIH0KK30KKwordmFyIGRpZENhbGxDbG9zZURCID0gZmFsc2U7CitmdW5j
dGlvbiBjbG9zZURCKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImNsb3NlREIoKToi
KTsKKyAgICBldmFsQW5kTG9nKCJkaWRDYWxsQ2xvc2VEQiA9IHRydWUiKTsKKyAgICBldmFsQW5k
TG9nKCJkYi5jbG9zZSgpIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIG9w
ZW5TdWNjZXNzKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGlkQ2FsbENsb3Nl
REIiKTsKKyAgICBzaG91bGRCZVRydWUoInNhd1RyYW5zYWN0aW9uQ29tcGxldGUiKTsKKyAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJl
KCdkYi52ZXJzaW9uJywgIjciKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ludHZlcnNpb24tY2xvc2UtaW4tb25jb21w
bGV0ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJz
aW9uLWNsb3NlLWluLW9uY29tcGxldGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJkOTU4YWEwZTYwZGQ0OTU1
Yzg2OTYzNTkxYjQ5OTdmMjVhZmI5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9uLWNsb3NlLWluLW9uY29tcGxldGUu
anMKQEAgLTAsMCArMSw1OCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Cisg
ICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRo
YXQgc3BlY2lmeWluZyBhIHZlcnNpb24gd2hlbiBvcGVuaW5nIGEgbm9uLWV4aXN0ZW50IGRiIGNh
dXNlcyBhbiB1cGdyYWRlbmVlZGVkIGV2ZW50IGFuZCB0aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBp
cyBzZXQgY29ycmVjdGx5LiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOworICAgIGRibmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWUuc3Vic3Ry
aW5nKDEgKyBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lLmxhc3RJbmRleE9mKCIvIikpOworCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVTdWNjZXNzOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVTdWNj
ZXNzKGV2dCkgeworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5h
bWUsIDcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1
ZXN0Lm9udXBncmFkZW5lZWRlZCA9IHVwZ3JhZGVOZWVkZWQ7CisgICAgcmVxdWVzdC5vbmJsb2Nr
ZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworfQorCit2YXIgc2F3VHJhbnNhY3Rpb25D
b21wbGV0ZSA9IGZhbHNlOworZnVuY3Rpb24gdXBncmFkZU5lZWRlZChldnQpCit7CisgICAgZXZl
bnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ1cGdyYWRlTmVlZGVkKCk6Iik7
CisgICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxk
QmUoImV2ZW50Lm5ld1ZlcnNpb24iLCAiNyIpOworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9i
amVjdFN0b3JlKFwib3NcIikiKTsKKworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZXZl
bnQudGFyZ2V0LnRyYW5zYWN0aW9uIik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlv
bihlKQorICAgIHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1ZygidHJhbnNhY3Rp
b24ub25jb21wbGV0ZToiKTsKKyAgICAgICAgZXZhbEFuZExvZygic2F3VHJhbnNhY3Rpb25Db21w
bGV0ZSA9IHRydWUiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOworICAgIH0K
K30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAg
IGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZVRy
dWUoInNhd1RyYW5zYWN0aW9uQ29tcGxldGUiKTsKKyAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZSgnZGIudmVyc2lvbicsICI3Iik7CisgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignb3Mn
LCAncmVhZHdyaXRlJykiLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSIiwgIidJbnZh
bGlkU3RhdGVFcnJvciciKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ludHZlcnNp
b24tZGVsZXRlLWluLXVwZ3JhZGVuZWVkZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvaW50dmVyc2lvbi1kZWxldGUtaW4tdXBncmFkZW5lZWRlZC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mNTZmYjRkMzdlZjI5OTdmNDEzNjIzYmJhNmI3NTgzNGQwYzdjYzY2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ludHZl
cnNpb24tZGVsZXRlLWluLXVwZ3JhZGVuZWVkZWQuanMKQEAgLTAsMCArMSw3NCBAQAoraWYgKHRo
aXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpz
Jyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgYSBkZWxldGVEYXRhYmFzZSBjYWxsZWQg
d2hpbGUgaGFuZGxpbmcgYW4gdXBncmFkZW5lZWRlZCBldmVudCBpcyBxdWV1ZWQgYW5kIGZpcmVz
IGl0cyBldmVudHMgYXQgdGhlIHJpZ2h0IHRpbWUiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5hbWUgPSBzZWxmLmxvY2F0aW9uLnBh
dGhuYW1lLnN1YnN0cmluZygxICsgc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5sYXN0SW5kZXhPZigi
LyIpKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJh
c2UoZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gaW5pdGlhbGx5RGVsZXRlZDsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwordmFy
IHNhd0ZpcnN0VXBncmFkZU5lZWRlZCA9IGZhbHNlOwordmFyIGFscmVhZHlEZWxldGVkID0gZmFs
c2U7CitmdW5jdGlvbiBpbml0aWFsbHlEZWxldGVkKGV2dCkgeworICAgIGRlYnVnKCIiKTsKKyAg
ICBkZWJ1ZygiaW5pdGlhbGx5RGVsZXRlZCgpOiIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBpbmRleGVkREIub3BlbihkYm5hbWUsIDEpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZpcnN0VXBncmFkZU5lZWRlZDsKK30K
KworZnVuY3Rpb24gZmlyc3RVcGdyYWRlTmVlZGVkKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImZpcnN0VXBncmFkZU5lZWRlZCgpOiIpOworICAg
IHNob3VsZEJlRmFsc2UoInNhd0ZpcnN0VXBncmFkZU5lZWRlZCIpOworICAgIGV2YWxBbmRMb2co
InNhd0ZpcnN0VXBncmFkZU5lZWRlZCA9IHRydWUiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQub2xk
VmVyc2lvbiIsICIwIik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm5ld1ZlcnNpb24iLCAiMSIpOwor
ICAgIGlmICghYWxyZWFkeURlbGV0ZWQpIHsKKyAgICAgICAgYWxyZWFkeURlbGV0ZWQgPSB0cnVl
OworICAgICAgICByZXF1ZXN0MiA9IGV2YWxBbmRMb2coImRlbGV0ZVJlcXVlc3QgPSBpbmRleGVk
REIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKSIpOworICAgICAgICByZXF1ZXN0Mi5vbnN1Y2Nlc3Mg
PSBtaWRSZXF1ZXN0RGVsZXRlOworICAgICAgICByZXF1ZXN0Mi5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3QyLm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRC
bG9ja2VkQ2FsbGJhY2s7CisgICAgfQorfQorCitmdW5jdGlvbiBtaWRSZXF1ZXN0RGVsZXRlKGV2
dCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIm1pZFJlcXVlc3REZWxldGUoKToiKTsK
K30KKworc2F3VmVyc2lvbkNoYW5nZSA9IGZhbHNlOworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoZXZ0
KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygicmVxdWVz
dC5vbnN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZVRydWUoInNhd0ZpcnN0VXBncmFkZU5lZWRl
ZCIpOworICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGRi
Lm9udmVyc2lvbmNoYW5nZSA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgZXZlbnQgPSBldnQ7Cisg
ICAgICBkZWJ1ZygiIik7CisgICAgICBkZWJ1ZygiZGIub252ZXJzaW9uY2hhbmdlKCk6Iik7Cisg
ICAgICBzaG91bGRCZSgiZXZlbnQub2xkVmVyc2lvbiIsICIxIik7CisgICAgICBzaG91bGRCZU51
bGwoImV2ZW50Lm5ld1ZlcnNpb24iKTsKKyAgICAgIGV2YWxBbmRMb2coInNhd1ZlcnNpb25DaGFu
Z2UgPSB0cnVlIik7CisgICAgICBkYi5jbG9zZSgpOworICAgIH0KKyAgICBzaG91bGRCZSgnZGIu
dmVyc2lvbicsICcxJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9u
LWRvbnQtZnJlZXplLW9uLXJlZnJlc2guanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvaW50dmVyc2lvbi1kb250LWZyZWV6ZS1vbi1yZWZyZXNoLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjlhZTMyNWQxYjE1ZTQxYjFhNjhlMTE2MGUwOWU3NzE4NDg2NTlhNGYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW50dmVyc2lv
bi1kb250LWZyZWV6ZS1vbi1yZWZyZXNoLmpzCkBAIC0wLDAgKzEsNTcgQEAKK2lmICh0aGlzLmlt
cG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOwor
fQorCitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IHNwZWNpZnlpbmcgYSB2ZXJzaW9uIHdoZW4gb3Bl
bmluZyBhIG5vbi1leGlzdGVudCBkYiBjYXVzZXMgYW4gdXBncmFkZW5lZWRlZCBldmVudCBhbmQg
dGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaXMgc2V0IGNvcnJlY3RseS4iKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5hbWUgPSBzZWxm
LmxvY2F0aW9uLnBhdGhuYW1lLnN1YnN0cmluZygxICsgc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5s
YXN0SW5kZXhPZigiLyIpKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
ZGVsZXRlRGF0YWJhc2UoZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRl
U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gZGVsZXRlU3VjY2VzcyhldnQpIHsKKyAgICBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCA3KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSB1cGdyYWRlTmVl
ZGVkOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsK
KyAgICBkZWJ1ZygiIik7Cit9CisKK3ZhciBzYXdUcmFuc2FjdGlvbkNvbXBsZXRlID0gZmFsc2U7
CitmdW5jdGlvbiB1cGdyYWRlTmVlZGVkKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoInVwZ3JhZGVOZWVkZWQoKToiKTsKKyAgICBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQubmV3VmVy
c2lvbiIsICI3Iik7CisKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdl
dC50cmFuc2FjdGlvbiIpOworICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKKyAgICB0cmFu
c2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rp
b24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGUpCisgICAgeworICAgICAgICBkZWJ1ZygiIik7Cisg
ICAgICAgIGRlYnVnKCJ0cmFuc2FjdGlvbi5vbmNvbXBsZXRlOiIpOworICAgICAgICBldmFsQW5k
TG9nKCJzYXdUcmFuc2FjdGlvbkNvbXBsZXRlID0gdHJ1ZSIpOworICAgIH0KK30KKworZnVuY3Rp
b24gb3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZVRydWUoInNhd1RyYW5z
YWN0aW9uQ29tcGxldGUiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworICAgIHNob3VsZEJlKCdkYi52ZXJzaW9uJywgIjciKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2ludHZlcnNpb24taGlnaC12ZXJzaW9uLWZpcnN0LmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ludHZlcnNpb24taGlnaC12ZXJz
aW9uLWZpcnN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliNzU4YWY0ZTYwZjYyNzg5YjExMDllZjk0ZDNkY2Fl
ZmRkNzA5NTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvaW50dmVyc2lvbi1oaWdoLXZlcnNpb24tZmlyc3QuanMKQEAgLTAsMCArMSwx
NTAgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGlmIHR3byBvcGVu
IHJlcXVlc3RzIGFyZSB3YWl0aW5nIGF0IHRoZSBzYW1lIHRpbWUsIHRoZSBvbmUgd2l0aCB0aGUg
aGlnaGVyIHZlcnNpb24gZ2V0cyBjYWxsZWQgZmlyc3QiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkYm5hbWUgPSBzZWxmLmxvY2F0aW9u
LnBhdGhuYW1lLnN1YnN0cmluZygxICsgc2VsZi5sb2NhdGlvbi5wYXRobmFtZS5sYXN0SW5kZXhP
ZigiLyIpKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFi
YXNlKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGRlbGV0ZVN1Y2Nlc3MoZXZ0KSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJkZWxl
dGVTdWNjZXNzKCk6Iik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVu
KGRibmFtZSwgMSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpcnN0U3VjY2Vzc0V2ZW50
SGFuZGxlcjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICBnb3RGaXJzdFVwZ3JhZGVOZWVkZWRFdmVudCA9IGZhbHNlOworICAgIHJlcXVlc3Qub251
cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgICBldmVudCA9IGV2dDsKKyAgICAg
IGRlYnVnKCIiKTsKKyAgICAgIGRlYnVnKCJyZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCgpOiIpOwor
ICAgICAgZXZhbEFuZExvZygiZ290Rmlyc3RVcGdyYWRlTmVlZGVkRXZlbnQgPSB0cnVlIik7Cisg
ICAgICBzaG91bGRCZSgiZXZlbnQub2xkVmVyc2lvbiIsICIwIik7CisgICAgICBzaG91bGRCZSgi
ZXZlbnQubmV3VmVyc2lvbiIsICIxIik7CisgICAgfQorfQorCitmdW5jdGlvbiBmaXJzdFN1Y2Nl
c3NFdmVudEhhbmRsZXIoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1ZygiZmlyc3RTdWNjZXNzRXZlbnRIYW5kbGVyKCk6IikKKyAgICBzaG91bGRCZVRy
dWUoImdvdEZpcnN0VXBncmFkZU5lZWRlZEV2ZW50Iik7CisgICAgZXZhbEFuZExvZygiY29ubmVj
dGlvbjEgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZXZhbEFuZExvZygiY29ubmVjdGlv
bjEub252ZXJzaW9uY2hhbmdlID0gdmVyc2lvbkNoYW5nZUhhbmRsZXIiKTsKKyAgICBldmFsQW5k
TG9nKCJyZXF1ZXN0MiA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgMikiKTsKKyAgICBldmFsQW5k
TG9nKCJyZXF1ZXN0MyA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgMykiKTsKKyAgICBldmFsQW5k
TG9nKCJyZXF1ZXN0NCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgNCkiKTsKKyAgICByZXF1ZXN0
Mi5vbnN1Y2Nlc3MgPSBzdWNjZXNzQ2FsbGJhY2syOworICAgIHJlcXVlc3QyLm9uYmxvY2tlZCA9
IGJsb2NrZWRFdmVudEhhbmRsZXIyOworICAgIHJlcXVlc3QyLm9udXBncmFkZW5lZWRlZCA9IHVw
Z3JhZGVOZWVkZWRFdmVudEhhbmRsZXIyOworICAgIHJlcXVlc3QyLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKworICAgIHJlcXVlc3QzLm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRT
dWNjZXNzQ2FsbGJhY2s7CisgICAgcmVxdWVzdDMub25ibG9ja2VkID0gYmxvY2tlZEV2ZW50SGFu
ZGxlcjM7CisgICAgcmVxdWVzdDMub251cGdyYWRlbmVlZGVkID0gdW5leHBlY3RlZFVwZ3JhZGVO
ZWVkZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0My5vbmVycm9yID0gZXJyb3JIYW5kbGVyMzsKKwor
ICAgIHJlcXVlc3Q0Lm9uc3VjY2VzcyA9IHN1Y2Nlc3NDYWxsYmFjazQ7CisgICAgcmVxdWVzdDQu
b25ibG9ja2VkID0gYmxvY2tlZEV2ZW50SGFuZGxlcjQ7CisgICAgcmVxdWVzdDQub251cGdyYWRl
bmVlZGVkID0gdXBncmFkZU5lZWRlZEV2ZW50SGFuZGxlcjQ7CisgICAgcmVxdWVzdDQub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCit2YXIgdmVyc2lvbkNoYW5nZUV2ZW50
c1NlZW4gPSAwOworZnVuY3Rpb24gdmVyc2lvbkNoYW5nZUhhbmRsZXIoZXZ0KQoreworICAgIGV2
ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidmVyc2lvbkNoYW5nZUhhbmRs
ZXIoKToiKTsKKyAgICBkZWJ1ZygiKyt2ZXJzaW9uQ2hhbmdlRXZlbnRzU2VlbiA9ICIgKyAoKyt2
ZXJzaW9uQ2hhbmdlRXZlbnRzU2VlbikpOworICAgIGRlYnVnKCJldmVudC5vbGRWZXJzaW9uID0g
IiArIGV2ZW50Lm9sZFZlcnNpb24pOworICAgIGRlYnVnKCJldmVudC5uZXdWZXJzaW9uID0gIiAr
IGV2ZW50Lm5ld1ZlcnNpb24pOworfQorCit2YXIgZ290QmxvY2tlZEV2ZW50MiA9IGZhbHNlOwor
ZnVuY3Rpb24gYmxvY2tlZEV2ZW50SGFuZGxlcjIoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0Owor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiYmxvY2tlZEV2ZW50SGFuZGxlcjIoKToiKTsKKyAg
ICBzaG91bGRCZSgiZXZlbnQub2xkVmVyc2lvbiIsICIxIik7CisgICAgc2hvdWxkQmUoImV2ZW50
Lm5ld1ZlcnNpb24iLCAiMiIpOworICAgIHNob3VsZEJlRmFsc2UoImdvdEJsb2NrZWRFdmVudDQi
KTsKKyAgICBldmFsQW5kTG9nKCJnb3RCbG9ja2VkRXZlbnQyID0gdHJ1ZSIpOworICAgIGV2YWxB
bmRMb2coImNvbm5lY3Rpb24xLmNsb3NlKCkiKTsKKyAgICBpZiAoZ290QmxvY2tlZEV2ZW50NCkK
KyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHVwZ3JhZGVOZWVkZWRFdmVu
dEhhbmRsZXIyKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoInVwZ3JhZGVOZWVkZWRFdmVudEhhbmRsZXIyKCk6Iik7CisgICAgc2hvdWxkQmVGYWxz
ZSgiZ290QmxvY2tlZEV2ZW50NCIpOworICAgIGlmIChnb3RCbG9ja2VkRXZlbnQ0KQorICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gc3VjY2Vzc0NhbGxiYWNrMihldnQpCit7
CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJzdWNjZXNzQ2Fs
bGJhY2syKCk6Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiZ290QmxvY2tlZEV2ZW50NCIpOworICAg
IGlmIChnb3RCbG9ja2VkRXZlbnQ0KQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordmFy
IGdvdEJsb2NrZWRFdmVudDQgPSBmYWxzZTsKK2Z1bmN0aW9uIGJsb2NrZWRFdmVudEhhbmRsZXI0
KGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImJs
b2NrZWRFdmVudEhhbmRsZXI0KCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm9sZFZlcnNpb24i
LCAiMiIpOworICAgIHNob3VsZEJlKCJldmVudC5uZXdWZXJzaW9uIiwgIjQiKTsKKyAgICBzaG91
bGRCZVRydWUoImdvdEJsb2NrZWRFdmVudDIiKTsKKyAgICBldmFsQW5kTG9nKCJnb3RCbG9ja2Vk
RXZlbnQ0ID0gdHJ1ZSIpOworfQorCitmdW5jdGlvbiB1cGdyYWRlTmVlZGVkRXZlbnRIYW5kbGVy
NChldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ1
cGdyYWRlTmVlZGVkRXZlbnRIYW5kbGVyNCgpOiIpOworfQorCitmdW5jdGlvbiBzdWNjZXNzQ2Fs
bGJhY2s0KGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoInN1Y2Nlc3NDYWxsYmFjazQoKToiKTsKK30KKworZnVuY3Rpb24gZXJyb3JIYW5kbGVyMyhl
dnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJlcnJv
ckhhbmRsZXIzKCk6Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIGJsb2Nr
ZWRFdmVudEhhbmRsZXIzKGV2dCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImJsb2Nr
ZWRFdmVudEhhbmRsZXIzKCk6Iik7CisgICAgZGVidWcoIkZGIGFsc28gZmFpbHMgdGhpcyB0ZXN0
LiIpOworICAgIHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2soZXZ0KTsKK30KKworCit0ZXN0KCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW50
dmVyc2lvbi1vbWl0LXBhcmFtZXRlci5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9pbnR2ZXJzaW9uLW9taXQtcGFyYW1ldGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlN2Qw
ZjNlODNlYTEzMTU3NDYwYWEwMTkzODI0NDU2M2Y3ZTk1OGQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW50dmVyc2lvbi1vbWl0LXBh
cmFtZXRlci5qcwpAQCAtMCwwICsxLDM4IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Cisg
ICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24o
IlRlc3QgdGhhdCBpbml0aWFsIHZlcnNpb24gYWZ0ZXIgYSBzdWNjZXNzZnVsIG9wZW4gb2YgYSBu
b24tZXhpc3RlbnQgZGIgaXMgMSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworICAgIGRibmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWUuc3Vi
c3RyaW5nKDEgKyBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lLmxhc3RJbmRleE9mKCIvIikpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUp
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVTdWNjZXNzOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVT
dWNjZXNzKGV2dCkgeworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbihk
Ym5hbWUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9udXBn
cmFkZW5lZWRlZCA9IGZ1bmN0aW9uKCkgeworICAgICAgdGVzdFBhc3NlZCgiR290IHVwZ3JhZGVu
ZWVkZWQgZXZlbnQiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKGV2dCkKK3sK
KyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIm9wZW5TdWNjZXNz
KCk6Iik7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
KyAgICBkZWJ1ZygiVGVzdCBsaW5lIGZyb20gSURCRmFjdG9yeS5vcGVuOiBJZiBubyB2ZXJzaW9u
IGlzIHNwZWNpZmllZCBhbmQgbm8gZGF0YWJhc2UgZXhpc3RzLCBzZXQgZGF0YWJhc2UgdmVyc2lv
biB0byAxLiIpOworICAgIHNob3VsZEJlKCdkYi52ZXJzaW9uJywgJzEnKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2ludHZlcnNpb24tb3Blbi13aXRoLXZlcnNpb24uanMgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW50dmVyc2lvbi1vcGVuLXdpdGgt
dmVyc2lvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODllZDM5MjZmYTliNTI0NDRhNzNlNmZhNTUyNzJjNTk0
MDA0ODVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2ludHZlcnNpb24tb3Blbi13aXRoLXZlcnNpb24uanMKQEAgLTAsMCArMSw3NiBA
QAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygn
c2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgc3BlY2lmeWluZyBhIHZl
cnNpb24gd2hlbiBvcGVuaW5nIGEgbm9uLWV4aXN0ZW50IGRiIGNhdXNlcyBhbiB1cGdyYWRlbmVl
ZGVkIGV2ZW50IGFuZCB0aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBpcyBzZXQgY29ycmVjdGx5LiIp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAg
IGRibmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKDEgKyBzZWxmLmxvY2F0
aW9uLnBhdGhuYW1lLmxhc3RJbmRleE9mKCIvIikpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBkZWxldGVTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVTdWNjZXNzKGV2dCkgeworICAgIGRl
YnVnKCJTaG91bGQgdHJpZ2dlcjoiKTsKKyAgICBkZWJ1ZygiNC4xLjQ6IElmIG5vIGRhdGFiYXNl
IHdpdGggdGhlIGdpdmVuIG5hbWUgZnJvbSB0aGUgb3JpZ2luIG9yaWdpbiB3YXMgZm91bmQsIG9y
IGlmIGl0IHdhcyBkZWxldGVkIGR1cmluZyB0aGUgcHJldmlvdXMgc3RlcCwgdGhlbiBjcmVhdGUg
YSBkYXRhYmFzZSB3aXRoIG5hbWUgbmFtZSwgd2l0aCAwIGFzIHZlcnNpb24sIGFuZCB3aXRoIG5v
IG9iamVjdCBzdG9yZXMuIExldCBkYiBiZSB0aGUgbmV3IGRhdGFiYXNlLiIpOworICAgIGRlYnVn
KCI0LjEuNjogQ3JlYXRlIGEgbmV3IGNvbm5lY3Rpb24gdG8gZGIgYW5kIGxldCBjb25uZWN0aW9u
IHJlcHJlc2VudCBpdC4iKTsKKyAgICBkZWJ1ZygiNC4xLjc6IElmIHRoZSB2ZXJzaW9uIG9mIGRi
IGlzIGxvd2VyIHRoYW4gdmVyc2lvbiwgdGhlbiBydW4gdGhlIHN0ZXBzIGZvciBydW5uaW5nIGEg
XCJ2ZXJzaW9uY2hhbmdlXCIgdHJhbnNhY3Rpb24gdXNpbmcgY29ubmVjdGlvbiwgdmVyc2lvbiwg
cmVxdWVzdCBhbmQgdXBncmFkZSBjYWxsYmFjay4iKTsKKyAgICBkZWJ1ZygiNC4xLjk6IFJldHVy
biBjb25uZWN0aW9uLiIpOworCisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5v
cGVuKGRibmFtZSwgNykiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk9iamVjdC5wcm90
b3R5cGUudG9TdHJpbmcuYXBwbHkocmVxdWVzdCkiLCAiW29iamVjdCBJREJPcGVuREJSZXF1ZXN0
XSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5v
bnVwZ3JhZGVuZWVkZWQgPSB1cGdyYWRlTmVlZGVkOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0g
dW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICBkZWJ1ZygiIik7Cit9CisKK3ZhciBzYXdV
cGdyYWRlTmVlZGVkID0gZmFsc2U7Cit2YXIgc2F3VHJhbnNhY3Rpb25Db21wbGV0ZSA9IGZhbHNl
OworZnVuY3Rpb24gdXBncmFkZU5lZWRlZChldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAg
dGVzdFBhc3NlZCgiSW4gdGhlIHVwZ3JhZGVuZWVkZWQgZXZlbnQgaGFuZGVyOiIpOworICAgIGRl
YnVnKCJUZXN0IDQuOC45LjE6Iik7CisgICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRv
U3RyaW5nLmFwcGx5KGRiKSIsICJbb2JqZWN0IElEQkRhdGFiYXNlXSIpOworICAgIGRlYnVnKCJU
ZXN0IDQuOC45LjM6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50Lm9sZFZlcnNpb24iLCAiMCIpOwor
ICAgIHNob3VsZEJlKCJldmVudC5uZXdWZXJzaW9uIiwgIjciKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIiwgImRvbmUiKTsKKyAgICBkZWJ1Zygi
VGVzdCA0LjEuNDoiKTsKKyAgICBzaG91bGRCZSgiZGIubmFtZSIsICJkYm5hbWUiKTsKKyAgICBz
aG91bGRCZSgiZGIudmVyc2lvbiIsICI3Iik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3Jl
TmFtZXMubGVuZ3RoIiwgIjAiKTsKKworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZXZl
bnQudGFyZ2V0LnRyYW5zYWN0aW9uIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmpl
Y3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KHRyYW5zYWN0aW9uKSIsICJbb2JqZWN0IElEQlRy
YW5zYWN0aW9uXSIpOworICAgIGV2YWxBbmRMb2coJ29zID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
InNvbWVPUyIpJyk7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihlKSB7CisgICAg
ICBldmFsQW5kTG9nKCJzYXdUcmFuc2FjdGlvbkNvbXBsZXRlID0gdHJ1ZSIpOworICAgIH0KKyAg
ICBzYXdVcGdyYWRlTmVlZGVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoZXZ0
KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygib3BlblN1
Y2Nlc3MoKToiKTsKKyAgICBkZWJ1ZygiVGVzdCA0LjEuNywgdGhhdCBhIHZlcnNpb25jaGFuZ2Ug
dHJhbnNhY3Rpb24gd2FzIHJ1bi4iKTsKKyAgICBzaG91bGRCZSgic2F3VXBncmFkZU5lZWRlZCIs
ICJ0cnVlIik7CisgICAgc2hvdWxkQmVUcnVlKCJzYXdUcmFuc2FjdGlvbkNvbXBsZXRlIik7Cisg
ICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBkZWJ1
ZygiS2luZCBvZiB0ZXN0IDQuMS45OiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiT2Jq
ZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShkYikiLCAiW29iamVjdCBJREJEYXRhYmFzZV0i
KTsKKyAgICBzaG91bGRCZSgnZGIudmVyc2lvbicsICI3Iik7CisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK3Rlc3QoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>