<?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>190919</bug_id>
          
          <creation_ts>2018-10-25 15:13:08 -0700</creation_ts>
          <short_desc>Revert r237347 registered custom properties...</short_desc>
          <delta_ts>2018-10-29 14:49:00 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=190959</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Michaud">justin_michaud</reporter>
          <assigned_to name="Justin Michaud">justin_michaud</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>commit-queue</cc>
    
    <cc>msaboff</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1472195</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-25 15:13:08 -0700</bug_when>
    <thetext>Revert r237347 registered custom properties... https://bugs.webkit.org/show_bug.cgi?id=190039</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472196</commentid>
    <comment_count>1</comment_count>
      <attachid>353113</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-25 15:13:44 -0700</bug_when>
    <thetext>Created attachment 353113
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472233</commentid>
    <comment_count>2</comment_count>
      <attachid>353122</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-25 16:15:19 -0700</bug_when>
    <thetext>Created attachment 353122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472652</commentid>
    <comment_count>3</comment_count>
      <attachid>353219</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-26 20:52:06 -0700</bug_when>
    <thetext>Created attachment 353219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473051</commentid>
    <comment_count>4</comment_count>
      <attachid>353320</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-29 14:08:33 -0700</bug_when>
    <thetext>Created attachment 353320
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473062</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-10-29 14:23:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/45546003&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473077</commentid>
    <comment_count>6</comment_count>
      <attachid>353320</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-29 14:48:58 -0700</bug_when>
    <thetext>Comment on attachment 353320
Patch

Clearing flags on attachment: 353320

Committed r237570: &lt;https://trac.webkit.org/changeset/237570&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473078</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-29 14:49:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353113</attachid>
            <date>2018-10-25 15:13:44 -0700</date>
            <delta_ts>2018-10-25 16:15:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190919-20181025151343.patch</filename>
            <type>text/plain</type>
            <size>129162</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDk2YTNkYTVkMmEwNDE5
MmMyZTBkYWNhNWNhYjE2NzBiYjIxMWQ3Ni4uNWIyMGVjNmUxMzE4ZTE3Yjc3MDA5OGQ0MTg4N2Ix
NWQ0Mzg4YWI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDE4LTEwLTI1ICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZlcnQg
cjIzNzM0NyByZWdpc3RlcmVkIGN1c3RvbSBwcm9wZXJ0aWVzLi4uIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAwMzkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDkxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICog
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXN0b21Qcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBj
c3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0N1c3RvbVByb3BlcnR5VmFsdWU6OnRva2VucyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjaGVja1ZhcmlhYmxlc0ZvckN5Y2xlcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpyZXNvbHZlVmFyaWFi
bGVSZWZlcmVuY2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1c3RvbVByb3BlcnR5
VmFsdWU6OnNldFJlc29sdmVkVHlwZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlOjplcXVhbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9D
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU1JlZ2lzdGVyZWRDdXN0
b21Qcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NSZWdpc3RlcmVkQ3VzdG9tUHJv
cGVydHk6OkNTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NTU1Jl
Z2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oOgorICAgICAgICAqIGNzcy9DU1NWYXJpYWJsZURhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRhOjpjb25zdW1lQW5kVXBkYXRl
VG9rZW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6Q1NTVmFyaWFibGVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6Y2hlY2tWYXJpYWJsZXNG
b3JDeWNsZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRhOjpjaGVj
a1ZhcmlhYmxlc0ZvckN5Y2xlc1dpdGhSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NWYXJpYWJsZURhdGE6OnJlc29sdmVWYXJpYWJsZUZhbGxiYWNrIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2ZVZhcmlhYmxlUmVm
ZXJlbmNlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6OnJlc29s
dmVUb2tlblJhbmdlIGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTVmFyaWFibGVEYXRhLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZVJlc29sdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ZhcmlhYmxlRGF0YTo6bmVlZHNWYXJpYWJsZVJlc29sdXRpb24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRhOjpDU1NWYXJpYWJsZURhdGEpOgorICAgICAgICAq
IGNzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OmNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVWYXJpYWJsZUZhbGxiYWNrKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OnJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpyZXNvbHZlVG9rZW5SYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlOjpyZXNvbHZlVmFyaWFibGVSZWZlcmVuY2Vz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OnZhcmlhYmxl
RGF0YVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlUmVmZXJlbmNl
VmFsdWU6OmVxdWFscyBjb25zdCk6CisgICAgICAgICogY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9t
UHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9w
ZXJ0eTo6cmVnaXN0ZXJQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxl
RGVjbGFyYXRpb246OnNldFByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3Vz
dG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlh
bEN1c3RvbVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlWYWx1ZUN1c3RvbVByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldEN1c3Rv
bVByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmg6CisgICAgICAgICog
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
U3RhdGU6OnNldFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxl
Rm9yS2V5ZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JQ
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3Bl
cnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eVRv
Q3VycmVudFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJv
cGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cmVzb2x2ZWRWYXJpYWJs
ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVk
UHJvcGVydGllczo6YXBwbHlEZWZlcnJlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eTo6YXBwbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlDYXNjYWRlZFByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlDYXNjYWRlZEN1c3RvbVByb3Bl
cnR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5jZXMpOgorICAgICAgICAqIGNzcy9wYXJzZXIv
Q1NTUGFyc2VyLmg6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6Q1NTUHJvcGVydHlQYXJzZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVmFsdWVTdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6Y2FuUGFyc2VUeXBlZEN1c3Rv
bVByb3BlcnR5VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQ
YXJzZXI6OnBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpjb2xsZWN0UGFyc2VkQ3VzdG9tUHJvcGVydHlW
YWx1ZURlcGVuZGVuY2llcyk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlci5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb25W
YWx1ZSk6CisgICAgICAgICogZG9tL0NvbnN0YW50UHJvcGVydHlNYXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29uc3RhbnRQcm9wZXJ0eU1hcDo6c2V0VmFsdWVGb3JQcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjp2YXJpYWJsZURhdGFGb3JQb3NpdGl2ZVBpeGVsTGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OnZhcmlhYmxlRGF0YUZvclBvc2l0aXZlRHVyYXRpb24pOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6Y2hlY2tWYXJpYWJsZXNJbkN1c3RvbVByb3BlcnRpZXMpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OnNldEluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OnNldE5vbkluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6Om9wZXJhdG9yPT0gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6OnNldEN1c3RvbVByb3BlcnR5
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6OlN0eWxl
Q3VzdG9tUHJvcGVydHlEYXRhKToKKwogMjAxOC0xMC0yNSAgTWljaGFlbCBDYXRhbnphcm8gIDxt
Y2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgc2lsZW5jZSBhIC1X
cmV0dXJuLXR5cGUgd2FybmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAwNzQ5ZDlhNGQ2ODExNTZjZTY2OTcyOWQ5MWQ4
MGIzM2JhYjYxOGE0Li5jNzc2NDhlZTFkODM0OWZiMzZiMTA3MTU0NWMzODFmYTczMjcwOWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcApAQCAtMjYxMiwyMyArMjYxMiwyMSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OmN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZQogICAg
IGF1dG8qIHJlZ2lzdGVyZWQgPSBzdHlsZWRFbGVtZW50LT5kb2N1bWVudCgpLmdldENTU1JlZ2lz
dGVyZWRDdXN0b21Qcm9wZXJ0eVNldCgpLmdldChwcm9wZXJ0eU5hbWUpOwogICAgIGF1dG8qIHZh
bHVlID0gc3R5bGUtPmdldEN1c3RvbVByb3BlcnR5KHByb3BlcnR5TmFtZSk7CiAKLSAgICBpZiAo
cmVnaXN0ZXJlZCAmJiAhdmFsdWUpCi0gICAgICAgIHJldHVybiByZWdpc3RlcmVkLT5pbml0aWFs
VmFsdWVDb3B5KCk7CisgICAgaWYgKHJlZ2lzdGVyZWQpIHsKKyAgICAgICAgLy8gVE9ETyB0aGlz
IHNob3VsZCBiZSBkb25lIGJhc2VkIG9uIHRoZSBzeW50YXgKKyAgICAgICAgaWYgKHZhbHVlICYm
IHZhbHVlLT5yZXNvbHZlZFR5cGVkVmFsdWUoKSkKKyAgICAgICAgICAgIHJldHVybiB6b29tQWRq
dXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKCp2YWx1ZS0+cmVzb2x2ZWRUeXBlZFZhbHVlKCksICpz
dHlsZSk7CisKKyAgICAgICAgaWYgKHJlZ2lzdGVyZWQtPmluaXRpYWxWYWx1ZSgpICYmIHJlZ2lz
dGVyZWQtPmluaXRpYWxWYWx1ZSgpLT5yZXNvbHZlZFR5cGVkVmFsdWUoKSkKKyAgICAgICAgICAg
IHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKCpyZWdpc3RlcmVkLT5pbml0
aWFsVmFsdWUoKS0+cmVzb2x2ZWRUeXBlZFZhbHVlKCksICpzdHlsZSk7CiAKLSAgICBpZiAoIXZh
bHVlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAKLSAgICBhdXRvIHZpc2l0b3Ig
PSBXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1
ZT4mKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gUmVm
UHRyPENTU1ZhbHVlPigpOwotICAgIH0sIFsmXShjb25zdCBDU1NWYWx1ZUlEJikgeworICAgIGlm
ICh2YWx1ZSkKICAgICAgICAgcmV0dXJuIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZSgq
dmFsdWUpOwotICAgIH0sIFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYpIHsKLSAgICAg
ICAgcmV0dXJuIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZSgqdmFsdWUpOwotICAgIH0s
IFsmXShjb25zdCBMZW5ndGgmIHZhbHVlKSB7Ci0gICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQ
aXhlbFZhbHVlRm9yTGVuZ3RoKHZhbHVlLCAqc3R5bGUpOwotICAgIH0pOwotICAgIHJldHVybiBX
VEY6OnZpc2l0KHZpc2l0b3IsIHZhbHVlLT52YWx1ZSgpKTsKKworICAgIHJldHVybiBudWxscHRy
OwogfQogCiBTdHJpbmcgQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VzdG9tUHJvcGVydHlUZXh0
KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1
c3RvbVByb3BlcnR5VmFsdWUuY3BwCmluZGV4IGU2OTY2ZmY5YmRjMTQ0MjZhOGM4OTk4MDhkMzQ3
ZmFhOGMyZTFkMTYuLjdjMTZlODQxZGVhZmVlMmUyMTkyNThlYzQ5NWI3ODBmNDE2NTI2MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5jcHAKQEAgLTI3
LDYzICsyNyw4MCBAQAogI2luY2x1ZGUgIkNTU0N1c3RvbVByb3BlcnR5VmFsdWUuaCIKICNpbmNs
dWRlICJDU1NUb2tlbml6ZXIuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIENTU0N1
c3RvbVByb3BlcnR5VmFsdWU6OmVxdWFscyhjb25zdCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJiBv
dGhlcikgY29uc3QKLXsKLSAgICBpZiAobV9uYW1lICE9IG90aGVyLm1fbmFtZSB8fCBtX3ZhbHVl
LmluZGV4KCkgIT0gb3RoZXIubV92YWx1ZS5pbmRleCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgUmVmPENTU1Zh
cmlhYmxlUmVmZXJlbmNlVmFsdWU+JiB2YWx1ZSkgewotICAgICAgICByZXR1cm4gdmFsdWUuZ2V0
KCkgPT0gV1RGOjpnZXQ8UmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+PihvdGhlci5tX3Zh
bHVlKS5nZXQoKTsKLSAgICB9LCBbJl0oY29uc3QgQ1NTVmFsdWVJRCYgdmFsdWUpIHsKLSAgICAg
ICAgcmV0dXJuIHZhbHVlID09IFdURjo6Z2V0PENTU1ZhbHVlSUQ+KG90aGVyLm1fdmFsdWUpOwot
ICAgIH0sIFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYgdmFsdWUpIHsKLSAgICAgICAg
cmV0dXJuIHZhbHVlLmdldCgpID09IFdURjo6Z2V0PFJlZjxDU1NWYXJpYWJsZURhdGE+PihvdGhl
ci5tX3ZhbHVlKS5nZXQoKTsKLSAgICB9LCBbJl0oY29uc3QgTGVuZ3RoJiB2YWx1ZSkgewotICAg
ICAgICByZXR1cm4gdmFsdWUgPT0gV1RGOjpnZXQ8TGVuZ3RoPihvdGhlci5tX3ZhbHVlKTsKLSAg
ICB9KTsKLSAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX3ZhbHVlKTsKLX0KK25hbWVz
cGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmN1c3RvbUNT
U1RleHQoKSBjb25zdAogewogICAgIGlmICghbV9zZXJpYWxpemVkKSB7CiAgICAgICAgIG1fc2Vy
aWFsaXplZCA9IHRydWU7Ci0KLSAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRv
cihbJl0oY29uc3QgUmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+JiB2YWx1ZSkgewotICAg
ICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IHZhbHVlLT5jc3NUZXh0KCk7Ci0gICAgICAgIH0sIFsm
XShjb25zdCBDU1NWYWx1ZUlEJiB2YWx1ZSkgewotICAgICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9
IGdldFZhbHVlTmFtZSh2YWx1ZSk7Ci0gICAgICAgIH0sIFsmXShjb25zdCBSZWY8Q1NTVmFyaWFi
bGVEYXRhPiYgdmFsdWUpIHsKLSAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSB2YWx1ZS0+dG9r
ZW5SYW5nZSgpLnNlcmlhbGl6ZSgpOwotICAgICAgICB9LCBbJl0oY29uc3QgTGVuZ3RoJiB2YWx1
ZSkgewotICAgICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUodmFsdWUudmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCktPmNzc1RleHQoKTsK
LSAgICAgICAgfSk7Ci0gICAgICAgIFdURjo6dmlzaXQodmlzaXRvciwgbV92YWx1ZSk7CisgICAg
ICAgIGlmIChtX3Jlc29sdmVkVHlwZWRWYWx1ZSkgLy8gRklYTUU6IFVuaXQgc2hvdWxkIGJlIGJh
c2VkIG9uIHN5bnRheC4KKyAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKG1fcmVzb2x2ZWRUeXBlZFZhbHVlLT52YWx1ZSgpLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BYKS0+Y3NzVGV4dCgpOworICAgICAgICBlbHNlIGlmIChtX3ZhbHVlKQorICAg
ICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IG1fdmFsdWUtPnRva2VuUmFuZ2UoKS5zZXJpYWxpemUo
KTsKKyAgICAgICAgZWxzZSBpZiAobV92YWx1ZUlkICE9IENTU1ZhbHVlSW52YWxpZCkKKyAgICAg
ICAgICAgIG1fc3RyaW5nVmFsdWUgPSBnZXRWYWx1ZU5hbWUobV92YWx1ZUlkKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IGVtcHR5U3RyaW5nKCk7CiAgICAgfQog
ICAgIHJldHVybiBtX3N0cmluZ1ZhbHVlOwogfQogCi1WZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IENT
U0N1c3RvbVByb3BlcnR5VmFsdWU6OnRva2VucygpIGNvbnN0CitWZWN0b3I8Q1NTUGFyc2VyVG9r
ZW4+IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OnRva2Vucyhjb25zdCBDU1NSZWdpc3RlcmVkQ3Vz
dG9tUHJvcGVydHlTZXQmIHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUpIGNvbnN0CiB7Ci0gICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiByZXN1bHQ7Ci0KLSAg
ICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBSZWY8Q1NTVmFyaWFi
bGVSZWZlcmVuY2VWYWx1ZT4mKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IH0sIFsmXShjb25zdCBDU1NWYWx1ZUlEJikgewotICAgICAgICAvLyBEbyBub3RoaW5nCi0gICAg
fSwgWyZdKGNvbnN0IFJlZjxDU1NWYXJpYWJsZURhdGE+JiB2YWx1ZSkgewotICAgICAgICByZXN1
bHQuYXBwZW5kVmVjdG9yKHZhbHVlLT50b2tlbnMoKSk7Ci0gICAgfSwgWyZdKGNvbnN0IExlbmd0
aCYpIHsKKyAgICBpZiAobV9yZXNvbHZlZFR5cGVkVmFsdWUpIHsKKyAgICAgICAgVmVjdG9yPENT
U1BhcnNlclRva2VuPiByZXN1bHQ7CiAgICAgICAgIENTU1Rva2VuaXplciB0b2tlbml6ZXIoY3Nz
VGV4dCgpKTsKIAogICAgICAgICBhdXRvIHRva2VuaXplclJhbmdlID0gdG9rZW5pemVyLnRva2Vu
UmFuZ2UoKTsKICAgICAgICAgd2hpbGUgKCF0b2tlbml6ZXJSYW5nZS5hdEVuZCgpKQogICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCh0b2tlbml6ZXJSYW5nZS5jb25zdW1lKCkpOwotICAgIH0pOwot
ICAgIFdURjo6dmlzaXQodmlzaXRvciwgbV92YWx1ZSk7CiAKLSAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGlmICghbV92YWx1ZSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChtX2NvbnRhaW5zVmFyaWFibGVzKSB7CisgICAgICAg
IFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVzdWx0OworICAgICAgICAvLyBGSVhNRTogQXZvaWQg
ZG9pbmcgdGhpcyB3b3JrIG1vcmUgdGhhbiBvbmNlLgorICAgICAgICBSZWZQdHI8Q1NTVmFyaWFi
bGVEYXRhPiByZXNvbHZlZERhdGEgPSBtX3ZhbHVlLT5yZXNvbHZlVmFyaWFibGVSZWZlcmVuY2Vz
KHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBzdHlsZSk7CisgICAgICAgIGlmIChyZXNvbHZlZERhdGEp
CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kVmVjdG9yKHJlc29sdmVkRGF0YS0+dG9rZW5zKCkp
OworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcmV0dXJuIG1fdmFsdWUt
PnRva2VucygpOworfQorCitib29sIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNoZWNrVmFyaWFi
bGVzRm9yQ3ljbGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0
b21pY1N0cmluZz4mIGludmFsaWRQcm9wZXJ0aWVzKSBjb25zdAoreworICAgIEFTU0VSVChjb250
YWluc1ZhcmlhYmxlcygpKTsKKyAgICBpZiAobV92YWx1ZSkKKyAgICAgICAgcmV0dXJuIG1fdmFs
dWUtPmNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzKG5hbWUsIHN0eWxlLCBzZWVuUHJvcGVydGllcywg
aW52YWxpZFByb3BlcnRpZXMpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU6OnJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZXMoY29uc3QgQ1NTUmVnaXN0
ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiByZWdpc3RlcmVkUHJvcGVydGllcywgVmVjdG9yPFJlZjxD
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlPj4mIHJlc29sdmVkVmFsdWVzLCBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUpIGNvbnN0Cit7CisgICAgQVNTRVJUKGNvbnRhaW5zVmFyaWFibGVzKCkpOworICAg
IGlmICghbV92YWx1ZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEFTU0VSVChtX3ZhbHVl
LT5uZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbigpKTsKKyAgICBSZWZQdHI8Q1NTVmFyaWFibGVEYXRh
PiByZXNvbHZlZERhdGEgPSBtX3ZhbHVlLT5yZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKHJlZ2lz
dGVyZWRQcm9wZXJ0aWVzLCBzdHlsZSk7CisgICAgaWYgKHJlc29sdmVkRGF0YSkKKyAgICAgICAg
cmVzb2x2ZWRWYWx1ZXMuYXBwZW5kKENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVdpdGhW
YXJpYWJsZURhdGEobV9uYW1lLCByZXNvbHZlZERhdGEucmVsZWFzZU5vbk51bGwoKSkpOworICAg
IGVsc2UKKyAgICAgICAgcmVzb2x2ZWRWYWx1ZXMuYXBwZW5kKENTU0N1c3RvbVByb3BlcnR5VmFs
dWU6OmNyZWF0ZVdpdGhJRChtX25hbWUsIENTU1ZhbHVlSW52YWxpZCkpOworfQorCit2b2lkIENT
U0N1c3RvbVByb3BlcnR5VmFsdWU6OnNldFJlc29sdmVkVHlwZWRWYWx1ZShMZW5ndGggbGVuZ3Ro
KQoreworICAgIEFTU0VSVChsZW5ndGguaXNTcGVjaWZpZWQoKSk7CisgICAgbV9yZXNvbHZlZFR5
cGVkVmFsdWUgPSBXVEZNb3ZlKGxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oCmluZGV4IDYyNWUxOTUxMWUyZGRhZGJhZDQ3YzY5MTcz
MzlkNDk5NzExOGY0OTcuLmJiMDkyMTQ1ZGU1MWZiNmU2YjM5ZDk5NTRkMzY0OTJkYmNjZDZmNTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaApAQCAtMjcs
NDYgKzI3LDMxIEBACiAKICNpbmNsdWRlICJDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuaCIK
ICNpbmNsdWRlICJDU1NWYWx1ZS5oIgotI2luY2x1ZGUgIkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFs
dWUuaCIKKyNpbmNsdWRlICJDU1NWYXJpYWJsZURhdGEuaCIKICNpbmNsdWRlICJMZW5ndGguaCIK
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDU1NQYXJzZXJUb2tlbjsKLWNsYXNzIENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU7CiBjbGFz
cyBSZW5kZXJTdHlsZTsKIAogY2xhc3MgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSBmaW5hbCA6IHB1
YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgVmFyaWFudFZhbHVlID0gVmFyaWFu
dDxSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4sIENTU1ZhbHVlSUQsIFJlZjxDU1NWYXJp
YWJsZURhdGE+LCBMZW5ndGg+OwotCi0gICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlPiBjcmVhdGVVbnJlc29sdmVkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENTU1Zh
cmlhYmxlUmVmZXJlbmNlVmFsdWU+JiYgdmFsdWUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHsgV1RGTW92ZSh2YWx1ZSkg
fSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3Jl
YXRlVW5yZXNvbHZlZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIENTU1ZhbHVlSUQgdmFsdWUp
CisgICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBjcmVhdGVXaXRoVmFyaWFi
bGVEYXRhKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENTU1ZhcmlhYmxlRGF0YT4mJiB2
YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1c3RvbVByb3Bl
cnR5VmFsdWUobmFtZSwgeyB2YWx1ZSB9KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENTU0N1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgV1RGTW92ZSh2YWx1ZSkpKTsKICAgICB9Ci0K
LSAgICBzdGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGNyZWF0ZVdpdGhJRChjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIENTU1ZhbHVlSUQgaWQpCi0gICAgewotICAgICAgICBBU1NF
UlQoaWQgPT0gQ1NTVmFsdWVJbmhlcml0IHx8IGlkID09IENTU1ZhbHVlSW5pdGlhbCB8fCBpZCA9
PSBDU1NWYWx1ZVVuc2V0IHx8IGlkID09IENTU1ZhbHVlUmV2ZXJ0IHx8IGlkID09IENTU1ZhbHVl
SW52YWxpZCk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1c3RvbVByb3BlcnR5
VmFsdWUobmFtZSwgeyBpZCB9KSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFJlZjxDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlPiBjcmVhdGVTeW50YXhBbGwoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBS
ZWY8Q1NTVmFyaWFibGVEYXRhPiYmIHZhbHVlKQorICAgIAorICAgIHN0YXRpYyBSZWY8Q1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZT4gY3JlYXRlV2l0aElEKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
Q1NTVmFsdWVJRCB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENT
U0N1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgeyBXVEZNb3ZlKHZhbHVlKSB9KSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgdmFsdWUp
KTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBj
cmVhdGVTeW50YXhMZW5ndGgoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBMZW5ndGggdmFsdWUp
CisgICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBjcmVhdGVJbnZhbGlkKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1c3RvbVByb3BlcnR5VmFs
dWUobmFtZSwgeyBXVEZNb3ZlKHZhbHVlKSB9KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IENTU0N1c3RvbVByb3BlcnR5VmFsdWUoZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkp
OwogICAgIH0KIAogICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3JlYXRl
KGNvbnN0IENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIG90aGVyKQpAQCAtNzcsNDkgKzYyLDcwIEBA
IHB1YmxpYzoKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCiAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9Ci0gICAgYm9vbCBp
c1Jlc29sdmVkKCkgY29uc3QgIHsgcmV0dXJuICFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxD
U1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPj4obV92YWx1ZSk7IH0KLSAgICBib29sIGlzVW5zZXQo
KSBjb25zdCAgeyByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxDU1NWYWx1ZUlEPihtX3Zh
bHVlKSAmJiBXVEY6OmdldDxDU1NWYWx1ZUlEPihtX3ZhbHVlKSA9PSBDU1NWYWx1ZVVuc2V0OyB9
Ci0gICAgYm9vbCBpc0ludmFsaWQoKSBjb25zdCAgeyByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxDU1NWYWx1ZUlEPihtX3ZhbHVlKSAmJiBXVEY6OmdldDxDU1NWYWx1ZUlEPihtX3ZhbHVl
KSA9PSBDU1NWYWx1ZUludmFsaWQ7IH0KKyAgICAKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9uYW1lID09IG90aGVy
Lm1fbmFtZSAmJiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWUgJiYgbV92YWx1ZUlkID09IG90aGVy
Lm1fdmFsdWVJZDsgfQorCisgICAgYm9vbCBjb250YWluc1ZhcmlhYmxlcygpIGNvbnN0IHsgQVNT
RVJUKCFtX2NvbnRhaW5zVmFyaWFibGVzIHx8ICFtX3Jlc29sdmVkVHlwZWRWYWx1ZSk7IHJldHVy
biBtX2NvbnRhaW5zVmFyaWFibGVzOyB9CisgICAgYm9vbCBjaGVja1ZhcmlhYmxlc0ZvckN5Y2xl
cyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFJlbmRlclN0eWxlJiwgSGFzaFNldDxB
dG9taWNTdHJpbmc+JiBzZWVuUHJvcGVydGllcywgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBpbnZh
bGlkUHJvcGVydGllcykgY29uc3Q7CisKKyAgICB2b2lkIHJlc29sdmVWYXJpYWJsZVJlZmVyZW5j
ZXMoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiwgVmVjdG9yPFJlZjxDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlPj4mLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCi0gICAg
Y29uc3QgVmFyaWFudFZhbHVlJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAg
ICBDU1NWYWx1ZUlEIHZhbHVlSUQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlSWQ7IH0KKyAgICBD
U1NWYXJpYWJsZURhdGEqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsgfQor
ICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gdG9rZW5zKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0
b21Qcm9wZXJ0eVNldCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAKLSAgICBWZWN0b3I8
Q1NTUGFyc2VyVG9rZW4+IHRva2VucygpIGNvbnN0OwotICAgIGJvb2wgZXF1YWxzKGNvbnN0IENT
U0N1c3RvbVByb3BlcnR5VmFsdWUmIG90aGVyKSBjb25zdDsKKyAgICBjb25zdCBzdGQ6Om9wdGlv
bmFsPExlbmd0aD4mIHJlc29sdmVkVHlwZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2
ZWRUeXBlZFZhbHVlOyB9CisgICAgdm9pZCBzZXRSZXNvbHZlZFR5cGVkVmFsdWUoTGVuZ3RoKTsK
IAogcHJpdmF0ZToKLSAgICBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgVmFyaWFudFZhbHVlJiYgdmFsdWUpCisgICAgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc2VyaWFsaXplZFZhbHVl
KQorICAgICAgICA6IENTU1ZhbHVlKEN1c3RvbVByb3BlcnR5Q2xhc3MpCisgICAgICAgICwgbV9u
YW1lKG5hbWUpCisgICAgICAgICwgbV9zdHJpbmdWYWx1ZShzZXJpYWxpemVkVmFsdWUpCisgICAg
ICAgICwgbV9zZXJpYWxpemVkKHRydWUpCisgICAgeworICAgIH0KKworICAgIENTU0N1c3RvbVBy
b3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBDU1NWYWx1ZUlEIGlkKQorICAg
ICAgICA6IENTU1ZhbHVlKEN1c3RvbVByb3BlcnR5Q2xhc3MpCisgICAgICAgICwgbV9uYW1lKG5h
bWUpCisgICAgICAgICwgbV92YWx1ZUlkKGlkKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlkID09
IENTU1ZhbHVlSW5oZXJpdCB8fCBpZCA9PSBDU1NWYWx1ZUluaXRpYWwgfHwgaWQgPT0gQ1NTVmFs
dWVVbnNldCB8fCBpZCA9PSBDU1NWYWx1ZVJldmVydCB8fCBpZCA9PSBDU1NWYWx1ZUludmFsaWQp
OworICAgIH0KKyAgICAKKyAgICBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgUmVmPENTU1ZhcmlhYmxlRGF0YT4mJiB2YWx1ZSkKICAgICAgICAgOiBDU1NW
YWx1ZShDdXN0b21Qcm9wZXJ0eUNsYXNzKQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgICAg
ICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCi0gICAgICAgICwgbV9zZXJpYWxpemVkKGZhbHNl
KQorICAgICAgICAsIG1fdmFsdWVJZChDU1NWYWx1ZUludGVybmFsVmFyaWFibGVWYWx1ZSkKKyAg
ICAgICAgLCBtX2NvbnRhaW5zVmFyaWFibGVzKG1fdmFsdWUtPm5lZWRzVmFyaWFibGVSZXNvbHV0
aW9uKCkpCiAgICAgewogICAgIH0KIAogICAgIENTU0N1c3RvbVByb3BlcnR5VmFsdWUoY29uc3Qg
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSYgb3RoZXIpCiAgICAgICAgIDogQ1NTVmFsdWUoQ3VzdG9t
UHJvcGVydHlDbGFzcykKICAgICAgICAgLCBtX25hbWUob3RoZXIubV9uYW1lKQotICAgICAgICAs
IG1fdmFsdWUoQ1NTVmFsdWVVbnNldCkKKyAgICAgICAgLCBtX3ZhbHVlKG90aGVyLm1fdmFsdWUu
Y29weVJlZigpKQorICAgICAgICAsIG1fdmFsdWVJZChvdGhlci5tX3ZhbHVlSWQpCiAgICAgICAg
ICwgbV9zdHJpbmdWYWx1ZShvdGhlci5tX3N0cmluZ1ZhbHVlKQorICAgICAgICAsIG1fY29udGFp
bnNWYXJpYWJsZXMob3RoZXIubV9jb250YWluc1ZhcmlhYmxlcykKICAgICAgICAgLCBtX3Nlcmlh
bGl6ZWQob3RoZXIubV9zZXJpYWxpemVkKQorICAgICAgICAsIG1fcmVzb2x2ZWRUeXBlZFZhbHVl
KG90aGVyLm1fcmVzb2x2ZWRUeXBlZFZhbHVlKQogICAgIHsKLSAgICAgICAgLy8gTm8gY29weSBj
b25zdHJ1Y3RvciBmb3IgUmVmPENTU1ZhcmlhYmxlRGF0YT4sIHNvIHdlIGhhdmUgdG8gZG8gdGhp
cyBvdXJzZWx2ZXMKLSAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0o
Y29uc3QgUmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+JiB2YWx1ZSkgewotICAgICAgICAg
ICAgbV92YWx1ZSA9IHZhbHVlLmNvcHlSZWYoKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IENTU1Zh
bHVlSUQmIHZhbHVlKSB7Ci0gICAgICAgICAgICBtX3ZhbHVlID0gdmFsdWU7Ci0gICAgICAgIH0s
IFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYgdmFsdWUpIHsKLSAgICAgICAgICAgIG1f
dmFsdWUgPSB2YWx1ZS5jb3B5UmVmKCk7Ci0gICAgICAgIH0sIFsmXShjb25zdCBMZW5ndGgmIHZh
bHVlKSB7Ci0gICAgICAgICAgICBtX3ZhbHVlID0gdmFsdWU7Ci0gICAgICAgIH0pOwotICAgICAg
ICBXVEY6OnZpc2l0KHZpc2l0b3IsIG90aGVyLm1fdmFsdWUpOwogICAgIH0KICAgICAKICAgICBj
b25zdCBBdG9taWNTdHJpbmcgbV9uYW1lOwotICAgIFZhcmlhbnRWYWx1ZSBtX3ZhbHVlOworICAg
IAorICAgIFJlZlB0cjxDU1NWYXJpYWJsZURhdGE+IG1fdmFsdWU7CisgICAgQ1NTVmFsdWVJRCBt
X3ZhbHVlSWQgeyBDU1NWYWx1ZUludmFsaWQgfTsKICAgICAKICAgICBtdXRhYmxlIFN0cmluZyBt
X3N0cmluZ1ZhbHVlOworICAgIGJvb2wgbV9jb250YWluc1ZhcmlhYmxlcyB7IGZhbHNlIH07CiAg
ICAgbXV0YWJsZSBib29sIG1fc2VyaWFsaXplZCB7IGZhbHNlIH07CisKKyAgICAvLyBGSVhNRTog
SXQgc2hvdWxkIG5vdCBiZSBwb3NzaWJsZSB0byBleHByZXNzIGFuIGludmFsaWQgc3RhdGUsIHN1
Y2ggYXMgY29udGFpbnNWYXJpYWJsZXMoKSAmJiByZXNvbHZlZFR5cGVkVmFsdWUoKS4KKyAgICBz
dGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9yZXNvbHZlZFR5cGVkVmFsdWU7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0
ZXJlZEN1c3RvbVByb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWdpc3RlcmVk
Q3VzdG9tUHJvcGVydHkuY3BwCmluZGV4IDc5ZWY3ZmU2YjAzY2Q2Y2ZmN2ZiOWVhODE5YjE2MDc2
ZGU0NTU4ZDcuLjNlYTdiOTJjMDA5OTczMDk2YTAzZTk1ZTllNmEyNjc1NGE1Y2E4OGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuY3Bw
CkBAIC0zMCw5ICszMCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTUmVnaXN0ZXJl
ZEN1c3RvbVByb3BlcnR5OjpDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIHN5bnRheCwgYm9vbCBpbmhlcml0cywgUmVmUHRyPENTU0N1
c3RvbVByb3BlcnR5VmFsdWU+JiYgaW5pdGlhbFZhbHVlKQorQ1NTUmVnaXN0ZXJlZEN1c3RvbVBy
b3BlcnR5OjpDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lLCBi
b29sIGluaGVyaXRzLCBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiBpbml0aWFsVmFs
dWUpCiAgICAgOiBuYW1lKG5hbWUpCi0gICAgLCBzeW50YXgoc3ludGF4KQogICAgICwgaW5oZXJp
dHMoaW5oZXJpdHMpCiAgICAgLCBtX2luaXRpYWxWYWx1ZShXVEZNb3ZlKGluaXRpYWxWYWx1ZSkp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1c3RvbVBy
b3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5
LmgKaW5kZXggZGZjZjBiZGMzOWVkNTQwYzNkMWRhYTRjMDVhNjRjMGY1OTE1MzkyYi4uMzQyN2Vh
YTNjM2FiNzQ3YzA1MTg1ZjM5MzViNmI1YjJkMjZhZWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuaApAQCAtMzMsMTAgKzMzLDEwIEBA
IGNsYXNzIENTU0N1c3RvbVByb3BlcnR5VmFsdWU7CiAKIHN0cnVjdCBDU1NSZWdpc3RlcmVkQ3Vz
dG9tUHJvcGVydHkgewogICAgIGNvbnN0IFN0cmluZyBuYW1lOwotICAgIGNvbnN0IFN0cmluZyBz
eW50YXg7CisgICAgLyogVE9ETyBzeW50YXggKi8KICAgICBjb25zdCBib29sIGluaGVyaXRzOwog
Ci0gICAgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBzeW50YXgsIGJvb2wgaW5oZXJpdHMsIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlPiYmIGluaXRpYWxWYWx1ZSk7CisgICAgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5
KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBpbmhlcml0cywgUmVmUHRyPENTU0N1c3RvbVByb3Bl
cnR5VmFsdWU+JiYgaW5pdGlhbFZhbHVlKTsKIAogICAgIGNvbnN0IENTU0N1c3RvbVByb3BlcnR5
VmFsdWUqIGluaXRpYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbFZhbHVlLmdldCgp
OyB9CiAgICAgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGluaXRpYWxWYWx1ZUNvcHko
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZURhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5jcHAKaW5kZXggNjA0Y2Ex
ODM0MzRiNjU4Njc0ZDNkOGMwNzI5YTQxMTA5MTU4ZDk5ZC4uOTg5OTM1MzE3NTljOGM5M2Y3NzU3
ZTMxOTg5YjFkNjA5ODEyMGM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
cmlhYmxlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5j
cHAKQEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBDU1NWYXJpYWJsZURhdGE6Om9wZXJhdG9yPT0oY29u
c3QgQ1NTVmFyaWFibGVEYXRhJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gdG9rZW5zKCkgPT0g
b3RoZXIudG9rZW5zKCk7CiB9CiAKLUNTU1ZhcmlhYmxlRGF0YTo6Q1NTVmFyaWFibGVEYXRhKGNv
bnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQordm9pZCBDU1NWYXJpYWJsZURhdGE6OmNv
bnN1bWVBbmRVcGRhdGVUb2tlbnMoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7
CiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIENTU1BhcnNlclRva2VuUmFu
Z2UgbG9jYWxSYW5nZSA9IHJhbmdlOwpAQCAtNzcsNCArNzcsMTA5IEBAIENTU1ZhcmlhYmxlRGF0
YTo6Q1NTVmFyaWFibGVEYXRhKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAg
ICAgICB1cGRhdGVUb2tlbnM8VUNoYXI+KHJhbmdlKTsKIH0KIAorQ1NTVmFyaWFibGVEYXRhOjpD
U1NWYXJpYWJsZURhdGEoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGJvb2wgbmVl
ZHNWYXJpYWJsZVJlc29sdXRpb24pCisgICAgOiBtX25lZWRzVmFyaWFibGVSZXNvbHV0aW9uKG5l
ZWRzVmFyaWFibGVSZXNvbHV0aW9uKQoreworICAgIGNvbnN1bWVBbmRVcGRhdGVUb2tlbnMocmFu
Z2UpOworfQorCitib29sIENTU1ZhcmlhYmxlRGF0YTo6Y2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEhhc2hT
ZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYg
aW52YWxpZFByb3BlcnRpZXMpIGNvbnN0Cit7CisgICAgaWYgKGludmFsaWRQcm9wZXJ0aWVzLmNv
bnRhaW5zKG5hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgSGFzaFNldDxB
dG9taWNTdHJpbmc+IG5ld1NlZW5Qcm9wZXJ0aWVzID0gc2VlblByb3BlcnRpZXM7CisgICAgbmV3
U2VlblByb3BlcnRpZXMuYWRkKG5hbWUpOworICAgIAorICAgIGJvb2wgdmFsaWQgPSBjaGVja1Zh
cmlhYmxlc0ZvckN5Y2xlc1dpdGhSYW5nZShtX3Rva2Vucywgc3R5bGUsIG5ld1NlZW5Qcm9wZXJ0
aWVzLCBpbnZhbGlkUHJvcGVydGllcyk7CisgICAgaWYgKCF2YWxpZCkKKyAgICAgICAgaW52YWxp
ZFByb3BlcnRpZXMuYWRkKG5hbWUpOworICAgIAorICAgIHJldHVybiB2YWxpZDsKK30KKyAgICAK
K2Jvb2wgQ1NTVmFyaWFibGVEYXRhOjpjaGVja1ZhcmlhYmxlc0ZvckN5Y2xlc1dpdGhSYW5nZShD
U1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEhhc2hT
ZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYg
aW52YWxpZFByb3BlcnRpZXMpIGNvbnN0Cit7CisgICAgd2hpbGUgKCFyYW5nZS5hdEVuZCgpKSB7
CisgICAgICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlVmFyIHx8
IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVFbnYpIHsKKyAgICAgICAgICAg
IENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2sgPSByYW5nZS5jb25zdW1lQmxvY2soKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgYmxvY2suY29uc3VtZVdoaXRlc3BhY2UoKTsKKyAgICAgICAg
ICAgIEFTU0VSVChibG9jay5wZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pOworICAgICAgICAg
ICAgQXRvbWljU3RyaW5nIHZhcmlhYmxlTmFtZSA9IGJsb2NrLmNvbnN1bWVJbmNsdWRpbmdXaGl0
ZXNwYWNlKCkudmFsdWUoKS50b0F0b21pY1N0cmluZygpOworICAgICAgICAgICAgQVNTRVJUKGJs
b2NrLmF0RW5kKCkgfHwgYmxvY2sucGVlaygpLnR5cGUoKSA9PSBDb21tYVRva2VuKTsKKyAgICAg
ICAgICAgIGlmIChzZWVuUHJvcGVydGllcy5jb250YWlucyh2YXJpYWJsZU5hbWUpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgYXV0byogdmFsdWUgPSBzdHls
ZS5nZXRDdXN0b21Qcm9wZXJ0eSh2YXJpYWJsZU5hbWUpOworICAgICAgICAgICAgaWYgKHZhbHVl
ICYmIHZhbHVlLT5jb250YWluc1ZhcmlhYmxlcygpICYmICF2YWx1ZS0+Y2hlY2tWYXJpYWJsZXNG
b3JDeWNsZXModmFyaWFibGVOYW1lLCBzdHlsZSwgc2VlblByb3BlcnRpZXMsIGludmFsaWRQcm9w
ZXJ0aWVzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlm
IChyYW5nZS5wZWVrKCkudHlwZSgpID09IENvbW1hVG9rZW4pIHsKKyAgICAgICAgICAgICAgICAv
LyBGYWxsYmFjay4KKyAgICAgICAgICAgICAgICByYW5nZS5jb25zdW1lKCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzV2l0aFJhbmdlKGJsb2NrLCBzdHls
ZSwgc2VlblByb3BlcnRpZXMsIGludmFsaWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICByYW5nZS5jb25zdW1lKCk7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIENTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2ZVZhcmlhYmxlRmFs
bGJhY2soY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiByZWdpc3RlcmVkUHJv
cGVydGllcywgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgVmVjdG9yPENTU1BhcnNlclRva2Vu
PiYgcmVzdWx0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0Cit7CisgICAgaWYgKHJh
bmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQocmFuZ2UucGVl
aygpLnR5cGUoKSA9PSBDb21tYVRva2VuKTsKKyAgICByYW5nZS5jb25zdW1lKCk7CisgICAgcmV0
dXJuIHJlc29sdmVUb2tlblJhbmdlKHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCByYW5nZSwgcmVzdWx0
LCBzdHlsZSk7Cit9CisKK2Jvb2wgQ1NTVmFyaWFibGVEYXRhOjpyZXNvbHZlVmFyaWFibGVSZWZl
cmVuY2UoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiByZWdpc3RlcmVkUHJv
cGVydGllcywgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgVmVjdG9yPENTU1BhcnNlclRva2Vu
PiYgcmVzdWx0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0Cit7CisgICAgcmFuZ2Uu
Y29uc3VtZVdoaXRlc3BhY2UoKTsKKyAgICBBU1NFUlQocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBJ
ZGVudFRva2VuKTsKKyAgICBBdG9taWNTdHJpbmcgdmFyaWFibGVOYW1lID0gcmFuZ2UuY29uc3Vt
ZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvQXRvbWljU3RyaW5nKCk7CisgICAgQVNT
RVJUKHJhbmdlLmF0RW5kKCkgfHwgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gQ29tbWFUb2tlbikp
OworICAgIAorICAgIGF1dG8qIHByb3BlcnR5ID0gc3R5bGUuZ2V0Q3VzdG9tUHJvcGVydHkodmFy
aWFibGVOYW1lKTsKKyAgICBpZiAocHJvcGVydHkgJiYgcHJvcGVydHktPnJlc29sdmVkVHlwZWRW
YWx1ZSgpKSB7CisgICAgICAgIHJlc3VsdC5hcHBlbmRWZWN0b3IocHJvcGVydHktPnRva2Vucyhy
ZWdpc3RlcmVkUHJvcGVydGllcywgc3R5bGUpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgaWYgKCFwcm9wZXJ0eSB8fCAhcHJvcGVydHktPnZhbHVlKCkpIHsKKyAgICAgICAg
YXV0byogcmVnaXN0ZXJlZCA9IHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLmdldCh2YXJpYWJsZU5hbWUp
OworICAgICAgICBpZiAocmVnaXN0ZXJlZCAmJiByZWdpc3RlcmVkLT5pbml0aWFsVmFsdWUoKSkK
KyAgICAgICAgICAgIHByb3BlcnR5ID0gcmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlKCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiByZXNvbHZlVmFyaWFibGVGYWxsYmFjayhyZWdp
c3RlcmVkUHJvcGVydGllcywgcmFuZ2UsIHJlc3VsdCwgc3R5bGUpOworICAgIH0KKyAgICBBU1NF
UlQocHJvcGVydHkpOworICAgIHJlc3VsdC5hcHBlbmRWZWN0b3IocHJvcGVydHktPnRva2Vucyhy
ZWdpc3RlcmVkUHJvcGVydGllcywgc3R5bGUpKTsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworUmVmUHRyPENTU1ZhcmlhYmxlRGF0YT4gQ1NTVmFyaWFibGVEYXRhOjpyZXNvbHZlVmFyaWFi
bGVSZWZlcmVuY2VzKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYgcmVnaXN0
ZXJlZFByb3BlcnRpZXMsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKK3sKKyAgICBW
ZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHJlc29sdmVkVG9rZW5zOworICAgIENTU1BhcnNlclRva2Vu
UmFuZ2UgcmFuZ2UgPSBtX3Rva2VuczsKKyAgICBpZiAoIXJlc29sdmVUb2tlblJhbmdlKHJlZ2lz
dGVyZWRQcm9wZXJ0aWVzLCByYW5nZSwgcmVzb2x2ZWRUb2tlbnMsIHN0eWxlKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRlUmVzb2x2
ZWQocmVzb2x2ZWRUb2tlbnMsICp0aGlzKTsKK30KKyAgICAKK2Jvb2wgQ1NTVmFyaWFibGVEYXRh
OjpyZXNvbHZlVG9rZW5SYW5nZShjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQm
IHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBWZWN0b3I8
Q1NTUGFyc2VyVG9rZW4+JiByZXN1bHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QK
K3sKKyAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOworICAgIHdoaWxlICghcmFuZ2UuYXRFbmQoKSkg
eworICAgICAgICBpZiAocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVZhciB8
fCByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlRW52KQorICAgICAgICAgICAg
c3VjY2VzcyAmPSByZXNvbHZlVmFyaWFibGVSZWZlcmVuY2UocmVnaXN0ZXJlZFByb3BlcnRpZXMs
IHJhbmdlLmNvbnN1bWVCbG9jaygpLCByZXN1bHQsIHN0eWxlKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChyYW5nZS5jb25zdW1lKCkpOworICAgIH0KKyAgICByZXR1
cm4gc3VjY2VzczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhcmlhYmxlRGF0YS5oCmluZGV4IDM5NmUwNjliOWM0NjUyYzhlODdmN2NhZDgyOTkwMzllYzBj
ZWQxNmQuLjAwOGE2ZmE0MjMwNzcwNDk5MzMxNzA3YTc0YzdkNmNkNmQyMjcyZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFyaWFibGVEYXRhLmgKQEAgLTQzLDkgKzQzLDE0IEBAIGNsYXNzIENTU1Zh
cmlhYmxlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU1ZhcmlhYmxlRGF0YT4gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKENTU1ZhcmlhYmxlRGF0YSk7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NWYXJpYWJsZURhdGE+IGNyZWF0
ZShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKKyAgICBzdGF0aWMgUmVmPENTU1Zh
cmlhYmxlRGF0YT4gY3JlYXRlKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBib29s
IG5lZWRzVmFyaWFibGVSZXNvbHV0aW9uID0gdHJ1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENTU1ZhcmlhYmxlRGF0YShyYW5nZSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDU1NWYXJpYWJsZURhdGEocmFuZ2UsIG5lZWRzVmFyaWFibGVSZXNvbHV0aW9u
KSk7CisgICAgfQorCisgICAgc3RhdGljIFJlZjxDU1NWYXJpYWJsZURhdGE+IGNyZWF0ZVJlc29s
dmVkKGNvbnN0IFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mIHJlc29sdmVkVG9rZW5zLCBjb25zdCBD
U1NWYXJpYWJsZURhdGEmIHVucmVzb2x2ZWREYXRhKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ1NTVmFyaWFibGVEYXRhKHJlc29sdmVkVG9rZW5zLCB1bnJlc29sdmVkRGF0
YS5tX2JhY2tpbmdTdHJpbmcpKTsKICAgICB9CiAKICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHRv
a2VuUmFuZ2UoKSB7IHJldHVybiBtX3Rva2VuczsgfQpAQCAtNTQsMTIgKzU5LDM2IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NWYXJpYWJsZURhdGEmIG90aGVyKSBj
b25zdDsKIAorICAgIGJvb2wgbmVlZHNWYXJpYWJsZVJlc29sdXRpb24oKSBjb25zdCB7IHJldHVy
biBtX25lZWRzVmFyaWFibGVSZXNvbHV0aW9uOyB9CisKKyAgICBib29sIGNoZWNrVmFyaWFibGVz
Rm9yQ3ljbGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgUmVuZGVyU3R5bGUmLCBI
YXNoU2V0PEF0b21pY1N0cmluZz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21pY1N0cmlu
Zz4mIGludmFsaWRQcm9wZXJ0aWVzKSBjb25zdDsKKworICAgIFJlZlB0cjxDU1NWYXJpYWJsZURh
dGE+IHJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZXMoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVBy
b3BlcnR5U2V0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKKyAgICBib29sIHJlc29sdmVU
b2tlblJhbmdlKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYsIENTU1BhcnNl
clRva2VuUmFuZ2UsIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mLCBjb25zdCBSZW5kZXJTdHlsZSYp
IGNvbnN0OworCiBwcml2YXRlOgotICAgIENTU1ZhcmlhYmxlRGF0YShjb25zdCBDU1NQYXJzZXJU
b2tlblJhbmdlJik7CisgICAgQ1NTVmFyaWFibGVEYXRhKGNvbnN0IENTU1BhcnNlclRva2VuUmFu
Z2UmLCBib29sIG5lZWRzVmFyaWFibGVSZXNvbHV0aW9uKTsKKworICAgIC8vIFdlIGNhbiBzYWZl
bHkgY29weSB0aGUgdG9rZW5zICh3aGljaCBoYXZlIHJhdyBwb2ludGVycyB0byBzdWJzdHJpbmdz
KSBiZWNhdXNlCisgICAgLy8gU3R5bGVQcm9wZXJ0eVNldHMgY29udGFpbiByZWZlcmVuY2VzIHRv
IENTU0N1c3RvbVByb3BlcnR5VmFsdWVzLCB3aGljaAorICAgIC8vIHBvaW50IHRvIHRoZSB1bnJl
c29sdmVkIENTU1ZhcmlhYmxlRGF0YSB2YWx1ZXMgdGhhdCBvd24gdGhlIGJhY2tpbmcgc3RyaW5n
cworICAgIC8vIHRoaXMgd2lsbCBwb3RlbnRpYWxseSByZWZlcmVuY2UuCisgICAgQ1NTVmFyaWFi
bGVEYXRhKGNvbnN0IFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mIHJlc29sdmVkVG9rZW5zLCBTdHJp
bmcgYmFja2luZ1N0cmluZykKKyAgICAgICAgOiBtX2JhY2tpbmdTdHJpbmcoYmFja2luZ1N0cmlu
ZykKKyAgICAgICAgLCBtX3Rva2VucyhyZXNvbHZlZFRva2VucykKKyAgICAgICAgLCBtX25lZWRz
VmFyaWFibGVSZXNvbHV0aW9uKGZhbHNlKQorICAgIHsgfQorCisgICAgdm9pZCBjb25zdW1lQW5k
VXBkYXRlVG9rZW5zKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmKTsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHVwZGF0ZVRva2Vucyhjb25zdCBDU1NQYXJzZXJU
b2tlblJhbmdlJik7CisgICAgCisgICAgYm9vbCBjaGVja1ZhcmlhYmxlc0ZvckN5Y2xlc1dpdGhS
YW5nZShDU1NQYXJzZXJUb2tlblJhbmdlLCBjb25zdCBSZW5kZXJTdHlsZSYsIEhhc2hTZXQ8QXRv
bWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgaW52YWxp
ZFByb3BlcnRpZXMpIGNvbnN0OworICAgIGJvb2wgcmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlKGNv
bnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYsIENTU1BhcnNlclRva2VuUmFuZ2Us
IFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OworICAg
IGJvb2wgcmVzb2x2ZVZhcmlhYmxlRmFsbGJhY2soY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVBy
b3BlcnR5U2V0JiwgQ1NTUGFyc2VyVG9rZW5SYW5nZSwgVmVjdG9yPENTU1BhcnNlclRva2VuPiYs
IGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAKICAgICBTdHJpbmcgbV9iYWNraW5nU3RyaW5n
OwogICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gbV90b2tlbnM7CisgICAgY29uc3QgYm9vbCBt
X25lZWRzVmFyaWFibGVSZXNvbHV0aW9uOwogCiAgICAgLy8gRklYTUUtTkVXUEFSU0VSOiBXZSB3
YW50IHRvIGNhY2hlIFN0eWxlUHJvcGVydGllcyBvbmNlIHdlIHN1cHBvcnQgQGFwcGx5LgogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmNwcApp
bmRleCA3N2E1MjNlNGQ3ZGRhZGYwMzBhMTI0MDVkZTdmYzJmY2M3YTExNGZjLi4zODk1N2U0MDMw
YzIzOGY0Zjc3NTUyY2YyOTNlNTExMGE3OTEzOTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuY3BwCkBAIC0zMCw5ICszMCw2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oIgog
Ci0jaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKLSNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCi0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6
OmN1c3RvbUNTU1RleHQoKSBjb25zdApAQCAtNDMsNzIgKzQwLDExIEBAIFN0cmluZyBDU1NWYXJp
YWJsZVJlZmVyZW5jZVZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKICAgICB9CiAgICAgcmV0
dXJuIG1fc3RyaW5nVmFsdWU7CiB9Ci0KLXN0YXRpYyBib29sIHJlc29sdmVUb2tlblJhbmdlKENT
U1BhcnNlclRva2VuUmFuZ2UsIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mLCBBcHBseUNhc2NhZGVk
UHJvcGVydHlTdGF0ZSYpOwotCi1zdGF0aWMgYm9vbCByZXNvbHZlVmFyaWFibGVGYWxsYmFjayhD
U1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXN1bHQs
IEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJiBzdGF0ZSkKLXsKLSAgICBpZiAocmFuZ2UuYXRF
bmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEFTU0VSVChyYW5nZS5wZWVrKCkudHlw
ZSgpID09IENvbW1hVG9rZW4pOwotICAgIHJhbmdlLmNvbnN1bWUoKTsKLSAgICByZXR1cm4gcmVz
b2x2ZVRva2VuUmFuZ2UocmFuZ2UsIHJlc3VsdCwgc3RhdGUpOwotfQotCi1zdGF0aWMgYm9vbCBy
ZXNvbHZlVmFyaWFibGVSZWZlcmVuY2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgVmVjdG9y
PENTU1BhcnNlclRva2VuPiYgcmVzdWx0LCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgc3Rh
dGUpCisgICAgCitib29sIENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OmNoZWNrVmFyaWFibGVz
Rm9yQ3ljbGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21p
Y1N0cmluZz4mIGludmFsaWRQcm9wZXJ0aWVzKSBjb25zdAogewotICAgIGF1dG8mIHJlZ2lzdGVy
ZWRQcm9wZXJ0aWVzID0gc3RhdGUuc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS5nZXRDU1NSZWdp
c3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQoKTsKLSAgICBhdXRvJiBzdHlsZSA9ICpzdGF0ZS5zdHls
ZVJlc29sdmVyLT5zdHlsZSgpOwotCi0gICAgcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKLSAg
ICBBU1NFUlQocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBJZGVudFRva2VuKTsKLSAgICBTdHJpbmcg
dmFyaWFibGVOYW1lID0gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgp
LnRvU3RyaW5nKCk7Ci0gICAgQVNTRVJUKHJhbmdlLmF0RW5kKCkgfHwgKHJhbmdlLnBlZWsoKS50
eXBlKCkgPT0gQ29tbWFUb2tlbikpOwotCi0gICAgLy8gQXBwbHkgdGhpcyB2YXJpYWJsZSBmaXJz
dCwgaW4gY2FzZSBpdCBpcyBzdGlsbCB1bnJlc29sdmVkCi0gICAgc3RhdGUuc3R5bGVSZXNvbHZl
ci0+YXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KHZhcmlhYmxlTmFtZSwgc3RhdGUpOwotCi0g
ICAgLy8gQXBwbHkgZmFsbGJhY2sgdG8gZGV0ZWN0IGN5Y2xlcwotICAgIFZlY3RvcjxDU1NQYXJz
ZXJUb2tlbj4gZmFsbGJhY2tSZXN1bHQ7Ci0gICAgcmVzb2x2ZVZhcmlhYmxlRmFsbGJhY2soQ1NT
UGFyc2VyVG9rZW5SYW5nZShyYW5nZSksIGZhbGxiYWNrUmVzdWx0LCBzdGF0ZSk7Ci0KLSAgICBh
dXRvKiBwcm9wZXJ0eSA9IHN0eWxlLmdldEN1c3RvbVByb3BlcnR5KHZhcmlhYmxlTmFtZSk7Ci0K
LSAgICBpZiAoIXByb3BlcnR5IHx8IHByb3BlcnR5LT5pc1Vuc2V0KCkgfHwgcHJvcGVydHktPmlz
SW52YWxpZCgpKSB7Ci0gICAgICAgIGF1dG8qIHJlZ2lzdGVyZWQgPSByZWdpc3RlcmVkUHJvcGVy
dGllcy5nZXQodmFyaWFibGVOYW1lKTsKLSAgICAgICAgaWYgKHJlZ2lzdGVyZWQgJiYgcmVnaXN0
ZXJlZC0+aW5pdGlhbFZhbHVlKCkpCi0gICAgICAgICAgICBwcm9wZXJ0eSA9IHJlZ2lzdGVyZWQt
PmluaXRpYWxWYWx1ZSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gcmVzb2x2
ZVZhcmlhYmxlRmFsbGJhY2socmFuZ2UsIHJlc3VsdCwgc3RhdGUpOwotICAgIH0KLQotICAgIEFT
U0VSVChwcm9wZXJ0eS0+aXNSZXNvbHZlZCgpKTsKLSAgICByZXN1bHQuYXBwZW5kVmVjdG9yKHBy
b3BlcnR5LT50b2tlbnMoKSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wg
cmVzb2x2ZVRva2VuUmFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgVmVjdG9yPENTU1Bh
cnNlclRva2VuPiYgcmVzdWx0LCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgc3RhdGUpCi17
Ci0gICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKLSAgICB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpIHsK
LSAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVWYXIgfHwg
cmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUVudikKLSAgICAgICAgICAgIHN1
Y2Nlc3MgJj0gcmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlKHJhbmdlLmNvbnN1bWVCbG9jaygpLCBy
ZXN1bHQsIHN0YXRlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChy
YW5nZS5jb25zdW1lKCkpOwotICAgIH0KLSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotUmVmUHRy
PENTU1ZhcmlhYmxlRGF0YT4gQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZTo6cmVzb2x2ZVZhcmlh
YmxlUmVmZXJlbmNlcyhBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgc3RhdGUpIGNvbnN0Ci17
Ci0gICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiByZXNvbHZlZFRva2VuczsKLSAgICBDU1NQYXJz
ZXJUb2tlblJhbmdlIHJhbmdlID0gbV9kYXRhLT50b2tlblJhbmdlKCk7Ci0KLSAgICBpZiAoIXJl
c29sdmVUb2tlblJhbmdlKHJhbmdlLCByZXNvbHZlZFRva2Vucywgc3RhdGUpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZShyZXNv
bHZlZFRva2Vucyk7CisgICAgQVNTRVJUKG1fZGF0YSk7CisgICAgcmV0dXJuIG1fZGF0YS0+Y2hl
Y2tWYXJpYWJsZXNGb3JDeWNsZXMobmFtZSwgc3R5bGUsIHNlZW5Qcm9wZXJ0aWVzLCBpbnZhbGlk
UHJvcGVydGllcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oCmluZGV4IGQ3MGUzMjdjMTA2ZGRh
YWU4MjNmZjk5YmZhMmE5Y2JiYThiNjA2ODYuLjIyODk2NGVkNzY5NDQwNTkzOTVjMTBjNjRhZWYy
YzAxMDZkODFmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJl
ZmVyZW5jZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlUmVmZXJl
bmNlVmFsdWUuaApAQCAtMjksMzAgKzI5LDI4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiQ1NTUGFyc2VyVG9rZW4uaCIKLSNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCiAj
aW5jbHVkZSAiQ1NTVmFsdWUuaCIKICNpbmNsdWRlICJDU1NWYXJpYWJsZURhdGEuaCIKLSNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3QgQXBw
bHlDYXNjYWRlZFByb3BlcnR5U3RhdGU7Ci1jbGFzcyBDU1NQYXJzZXJUb2tlblJhbmdlOwotCiBj
bGFzcyBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+IGNyZWF0ZShjb25z
dCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKKyAgICBzdGF0aWMgUmVmPENTU1ZhcmlhYmxl
UmVmZXJlbmNlVmFsdWU+IGNyZWF0ZShSZWY8Q1NTVmFyaWFibGVEYXRhPiYmIGRhdGEpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVl
KFdURk1vdmUoZGF0YSkpKTsKKyAgICB9CisKKyAgICBDU1NWYXJpYWJsZURhdGEqIHZhcmlhYmxl
RGF0YVZhbHVlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENT
U1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUoQ1NTVmFyaWFibGVEYXRhOjpjcmVhdGUocmFuZ2UpKSk7
CisgICAgICAgIHJldHVybiBtX2RhdGEuZ2V0KCk7CiAgICAgfQogCi0gICAgYm9vbCBlcXVhbHMo
Y29uc3QgQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YS5nZXQoKSA9PSBvdGhlci5tX2RhdGEuZ2V0KCk7IH0KKyAgICBib29sIGVxdWFscyhjb25z
dCBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9kYXRh
ID09IG90aGVyLm1fZGF0YTsgfQogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAK
LSAgICBSZWZQdHI8Q1NTVmFyaWFibGVEYXRhPiByZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKEFw
cGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJikgY29uc3Q7CisgICAgYm9vbCBjaGVja1ZhcmlhYmxl
c0ZvckN5Y2xlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFJlbmRlclN0eWxlJiwg
SGFzaFNldDxBdG9taWNTdHJpbmc+JiBzZWVuUHJvcGVydGllcywgSGFzaFNldDxBdG9taWNTdHJp
bmc+JiBpbnZhbGlkUHJvcGVydGllcykgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgQ1NTVmFyaWFi
bGVSZWZlcmVuY2VWYWx1ZShSZWY8Q1NTVmFyaWFibGVEYXRhPiYmIGRhdGEpCkBAIC02MSw3ICs1
OSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFJlZjxDU1NWYXJpYWJsZURhdGE+
IG1fZGF0YTsKKyAgICBSZWZQdHI8Q1NTVmFyaWFibGVEYXRhPiBtX2RhdGE7CiAgICAgbXV0YWJs
ZSBTdHJpbmcgbV9zdHJpbmdWYWx1ZTsKICAgICBtdXRhYmxlIGJvb2wgbV9zZXJpYWxpemVkIHsg
ZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0
ZXJDdXN0b21Qcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJD
dXN0b21Qcm9wZXJ0eS5jcHAKaW5kZXggYjhlZjZhOTUyMTNkZWEyNTA3ZDVkZjc1MTFmYTkxM2Y5
MjgyMjlhOC4uMzczMThkYTY1OThmZDExNTkzMDY5Y2EyMjE1NWZkYjY0YjU0ZDdhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNw
cApAQCAtMjgsMTIgKzI4LDEyIEBACiAKICNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgotI2luY2x1ZGUgIkNTU1Byb3BlcnR5
UGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5LmgiCiAjaW5j
bHVkZSAiQ1NTVG9rZW5pemVyLmgiCiAjaW5jbHVkZSAiRE9NQ1NTTmFtZXNwYWNlLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCIKKyNp
bmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQyLDMzICs0MiwyOCBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5OjpyZWdpc3RlclByb3BlcnR5KERvY3Vt
ZW50JiBkb2N1bQogewogICAgIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBpbml0aWFs
VmFsdWU7CiAgICAgaWYgKCFkZXNjcmlwdG9yLmluaXRpYWxWYWx1ZS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgQ1NTVG9rZW5pemVyIHRva2VuaXplcihkZXNjcmlwdG9yLmluaXRpYWxWYWx1ZSk7Cisg
ICAgICAgIGluaXRpYWxWYWx1ZSA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVdpdGhW
YXJpYWJsZURhdGEoZGVzY3JpcHRvci5uYW1lLCBDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZShDU1NQ
YXJzZXJUb2tlblJhbmdlKFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4oKSksIGZhbHNlKSk7CisgICAg
ICAgIENTU1BhcnNlciBwYXJzZXIoZG9jdW1lbnQpOwogICAgICAgICBTdHlsZVJlc29sdmVyIHN0
eWxlUmVzb2x2ZXIoZG9jdW1lbnQpOwogCi0gICAgICAgIC8vIFdlIG5lZWQgdG8gaW5pdGlhbGl6
ZSB0aGlzIHNvIHRoYXQgd2UgY2FuIHN1Y2Nlc3NmdWxseSBwYXJzZSBjb21wdXRhdGlvbmFsbHkg
ZGVwZW5kZW50IHZhbHVlcyAobGlrZSBlbSB1bml0cykuCi0gICAgICAgIC8vIFdlIGRvbid0IGFj
dHVhbGx5IG5lZWQgdGhlIHZhbHVlcyB0byBiZSBhY2N1cmF0ZSwgc2luY2UgdGhleSB3aWxsIGJl
IHJlamVjdGVkIGxhdGVyIGFueXdheQotICAgICAgICBzdHlsZVJlc29sdmVyLnN0YXRlKCkuc2V0
U3R5bGUoc3R5bGVSZXNvbHZlci5kZWZhdWx0U3R5bGVGb3JFbGVtZW50KCkpOwotICAgICAgICBz
dHlsZVJlc29sdmVyLnVwZGF0ZUZvbnQoKTsKLQotICAgICAgICBpbml0aWFsVmFsdWUgPSBDU1NQ
cm9wZXJ0eVBhcnNlcjo6cGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoZGVzY3JpcHRvci5u
YW1lLCBkZXNjcmlwdG9yLnN5bnRheCwgdG9rZW5pemVyLnRva2VuUmFuZ2UoKSwgc3R5bGVSZXNv
bHZlciwgc3RyaWN0Q1NTUGFyc2VyQ29udGV4dCgpKTsKLQotICAgICAgICBpZiAoIWluaXRpYWxW
YWx1ZSB8fCAhaW5pdGlhbFZhbHVlLT5pc1Jlc29sdmVkKCkpCisgICAgICAgIGF1dG8gcHJpbWl0
aXZlVmFsID0gcGFyc2VyLnBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlDdXN0b20sIGRlc2Ny
aXB0b3IuaW5pdGlhbFZhbHVlKTsKKyAgICAgICAgaWYgKCFwcmltaXRpdmVWYWwgfHwgIXByaW1p
dGl2ZVZhbC0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFN5bnRheEVycm9yLCAiVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2Ug
Zm9yIHRoZSBnaXZlbiBzeW50YXguIiB9OwogCiAgICAgICAgIEhhc2hTZXQ8Q1NTUHJvcGVydHlJ
RD4gZGVwZW5kZW5jaWVzOwotICAgICAgICBpbml0aWFsVmFsdWUtPmNvbGxlY3REaXJlY3RDb21w
dXRhdGlvbmFsRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcyk7Ci0gICAgICAgIGluaXRpYWxWYWx1
ZS0+Y29sbGVjdERpcmVjdFJvb3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2ll
cyk7CisgICAgICAgIHByaW1pdGl2ZVZhbC0+Y29sbGVjdERpcmVjdENvbXB1dGF0aW9uYWxEZXBl
bmRlbmNpZXMoZGVwZW5kZW5jaWVzKTsKKyAgICAgICAgcHJpbWl0aXZlVmFsLT5jb2xsZWN0RGly
ZWN0Um9vdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMoZGVwZW5kZW5jaWVzKTsKIAogICAgICAg
ICBpZiAoIWRlcGVuZGVuY2llcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgU3ludGF4RXJyb3IsICJUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBtdXN0IGJlIGNvbXB1
dGF0aW9uYWxseSBpbmRlcGVuZGVudC4iIH07CisKKyAgICAgICAgaW5pdGlhbFZhbHVlLT5zZXRS
ZXNvbHZlZFR5cGVkVmFsdWUoU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKHN0
eWxlUmVzb2x2ZXIsICpwcmltaXRpdmVWYWwpKTsKICAgICB9CiAKLSAgICBDU1NSZWdpc3RlcmVk
Q3VzdG9tUHJvcGVydHkgcHJvcGVydHkgeyBkZXNjcmlwdG9yLm5hbWUsIGRlc2NyaXB0b3Iuc3lu
dGF4LCBkZXNjcmlwdG9yLmluaGVyaXRzLCBXVEZNb3ZlKGluaXRpYWxWYWx1ZSkgfTsKKyAgICBD
U1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkgcHJvcGVydHkgeyBkZXNjcmlwdG9yLm5hbWUsIGRl
c2NyaXB0b3IuaW5oZXJpdHMsIFdURk1vdmUoaW5pdGlhbFZhbHVlKSB9OwogICAgIGlmICghZG9j
dW1lbnQucmVnaXN0ZXJDU1NQcm9wZXJ0eShXVEZNb3ZlKHByb3BlcnR5KSkpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IsICJUaGlzIHByb3BlcnR5
IGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZC4iIH07CiAKLSAgICBkb2N1bWVudC5zdHlsZVNj
b3BlKCkuZGlkQ2hhbmdlU3R5bGVTaGVldEVudmlyb25tZW50KCk7Ci0KICAgICByZXR1cm4geyB9
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHls
ZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxl
RGVjbGFyYXRpb24uY3BwCmluZGV4IDM4M2FjOGVlNGY2NmU1MTlhNTc5YzliNmRiZDQ4OGQxZmRj
ZGM5ZGEuLmUyOGIzNGMwZDkxZTc3ODVhNDdhNzhjOGJjMTMwOTA1NmZmYTExOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24u
Y3BwCkBAIC0yMjYsMTYgKzIyNiw2IEBAIGJvb2wgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uOjppc1Byb3BlcnR5SW1wbGljaXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hCiBFeGNlcHRp
b25Pcjx2b2lkPiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KGNv
bnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJp
bmcmIHByaW9yaXR5KQogewogICAgIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlv
blNjb3BlKHRoaXMpOwotCi0gICAgaWYgKCF3aWxsTXV0YXRlKCkpCi0gICAgICAgIHJldHVybiB7
IH07Ci0KLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBudWxscHRyOwotCi0gICAgaWYgKHBhcmVu
dEVsZW1lbnQoKSkKLSAgICAgICAgZG9jdW1lbnQgPSAmcGFyZW50RWxlbWVudCgpLT5kb2N1bWVu
dCgpOwotICAgIGVsc2UKLSAgICAgICAgZG9jdW1lbnQgPSBwYXJlbnRTdHlsZVNoZWV0KCktPm93
bmVyRG9jdW1lbnQoKTsKICAgICAKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQ
cm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1lKHBy
b3BlcnR5TmFtZSkpCkBAIC0yNDMsMTMgKzIzMywxNiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJv
cAogICAgIGlmICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAorICAgIGlmICgh
d2lsbE11dGF0ZSgpKQorICAgICAgICByZXR1cm4geyB9OworCiAgICAgYm9vbCBpbXBvcnRhbnQg
PSBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHByaW9yaXR5LCAiaW1wb3J0YW50Iik7CiAgICAgaWYg
KCFpbXBvcnRhbnQgJiYgIXByaW9yaXR5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsK
IAogICAgIGJvb2wgY2hhbmdlZDsKICAgICBpZiAocHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eUN1
c3RvbSkKLSAgICAgICAgY2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldEN1c3RvbVByb3BlcnR5
KGRvY3VtZW50LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlckNvbnRl
eHQoKSk7CisgICAgICAgIGNoYW5nZWQgPSBtX3Byb3BlcnR5U2V0LT5zZXRDdXN0b21Qcm9wZXJ0
eShwcm9wZXJ0eU5hbWUsIHZhbHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlckNvbnRleHQoKSk7CiAg
ICAgZWxzZQogICAgICAgICBjaGFuZ2VkID0gbV9wcm9wZXJ0eVNldC0+c2V0UHJvcGVydHkocHJv
cGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFyc2VyQ29udGV4dCgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IDIwMDBmZGMxZjU1ZTIxYzY2ODcx
ZmI5MGExZDU3ZmJmNGM3ZjdhMjUuLjBjNDdkYTIyZWZlYTEwYmE3ZmFkOTEyODNhZDMxYWYzNjkx
NzRkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAgLTE4Nzks
MTMgKzE4NzksMTMgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
U3Ryb2tlQ29sb3IoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHYKIAogaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxDdXN0b21Qcm9wZXJ0eShTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkqIHJlZ2lz
dGVyZWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKLSAgICBpZiAocmVnaXN0ZXJlZCAm
JiByZWdpc3RlcmVkLT5pbml0aWFsVmFsdWUoKSkgeworICAgIGlmIChyZWdpc3RlcmVkKSB7CiAg
ICAgICAgIGF1dG8gaW5pdGlhbFZhbHVlID0gcmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlQ29weSgp
OwogICAgICAgICBhcHBseVZhbHVlQ3VzdG9tUHJvcGVydHkoc3R5bGVSZXNvbHZlciwgcmVnaXN0
ZXJlZCwgKmluaXRpYWxWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRv
IGludmFsaWQgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVVbnJlc29sdmVkKG5hbWUs
IENTU1ZhbHVlSW52YWxpZCk7CisgICAgYXV0byBpbnZhbGlkID0gQ1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZTo6Y3JlYXRlV2l0aElEKG5hbWUsIENTU1ZhbHVlSW52YWxpZCk7CiAgICAgYXBwbHlWYWx1
ZUN1c3RvbVByb3BlcnR5KHN0eWxlUmVzb2x2ZXIsIHJlZ2lzdGVyZWQsIGludmFsaWQuZ2V0KCkp
OwogfQogCkBAIC0xOTAwLDEzICsxOTAwLDEyIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlJbmhlcml0Q3VzdG9tUHJvcGVydHkoU3R5bGVSZXNvbHZlciYgc3R5bGVSCiAK
IGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUN1c3RvbVByb3BlcnR5
KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Q
cm9wZXJ0eSogcmVnaXN0ZXJlZCwgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSYgdmFsdWUpCiB7Ci0g
ICAgQVNTRVJUKHZhbHVlLmlzUmVzb2x2ZWQoKSk7CiAgICAgY29uc3QgYXV0byYgbmFtZSA9IHZh
bHVlLm5hbWUoKTsKIAogICAgIGlmICghcmVnaXN0ZXJlZCB8fCByZWdpc3RlcmVkLT5pbmhlcml0
cykKLSAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRJbmhlcml0ZWRDdXN0b21Qcm9w
ZXJ0eVZhbHVlKG5hbWUsIG1ha2VSZWYodmFsdWUpKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXRJbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIG1ha2VSZWYodmFs
dWUpLCByZWdpc3RlcmVkKTsKICAgICBlbHNlCi0gICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUo
KS0+c2V0Tm9uSW5oZXJpdGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBtYWtlUmVmKHZhbHVl
KSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Tm9uSW5oZXJpdGVkQ3VzdG9t
UHJvcGVydHlWYWx1ZShuYW1lLCBtYWtlUmVmKHZhbHVlKSwgcmVnaXN0ZXJlZCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVByb3BlcnRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAK
aW5kZXggNWFjYjQ4ZjkxMWEzNzE3OGZhZThhODBlMTc4M2U2OWI3NTg4Y2I1OC4uNWQ3OGY4YzE3
ZmUxZGVmMWIyMmZmZGU0NGUxNTJkYjRmNjViMDdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UHJvcGVydGllcy5jcHAKQEAgLTI4LDggKzI4LDYgQEAKICNpbmNsdWRlICJDU1NEZWZlcnJlZFBh
cnNlci5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1BlbmRpbmdTdWJz
dGl0dXRpb25WYWx1ZS5oIgotI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyLmgiCi0jaW5jbHVk
ZSAiQ1NTVG9rZW5pemVyLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1
ZGUgIkNTU1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgpAQCAtNzgxLDcg
Kzc3OSw3IEBAIGJvb2wgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6c2V0UHJvcGVydHkoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIHNldFByb3BlcnR5
KHByb3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIHBhcnNlckNvbnRleHQpOwogfQogCi1ib29s
IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldEN1c3RvbVByb3BlcnR5KGNvbnN0IERvY3VtZW50
KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFs
dWUsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJDb250ZXh0IHBhcnNlckNvbnRleHQpCitib29s
IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYg
cHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwgQ1NTUGFy
c2VyQ29udGV4dCBwYXJzZXJDb250ZXh0KQogewogICAgIC8vIFNldHRpbmcgdGhlIHZhbHVlIHRv
IGFuIGVtcHR5IHN0cmluZyBqdXN0IHJlbW92ZXMgdGhlIHByb3BlcnR5IGluIGJvdGggSUUgYW5k
IEdlY2tvLgogICAgIC8vIFNldHRpbmcgaXQgdG8gbnVsbCBzZWVtcyB0byBwcm9kdWNlIGxlc3Mg
Y29uc2lzdGVudCByZXN1bHRzLCBidXQgd2UgdHJlYXQgaXQganVzdCB0aGUgc2FtZS4KQEAgLTc4
OSwxNyArNzg3LDYgQEAgYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpzZXRDdXN0b21Qcm9w
ZXJ0eShjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFMKICAgICAgICAgcmV0dXJuIHJl
bW92ZUN1c3RvbVByb3BlcnR5KHByb3BlcnR5TmFtZSk7CiAKICAgICBwYXJzZXJDb250ZXh0Lm1v
ZGUgPSBjc3NQYXJzZXJNb2RlKCk7Ci0KLSAgICBTdHJpbmcgc3ludGF4ID0gIioiOwotICAgIGF1
dG8qIHJlZ2lzdGVyZWQgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5nZXRDU1NSZWdpc3RlcmVkQ3Vz
dG9tUHJvcGVydHlTZXQoKS5nZXQocHJvcGVydHlOYW1lKSA6IG51bGxwdHI7Ci0KLSAgICBpZiAo
cmVnaXN0ZXJlZCkKLSAgICAgICAgc3ludGF4ID0gcmVnaXN0ZXJlZC0+c3ludGF4OwotCi0gICAg
Q1NTVG9rZW5pemVyIHRva2VuaXplcih2YWx1ZSk7Ci0gICAgaWYgKCFDU1NQcm9wZXJ0eVBhcnNl
cjo6Y2FuUGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoc3ludGF4LCB0b2tlbml6ZXIudG9r
ZW5SYW5nZSgpLCBwYXJzZXJDb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAg
Ly8gV2hlbiByZXBsYWNpbmcgYW4gZXhpc3RpbmcgcHJvcGVydHkgdmFsdWUsIHRoaXMgbW92ZXMg
dGhlIHByb3BlcnR5IHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuCiAgICAgLy8gRmlyZWZveCBwcmVz
ZXJ2ZXMgdGhlIHBvc2l0aW9uLCBhbmQgTVNJRSBtb3ZlcyB0aGUgcHJvcGVydHkgdG8gdGhlIGJl
Z2lubmluZy4KICAgICByZXR1cm4gQ1NTUGFyc2VyOjpwYXJzZUN1c3RvbVByb3BlcnR5VmFsdWUo
KnRoaXMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGltcG9ydGFudCwgcGFyc2VyQ29udGV4dCkgPT0g
Q1NTUGFyc2VyOjpQYXJzZVJlc3VsdDo6Q2hhbmdlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnRpZXMuaAppbmRleCA4MzlhNTQ0M2Y5MTc4YTIyZTMwYjZmMDg3YjJjMTk5ODY0Y2YzNThjLi4z
ZjRiNjVhYjcyODhkZDBmM2IxNjFiYTQxYmQ1MDVkZjJlMzc1NTBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydGllcy5oCkBAIC0yNDksNyArMjQ5LDcgQEAgcHVibGljOgogICAgIFZlY3Rv
cjxDU1NQcm9wZXJ0eSwgND4gbV9wcm9wZXJ0eVZlY3RvcjsKIAogICAgIC8vIE1ldGhvZHMgZm9y
IHF1ZXJ5aW5nIGFuZCBhbHRlcmluZyBDU1MgY3VzdG9tIHByb3BlcnRpZXMuCi0gICAgYm9vbCBz
ZXRDdXN0b21Qcm9wZXJ0eShjb25zdCBEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwgQ1NTUGFyc2VyQ29udGV4
dCk7CisgICAgYm9vbCBzZXRDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIENTU1BhcnNlckNvbnRleHQp
OwogICAgIGJvb2wgcmVtb3ZlQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5h
bWUsIFN0cmluZyogcmV0dXJuVGV4dCA9IG51bGxwdHIpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDIwZjViMmUzMGMwMWZhM2Y3NDNlZDA3NTUzMGEz
OGIwNWZlZDUwODAuLmQ0ZTA2YmNjZjMzNjBkMWNhNDBjMDcyODAyZjQ1MDBjNTlmZGEwNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCBpbmxp
bmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6dXBkYXRlQ29udmVyc2lvbkRhdGEoKQogICAg
IG1fY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSA9IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEo
bV9zdHlsZS5nZXQoKSwgbV9yb290RWxlbWVudFN0eWxlLCBtX2VsZW1lbnQgPyBtX2VsZW1lbnQt
PmRvY3VtZW50KCkucmVuZGVyVmlldygpIDogbnVsbHB0cik7CiB9CiAKLXZvaWQgU3R5bGVSZXNv
bHZlcjo6U3RhdGU6OnNldFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUp
CitpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6c2V0U3R5bGUoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKIHsKICAgICBtX3N0eWxlID0gV1RGTW92ZShzdHlsZSk7
CiAgICAgdXBkYXRlQ29udmVyc2lvbkRhdGEoKTsKQEAgLTQyOSwyMSArNDI5LDIxIEBAIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JLZXlmcmFtZShj
b25zdCBSZW5kZXJTdHlsZSoKICAgICBDYXNjYWRlZFByb3BlcnRpZXMgY2FzY2FkZShkaXJlY3Rp
b24sIHdyaXRpbmdNb2RlKTsKICAgICBjYXNjYWRlLmFkZE5vcm1hbE1hdGNoZXMocmVzdWx0LCAw
LCByZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMoKS5zaXplKCkgLSAxKTsKIAotICAgIEFwcGx5Q2Fz
Y2FkZWRQcm9wZXJ0eVN0YXRlIGFwcGx5U3RhdGUgeyB0aGlzLCAmY2FzY2FkZSwgJnJlc3VsdCB9
OwotICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGZpcnN0Q1NTUHJvcGVydHksIGxhc3RIaWdo
UHJpb3JpdHlQcm9wZXJ0eSwgYXBwbHlTdGF0ZSk7CisgICAgLy8gUmVzb2x2ZSBjdXN0b20gcHJv
cGVydGllcyBmaXJzdC4KKyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBDU1NQ
cm9wZXJ0eUN1c3RvbSwgQ1NTUHJvcGVydHlDdXN0b20sICZyZXN1bHQpOworCisgICAgYXBwbHlD
YXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlv
cml0eVByb3BlcnR5LCAmcmVzdWx0KTsKIAogICAgIC8vIElmIG91ciBmb250IGdvdCBkaXJ0aWVk
LCB1cGRhdGUgaXQgbm93LgogICAgIHVwZGF0ZUZvbnQoKTsKIAotICAgIC8vIE5vdyByZXNvbHZl
IHJlbWFpbmluZyBjdXN0b20gcHJvcGVydGllcyBhbmQgdGhlIHJlc3QsIGluIGFueSBvcmRlcgot
ICAgIGZvciAoYXV0byBpdCA9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmJlZ2luKCk7IGl0
ICE9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmVuZCgpOyArK2l0KQotICAgICAgICBhcHBs
eUNhc2NhZGVkQ3VzdG9tUHJvcGVydHkoaXQtPmtleSwgYXBwbHlTdGF0ZSk7Ci0gICAgYXBwbHlD
YXNjYWRlZFByb3BlcnRpZXMoZmlyc3RMb3dQcmlvcml0eVByb3BlcnR5LCBsYXN0Q1NTUHJvcGVy
dHksIGFwcGx5U3RhdGUpOworICAgIC8vIE5vdyBkbyByZXN0IG9mIHRoZSBwcm9wZXJ0aWVzLgor
ICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0TG93UHJpb3JpdHlQcm9w
ZXJ0eSwgbGFzdENTU1Byb3BlcnR5LCAmcmVzdWx0KTsKIAogICAgIC8vIElmIG91ciBmb250IGdv
dCBkaXJ0aWVkIGJ5IG9uZSBvZiB0aGUgbm9uLWVzc2VudGlhbCBmb250IHByb3BzLCB1cGRhdGUg
aXQgYSBzZWNvbmQgdGltZS4KICAgICB1cGRhdGVGb250KCk7CiAKLSAgICBjYXNjYWRlLmFwcGx5
RGVmZXJyZWRQcm9wZXJ0aWVzKCp0aGlzLCBhcHBseVN0YXRlKTsKKyAgICBjYXNjYWRlLmFwcGx5
RGVmZXJyZWRQcm9wZXJ0aWVzKCp0aGlzLCAmcmVzdWx0KTsKIAogICAgIGFkanVzdFJlbmRlclN0
eWxlKCpzdGF0ZS5zdHlsZSgpLCAqc3RhdGUucGFyZW50U3R5bGUoKSwgbnVsbHB0ciwgbnVsbHB0
cik7CiAKQEAgLTYzNSwxOCArNjM1LDE3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
U3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JQYWdlKGludCBwYWdlSW5kZXgpCiAgICAgQ2FzY2FkZWRQ
cm9wZXJ0aWVzIGNhc2NhZGUoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSk7CiAgICAgY2FzY2FkZS5h
ZGROb3JtYWxNYXRjaGVzKHJlc3VsdCwgMCwgcmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzKCkuc2l6
ZSgpIC0gMSk7CiAKLSAgICBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSBhcHBseVN0YXRlIHsg
dGhpcywgJmNhc2NhZGUsICZyZXN1bHQgfTsKLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhm
aXJzdENTU1Byb3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHksIGFwcGx5U3RhdGUpOwor
ICAgIC8vIFJlc29sdmUgY3VzdG9tIHByb3BlcnRpZXMgZmlyc3QuCisgICAgYXBwbHlDYXNjYWRl
ZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlDdXN0b20sIENTU1Byb3BlcnR5Q3VzdG9t
LCAmcmVzdWx0KTsKKworICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0
Q1NTUHJvcGVydHksIGxhc3RIaWdoUHJpb3JpdHlQcm9wZXJ0eSwgJnJlc3VsdCk7CiAKICAgICAv
LyBJZiBvdXIgZm9udCBnb3QgZGlydGllZCwgdXBkYXRlIGl0IG5vdy4KICAgICB1cGRhdGVGb250
KCk7CiAKLSAgICAvLyBOb3cgcmVzb2x2ZSByZW1haW5pbmcgY3VzdG9tIHByb3BlcnRpZXMgYW5k
IHRoZSByZXN0LCBpbiBhbnkgb3JkZXIKLSAgICBmb3IgKGF1dG8gaXQgPSBjYXNjYWRlLmN1c3Rv
bVByb3BlcnRpZXMoKS5iZWdpbigpOyBpdCAhPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5l
bmQoKTsgKytpdCkKLSAgICAgICAgYXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KGl0LT5rZXks
IGFwcGx5U3RhdGUpOwotICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGZpcnN0TG93UHJpb3Jp
dHlQcm9wZXJ0eSwgbGFzdENTU1Byb3BlcnR5LCBhcHBseVN0YXRlKTsKKyAgICBhcHBseUNhc2Nh
ZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQ
cm9wZXJ0eSwgJnJlc3VsdCk7CiAKLSAgICBjYXNjYWRlLmFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVz
KCp0aGlzLCBhcHBseVN0YXRlKTsKKyAgICBjYXNjYWRlLmFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVz
KCp0aGlzLCAmcmVzdWx0KTsKIAogICAgIC8vIE5vdyByZXR1cm4gdGhlIHN0eWxlLgogICAgIHJl
dHVybiBtX3N0YXRlLnRha2VTdHlsZSgpOwpAQCAtMTM3MiwyMCArMTM3MSwxNyBAQCB2b2lkIFN0
eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmIG1h
dGNoUmVzdWx0LCBjb25zdAogICAgICAgICBjYXNjYWRlLmFkZE5vcm1hbE1hdGNoZXMobWF0Y2hS
ZXN1bHQsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2Vz
Lmxhc3RVQVJ1bGUsIGFwcGx5SW5oZXJpdGVkT25seSk7CiAgICAgICAgIGNhc2NhZGUuYWRkSW1w
b3J0YW50TWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxl
LCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgYXBwbHlJbmhlcml0ZWRPbmx5KTsKIAot
ICAgICAgICBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSBhcHBseVN0YXRlIHsgdGhpcywgJmNh
c2NhZGUsICZtYXRjaFJlc3VsdCB9OwotCi0gICAgICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVz
KENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3Np
dGlvbiwgYXBwbHlTdGF0ZSk7CisgICAgICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2Nh
ZGUsIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQ
b3NpdGlvbiwgJm1hdGNoUmVzdWx0KTsKICAgICAgICAgYWRqdXN0U3R5bGVGb3JJbnRlckNoYXJh
Y3RlclJ1YnkoKTsKIAotICAgICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhmaXJzdENTU1By
b3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHksIGFwcGx5U3RhdGUpOworICAgICAgICAv
LyBSZXNvbHZlIGN1c3RvbSB2YXJpYWJsZXMgZmlyc3QuCisgICAgICAgIGFwcGx5Q2FzY2FkZWRQ
cm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBDU1NQcm9wZXJ0eUN1c3RvbSwg
Jm1hdGNoUmVzdWx0KTsKIAotICAgICAgICAvLyBJZiBvdXIgZm9udCBnb3QgZGlydGllZCwgdXBk
YXRlIGl0IG5vdy4KLSAgICAgICAgdXBkYXRlRm9udCgpOworICAgICAgICAvLyBTdGFydCBieSBh
cHBseWluZyBwcm9wZXJ0aWVzIHRoYXQgb3RoZXIgcHJvcGVydGllcyBtYXkgZGVwZW5kIG9uLgor
ICAgICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5
LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHksICZtYXRjaFJlc3VsdCk7CiAKLSAgICAgICAgLy8g
Tm93IHJlc29sdmUgcmVtYWluaW5nIGN1c3RvbSBwcm9wZXJ0aWVzIGFuZCB0aGUgcmVzdCwgaW4g
YW55IG9yZGVyCi0gICAgICAgIGZvciAoYXV0byBpdCA9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGll
cygpLmJlZ2luKCk7IGl0ICE9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmVuZCgpOyArK2l0
KQotICAgICAgICAgICAgYXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KGl0LT5rZXksIGFwcGx5
U3RhdGUpOwotICAgICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhmaXJzdExvd1ByaW9yaXR5
UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwgYXBwbHlTdGF0ZSk7CisgICAgICAgIHVwZGF0ZUZv
bnQoKTsKKyAgICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RMb3dQ
cmlvcml0eVByb3BlcnR5LCBsYXN0Q1NTUHJvcGVydHksICZtYXRjaFJlc3VsdCk7CiAKICAgICAg
ICAgc3RhdGUuY2FjaGVCb3JkZXJBbmRCYWNrZ3JvdW5kKCk7CiAgICAgfQpAQCAtMTM5NiwxMyAr
MTM5MiwxNiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoY29u
c3QgTWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0LCBjb25zdAogICAgIGNhc2NhZGUuYWRkSW1wb3J0
YW50TWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VXNlclJ1bGUs
IG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VXNlclJ1bGUsIGFwcGx5SW5oZXJpdGVkT25seSk7CiAg
ICAgY2FzY2FkZS5hZGRJbXBvcnRhbnRNYXRjaGVzKG1hdGNoUmVzdWx0LCBtYXRjaFJlc3VsdC5y
YW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxlLCBhcHBseUlu
aGVyaXRlZE9ubHkpOwogCisgICAgLy8gUmVzb2x2ZSBjdXN0b20gcHJvcGVydGllcyBmaXJzdC4K
KyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eUN1c3RvbSwg
Q1NTUHJvcGVydHlDdXN0b20sICZtYXRjaFJlc3VsdCk7CiAKLSAgICBBcHBseUNhc2NhZGVkUHJv
cGVydHlTdGF0ZSBhcHBseVN0YXRlIHsgdGhpcywgJmNhc2NhZGUsICZtYXRjaFJlc3VsdCB9Owor
ICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5V2Via2l0UnVi
eVBvc2l0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgJm1hdGNoUmVzdWx0KTsK
IAotICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0
aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgYXBwbHlTdGF0ZSk7CisgICAgLy8g
QWRqdXN0IHRoZSBmb250IHNpemUgdG8gYmUgc21hbGxlciBpZiBydWJ5LXBvc2l0aW9uIGlzIGlu
dGVyLWNoYXJhY3Rlci4KICAgICBhZGp1c3RTdHlsZUZvckludGVyQ2hhcmFjdGVyUnVieSgpOwog
Ci0gICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoZmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQ
cmlvcml0eVByb3BlcnR5LCBhcHBseVN0YXRlKTsKKyAgICAvLyBTdGFydCBieSBhcHBseWluZyBw
cm9wZXJ0aWVzIHRoYXQgb3RoZXIgcHJvcGVydGllcyBtYXkgZGVwZW5kIG9uLgorICAgIGFwcGx5
Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0Q1NTUHJvcGVydHksIGxhc3RIaWdoUHJp
b3JpdHlQcm9wZXJ0eSwgJm1hdGNoUmVzdWx0KTsKIAogICAgIC8vIElmIHRoZSBlZmZlY3RpdmUg
em9vbSB2YWx1ZSBjaGFuZ2VzLCB3ZSBjYW4ndCB1c2UgdGhlIG1hdGNoZWQgcHJvcGVydGllcyBj
YWNoZS4gU3RhcnQgb3Zlci4KICAgICBpZiAoY2FjaGVJdGVtICYmIGNhY2hlSXRlbS0+cmVuZGVy
U3R5bGUtPmVmZmVjdGl2ZVpvb20oKSAhPSBzdGF0ZS5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkp
CkBAIC0xNDE1LDE1ICsxNDE0LDEzIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVk
UHJvcGVydGllcyhjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQsIGNvbnN0CiAgICAgaWYg
KGNhY2hlSXRlbSAmJiBjYWNoZUl0ZW0tPnJlbmRlclN0eWxlLT5mb250RGVzY3JpcHRpb24oKSAh
PSBzdGF0ZS5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGFwcGx5
TWF0Y2hlZFByb3BlcnRpZXMobWF0Y2hSZXN1bHQsIGVsZW1lbnQsIERvTm90VXNlTWF0Y2hlZFBy
b3BlcnRpZXNDYWNoZSk7CiAKLSAgICAvLyBOb3cgcmVzb2x2ZSByZW1haW5pbmcgY3VzdG9tIHBy
b3BlcnRpZXMgYW5kIHRoZSByZXN0LCBpbiBhbnkgb3JkZXIKLSAgICBmb3IgKGF1dG8gaXQgPSBj
YXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5iZWdpbigpOyBpdCAhPSBjYXNjYWRlLmN1c3RvbVBy
b3BlcnRpZXMoKS5lbmQoKTsgKytpdCkKLSAgICAgICAgYXBwbHlDYXNjYWRlZEN1c3RvbVByb3Bl
cnR5KGl0LT5rZXksIGFwcGx5U3RhdGUpOwotICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGZp
cnN0TG93UHJpb3JpdHlQcm9wZXJ0eSwgbGFzdENTU1Byb3BlcnR5LCBhcHBseVN0YXRlKTsKKyAg
ICAvLyBBcHBseSBwcm9wZXJ0aWVzIHRoYXQgbm8gb3RoZXIgcHJvcGVydGllcyBkZXBlbmQgb24u
CisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RMb3dQcmlvcml0eVBy
b3BlcnR5LCBsYXN0Q1NTUHJvcGVydHksICZtYXRjaFJlc3VsdCk7CiAKICAgICAvLyBGaW5hbGx5
LCBzb21lIHByb3BlcnRpZXMgbXVzdCBiZSBhcHBsaWVkIGluIHRoZSBvcmRlciB0aGV5IHdlcmUg
cGFyc2VkLgogICAgIC8vIFRoZXJlIGFyZSBzb21lIENTUyBwcm9wZXJ0aWVzIHRoYXQgYWZmZWN0
IHRoZSBzYW1lIFJlbmRlclN0eWxlIHZhbHVlcywKICAgICAvLyBzbyB0byBwcmVzZXJ2ZSBiZWhh
dmlvciwgd2UgcXVldWUgdGhlbSB1cCBkdXJpbmcgY2FzY2FkZSBhbmQgZmx1c2ggaGVyZS4KLSAg
ICBjYXNjYWRlLmFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVzKCp0aGlzLCBhcHBseVN0YXRlKTsKKyAg
ICBjYXNjYWRlLmFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVzKCp0aGlzLCAmbWF0Y2hSZXN1bHQpOwog
CiAgICAgQVNTRVJUKCFzdGF0ZS5mb250RGlydHkoKSk7CiAKQEAgLTE0NDQsOSArMTQ0MSw4IEBA
IHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eVRvU3R5bGUoQ1NTUHJvcGVydHlJRCBp
ZCwgQ1NTVmFsdWUqIHZhbHVlLCBzdGQ6CiAKIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9w
ZXJ0eVRvQ3VycmVudFN0eWxlKENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKIHsK
LSAgICBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSBhcHBseVN0YXRlIHsgdGhpcywgbnVsbHB0
ciwgbnVsbHB0ciB9OwogICAgIGlmICh2YWx1ZSkKLSAgICAgICAgYXBwbHlQcm9wZXJ0eShpZCwg
dmFsdWUsIGFwcGx5U3RhdGUpOworICAgICAgICBhcHBseVByb3BlcnR5KGlkLCB2YWx1ZSk7CiB9
CiAKIGlubGluZSBib29sIGlzVmFsaWRWaXNpdGVkTGlua1Byb3BlcnR5KENTU1Byb3BlcnR5SUQg
aWQpCkBAIC0xNjEzLDE4ICsxNjA5LDE2IEBAIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVy
dGllcyogU3R5bGVSZXNvbHZlcjo6Y2FzY2FkZWRQcm9wZXJ0aWVzRm9yUm9sbGJhY2soCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShD
U1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0
YXRlJiBhcHBseVN0YXRlLCBTZWxlY3RvckNoZWNrZXI6OkxpbmtNYXRjaE1hc2sgbGlua01hdGNo
TWFzaykKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlk
LCBDU1NWYWx1ZSogdmFsdWUsIFNlbGVjdG9yQ2hlY2tlcjo6TGlua01hdGNoTWFzayBsaW5rTWF0
Y2hNYXNrLCBjb25zdCBNYXRjaFJlc3VsdCogbWF0Y2hSZXN1bHQpCiB7Ci0gICAgYXV0byogbWF0
Y2hSZXN1bHQgPSBhcHBseVN0YXRlLm1hdGNoUmVzdWx0OwogICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoIWlzU2hvcnRoYW5kQ1NTUHJvcGVydHkoaWQpLCAiU2hvcnRoYW5kIHByb3BlcnR5IGlkID0g
JWQgd2Fzbid0IGV4cGFuZGVkIGF0IHBhcnNpbmcgdGltZSIsIGlkKTsKIAogICAgIFN0YXRlJiBz
dGF0ZSA9IG1fc3RhdGU7CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlVG9BcHBseSA9IHZh
bHVlOwogICAgIGlmICh2YWx1ZS0+aGFzVmFyaWFibGVSZWZlcmVuY2VzKCkpIHsKLSAgICAgICAg
dmFsdWVUb0FwcGx5ID0gcmVzb2x2ZWRWYXJpYWJsZVZhbHVlKGlkLCAqdmFsdWUsIGFwcGx5U3Rh
dGUpOwotICAgICAgICAvLyBJZiBhcHBsaWVkUHJvcGVydGllcyBhbHJlYWR5IGhhcyB0aGlzIGlk
LCB0aGVuIHdlIGRldGVjdGVkIGEgY3ljbGUsIGFuZCB0aGlzIHZhbHVlIHNob3VsZCBiZSB1bnNl
dC4KLSAgICAgICAgaWYgKCF2YWx1ZVRvQXBwbHkgfHwgYXBwbHlTdGF0ZS5hcHBsaWVkUHJvcGVy
dGllcy5jb250YWlucyhpZCkpIHsKKyAgICAgICAgdmFsdWVUb0FwcGx5ID0gcmVzb2x2ZWRWYXJp
YWJsZVZhbHVlKGlkLCAqdmFsdWUpOworICAgICAgICBpZiAoIXZhbHVlVG9BcHBseSkgewogICAg
ICAgICAgICAgaWYgKENTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KGlkKSkKICAgICAg
ICAgICAgICAgICB2YWx1ZVRvQXBwbHkgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUluaGVyaXRlZFZhbHVlKCk7CiAgICAgICAgICAgICBlbHNlCkBAIC0xNjM1LDcgKzE2MjksNyBA
QCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NT
VmFsdWUqIHZhbHVlLCBBcHBseUNhc2NhZAogICAgIGlmIChDU1NQcm9wZXJ0eTo6aXNEaXJlY3Rp
b25Bd2FyZVByb3BlcnR5KGlkKSkgewogICAgICAgICBDU1NQcm9wZXJ0eUlEIG5ld0lkID0gQ1NT
UHJvcGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KGlkLCBzdGF0ZS5zdHlsZSgp
LT5kaXJlY3Rpb24oKSwgc3RhdGUuc3R5bGUoKS0+d3JpdGluZ01vZGUoKSk7CiAgICAgICAgIEFT
U0VSVChuZXdJZCAhPSBpZCk7Ci0gICAgICAgIHJldHVybiBhcHBseVByb3BlcnR5KG5ld0lkLCB2
YWx1ZVRvQXBwbHkuZ2V0KCksIGFwcGx5U3RhdGUsIGxpbmtNYXRjaE1hc2spOworICAgICAgICBy
ZXR1cm4gYXBwbHlQcm9wZXJ0eShuZXdJZCwgdmFsdWVUb0FwcGx5LmdldCgpLCBsaW5rTWF0Y2hN
YXNrLCBtYXRjaFJlc3VsdCk7CiAgICAgfQogCiAgICAgQ1NTVmFsdWUqIHZhbHVlVG9DaGVja0Zv
ckluaGVyaXRJbml0aWFsID0gdmFsdWVUb0FwcGx5LmdldCgpOwpAQCAtMTY0Niw5ICsxNjQwLDcg
QEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENT
U1ZhbHVlKiB2YWx1ZSwgQXBwbHlDYXNjYWQKIAogICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eUN1
c3RvbSkgewogICAgICAgICBjdXN0b21Qcm9wZXJ0eVZhbHVlID0gJmRvd25jYXN0PENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU+KCp2YWx1ZVRvQXBwbHkpOwotICAgICAgICBBU1NFUlQoY3VzdG9tUHJv
cGVydHlWYWx1ZS0+aXNSZXNvbHZlZCgpKTsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8Q1NTVmFsdWVJRD4oY3VzdG9tUHJvcGVydHlWYWx1ZS0+dmFsdWUoKSkpCi0gICAgICAg
ICAgICBjdXN0b21Qcm9wZXJ0eVZhbHVlSUQgPSBXVEY6OmdldDxDU1NWYWx1ZUlEPihjdXN0b21Q
cm9wZXJ0eVZhbHVlLT52YWx1ZSgpKTsKKyAgICAgICAgY3VzdG9tUHJvcGVydHlWYWx1ZUlEID0g
Y3VzdG9tUHJvcGVydHlWYWx1ZS0+dmFsdWVJRCgpOwogICAgICAgICBhdXRvJiBuYW1lID0gY3Vz
dG9tUHJvcGVydHlWYWx1ZS0+bmFtZSgpOwogICAgICAgICBjdXN0b21Qcm9wZXJ0eVJlZ2lzdGVy
ZWQgPSBkb2N1bWVudCgpLmdldENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCgpLmdldChu
YW1lKTsKICAgICB9CkBAIC0xNjc1LDEzICsxNjY3LDEzIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6
YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIEFwcGx5Q2Fz
Y2FkCiAgICAgICAgICAgICAgICAgaWYgKGN1c3RvbVByb3BlcnR5UmVnaXN0ZXJlZCAmJiBjdXN0
b21Qcm9wZXJ0eVJlZ2lzdGVyZWQtPmluaGVyaXRzICYmIHJvbGxiYWNrLT5oYXNDdXN0b21Qcm9w
ZXJ0eShjdXN0b21Qcm9wZXJ0eVZhbHVlLT5uYW1lKCkpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGF1dG8gcHJvcGVydHkgPSByb2xsYmFjay0+Y3VzdG9tUHJvcGVydHkoY3VzdG9tUHJvcGVydHlW
YWx1ZS0+bmFtZSgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5LmNzc1ZhbHVl
W2xpbmtNYXRjaE1hc2tdKQotICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShw
cm9wZXJ0eS5pZCwgcHJvcGVydHkuY3NzVmFsdWVbbGlua01hdGNoTWFza10sIGFwcGx5U3RhdGUs
IGxpbmtNYXRjaE1hc2spOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShw
cm9wZXJ0eS5pZCwgcHJvcGVydHkuY3NzVmFsdWVbbGlua01hdGNoTWFza10sIGxpbmtNYXRjaE1h
c2ssIG1hdGNoUmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSBpZiAocm9sbGJhY2stPmhhc1Byb3BlcnR5KGlk
KSkgewogICAgICAgICAgICAgICAgIGF1dG8mIHByb3BlcnR5ID0gcm9sbGJhY2stPnByb3BlcnR5
KGlkKTsKICAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkuY3NzVmFsdWVbbGlua01hdGNoTWFz
a10pCi0gICAgICAgICAgICAgICAgICAgIGFwcGx5UHJvcGVydHkocHJvcGVydHkuaWQsIHByb3Bl
cnR5LmNzc1ZhbHVlW2xpbmtNYXRjaE1hc2tdLCBhcHBseVN0YXRlLCBsaW5rTWF0Y2hNYXNrKTsK
KyAgICAgICAgICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShwcm9wZXJ0eS5pZCwgcHJvcGVydHku
Y3NzVmFsdWVbbGlua01hdGNoTWFza10sIGxpbmtNYXRjaE1hc2ssIG1hdGNoUmVzdWx0KTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTE3MTAsMTAgKzE3MDIs
MTAgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQs
IENTU1ZhbHVlKiB2YWx1ZSwgQXBwbHlDYXNjYWQKICAgICBTdHlsZUJ1aWxkZXI6OmFwcGx5UHJv
cGVydHkoaWQsICp0aGlzLCAqdmFsdWVUb0FwcGx5LCBpc0luaXRpYWwsIGlzSW5oZXJpdCwgY3Vz
dG9tUHJvcGVydHlSZWdpc3RlcmVkKTsKIH0KIAotUmVmUHRyPENTU1ZhbHVlPiBTdHlsZVJlc29s
dmVyOjpyZXNvbHZlZFZhcmlhYmxlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSUQsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIHN0YXRlKSBjb25zdAor
UmVmUHRyPENTU1ZhbHVlPiBTdHlsZVJlc29sdmVyOjpyZXNvbHZlZFZhcmlhYmxlVmFsdWUoQ1NT
UHJvcGVydHlJRCBwcm9wSUQsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkgY29uc3QKIHsKICAgICBD
U1NQYXJzZXIgcGFyc2VyKGRvY3VtZW50KCkpOwotICAgIHJldHVybiBwYXJzZXIucGFyc2VWYWx1
ZVdpdGhWYXJpYWJsZVJlZmVyZW5jZXMocHJvcElELCB2YWx1ZSwgc3RhdGUpOworICAgIHJldHVy
biBwYXJzZXIucGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5jZXMocHJvcElELCB2YWx1ZSwg
ZG9jdW1lbnQoKS5nZXRDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQoKSwgKm1fc3RhdGUu
c3R5bGUoKSk7CiB9CiAKIFJlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUlt
YWdlKENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTIyMzUsMTMgKzIyMjcsMTMgQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OmFkZEltcG9ydGFudE1hdGNoZXMoY29uc3QgTWF0
Y2hSZXN1bHQmIG0KICAgICAgICAgYWRkTWF0Y2gobWF0Y2hSZXN1bHQsIG1hdGNoLmluZGV4LCB0
cnVlLCBpbmhlcml0ZWRPbmx5KTsKIH0KIAotdm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFBy
b3BlcnRpZXM6OmFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVzKFN0eWxlUmVzb2x2ZXImIHJlc29sdmVy
LCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgYXBwbHlTdGF0ZSkKK3ZvaWQgU3R5bGVSZXNv
bHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjphcHBseURlZmVycmVkUHJvcGVydGllcyhTdHlsZVJl
c29sdmVyJiByZXNvbHZlciwgY29uc3QgTWF0Y2hSZXN1bHQqIG1hdGNoUmVzdWx0KQogewogICAg
IGZvciAoYXV0byYgcHJvcGVydHkgOiBtX2RlZmVycmVkUHJvcGVydGllcykKLSAgICAgICAgcHJv
cGVydHkuYXBwbHkocmVzb2x2ZXIsIGFwcGx5U3RhdGUpOworICAgICAgICBwcm9wZXJ0eS5hcHBs
eShyZXNvbHZlciwgbWF0Y2hSZXN1bHQpOwogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OkNhc2Nh
ZGVkUHJvcGVydGllczo6UHJvcGVydHk6OmFwcGx5KFN0eWxlUmVzb2x2ZXImIHJlc29sdmVyLCBB
cHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgYXBwbHlTdGF0ZSkKK3ZvaWQgU3R5bGVSZXNvbHZl
cjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eTo6YXBwbHkoU3R5bGVSZXNvbHZlciYgcmVz
b2x2ZXIsIGNvbnN0IE1hdGNoUmVzdWx0KiBtYXRjaFJlc3VsdCkKIHsKICAgICBTdGF0ZSYgc3Rh
dGUgPSByZXNvbHZlci5zdGF0ZSgpOwogICAgIHN0YXRlLnNldENhc2NhZGVMZXZlbChsZXZlbCk7
CkBAIC0yMjUwLDcgKzIyNDIsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVy
dGllczo6UHJvcGVydHk6OmFwcGx5KFN0eWxlUmVzb2x2ZXImIHJlc29sdmVyLAogICAgIGlmIChj
c3NWYWx1ZVtTZWxlY3RvckNoZWNrZXI6Ok1hdGNoRGVmYXVsdF0pIHsKICAgICAgICAgc3RhdGUu
c2V0QXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKHRydWUpOwogICAgICAgICBzdGF0ZS5zZXRB
cHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKGZhbHNlKTsKLSAgICAgICAgcmVzb2x2ZXIu
YXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHRd
LCBhcHBseVN0YXRlLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoRGVmYXVsdCk7CisgICAgICAgIHJl
c29sdmVyLmFwcGx5UHJvcGVydHkoaWQsIGNzc1ZhbHVlW1NlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hE
ZWZhdWx0XSwgU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQsIG1hdGNoUmVzdWx0KTsKICAg
ICB9CiAKICAgICBpZiAoc3RhdGUuc3R5bGUoKS0+aW5zaWRlTGluaygpID09IEluc2lkZUxpbms6
Ok5vdEluc2lkZSkKQEAgLTIyNTksOTkgKzIyNTEsNDMgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpD
YXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5OjphcHBseShTdHlsZVJlc29sdmVyJiByZXNvbHZl
ciwKICAgICBpZiAoY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaExpbmtdKSB7CiAgICAg
ICAgIHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKTsKICAgICAgICAg
c3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZShmYWxzZSk7Ci0gICAgICAg
IHJlc29sdmVyLmFwcGx5UHJvcGVydHkoaWQsIGNzc1ZhbHVlW1NlbGVjdG9yQ2hlY2tlcjo6TWF0
Y2hMaW5rXSwgYXBwbHlTdGF0ZSwgU2VsZWN0b3JDaGVja2VyOjpNYXRjaExpbmspOworICAgICAg
ICByZXNvbHZlci5hcHBseVByb3BlcnR5KGlkLCBjc3NWYWx1ZVtTZWxlY3RvckNoZWNrZXI6Ok1h
dGNoTGlua10sIFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hMaW5rLCBtYXRjaFJlc3VsdCk7CiAgICAg
fQogCiAgICAgaWYgKGNzc1ZhbHVlW1NlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hWaXNpdGVkXSkgewog
ICAgICAgICBzdGF0ZS5zZXRBcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoZmFsc2UpOwogICAg
ICAgICBzdGF0ZS5zZXRBcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKHRydWUpOwotICAg
ICAgICByZXNvbHZlci5hcHBseVByb3BlcnR5KGlkLCBjc3NWYWx1ZVtTZWxlY3RvckNoZWNrZXI6
Ok1hdGNoVmlzaXRlZF0sIGFwcGx5U3RhdGUsIFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hWaXNpdGVk
KTsKKyAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JD
aGVja2VyOjpNYXRjaFZpc2l0ZWRdLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoVmlzaXRlZCwgbWF0
Y2hSZXN1bHQpOwogICAgIH0KIAogICAgIHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJT
dHlsZSh0cnVlKTsKICAgICBzdGF0ZS5zZXRBcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxl
KGZhbHNlKTsKIH0KIAotdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseUNhc2NhZGVkQ3VzdG9tUHJv
cGVydHkoY29uc3QgU3RyaW5nJiBuYW1lLCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgc3Rh
dGUpCi17Ci0gICAgaWYgKHN0YXRlLmFwcGxpZWRDdXN0b21Qcm9wZXJ0aWVzLmNvbnRhaW5zKG5h
bWUpIHx8ICFzdGF0ZS5jYXNjYWRlLT5jdXN0b21Qcm9wZXJ0aWVzKCkuY29udGFpbnMobmFtZSkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gcHJvcGVydHkgPSBzdGF0ZS5jYXNjYWRlLT5j
dXN0b21Qcm9wZXJ0aWVzKCkuZ2V0KG5hbWUpOwotCi0gICAgZm9yIChhdXRvIGluZGV4IDogeyBT
ZWxlY3RvckNoZWNrZXI6Ok1hdGNoRGVmYXVsdCwgU2VsZWN0b3JDaGVja2VyOjpNYXRjaExpbmss
IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hWaXNpdGVkIH0pIHsKLSAgICAgICAgaWYgKCFwcm9wZXJ0
eS5jc3NWYWx1ZVtpbmRleF0pCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKGlu
ZGV4ICE9IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hEZWZhdWx0ICYmIHRoaXMtPnN0YXRlKCkuc3R5
bGUoKS0+aW5zaWRlTGluaygpID09IEluc2lkZUxpbms6Ok5vdEluc2lkZSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiB2YWx1ZVRv
QXBwbHkgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUoZG93bmNhc3Q8Q1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZT4oKnByb3BlcnR5LmNzc1ZhbHVlW2luZGV4XSkpOwotCi0gICAgICAgIGlm
IChzdGF0ZS5pblByb2dyZXNzUHJvcGVydGllc0N1c3RvbS5jb250YWlucyhuYW1lKSkgewotICAg
ICAgICAgICAgLy8gV2UgYXJlIGluIGEgY3ljbGUsIHNvIHJlc2V0IHRoZSB2YWx1ZS4KLSAgICAg
ICAgICAgIHN0YXRlLmFwcGxpZWRDdXN0b21Qcm9wZXJ0aWVzLmFkZChuYW1lKTsKLSAgICAgICAg
ICAgIC8vIFJlc29sdmUgdGhpcyB2YWx1ZSBzbyB0aGF0IHdlIHJlc2V0IGl0cyBkZXBlbmRlbmNp
ZXMKLSAgICAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDU1NWYXJpYWJs
ZVJlZmVyZW5jZVZhbHVlPj4odmFsdWVUb0FwcGx5LT52YWx1ZSgpKSkKLSAgICAgICAgICAgICAg
ICByZXNvbHZlZFZhcmlhYmxlVmFsdWUoQ1NTUHJvcGVydHlDdXN0b20sIHZhbHVlVG9BcHBseS5n
ZXQoKSwgc3RhdGUpOwotICAgICAgICAgICAgdmFsdWVUb0FwcGx5ID0gQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZTo6Y3JlYXRlV2l0aElEKG5hbWUsIENTU1ZhbHVlVW5zZXQpOwotICAgICAgICB9Ci0K
LSAgICAgICAgc3RhdGUuaW5Qcm9ncmVzc1Byb3BlcnRpZXNDdXN0b20uYWRkKG5hbWUpOwotCi0g
ICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5j
ZVZhbHVlPj4odmFsdWVUb0FwcGx5LT52YWx1ZSgpKSkgewotICAgICAgICAgICAgUmVmUHRyPENT
U1ZhbHVlPiBwYXJzZWRWYWx1ZSA9IHJlc29sdmVkVmFyaWFibGVWYWx1ZShDU1NQcm9wZXJ0eUN1
c3RvbSwgdmFsdWVUb0FwcGx5LmdldCgpLCBzdGF0ZSk7Ci0KLSAgICAgICAgICAgIGlmICghcGFy
c2VkVmFsdWUpCi0gICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlOjpjcmVhdGVXaXRoSUQobmFtZSwgQ1NTVmFsdWVVbnNldCk7Ci0KLSAgICAgICAgICAg
IHZhbHVlVG9BcHBseSA9IGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCpwYXJzZWRW
YWx1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc3RhdGUuaW5Qcm9ncmVzc1Byb3BlcnRp
ZXNDdXN0b20uY29udGFpbnMobmFtZSkpIHsKLSAgICAgICAgICAgIGlmIChpbmRleCA9PSBTZWxl
Y3RvckNoZWNrZXI6Ok1hdGNoRGVmYXVsdCkgewotICAgICAgICAgICAgICAgIHRoaXMtPnN0YXRl
KCkuc2V0QXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKHRydWUpOwotICAgICAgICAgICAgICAg
IHRoaXMtPnN0YXRlKCkuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZShmYWxzZSk7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChpbmRleCA9PSBTZWxlY3RvckNoZWNr
ZXI6Ok1hdGNoTGluaykgewotICAgICAgICAgICAgICAgIHRoaXMtPnN0YXRlKCkuc2V0QXBwbHlQ
cm9wZXJ0eVRvUmVndWxhclN0eWxlKHRydWUpOwotICAgICAgICAgICAgICAgIHRoaXMtPnN0YXRl
KCkuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZShmYWxzZSk7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGlmIChpbmRleCA9PSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoVmlz
aXRlZCkgewotICAgICAgICAgICAgICAgIHRoaXMtPnN0YXRlKCkuc2V0QXBwbHlQcm9wZXJ0eVRv
UmVndWxhclN0eWxlKGZhbHNlKTsKLSAgICAgICAgICAgICAgICB0aGlzLT5zdGF0ZSgpLnNldEFw
cGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUodHJ1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5Q3VzdG9tLCB2YWx1ZVRvQXBwbHkucHRy
KCksIHN0YXRlLCBpbmRleCk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RhdGUuaW5Qcm9ncmVzc1By
b3BlcnRpZXNDdXN0b20ucmVtb3ZlKG5hbWUpOwotICAgICAgICBzdGF0ZS5hcHBsaWVkQ3VzdG9t
UHJvcGVydGllcy5hZGQobmFtZSk7Ci0gICAgfQotfQotCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmFw
cGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5
LCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgc3RhdGUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6
OmFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKENhc2NhZGVkUHJvcGVydGllcyYgY2FzY2FkZSwgaW50
IGZpcnN0UHJvcGVydHksIGludCBsYXN0UHJvcGVydHksIGNvbnN0IE1hdGNoUmVzdWx0KiBtYXRj
aFJlc3VsdCkKIHsKICAgICBmb3IgKGludCBpZCA9IGZpcnN0UHJvcGVydHk7IGlkIDw9IGxhc3RQ
cm9wZXJ0eTsgKytpZCkgewogICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBzdGF0
aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihpZCk7Ci0gICAgICAgIGlmICghc3RhdGUuY2FzY2FkZS0+
aGFzUHJvcGVydHkocHJvcGVydHlJRCkpCisgICAgICAgIGlmICghY2FzY2FkZS5oYXNQcm9wZXJ0
eShwcm9wZXJ0eUlEKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBBU1NFUlQocHJv
cGVydHlJRCAhPSBDU1NQcm9wZXJ0eUN1c3RvbSk7Ci0gICAgICAgIGF1dG8mIHByb3BlcnR5ID0g
c3RhdGUuY2FzY2FkZS0+cHJvcGVydHkocHJvcGVydHlJRCk7Ci0gICAgICAgIEFTU0VSVCghc2hv
dWxkQXBwbHlQcm9wZXJ0eUluUGFyc2VPcmRlcihwcm9wZXJ0eUlEKSk7Ci0KLSAgICAgICAgaWYg
KHN0YXRlLmluUHJvZ3Jlc3NQcm9wZXJ0aWVzLmNvbnRhaW5zKHByb3BlcnR5SUQpKSB7Ci0gICAg
ICAgICAgICAvLyBXZSBhcmUgaW4gYSBjeWNsZSAoZWcuIHNldHRpbmcgZm9udCBzaXplIHVzaW5n
IHJlZ2lzdGVyZWQgY3VzdG9tIHByb3BlcnR5IHZhbHVlIGNvbnRhaW5pbmcgZW0pCi0gICAgICAg
ICAgICAvLyBTbyB0aGlzIHZhbHVlIHNob3VsZCBiZSB1bnNldAotICAgICAgICAgICAgc3RhdGUu
YXBwbGllZFByb3BlcnRpZXMuYWRkKHByb3BlcnR5SUQpOwotICAgICAgICAgICAgLy8gVGhpcyBw
cm9wZXJ0eSBpcyBpbiBhIGN5Y2xlLCBhbmQgb25seSB0aGUgcm9vdCBvZiB0aGUgY2FsbCBzdGFj
ayB3aWxsIGhhdmUgZmlyc3RQcm9wZXJ0eSAhPSBsYXN0UHJvcGVydHkuCi0gICAgICAgICAgICBB
U1NFUlQoZmlyc3RQcm9wZXJ0eSA9PSBsYXN0UHJvcGVydHkpOworICAgICAgICBpZiAocHJvcGVy
dHlJRCA9PSBDU1NQcm9wZXJ0eUN1c3RvbSkgeworICAgICAgICAgICAgLy8gQXBwbHkgZm9udCBz
aXplIGZpcnN0LCBzaW5jZSBjdXN0b20gcHJvcGVydGllcyBtYXkgcmVseSBvbiBpdCBmb3IgcmVs
YXRpdmUgdW5pdCBjYWxjdWxhdGlvbnMKKyAgICAgICAgICAgIC8vIE9uY2UgaXQgaXMgYXBwbGll
ZCBhbmQgdGhlIGN1c3RvbSBwcm9wZXJ0eSB2YWx1ZXMgYXJlIHNldCwgaXQgd2lsbCBiZSBhcHBs
aWVkIGFnYWluLCB3aGljaCBzaG91bGQKKyAgICAgICAgICAgIC8vIGhhbmRsZSBhbnkgZm9udC1z
aXplIHByb3BlcnRpZXMgdGhhdCByZWx5IG9uIHJlZ2lzdGVyZWQgY3VzdG9tIHByb3BlcnRpZXMu
CisgICAgICAgICAgICAvLyBGSVhNRSBjeWNsZXMgc2hvdWxkIGJlIGRldGVjdGVkLgorICAgICAg
ICAgICAgaWYgKGNhc2NhZGUuaGFzUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSkpCisgICAg
ICAgICAgICAgICAgY2FzY2FkZS5wcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplKS5hcHBseSgq
dGhpcywgbWF0Y2hSZXN1bHQpOworICAgICAgICAgICAgdXBkYXRlRm9udCgpOworCisgICAgICAg
ICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgQ2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eT46
Oml0ZXJhdG9yIGVuZCA9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmVuZCgpOworICAgICAg
ICAgICAgZm9yIChIYXNoTWFwPEF0b21pY1N0cmluZywgQ2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9w
ZXJ0eT46Oml0ZXJhdG9yIGl0ID0gY2FzY2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCkuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgICAgIGl0LT52YWx1ZS5hcHBseSgqdGhpcywg
bWF0Y2hSZXN1bHQpOworICAgICAgICAgICAgbV9zdGF0ZS5zdHlsZSgpLT5jaGVja1ZhcmlhYmxl
c0luQ3VzdG9tUHJvcGVydGllcyhkb2N1bWVudCgpLmdldENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9w
ZXJ0eVNldCgpLCBtX3N0YXRlLnBhcmVudFN0eWxlKCksICp0aGlzKTsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGUuaW5Qcm9ncmVzc1Byb3BlcnRpZXMu
YWRkKHByb3BlcnR5SUQpOwotICAgICAgICBwcm9wZXJ0eS5hcHBseSgqdGhpcywgc3RhdGUpOwot
ICAgICAgICBzdGF0ZS5hcHBsaWVkUHJvcGVydGllcy5hZGQocHJvcGVydHlJRCk7Ci0gICAgICAg
IHN0YXRlLmluUHJvZ3Jlc3NQcm9wZXJ0aWVzLnJlbW92ZShwcm9wZXJ0eUlEKTsKKyAgICAgICAg
YXV0byYgcHJvcGVydHkgPSBjYXNjYWRlLnByb3BlcnR5KHByb3BlcnR5SUQpOworICAgICAgICBB
U1NFUlQoIXNob3VsZEFwcGx5UHJvcGVydHlJblBhcnNlT3JkZXIocHJvcGVydHlJRCkpOworICAg
ICAgICBwcm9wZXJ0eS5hcHBseSgqdGhpcywgbWF0Y2hSZXN1bHQpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggNmQ4OGY2MDE5YTJkNmY2ZDhlZGNlY2JmZTNl
MTU3ZmE1Nzk2YTE1My4uNDcwM2NlZmMzYmMyYzNiNmI3NDk3NDk4NzQzNWNhZTVkY2U1ZTRiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC0yNjcsNyArMjY3LDcgQEAgcHVibGlj
OgogICAgICAgICBDYXNjYWRlZFByb3BlcnRpZXMoVGV4dERpcmVjdGlvbiwgV3JpdGluZ01vZGUp
OwogCiAgICAgICAgIHN0cnVjdCBQcm9wZXJ0eSB7Ci0gICAgICAgICAgICB2b2lkIGFwcGx5KFN0
eWxlUmVzb2x2ZXImLCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYpOworICAgICAgICAgICAg
dm9pZCBhcHBseShTdHlsZVJlc29sdmVyJiwgY29uc3QgTWF0Y2hSZXN1bHQqKTsKIAogICAgICAg
ICAgICAgQ1NTUHJvcGVydHlJRCBpZDsKICAgICAgICAgICAgIENhc2NhZGVMZXZlbCBsZXZlbDsK
QEAgLTI4MSw3ICsyODEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgYWRkTm9ybWFsTWF0Y2hl
cyhjb25zdCBNYXRjaFJlc3VsdCYsIGludCBzdGFydEluZGV4LCBpbnQgZW5kSW5kZXgsIGJvb2wg
aW5oZXJpdGVkT25seSA9IGZhbHNlKTsKICAgICAgICAgdm9pZCBhZGRJbXBvcnRhbnRNYXRjaGVz
KGNvbnN0IE1hdGNoUmVzdWx0JiwgaW50IHN0YXJ0SW5kZXgsIGludCBlbmRJbmRleCwgYm9vbCBp
bmhlcml0ZWRPbmx5ID0gZmFsc2UpOwogCi0gICAgICAgIHZvaWQgYXBwbHlEZWZlcnJlZFByb3Bl
cnRpZXMoU3R5bGVSZXNvbHZlciYsIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJik7CisgICAg
ICAgIHZvaWQgYXBwbHlEZWZlcnJlZFByb3BlcnRpZXMoU3R5bGVSZXNvbHZlciYsIGNvbnN0IE1h
dGNoUmVzdWx0Kik7CiAKICAgICAgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFByb3BlcnR5PiYg
Y3VzdG9tUHJvcGVydGllcygpIHsgcmV0dXJuIG1fY3VzdG9tUHJvcGVydGllczsgfQogICAgICAg
ICBib29sIGhhc0N1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYpIGNvbnN0OwpAQCAtMzAyLDEw
ICszMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRleHREaXJlY3Rpb24gbV9kaXJlY3Rpb247CiAg
ICAgICAgIFdyaXRpbmdNb2RlIG1fd3JpdGluZ01vZGU7CiAgICAgfTsKLQotICAgIHZvaWQgYXBw
bHlDYXNjYWRlZFByb3BlcnRpZXMoaW50IGZpcnN0UHJvcGVydHksIGludCBsYXN0UHJvcGVydHks
IEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJik7Ci0gICAgdm9pZCBhcHBseUNhc2NhZGVkQ3Vz
dG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lLCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0
ZSYpOwotCisgICAgCiBwcml2YXRlOgogICAgIC8vIFRoaXMgZnVuY3Rpb24gZml4ZXMgdXAgdGhl
IGRlZmF1bHQgZm9udCBzaXplIGlmIGl0IGRldGVjdHMgdGhhdCB0aGUgY3VycmVudCBnZW5lcmlj
IGZvbnQgZmFtaWx5IGhhcyBjaGFuZ2VkLiAtZHdoCiAgICAgdm9pZCBjaGVja0ZvckdlbmVyaWNG
YW1pbHlDaGFuZ2UoUmVuZGVyU3R5bGUqLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUp
OwpAQCAtMzI0LDYgKzMyMSw3IEBAIHByaXZhdGU6CiAgICAgZW51bSBTaG91bGRVc2VNYXRjaGVk
UHJvcGVydGllc0NhY2hlIHsgRG9Ob3RVc2VNYXRjaGVkUHJvcGVydGllc0NhY2hlID0gMCwgVXNl
TWF0Y2hlZFByb3BlcnRpZXNDYWNoZSB9OwogICAgIHZvaWQgYXBwbHlNYXRjaGVkUHJvcGVydGll
cyhjb25zdCBNYXRjaFJlc3VsdCYsIGNvbnN0IEVsZW1lbnQmLCBTaG91bGRVc2VNYXRjaGVkUHJv
cGVydGllc0NhY2hlID0gVXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSk7CiAKKyAgICB2b2lkIGFw
cGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKENhc2NhZGVkUHJvcGVydGllcyYsIGludCBmaXJzdFByb3Bl
cnR5LCBpbnQgbGFzdFByb3BlcnR5LCBjb25zdCBNYXRjaFJlc3VsdCopOwogICAgIHZvaWQgY2Fz
Y2FkZU1hdGNoZXMoQ2FzY2FkZWRQcm9wZXJ0aWVzJiwgY29uc3QgTWF0Y2hSZXN1bHQmLCBib29s
IGltcG9ydGFudCwgaW50IHN0YXJ0SW5kZXgsIGludCBlbmRJbmRleCwgYm9vbCBpbmhlcml0ZWRP
bmx5KTsKIAogICAgIHZvaWQgbWF0Y2hQYWdlUnVsZXMoTWF0Y2hSZXN1bHQmLCBSdWxlU2V0Kiwg
Ym9vbCBpc0xlZnRQYWdlLCBib29sIGlzRmlyc3RQYWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1l
KTsKQEAgLTQ1NywxMiArNDU1LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdyaXRpbmdNb2Rl
KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSB7IG1fc3RhdGUuc2V0V3JpdGluZ01vZGUod3JpdGlu
Z01vZGUpOyB9CiAgICAgdm9pZCBzZXRUZXh0T3JpZW50YXRpb24oVGV4dE9yaWVudGF0aW9uIHRl
eHRPcmllbnRhdGlvbikgeyBtX3N0YXRlLnNldFRleHRPcmllbnRhdGlvbih0ZXh0T3JpZW50YXRp
b24pOyB9CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHJlc29sdmVkVmFyaWFibGVWYWx1ZShDU1NQ
cm9wZXJ0eUlELCBjb25zdCBDU1NWYWx1ZSYsIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJikg
Y29uc3Q7CisgICAgUmVmUHRyPENTU1ZhbHVlPiByZXNvbHZlZFZhcmlhYmxlVmFsdWUoQ1NTUHJv
cGVydHlJRCwgY29uc3QgQ1NTVmFsdWUmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNh
Y2hlQm9yZGVyQW5kQmFja2dyb3VuZCgpOwogCi0gICAgdm9pZCBhcHBseVByb3BlcnR5KENTU1By
b3BlcnR5SUQsIENTU1ZhbHVlKiwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmLCBTZWxlY3Rv
ckNoZWNrZXI6OkxpbmtNYXRjaE1hc2sgPSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoRGVmYXVsdCk7
CisgICAgdm9pZCBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKiwgU2VsZWN0
b3JDaGVja2VyOjpMaW5rTWF0Y2hNYXNrID0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQs
IGNvbnN0IE1hdGNoUmVzdWx0KiA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBhcHBseVNWR1Byb3Bl
cnR5KENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKik7CiAKQEAgLTUyNiwxOSArNTI0LDYgQEAgcHJp
dmF0ZToKICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE1hdGNoUmFuZ2VzJiwgY29u
c3QgTWF0Y2hSYW5nZXMmKTsKIH07CiAKLS8vIFN0YXRlIHRvIHVzZSB3aGVuIGFwcGx5aW5nIHBy
b3BlcnRpZXMsIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggY3VzdG9tIGFuZCBoaWdoLXByaW9yaXR5
Ci0vLyBwcm9wZXJ0aWVzIGhhdmUgYmVlbiByZXNvbHZlZC4KLXN0cnVjdCBBcHBseUNhc2NhZGVk
UHJvcGVydHlTdGF0ZSB7Ci0gICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcjsKLSAgICBT
dHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXMqIGNhc2NhZGU7Ci0gICAgY29uc3QgU3R5
bGVSZXNvbHZlcjo6TWF0Y2hSZXN1bHQqIG1hdGNoUmVzdWx0OwotICAgIEhhc2hTZXQ8Q1NTUHJv
cGVydHlJRD4gYXBwbGllZFByb3BlcnRpZXMgPSB7IH07Ci0gICAgSGFzaFNldDxTdHJpbmc+IGFw
cGxpZWRDdXN0b21Qcm9wZXJ0aWVzID0geyB9OwotICAgIEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4g
aW5Qcm9ncmVzc1Byb3BlcnRpZXMgPSB7IH07Ci0gICAgSGFzaFNldDxTdHJpbmc+IGluUHJvZ3Jl
c3NQcm9wZXJ0aWVzQ3VzdG9tID0geyB9OwotfTsKLQotCiBpbmxpbmUgYm9vbCBTdHlsZVJlc29s
dmVyOjpoYXNTZWxlY3RvckZvckF0dHJpYnV0ZShjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBBdG9taWNTdHJpbmcgJmF0dHJpYnV0ZU5hbWUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFhdHRy
aWJ1dGVOYW1lLmlzRW1wdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5j
cHAKaW5kZXggMGQ2YWVmMDhmOTI0ZjA3ODg5ZDJjYTE0MTA4Y2U1N2ExODQ1YmRkNS4uOWRmMGZk
NDU5ZjkwNzMzMjQ0MGQ1ZThhOWI4MTZiMTY1MjRkY2VkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyLmNwcApAQCAtNDcsNyArNDcsNiBAQAogI2luY2x1ZGUgIlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0eWxl
Q29sb3IuaCIKLSNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiU3R5bGVSdWxl
LmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CkBAIC0xNzgsMTAgKzE3Nyw4IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZURl
Y2xhcmF0aW9uRm9ySW5zcGVjdG9yKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIGNv
CiAgICAgQ1NTUGFyc2VySW1wbDo6cGFyc2VEZWNsYXJhdGlvbkxpc3RGb3JJbnNwZWN0b3Ioc3Ry
aW5nLCBjb250ZXh0LCBvYnNlcnZlcik7CiB9CiAKLVJlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2Vy
OjpwYXJzZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNlcyhDU1NQcm9wZXJ0eUlEIHByb3BJRCwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgc3RhdGUp
CitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVy
ZW5jZXMoQ1NTUHJvcGVydHlJRCBwcm9wSUQsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgY29uc3Qg
Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiByZWdpc3RlcmVkUHJvcGVydGllcywgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIEFTU0VSVCgocHJvcElEID09IENTU1Byb3Bl
cnR5Q3VzdG9tICYmIHZhbHVlLmlzQ3VzdG9tUHJvcGVydHlWYWx1ZSgpKSB8fCAocHJvcElEICE9
IENTU1Byb3BlcnR5Q3VzdG9tICYmICF2YWx1ZS5pc0N1c3RvbVByb3BlcnR5VmFsdWUoKSkpOwot
ICAgIGF1dG8mIHN0eWxlID0gKnN0YXRlLnN0eWxlUmVzb2x2ZXItPnN0eWxlKCk7CiAgICAgYXV0
byBkaXJlY3Rpb24gPSBzdHlsZS5kaXJlY3Rpb24oKTsKICAgICBhdXRvIHdyaXRpbmdNb2RlID0g
c3R5bGUud3JpdGluZ01vZGUoKTsKIApAQCAtMTkzLDExICsxOTAsMTIgQEAgUmVmUHRyPENTU1Zh
bHVlPiBDU1NQYXJzZXI6OnBhcnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVuY2VzKENTU1Byb3Bl
cnR5SUQgcHJvcEkKICAgICAgICAgaWYgKENTU1Byb3BlcnR5Ojppc0RpcmVjdGlvbkF3YXJlUHJv
cGVydHkoc2hvcnRoYW5kSUQpKQogICAgICAgICAgICAgc2hvcnRoYW5kSUQgPSBDU1NQcm9wZXJ0
eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoc2hvcnRoYW5kSUQsIGRpcmVjdGlvbiwg
d3JpdGluZ01vZGUpOwogICAgICAgICBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlKiBzaG9ydGhh
bmRWYWx1ZSA9IHBlbmRpbmdTdWJzdGl0dXRpb24uc2hvcnRoYW5kVmFsdWUoKTsKLQotICAgICAg
ICBhdXRvIHJlc29sdmVkRGF0YSA9IHNob3J0aGFuZFZhbHVlLT5yZXNvbHZlVmFyaWFibGVSZWZl
cmVuY2VzKHN0YXRlKTsKLSAgICAgICAgaWYgKCFyZXNvbHZlZERhdGEpCisgICAgICAgIGNvbnN0
IENTU1ZhcmlhYmxlRGF0YSogdmFyaWFibGVEYXRhID0gc2hvcnRoYW5kVmFsdWUtPnZhcmlhYmxl
RGF0YVZhbHVlKCk7CisgICAgICAgIEFTU0VSVCh2YXJpYWJsZURhdGEpOworICAgICAgICAKKyAg
ICAgICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiByZXNvbHZlZFRva2VuczsKKyAgICAgICAgaWYg
KCF2YXJpYWJsZURhdGEtPnJlc29sdmVUb2tlblJhbmdlKHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCB2
YXJpYWJsZURhdGEtPnRva2VucygpLCByZXNvbHZlZFRva2Vucywgc3R5bGUpKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVzb2x2
ZWRUb2tlbnMgPSByZXNvbHZlZERhdGEtPnRva2VucygpOwogICAgICAgICAKICAgICAgICAgUGFy
c2VkUHJvcGVydHlWZWN0b3IgcGFyc2VkUHJvcGVydGllczsKICAgICAgICAgaWYgKCFDU1NQcm9w
ZXJ0eVBhcnNlcjo6cGFyc2VWYWx1ZShzaG9ydGhhbmRJRCwgZmFsc2UsIHJlc29sdmVkVG9rZW5z
LCBtX2NvbnRleHQsIHBhcnNlZFByb3BlcnRpZXMsIFN0eWxlUnVsZTo6U3R5bGUpKQpAQCAtMjEx
LDMzICsyMDksMzEgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlVmFsdWVXaXRo
VmFyaWFibGVSZWZlcmVuY2VzKENTU1Byb3BlcnR5SUQgcHJvcEkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCisgICAgY29uc3QgQ1NTVmFyaWFibGVEYXRhKiB2YXJpYWJsZURhdGEg
PSBudWxscHRyOworCiAgICAgaWYgKHZhbHVlLmlzVmFyaWFibGVSZWZlcmVuY2VWYWx1ZSgpKSB7
CiAgICAgICAgIGNvbnN0IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUmIHZhbHVlV2l0aFJlZmVy
ZW5jZXMgPSBkb3duY2FzdDxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPih2YWx1ZSk7Ci0gICAg
ICAgIGF1dG8gcmVzb2x2ZWREYXRhID0gdmFsdWVXaXRoUmVmZXJlbmNlcy5yZXNvbHZlVmFyaWFi
bGVSZWZlcmVuY2VzKHN0YXRlKTsKLSAgICAgICAgaWYgKCFyZXNvbHZlZERhdGEpCi0gICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIENTU1Byb3BlcnR5UGFyc2VyOjpw
YXJzZVNpbmdsZVZhbHVlKHByb3BJRCwgcmVzb2x2ZWREYXRhLT50b2tlbnMoKSwgbV9jb250ZXh0
KTsKKyAgICAgICAgdmFyaWFibGVEYXRhID0gdmFsdWVXaXRoUmVmZXJlbmNlcy52YXJpYWJsZURh
dGFWYWx1ZSgpOworICAgICAgICBBU1NFUlQodmFyaWFibGVEYXRhKTsKICAgICB9CiAKLSAgICBj
b25zdCBhdXRvJiBjdXN0b21Qcm9wVmFsdWUgPSBkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlPih2YWx1ZSk7Ci0gICAgY29uc3QgYXV0byYgdmFsdWVXaXRoUmVmZXJlbmNlcyA9IFdURjo6
Z2V0PFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPj4oY3VzdG9tUHJvcFZhbHVlLnZhbHVl
KCkpLmdldCgpOworICAgIGlmICh2YWx1ZS5pc0N1c3RvbVByb3BlcnR5VmFsdWUoKSkgeworICAg
ICAgICBjb25zdCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJiBjdXN0b21Qcm9wVmFsdWUgPSBkb3du
Y2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPih2YWx1ZSk7CiAKLSAgICBhdXRvJiBuYW1lID0g
ZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4odmFsdWUpLm5hbWUoKTsKLSAgICBhdXRv
KiByZWdpc3RlcmVkID0gc3RhdGUuc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS5nZXRDU1NSZWdp
c3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQoKS5nZXQobmFtZSk7Ci0gICAgYXV0byYgc3ludGF4ID0g
cmVnaXN0ZXJlZCA/IHJlZ2lzdGVyZWQtPnN5bnRheCA6ICIqIjsKLSAgICBhdXRvIHJlc29sdmVk
RGF0YSA9IHZhbHVlV2l0aFJlZmVyZW5jZXMucmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyhzdGF0
ZSk7CisgICAgICAgIGlmIChjdXN0b21Qcm9wVmFsdWUucmVzb2x2ZWRUeXBlZFZhbHVlKCkpCisg
ICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgqY3VzdG9tUHJvcFZh
bHVlLnJlc29sdmVkVHlwZWRWYWx1ZSgpLCBzdHlsZSk7CiAKLSAgICBpZiAoIXJlc29sdmVkRGF0
YSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHZhcmlhYmxlRGF0YSA9IGN1c3Rv
bVByb3BWYWx1ZS52YWx1ZSgpOworICAgIH0KIAotICAgIC8vIEZJWE1FIGhhbmRsZSBSRU0gY3lj
bGVzLgotICAgIEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4gZGVwZW5kZW5jaWVzOwotICAgIENTU1By
b3BlcnR5UGFyc2VyOjpjb2xsZWN0UGFyc2VkQ3VzdG9tUHJvcGVydHlWYWx1ZURlcGVuZGVuY2ll
cyhzeW50YXgsIGZhbHNlLCBkZXBlbmRlbmNpZXMsIHJlc29sdmVkRGF0YS0+dG9rZW5zKCksIG1f
Y29udGV4dCk7CisgICAgaWYgKCF2YXJpYWJsZURhdGEpCisgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgZm9yIChhdXRvIGlkIDogZGVwZW5kZW5jaWVzKQotICAgICAgICBzdGF0ZS5zdHls
ZVJlc29sdmVyLT5hcHBseUNhc2NhZGVkUHJvcGVydGllcyhpZCwgaWQsIHN0YXRlKTsKKyAgICBW
ZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHJlc29sdmVkVG9rZW5zOworICAgIGlmICghdmFyaWFibGVE
YXRhLT5yZXNvbHZlVG9rZW5SYW5nZShyZWdpc3RlcmVkUHJvcGVydGllcywgdmFyaWFibGVEYXRh
LT50b2tlbnMoKSwgcmVzb2x2ZWRUb2tlbnMsIHN0eWxlKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICByZXR1cm4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVHlwZWRDdXN0b21Qcm9w
ZXJ0eVZhbHVlKG5hbWUsIHN5bnRheCwgcmVzb2x2ZWREYXRhLT50b2tlbnMoKSwgKnN0YXRlLnN0
eWxlUmVzb2x2ZXIsIG1fY29udGV4dCk7CisgICAgcmV0dXJuIENTU1Byb3BlcnR5UGFyc2VyOjpw
YXJzZVNpbmdsZVZhbHVlKHByb3BJRCwgcmVzb2x2ZWRUb2tlbnMsIG1fY29udGV4dCk7CiB9CiAK
IHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8ZG91YmxlPj4gQ1NTUGFyc2VyOjpwYXJzZUtleWZyYW1l
S2V5TGlzdChjb25zdCBTdHJpbmcmIHNlbGVjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyLmgKaW5kZXggNDcwNjNjZGZiOWEyNTVjNTZiZmRjNDVmNmNlNGIwMzY0NDExMDBmYS4u
MDliYTRiMDMwYTZjNWY2YTJhNWYxMmE2OTFiMDA4Y2I1MjVlZWEzYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlci5oCkBAIC0zMCw3ICszMCw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RydWN0IEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlOwogY2xhc3MgQ1NTUGFy
c2VyT2JzZXJ2ZXI7CiBjbGFzcyBDU1NTZWxlY3Rvckxpc3Q7CiBjbGFzcyBDb2xvcjsKQEAgLTc4
LDcgKzc3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBwYXJzZVNlbGVjdG9yKGNvbnN0IFN0cmlu
ZyYsIENTU1NlbGVjdG9yTGlzdCYpOwogCi0gICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVZhbHVl
V2l0aFZhcmlhYmxlUmVmZXJlbmNlcyhDU1NQcm9wZXJ0eUlELCBjb25zdCBDU1NWYWx1ZSYsIEFw
cGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJik7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVZh
bHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNlcyhDU1NQcm9wZXJ0eUlELCBjb25zdCBDU1NWYWx1ZSYs
IGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYsIGNvbnN0IFJlbmRlclN0eWxl
Jik7CiAKICAgICBzdGF0aWMgQ29sb3IgcGFyc2VDb2xvcihjb25zdCBTdHJpbmcmLCBib29sIHN0
cmljdCA9IGZhbHNlKTsKICAgICBzdGF0aWMgQ29sb3IgcGFyc2VTeXN0ZW1Db2xvcihjb25zdCBT
dHJpbmcmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IGMzYTIzYjU5OWU4ZWI0ZDc5Y2E5
ZjkzZWRjNjQ0ZmYwYmEzMWQ4MjcuLjIxZmViYWNjNGNmYmFhNTExYmJhZWE2NDc1ZjE2MGQ1MzI1
ZGMwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiQ1NTQ29udGVudERpc3RyaWJ1dGlv
blZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNT
U0N1c3RvbUlkZW50VmFsdWUuaCIKLSNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGZWF0
dXJlVmFsdWUuaCIKICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQpAQCAtNzQsMTAgKzczLDgg
QEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU1ZHUGF0
aEJ5dGVTdHJlYW0uaCIKICNpbmNsdWRlICJTVkdQYXRoVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAi
U3R5bGVCdWlsZGVyQ29udmVydGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZC5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCIKLSNpbmNs
dWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSA8Yml0c2V0PgogI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0yMTYsMTMgKzIxMywx
MiBAQCBDU1NQcm9wZXJ0eUlEIGNzc1Byb3BlcnR5SUQoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAg
CiB1c2luZyBuYW1lc3BhY2UgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOwogCi1DU1NQcm9wZXJ0
eVBhcnNlcjo6Q1NTUHJvcGVydHlQYXJzZXIoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxDU1NQcm9wZXJ0eSwg
MjU2PiogcGFyc2VkUHJvcGVydGllcywgYm9vbCBjb25zdW1lV2hpdGVzcGFjZSkKK0NTU1Byb3Bl
cnR5UGFyc2VyOjpDU1NQcm9wZXJ0eVBhcnNlcihjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgVmVjdG9yPENTU1Byb3BlcnR5
LCAyNTY+KiBwYXJzZWRQcm9wZXJ0aWVzKQogICAgIDogbV9yYW5nZShyYW5nZSkKICAgICAsIG1f
Y29udGV4dChjb250ZXh0KQogICAgICwgbV9wYXJzZWRQcm9wZXJ0aWVzKHBhcnNlZFByb3BlcnRp
ZXMpCiB7Ci0gICAgaWYgKGNvbnN1bWVXaGl0ZXNwYWNlKQotICAgICAgICBtX3JhbmdlLmNvbnN1
bWVXaGl0ZXNwYWNlKCk7CisgICAgbV9yYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOwogfQogCiB2
b2lkIENTU1Byb3BlcnR5UGFyc2VyOjphZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
LCBDU1NQcm9wZXJ0eUlEIGN1cnJlbnRTaG9ydGhhbmQsIFJlZjxDU1NWYWx1ZT4mJiB2YWx1ZSwg
Ym9vbCBpbXBvcnRhbnQsIGJvb2wgaW1wbGljaXQpCkBAIC0yODIsMjcgKzI3OCw2IEBAIFJlZlB0
cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eSwgY29uCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1ib29sIENTU1Byb3Bl
cnR5UGFyc2VyOjpjYW5QYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcm
IHN5bnRheCwgY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgdG9rZW5zLCBjb25zdCBDU1NQYXJz
ZXJDb250ZXh0JiBjb250ZXh0KQotewotICAgIENTU1Byb3BlcnR5UGFyc2VyIHBhcnNlcih0b2tl
bnMsIGNvbnRleHQsIG51bGxwdHIpOwotICAgIHJldHVybiBwYXJzZXIuY2FuUGFyc2VUeXBlZEN1
c3RvbVByb3BlcnR5VmFsdWUoc3ludGF4KTsKLX0KLQotUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5
VmFsdWU+IENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3ludGF4LCBjb25zdCBDU1NQYXJzZXJU
b2tlblJhbmdlJiB0b2tlbnMsIGNvbnN0IFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNv
bnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgQ1NTUHJvcGVydHlQYXJzZXIg
cGFyc2VyKHRva2VucywgY29udGV4dCwgbnVsbHB0ciwgZmFsc2UpOwotICAgIFJlZlB0cjxDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlPiB2YWx1ZSA9IHBhcnNlci5wYXJzZVR5cGVkQ3VzdG9tUHJvcGVy
dHlWYWx1ZShuYW1lLCBzeW50YXgsIHN0eWxlUmVzb2x2ZXIpOwotICAgIGlmICghdmFsdWUgfHwg
IXBhcnNlci5tX3JhbmdlLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiB2YWx1ZTsKLX0KLQotdm9pZCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29sbGVjdFBhcnNlZEN1
c3RvbVByb3BlcnR5VmFsdWVEZXBlbmRlbmNpZXMoY29uc3QgU3RyaW5nJiBzeW50YXgsIGJvb2wg
aXNSb290LCBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+JiBkZXBlbmRlbmNpZXMsIGNvbnN0IENTU1Bh
cnNlclRva2VuUmFuZ2UmIHRva2VucywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkK
LXsKLSAgICBDU1NQcm9wZXJ0eVBhcnNlciBwYXJzZXIodG9rZW5zLCBjb250ZXh0LCBudWxscHRy
KTsKLSAgICBwYXJzZXIuY29sbGVjdFBhcnNlZEN1c3RvbVByb3BlcnR5VmFsdWVEZXBlbmRlbmNp
ZXMoc3ludGF4LCBpc1Jvb3QsIGRlcGVuZGVuY2llcyk7Ci19Ci0KIHN0YXRpYyBib29sIGlzTGVn
YWN5QnJlYWtQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiB7CiAgICAgc3dpdGNo
IChwcm9wZXJ0eUlEKSB7CkBAIC0zNDUsNyArMzIwLDcgQEAgYm9vbCBDU1NQcm9wZXJ0eVBhcnNl
cjo6cGFyc2VWYWx1ZVN0YXJ0KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgYm9vbCBpbXBvcnRh
bnQKICAgICB9CiAKICAgICBpZiAoQ1NTVmFyaWFibGVQYXJzZXI6OmNvbnRhaW5zVmFsaWRWYXJp
YWJsZVJlZmVyZW5jZXMob3JpZ2luYWxSYW5nZSwgbV9jb250ZXh0KSkgewotICAgICAgICBSZWZQ
dHI8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4gdmFyaWFibGUgPSBDU1NWYXJpYWJsZVJlZmVy
ZW5jZVZhbHVlOjpjcmVhdGUob3JpZ2luYWxSYW5nZSk7CisgICAgICAgIFJlZlB0cjxDU1NWYXJp
YWJsZVJlZmVyZW5jZVZhbHVlPiB2YXJpYWJsZSA9IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6
OmNyZWF0ZShDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZShvcmlnaW5hbFJhbmdlKSk7CiAKICAgICAg
ICAgaWYgKGlzU2hvcnRoYW5kKSB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTUGVuZGluZ1N1YnN0
aXR1dGlvblZhbHVlPiBwZW5kaW5nVmFsdWUgPSBDU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWU6
OmNyZWF0ZShwcm9wZXJ0eUlELCB2YXJpYWJsZS5yZWxlYXNlTm9uTnVsbCgpKTsKQEAgLTM5MTEs
NiArMzg4Niw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlU2lu
Z2xlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTCiAgICAgY2FzZSBDU1NQcm9wZXJ0
eU1pbkhlaWdodDoKICAgICBjYXNlIENTU1Byb3BlcnR5V2lkdGg6CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUhlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q3VzdG9tOiAvLyBGSVhNRTogcGFyc2lu
ZyBhIHJlZ2lzdGVyZWQgY3VzdG9tIHByb3BlcnR5IHNob3VsZCBiZSBiYXNlZCBvbiBpdHMgc3lu
dGF4LgogICAgICAgICByZXR1cm4gY29uc3VtZVdpZHRoT3JIZWlnaHQobV9yYW5nZSwgbV9jb250
ZXh0LCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbklubGlu
ZVNpemU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkJsb2NrU2l6ZToKQEAgLTQyODAsNjQgKzQy
NTYsNiBAQCBSZWZQdHI8Q1NTVmFsdWU+IENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTUwogICAgIH0KIH0KIAotYm9vbCBDU1NQcm9w
ZXJ0eVBhcnNlcjo6Y2FuUGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5n
JiBzeW50YXgpCi17Ci0gICAgaWYgKHN5bnRheCAhPSAiKiIpIHsKLSAgICAgICAgbV9yYW5nZS5j
b25zdW1lV2hpdGVzcGFjZSgpOwotCi0gICAgICAgIC8vIEZpcnN0IGNoZWNrIGZvciBrZXl3b3Jk
cwotICAgICAgICBDU1NWYWx1ZUlEIGlkID0gbV9yYW5nZS5wZWVrKCkuaWQoKTsKLSAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlSW5oZXJpdCB8fCBpZCA9PSBDU1NWYWx1ZUluaXRpYWwgfHwgaWQg
PT0gQ1NTVmFsdWVSZXZlcnQpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICBh
dXRvIGxvY2FsUmFuZ2UgPSBtX3JhbmdlOwotICAgICAgICB3aGlsZSAoIWxvY2FsUmFuZ2UuYXRF
bmQoKSkgewotICAgICAgICAgICAgYXV0byBpZCA9IGxvY2FsUmFuZ2UuY29uc3VtZSgpLmZ1bmN0
aW9uSWQoKTsKLSAgICAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVZhciB8fCBpZCA9PSBDU1NW
YWx1ZUVudikKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gRm9yIHZhcmlhYmxlcywg
d2UganVzdCBwZXJtaXQgZXZlcnl0aGluZwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBwcmlt
aXRpdmVWYWwgPSBjb25zdW1lV2lkdGhPckhlaWdodChtX3JhbmdlLCBtX2NvbnRleHQpOwotICAg
ICAgICBpZiAocHJpbWl0aXZlVmFsICYmIHByaW1pdGl2ZVZhbC0+aXNQcmltaXRpdmVWYWx1ZSgp
ICYmIG1fcmFuZ2UuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgQ1NTUHJv
cGVydHlQYXJzZXI6OmNvbGxlY3RQYXJzZWRDdXN0b21Qcm9wZXJ0eVZhbHVlRGVwZW5kZW5jaWVz
KGNvbnN0IFN0cmluZyYgc3ludGF4LCBib29sIGlzUm9vdCwgSGFzaFNldDxDU1NQcm9wZXJ0eUlE
PiYgZGVwZW5kZW5jaWVzKQotewotICAgIGlmIChzeW50YXggIT0gIioiKSB7Ci0gICAgICAgIG1f
cmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKLSAgICAgICAgYXV0byBwcmltaXRpdmVWYWwgPSBj
b25zdW1lV2lkdGhPckhlaWdodChtX3JhbmdlLCBtX2NvbnRleHQpOwotICAgICAgICBpZiAoIW1f
cmFuZ2UuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbCAmJiBwcmltaXRpdmVWYWwtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAgICAgICAgICAg
cHJpbWl0aXZlVmFsLT5jb2xsZWN0RGlyZWN0Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhkZXBl
bmRlbmNpZXMpOwotICAgICAgICAgICAgaWYgKGlzUm9vdCkKLSAgICAgICAgICAgICAgICBwcmlt
aXRpdmVWYWwtPmNvbGxlY3REaXJlY3RSb290Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhkZXBl
bmRlbmNpZXMpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1SZWZQdHI8Q1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVl
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzeW50YXgsIGNvbnN0IFN0eWxlUmVz
b2x2ZXImIHN0eWxlUmVzb2x2ZXIpCi17Ci0gICAgaWYgKHN5bnRheCAhPSAiKiIpIHsKLSAgICAg
ICAgbV9yYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOwotICAgICAgICBhdXRvIHByaW1pdGl2ZVZh
bCA9IGNvbnN1bWVXaWR0aE9ySGVpZ2h0KG1fcmFuZ2UsIG1fY29udGV4dCk7Ci0gICAgICAgIGlm
IChwcmltaXRpdmVWYWwgJiYgcHJpbWl0aXZlVmFsLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAg
ICAgICAgICByZXR1cm4gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlU3ludGF4TGVuZ3Ro
KG5hbWUsIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aChzdHlsZVJlc29sdmVy
LCAqcHJpbWl0aXZlVmFsKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBwcm9wZXJ0eVZh
bHVlID0gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlU3ludGF4QWxsKG5hbWUsIENTU1Zh
cmlhYmxlRGF0YTo6Y3JlYXRlKG1fcmFuZ2UpKTsKLSAgICAgICAgd2hpbGUgKCFtX3JhbmdlLmF0
RW5kKCkpCi0gICAgICAgICAgICBtX3JhbmdlLmNvbnN1bWUoKTsKLSAgICAgICAgcmV0dXJuIHsg
V1RGTW92ZShwcm9wZXJ0eVZhbHVlKSB9OwotICAgIH0KLQotICAgIHJldHVybiBudWxscHRyOwot
fQotCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4gY29uc3VtZUZvbnRGYWNlVW5pY29kZVJh
bmdlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuaAppbmRleCAxZGMwNWVm
ODhkYWMyNjBhZTYxMDcyMjliOGRhOTZjYzRiMTdlNzc0Li43ZGI3NDUzYzBkODQ5OWVhMTNlMDBk
OTdjZjJlMGM1MjRmNDU4YjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1Byb3BlcnR5UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
cm9wZXJ0eVBhcnNlci5oCkBAIC0zMiw3ICszMiw2IEBAIGNsYXNzIENTU1Byb3BlcnR5OwogY2xh
c3MgQ1NTVmFsdWU7CiBjbGFzcyBTdHlsZVByb3BlcnR5U2hvcnRoYW5kOwogY2xhc3MgU3R5bGVT
aGVldENvbnRlbnRzOwotY2xhc3MgU3R5bGVSZXNvbHZlcjsKICAgICAKIC8vIElucHV0czogUHJv
cGVydHlJRCwgaXNJbXBvcnRhbnQgYm9vbCwgQ1NTUGFyc2VyVG9rZW5SYW5nZS4KIC8vIE91dHB1
dHM6IFZlY3RvciBvZiBDU1NQcm9wZXJ0aWVzCkBAIC00NiwyMCArNDUsMTQgQEAgcHVibGljOgog
CiAgICAgLy8gUGFyc2VzIGEgbm9uLXNob3J0aGFuZCBDU1MgcHJvcGVydHkKICAgICBzdGF0aWMg
UmVmUHRyPENTU1ZhbHVlPiBwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5SUQsIGNvbnN0IENT
U1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7Ci0gICAgc3RhdGlj
IGJvb2wgY2FuUGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nJiBzeW50
YXgsIGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7
Ci0gICAgc3RhdGljIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBwYXJzZVR5cGVkQ3Vz
dG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3ludGF4
LCBjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiwgY29uc3QgU3R5bGVSZXNvbHZlciYsIGNvbnN0
IENTU1BhcnNlckNvbnRleHQmKTsKLSAgICBzdGF0aWMgdm9pZCBjb2xsZWN0UGFyc2VkQ3VzdG9t
UHJvcGVydHlWYWx1ZURlcGVuZGVuY2llcyhjb25zdCBTdHJpbmcmIHN5bnRheCwgYm9vbCBpc1Jv
b3QsIEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4mIGRlcGVuZGVuY2llcywgY29uc3QgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmKTsKIAogcHJpdmF0ZToKLSAgICBD
U1NQcm9wZXJ0eVBhcnNlcihjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiwgY29uc3QgQ1NTUGFy
c2VyQ29udGV4dCYsIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiosIGJvb2wgY29uc3VtZVdoaXRl
c3BhY2UgPSB0cnVlKTsKKyAgICBDU1NQcm9wZXJ0eVBhcnNlcihjb25zdCBDU1NQYXJzZXJUb2tl
blJhbmdlJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYsIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2
PiopOwogCiAgICAgLy8gRklYTUU6IFJlbmFtZSBvbmNlIHRoZSBDU1NQYXJzZXJWYWx1ZS1iYXNl
ZCBwYXJzZVZhbHVlIGlzIHJlbW92ZWQKICAgICBib29sIHBhcnNlVmFsdWVTdGFydChDU1NQcm9w
ZXJ0eUlELCBib29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBjb25zdW1lQ1NTV2lkZUtleXdvcmQo
Q1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOwogICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFy
c2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlELCBDU1NQcm9wZXJ0eUlEID0gQ1NTUHJvcGVydHlJ
bnZhbGlkKTsKLSAgICBib29sIGNhblBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0
IFN0cmluZyYgc3ludGF4KTsKLSAgICBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gcGFy
c2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHN5bnRheCwgY29uc3QgU3R5bGVSZXNvbHZlciYpOwotICAgIHZvaWQgY29sbGVjdFBhcnNl
ZEN1c3RvbVByb3BlcnR5VmFsdWVEZXBlbmRlbmNpZXMoY29uc3QgU3RyaW5nJiBzeW50YXgsIGJv
b2wgaXNSb290LCBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+JiBkZXBlbmRlbmNpZXMpOwogCiAgICAg
Ym9vbCBpblF1aXJrc01vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQubW9kZSA9PSBIVE1M
UXVpcmtzTW9kZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1ZhcmlhYmxlUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVmFyaWFi
bGVQYXJzZXIuY3BwCmluZGV4IDFiZTIzYjlmZWM4ZjVlY2RhZDRlYjg0NDg1M2Y5ZTAyY2E1YTky
MGQuLjg3MDg2ZTM2YWI4MGQxZDU4Mzk2YmNhYWY5NDkxMjMzYmQ1ZDIyMjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3BwCkBAIC0xODksOCAr
MTg5LDggQEAgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IENTU1ZhcmlhYmxlUGFyc2Vy
OjpwYXJzZURlY2xhcmF0aW9uVmFsdWUoY29uc3QgQXQKICAgICBpZiAodHlwZSA9PSBDU1NWYWx1
ZUludmFsaWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICh0eXBlID09IENTU1Zh
bHVlSW50ZXJuYWxWYXJpYWJsZVZhbHVlKQotICAgICAgICByZXR1cm4gQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZTo6Y3JlYXRlVW5yZXNvbHZlZCh2YXJpYWJsZU5hbWUsIENTU1ZhcmlhYmxlUmVmZXJl
bmNlVmFsdWU6OmNyZWF0ZShyYW5nZSkpOwotICAgIHJldHVybiBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlOjpjcmVhdGVVbnJlc29sdmVkKHZhcmlhYmxlTmFtZSwgdHlwZSk7CisgICAgICAgIHJldHVy
biBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVXaXRoVmFyaWFibGVEYXRhKHZhcmlhYmxl
TmFtZSwgQ1NTVmFyaWFibGVEYXRhOjpjcmVhdGUocmFuZ2UsIGhhc1JlZmVyZW5jZXMgfHwgaGFz
QXRBcHBseVJ1bGUpKTsKKyAgICByZXR1cm4gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRl
V2l0aElEKHZhcmlhYmxlTmFtZSwgdHlwZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db25zdGFudFByb3BlcnR5TWFwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db25zdGFudFByb3BlcnR5TWFwLmNwcAppbmRleCA2YzEwOGM4
ODg3MTVmNjdmYTk4MTg2MDBhYmRiMTUxMDRmYWFjMmYwLi45MGZkMTM5MzFiNzA0MWUyOWI5ZjY3
OWFjM2ExZDEzNDhjNjIwYjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29uc3Rh
bnRQcm9wZXJ0eU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnN0YW50UHJvcGVy
dHlNYXAuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgQ29uc3RhbnRQcm9wZXJ0eU1hcDo6c2V0
VmFsdWVGb3JQcm9wZXJ0eShDb25zdGFudFByb3BlcnR5IHByb3BlcnR5LCBSZWY8Q1NTCiAgICAg
ICAgIGJ1aWxkVmFsdWVzKCk7CiAKICAgICBhdXRvJiBuYW1lID0gbmFtZUZvclByb3BlcnR5KHBy
b3BlcnR5KTsKLSAgICBtX3ZhbHVlcy0+c2V0KG5hbWUsIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6
OmNyZWF0ZVN5bnRheEFsbChuYW1lLCBXVEZNb3ZlKGRhdGEpKSk7CisgICAgbV92YWx1ZXMtPnNl
dChuYW1lLCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVXaXRoVmFyaWFibGVEYXRhKG5h
bWUsIFdURk1vdmUoZGF0YSkpKTsKIH0KIAogdm9pZCBDb25zdGFudFByb3BlcnR5TWFwOjpidWls
ZFZhbHVlcygpCkBAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGljIFJlZjxDU1NWYXJpYWJsZURhdGE+
IHZhcmlhYmxlRGF0YUZvclBvc2l0aXZlUGl4ZWxMZW5ndGgoZmxvYXQgbGVuZ3RoSW5QeCkKIAog
ICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gdG9rZW5zIHsgdG9rZW4gfTsKICAgICBDU1NQYXJz
ZXJUb2tlblJhbmdlIHRva2VuUmFuZ2UodG9rZW5zKTsKLSAgICByZXR1cm4gQ1NTVmFyaWFibGVE
YXRhOjpjcmVhdGUodG9rZW5SYW5nZSk7CisgICAgcmV0dXJuIENTU1ZhcmlhYmxlRGF0YTo6Y3Jl
YXRlKHRva2VuUmFuZ2UsIGZhbHNlKTsKIH0KIAogc3RhdGljIFJlZjxDU1NWYXJpYWJsZURhdGE+
IHZhcmlhYmxlRGF0YUZvclBvc2l0aXZlRHVyYXRpb24oU2Vjb25kcyBkdXJhdGlvbkluU2Vjb25k
cykKQEAgLTEyMiw3ICsxMjIsNyBAQCBzdGF0aWMgUmVmPENTU1ZhcmlhYmxlRGF0YT4gdmFyaWFi
bGVEYXRhRm9yUG9zaXRpdmVEdXJhdGlvbihTZWNvbmRzIGR1cmF0aW9uSW5TZQogCiAgICAgVmVj
dG9yPENTU1BhcnNlclRva2VuPiB0b2tlbnMgeyB0b2tlbiB9OwogICAgIENTU1BhcnNlclRva2Vu
UmFuZ2UgdG9rZW5SYW5nZSh0b2tlbnMpOwotICAgIHJldHVybiBDU1NWYXJpYWJsZURhdGE6OmNy
ZWF0ZSh0b2tlblJhbmdlKTsKKyAgICByZXR1cm4gQ1NTVmFyaWFibGVEYXRhOjpjcmVhdGUodG9r
ZW5SYW5nZSwgZmFsc2UpOwogfQogCiB2b2lkIENvbnN0YW50UHJvcGVydHlNYXA6OnVwZGF0ZUNv
bnN0YW50c0ZvclNhZmVBcmVhSW5zZXRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IGM4NTI1ODg1MDI0NzcwZDljNWI1ZDQ5MTllZDY1
YmM2ZWIxMTk1NzcuLmRiODVkN2QwOTNmNTI4NGNiZWI4MDJlZTg3MDA4MDhlMzkyYTcxZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAt
MjI5OSw2ICsyMjk5LDg5IEBAIGJvb2wgUmVuZGVyU3R5bGU6Omhhc1JlZmVyZW5jZUZpbHRlck9u
bHkoKSBjb25zdAogICAgIHJldHVybiBmaWx0ZXJPcGVyYXRpb25zLnNpemUoKSA9PSAxICYmIGZp
bHRlck9wZXJhdGlvbnMuYXQoMCktPnR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5D
RTsKIH0KIAordm9pZCBSZW5kZXJTdHlsZTo6Y2hlY2tWYXJpYWJsZXNJbkN1c3RvbVByb3BlcnRp
ZXMoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiByZWdpc3RlcmVkUHJvcGVy
dGllcywgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyKQoreworICAgIGJvb2wgc2hvdWxkVXBkYXRlSW5oZXJpdGVkID0gbV9y
YXJlSW5oZXJpdGVkRGF0YS0+Y3VzdG9tUHJvcGVydGllcy0+Y29udGFpbnNWYXJpYWJsZXMgfHwg
bV9yYXJlSW5oZXJpdGVkRGF0YS0+Y3VzdG9tUHJvcGVydGllcy0+Y29udGFpbnNVbnJlc29sdmVk
UmVnaXN0ZXJlZFByb3BlcnRpZXM7CisgICAgYm9vbCBzaG91bGRVcGRhdGVOb25Jbmhlcml0ZWQg
PSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVzLT5jb250YWluc1Zhcmlh
YmxlcyB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVzLT5jb250YWlu
c1VucmVzb2x2ZWRSZWdpc3RlcmVkUHJvcGVydGllczsKKyAgICBhdXRvKiBpbmhlcml0ZWRQcm9w
ZXJ0eURhdGEgPSBzaG91bGRVcGRhdGVJbmhlcml0ZWQgPyAmbV9yYXJlSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS5jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpIDogbnVsbHB0cjsKKyAgICBhdXRvKiBu
b25Jbmhlcml0ZWRQcm9wZXJ0eURhdGEgPSBzaG91bGRVcGRhdGVOb25Jbmhlcml0ZWQgPyAmbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpIDog
bnVsbHB0cjsKKworICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiBpbnZhbGlkUHJvcGVydGllczsK
KworICAgIGZvciAoYXV0byogY3VzdG9tUHJvcGVydHlEYXRhIDogeyBpbmhlcml0ZWRQcm9wZXJ0
eURhdGEsIG5vbkluaGVyaXRlZFByb3BlcnR5RGF0YSB9KSB7CisgICAgICAgIGlmICghY3VzdG9t
UHJvcGVydHlEYXRhKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gT3VyIGZp
cnN0IHBhc3MgY2hlY2tzIHRoZSB2YXJpYWJsZXMgZm9yIHZhbGlkaXR5IGFuZCByZXBsYWNlcyBh
bnkgcHJvcGVydGllcyB0aGF0IGJlY2FtZQorICAgICAgICAvLyBpbnZhbGlkIHdpdGggZW1wdHkg
dmFsdWVzLgorICAgICAgICBhdXRvJiBjdXN0b21Qcm9wZXJ0aWVzID0gY3VzdG9tUHJvcGVydHlE
YXRhLT52YWx1ZXM7CisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBjdXN0b21Qcm9wZXJ0aWVz
KSB7CisgICAgICAgICAgICBpZiAoIWVudHJ5LnZhbHVlLT5jb250YWluc1ZhcmlhYmxlcygpKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgSGFzaFNldDxBdG9taWNTdHJp
bmc+IHNlZW5Qcm9wZXJ0aWVzOworICAgICAgICAgICAgZW50cnkudmFsdWUtPmNoZWNrVmFyaWFi
bGVzRm9yQ3ljbGVzKGVudHJ5LmtleSwgKnRoaXMsIHNlZW5Qcm9wZXJ0aWVzLCBpbnZhbGlkUHJv
cGVydGllcyk7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGludmFsaWRWYWx1ZSA9IENTU0N1
c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZUludmFsaWQoKTsKKworICAgICAgICAvLyBOb3cgaW5z
ZXJ0IGludmFsaWQgdmFsdWVzLCBvciBkZWZhdWx0cyBpZiB0aGUgcHJvcGVydHkgaXMgcmVnaXN0
ZXJlZC4KKyAgICAgICAgaWYgKCFpbnZhbGlkUHJvcGVydGllcy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIGZvciAoYXV0byYgcHJvcGVydHkgOiBpbnZhbGlkUHJvcGVydGllcykgeworICAgICAg
ICAgICAgICAgIGlmICghY3VzdG9tUHJvcGVydGllcy5jb250YWlucyhwcm9wZXJ0eSkpCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIGNvbnN0IFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiogcGFyZW50UHJvcGVydHkg
PSBudWxscHRyOworICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkgeworICAgICAgICAg
ICAgICAgICAgICBhdXRvIGl0ZXJhdG9yID0gcGFyZW50U3R5bGUtPmluaGVyaXRlZEN1c3RvbVBy
b3BlcnRpZXMoKS5maW5kKHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXJh
dG9yICE9IHBhcmVudFN0eWxlLT5pbmhlcml0ZWRDdXN0b21Qcm9wZXJ0aWVzKCkuZW5kKCkgJiYg
aXRlcmF0b3IuZ2V0KCkgJiYgaXRlcmF0b3IuZ2V0KCktPnZhbHVlKQorICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyZW50UHJvcGVydHkgPSAmaXRlcmF0b3IuZ2V0KCktPnZhbHVlOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGF1dG8qIHJlZ2lzdGVyZWQgPSByZWdpc3Rl
cmVkUHJvcGVydGllcy5nZXQocHJvcGVydHkpOworCisgICAgICAgICAgICAgICAgaWYgKHJlZ2lz
dGVyZWQgJiYgcmVnaXN0ZXJlZC0+aW5oZXJpdHMgJiYgcGFyZW50UHJvcGVydHkpCisgICAgICAg
ICAgICAgICAgICAgIGN1c3RvbVByb3BlcnRpZXMuc2V0KHByb3BlcnR5LCBwYXJlbnRQcm9wZXJ0
eS0+Y29weVJlZigpKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChyZWdpc3RlcmVkICYmIHJl
Z2lzdGVyZWQtPmluaXRpYWxWYWx1ZSgpKQorICAgICAgICAgICAgICAgICAgICBjdXN0b21Qcm9w
ZXJ0aWVzLnNldChwcm9wZXJ0eSwgcmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlQ29weSgpKTsKKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGN1c3RvbVByb3BlcnRpZXMu
c2V0KHByb3BlcnR5LCBpbnZhbGlkVmFsdWUuY29weVJlZigpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIC8vIE5vdyB0aGF0IGFsbCBvZiB0aGUgcHJvcGVydGllcyBoYXZl
IGJlZW4gdGVzdGVkIGZvciB2YWxpZGl0eSBhbmQgcmVwbGFjZWQgd2l0aAorICAgICAgICAvLyBp
bnZhbGlkIHZhbHVlcyBpZiB0aGV5IGZhaWxlZCwgd2UgY2FuIHBlcmZvcm0gdmFyaWFibGUgc3Vi
c3RpdHV0aW9uIG9uIHRoZSB2YWxpZCB2YWx1ZXMuCisgICAgICAgIFZlY3RvcjxSZWY8Q1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZT4+IHJlc29sdmVkVmFsdWVzOworICAgICAgICBmb3IgKGF1dG8gZW50
cnkgOiBjdXN0b21Qcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICBpZiAoIWVudHJ5LnZhbHVlLT5j
b250YWluc1ZhcmlhYmxlcygpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgZW50cnkudmFsdWUtPnJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZXMocmVnaXN0ZXJlZFByb3Bl
cnRpZXMsIHJlc29sdmVkVmFsdWVzLCAqdGhpcyk7CisgICAgICAgIH0KKworICAgICAgICAvLyBX
aXRoIGFsbCByZXN1bHRzIGNvbXB1dGVkLCB3ZSBjYW4gbm93IG11dGF0ZSBvdXIgdGFibGUgdG8g
ZWxpbWluYXRlIHRoZSB2YXJpYWJsZXMgYW5kCisgICAgICAgIC8vIGhvbGQgdGhlIGZpbmFsIHZh
bHVlcy4gVGhpcyB3YXkgd2hlbiB3ZSBpbmhlcml0LCB3ZSBkb24ndCBlbmQgdXAgcmVzdWJzdGl0
dXRpbmcgdmFyaWFibGVzLCBldGMuCisgICAgICAgIGZvciAoYXV0byYgcmVzb2x2ZWRWYWx1ZSA6
IHJlc29sdmVkVmFsdWVzKQorICAgICAgICAgICAgY3VzdG9tUHJvcGVydGllcy5zZXQocmVzb2x2
ZWRWYWx1ZS0+bmFtZSgpLCByZXNvbHZlZFZhbHVlLmNvcHlSZWYoKSk7CisKKyAgICAgICAgLy8g
RmluYWxseSB3ZSBjYW4gcmVzb2x2ZSByZWdpc3RlcmVkIGN1c3RvbSBwcm9wZXJ0aWVzIHRvIHRo
ZWlyIHR5cGVkIHZhbHVlcy4KKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGN1c3RvbVByb3Bl
cnRpZXMpIHsKKyAgICAgICAgICAgIGF1dG8mIG5hbWUgPSBlbnRyeS52YWx1ZS0+bmFtZSgpOwor
ICAgICAgICAgICAgYXV0byogcmVnaXN0ZXJlZCA9IHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLmdldChu
YW1lKTsKKworICAgICAgICAgICAgaWYgKCFyZWdpc3RlcmVkKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICBhdXRvIHByaW1pdGl2ZVZhbCA9IHN0eWxlUmVzb2x2ZXIu
cmVzb2x2ZWRWYXJpYWJsZVZhbHVlKENTU1Byb3BlcnR5Q3VzdG9tLCAqZW50cnkudmFsdWUpOwor
ICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWwgfHwgIXByaW1pdGl2ZVZhbC0+aXNQcmltaXRp
dmVWYWx1ZSgpKQorICAgICAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gaW52YWxpZFZhbHVlLmNv
cHlSZWYoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlbnRyeS52YWx1ZS0+
c2V0UmVzb2x2ZWRUeXBlZFZhbHVlKFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0
aChzdHlsZVJlc29sdmVyLCAqcHJpbWl0aXZlVmFsKSk7CisgICAgICAgIH0KKworICAgICAgICBj
dXN0b21Qcm9wZXJ0eURhdGEtPmNvbnRhaW5zVmFyaWFibGVzID0gZmFsc2U7CisgICAgICAgIGN1
c3RvbVByb3BlcnR5RGF0YS0+Y29udGFpbnNVbnJlc29sdmVkUmVnaXN0ZXJlZFByb3BlcnRpZXMg
PSBmYWxzZTsKKyAgICB9Cit9CisKIGZsb2F0IFJlbmRlclN0eWxlOjpvdXRsaW5lV2lkdGgoKSBj
b25zdAogewogICAgIGlmIChtX2JhY2tncm91bmREYXRhLT5vdXRsaW5lLnN0eWxlKCkgPT0gQm9y
ZGVyU3R5bGU6Ok5vbmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCmluZGV4IDcwOGU2YmYwMTQyN2NlMWYwODJjZDE1YWNiMWMzZTA2ZDEzYjgyMzQuLmRk
MjQyZTc2ZDNlODEwOWNiODkwNzg1NzliMmM4YWI0MWJkODdlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0xODYsOCArMTg2LDggQEAgcHVi
bGljOgogICAgIGNvbnN0IEN1c3RvbVByb3BlcnR5VmFsdWVNYXAmIGluaGVyaXRlZEN1c3RvbVBy
b3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5jdXN0b21Qcm9w
ZXJ0aWVzLT52YWx1ZXM7IH0KICAgICBjb25zdCBDdXN0b21Qcm9wZXJ0eVZhbHVlTWFwJiBub25J
bmhlcml0ZWRDdXN0b21Qcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+Y3VzdG9tUHJvcGVydGllcy0+dmFsdWVzOyB9CiAgICAgY29uc3QgQ1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZSogZ2V0Q3VzdG9tUHJvcGVydHkoY29uc3QgQXRvbWljU3RyaW5nJikgY29u
c3Q7Ci0gICAgdm9pZCBzZXRJbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYgdmFsdWUpIHsgcmV0
dXJuIG1fcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nlc3Mo
KS5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1vdmUodmFsdWUpKTsgfQotICAgIHZv
aWQgc2V0Tm9uSW5oZXJpdGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiYmIHZhbHVlKSB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmN1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCkuc2V0
Q3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBXVEZNb3ZlKHZhbHVlKSk7IH0KKyAgICB2b2lkIHNl
dEluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBS
ZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2YWx1ZSwgYm9vbCBpc1JlZ2lzdGVyZWQgPSBm
YWxzZSkgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXN0b21Qcm9wZXJ0
aWVzLmFjY2VzcygpLnNldEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgV1RGTW92ZSh2YWx1ZSks
IGlzUmVnaXN0ZXJlZCk7IH0KKyAgICB2b2lkIHNldE5vbkluaGVyaXRlZEN1c3RvbVByb3BlcnR5
VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZT4mJiB2YWx1ZSwgYm9vbCBpc1JlZ2lzdGVyZWQgPSBmYWxzZSkgeyByZXR1cm4gbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpLnNldEN1c3Rv
bVByb3BlcnR5VmFsdWUobmFtZSwgV1RGTW92ZSh2YWx1ZSksIGlzUmVnaXN0ZXJlZCk7IH0KIAog
ICAgIHZvaWQgc2V0SGFzVmlld3BvcnRVbml0cyhib29sIHYgPSB0cnVlKSB7IG1fbm9uSW5oZXJp
dGVkRmxhZ3MuaGFzVmlld3BvcnRVbml0cyA9IHY7IH0KICAgICBib29sIGhhc1ZpZXdwb3J0VW5p
dHMoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmhhc1ZpZXdwb3J0VW5pdHM7
IH0KQEAgLTc5NSw2ICs3OTUsOCBAQCBwdWJsaWM6CiAgICAgQXBwbGVQYXlCdXR0b25UeXBlIGFw
cGxlUGF5QnV0dG9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFwcGxlUGF5QnV0
dG9uVHlwZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YXBwbGVQYXlCdXR0b25UeXBlKTsgfQog
I2VuZGlmCiAKKyAgICB2b2lkIGNoZWNrVmFyaWFibGVzSW5DdXN0b21Qcm9wZXJ0aWVzKGNvbnN0
IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJl
bnRTdHlsZSwgY29uc3QgU3R5bGVSZXNvbHZlciYpOworCiAvLyBhdHRyaWJ1dGUgc2V0dGVyIG1l
dGhvZHMKIAogICAgIHZvaWQgc2V0RGlzcGxheShEaXNwbGF5VHlwZSB2KSB7IG1fbm9uSW5oZXJp
dGVkRmxhZ3MuZWZmZWN0aXZlRGlzcGxheSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJv
cGVydHlEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Q
cm9wZXJ0eURhdGEuaAppbmRleCAxMzJlNmY1MjU2MGU2NWNhYzU0ZTRjNWI1M2ZkN2Q0MTAzNWY3
NWZhLi4xYmNkYjIyZThlOWQzYmMzOTQxMTMwNDg0MjhkYjNlNjg3ODU4MmRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0
eURhdGEuaApAQCAtMjIsNyArMjIsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlLmgiCi0jaW5jbHVkZSAiQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1
ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMzgsNiArMzcsOSBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhJiBv
dGhlcikgY29uc3QKICAgICB7CisgICAgICAgIGlmIChjb250YWluc1ZhcmlhYmxlcyAhPSBvdGhl
ci5jb250YWluc1ZhcmlhYmxlcykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgICAg
ICBpZiAodmFsdWVzLnNpemUoKSAhPSBvdGhlci52YWx1ZXMuc2l6ZSgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCkBAIC01MiwxOCArNTQsMjYgQEAgcHVibGljOgogCiAgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICAKLSAgICB2b2lkIHNldEN1c3RvbVByb3Bl
cnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZT4mJiB2YWx1ZSkKKyAgICB2b2lkIHNldEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2YWx1ZSwgYm9v
bCBpc1JlZ2lzdGVyZWQpCiAgICAgeworICAgICAgICBpZiAodmFsdWUtPmNvbnRhaW5zVmFyaWFi
bGVzKCkpCisgICAgICAgICAgICBjb250YWluc1ZhcmlhYmxlcyA9IHRydWU7CisgICAgICAgIGlm
IChpc1JlZ2lzdGVyZWQpCisgICAgICAgICAgICBjb250YWluc1VucmVzb2x2ZWRSZWdpc3RlcmVk
UHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIHZhbHVlcy5zZXQobmFtZSwgV1RGTW92ZSh2YWx1
ZSkpOwogICAgIH0KIAogICAgIEN1c3RvbVByb3BlcnR5VmFsdWVNYXAgdmFsdWVzOworICAgIGJv
b2wgY29udGFpbnNWYXJpYWJsZXMgeyBmYWxzZSB9OworICAgIGJvb2wgY29udGFpbnNVbnJlc29s
dmVkUmVnaXN0ZXJlZFByb3BlcnRpZXMgeyBmYWxzZSB9OwogCiBwcml2YXRlOgogICAgIFN0eWxl
Q3VzdG9tUHJvcGVydHlEYXRhKCkgPSBkZWZhdWx0OwogICAgIFN0eWxlQ3VzdG9tUHJvcGVydHlE
YXRhKGNvbnN0IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhJiBvdGhlcikKICAgICAgICAgOiBSZWZD
b3VudGVkPFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhPigpCiAgICAgICAgICwgdmFsdWVzKG90aGVy
LnZhbHVlcykKKyAgICAgICAgLCBjb250YWluc1ZhcmlhYmxlcyhvdGhlci5jb250YWluc1Zhcmlh
YmxlcykKKyAgICAgICAgLCBjb250YWluc1VucmVzb2x2ZWRSZWdpc3RlcmVkUHJvcGVydGllcyhv
dGhlci5jb250YWluc1VucmVzb2x2ZWRSZWdpc3RlcmVkUHJvcGVydGllcykKICAgICB7IH0KIH07
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA0MmFkM2ExODAwNzA4MGJhYjc1ZDM0NTk0NDM5NWE3YTdmY2E0NzczLi40MDM2
ODMwYjI2Yjg3M2ViNjBkNWYzNWE3NGU4OTEwMjE5OTJmNjQzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTgtMTAtMjUgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmVydCByMjM3MzQ3IHJlZ2lzdGVyZWQgY3VzdG9tIHByb3BlcnRpZXMu
Li4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDAzOQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwOTE5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjc3MtY3VzdG9tLXBy
b3BlcnRpZXMtYXBpL2NyYXNoLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBjc3Mt
Y3VzdG9tLXByb3BlcnRpZXMtYXBpL2NyYXNoLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogY3Nz
LWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jeWNsZXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3ljbGVzLmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUtZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvaW5saW5lLmh0bWw6
IFJlbW92ZWQuCisKIDIwMTgtMTAtMjUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5j
b20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTU5NwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggZGM5MmNlNjkzNzljM2FhMGJi
NGZmN2MzMTMyOTdlZTI2MDFhM2Q0Ny4uZmMwYTU5ZmY0NjFhNzQzNWNkZDU0ZmU1ZDA2ZTk0YWY3
YjVhYTViOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTgtMTAtMjUgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmVydCByMjM3MzQ3IHJlZ2lzdGVyZWQgY3VzdG9tIHByb3BlcnRpZXMuLi4g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDAzOQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwOTE5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXItcHJvcGVydHktc3ludGF4
LXBhcnNpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnRpZXMtaW5oZXJpdGFu
Y2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBy
b3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnR5LWNzc29tLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVl
cy1hcGkvdHlwZWRvbS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJlbmNlLXJl
Z2lzdGVyZWQtcHJvcGVydGllcy1jeWNsZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJlbmNl
LXJlZ2lzdGVyZWQtcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisKIDIwMTgtMTAtMjUgIEppZXdl
biBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV1BUXSBVcGRhdGUgcmVz
b3VyY2UtdGltaW5nIFdQVCB0ZXN0cyB0byB1c2UgdGhlIHJpZ2h0IGNyb3NzIG9yaWdpbgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jcmFzaC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2NyYXNoLWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFmMGZmNWU5MDA3MWRl
OTllZjBhYmY4OWI4NzgwMjZiZGQxMGIyMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2Ny
YXNoLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotVGhpcyBpcyB0
ZXh0Ci0KLQotUEFTUyBGYWxsYmFjayBpcyBoYW5kbGVkIGNvcnJlY3RseSwgYW5kIHdlIGRvbid0
IGNyYXNoIAotUEFTUyBTZXR0aW5nIHRoZSBpbmxpbmUgc3R5bGUgaXMgaGFuZGxlZCBjb3JyZWN0
bHkgCi1QQVNTIENTUy5yZWdpc3RlclByb3BlcnR5IAotUEFTUyBTZXR0aW5nIHRoZSBpbmxpbmUg
c3R5bGUgaXMgaGFuZGxlZCBjb3JyZWN0bHkgd2hlbiByZWdpc3RlcmVkIAotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2NyYXNoLmh0bWwgYi9MYXlv
dXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2NyYXNoLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDdmMmNkNzBhMmEzMWRlYWI5OWYwMDMyYzQxZmVhN2E1YzhhYjdm
OWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jcmFzaC5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsNjMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIg
WyBleHBlcmltZW50YWw6Q1NTQ3VzdG9tUHJvcGVydGllc0FuZFZhbHVlc0VuYWJsZWQ9dHJ1ZSBd
IC0tPgotPCEtLSBodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3Jj
LysvMDFjZTQzMTQwOWUzYTAxOTg1ODY3NzYyNmE5ODNjNTUxNjhkYTZkYy90aGlyZF9wYXJ0eS9X
ZWJLaXQvTGF5b3V0VGVzdHMvY3VzdG9tLXByb3BlcnRpZXMvcmVnaXN0ZXItcHJvcGVydHkuaHRt
bCAtLT4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci0KLTxzdHlsZT4KLSAgI3Rlc3QxIHsKLSAgICBmb250LXNpemU6IHZhcigtLWZvbywgMzBw
eCk7Ci0gICAgLS1mb286IHZhcigtLWJhciwgMjBweCk7Ci0gICAgLS1iYXI6IHZhcigtLWJheiwg
dmFyKC0tZm9vKSk7Ci0gIH0KLTwvc3R5bGU+Ci08ZGl2PgotICA8aDIgaWQ9dGVzdDE+VGhpcyBp
cyB0ZXh0PC9oMj4KLTwvZGl2PgotPHNjcmlwdD4KLXZhciBjb21wdXRlZFN0eWxlID0gZ2V0Q29t
cHV0ZWRTdHlsZSh0ZXN0MSk7Ci12YXIgaW5saW5lU3R5bGUgPSB0ZXN0MS5zdHlsZTsKLQotdGVz
dChmdW5jdGlvbigpIHsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5
VmFsdWUoJy0tYmF6JyksICcnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFBy
b3BlcnR5VmFsdWUoJy0tZm9vJyksICcnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxl
LmdldFByb3BlcnR5VmFsdWUoJy0tYmFyJyksICcnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRl
ZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtc2l6ZScpLCAnMzBweCcpOwotfSwgIkZhbGxi
YWNrIGlzIGhhbmRsZWQgY29ycmVjdGx5LCBhbmQgd2UgZG9uJ3QgY3Jhc2giKTsKLQotdGVzdChm
dW5jdGlvbigpIHsKLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYmF6JywgJyAgIDQwcHgn
KTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmF6
JyksICcgNDBweCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZSgnLS1mb28nKSwgJycpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJv
cGVydHlWYWx1ZSgnLS1iYXInKSwgJycpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUu
Z2V0UHJvcGVydHlWYWx1ZSgnLS1iYXonKSwgJyA0MHB4Jyk7Ci0gIGFzc2VydF9lcXVhbHMoY29t
cHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LXNpemUnKSwgJzMwcHgnKTsKLSAgaW5s
aW5lU3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tYmF6Jyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0
ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJheicpLCAnJyk7Ci0gIGFzc2VydF9lcXVhbHMo
Y29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWZvbycpLCAnJyk7Ci0gIGFzc2VydF9l
cXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJhcicpLCAnJyk7Ci0gIGFz
c2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LXNpemUnKSwg
JzMwcHgnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUo
Jy0tYmF6JyksICcnKTsKLX0sICJTZXR0aW5nIHRoZSBpbmxpbmUgc3R5bGUgaXMgaGFuZGxlZCBj
b3JyZWN0bHkiKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgQ1NTLnJlZ2lzdGVyUHJvcGVydHko
e25hbWU6ICctLWZvbycsIHN5bnRheDogJzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOiAnMjAwcHgn
LCBpbmhlcml0czogdHJ1ZX0pOwotICBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJy0tYmFy
Jywgc3ludGF4OiAnPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6ICcyMDBweCcsIGluaGVyaXRzOiB0
cnVlfSk7Ci0gIENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnLS1iYXonLCBzeW50YXg6ICc8
bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTogJzIwMHB4JywgaW5oZXJpdHM6IHRydWV9KTsKLX0sICJD
U1MucmVnaXN0ZXJQcm9wZXJ0eSIpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICBpbmxpbmVTdHls
ZS5zZXRQcm9wZXJ0eSgnLS1iYXonLCAnICAgNDBweCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1
dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXonKSwgJzQwcHgnKTsKLSAgYXNzZXJ0X2Vx
dWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tZm9vJyksICcyMDBweCcpOwot
ICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXInKSwg
JzIwMHB4Jyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KCctLWJheicpLCAnNDBweCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJv
cGVydHlWYWx1ZSgnZm9udC1zaXplJyksICcyMDBweCcpOwotICBpbmxpbmVTdHlsZS5yZW1vdmVQ
cm9wZXJ0eSgnLS1iYXonKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3Bl
cnR5VmFsdWUoJy0tYmF6JyksICcyMDBweCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1mb28nKSwgJzIwMHB4Jyk7Ci0gIGFzc2VydF9lcXVhbHMo
Y29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJhcicpLCAnMjAwcHgnKTsKLSAgYXNz
ZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtc2l6ZScpLCAn
MjAwcHgnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUo
Jy0tYmF6JyksICcyMDBweCcpOwotfSwgIlNldHRpbmcgdGhlIGlubGluZSBzdHlsZSBpcyBoYW5k
bGVkIGNvcnJlY3RseSB3aGVuIHJlZ2lzdGVyZWQiKTsKLQotPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkNDg2ZWIyMGE2OWI5YTU5OTUx
MDliZTA4YmIzNDVlNDRmOTY4MDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jeWNsZXMt
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotdGVzdAotCi10ZXN0
Ci0KLXRlc3QKLQotdGVzdAotCi10ZXN0Ci0KLQotUEFTUyBSZWdpc3RyYXRpb24gaXMgc3VjY2Vz
c2Z1bCAKLVBBU1MgSlMgQXR0cmlidXRlcyBhcmUgdmFsaWQgZm9yIGVsZW1lbnQgMSAKLVBBU1Mg
SlMgQXR0cmlidXRlcyBhcmUgdmFsaWQgZm9yIGVsZW1lbnQgMiAKLVBBU1MgSlMgQXR0cmlidXRl
cyBhcmUgdmFsaWQgZm9yIGVsZW1lbnQgMyAKLVBBU1MgSlMgQXR0cmlidXRlcyBhcmUgdmFsaWQg
Zm9yIGVsZW1lbnQgNCAKLVBBU1MgSlMgQXR0cmlidXRlcyBhcmUgdmFsaWQgZm9yIGVsZW1lbnQg
NSAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9j
eWNsZXMuaHRtbCBiL0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3ljbGVz
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlYzI0Yzg4NDQ4OWIzODk5MmM1
ZDYyYWQ3NTYyZWZkZDAyYmM5MmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jeWNsZXMu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD48IS0t
IHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpDU1NDdXN0b21Qcm9wZXJ0aWVzQW5k
VmFsdWVzRW5hYmxlZD10cnVlIF0gLS0+Ci08IS0tIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291
cmNlLmNvbS9jaHJvbWl1bS9zcmMvKy8wMWNlNDMxNDA5ZTNhMDE5ODU4Njc3NjI2YTk4M2M1NTE2
OGRhNmRjL3RoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9jdXN0b20tcHJvcGVydGllcy9y
ZWdpc3Rlci1wcm9wZXJ0eS5odG1sIC0tPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHN0eWxlPgotICAjcGFyZW50MSB7Ci0gICAgd2lk
dGg6IDUwMHB4OwotICAgIGJhY2tncm91bmQ6IGJsdWU7Ci0gIH0KLSAgI2NoaWxkMSB7Ci0gICAg
YmFja2dyb3VuZDogZ3JlZW47Ci0gICAgZm9udC1zaXplOiAxMHB4OwotICAgIC0tYTogMTBlbTsK
LSAgICB3aWR0aDogdmFyKC0tYSk7Ci0gIH0KLQotICAjcGFyZW50MiB7Ci0gICAgd2lkdGg6IDUw
MHB4OwotICAgIGJhY2tncm91bmQ6IGJsdWU7Ci0gICAgLS1hOiAxMGVtOwotICAgIGZvbnQtc2l6
ZTogY2FsYyggdmFyKC0tYSkgKyAtMTUwcHgpOwotICB9Ci0gICNjaGlsZDIgewotICAgIGJhY2tn
cm91bmQ6IGdyZWVuOwotICAgIHdpZHRoOiB2YXIoLS1hKTsKLSAgfQotCi0gICNwYXJlbnQzIHsK
LSAgICB3aWR0aDogNTAwcHg7Ci0gICAgYmFja2dyb3VuZDogYmx1ZTsKLSAgICAtLWI6IDEwZW07
Ci0gICAgZm9udC1zaXplOiBjYWxjKCB2YXIoLS1iKSArIC0xNTBweCk7Ci0gIH0KLSAgI2NoaWxk
MyB7Ci0gICAgYmFja2dyb3VuZDogZ3JlZW47Ci0gICAgd2lkdGg6IHZhcigtLWIpOwotICB9Ci0K
LSAgI3BhcmVudDQgewotICAgIHdpZHRoOiA1MDBweDsKLSAgICBiYWNrZ3JvdW5kOiBibHVlOwot
ICAgIC0tYjogMTBlbTsKLSAgICBmb250LXNpemU6IGNhbGMoIHZhcigtLWIpICsgLTE1MHB4KTsK
LSAgfQotICAjY2hpbGQ0IHsKLSAgICBiYWNrZ3JvdW5kOiBncmVlbjsKLSAgICAtLWE6IHZhcigt
LWIpOwotICAgIGZvbnQtc2l6ZTogdmFyKC0tYSk7Ci0gICAgd2lkdGg6IHZhcigtLWEpOwotICB9
Ci0KLSAgI3BhcmVudDUgewotICAgIHdpZHRoOiA1MDBweDsKLSAgICBiYWNrZ3JvdW5kOiBibHVl
OwotICAgIC0tYjogNWVtOwotICAgIGZvbnQtc2l6ZTogY2FsYyggdmFyKC0tYikgKyAtNzBweCk7
Ci0gIH0KLSAgI2NoaWxkNSB7Ci0gICAgYmFja2dyb3VuZDogZ3JlZW47Ci0gICAgLS1jOiB2YXIo
LS1iKTsKLSAgICBmb250LXNpemU6IHZhcigtLWMpOwotICAgIHdpZHRoOiB2YXIoLS1jKTsKLSAg
fQotPC9zdHlsZT4KLTxkaXY+Ci0gIDxkaXYgaWQ9InBhcmVudDEiPjxkaXYgaWQ9ImNoaWxkMSI+
PHA+dGVzdDwvcD48L2Rpdj48L2Rpdj4KLSAgPGRpdiBpZD0icGFyZW50MiI+PGRpdiBpZD0iY2hp
bGQyIj48cD50ZXN0PC9wPjwvZGl2PjwvZGl2PgotICA8ZGl2IGlkPSJwYXJlbnQzIj48ZGl2IGlk
PSJjaGlsZDMiPjxwPnRlc3Q8L3A+PC9kaXY+PC9kaXY+Ci0gIDxkaXYgaWQ9InBhcmVudDQiPjxk
aXYgaWQ9ImNoaWxkNCI+PHA+dGVzdDwvcD48L2Rpdj48L2Rpdj4KLSAgPGRpdiBpZD0icGFyZW50
NSI+PGRpdiBpZD0iY2hpbGQ1Ij48cD50ZXN0PC9wPjwvZGl2PjwvZGl2PgotPC9kaXY+Ci08c2Ny
aXB0PgotCi1mdW5jdGlvbiB0ZXN0X3Byb3AoaWQsIHByb3AsIGV4cGVjdGVkKSB7Ci0gIGFzc2Vy
dF9lcXVhbHMod2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
aWQpKS5nZXRQcm9wZXJ0eVZhbHVlKHByb3ApLnRyaW0oKSwgZXhwZWN0ZWQpOwotfQotCi10ZXN0
KGZ1bmN0aW9uKCkgewotICBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7Ci0gICAgbmFtZTogJy0tYScs
Ci0gICAgc3ludGF4OiAnPGxlbmd0aD4nLAotICAgIGluaGVyaXRzOiB0cnVlLAotICAgIGluaXRp
YWxWYWx1ZTogJzIwMHB4JwotICB9KQotfSwgIlJlZ2lzdHJhdGlvbiBpcyBzdWNjZXNzZnVsIik7
Ci10ZXN0KGZ1bmN0aW9uKCkgewotICB0ZXN0X3Byb3AoJ2NoaWxkMScsICd3aWR0aCcsICcxMDBw
eCcpOwotICB0ZXN0X3Byb3AoJ2NoaWxkMScsICctLWEnLCAnMTAwcHgnKTsKLSAgdGVzdF9wcm9w
KCdjaGlsZDEnLCAnLS1iJywgJycpOwotICB0ZXN0X3Byb3AoJ3BhcmVudDEnLCAnLS1hJywgJzIw
MHB4Jyk7Ci0gIHRlc3RfcHJvcCgncGFyZW50MScsICctLWInLCAnJyk7Ci19LCAiSlMgQXR0cmli
dXRlcyBhcmUgdmFsaWQgZm9yIGVsZW1lbnQgMSIpOwotdGVzdChmdW5jdGlvbigpIHsKLSAgdGVz
dF9wcm9wKCdjaGlsZDInLCAnd2lkdGgnLCAnMTYwcHgnKTsKLSAgdGVzdF9wcm9wKCdjaGlsZDIn
LCAnLS1hJywgJzE2MHB4Jyk7Ci0gIHRlc3RfcHJvcCgnY2hpbGQyJywgJy0tYicsICcnKTsKLSAg
dGVzdF9wcm9wKCdjaGlsZDInLCAnZm9udC1zaXplJywgJzE2cHgnKTsKLSAgdGVzdF9wcm9wKCdw
YXJlbnQyJywgJy0tYScsICcxNjBweCcpOwotICB0ZXN0X3Byb3AoJ3BhcmVudDInLCAnLS1iJywg
JycpOwotICB0ZXN0X3Byb3AoJ3BhcmVudDInLCAnZm9udC1zaXplJywgJzE2cHgnKTsKLX0sICJK
UyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCAyIik7Ci10ZXN0KGZ1bmN0aW9uKCkg
ewotICB0ZXN0X3Byb3AoJ2NoaWxkMycsICd3aWR0aCcsICcxMDBweCcpOwotICB0ZXN0X3Byb3Ao
J2NoaWxkMycsICctLWEnLCAnMjAwcHgnKTsKLSAgdGVzdF9wcm9wKCdjaGlsZDMnLCAnLS1iJywg
JzEwZW0nKTsKLSAgdGVzdF9wcm9wKCdjaGlsZDMnLCAnZm9udC1zaXplJywgJzEwcHgnKTsKLSAg
dGVzdF9wcm9wKCdwYXJlbnQzJywgJy0tYScsICcyMDBweCcpOwotICB0ZXN0X3Byb3AoJ3BhcmVu
dDMnLCAnLS1iJywgJzEwZW0nKTsKLSAgdGVzdF9wcm9wKCdwYXJlbnQzJywgJ2ZvbnQtc2l6ZScs
ICcxMHB4Jyk7Ci19LCAiSlMgQXR0cmlidXRlcyBhcmUgdmFsaWQgZm9yIGVsZW1lbnQgMyIpOwot
dGVzdChmdW5jdGlvbigpIHsKLSAgdGVzdF9wcm9wKCdjaGlsZDQnLCAnd2lkdGgnLCAnMTAwcHgn
KTsKLSAgdGVzdF9wcm9wKCdjaGlsZDQnLCAnLS1hJywgJzEwMHB4Jyk7Ci0gIHRlc3RfcHJvcCgn
Y2hpbGQ0JywgJy0tYicsICcxMGVtJyk7Ci0gIHRlc3RfcHJvcCgnY2hpbGQ0JywgJ2ZvbnQtc2l6
ZScsICcxMHB4Jyk7Ci0gIHRlc3RfcHJvcCgncGFyZW50NCcsICctLWEnLCAnMjAwcHgnKTsKLSAg
dGVzdF9wcm9wKCdwYXJlbnQ0JywgJy0tYicsICcxMGVtJyk7Ci0gIHRlc3RfcHJvcCgncGFyZW50
NCcsICdmb250LXNpemUnLCAnMTBweCcpOwotfSwgIkpTIEF0dHJpYnV0ZXMgYXJlIHZhbGlkIGZv
ciBlbGVtZW50IDQiKTsKLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIHRlc3RfcHJvcCgnY2hpbGQ1Jywg
J3dpZHRoJywgJzI1MHB4Jyk7Ci0gIHRlc3RfcHJvcCgnY2hpbGQ1JywgJy0tYycsICc1ZW0nKTsK
LSAgdGVzdF9wcm9wKCdjaGlsZDUnLCAnLS1iJywgJzVlbScpOwotICB0ZXN0X3Byb3AoJ2NoaWxk
NScsICdmb250LXNpemUnLCAnNTBweCcpOwotICB0ZXN0X3Byb3AoJ3BhcmVudDUnLCAnLS1hJywg
JzIwMHB4Jyk7Ci0gIHRlc3RfcHJvcCgncGFyZW50NScsICctLWInLCAnNWVtJyk7Ci0gIHRlc3Rf
cHJvcCgncGFyZW50NScsICdmb250LXNpemUnLCAnMTBweCcpOwotfSwgIkpTIEF0dHJpYnV0ZXMg
YXJlIHZhbGlkIGZvciBlbGVtZW50IDUiKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUtZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTY4MTYyNjUyOWZiZjEwYjFjNTBmZjAwYzM3
MTExYTkwZWM2YzFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvaW5saW5lLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLXRlc3QKLQotCi1QQVNTIENTU09N
IHNldHRlcnMgZnVuY3Rpb24gYXMgZXhwZWN0ZWQgZm9yIHVucmVnaXN0ZXJlZCBwcm9wZXJ0aWVz
IAotUEFTUyBDU1MucmVnaXN0ZXJQcm9wZXJ0eSAKLVBBU1MgRm9ybWVybHkgdmFsaWQgdmFsdWVz
IGFyZSBzdGlsbCByZWFkYWJsZSBmcm9tIGlubGluZSBzdHlsZXMgYnV0IGFyZSBjb21wdXRlZCBh
cyB0aGUgdW5zZXQgdmFsdWUgCi1QQVNTIFZhbHVlcyBub3QgbWF0Y2hpbmcgdGhlIHJlZ2lzdGVy
ZWQgdHlwZSBjYW4ndCBiZSBzZXQgCi1QQVNTIFZhbHVlcyBjYW4gYmUgcmVtb3ZlZCBmcm9tIGlu
bGluZSBzdHlsZXMgCi1QQVNTIFN0eWxlc2hlZXRzIGNhbiBiZSBtb2RpZmllZCBieSBDU1NPTSAK
LVBBU1MgVmFsaWQgdmFsdWVzIGNhbiBiZSBzZXQgb24gaW5saW5lIHN0eWxlcyAKLVBBU1MgVmFy
IHZhbHVlcyBhcmUgYWNjZXB0ZWQgCi1QQVNTIFZhciB2YWx1ZXMgYXJlIGFjY2VwdGVkIHdpdGhv
dXQgdmFsaWRhdGlvbiAKLVBBU1MgVmFyIHZhbHVlcyBhcmUgYWNjZXB0ZWQgd2l0aG91dCB2YWxp
ZGF0aW9uLCBldmVuIHdoZW4gaXQgaXMgb2J2aW91cyB0aGV5IHdpbGwgbm90IHBhcnNlIAotUEFT
UyBWYXIgdmFsdWVzIGFyZSBhY2NlcHRlZCB3aXRob3V0IHZhbGlkYXRpb24sIGV2ZW4gd2hlbiBp
dCBpcyBvYnZpb3VzIHRoZXkgd2lsbCBub3QgcGFyc2UgKHR5cGVkKSAKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUuaHRtbCBiL0xheW91
dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvaW5saW5lLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDUxYmE3ZmViYzA2Mzk0NDY1YmNjZmVkODRjZWE5ZmUyMzE1NGVi
MDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDEyMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5l
ciBbIGV4cGVyaW1lbnRhbDpDU1NDdXN0b21Qcm9wZXJ0aWVzQW5kVmFsdWVzRW5hYmxlZD10cnVl
IF0gLS0+Ci08IS0tIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9z
cmMvKy8wMWNlNDMxNDA5ZTNhMDE5ODU4Njc3NjI2YTk4M2M1NTE2OGRhNmRjL3RoaXJkX3BhcnR5
L1dlYktpdC9MYXlvdXRUZXN0cy9jdXN0b20tcHJvcGVydGllcy9yZWdpc3Rlci1wcm9wZXJ0eS5o
dG1sIC0tPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLQotPHN0eWxlPgotICAjdGVzdDEgewotICAgIC0tYTogMTBlbTsKLSAgICAtLWI6IDEw
ZW07Ci0gIH0KLTwvc3R5bGU+Ci08ZGl2PgotICA8ZGl2IGlkPXRlc3QxPjxwPnRlc3Q8L3A+PC9k
aXY+Ci08L2Rpdj4KLTxzY3JpcHQ+Ci0KLXZhciBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRT
dHlsZSh0ZXN0MSk7Ci12YXIgaW5saW5lU3R5bGUgPSB0ZXN0MS5zdHlsZTsKLXZhciBzaGVldFN0
eWxlID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5bGU7Ci0KLXRlc3Qo
ZnVuY3Rpb24oKSB7Ci0gIC8vIE5vdGhpbmcgcmVnaXN0ZXJlZCB5ZXQsIHdoYXRldmVyIHlvdSBz
cGVjaWZ5IHdvcmtzCi0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZh
bHVlKCctLWEnKSwgJyAxMGVtJyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQ
cm9wZXJ0eVZhbHVlKCctLWInKSwgJyAxMGVtJyk7Ci0KLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVy
dHkoJy0tYScsICdoZWxsbycpOwotICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1iJywgJ2Jv
bmpvdXInKTsKLQotICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUo
Jy0tYScpLCAnaGVsbG8nKTsKLSAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0
eVZhbHVlKCctLWInKSwgJ2JvbmpvdXInKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxl
LmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnaGVsbG8nKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21w
dXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnYm9uam91cicpOwotfSwgIkNTU09N
IHNldHRlcnMgZnVuY3Rpb24gYXMgZXhwZWN0ZWQgZm9yIHVucmVnaXN0ZXJlZCBwcm9wZXJ0aWVz
Iik7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAn
LS1hJywgc3ludGF4OiAnPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6ICcwcHgnLCBpbmhlcml0czog
ZmFsc2V9KTsKLSAgQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICctLXJlZ2lzdGVyZWQnLCBz
eW50YXg6ICc8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTogJzBweCcsIGluaGVyaXRzOiBmYWxzZX0p
OwotfSwgIkNTUy5yZWdpc3RlclByb3BlcnR5Iik7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIGFz
c2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdoZWxsbycp
OwotICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAn
Ym9uam91cicpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgnLS1hJyksICcwcHgnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3Bl
cnR5VmFsdWUoJy0tYicpLCAnYm9uam91cicpOwotfSwgIkZvcm1lcmx5IHZhbGlkIHZhbHVlcyBh
cmUgc3RpbGwgcmVhZGFibGUgZnJvbSBpbmxpbmUgc3R5bGVzIGJ1dCBhcmUgY29tcHV0ZWQgYXMg
dGhlIHVuc2V0IHZhbHVlIik7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIGlubGluZVN0eWxlLnNl
dFByb3BlcnR5KCctLWEnLCAnaGknKTsKLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYics
ICdoaScpOwotICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0t
YScpLCAnaGVsbG8nKTsKLSAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZh
bHVlKCctLWInKSwgJ2hpJyk7Ci19LCAiVmFsdWVzIG5vdCBtYXRjaGluZyB0aGUgcmVnaXN0ZXJl
ZCB0eXBlIGNhbid0IGJlIHNldCIpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICBpbmxpbmVTdHls
ZS5yZW1vdmVQcm9wZXJ0eSgnLS1hJyk7Ci0gIGlubGluZVN0eWxlLnNldFByb3BlcnR5KCctLWIn
LCAnJyk7Ci0gIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1h
JyksICcnKTsKLSAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCct
LWInKSwgJycpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgnLS1hJyksICcxNjBweCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJv
cGVydHlWYWx1ZSgnLS1iJyksICcgMTBlbScpOwotfSwgIlZhbHVlcyBjYW4gYmUgcmVtb3ZlZCBm
cm9tIGlubGluZSBzdHlsZXMiKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgc2hlZXRTdHlsZS5z
ZXRQcm9wZXJ0eSgnLS1hJywgJ2JhbmFuYScpOyAvLyBJbnZhbGlkLCBubyBjaGFuZ2UKLSAgYXNz
ZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnMTYwcHgn
KTsKLSAgc2hlZXRTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJzIwcHgnKTsKLSAgYXNzZXJ0X2Vx
dWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnMjBweCcpOwotICBz
aGVldFN0eWxlLnNldFByb3BlcnR5KCctLWEnLCAnaW5pdGlhbCcpOwotICBhc3NlcnRfZXF1YWxz
KGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICcwcHgnKTsKLX0sICJTdHls
ZXNoZWV0cyBjYW4gYmUgbW9kaWZpZWQgYnkgQ1NTT00iKTsKLQotdGVzdChmdW5jdGlvbigpIHsK
LSAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYScsICczMGVtJyk7Ci0gIGlubGluZVN0eWxl
LnNldFByb3BlcnR5KCctLWInLCAnMjBlbScpOwotICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxl
LmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnMzBlbScpOwotICBhc3NlcnRfZXF1YWxzKGlubGlu
ZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnMjBlbScpOwotICBhc3NlcnRfZXF1YWxz
KGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICc0ODBweCcpOwotICBhc3Nl
cnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICcyMGVtJyk7
Ci0gIGlubGluZVN0eWxlLnNldFByb3BlcnR5KCctLWEnLCAnaW5oZXJpdCcpOwotICBhc3NlcnRf
ZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnaW5oZXJpdCcpOwot
ICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICcw
cHgnKTsKLX0sICJWYWxpZCB2YWx1ZXMgY2FuIGJlIHNldCBvbiBpbmxpbmUgc3R5bGVzIik7Ci0K
LXRlc3QoZnVuY3Rpb24oKSB7Ci0gIGlubGluZVN0eWxlLnNldFByb3BlcnR5KCctLWInLCAnIDIw
cHgnKTsKLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYScsICdjYWxjKHZhcigtLWIpICsg
MTBweCknKTsKLSAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCct
LWInKSwgJyAyMHB4Jyk7Ci0gIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZSgnLS1hJyksICdjYWxjKHZhcigtLWIpICsgMTBweCknKTsKLSAgYXNzZXJ0X2VxdWFscyhj
b21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnIDIwcHgnKTsKLSAgYXNzZXJ0
X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnMzBweCcpOwot
fSwgIlZhciB2YWx1ZXMgYXJlIGFjY2VwdGVkIik7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIGlu
bGluZVN0eWxlLnNldFByb3BlcnR5KCctLWInLCAnaGVsbG8nKTsKLSAgaW5saW5lU3R5bGUuc2V0
UHJvcGVydHkoJy0tYScsICdjYWxjKHZhcigtLWIpICsgMTVweCknKTsKLSAgYXNzZXJ0X2VxdWFs
cyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWInKSwgJ2hlbGxvJyk7Ci0gIGFzc2Vy
dF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdjYWxjKHZhcigt
LWIpICsgMTVweCknKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5
VmFsdWUoJy0tYicpLCAnaGVsbG8nKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdl
dFByb3BlcnR5VmFsdWUoJy0tYScpLCAnMHB4Jyk7Ci19LCAiVmFyIHZhbHVlcyBhcmUgYWNjZXB0
ZWQgd2l0aG91dCB2YWxpZGF0aW9uIik7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIGlubGluZVN0
eWxlLnNldFByb3BlcnR5KCctLWInLCAnaGVsbG8nKTsKLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVy
dHkoJy0tYScsICdjYWxjKHZhcigtLWIpIDE1cHgpJyk7Ci0gIGFzc2VydF9lcXVhbHMoaW5saW5l
U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICdoZWxsbycpOwotICBhc3NlcnRfZXF1YWxz
KGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnY2FsYyh2YXIoLS1iKSAxNXB4
KScpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1i
JyksICdoZWxsbycpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZSgnLS1hJyksICcwcHgnKTsKLX0sICJWYXIgdmFsdWVzIGFyZSBhY2NlcHRlZCB3aXRob3V0
IHZhbGlkYXRpb24sIGV2ZW4gd2hlbiBpdCBpcyBvYnZpb3VzIHRoZXkgd2lsbCBub3QgcGFyc2Ui
KTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYics
ICdoZWxsbycpOwotICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJ2NhbGModmFyKC0t
cmVnaXN0ZXJlZCkgMTVweCknKTsKLSAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9w
ZXJ0eVZhbHVlKCctLWInKSwgJ2hlbGxvJyk7Ci0gIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUu
Z2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdjYWxjKHZhcigtLXJlZ2lzdGVyZWQpIDE1cHgpJyk7
Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWInKSwg
J2hlbGxvJyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KCctLWEnKSwgJzBweCcpOwotfSwgIlZhciB2YWx1ZXMgYXJlIGFjY2VwdGVkIHdpdGhvdXQgdmFs
aWRhdGlvbiwgZXZlbiB3aGVuIGl0IGlzIG9idmlvdXMgdGhleSB3aWxsIG5vdCBwYXJzZSAodHlw
ZWQpIik7Ci0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3Rl
ci1wcm9wZXJ0eS1zeW50YXgtcGFyc2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBp
L3JlZ2lzdGVyLXByb3BlcnR5LXN5bnRheC1wYXJzaW5nLWV4cGVjdGVkLnR4dAppbmRleCAyZWE3
OGUyOTgwNjA2OGU1YjNjM2Y2ZWM3OWY2YmY5YThhNmIxOGNkLi5lOWUyZmU3MzhhYjNhMmRiZGFm
ZDkxMGI2NDY2MWQyYWRkODNlMDNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lz
dGVyLXByb3BlcnR5LXN5bnRheC1wYXJzaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1
ZXMtYXBpL3JlZ2lzdGVyLXByb3BlcnR5LXN5bnRheC1wYXJzaW5nLWV4cGVjdGVkLnR4dApAQCAt
MSw1ICsxLDUgQEAKIAotUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J2EnIGlzIHZhbGlk
IAorRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J2EnIGlzIHZhbGlkIFRoZSBnaXZlbiBp
bml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgogRkFJTCBz
eW50YXg6JyAqICcsIGluaXRpYWxWYWx1ZTonYicgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwg
dmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCiBQQVNTIHN5bnRheDon
PGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzJweCcgaXMgdmFsaWQgCiBGQUlMIHN5bnRheDonIDxu
dW1iZXI+JywgaW5pdGlhbFZhbHVlOic1JyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1
ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KQEAgLTksMTEgKzksMTEgQEAg
RkFJTCBzeW50YXg6JyA8bGVuZ3RoPisgfCA8cGVyY2VudGFnZT4nLCBpbml0aWFsVmFsdWU6JzJw
eCA4cHgnIGlzIHZhbGlkIFRoZSBnaXYKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPnw8cGVyY2VudGFn
ZT58PGxlbmd0aC1wZXJjZW50YWdlPicsIGluaXRpYWxWYWx1ZTonMnB4JyBpcyB2YWxpZCAKIEZB
SUwgc3ludGF4Oic8Y29sb3I+IHwgPGltYWdlPiB8IDx1cmw+IHwgPGludGVnZXI+IHwgPGFuZ2xl
PicsIGluaXRpYWxWYWx1ZToncmVkJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBk
b2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIEZBSUwgc3ludGF4Oic8dGltZT4g
fCA8cmVzb2x1dGlvbj4gfCA8dHJhbnNmb3JtLWxpc3Q+IHwgPGN1c3RvbS1pZGVudD4nLCBpbml0
aWFsVmFsdWU6J3JlZCcgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3Qg
cGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCi1QQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1
ZTonOj4gaGVsbG8nIGlzIHZhbGlkIAotUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6Jyhb
IGJyYWNrZXRzIF0pIHsgeWF5ICg/Pyl9JyBpcyB2YWxpZCAKLVBBU1Mgc3ludGF4OicqJywgaW5p
dGlhbFZhbHVlOid5ZXAgJ3RoaXMgaXMgdmFsaWQgdG9vJycgaXMgdmFsaWQgCi1QQVNTIHN5bnRh
eDonKicsIGluaXRpYWxWYWx1ZTondW5tYXRjaGVkIG9wZW5pbmcgYnJhY2tldCBpcyB2YWxpZCA6
KCcgaXMgdmFsaWQgCi1QQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonIicgaXMgdmFsaWQg
CitGQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonOj4gaGVsbG8nIGlzIHZhbGlkIFRoZSBn
aXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4Lgor
RkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6JyhbIGJyYWNrZXRzIF0pIHsgeWF5ICg/Pyl9
JyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhl
IGdpdmVuIHN5bnRheC4KK0ZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOid5ZXAgJ3RoaXMg
aXMgdmFsaWQgdG9vJycgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3Qg
cGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCitGQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1
ZTondW5tYXRjaGVkIG9wZW5pbmcgYnJhY2tldCBpcyB2YWxpZCA6KCcgaXMgdmFsaWQgVGhlIGdp
dmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCitG
QUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonIicgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRp
YWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCiBQQVNTIHN5bnRh
eDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzAnIGlzIHZhbGlkIAogUEFTUyBzeW50YXg6Jzxs
ZW5ndGg+JywgaW5pdGlhbFZhbHVlOicxMHB4IC8qOikqLycgaXMgdmFsaWQgCiBQQVNTIHN5bnRh
eDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JyBjYWxjKC0ycHgpJyBpcyB2YWxpZCAKQEAgLTYz
LDcgKzYzLDcgQEAgYmFuYW5hXHIKIEZBSUwgc3ludGF4OidiYQwKIHwJbmFccnxueWEnLCBpbml0
aWFsVmFsdWU6J255YScgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3Qg
cGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCiBGQUlMIHN5bnRheDonbnVsbCcsIGluaXRpYWxW
YWx1ZTonbnVsbCcgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFy
c2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCi1QQVNTIHN5bnRheDondW5kZWZpbmVkJywgaW5pdGlh
bFZhbHVlOid1bmRlZmluZWQnIGlzIHZhbGlkIAorRkFJTCBzeW50YXg6J3VuZGVmaW5lZCcsIGlu
aXRpYWxWYWx1ZTondW5kZWZpbmVkJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBk
b2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIEZBSUwgc3ludGF4OidhcnJheScs
IGluaXRpYWxWYWx1ZTonYXJyYXknIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRv
ZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgogUEFTUyBzeW50YXg6J2JhbmFuYSxu
eWEnLCBpbml0aWFsVmFsdWU6J2JhbmFuYScgaXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4OidiYW5h
blw2MScsIGluaXRpYWxWYWx1ZTonYmFuYW5hJyBpcyBpbnZhbGlkIApAQCAtODUsMzYgKzg1LDM2
IEBAIFBBU1Mgc3ludGF4Oid1bnNldCcsIGluaXRpYWxWYWx1ZTondW5zZXQnIGlzIGludmFsaWQK
IEZBSUwgc3ludGF4Oic8bGVuZ3RoPnxpbml0aWFsJywgaW5pdGlhbFZhbHVlOicxMHB4JyBpcyBp
bnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0
eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVl
LCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwogRkFJTCBzeW50YXg6JzxsZW5ndGg+
fElOSEVSSVQnLCBpbml0aWFsVmFsdWU6JzEwcHgnIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czog
ZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6
IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBk
aWQgbm90IHRocm93CiBGQUlMIHN5bnRheDonPHBlcmNlbnRhZ2U+fHVuc0V0JywgaW5pdGlhbFZh
bHVlOicyJScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJl
Z2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6
IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKLUZBSUwgc3lu
dGF4OicqJywgaW5pdGlhbFZhbHVlOidpbml0aWFsJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6
IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4
OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIg
ZGlkIG5vdCB0aHJvdwotRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J2luaGVyaXQnIGlz
IGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3Bl
cnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFs
dWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93Ci1GQUlMIHN5bnRheDonKicsIGlu
aXRpYWxWYWx1ZTondW5zZXQnIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigp
ID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5p
dGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93
Ci1GQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZToncmV2ZXJ0JyBpcyBpbnZhbGlkIGFzc2Vy
dF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFt
ZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czog
ZmFsc2V9KSIgZGlkIG5vdCB0aHJvdworUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J2lu
aXRpYWwnIGlzIGludmFsaWQgCitQQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonaW5oZXJp
dCcgaXMgaW52YWxpZCAKK1BBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOid1bnNldCcgaXMg
aW52YWxpZCAKK1BBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOidyZXZlcnQnIGlzIGludmFs
aWQgCiBQQVNTIHN5bnRheDonPGN1c3RvbS1pZGVudD4nLCBpbml0aWFsVmFsdWU6J2luaXRpYWwn
IGlzIGludmFsaWQgCiBQQVNTIHN5bnRheDonPGN1c3RvbS1pZGVudD4rJywgaW5pdGlhbFZhbHVl
Oidmb28gaW5oZXJpdCBiYXInIGlzIGludmFsaWQgCi1GQUlMIHN5bnRheDonKicsIGluaXRpYWxW
YWx1ZTonKScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJl
Z2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6
IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKLUZBSUwgc3lu
dGF4OicqJywgaW5pdGlhbFZhbHVlOicoWyldJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1
bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBz
eW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlk
IG5vdCB0aHJvdwotRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3doZWUhJyBpcyBpbnZh
bGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7
bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBp
bmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwotRkFJTCBzeW50YXg6JyonLCBpbml0aWFs
VmFsdWU6JyIKLScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NT
LnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFs
dWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKLUZBSUwg
c3ludGF4OicqJywgaW5pdGlhbFZhbHVlOid1cmwobW9vICcnKScgaXMgaW52YWxpZCBhc3NlcnRf
dGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUs
IHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZh
bHNlfSkiIGRpZCBub3QgdGhyb3cKLUZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOidzZW1p
O2NvbG9uJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVn
aXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTog
aW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwotRkFJTCBzeW50
YXg6JyonLCBpbml0aWFsVmFsdWU6J3ZhcihpbnZhbGlkIHZhciByZWYpJyBpcyBpbnZhbGlkIGFz
c2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTog
bmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0
czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwotRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6
J3ZhcigtLWZvbyknIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENT
Uy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZh
bHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CitQQVNT
IHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonKScgaXMgaW52YWxpZCAKK1BBU1Mgc3ludGF4Oicq
JywgaW5pdGlhbFZhbHVlOicoWyldJyBpcyBpbnZhbGlkIAorUEFTUyBzeW50YXg6JyonLCBpbml0
aWFsVmFsdWU6J3doZWUhJyBpcyBpbnZhbGlkIAorUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFs
dWU6JyIKKycgaXMgaW52YWxpZCAKK1BBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOid1cmwo
bW9vICcnKScgaXMgaW52YWxpZCAKK1BBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOidzZW1p
O2NvbG9uJyBpcyBpbnZhbGlkIAorUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3Zhcihp
bnZhbGlkIHZhciByZWYpJyBpcyBpbnZhbGlkIAorUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFs
dWU6J3ZhcigtLWZvbyknIGlzIGludmFsaWQgCiBQQVNTIHN5bnRheDonYmFuYW5hJywgaW5pdGlh
bFZhbHVlOidiQW5BbkEnIGlzIGludmFsaWQgCiBQQVNTIHN5bnRheDonPGxlbmd0aD4nLCBpbml0
aWFsVmFsdWU6J3ZhcigtLW1vbyknIGlzIGludmFsaWQgCiBQQVNTIHN5bnRheDonPGxlbmd0aD4n
LCBpbml0aWFsVmFsdWU6JzEwJyBpcyBpbnZhbGlkIAogRkFJTCBzeW50YXg6JzxsZW5ndGg+Jywg
aW5pdGlhbFZhbHVlOicxMCUnIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigp
ID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5p
dGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93
CiBGQUlMIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6J2NhbGMoNXB4ICsgMTAlKScg
aXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJv
cGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxW
YWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIFBBU1Mgc3ludGF4Oic8bGVu
Z3RoPicsIGluaXRpYWxWYWx1ZTonY2FsYyg1cHggKiAzcHggLyA2cHgpJyBpcyBpbnZhbGlkIAot
RkFJTCBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOicxMGVtJyBpcyBpbnZhbGlkIGFz
c2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTog
bmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0
czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdworUEFTUyBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlh
bFZhbHVlOicxMGVtJyBpcyBpbnZhbGlkIAogRkFJTCBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlh
bFZhbHVlOicxMHZtaW4nIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+
IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlh
bFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93Ci1G
QUlMIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6J2NhbGMoNHB4ICsgM2VtKScgaXMg
aW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVy
dHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1
ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKLUZBSUwgc3ludGF4Oic8bGVuZ3Ro
PicsIGluaXRpYWxWYWx1ZTonY2FsYyg0cHggKyBjYWxjKDggKiAyZW0pKScgaXMgaW52YWxpZCBh
c3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6
IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJp
dHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKLUZBSUwgc3ludGF4Oic8bGVuZ3RoPisnLCBpbml0
aWFsVmFsdWU6J2NhbGMoMmV4ICsgMTZweCknIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVu
Y3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5
bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQg
bm90IHRocm93CitQQVNTIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6J2NhbGMoNHB4
ICsgM2VtKScgaXMgaW52YWxpZCAKK1BBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1
ZTonY2FsYyg0cHggKyBjYWxjKDggKiAyZW0pKScgaXMgaW52YWxpZCAKK1BBU1Mgc3ludGF4Oic8
bGVuZ3RoPisnLCBpbml0aWFsVmFsdWU6J2NhbGMoMmV4ICsgMTZweCknIGlzIGludmFsaWQgCiBQ
QVNTIHN5bnRheDonPGxlbmd0aD4rJywgaW5pdGlhbFZhbHVlOicxMHB4IGNhbGMoMjBweCArIDRy
ZW0pJyBpcyBpbnZhbGlkIAogUEFTUyBzeW50YXg6JzxwZXJjZW50YWdlPiB8IDxsZW5ndGg+Kycs
IGluaXRpYWxWYWx1ZTonY2FsYygxMDB2aCAtIDEwcHgpIDMwcHgnIGlzIGludmFsaWQgCiBQQVNT
IHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzEwcHg7JyBpcyBpbnZhbGlkIAotRkFJ
TCBzeW50YXg6JzxsZW5ndGgtcGVyY2VudGFnZT4nLCBpbml0aWFsVmFsdWU6J2NhbGMoMnB4ICsg
MTAlICsgN2V4KScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NT
LnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFs
dWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKK1BBU1Mg
c3ludGF4Oic8bGVuZ3RoLXBlcmNlbnRhZ2U+JywgaW5pdGlhbFZhbHVlOidjYWxjKDJweCArIDEw
JSArIDdleCknIGlzIGludmFsaWQgCiBGQUlMIHN5bnRheDonPHBlcmNlbnRhZ2U+JywgaW5pdGlh
bFZhbHVlOicwJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1Mu
cmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1
ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwogUEFTUyBz
eW50YXg6JzxpbnRlZ2VyPicsIGluaXRpYWxWYWx1ZTonMS4wJyBpcyBpbnZhbGlkIAogUEFTUyBz
eW50YXg6JzxpbnRlZ2VyPicsIGluaXRpYWxWYWx1ZTonMWUwJyBpcyBpbnZhbGlkIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnRpZXMtaW5oZXJpdGFuY2Ut
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnRpZXMtaW5o
ZXJpdGFuY2UtZXhwZWN0ZWQudHh0CmluZGV4IDU2NTRlODJjNmE4MmE0YzJlMjljYjFmMzU2MDQx
MjI1ZDIxMWUyM2EuLmZjMjdiMGRmMjk5NWE3YjdmNGVhMGQ3NzVjMGQ3Yjc1MWYxZWQxMGIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWluaGVyaXRh
bmNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVy
dGllcy1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQKQEAgLTIsNiArMiw2IEBACiBQQVNTIFJlZ2lz
dGVyZWQgcHJvcGVydGllcyBhcmUgY29ycmVjdGx5IGluaGVyaXRlZCAob3Igbm90KSBkZXBlbmRp
bmcgb24gdGhlIGluaGVyaXRzIGZsYWcuIAogUEFTUyBFeHBsaWNpdGx5IGluaGVyaXRpbmcgZnJv
bSBhIHBhcmVudCB3aXRoIGFuIGludmFsaWQgdmFsdWUgcmVzdWx0cyBpbiBpbml0aWFsIHZhbHVl
LiAKIFBBU1MgRXhwbGljaXRseSBpbmhlcml0aW5nIGZyb20gYSBwYXJlbnQgd2l0aCBubyB2YWx1
ZSByZXN1bHRzIGluIGluaXRpYWwgdmFsdWUuIAotUEFTUyBSZWZlcmVuY2UgdG8gdW5kZWZpbmVk
IHZhcmlhYmxlIHJlc3VsdHMgaW4gaW5oZXJpdGVkIHZhbHVlIAotUEFTUyBSZWZlcmVuY2UgdG8g
c3ludGF4LWluY29tcGF0aWJsZSB2YXJpYWJsZSByZXN1bHRzIGluIGluaGVyaXRlZCB2YWx1ZSAK
K0ZBSUwgUmVmZXJlbmNlIHRvIHVuZGVmaW5lZCB2YXJpYWJsZSByZXN1bHRzIGluIGluaGVyaXRl
ZCB2YWx1ZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiNDJweCIgYnV0IGdvdCAiMHB4IgorRkFJ
TCBSZWZlcmVuY2UgdG8gc3ludGF4LWluY29tcGF0aWJsZSB2YXJpYWJsZSByZXN1bHRzIGluIGlu
aGVyaXRlZCB2YWx1ZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiNDJweCIgYnV0IGdvdCAiMHB4
IgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydHktY3Nz
b20tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnR5LWNz
c29tLWV4cGVjdGVkLnR4dAppbmRleCBlZmNjNWMyZWNmOGVmNWE4ZTQyZjgyZGZjNjNlNGZiMTgy
YTQ3OWVmLi4wZDU1NjFmNDhlNTY3ZTM2Mjc5MjZhNDExYTc1ZTBlY2I0YjA2ODU1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
cHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydHktY3Nzb20tZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0eS1jc3NvbS1leHBl
Y3RlZC50eHQKQEAgLTIsOCArMiw4IEBACiBQQVNTIENTU09NIHNldHRlcnMgZnVuY3Rpb24gYXMg
ZXhwZWN0ZWQgZm9yIHVucmVnaXN0ZXJlZCBwcm9wZXJ0aWVzIAogRkFJTCBDU1MucmVnaXN0ZXJQ
cm9wZXJ0eSBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdp
dmVuIHN5bnRheC4KIEZBSUwgRm9ybWVybHkgdmFsaWQgdmFsdWVzIGFyZSBzdGlsbCByZWFkYWJs
ZSBmcm9tIGlubGluZSBzdHlsZXMgYnV0IGFyZSBjb21wdXRlZCBhcyB0aGUgdW5zZXQgdmFsdWUg
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImJsdWUiIGJ1dCBnb3QgImhlbGxvIgotRkFJTCBWYWx1
ZXMgbm90IG1hdGNoaW5nIHRoZSByZWdpc3RlcmVkIHR5cGUgY2FuJ3QgYmUgc2V0IGFzc2VydF9l
cXVhbHM6IGV4cGVjdGVkICJoZWxsbyIgYnV0IGdvdCAiMjAiCitGQUlMIFZhbHVlcyBub3QgbWF0
Y2hpbmcgdGhlIHJlZ2lzdGVyZWQgdHlwZSBjYW4ndCBiZSBzZXQgYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgIjUiIGJ1dCBnb3QgImhpIgogRkFJTCBWYWx1ZXMgY2FuIGJlIHJlbW92ZWQgZnJvbSBp
bmxpbmUgc3R5bGVzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJyZWQiIGJ1dCBnb3QgIiByZWQi
Ci1QQVNTIFN0eWxlc2hlZXRzIGNhbiBiZSBtb2RpZmllZCBieSBDU1NPTSAKK0ZBSUwgU3R5bGVz
aGVldHMgY2FuIGJlIG1vZGlmaWVkIGJ5IENTU09NIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIx
MHB4IiBidXQgZ290ICIwcHgiCiBGQUlMIFZhbGlkIHZhbHVlcyBjYW4gYmUgc2V0IG9uIGlubGlu
ZSBzdHlsZXMgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImJsdWUiIGJ1dCBnb3QgIiBibHVlIgog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3R5cGVkb20udGVudGF0aXZlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvdHlwZWRvbS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDY2ZmJiY2E5OTA5Y2I5ZmM1NDk2OGMyOGUyMjZmOGVlYzg0MTQ0M2MuLjFlNGQyNzBhZTY4
ZjFlYjE3NjZlM2FjNzJkMzViZDUwMTI2MGVmNzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1h
cGkvdHlwZWRvbS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkv
dHlwZWRvbS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CkBAIC0yLDcgKzIsNyBAQCBDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMzQwOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogQ1NT
VW5wYXJzZWRWYWx1ZQogCiBIYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFJlZmVyZW5j
ZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBDU1NVbnBhcnNlZFZhbHVlCiAKLUZBSUwgQ29t
cHV0ZWQgKiBpcyByZWlmaWVkIGFzIENTU1VucGFyc2VkVmFsdWUgdGFyZ2V0LmNvbXB1dGVkU3R5
bGVNYXAgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAndGFyZ2V0LmNvbXB1dGVkU3R5bGVNYXAoKScs
ICd0YXJnZXQuY29tcHV0ZWRTdHlsZU1hcCcgaXMgdW5kZWZpbmVkKQorRkFJTCBDb21wdXRlZCAq
IGlzIHJlaWZpZWQgYXMgQ1NTVW5wYXJzZWRWYWx1ZSBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBk
b2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIEZBSUwgQ29tcHV0ZWQgPGFuZ2xl
PiBpcyByZWlmaWVkIGFzIENTU1VuaXRWYWx1ZSBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2Vz
IG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIEZBSUwgQ29tcHV0ZWQgPGNvbG9yPiBp
cyByZWlmaWVkIGFzIENTU1N0eWxlVmFsdWUgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBu
b3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCiBGQUlMIENvbXB1dGVkIDxjdXN0b20taWRl
bnQ+IGlzIHJlaWZpZWQgYXMgQ1NTS2V5d29yZFZhbHVlIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVl
IGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMt
dmFsdWVzLWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1jeWNsZXMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJv
cGVydGllcy1jeWNsZXMtZXhwZWN0ZWQudHh0CmluZGV4IDkzMTQ1MTIxYTFjMzQ2YTJjODI2MDFm
YjhkM2RmMTU5YTAyOWZjMjYuLjJiZWRmNjg5MjcyZTUyMDYzMThiMzBmYWZhZDU0ODEyZWRlZGFh
OTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvdmFyLXJlZmVyZW5jZS1yZWdpc3RlcmVk
LXByb3BlcnRpZXMtY3ljbGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zh
ci1yZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWN5Y2xlcy1leHBlY3RlZC50eHQKQEAg
LTEsNiArMSw2IEBACiAKLVBBU1MgQSB2YXIoKSBjeWNsZSBiZXR3ZWVuIHR3byByZWdpc3RlcmVk
IHByb3BlcnRpZXMgaXMgaGFuZGxlZCBjb3JyZWN0bHkuIAotUEFTUyBBIHZhcigpIGN5Y2xlIGJl
dHdlZW4gYSByZWdpc3RlcmVkIHByb3BlcnRpZXMgYW5kIGFuIHVucmVnaXN0ZXJlZCBwcm9wZXJ0
eSBpcyBoYW5kbGVkIGNvcnJlY3RseS4gCitGQUlMIEEgdmFyKCkgY3ljbGUgYmV0d2VlbiB0d28g
cmVnaXN0ZXJlZCBwcm9wZXJ0aWVzIGlzIGhhbmRsZWQgY29ycmVjdGx5LiBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCAiMnB4IiBidXQgZ290ICIzcHgiCitGQUlMIEEgdmFyKCkgY3ljbGUgYmV0d2Vl
biBhIHJlZ2lzdGVyZWQgcHJvcGVydGllcyBhbmQgYW4gdW5yZWdpc3RlcmVkIHByb3BlcnR5IGlz
IGhhbmRsZWQgY29ycmVjdGx5LiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiMXB4IiBidXQgZ290
ICIycHgiCiBQQVNTIEEgdmFyKCkgY3ljbGUgYmV0d2VlbiBhIHR3byB1bnJlZ2lzdGVyZWQgcHJv
cGVydGllcyBpcyBoYW5kbGVkIGNvcnJlY3RseS4gCi1QQVNTIEEgdmFyKCkgY3ljbGUgYmV0d2Vl
biBhIHN5bnRheDonKicgcHJvcGVydHkgYW5kIGFuIHVucmVnaXN0ZXJlZCBwcm9wZXJ0eSBpcyBo
YW5kbGVkIGNvcnJlY3RseS4gCitGQUlMIEEgdmFyKCkgY3ljbGUgYmV0d2VlbiBhIHN5bnRheDon
KicgcHJvcGVydHkgYW5kIGFuIHVucmVnaXN0ZXJlZCBwcm9wZXJ0eSBpcyBoYW5kbGVkIGNvcnJl
Y3RseS4gVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZl
biBzeW50YXguCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvdmFyLXJlZmVyZW5jZS1y
ZWdpc3RlcmVkLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXIt
cmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1leHBlY3RlZC50eHQKaW5kZXggMzllNjc1
ZDQzNGFlMWE5MGU1MmRhOWVhYjZmNDAyNjY0ZDljMDM3My4uZGI1MzVlNGM4ODg2MTI2NzBkMGQy
ZDM3NGM1OGI1ZjRlMDRkMTk4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXItcmVm
ZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFs
dWVzLWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1leHBlY3RlZC50eHQK
QEAgLTEsNSArMSw1IEBACiAKLUZBSUwgdmFyKCkgcmVmZXJlbmNlcyB3b3JrIHdpdGggcmVnaXN0
ZXJlZCBwcm9wZXJ0aWVzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIgIDEwcHgiIGJ1dCBnb3Qg
IiAxMHB4IgorRkFJTCB2YXIoKSByZWZlcmVuY2VzIHdvcmsgd2l0aCByZWdpc3RlcmVkIHByb3Bl
cnRpZXMgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjE1cHgiIGJ1dCBnb3QgIjEwJSIKIEZBSUwg
UmVmZXJlbmNlcyB0byByZWdpc3RlcmVkIHZhcigpLXByb3BlcnRpZXMgd29yayBpbiByZWdpc3Rl
cmVkIGxpc3RzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxcHgsIDEwcHgsIDJweCIgYnV0IGdv
dCAiMHB4IgogRkFJTCBSZWZlcmVuY2VzIHRvIG1peGVkIHJlZ2lzdGVyZWQgYW5kIHVucmVnaXN0
ZXJlZCB2YXIoKS1wcm9wZXJ0aWVzIHdvcmsgaW4gcmVnaXN0ZXJlZCBsaXN0cyBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAiMXB4LCAyMHB4LCAxMHB4LCAycHgiIGJ1dCBnb3QgIjBweCIKIEZBSUwg
UmVnaXN0ZXJlZCBsaXN0cyBtYXkgYmUgY29uY2F0ZW5hdGVkIGFzc2VydF9lcXVhbHM6IGV4cGVj
dGVkICIxcHgsIDEwcHgsIDJweCwgMXB4LCAyMHB4LCAxMHB4LCAycHgiIGJ1dCBnb3QgIjBweCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353122</attachid>
            <date>2018-10-25 16:15:19 -0700</date>
            <delta_ts>2018-10-26 20:52:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190919-20181025161518.patch</filename>
            <type>text/plain</type>
            <size>129213</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RkNmNiNzQwNjcyYjRh
OGRiMzliZWI3Njk5MzZhOGJmMmVkZGUzYi4uZDZjMGE2YjM4YmI3Yjc3YzBlMTNmOTVkZTNjM2Yz
NjY5MDUyN2JiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDE4LTEwLTI1ICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZlcnQg
cjIzNzM0NyByZWdpc3RlcmVkIGN1c3RvbSBwcm9wZXJ0aWVzLi4uIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAwMzkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDkxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXN0b21Qcm9w
ZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjdXN0b21DU1NUZXh0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1c3RvbVByb3BlcnR5VmFsdWU6OnRva2VucyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjaGVja1Zh
cmlhYmxlc0ZvckN5Y2xlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlOjpyZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0N1c3RvbVByb3BlcnR5VmFsdWU6OnNldFJlc29sdmVkVHlwZWRWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjplcXVhbHMgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGNzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmg6CisgICAgICAg
ICogY3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHk6OkNTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0
eSk6CisgICAgICAgICogY3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oOgorICAgICAg
ICAqIGNzcy9DU1NWYXJpYWJsZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFi
bGVEYXRhOjpjb25zdW1lQW5kVXBkYXRlVG9rZW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zh
cmlhYmxlRGF0YTo6Q1NTVmFyaWFibGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zhcmlh
YmxlRGF0YTo6Y2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVmFyaWFibGVEYXRhOjpjaGVja1ZhcmlhYmxlc0ZvckN5Y2xlc1dpdGhSYW5nZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6OnJlc29sdmVWYXJpYWJsZUZh
bGxiYWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2
ZVZhcmlhYmxlUmVmZXJlbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxl
RGF0YTo6cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NWYXJpYWJsZURhdGE6OnJlc29sdmVUb2tlblJhbmdlIGNvbnN0KToKKyAgICAgICAgKiBj
c3MvQ1NTVmFyaWFibGVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZVJlc29s
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6bmVlZHNWYXJpYWJsZVJl
c29sdXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRhOjpDU1NW
YXJpYWJsZURhdGEpOgorICAgICAgICAqIGNzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OmNoZWNrVmFy
aWFibGVzRm9yQ3ljbGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVWYXJpYWJs
ZUZhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVWYXJpYWJsZVJl
ZmVyZW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlVG9rZW5SYW5nZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlOjpy
ZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3Mv
Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFi
bGVSZWZlcmVuY2VWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxl
UmVmZXJlbmNlVmFsdWU6OnZhcmlhYmxlRGF0YVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OmVxdWFscyBjb25zdCk6CisgICAgICAgICog
Y3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6cmVnaXN0ZXJQcm9wZXJ0eSk6CisgICAgICAg
ICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KToKKyAgICAg
ICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEN1c3RvbVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUN1c3RvbVByb3BlcnR5KToKKyAgICAg
ICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVT
dHlsZVByb3BlcnRpZXM6OnNldEN1c3RvbVByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVQ
cm9wZXJ0aWVzLmg6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVz
b2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6cmVzb2x2ZWRWYXJpYWJsZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YXBwbHlEZWZlcnJlZFByb3BlcnRp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVz
OjpQcm9wZXJ0eTo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBw
bHlDYXNjYWRlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
YXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvU3R5
bGVSZXNvbHZlci5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5jZXMp
OgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmg6CisgICAgICAgICogY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBh
cnNlcjo6Q1NTUHJvcGVydHlQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQ
YXJzZXI6OnBhcnNlVmFsdWVTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBh
cnNlcjo6cGFyc2VTaW5nbGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBh
cnNlcjo6Y2FuUGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZh
bHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpjb2xs
ZWN0UGFyc2VkQ3VzdG9tUHJvcGVydHlWYWx1ZURlcGVuZGVuY2llcyk6IERlbGV0ZWQuCisgICAg
ICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oOgorICAgICAgICAqIGNzcy9wYXJz
ZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVQ
YXJzZXI6OnBhcnNlRGVjbGFyYXRpb25WYWx1ZSk6CisgICAgICAgICogZG9tL0NvbnN0YW50UHJv
cGVydHlNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc3RhbnRQcm9wZXJ0eU1hcDo6c2V0
VmFsdWVGb3JQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjp2YXJpYWJsZURhdGFGb3JQb3Np
dGl2ZVBpeGVsTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OnZhcmlhYmxlRGF0YUZvclBvc2l0
aXZlRHVyYXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hlY2tWYXJpYWJsZXNJbkN1c3RvbVBy
b3BlcnRpZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldE5vbkluaGVyaXRlZEN1c3Rv
bVByb3BlcnR5VmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbVBy
b3BlcnR5RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0
eURhdGE6OnNldEN1c3RvbVByb3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVD
dXN0b21Qcm9wZXJ0eURhdGE6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhKToKKwogMjAxOC0xMC0y
NSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogZGlzcGxheSBmdWxsc2NyZWVuIGVudGVyL2V4aXQgZXZlbnRzIGluIFRpbWVsaW5lcyBh
bmQgTmV0d29yayBub2RlIHdhdGVyZmFsbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggMDc0OWQ5YTRkNjgxMTU2Y2U2Njk3
MjlkOTFkODBiMzNiYWI2MThhNC4uYzc3NjQ4ZWUxZDgzNDlmYjM2YjEwNzE1NDVjMzgxZmE3MzI3
MDljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAKQEAgLTI2MTIsMjMgKzI2MTIsMjEgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjpjdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgcHJv
cGUKICAgICBhdXRvKiByZWdpc3RlcmVkID0gc3R5bGVkRWxlbWVudC0+ZG9jdW1lbnQoKS5nZXRD
U1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQoKS5nZXQocHJvcGVydHlOYW1lKTsKICAgICBh
dXRvKiB2YWx1ZSA9IHN0eWxlLT5nZXRDdXN0b21Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUpOwogCi0g
ICAgaWYgKHJlZ2lzdGVyZWQgJiYgIXZhbHVlKQotICAgICAgICByZXR1cm4gcmVnaXN0ZXJlZC0+
aW5pdGlhbFZhbHVlQ29weSgpOworICAgIGlmIChyZWdpc3RlcmVkKSB7CisgICAgICAgIC8vIFRP
RE8gdGhpcyBzaG91bGQgYmUgZG9uZSBiYXNlZCBvbiB0aGUgc3ludGF4CisgICAgICAgIGlmICh2
YWx1ZSAmJiB2YWx1ZS0+cmVzb2x2ZWRUeXBlZFZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm4g
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aCgqdmFsdWUtPnJlc29sdmVkVHlwZWRWYWx1
ZSgpLCAqc3R5bGUpOworCisgICAgICAgIGlmIChyZWdpc3RlcmVkLT5pbml0aWFsVmFsdWUoKSAm
JiByZWdpc3RlcmVkLT5pbml0aWFsVmFsdWUoKS0+cmVzb2x2ZWRUeXBlZFZhbHVlKCkpCisgICAg
ICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aCgqcmVnaXN0ZXJl
ZC0+aW5pdGlhbFZhbHVlKCktPnJlc29sdmVkVHlwZWRWYWx1ZSgpLCAqc3R5bGUpOwogCi0gICAg
aWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogCi0gICAgYXV0byB2
aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgUmVmPENTU1ZhcmlhYmxlUmVmZXJl
bmNlVmFsdWU+JikgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuIFJlZlB0cjxDU1NWYWx1ZT4oKTsKLSAgICB9LCBbJl0oY29uc3QgQ1NTVmFsdWVJRCYpIHsK
KyAgICBpZiAodmFsdWUpCiAgICAgICAgIHJldHVybiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpj
cmVhdGUoKnZhbHVlKTsKLSAgICB9LCBbJl0oY29uc3QgUmVmPENTU1ZhcmlhYmxlRGF0YT4mKSB7
Ci0gICAgICAgIHJldHVybiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUoKnZhbHVlKTsK
LSAgICB9LCBbJl0oY29uc3QgTGVuZ3RoJiB2YWx1ZSkgewotICAgICAgICByZXR1cm4gem9vbUFk
anVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aCh2YWx1ZSwgKnN0eWxlKTsKLSAgICB9KTsKLSAgICBy
ZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCB2YWx1ZS0+dmFsdWUoKSk7CisKKyAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAogU3RyaW5nIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmN1c3RvbVByb3Bl
cnR5VGV4dChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcAppbmRleCBlNjk2NmZmOWJkYzE0NDI2YThjODk5
ODA4ZDM0N2ZhYThjMmUxZDE2Li43YzE2ZTg0MWRlYWZlZTJlMjE5MjU4ZWM0OTViNzgwZjQxNjUy
NjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3Bw
CkBAIC0yNyw2MyArMjcsODAgQEAKICNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTVG9rZW5pemVyLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9v
bCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjplcXVhbHMoY29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgaWYgKG1fbmFtZSAhPSBvdGhlci5tX25hbWUgfHwg
bV92YWx1ZS5pbmRleCgpICE9IG90aGVyLm1fdmFsdWUuaW5kZXgoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IFJl
ZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiYgdmFsdWUpIHsKLSAgICAgICAgcmV0dXJuIHZh
bHVlLmdldCgpID09IFdURjo6Z2V0PFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPj4ob3Ro
ZXIubV92YWx1ZSkuZ2V0KCk7Ci0gICAgfSwgWyZdKGNvbnN0IENTU1ZhbHVlSUQmIHZhbHVlKSB7
Ci0gICAgICAgIHJldHVybiB2YWx1ZSA9PSBXVEY6OmdldDxDU1NWYWx1ZUlEPihvdGhlci5tX3Zh
bHVlKTsKLSAgICB9LCBbJl0oY29uc3QgUmVmPENTU1ZhcmlhYmxlRGF0YT4mIHZhbHVlKSB7Ci0g
ICAgICAgIHJldHVybiB2YWx1ZS5nZXQoKSA9PSBXVEY6OmdldDxSZWY8Q1NTVmFyaWFibGVEYXRh
Pj4ob3RoZXIubV92YWx1ZSkuZ2V0KCk7Ci0gICAgfSwgWyZdKGNvbnN0IExlbmd0aCYgdmFsdWUp
IHsKLSAgICAgICAgcmV0dXJuIHZhbHVlID09IFdURjo6Z2V0PExlbmd0aD4ob3RoZXIubV92YWx1
ZSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV92YWx1ZSk7Ci19
CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpj
dXN0b21DU1NUZXh0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fc2VyaWFsaXplZCkgewogICAgICAg
ICBtX3NlcmlhbGl6ZWQgPSB0cnVlOwotCi0gICAgICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFr
ZVZpc2l0b3IoWyZdKGNvbnN0IFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiYgdmFsdWUp
IHsKLSAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSB2YWx1ZS0+Y3NzVGV4dCgpOwotICAgICAg
ICB9LCBbJl0oY29uc3QgQ1NTVmFsdWVJRCYgdmFsdWUpIHsKLSAgICAgICAgICAgIG1fc3RyaW5n
VmFsdWUgPSBnZXRWYWx1ZU5hbWUodmFsdWUpOwotICAgICAgICB9LCBbJl0oY29uc3QgUmVmPENT
U1ZhcmlhYmxlRGF0YT4mIHZhbHVlKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ1ZhbHVlID0gdmFs
dWUtPnRva2VuUmFuZ2UoKS5zZXJpYWxpemUoKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IExlbmd0
aCYgdmFsdWUpIHsKLSAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHZhbHVlLnZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpLT5jc3NU
ZXh0KCk7Ci0gICAgICAgIH0pOwotICAgICAgICBXVEY6OnZpc2l0KHZpc2l0b3IsIG1fdmFsdWUp
OworICAgICAgICBpZiAobV9yZXNvbHZlZFR5cGVkVmFsdWUpIC8vIEZJWE1FOiBVbml0IHNob3Vs
ZCBiZSBiYXNlZCBvbiBzeW50YXguCisgICAgICAgICAgICBtX3N0cmluZ1ZhbHVlID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShtX3Jlc29sdmVkVHlwZWRWYWx1ZS0+dmFsdWUoKSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QWCktPmNzc1RleHQoKTsKKyAgICAgICAgZWxzZSBpZiAobV92YWx1
ZSkKKyAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSBtX3ZhbHVlLT50b2tlblJhbmdlKCkuc2Vy
aWFsaXplKCk7CisgICAgICAgIGVsc2UgaWYgKG1fdmFsdWVJZCAhPSBDU1NWYWx1ZUludmFsaWQp
CisgICAgICAgICAgICBtX3N0cmluZ1ZhbHVlID0gZ2V0VmFsdWVOYW1lKG1fdmFsdWVJZCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSBlbXB0eVN0cmluZygpOwog
ICAgIH0KICAgICByZXR1cm4gbV9zdHJpbmdWYWx1ZTsKIH0KIAotVmVjdG9yPENTU1BhcnNlclRv
a2VuPiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjp0b2tlbnMoKSBjb25zdAorVmVjdG9yPENTU1Bh
cnNlclRva2VuPiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjp0b2tlbnMoY29uc3QgQ1NTUmVnaXN0
ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiByZWdpc3RlcmVkUHJvcGVydGllcywgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKSBjb25zdAogewotICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVzdWx0
OwotCi0gICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgUmVmPENT
U1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+JikgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICB9LCBbJl0oY29uc3QgQ1NTVmFsdWVJRCYpIHsKLSAgICAgICAgLy8gRG8gbm90aGlu
ZwotICAgIH0sIFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYgdmFsdWUpIHsKLSAgICAg
ICAgcmVzdWx0LmFwcGVuZFZlY3Rvcih2YWx1ZS0+dG9rZW5zKCkpOwotICAgIH0sIFsmXShjb25z
dCBMZW5ndGgmKSB7CisgICAgaWYgKG1fcmVzb2x2ZWRUeXBlZFZhbHVlKSB7CisgICAgICAgIFZl
Y3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVzdWx0OwogICAgICAgICBDU1NUb2tlbml6ZXIgdG9rZW5p
emVyKGNzc1RleHQoKSk7CiAKICAgICAgICAgYXV0byB0b2tlbml6ZXJSYW5nZSA9IHRva2VuaXpl
ci50b2tlblJhbmdlKCk7CiAgICAgICAgIHdoaWxlICghdG9rZW5pemVyUmFuZ2UuYXRFbmQoKSkK
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodG9rZW5pemVyUmFuZ2UuY29uc3VtZSgpKTsKLSAg
ICB9KTsKLSAgICBXVEY6OnZpc2l0KHZpc2l0b3IsIG1fdmFsdWUpOwogCi0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBpZiAoIW1fdmFsdWUp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAobV9jb250YWluc1ZhcmlhYmxlcykgewor
ICAgICAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHJlc3VsdDsKKyAgICAgICAgLy8gRklYTUU6
IEF2b2lkIGRvaW5nIHRoaXMgd29yayBtb3JlIHRoYW4gb25jZS4KKyAgICAgICAgUmVmUHRyPENT
U1ZhcmlhYmxlRGF0YT4gcmVzb2x2ZWREYXRhID0gbV92YWx1ZS0+cmVzb2x2ZVZhcmlhYmxlUmVm
ZXJlbmNlcyhyZWdpc3RlcmVkUHJvcGVydGllcywgc3R5bGUpOworICAgICAgICBpZiAocmVzb2x2
ZWREYXRhKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZFZlY3RvcihyZXNvbHZlZERhdGEtPnRv
a2VucygpKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHJldHVybiBt
X3ZhbHVlLT50b2tlbnMoKTsKK30KKworYm9vbCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjaGVj
a1ZhcmlhYmxlc0ZvckN5Y2xlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSwgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBzZWVuUHJvcGVydGllcywgSGFz
aFNldDxBdG9taWNTdHJpbmc+JiBpbnZhbGlkUHJvcGVydGllcykgY29uc3QKK3sKKyAgICBBU1NF
UlQoY29udGFpbnNWYXJpYWJsZXMoKSk7CisgICAgaWYgKG1fdmFsdWUpCisgICAgICAgIHJldHVy
biBtX3ZhbHVlLT5jaGVja1ZhcmlhYmxlc0ZvckN5Y2xlcyhuYW1lLCBzdHlsZSwgc2VlblByb3Bl
cnRpZXMsIGludmFsaWRQcm9wZXJ0aWVzKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBD
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpyZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKGNvbnN0IENT
U1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYgcmVnaXN0ZXJlZFByb3BlcnRpZXMsIFZlY3Rv
cjxSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4+JiByZXNvbHZlZFZhbHVlcywgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKSBjb25zdAoreworICAgIEFTU0VSVChjb250YWluc1ZhcmlhYmxlcygp
KTsKKyAgICBpZiAoIW1fdmFsdWUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBBU1NFUlQo
bV92YWx1ZS0+bmVlZHNWYXJpYWJsZVJlc29sdXRpb24oKSk7CisgICAgUmVmUHRyPENTU1Zhcmlh
YmxlRGF0YT4gcmVzb2x2ZWREYXRhID0gbV92YWx1ZS0+cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNl
cyhyZWdpc3RlcmVkUHJvcGVydGllcywgc3R5bGUpOworICAgIGlmIChyZXNvbHZlZERhdGEpCisg
ICAgICAgIHJlc29sdmVkVmFsdWVzLmFwcGVuZChDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVh
dGVXaXRoVmFyaWFibGVEYXRhKG1fbmFtZSwgcmVzb2x2ZWREYXRhLnJlbGVhc2VOb25OdWxsKCkp
KTsKKyAgICBlbHNlCisgICAgICAgIHJlc29sdmVkVmFsdWVzLmFwcGVuZChDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlOjpjcmVhdGVXaXRoSUQobV9uYW1lLCBDU1NWYWx1ZUludmFsaWQpKTsKK30KKwor
dm9pZCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpzZXRSZXNvbHZlZFR5cGVkVmFsdWUoTGVuZ3Ro
IGxlbmd0aCkKK3sKKyAgICBBU1NFUlQobGVuZ3RoLmlzU3BlY2lmaWVkKCkpOworICAgIG1fcmVz
b2x2ZWRUeXBlZFZhbHVlID0gV1RGTW92ZShsZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaAppbmRleCA2MjVlMTk1MTFlMmRkYWRiYWQ0
N2M2OTE3MzM5ZDQ5OTcxMThmNDk3Li5iYjA5MjE0NWRlNTFmYjZlNmIzOWQ5OTU0ZDM2NDkyZGJj
Y2Q2ZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgK
QEAgLTI3LDQ2ICsyNywzMSBAQAogCiAjaW5jbHVkZSAiQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3Bl
cnR5LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNpbmNsdWRlICJDU1NWYXJpYWJsZVJlZmVy
ZW5jZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVmFyaWFibGVEYXRhLmgiCiAjaW5jbHVkZSAiTGVu
Z3RoLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ1NTUGFyc2VyVG9rZW47Ci1jbGFzcyBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVl
OwogY2xhc3MgUmVuZGVyU3R5bGU7CiAKIGNsYXNzIENTU0N1c3RvbVByb3BlcnR5VmFsdWUgZmlu
YWwgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHVzaW5nIFZhcmlhbnRWYWx1ZSA9
IFZhcmlhbnQ8UmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+LCBDU1NWYWx1ZUlELCBSZWY8
Q1NTVmFyaWFibGVEYXRhPiwgTGVuZ3RoPjsKLQotICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZT4gY3JlYXRlVW5yZXNvbHZlZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFJl
ZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiYmIHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCB7IFdURk1vdmUo
dmFsdWUpIH0pKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFs
dWU+IGNyZWF0ZVVucmVzb2x2ZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBDU1NWYWx1ZUlE
IHZhbHVlKQorICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3JlYXRlV2l0
aFZhcmlhYmxlRGF0YShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFJlZjxDU1NWYXJpYWJsZURh
dGE+JiYgdmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHsgdmFsdWUgfSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1vdmUodmFsdWUpKSk7CiAg
ICAgfQotCi0gICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBjcmVhdGVXaXRo
SUQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBDU1NWYWx1ZUlEIGlkKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKGlkID09IENTU1ZhbHVlSW5oZXJpdCB8fCBpZCA9PSBDU1NWYWx1ZUluaXRpYWwg
fHwgaWQgPT0gQ1NTVmFsdWVVbnNldCB8fCBpZCA9PSBDU1NWYWx1ZVJldmVydCB8fCBpZCA9PSBD
U1NWYWx1ZUludmFsaWQpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlKG5hbWUsIHsgaWQgfSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBSZWY8Q1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZT4gY3JlYXRlU3ludGF4QWxsKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgUmVmPENTU1ZhcmlhYmxlRGF0YT4mJiB2YWx1ZSkKKyAgICAKKyAgICBzdGF0aWMgUmVm
PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGNyZWF0ZVdpdGhJRChjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIENTU1ZhbHVlSUQgdmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHsgV1RGTW92ZSh2YWx1ZSkgfSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUs
IHZhbHVlKSk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZT4gY3JlYXRlU3ludGF4TGVuZ3RoKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgTGVuZ3Ro
IHZhbHVlKQorICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3JlYXRlSW52
YWxpZCgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlKG5hbWUsIHsgV1RGTW92ZSh2YWx1ZSkgfSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKGVtcHR5U3RyaW5nKCksIGVtcHR5U3Ry
aW5nKCkpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+
IGNyZWF0ZShjb25zdCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJiBvdGhlcikKQEAgLTc3LDQ5ICs2
Miw3MCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAogICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQotICAg
IGJvb2wgaXNSZXNvbHZlZCgpIGNvbnN0ICB7IHJldHVybiAhV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4+KG1fdmFsdWUpOyB9Ci0gICAgYm9vbCBp
c1Vuc2V0KCkgY29uc3QgIHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q1NTVmFsdWVJ
RD4obV92YWx1ZSkgJiYgV1RGOjpnZXQ8Q1NTVmFsdWVJRD4obV92YWx1ZSkgPT0gQ1NTVmFsdWVV
bnNldDsgfQotICAgIGJvb2wgaXNJbnZhbGlkKCkgY29uc3QgIHsgcmV0dXJuIFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8Q1NTVmFsdWVJRD4obV92YWx1ZSkgJiYgV1RGOjpnZXQ8Q1NTVmFsdWVJRD4o
bV92YWx1ZSkgPT0gQ1NTVmFsdWVJbnZhbGlkOyB9CisgICAgCisgICAgYm9vbCBlcXVhbHMoY29u
c3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZSA9
PSBvdGhlci5tX25hbWUgJiYgbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlICYmIG1fdmFsdWVJZCA9
PSBvdGhlci5tX3ZhbHVlSWQ7IH0KKworICAgIGJvb2wgY29udGFpbnNWYXJpYWJsZXMoKSBjb25z
dCB7IEFTU0VSVCghbV9jb250YWluc1ZhcmlhYmxlcyB8fCAhbV9yZXNvbHZlZFR5cGVkVmFsdWUp
OyByZXR1cm4gbV9jb250YWluc1ZhcmlhYmxlczsgfQorICAgIGJvb2wgY2hlY2tWYXJpYWJsZXNG
b3JDeWNsZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBSZW5kZXJTdHlsZSYsIEhh
c2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3RyaW5n
PiYgaW52YWxpZFByb3BlcnRpZXMpIGNvbnN0OworCisgICAgdm9pZCByZXNvbHZlVmFyaWFibGVS
ZWZlcmVuY2VzKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYsIFZlY3RvcjxS
ZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4+JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsK
IAotICAgIGNvbnN0IFZhcmlhbnRWYWx1ZSYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVl
OyB9CisgICAgQ1NTVmFsdWVJRCB2YWx1ZUlEKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZUlkOyB9
CisgICAgQ1NTVmFyaWFibGVEYXRhKiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuZ2V0
KCk7IH0KKyAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHRva2Vucyhjb25zdCBDU1NSZWdpc3Rl
cmVkQ3VzdG9tUHJvcGVydHlTZXQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCi0gICAg
VmVjdG9yPENTU1BhcnNlclRva2VuPiB0b2tlbnMoKSBjb25zdDsKLSAgICBib29sIGVxdWFscyhj
b25zdCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJiBvdGhlcikgY29uc3Q7CisgICAgY29uc3Qgc3Rk
OjpvcHRpb25hbDxMZW5ndGg+JiByZXNvbHZlZFR5cGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X3Jlc29sdmVkVHlwZWRWYWx1ZTsgfQorICAgIHZvaWQgc2V0UmVzb2x2ZWRUeXBlZFZhbHVlKExl
bmd0aCk7CiAKIHByaXZhdGU6Ci0gICAgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIFZhcmlhbnRWYWx1ZSYmIHZhbHVlKQorICAgIENTU0N1c3RvbVByb3Bl
cnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHNlcmlhbGl6
ZWRWYWx1ZSkKKyAgICAgICAgOiBDU1NWYWx1ZShDdXN0b21Qcm9wZXJ0eUNsYXNzKQorICAgICAg
ICAsIG1fbmFtZShuYW1lKQorICAgICAgICAsIG1fc3RyaW5nVmFsdWUoc2VyaWFsaXplZFZhbHVl
KQorICAgICAgICAsIG1fc2VyaWFsaXplZCh0cnVlKQorICAgIHsKKyAgICB9CisKKyAgICBDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgQ1NTVmFsdWVJRCBp
ZCkKKyAgICAgICAgOiBDU1NWYWx1ZShDdXN0b21Qcm9wZXJ0eUNsYXNzKQorICAgICAgICAsIG1f
bmFtZShuYW1lKQorICAgICAgICAsIG1fdmFsdWVJZChpZCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChpZCA9PSBDU1NWYWx1ZUluaGVyaXQgfHwgaWQgPT0gQ1NTVmFsdWVJbml0aWFsIHx8IGlkID09
IENTU1ZhbHVlVW5zZXQgfHwgaWQgPT0gQ1NTVmFsdWVSZXZlcnQgfHwgaWQgPT0gQ1NTVmFsdWVJ
bnZhbGlkKTsKKyAgICB9CisgICAgCisgICAgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIFJlZjxDU1NWYXJpYWJsZURhdGE+JiYgdmFsdWUpCiAgICAgICAg
IDogQ1NTVmFsdWUoQ3VzdG9tUHJvcGVydHlDbGFzcykKICAgICAgICAgLCBtX25hbWUobmFtZSkK
ICAgICAgICAgLCBtX3ZhbHVlKFdURk1vdmUodmFsdWUpKQotICAgICAgICAsIG1fc2VyaWFsaXpl
ZChmYWxzZSkKKyAgICAgICAgLCBtX3ZhbHVlSWQoQ1NTVmFsdWVJbnRlcm5hbFZhcmlhYmxlVmFs
dWUpCisgICAgICAgICwgbV9jb250YWluc1ZhcmlhYmxlcyhtX3ZhbHVlLT5uZWVkc1ZhcmlhYmxl
UmVzb2x1dGlvbigpKQogICAgIHsKICAgICB9CiAKICAgICBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
KGNvbnN0IENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIG90aGVyKQogICAgICAgICA6IENTU1ZhbHVl
KEN1c3RvbVByb3BlcnR5Q2xhc3MpCiAgICAgICAgICwgbV9uYW1lKG90aGVyLm1fbmFtZSkKLSAg
ICAgICAgLCBtX3ZhbHVlKENTU1ZhbHVlVW5zZXQpCisgICAgICAgICwgbV92YWx1ZShvdGhlci5t
X3ZhbHVlLmNvcHlSZWYoKSkKKyAgICAgICAgLCBtX3ZhbHVlSWQob3RoZXIubV92YWx1ZUlkKQog
ICAgICAgICAsIG1fc3RyaW5nVmFsdWUob3RoZXIubV9zdHJpbmdWYWx1ZSkKKyAgICAgICAgLCBt
X2NvbnRhaW5zVmFyaWFibGVzKG90aGVyLm1fY29udGFpbnNWYXJpYWJsZXMpCiAgICAgICAgICwg
bV9zZXJpYWxpemVkKG90aGVyLm1fc2VyaWFsaXplZCkKKyAgICAgICAgLCBtX3Jlc29sdmVkVHlw
ZWRWYWx1ZShvdGhlci5tX3Jlc29sdmVkVHlwZWRWYWx1ZSkKICAgICB7Ci0gICAgICAgIC8vIE5v
IGNvcHkgY29uc3RydWN0b3IgZm9yIFJlZjxDU1NWYXJpYWJsZURhdGE+LCBzbyB3ZSBoYXZlIHRv
IGRvIHRoaXMgb3Vyc2VsdmVzCi0gICAgICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0
b3IoWyZdKGNvbnN0IFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiYgdmFsdWUpIHsKLSAg
ICAgICAgICAgIG1fdmFsdWUgPSB2YWx1ZS5jb3B5UmVmKCk7Ci0gICAgICAgIH0sIFsmXShjb25z
dCBDU1NWYWx1ZUlEJiB2YWx1ZSkgewotICAgICAgICAgICAgbV92YWx1ZSA9IHZhbHVlOwotICAg
ICAgICB9LCBbJl0oY29uc3QgUmVmPENTU1ZhcmlhYmxlRGF0YT4mIHZhbHVlKSB7Ci0gICAgICAg
ICAgICBtX3ZhbHVlID0gdmFsdWUuY29weVJlZigpOwotICAgICAgICB9LCBbJl0oY29uc3QgTGVu
Z3RoJiB2YWx1ZSkgewotICAgICAgICAgICAgbV92YWx1ZSA9IHZhbHVlOwotICAgICAgICB9KTsK
LSAgICAgICAgV1RGOjp2aXNpdCh2aXNpdG9yLCBvdGhlci5tX3ZhbHVlKTsKICAgICB9CiAgICAg
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nIG1fbmFtZTsKLSAgICBWYXJpYW50VmFsdWUgbV92YWx1
ZTsKKyAgICAKKyAgICBSZWZQdHI8Q1NTVmFyaWFibGVEYXRhPiBtX3ZhbHVlOworICAgIENTU1Zh
bHVlSUQgbV92YWx1ZUlkIHsgQ1NTVmFsdWVJbnZhbGlkIH07CiAgICAgCiAgICAgbXV0YWJsZSBT
dHJpbmcgbV9zdHJpbmdWYWx1ZTsKKyAgICBib29sIG1fY29udGFpbnNWYXJpYWJsZXMgeyBmYWxz
ZSB9OwogICAgIG11dGFibGUgYm9vbCBtX3NlcmlhbGl6ZWQgeyBmYWxzZSB9OworCisgICAgLy8g
RklYTUU6IEl0IHNob3VsZCBub3QgYmUgcG9zc2libGUgdG8gZXhwcmVzcyBhbiBpbnZhbGlkIHN0
YXRlLCBzdWNoIGFzIGNvbnRhaW5zVmFyaWFibGVzKCkgJiYgcmVzb2x2ZWRUeXBlZFZhbHVlKCku
CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IG1fcmVzb2x2ZWRUeXBlZFZhbHVlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVn
aXN0ZXJlZEN1c3RvbVByb3BlcnR5LmNwcAppbmRleCA3OWVmN2ZlNmIwM2NkNmNmZjdmYjllYTgx
OWIxNjA3NmRlNDU1OGQ3Li4zZWE3YjkyYzAwOTk3MzA5NmEwM2U5NWU5ZTZhMjY3NTRhNWNhODhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3Bl
cnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3Bl
cnR5LmNwcApAQCAtMzAsOSArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNTU1Jl
Z2lzdGVyZWRDdXN0b21Qcm9wZXJ0eTo6Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzeW50YXgsIGJvb2wgaW5oZXJpdHMsIFJlZlB0
cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiYmIGluaXRpYWxWYWx1ZSkKK0NTU1JlZ2lzdGVyZWRD
dXN0b21Qcm9wZXJ0eTo6Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYg
bmFtZSwgYm9vbCBpbmhlcml0cywgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYgaW5p
dGlhbFZhbHVlKQogICAgIDogbmFtZShuYW1lKQotICAgICwgc3ludGF4KHN5bnRheCkKICAgICAs
IGluaGVyaXRzKGluaGVyaXRzKQogICAgICwgbV9pbml0aWFsVmFsdWUoV1RGTW92ZShpbml0aWFs
VmFsdWUpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZ2lzdGVyZWRD
dXN0b21Qcm9wZXJ0eS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Q
cm9wZXJ0eS5oCmluZGV4IGRmY2YwYmRjMzllZDU0MGMzZDFkYWE0YzA1YTY0YzBmNTkxNTM5MmIu
LjM0MjdlYWEzYzNhYjc0N2MwNTE4NWYzOTM1YjZiNWIyZDI2YWVlM2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5LmgKQEAgLTMzLDEwICsz
MywxMCBAQCBjbGFzcyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOwogCiBzdHJ1Y3QgQ1NTUmVnaXN0
ZXJlZEN1c3RvbVByb3BlcnR5IHsKICAgICBjb25zdCBTdHJpbmcgbmFtZTsKLSAgICBjb25zdCBT
dHJpbmcgc3ludGF4OworICAgIC8qIFRPRE8gc3ludGF4ICovCiAgICAgY29uc3QgYm9vbCBpbmhl
cml0czsKIAotICAgIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgc3ludGF4LCBib29sIGluaGVyaXRzLCBSZWZQdHI8Q1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZT4mJiBpbml0aWFsVmFsdWUpOworICAgIENTU1JlZ2lzdGVyZWRDdXN0b21Q
cm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgaW5oZXJpdHMsIFJlZlB0cjxDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlPiYmIGluaXRpYWxWYWx1ZSk7CiAKICAgICBjb25zdCBDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlKiBpbml0aWFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxWYWx1
ZS5nZXQoKTsgfQogICAgIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBpbml0aWFsVmFs
dWVDb3B5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFi
bGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZURhdGEuY3BwCmluZGV4
IDYwNGNhMTgzNDM0YjY1ODY3NGQzZDhjMDcyOWE0MTEwOTE1OGQ5OWQuLjk4OTkzNTMxNzU5Yzhj
OTNmNzc1N2UzMTk4OWIxZDYwOTgxMjBjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYXJpYWJsZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJs
ZURhdGEuY3BwCkBAIC02MCw3ICs2MCw3IEBAIGJvb2wgQ1NTVmFyaWFibGVEYXRhOjpvcGVyYXRv
cj09KGNvbnN0IENTU1ZhcmlhYmxlRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRva2Vu
cygpID09IG90aGVyLnRva2VucygpOwogfQogCi1DU1NWYXJpYWJsZURhdGE6OkNTU1ZhcmlhYmxl
RGF0YShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3ZvaWQgQ1NTVmFyaWFibGVE
YXRhOjpjb25zdW1lQW5kVXBkYXRlVG9rZW5zKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQogewogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBDU1NQYXJzZXJU
b2tlblJhbmdlIGxvY2FsUmFuZ2UgPSByYW5nZTsKQEAgLTc3LDQgKzc3LDEwOSBAQCBDU1NWYXJp
YWJsZURhdGE6OkNTU1ZhcmlhYmxlRGF0YShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSkKICAgICAgICAgdXBkYXRlVG9rZW5zPFVDaGFyPihyYW5nZSk7CiB9CiAKK0NTU1ZhcmlhYmxl
RGF0YTo6Q1NTVmFyaWFibGVEYXRhKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBi
b29sIG5lZWRzVmFyaWFibGVSZXNvbHV0aW9uKQorICAgIDogbV9uZWVkc1ZhcmlhYmxlUmVzb2x1
dGlvbihuZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbikKK3sKKyAgICBjb25zdW1lQW5kVXBkYXRlVG9r
ZW5zKHJhbmdlKTsKK30KKworYm9vbCBDU1NWYXJpYWJsZURhdGE6OmNoZWNrVmFyaWFibGVzRm9y
Q3ljbGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
LCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21pY1N0
cmluZz4mIGludmFsaWRQcm9wZXJ0aWVzKSBjb25zdAoreworICAgIGlmIChpbnZhbGlkUHJvcGVy
dGllcy5jb250YWlucyhuYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIEhh
c2hTZXQ8QXRvbWljU3RyaW5nPiBuZXdTZWVuUHJvcGVydGllcyA9IHNlZW5Qcm9wZXJ0aWVzOwor
ICAgIG5ld1NlZW5Qcm9wZXJ0aWVzLmFkZChuYW1lKTsKKyAgICAKKyAgICBib29sIHZhbGlkID0g
Y2hlY2tWYXJpYWJsZXNGb3JDeWNsZXNXaXRoUmFuZ2UobV90b2tlbnMsIHN0eWxlLCBuZXdTZWVu
UHJvcGVydGllcywgaW52YWxpZFByb3BlcnRpZXMpOworICAgIGlmICghdmFsaWQpCisgICAgICAg
IGludmFsaWRQcm9wZXJ0aWVzLmFkZChuYW1lKTsKKyAgICAKKyAgICByZXR1cm4gdmFsaWQ7Cit9
CisgICAgCitib29sIENTU1ZhcmlhYmxlRGF0YTo6Y2hlY2tWYXJpYWJsZXNGb3JDeWNsZXNXaXRo
UmFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
LCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21pY1N0
cmluZz4mIGludmFsaWRQcm9wZXJ0aWVzKSBjb25zdAoreworICAgIHdoaWxlICghcmFuZ2UuYXRF
bmQoKSkgeworICAgICAgICBpZiAocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1
ZVZhciB8fCByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlRW52KSB7CisgICAg
ICAgICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGJsb2NrID0gcmFuZ2UuY29uc3VtZUJsb2NrKCk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJsb2NrLmNvbnN1bWVXaGl0ZXNwYWNlKCk7Cisg
ICAgICAgICAgICBBU1NFUlQoYmxvY2sucGVlaygpLnR5cGUoKSA9PSBJZGVudFRva2VuKTsKKyAg
ICAgICAgICAgIEF0b21pY1N0cmluZyB2YXJpYWJsZU5hbWUgPSBibG9jay5jb25zdW1lSW5jbHVk
aW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9BdG9taWNTdHJpbmcoKTsKKyAgICAgICAgICAgIEFT
U0VSVChibG9jay5hdEVuZCgpIHx8IGJsb2NrLnBlZWsoKS50eXBlKCkgPT0gQ29tbWFUb2tlbik7
CisgICAgICAgICAgICBpZiAoc2VlblByb3BlcnRpZXMuY29udGFpbnModmFyaWFibGVOYW1lKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGF1dG8qIHZhbHVl
ID0gc3R5bGUuZ2V0Q3VzdG9tUHJvcGVydHkodmFyaWFibGVOYW1lKTsKKyAgICAgICAgICAgIGlm
ICh2YWx1ZSAmJiB2YWx1ZS0+Y29udGFpbnNWYXJpYWJsZXMoKSAmJiAhdmFsdWUtPmNoZWNrVmFy
aWFibGVzRm9yQ3ljbGVzKHZhcmlhYmxlTmFtZSwgc3R5bGUsIHNlZW5Qcm9wZXJ0aWVzLCBpbnZh
bGlkUHJvcGVydGllcykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
ICAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBDb21tYVRva2VuKSB7CisgICAgICAgICAg
ICAgICAgLy8gRmFsbGJhY2suCisgICAgICAgICAgICAgICAgcmFuZ2UuY29uc3VtZSgpOworICAg
ICAgICAgICAgICAgIHJldHVybiBjaGVja1ZhcmlhYmxlc0ZvckN5Y2xlc1dpdGhSYW5nZShibG9j
aywgc3R5bGUsIHNlZW5Qcm9wZXJ0aWVzLCBpbnZhbGlkUHJvcGVydGllcyk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmFuZ2UuY29uc3VtZSgpOworICAgIH0K
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NWYXJpYWJsZURhdGE6OnJlc29sdmVWYXJp
YWJsZUZhbGxiYWNrKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYgcmVnaXN0
ZXJlZFByb3BlcnRpZXMsIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UsIFZlY3RvcjxDU1NQYXJz
ZXJUb2tlbj4mIHJlc3VsdCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAoreworICAg
IGlmIChyYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKHJh
bmdlLnBlZWsoKS50eXBlKCkgPT0gQ29tbWFUb2tlbik7CisgICAgcmFuZ2UuY29uc3VtZSgpOwor
ICAgIHJldHVybiByZXNvbHZlVG9rZW5SYW5nZShyZWdpc3RlcmVkUHJvcGVydGllcywgcmFuZ2Us
IHJlc3VsdCwgc3R5bGUpOworfQorCitib29sIENTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2ZVZhcmlh
YmxlUmVmZXJlbmNlKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYgcmVnaXN0
ZXJlZFByb3BlcnRpZXMsIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UsIFZlY3RvcjxDU1NQYXJz
ZXJUb2tlbj4mIHJlc3VsdCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAoreworICAg
IHJhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7CisgICAgQVNTRVJUKHJhbmdlLnBlZWsoKS50eXBl
KCkgPT0gSWRlbnRUb2tlbik7CisgICAgQXRvbWljU3RyaW5nIHZhcmlhYmxlTmFtZSA9IHJhbmdl
LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b0F0b21pY1N0cmluZygpOwor
ICAgIEFTU0VSVChyYW5nZS5hdEVuZCgpIHx8IChyYW5nZS5wZWVrKCkudHlwZSgpID09IENvbW1h
VG9rZW4pKTsKKyAgICAKKyAgICBhdXRvKiBwcm9wZXJ0eSA9IHN0eWxlLmdldEN1c3RvbVByb3Bl
cnR5KHZhcmlhYmxlTmFtZSk7CisgICAgaWYgKHByb3BlcnR5ICYmIHByb3BlcnR5LT5yZXNvbHZl
ZFR5cGVkVmFsdWUoKSkgeworICAgICAgICByZXN1bHQuYXBwZW5kVmVjdG9yKHByb3BlcnR5LT50
b2tlbnMocmVnaXN0ZXJlZFByb3BlcnRpZXMsIHN0eWxlKSk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIGlmICghcHJvcGVydHkgfHwgIXByb3BlcnR5LT52YWx1ZSgpKSB7Cisg
ICAgICAgIGF1dG8qIHJlZ2lzdGVyZWQgPSByZWdpc3RlcmVkUHJvcGVydGllcy5nZXQodmFyaWFi
bGVOYW1lKTsKKyAgICAgICAgaWYgKHJlZ2lzdGVyZWQgJiYgcmVnaXN0ZXJlZC0+aW5pdGlhbFZh
bHVlKCkpCisgICAgICAgICAgICBwcm9wZXJ0eSA9IHJlZ2lzdGVyZWQtPmluaXRpYWxWYWx1ZSgp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZVZhcmlhYmxlRmFsbGJh
Y2socmVnaXN0ZXJlZFByb3BlcnRpZXMsIHJhbmdlLCByZXN1bHQsIHN0eWxlKTsKKyAgICB9Cisg
ICAgQVNTRVJUKHByb3BlcnR5KTsKKyAgICByZXN1bHQuYXBwZW5kVmVjdG9yKHByb3BlcnR5LT50
b2tlbnMocmVnaXN0ZXJlZFByb3BlcnRpZXMsIHN0eWxlKSk7CisgICAgCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK1JlZlB0cjxDU1NWYXJpYWJsZURhdGE+IENTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2
ZVZhcmlhYmxlUmVmZXJlbmNlcyhjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQm
IHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0Cit7
CisgICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiByZXNvbHZlZFRva2VuczsKKyAgICBDU1NQYXJz
ZXJUb2tlblJhbmdlIHJhbmdlID0gbV90b2tlbnM7CisgICAgaWYgKCFyZXNvbHZlVG9rZW5SYW5n
ZShyZWdpc3RlcmVkUHJvcGVydGllcywgcmFuZ2UsIHJlc29sdmVkVG9rZW5zLCBzdHlsZSkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBDU1NWYXJpYWJsZURhdGE6OmNyZWF0
ZVJlc29sdmVkKHJlc29sdmVkVG9rZW5zLCAqdGhpcyk7Cit9CisgICAgCitib29sIENTU1Zhcmlh
YmxlRGF0YTo6cmVzb2x2ZVRva2VuUmFuZ2UoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3Bl
cnR5U2V0JiByZWdpc3RlcmVkUHJvcGVydGllcywgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwg
VmVjdG9yPENTU1BhcnNlclRva2VuPiYgcmVzdWx0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUp
IGNvbnN0Cit7CisgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKyAgICB3aGlsZSAoIXJhbmdlLmF0
RW5kKCkpIHsKKyAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFs
dWVWYXIgfHwgcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUVudikKKyAgICAg
ICAgICAgIHN1Y2Nlc3MgJj0gcmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlKHJlZ2lzdGVyZWRQcm9w
ZXJ0aWVzLCByYW5nZS5jb25zdW1lQmxvY2soKSwgcmVzdWx0LCBzdHlsZSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmFuZ2UuY29uc3VtZSgpKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYXJpYWJsZURhdGEuaAppbmRleCAzOTZlMDY5YjljNDY1MmM4ZTg3ZjdjYWQ4Mjk5
MDM5ZWMwY2VkMTZkLi4wMDhhNmZhNDIzMDc3MDQ5OTMzMTcwN2E3NGM3ZDZjZDZkMjI3MmUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5oCkBAIC00Myw5ICs0MywxNCBAQCBjbGFz
cyBDU1NWYXJpYWJsZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NWYXJpYWJsZURhdGE+IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDU1NWYXJpYWJsZURhdGEpOwogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTVmFyaWFibGVEYXRh
PiBjcmVhdGUoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCisgICAgc3RhdGljIFJl
ZjxDU1NWYXJpYWJsZURhdGE+IGNyZWF0ZShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgYm9vbCBuZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbiA9IHRydWUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NWYXJpYWJsZURhdGEocmFuZ2UpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ1NTVmFyaWFibGVEYXRhKHJhbmdlLCBuZWVkc1ZhcmlhYmxlUmVz
b2x1dGlvbikpOworICAgIH0KKworICAgIHN0YXRpYyBSZWY8Q1NTVmFyaWFibGVEYXRhPiBjcmVh
dGVSZXNvbHZlZChjb25zdCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXNvbHZlZFRva2Vucywg
Y29uc3QgQ1NTVmFyaWFibGVEYXRhJiB1bnJlc29sdmVkRGF0YSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENTU1ZhcmlhYmxlRGF0YShyZXNvbHZlZFRva2VucywgdW5yZXNv
bHZlZERhdGEubV9iYWNraW5nU3RyaW5nKSk7CiAgICAgfQogCiAgICAgQ1NTUGFyc2VyVG9rZW5S
YW5nZSB0b2tlblJhbmdlKCkgeyByZXR1cm4gbV90b2tlbnM7IH0KQEAgLTU0LDEyICs1OSwzNiBA
QCBwdWJsaWM6CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTVmFyaWFibGVEYXRhJiBv
dGhlcikgY29uc3Q7CiAKKyAgICBib29sIG5lZWRzVmFyaWFibGVSZXNvbHV0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9uZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbjsgfQorCisgICAgYm9vbCBjaGVja1Zh
cmlhYmxlc0ZvckN5Y2xlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFJlbmRlclN0
eWxlJiwgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBzZWVuUHJvcGVydGllcywgSGFzaFNldDxBdG9t
aWNTdHJpbmc+JiBpbnZhbGlkUHJvcGVydGllcykgY29uc3Q7CisKKyAgICBSZWZQdHI8Q1NTVmFy
aWFibGVEYXRhPiByZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKGNvbnN0IENTU1JlZ2lzdGVyZWRD
dXN0b21Qcm9wZXJ0eVNldCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CisgICAgYm9vbCBy
ZXNvbHZlVG9rZW5SYW5nZShjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQmLCBD
U1NQYXJzZXJUb2tlblJhbmdlLCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiwgY29uc3QgUmVuZGVy
U3R5bGUmKSBjb25zdDsKKwogcHJpdmF0ZToKLSAgICBDU1NWYXJpYWJsZURhdGEoY29uc3QgQ1NT
UGFyc2VyVG9rZW5SYW5nZSYpOworICAgIENTU1ZhcmlhYmxlRGF0YShjb25zdCBDU1NQYXJzZXJU
b2tlblJhbmdlJiwgYm9vbCBuZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbik7CisKKyAgICAvLyBXZSBj
YW4gc2FmZWx5IGNvcHkgdGhlIHRva2VucyAod2hpY2ggaGF2ZSByYXcgcG9pbnRlcnMgdG8gc3Vi
c3RyaW5ncykgYmVjYXVzZQorICAgIC8vIFN0eWxlUHJvcGVydHlTZXRzIGNvbnRhaW4gcmVmZXJl
bmNlcyB0byBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlcywgd2hpY2gKKyAgICAvLyBwb2ludCB0byB0
aGUgdW5yZXNvbHZlZCBDU1NWYXJpYWJsZURhdGEgdmFsdWVzIHRoYXQgb3duIHRoZSBiYWNraW5n
IHN0cmluZ3MKKyAgICAvLyB0aGlzIHdpbGwgcG90ZW50aWFsbHkgcmVmZXJlbmNlLgorICAgIENT
U1ZhcmlhYmxlRGF0YShjb25zdCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXNvbHZlZFRva2Vu
cywgU3RyaW5nIGJhY2tpbmdTdHJpbmcpCisgICAgICAgIDogbV9iYWNraW5nU3RyaW5nKGJhY2tp
bmdTdHJpbmcpCisgICAgICAgICwgbV90b2tlbnMocmVzb2x2ZWRUb2tlbnMpCisgICAgICAgICwg
bV9uZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbihmYWxzZSkKKyAgICB7IH0KKworICAgIHZvaWQgY29u
c3VtZUFuZFVwZGF0ZVRva2Vucyhjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJik7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB1cGRhdGVUb2tlbnMoY29uc3QgQ1NT
UGFyc2VyVG9rZW5SYW5nZSYpOworICAgIAorICAgIGJvb2wgY2hlY2tWYXJpYWJsZXNGb3JDeWNs
ZXNXaXRoUmFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSwgY29uc3QgUmVuZGVyU3R5bGUmLCBIYXNo
U2V0PEF0b21pY1N0cmluZz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21pY1N0cmluZz4m
IGludmFsaWRQcm9wZXJ0aWVzKSBjb25zdDsKKyAgICBib29sIHJlc29sdmVWYXJpYWJsZVJlZmVy
ZW5jZShjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQmLCBDU1NQYXJzZXJUb2tl
blJhbmdlLCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25z
dDsKKyAgICBib29sIHJlc29sdmVWYXJpYWJsZUZhbGxiYWNrKGNvbnN0IENTU1JlZ2lzdGVyZWRD
dXN0b21Qcm9wZXJ0eVNldCYsIENTU1BhcnNlclRva2VuUmFuZ2UsIFZlY3RvcjxDU1NQYXJzZXJU
b2tlbj4mLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCiAgICAgU3RyaW5nIG1fYmFja2lu
Z1N0cmluZzsKICAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IG1fdG9rZW5zOworICAgIGNvbnN0
IGJvb2wgbV9uZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbjsKIAogICAgIC8vIEZJWE1FLU5FV1BBUlNF
UjogV2Ugd2FudCB0byBjYWNoZSBTdHlsZVByb3BlcnRpZXMgb25jZSB3ZSBzdXBwb3J0IEBhcHBs
eS4KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVSZWZlcmVu
Y2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1
ZS5jcHAKaW5kZXggNzdhNTIzZTRkN2RkYWRmMDMwYTEyNDA1ZGU3ZmMyZmNjN2ExMTRmYy4uMzg5
NTdlNDAzMGMyMzhmNGY3NzU1MmNmMjkzZTUxMTBhNzkxMzk2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmNwcApAQCAtMzAsOSArMzAsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFs
dWUuaCIKIAotI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCi0jaW5jbHVkZSAiU3R5bGVSZXNvbHZl
ci5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBDU1NWYXJpYWJsZVJlZmVyZW5j
ZVZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKQEAgLTQzLDcyICs0MCwxMSBAQCBTdHJpbmcg
Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgfQog
ICAgIHJldHVybiBtX3N0cmluZ1ZhbHVlOwogfQotCi1zdGF0aWMgYm9vbCByZXNvbHZlVG9rZW5S
YW5nZShDU1NQYXJzZXJUb2tlblJhbmdlLCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiwgQXBwbHlD
YXNjYWRlZFByb3BlcnR5U3RhdGUmKTsKLQotc3RhdGljIGJvb2wgcmVzb2x2ZVZhcmlhYmxlRmFs
bGJhY2soQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgVmVjdG9yPENTU1BhcnNlclRva2VuPiYg
cmVzdWx0LCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgc3RhdGUpCi17Ci0gICAgaWYgKHJh
bmdlLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBBU1NFUlQocmFuZ2UucGVl
aygpLnR5cGUoKSA9PSBDb21tYVRva2VuKTsKLSAgICByYW5nZS5jb25zdW1lKCk7Ci0gICAgcmV0
dXJuIHJlc29sdmVUb2tlblJhbmdlKHJhbmdlLCByZXN1bHQsIHN0YXRlKTsKLX0KLQotc3RhdGlj
IGJvb2wgcmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlKENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2Us
IFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mIHJlc3VsdCwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3Rh
dGUmIHN0YXRlKQorICAgIAorYm9vbCBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlOjpjaGVja1Zh
cmlhYmxlc0ZvckN5Y2xlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBzZWVuUHJvcGVydGllcywgSGFzaFNl
dDxBdG9taWNTdHJpbmc+JiBpbnZhbGlkUHJvcGVydGllcykgY29uc3QKIHsKLSAgICBhdXRvJiBy
ZWdpc3RlcmVkUHJvcGVydGllcyA9IHN0YXRlLnN0eWxlUmVzb2x2ZXItPmRvY3VtZW50KCkuZ2V0
Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0KCk7Ci0gICAgYXV0byYgc3R5bGUgPSAqc3Rh
dGUuc3R5bGVSZXNvbHZlci0+c3R5bGUoKTsKLQotICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNwYWNl
KCk7Ci0gICAgQVNTRVJUKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRUb2tlbik7Ci0gICAg
U3RyaW5nIHZhcmlhYmxlTmFtZSA9IHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCku
dmFsdWUoKS50b1N0cmluZygpOwotICAgIEFTU0VSVChyYW5nZS5hdEVuZCgpIHx8IChyYW5nZS5w
ZWVrKCkudHlwZSgpID09IENvbW1hVG9rZW4pKTsKLQotICAgIC8vIEFwcGx5IHRoaXMgdmFyaWFi
bGUgZmlyc3QsIGluIGNhc2UgaXQgaXMgc3RpbGwgdW5yZXNvbHZlZAotICAgIHN0YXRlLnN0eWxl
UmVzb2x2ZXItPmFwcGx5Q2FzY2FkZWRDdXN0b21Qcm9wZXJ0eSh2YXJpYWJsZU5hbWUsIHN0YXRl
KTsKLQotICAgIC8vIEFwcGx5IGZhbGxiYWNrIHRvIGRldGVjdCBjeWNsZXMKLSAgICBWZWN0b3I8
Q1NTUGFyc2VyVG9rZW4+IGZhbGxiYWNrUmVzdWx0OwotICAgIHJlc29sdmVWYXJpYWJsZUZhbGxi
YWNrKENTU1BhcnNlclRva2VuUmFuZ2UocmFuZ2UpLCBmYWxsYmFja1Jlc3VsdCwgc3RhdGUpOwot
Ci0gICAgYXV0byogcHJvcGVydHkgPSBzdHlsZS5nZXRDdXN0b21Qcm9wZXJ0eSh2YXJpYWJsZU5h
bWUpOwotCi0gICAgaWYgKCFwcm9wZXJ0eSB8fCBwcm9wZXJ0eS0+aXNVbnNldCgpIHx8IHByb3Bl
cnR5LT5pc0ludmFsaWQoKSkgewotICAgICAgICBhdXRvKiByZWdpc3RlcmVkID0gcmVnaXN0ZXJl
ZFByb3BlcnRpZXMuZ2V0KHZhcmlhYmxlTmFtZSk7Ci0gICAgICAgIGlmIChyZWdpc3RlcmVkICYm
IHJlZ2lzdGVyZWQtPmluaXRpYWxWYWx1ZSgpKQotICAgICAgICAgICAgcHJvcGVydHkgPSByZWdp
c3RlcmVkLT5pbml0aWFsVmFsdWUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJu
IHJlc29sdmVWYXJpYWJsZUZhbGxiYWNrKHJhbmdlLCByZXN1bHQsIHN0YXRlKTsKLSAgICB9Ci0K
LSAgICBBU1NFUlQocHJvcGVydHktPmlzUmVzb2x2ZWQoKSk7Ci0gICAgcmVzdWx0LmFwcGVuZFZl
Y3Rvcihwcm9wZXJ0eS0+dG9rZW5zKCkpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRp
YyBib29sIHJlc29sdmVUb2tlblJhbmdlKENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UsIFZlY3Rv
cjxDU1NQYXJzZXJUb2tlbj4mIHJlc3VsdCwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIHN0
YXRlKQotewotICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0gICAgd2hpbGUgKCFyYW5nZS5hdEVu
ZCgpKSB7Ci0gICAgICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVl
VmFyIHx8IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVFbnYpCi0gICAgICAg
ICAgICBzdWNjZXNzICY9IHJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZShyYW5nZS5jb25zdW1lQmxv
Y2soKSwgcmVzdWx0LCBzdGF0ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQocmFuZ2UuY29uc3VtZSgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19Ci0K
LVJlZlB0cjxDU1NWYXJpYWJsZURhdGE+IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OnJlc29s
dmVWYXJpYWJsZVJlZmVyZW5jZXMoQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIHN0YXRlKSBj
b25zdAotewotICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVzb2x2ZWRUb2tlbnM7Ci0gICAg
Q1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSA9IG1fZGF0YS0+dG9rZW5SYW5nZSgpOwotCi0gICAg
aWYgKCFyZXNvbHZlVG9rZW5SYW5nZShyYW5nZSwgcmVzb2x2ZWRUb2tlbnMsIHN0YXRlKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gQ1NTVmFyaWFibGVEYXRhOjpjcmVh
dGUocmVzb2x2ZWRUb2tlbnMpOworICAgIEFTU0VSVChtX2RhdGEpOworICAgIHJldHVybiBtX2Rh
dGEtPmNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzKG5hbWUsIHN0eWxlLCBzZWVuUHJvcGVydGllcywg
aW52YWxpZFByb3BlcnRpZXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuaAppbmRleCBkNzBlMzI3
YzEwNmRkYWFlODIzZmY5OWJmYTJhOWNiYmE4YjYwNjg2Li4yMjg5NjRlZDc2OTQ0MDU5Mzk1YzEw
YzY0YWVmMmMwMTA2ZDgxZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFy
aWFibGVSZWZlcmVuY2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJs
ZVJlZmVyZW5jZVZhbHVlLmgKQEAgLTI5LDMwICsyOSwyOCBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIkNTU1BhcnNlclRva2VuLmgiCi0jaW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW5SYW5n
ZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVmFyaWFibGVEYXRhLmgi
Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3Ry
dWN0IEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlOwotY2xhc3MgQ1NTUGFyc2VyVG9rZW5SYW5n
ZTsKLQogY2xhc3MgQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiBjcmVh
dGUoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCisgICAgc3RhdGljIFJlZjxDU1NW
YXJpYWJsZVJlZmVyZW5jZVZhbHVlPiBjcmVhdGUoUmVmPENTU1ZhcmlhYmxlRGF0YT4mJiBkYXRh
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTVmFyaWFibGVSZWZlcmVu
Y2VWYWx1ZShXVEZNb3ZlKGRhdGEpKSk7CisgICAgfQorCisgICAgQ1NTVmFyaWFibGVEYXRhKiB2
YXJpYWJsZURhdGFWYWx1ZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlKENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRlKHJh
bmdlKSkpOworICAgICAgICByZXR1cm4gbV9kYXRhLmdldCgpOwogICAgIH0KIAotICAgIGJvb2wg
ZXF1YWxzKGNvbnN0IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUmIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX2RhdGEuZ2V0KCkgPT0gb3RoZXIubV9kYXRhLmdldCgpOyB9CisgICAgYm9vbCBlcXVh
bHMoY29uc3QgQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YSA9PSBvdGhlci5tX2RhdGE7IH0KICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNv
bnN0OwogCi0gICAgUmVmUHRyPENTU1ZhcmlhYmxlRGF0YT4gcmVzb2x2ZVZhcmlhYmxlUmVmZXJl
bmNlcyhBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYpIGNvbnN0OworICAgIGJvb2wgY2hlY2tW
YXJpYWJsZXNGb3JDeWNsZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBSZW5kZXJT
dHlsZSYsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRv
bWljU3RyaW5nPiYgaW52YWxpZFByb3BlcnRpZXMpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIENT
U1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUoUmVmPENTU1ZhcmlhYmxlRGF0YT4mJiBkYXRhKQpAQCAt
NjEsNyArNTksNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBSZWY8Q1NTVmFyaWFi
bGVEYXRhPiBtX2RhdGE7CisgICAgUmVmUHRyPENTU1ZhcmlhYmxlRGF0YT4gbV9kYXRhOwogICAg
IG11dGFibGUgU3RyaW5nIG1fc3RyaW5nVmFsdWU7CiAgICAgbXV0YWJsZSBib29sIG1fc2VyaWFs
aXplZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNT
U1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1Jl
Z2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwCmluZGV4IGI4ZWY2YTk1MjEzZGVhMjUwN2Q1ZGY3NTEx
ZmE5MTNmOTI4MjI5YTguLjM3MzE4ZGE2NTk4ZmQxMTU5MzA2OWNhMjIxNTVmZGI2NGI1NGQ3YWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3Bl
cnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9w
ZXJ0eS5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogCiAjaW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNpbmNsdWRlICJDU1NQ
cm9wZXJ0eVBhcnNlci5oIgogI2luY2x1ZGUgIkNTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5o
IgogI2luY2x1ZGUgIkNTU1Rva2VuaXplci5oIgogI2luY2x1ZGUgIkRPTUNTU05hbWVzcGFjZS5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVCdWlsZGVyQ29udmVydGVy
LmgiCisjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MiwzMyArNDIsMjggQEAgRXhjZXB0
aW9uT3I8dm9pZD4gRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6cmVnaXN0ZXJQcm9wZXJ0
eShEb2N1bWVudCYgZG9jdW0KIHsKICAgICBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4g
aW5pdGlhbFZhbHVlOwogICAgIGlmICghZGVzY3JpcHRvci5pbml0aWFsVmFsdWUuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIENTU1Rva2VuaXplciB0b2tlbml6ZXIoZGVzY3JpcHRvci5pbml0aWFsVmFs
dWUpOworICAgICAgICBpbml0aWFsVmFsdWUgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVh
dGVXaXRoVmFyaWFibGVEYXRhKGRlc2NyaXB0b3IubmFtZSwgQ1NTVmFyaWFibGVEYXRhOjpjcmVh
dGUoQ1NTUGFyc2VyVG9rZW5SYW5nZShWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+KCkpLCBmYWxzZSkp
OworICAgICAgICBDU1NQYXJzZXIgcGFyc2VyKGRvY3VtZW50KTsKICAgICAgICAgU3R5bGVSZXNv
bHZlciBzdHlsZVJlc29sdmVyKGRvY3VtZW50KTsKIAotICAgICAgICAvLyBXZSBuZWVkIHRvIGlu
aXRpYWxpemUgdGhpcyBzbyB0aGF0IHdlIGNhbiBzdWNjZXNzZnVsbHkgcGFyc2UgY29tcHV0YXRp
b25hbGx5IGRlcGVuZGVudCB2YWx1ZXMgKGxpa2UgZW0gdW5pdHMpLgotICAgICAgICAvLyBXZSBk
b24ndCBhY3R1YWxseSBuZWVkIHRoZSB2YWx1ZXMgdG8gYmUgYWNjdXJhdGUsIHNpbmNlIHRoZXkg
d2lsbCBiZSByZWplY3RlZCBsYXRlciBhbnl3YXkKLSAgICAgICAgc3R5bGVSZXNvbHZlci5zdGF0
ZSgpLnNldFN0eWxlKHN0eWxlUmVzb2x2ZXIuZGVmYXVsdFN0eWxlRm9yRWxlbWVudCgpKTsKLSAg
ICAgICAgc3R5bGVSZXNvbHZlci51cGRhdGVGb250KCk7Ci0KLSAgICAgICAgaW5pdGlhbFZhbHVl
ID0gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGRlc2Ny
aXB0b3IubmFtZSwgZGVzY3JpcHRvci5zeW50YXgsIHRva2VuaXplci50b2tlblJhbmdlKCksIHN0
eWxlUmVzb2x2ZXIsIHN0cmljdENTU1BhcnNlckNvbnRleHQoKSk7Ci0KLSAgICAgICAgaWYgKCFp
bml0aWFsVmFsdWUgfHwgIWluaXRpYWxWYWx1ZS0+aXNSZXNvbHZlZCgpKQorICAgICAgICBhdXRv
IHByaW1pdGl2ZVZhbCA9IHBhcnNlci5wYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5Q3VzdG9t
LCBkZXNjcmlwdG9yLmluaXRpYWxWYWx1ZSk7CisgICAgICAgIGlmICghcHJpbWl0aXZlVmFsIHx8
ICFwcmltaXRpdmVWYWwtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBTeW50YXhFcnJvciwgIlRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90
IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LiIgfTsKIAogICAgICAgICBIYXNoU2V0PENTU1By
b3BlcnR5SUQ+IGRlcGVuZGVuY2llczsKLSAgICAgICAgaW5pdGlhbFZhbHVlLT5jb2xsZWN0RGly
ZWN0Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhkZXBlbmRlbmNpZXMpOwotICAgICAgICBpbml0
aWFsVmFsdWUtPmNvbGxlY3REaXJlY3RSb290Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhkZXBl
bmRlbmNpZXMpOworICAgICAgICBwcmltaXRpdmVWYWwtPmNvbGxlY3REaXJlY3RDb21wdXRhdGlv
bmFsRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcyk7CisgICAgICAgIHByaW1pdGl2ZVZhbC0+Y29s
bGVjdERpcmVjdFJvb3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcyk7CiAK
ICAgICAgICAgaWYgKCFkZXBlbmRlbmNpZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yLCAiVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgbXVzdCBi
ZSBjb21wdXRhdGlvbmFsbHkgaW5kZXBlbmRlbnQuIiB9OworCisgICAgICAgIGluaXRpYWxWYWx1
ZS0+c2V0UmVzb2x2ZWRUeXBlZFZhbHVlKFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExl
bmd0aChzdHlsZVJlc29sdmVyLCAqcHJpbWl0aXZlVmFsKSk7CiAgICAgfQogCi0gICAgQ1NTUmVn
aXN0ZXJlZEN1c3RvbVByb3BlcnR5IHByb3BlcnR5IHsgZGVzY3JpcHRvci5uYW1lLCBkZXNjcmlw
dG9yLnN5bnRheCwgZGVzY3JpcHRvci5pbmhlcml0cywgV1RGTW92ZShpbml0aWFsVmFsdWUpIH07
CisgICAgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5IHByb3BlcnR5IHsgZGVzY3JpcHRvci5u
YW1lLCBkZXNjcmlwdG9yLmluaGVyaXRzLCBXVEZNb3ZlKGluaXRpYWxWYWx1ZSkgfTsKICAgICBp
ZiAoIWRvY3VtZW50LnJlZ2lzdGVyQ1NTUHJvcGVydHkoV1RGTW92ZShwcm9wZXJ0eSkpKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yLCAiVGhpcyBw
cm9wZXJ0eSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQuIiB9OwogCi0gICAgZG9jdW1lbnQu
c3R5bGVTY29wZSgpLmRpZENoYW5nZVN0eWxlU2hlZXRFbnZpcm9ubWVudCgpOwotCiAgICAgcmV0
dXJuIHsgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0
Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAzODNhYzhlZTRmNjZlNTE5YTU3OWM5YjZkYmQ0
ODhkMWZkY2RjOWRhLi5lMjhiMzRjMGQ5MWU3Nzg1YTQ3YTc4YzhiYzEzMDkwNTZmZmExMTljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uLmNwcApAQCAtMjI2LDE2ICsyMjYsNiBAQCBib29sIFByb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbjo6aXNQcm9wZXJ0eUltcGxpY2l0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYQog
RXhjZXB0aW9uT3I8dm9pZD4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9w
ZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29u
c3QgU3RyaW5nJiBwcmlvcml0eSkKIHsKICAgICBTdHlsZUF0dHJpYnV0ZU11dGF0aW9uU2NvcGUg
bXV0YXRpb25TY29wZSh0aGlzKTsKLQotICAgIGlmICghd2lsbE11dGF0ZSgpKQotICAgICAgICBy
ZXR1cm4geyB9OwotCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbnVsbHB0cjsKLQotICAgIGlm
IChwYXJlbnRFbGVtZW50KCkpCi0gICAgICAgIGRvY3VtZW50ID0gJnBhcmVudEVsZW1lbnQoKS0+
ZG9jdW1lbnQoKTsKLSAgICBlbHNlCi0gICAgICAgIGRvY3VtZW50ID0gcGFyZW50U3R5bGVTaGVl
dCgpLT5vd25lckRvY3VtZW50KCk7CiAgICAgCiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
ID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChpc0N1c3RvbVByb3BlcnR5
TmFtZShwcm9wZXJ0eU5hbWUpKQpAQCAtMjQzLDEzICsyMzMsMTYgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eShjb25zdCBTdHJp
bmcmIHByb3AKICAgICBpZiAoIXByb3BlcnR5SUQpCiAgICAgICAgIHJldHVybiB7IH07CiAKKyAg
ICBpZiAoIXdpbGxNdXRhdGUoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIGJvb2wgaW1w
b3J0YW50ID0gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShwcmlvcml0eSwgImltcG9ydGFudCIpOwog
ICAgIGlmICghaW1wb3J0YW50ICYmICFwcmlvcml0eS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biB7IH07CiAKICAgICBib29sIGNoYW5nZWQ7CiAgICAgaWYgKHByb3BlcnR5SUQgPT0gQ1NTUHJv
cGVydHlDdXN0b20pCi0gICAgICAgIGNoYW5nZWQgPSBtX3Byb3BlcnR5U2V0LT5zZXRDdXN0b21Q
cm9wZXJ0eShkb2N1bWVudCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgaW1wb3J0YW50LCBjc3NQYXJz
ZXJDb250ZXh0KCkpOworICAgICAgICBjaGFuZ2VkID0gbV9wcm9wZXJ0eVNldC0+c2V0Q3VzdG9t
UHJvcGVydHkocHJvcGVydHlOYW1lLCB2YWx1ZSwgaW1wb3J0YW50LCBjc3NQYXJzZXJDb250ZXh0
KCkpOwogICAgIGVsc2UKICAgICAgICAgY2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldFByb3Bl
cnR5KHByb3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlckNvbnRleHQoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCAyMDAwZmRjMWY1NWUy
MWM2Njg3MWZiOTBhMWQ1N2ZiZjRjN2Y3YTI1Li4wYzQ3ZGEyMmVmZWExMGJhN2ZhZDkxMjgzYWQz
MWFmMzY5MTc0ZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVy
Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCkBA
IC0xODc5LDEzICsxODc5LDEzIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlWYWx1ZVN0cm9rZUNvbG9yKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2CiAKIGlubGluZSB2
b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQ3VzdG9tUHJvcGVydHkoU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5
KiByZWdpc3RlcmVkLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7Ci0gICAgaWYgKHJlZ2lz
dGVyZWQgJiYgcmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlKCkpIHsKKyAgICBpZiAocmVnaXN0ZXJl
ZCkgewogICAgICAgICBhdXRvIGluaXRpYWxWYWx1ZSA9IHJlZ2lzdGVyZWQtPmluaXRpYWxWYWx1
ZUNvcHkoKTsKICAgICAgICAgYXBwbHlWYWx1ZUN1c3RvbVByb3BlcnR5KHN0eWxlUmVzb2x2ZXIs
IHJlZ2lzdGVyZWQsICppbml0aWFsVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgYXV0byBpbnZhbGlkID0gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlVW5yZXNvbHZl
ZChuYW1lLCBDU1NWYWx1ZUludmFsaWQpOworICAgIGF1dG8gaW52YWxpZCA9IENTU0N1c3RvbVBy
b3BlcnR5VmFsdWU6OmNyZWF0ZVdpdGhJRChuYW1lLCBDU1NWYWx1ZUludmFsaWQpOwogICAgIGFw
cGx5VmFsdWVDdXN0b21Qcm9wZXJ0eShzdHlsZVJlc29sdmVyLCByZWdpc3RlcmVkLCBpbnZhbGlk
LmdldCgpKTsKIH0KIApAQCAtMTkwMCwxMyArMTkwMCwxMiBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEN1c3RvbVByb3BlcnR5KFN0eWxlUmVzb2x2ZXImIHN0
eWxlUgogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDdXN0b21Q
cm9wZXJ0eShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NSZWdpc3RlcmVk
Q3VzdG9tUHJvcGVydHkqIHJlZ2lzdGVyZWQsIENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIHZhbHVl
KQogewotICAgIEFTU0VSVCh2YWx1ZS5pc1Jlc29sdmVkKCkpOwogICAgIGNvbnN0IGF1dG8mIG5h
bWUgPSB2YWx1ZS5uYW1lKCk7CiAKICAgICBpZiAoIXJlZ2lzdGVyZWQgfHwgcmVnaXN0ZXJlZC0+
aW5oZXJpdHMpCi0gICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0SW5oZXJpdGVkQ3Vz
dG9tUHJvcGVydHlWYWx1ZShuYW1lLCBtYWtlUmVmKHZhbHVlKSk7CisgICAgICAgIHN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+c2V0SW5oZXJpdGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBtYWtl
UmVmKHZhbHVlKSwgcmVnaXN0ZXJlZCk7CiAgICAgZWxzZQotICAgICAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldE5vbkluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgbWFrZVJl
Zih2YWx1ZSkpOworICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldE5vbkluaGVyaXRl
ZEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgbWFrZVJlZih2YWx1ZSksIHJlZ2lzdGVyZWQpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRp
ZXMuY3BwCmluZGV4IDVhY2I0OGY5MTFhMzcxNzhmYWU4YTgwZTE3ODNlNjliNzU4OGNiNTguLjVk
NzhmOGMxN2ZlMWRlZjFiMjJmZmRlNDRlMTUyZGI0ZjY1YjA3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVByb3BlcnRpZXMuY3BwCkBAIC0yOCw4ICsyOCw2IEBACiAjaW5jbHVkZSAiQ1NTRGVm
ZXJyZWRQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQZW5k
aW5nU3Vic3RpdHV0aW9uVmFsdWUuaCIKLSNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlci5oIgot
I2luY2x1ZGUgIkNTU1Rva2VuaXplci5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIK
ICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKQEAg
LTc4MSw3ICs3NzksNyBAQCBib29sIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldFByb3BlcnR5
KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBzZXRQ
cm9wZXJ0eShwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50LCBwYXJzZXJDb250ZXh0KTsKIH0K
IAotYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpzZXRDdXN0b21Qcm9wZXJ0eShjb25zdCBE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJp
bmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwgQ1NTUGFyc2VyQ29udGV4dCBwYXJzZXJDb250ZXh0
KQorYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpzZXRDdXN0b21Qcm9wZXJ0eShjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQs
IENTU1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4dCkKIHsKICAgICAvLyBTZXR0aW5nIHRoZSB2
YWx1ZSB0byBhbiBlbXB0eSBzdHJpbmcganVzdCByZW1vdmVzIHRoZSBwcm9wZXJ0eSBpbiBib3Ro
IElFIGFuZCBHZWNrby4KICAgICAvLyBTZXR0aW5nIGl0IHRvIG51bGwgc2VlbXMgdG8gcHJvZHVj
ZSBsZXNzIGNvbnNpc3RlbnQgcmVzdWx0cywgYnV0IHdlIHRyZWF0IGl0IGp1c3QgdGhlIHNhbWUu
CkBAIC03ODksMTcgKzc4Nyw2IEBAIGJvb2wgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6c2V0Q3Vz
dG9tUHJvcGVydHkoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTCiAgICAgICAgIHJl
dHVybiByZW1vdmVDdXN0b21Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUpOwogCiAgICAgcGFyc2VyQ29u
dGV4dC5tb2RlID0gY3NzUGFyc2VyTW9kZSgpOwotCi0gICAgU3RyaW5nIHN5bnRheCA9ICIqIjsK
LSAgICBhdXRvKiByZWdpc3RlcmVkID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+Z2V0Q1NTUmVnaXN0
ZXJlZEN1c3RvbVByb3BlcnR5U2V0KCkuZ2V0KHByb3BlcnR5TmFtZSkgOiBudWxscHRyOwotCi0g
ICAgaWYgKHJlZ2lzdGVyZWQpCi0gICAgICAgIHN5bnRheCA9IHJlZ2lzdGVyZWQtPnN5bnRheDsK
LQotICAgIENTU1Rva2VuaXplciB0b2tlbml6ZXIodmFsdWUpOwotICAgIGlmICghQ1NTUHJvcGVy
dHlQYXJzZXI6OmNhblBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKHN5bnRheCwgdG9rZW5p
emVyLnRva2VuUmFuZ2UoKSwgcGFyc2VyQ29udGV4dCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQogICAgIC8vIFdoZW4gcmVwbGFjaW5nIGFuIGV4aXN0aW5nIHByb3BlcnR5IHZhbHVlLCB0aGlz
IG1vdmVzIHRoZSBwcm9wZXJ0eSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LgogICAgIC8vIEZpcmVm
b3ggcHJlc2VydmVzIHRoZSBwb3NpdGlvbiwgYW5kIE1TSUUgbW92ZXMgdGhlIHByb3BlcnR5IHRv
IHRoZSBiZWdpbm5pbmcuCiAgICAgcmV0dXJuIENTU1BhcnNlcjo6cGFyc2VDdXN0b21Qcm9wZXJ0
eVZhbHVlKCp0aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBpbXBvcnRhbnQsIHBhcnNlckNvbnRl
eHQpID09IENTU1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkNoYW5nZWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0aWVzLmgKaW5kZXggODM5YTU0NDNmOTE3OGEyMmUzMGI2ZjA4N2IyYzE5OTg2NGNm
MzU4Yy4uM2Y0YjY1YWI3Mjg4ZGQwZjNiMTYxYmE0MWJkNTA1ZGYyZTM3NTUwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaApAQCAtMjQ5LDcgKzI0OSw3IEBAIHB1YmxpYzoKICAg
ICBWZWN0b3I8Q1NTUHJvcGVydHksIDQ+IG1fcHJvcGVydHlWZWN0b3I7CiAKICAgICAvLyBNZXRo
b2RzIGZvciBxdWVyeWluZyBhbmQgYWx0ZXJpbmcgQ1NTIGN1c3RvbSBwcm9wZXJ0aWVzLgotICAg
IGJvb2wgc2V0Q3VzdG9tUHJvcGVydHkoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIHBy
b3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIENTU1BhcnNl
ckNvbnRleHQpOworICAgIGJvb2wgc2V0Q3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9w
ZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJD
b250ZXh0KTsKICAgICBib29sIHJlbW92ZUN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJv
cGVydHlOYW1lLCBTdHJpbmcqIHJldHVyblRleHQgPSBudWxscHRyKTsKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAyMGY1YjJlMzBjMDFmYTNmNzQzZWQw
NzU1MzBhMzhiMDVmZWQ1MDgwLi5kNGUwNmJjY2YzMzYwZDFjYTQwYzA3MjgwMmY0NTAwYzU5ZmRh
MDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0zMjEsNyArMzIxLDcg
QEAgaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6OnVwZGF0ZUNvbnZlcnNpb25EYXRh
KCkKICAgICBtX2Nzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgPSBDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhKG1fc3R5bGUuZ2V0KCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgbV9lbGVtZW50ID8gbV9l
bGVtZW50LT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSA6IG51bGxwdHIpOwogfQogCi12b2lkIFN0
eWxlUmVzb2x2ZXI6OlN0YXRlOjpzZXRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHN0eWxlKQoraW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFN0eWxlKHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCiB7CiAgICAgbV9zdHlsZSA9IFdURk1vdmUo
c3R5bGUpOwogICAgIHVwZGF0ZUNvbnZlcnNpb25EYXRhKCk7CkBAIC00MjksMjEgKzQyOSwyMSBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yS2V5
ZnJhbWUoY29uc3QgUmVuZGVyU3R5bGUqCiAgICAgQ2FzY2FkZWRQcm9wZXJ0aWVzIGNhc2NhZGUo
ZGlyZWN0aW9uLCB3cml0aW5nTW9kZSk7CiAgICAgY2FzY2FkZS5hZGROb3JtYWxNYXRjaGVzKHJl
c3VsdCwgMCwgcmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzKCkuc2l6ZSgpIC0gMSk7CiAKLSAgICBB
cHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSBhcHBseVN0YXRlIHsgdGhpcywgJmNhc2NhZGUsICZy
ZXN1bHQgfTsKLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhmaXJzdENTU1Byb3BlcnR5LCBs
YXN0SGlnaFByaW9yaXR5UHJvcGVydHksIGFwcGx5U3RhdGUpOworICAgIC8vIFJlc29sdmUgY3Vz
dG9tIHByb3BlcnRpZXMgZmlyc3QuCisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2Fk
ZSwgQ1NTUHJvcGVydHlDdXN0b20sIENTU1Byb3BlcnR5Q3VzdG9tLCAmcmVzdWx0KTsKKworICAg
IGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0Q1NTUHJvcGVydHksIGxhc3RI
aWdoUHJpb3JpdHlQcm9wZXJ0eSwgJnJlc3VsdCk7CiAKICAgICAvLyBJZiBvdXIgZm9udCBnb3Qg
ZGlydGllZCwgdXBkYXRlIGl0IG5vdy4KICAgICB1cGRhdGVGb250KCk7CiAKLSAgICAvLyBOb3cg
cmVzb2x2ZSByZW1haW5pbmcgY3VzdG9tIHByb3BlcnRpZXMgYW5kIHRoZSByZXN0LCBpbiBhbnkg
b3JkZXIKLSAgICBmb3IgKGF1dG8gaXQgPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5iZWdp
bigpOyBpdCAhPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5lbmQoKTsgKytpdCkKLSAgICAg
ICAgYXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KGl0LT5rZXksIGFwcGx5U3RhdGUpOwotICAg
IGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGZpcnN0TG93UHJpb3JpdHlQcm9wZXJ0eSwgbGFzdENT
U1Byb3BlcnR5LCBhcHBseVN0YXRlKTsKKyAgICAvLyBOb3cgZG8gcmVzdCBvZiB0aGUgcHJvcGVy
dGllcy4KKyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdExvd1ByaW9y
aXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwgJnJlc3VsdCk7CiAKICAgICAvLyBJZiBvdXIg
Zm9udCBnb3QgZGlydGllZCBieSBvbmUgb2YgdGhlIG5vbi1lc3NlbnRpYWwgZm9udCBwcm9wcywg
dXBkYXRlIGl0IGEgc2Vjb25kIHRpbWUuCiAgICAgdXBkYXRlRm9udCgpOwogCi0gICAgY2FzY2Fk
ZS5hcHBseURlZmVycmVkUHJvcGVydGllcygqdGhpcywgYXBwbHlTdGF0ZSk7CisgICAgY2FzY2Fk
ZS5hcHBseURlZmVycmVkUHJvcGVydGllcygqdGhpcywgJnJlc3VsdCk7CiAKICAgICBhZGp1c3RS
ZW5kZXJTdHlsZSgqc3RhdGUuc3R5bGUoKSwgKnN0YXRlLnBhcmVudFN0eWxlKCksIG51bGxwdHIs
IG51bGxwdHIpOwogCkBAIC02MzUsMTggKzYzNSwxNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yUGFnZShpbnQgcGFnZUluZGV4KQogICAgIENh
c2NhZGVkUHJvcGVydGllcyBjYXNjYWRlKGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpOwogICAgIGNh
c2NhZGUuYWRkTm9ybWFsTWF0Y2hlcyhyZXN1bHQsIDAsIHJlc3VsdC5tYXRjaGVkUHJvcGVydGll
cygpLnNpemUoKSAtIDEpOwogCi0gICAgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgYXBwbHlT
dGF0ZSB7IHRoaXMsICZjYXNjYWRlLCAmcmVzdWx0IH07Ci0gICAgYXBwbHlDYXNjYWRlZFByb3Bl
cnRpZXMoZmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCBhcHBseVN0
YXRlKTsKKyAgICAvLyBSZXNvbHZlIGN1c3RvbSBwcm9wZXJ0aWVzIGZpcnN0LgorICAgIGFwcGx5
Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBDU1NQcm9wZXJ0
eUN1c3RvbSwgJnJlc3VsdCk7CisKKyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRl
LCBmaXJzdENTU1Byb3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHksICZyZXN1bHQpOwog
CiAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRpZWQsIHVwZGF0ZSBpdCBub3cuCiAgICAgdXBk
YXRlRm9udCgpOwogCi0gICAgLy8gTm93IHJlc29sdmUgcmVtYWluaW5nIGN1c3RvbSBwcm9wZXJ0
aWVzIGFuZCB0aGUgcmVzdCwgaW4gYW55IG9yZGVyCi0gICAgZm9yIChhdXRvIGl0ID0gY2FzY2Fk
ZS5jdXN0b21Qcm9wZXJ0aWVzKCkuYmVnaW4oKTsgaXQgIT0gY2FzY2FkZS5jdXN0b21Qcm9wZXJ0
aWVzKCkuZW5kKCk7ICsraXQpCi0gICAgICAgIGFwcGx5Q2FzY2FkZWRDdXN0b21Qcm9wZXJ0eShp
dC0+a2V5LCBhcHBseVN0YXRlKTsKLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhmaXJzdExv
d1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwgYXBwbHlTdGF0ZSk7CisgICAgYXBw
bHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RMb3dQcmlvcml0eVByb3BlcnR5LCBs
YXN0Q1NTUHJvcGVydHksICZyZXN1bHQpOwogCi0gICAgY2FzY2FkZS5hcHBseURlZmVycmVkUHJv
cGVydGllcygqdGhpcywgYXBwbHlTdGF0ZSk7CisgICAgY2FzY2FkZS5hcHBseURlZmVycmVkUHJv
cGVydGllcygqdGhpcywgJnJlc3VsdCk7CiAKICAgICAvLyBOb3cgcmV0dXJuIHRoZSBzdHlsZS4K
ICAgICByZXR1cm4gbV9zdGF0ZS50YWtlU3R5bGUoKTsKQEAgLTEzNzIsMjAgKzEzNzEsMTcgQEAg
dm9pZCBTdHlsZVJlc29sdmVyOjphcHBseU1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0IE1hdGNoUmVz
dWx0JiBtYXRjaFJlc3VsdCwgY29uc3QKICAgICAgICAgY2FzY2FkZS5hZGROb3JtYWxNYXRjaGVz
KG1hdGNoUmVzdWx0LCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0
LnJhbmdlcy5sYXN0VUFSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOwogICAgICAgICBjYXNjYWRl
LmFkZEltcG9ydGFudE1hdGNoZXMobWF0Y2hSZXN1bHQsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJz
dFVBUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGFwcGx5SW5oZXJpdGVkT25s
eSk7CiAKLSAgICAgICAgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgYXBwbHlTdGF0ZSB7IHRo
aXMsICZjYXNjYWRlLCAmbWF0Y2hSZXN1bHQgfTsKLQotICAgICAgICBhcHBseUNhc2NhZGVkUHJv
cGVydGllcyhDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRS
dWJ5UG9zaXRpb24sIGFwcGx5U3RhdGUpOworICAgICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGll
cyhjYXNjYWRlLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgQ1NTUHJvcGVydHlXZWJr
aXRSdWJ5UG9zaXRpb24sICZtYXRjaFJlc3VsdCk7CiAgICAgICAgIGFkanVzdFN0eWxlRm9ySW50
ZXJDaGFyYWN0ZXJSdWJ5KCk7CiAKLSAgICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoZmly
c3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCBhcHBseVN0YXRlKTsKKyAg
ICAgICAgLy8gUmVzb2x2ZSBjdXN0b20gdmFyaWFibGVzIGZpcnN0LgorICAgICAgICBhcHBseUNh
c2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eUN1c3RvbSwgQ1NTUHJvcGVydHlD
dXN0b20sICZtYXRjaFJlc3VsdCk7CiAKLSAgICAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRp
ZWQsIHVwZGF0ZSBpdCBub3cuCi0gICAgICAgIHVwZGF0ZUZvbnQoKTsKKyAgICAgICAgLy8gU3Rh
cnQgYnkgYXBwbHlpbmcgcHJvcGVydGllcyB0aGF0IG90aGVyIHByb3BlcnRpZXMgbWF5IGRlcGVu
ZCBvbi4KKyAgICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RDU1NQ
cm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCAmbWF0Y2hSZXN1bHQpOwogCi0gICAg
ICAgIC8vIE5vdyByZXNvbHZlIHJlbWFpbmluZyBjdXN0b20gcHJvcGVydGllcyBhbmQgdGhlIHJl
c3QsIGluIGFueSBvcmRlcgotICAgICAgICBmb3IgKGF1dG8gaXQgPSBjYXNjYWRlLmN1c3RvbVBy
b3BlcnRpZXMoKS5iZWdpbigpOyBpdCAhPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5lbmQo
KTsgKytpdCkKLSAgICAgICAgICAgIGFwcGx5Q2FzY2FkZWRDdXN0b21Qcm9wZXJ0eShpdC0+a2V5
LCBhcHBseVN0YXRlKTsKLSAgICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoZmlyc3RMb3dQ
cmlvcml0eVByb3BlcnR5LCBsYXN0Q1NTUHJvcGVydHksIGFwcGx5U3RhdGUpOworICAgICAgICB1
cGRhdGVGb250KCk7CisgICAgICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZp
cnN0TG93UHJpb3JpdHlQcm9wZXJ0eSwgbGFzdENTU1Byb3BlcnR5LCAmbWF0Y2hSZXN1bHQpOwog
CiAgICAgICAgIHN0YXRlLmNhY2hlQm9yZGVyQW5kQmFja2dyb3VuZCgpOwogICAgIH0KQEAgLTEz
OTYsMTMgKzEzOTIsMTYgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseU1hdGNoZWRQcm9wZXJ0
aWVzKGNvbnN0IE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCwgY29uc3QKICAgICBjYXNjYWRlLmFk
ZEltcG9ydGFudE1hdGNoZXMobWF0Y2hSZXN1bHQsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVz
ZXJSdWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVzZXJSdWxlLCBhcHBseUluaGVyaXRlZE9u
bHkpOwogICAgIGNhc2NhZGUuYWRkSW1wb3J0YW50TWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0Y2hS
ZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwg
YXBwbHlJbmhlcml0ZWRPbmx5KTsKIAorICAgIC8vIFJlc29sdmUgY3VzdG9tIHByb3BlcnRpZXMg
Zmlyc3QuCisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlD
dXN0b20sIENTU1Byb3BlcnR5Q3VzdG9tLCAmbWF0Y2hSZXN1bHQpOwogCi0gICAgQXBwbHlDYXNj
YWRlZFByb3BlcnR5U3RhdGUgYXBwbHlTdGF0ZSB7IHRoaXMsICZjYXNjYWRlLCAmbWF0Y2hSZXN1
bHQgfTsKKyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eVdl
YmtpdFJ1YnlQb3NpdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRpb24sICZtYXRjaFJl
c3VsdCk7CiAKLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhDU1NQcm9wZXJ0eVdlYmtpdFJ1
YnlQb3NpdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRpb24sIGFwcGx5U3RhdGUpOwor
ICAgIC8vIEFkanVzdCB0aGUgZm9udCBzaXplIHRvIGJlIHNtYWxsZXIgaWYgcnVieS1wb3NpdGlv
biBpcyBpbnRlci1jaGFyYWN0ZXIuCiAgICAgYWRqdXN0U3R5bGVGb3JJbnRlckNoYXJhY3RlclJ1
YnkoKTsKIAotICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGZpcnN0Q1NTUHJvcGVydHksIGxh
c3RIaWdoUHJpb3JpdHlQcm9wZXJ0eSwgYXBwbHlTdGF0ZSk7CisgICAgLy8gU3RhcnQgYnkgYXBw
bHlpbmcgcHJvcGVydGllcyB0aGF0IG90aGVyIHByb3BlcnRpZXMgbWF5IGRlcGVuZCBvbi4KKyAg
ICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5LCBsYXN0
SGlnaFByaW9yaXR5UHJvcGVydHksICZtYXRjaFJlc3VsdCk7CiAKICAgICAvLyBJZiB0aGUgZWZm
ZWN0aXZlIHpvb20gdmFsdWUgY2hhbmdlcywgd2UgY2FuJ3QgdXNlIHRoZSBtYXRjaGVkIHByb3Bl
cnRpZXMgY2FjaGUuIFN0YXJ0IG92ZXIuCiAgICAgaWYgKGNhY2hlSXRlbSAmJiBjYWNoZUl0ZW0t
PnJlbmRlclN0eWxlLT5lZmZlY3RpdmVab29tKCkgIT0gc3RhdGUuc3R5bGUoKS0+ZWZmZWN0aXZl
Wm9vbSgpKQpAQCAtMTQxNSwxNSArMTQxNCwxMyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5
TWF0Y2hlZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0LCBjb25zdAog
ICAgIGlmIChjYWNoZUl0ZW0gJiYgY2FjaGVJdGVtLT5yZW5kZXJTdHlsZS0+Zm9udERlc2NyaXB0
aW9uKCkgIT0gc3RhdGUuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzKG1hdGNoUmVzdWx0LCBlbGVtZW50LCBEb05vdFVzZU1h
dGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOwogCi0gICAgLy8gTm93IHJlc29sdmUgcmVtYWluaW5nIGN1
c3RvbSBwcm9wZXJ0aWVzIGFuZCB0aGUgcmVzdCwgaW4gYW55IG9yZGVyCi0gICAgZm9yIChhdXRv
IGl0ID0gY2FzY2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCkuYmVnaW4oKTsgaXQgIT0gY2FzY2FkZS5j
dXN0b21Qcm9wZXJ0aWVzKCkuZW5kKCk7ICsraXQpCi0gICAgICAgIGFwcGx5Q2FzY2FkZWRDdXN0
b21Qcm9wZXJ0eShpdC0+a2V5LCBhcHBseVN0YXRlKTsKLSAgICBhcHBseUNhc2NhZGVkUHJvcGVy
dGllcyhmaXJzdExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwgYXBwbHlTdGF0
ZSk7CisgICAgLy8gQXBwbHkgcHJvcGVydGllcyB0aGF0IG5vIG90aGVyIHByb3BlcnRpZXMgZGVw
ZW5kIG9uLgorICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0TG93UHJp
b3JpdHlQcm9wZXJ0eSwgbGFzdENTU1Byb3BlcnR5LCAmbWF0Y2hSZXN1bHQpOwogCiAgICAgLy8g
RmluYWxseSwgc29tZSBwcm9wZXJ0aWVzIG11c3QgYmUgYXBwbGllZCBpbiB0aGUgb3JkZXIgdGhl
eSB3ZXJlIHBhcnNlZC4KICAgICAvLyBUaGVyZSBhcmUgc29tZSBDU1MgcHJvcGVydGllcyB0aGF0
IGFmZmVjdCB0aGUgc2FtZSBSZW5kZXJTdHlsZSB2YWx1ZXMsCiAgICAgLy8gc28gdG8gcHJlc2Vy
dmUgYmVoYXZpb3IsIHdlIHF1ZXVlIHRoZW0gdXAgZHVyaW5nIGNhc2NhZGUgYW5kIGZsdXNoIGhl
cmUuCi0gICAgY2FzY2FkZS5hcHBseURlZmVycmVkUHJvcGVydGllcygqdGhpcywgYXBwbHlTdGF0
ZSk7CisgICAgY2FzY2FkZS5hcHBseURlZmVycmVkUHJvcGVydGllcygqdGhpcywgJm1hdGNoUmVz
dWx0KTsKIAogICAgIEFTU0VSVCghc3RhdGUuZm9udERpcnR5KCkpOwogCkBAIC0xNDQ0LDkgKzE0
NDEsOCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHlUb1N0eWxlKENTU1Byb3Bl
cnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwgc3RkOgogCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFw
cGx5UHJvcGVydHlUb0N1cnJlbnRTdHlsZShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFs
dWUpCiB7Ci0gICAgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgYXBwbHlTdGF0ZSB7IHRoaXMs
IG51bGxwdHIsIG51bGxwdHIgfTsKICAgICBpZiAodmFsdWUpCi0gICAgICAgIGFwcGx5UHJvcGVy
dHkoaWQsIHZhbHVlLCBhcHBseVN0YXRlKTsKKyAgICAgICAgYXBwbHlQcm9wZXJ0eShpZCwgdmFs
dWUpOwogfQogCiBpbmxpbmUgYm9vbCBpc1ZhbGlkVmlzaXRlZExpbmtQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEIGlkKQpAQCAtMTYxMywxOCArMTYwOSwxNiBAQCBTdHlsZVJlc29sdmVyOjpDYXNjYWRl
ZFByb3BlcnRpZXMqIFN0eWxlUmVzb2x2ZXI6OmNhc2NhZGVkUHJvcGVydGllc0ZvclJvbGxiYWNr
KAogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJv
cGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBBcHBseUNhc2NhZGVkUHJv
cGVydHlTdGF0ZSYgYXBwbHlTdGF0ZSwgU2VsZWN0b3JDaGVja2VyOjpMaW5rTWF0Y2hNYXNrIGxp
bmtNYXRjaE1hc2spCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVy
dHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBTZWxlY3RvckNoZWNrZXI6OkxpbmtNYXRjaE1hc2sg
bGlua01hdGNoTWFzaywgY29uc3QgTWF0Y2hSZXN1bHQqIG1hdGNoUmVzdWx0KQogewotICAgIGF1
dG8qIG1hdGNoUmVzdWx0ID0gYXBwbHlTdGF0ZS5tYXRjaFJlc3VsdDsKICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKCFpc1Nob3J0aGFuZENTU1Byb3BlcnR5KGlkKSwgIlNob3J0aGFuZCBwcm9wZXJ0
eSBpZCA9ICVkIHdhc24ndCBleHBhbmRlZCBhdCBwYXJzaW5nIHRpbWUiLCBpZCk7CiAKICAgICBT
dGF0ZSYgc3RhdGUgPSBtX3N0YXRlOwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZVRvQXBw
bHkgPSB2YWx1ZTsKICAgICBpZiAodmFsdWUtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlcygpKSB7Ci0g
ICAgICAgIHZhbHVlVG9BcHBseSA9IHJlc29sdmVkVmFyaWFibGVWYWx1ZShpZCwgKnZhbHVlLCBh
cHBseVN0YXRlKTsKLSAgICAgICAgLy8gSWYgYXBwbGllZFByb3BlcnRpZXMgYWxyZWFkeSBoYXMg
dGhpcyBpZCwgdGhlbiB3ZSBkZXRlY3RlZCBhIGN5Y2xlLCBhbmQgdGhpcyB2YWx1ZSBzaG91bGQg
YmUgdW5zZXQuCi0gICAgICAgIGlmICghdmFsdWVUb0FwcGx5IHx8IGFwcGx5U3RhdGUuYXBwbGll
ZFByb3BlcnRpZXMuY29udGFpbnMoaWQpKSB7CisgICAgICAgIHZhbHVlVG9BcHBseSA9IHJlc29s
dmVkVmFyaWFibGVWYWx1ZShpZCwgKnZhbHVlKTsKKyAgICAgICAgaWYgKCF2YWx1ZVRvQXBwbHkp
IHsKICAgICAgICAgICAgIGlmIChDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShpZCkp
CiAgICAgICAgICAgICAgICAgdmFsdWVUb0FwcGx5ID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJbmhlcml0ZWRWYWx1ZSgpOwogICAgICAgICAgICAgZWxzZQpAQCAtMTYzNSw3ICsx
NjI5LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQg
aWQsIENTU1ZhbHVlKiB2YWx1ZSwgQXBwbHlDYXNjYWQKICAgICBpZiAoQ1NTUHJvcGVydHk6Omlz
RGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCkpIHsKICAgICAgICAgQ1NTUHJvcGVydHlJRCBuZXdJ
ZCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCwgc3RhdGUu
c3R5bGUoKS0+ZGlyZWN0aW9uKCksIHN0YXRlLnN0eWxlKCktPndyaXRpbmdNb2RlKCkpOwogICAg
ICAgICBBU1NFUlQobmV3SWQgIT0gaWQpOwotICAgICAgICByZXR1cm4gYXBwbHlQcm9wZXJ0eShu
ZXdJZCwgdmFsdWVUb0FwcGx5LmdldCgpLCBhcHBseVN0YXRlLCBsaW5rTWF0Y2hNYXNrKTsKKyAg
ICAgICAgcmV0dXJuIGFwcGx5UHJvcGVydHkobmV3SWQsIHZhbHVlVG9BcHBseS5nZXQoKSwgbGlu
a01hdGNoTWFzaywgbWF0Y2hSZXN1bHQpOwogICAgIH0KIAogICAgIENTU1ZhbHVlKiB2YWx1ZVRv
Q2hlY2tGb3JJbmhlcml0SW5pdGlhbCA9IHZhbHVlVG9BcHBseS5nZXQoKTsKQEAgLTE2NDYsOSAr
MTY0MCw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlE
IGlkLCBDU1NWYWx1ZSogdmFsdWUsIEFwcGx5Q2FzY2FkCiAKICAgICBpZiAoaWQgPT0gQ1NTUHJv
cGVydHlDdXN0b20pIHsKICAgICAgICAgY3VzdG9tUHJvcGVydHlWYWx1ZSA9ICZkb3duY2FzdDxD
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigqdmFsdWVUb0FwcGx5KTsKLSAgICAgICAgQVNTRVJUKGN1
c3RvbVByb3BlcnR5VmFsdWUtPmlzUmVzb2x2ZWQoKSk7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPENTU1ZhbHVlSUQ+KGN1c3RvbVByb3BlcnR5VmFsdWUtPnZhbHVlKCkpKQot
ICAgICAgICAgICAgY3VzdG9tUHJvcGVydHlWYWx1ZUlEID0gV1RGOjpnZXQ8Q1NTVmFsdWVJRD4o
Y3VzdG9tUHJvcGVydHlWYWx1ZS0+dmFsdWUoKSk7CisgICAgICAgIGN1c3RvbVByb3BlcnR5VmFs
dWVJRCA9IGN1c3RvbVByb3BlcnR5VmFsdWUtPnZhbHVlSUQoKTsKICAgICAgICAgYXV0byYgbmFt
ZSA9IGN1c3RvbVByb3BlcnR5VmFsdWUtPm5hbWUoKTsKICAgICAgICAgY3VzdG9tUHJvcGVydHlS
ZWdpc3RlcmVkID0gZG9jdW1lbnQoKS5nZXRDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQo
KS5nZXQobmFtZSk7CiAgICAgfQpAQCAtMTY3NSwxMyArMTY2NywxMyBAQCB2b2lkIFN0eWxlUmVz
b2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBB
cHBseUNhc2NhZAogICAgICAgICAgICAgICAgIGlmIChjdXN0b21Qcm9wZXJ0eVJlZ2lzdGVyZWQg
JiYgY3VzdG9tUHJvcGVydHlSZWdpc3RlcmVkLT5pbmhlcml0cyAmJiByb2xsYmFjay0+aGFzQ3Vz
dG9tUHJvcGVydHkoY3VzdG9tUHJvcGVydHlWYWx1ZS0+bmFtZSgpKSkgewogICAgICAgICAgICAg
ICAgICAgICBhdXRvIHByb3BlcnR5ID0gcm9sbGJhY2stPmN1c3RvbVByb3BlcnR5KGN1c3RvbVBy
b3BlcnR5VmFsdWUtPm5hbWUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5j
c3NWYWx1ZVtsaW5rTWF0Y2hNYXNrXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5UHJv
cGVydHkocHJvcGVydHkuaWQsIHByb3BlcnR5LmNzc1ZhbHVlW2xpbmtNYXRjaE1hc2tdLCBhcHBs
eVN0YXRlLCBsaW5rTWF0Y2hNYXNrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5UHJv
cGVydHkocHJvcGVydHkuaWQsIHByb3BlcnR5LmNzc1ZhbHVlW2xpbmtNYXRjaE1hc2tdLCBsaW5r
TWF0Y2hNYXNrLCBtYXRjaFJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHJvbGxiYWNrLT5oYXNQcm9w
ZXJ0eShpZCkpIHsKICAgICAgICAgICAgICAgICBhdXRvJiBwcm9wZXJ0eSA9IHJvbGxiYWNrLT5w
cm9wZXJ0eShpZCk7CiAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5LmNzc1ZhbHVlW2xpbmtN
YXRjaE1hc2tdKQotICAgICAgICAgICAgICAgICAgICBhcHBseVByb3BlcnR5KHByb3BlcnR5Lmlk
LCBwcm9wZXJ0eS5jc3NWYWx1ZVtsaW5rTWF0Y2hNYXNrXSwgYXBwbHlTdGF0ZSwgbGlua01hdGNo
TWFzayk7CisgICAgICAgICAgICAgICAgICAgIGFwcGx5UHJvcGVydHkocHJvcGVydHkuaWQsIHBy
b3BlcnR5LmNzc1ZhbHVlW2xpbmtNYXRjaE1hc2tdLCBsaW5rTWF0Y2hNYXNrLCBtYXRjaFJlc3Vs
dCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0xNzEwLDEw
ICsxNzAyLDEwIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIEFwcGx5Q2FzY2FkCiAgICAgU3R5bGVCdWlsZGVyOjph
cHBseVByb3BlcnR5KGlkLCAqdGhpcywgKnZhbHVlVG9BcHBseSwgaXNJbml0aWFsLCBpc0luaGVy
aXQsIGN1c3RvbVByb3BlcnR5UmVnaXN0ZXJlZCk7CiB9CiAKLVJlZlB0cjxDU1NWYWx1ZT4gU3R5
bGVSZXNvbHZlcjo6cmVzb2x2ZWRWYXJpYWJsZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElELCBj
b25zdCBDU1NWYWx1ZSYgdmFsdWUsIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJiBzdGF0ZSkg
Y29uc3QKK1JlZlB0cjxDU1NWYWx1ZT4gU3R5bGVSZXNvbHZlcjo6cmVzb2x2ZWRWYXJpYWJsZVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcElELCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpIGNvbnN0CiB7
CiAgICAgQ1NTUGFyc2VyIHBhcnNlcihkb2N1bWVudCgpKTsKLSAgICByZXR1cm4gcGFyc2VyLnBh
cnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVuY2VzKHByb3BJRCwgdmFsdWUsIHN0YXRlKTsKKyAg
ICByZXR1cm4gcGFyc2VyLnBhcnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVuY2VzKHByb3BJRCwg
dmFsdWUsIGRvY3VtZW50KCkuZ2V0Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0KCksICpt
X3N0YXRlLnN0eWxlKCkpOwogfQogCiBSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6
c3R5bGVJbWFnZShDU1NWYWx1ZSYgdmFsdWUpCkBAIC0yMjM1LDEzICsyMjI3LDEzIEBAIHZvaWQg
U3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjphZGRJbXBvcnRhbnRNYXRjaGVzKGNv
bnN0IE1hdGNoUmVzdWx0JiBtCiAgICAgICAgIGFkZE1hdGNoKG1hdGNoUmVzdWx0LCBtYXRjaC5p
bmRleCwgdHJ1ZSwgaW5oZXJpdGVkT25seSk7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6Q2Fz
Y2FkZWRQcm9wZXJ0aWVzOjphcHBseURlZmVycmVkUHJvcGVydGllcyhTdHlsZVJlc29sdmVyJiBy
ZXNvbHZlciwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIGFwcGx5U3RhdGUpCit2b2lkIFN0
eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YXBwbHlEZWZlcnJlZFByb3BlcnRpZXMo
U3R5bGVSZXNvbHZlciYgcmVzb2x2ZXIsIGNvbnN0IE1hdGNoUmVzdWx0KiBtYXRjaFJlc3VsdCkK
IHsKICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogbV9kZWZlcnJlZFByb3BlcnRpZXMpCi0gICAg
ICAgIHByb3BlcnR5LmFwcGx5KHJlc29sdmVyLCBhcHBseVN0YXRlKTsKKyAgICAgICAgcHJvcGVy
dHkuYXBwbHkocmVzb2x2ZXIsIG1hdGNoUmVzdWx0KTsKIH0KIAotdm9pZCBTdHlsZVJlc29sdmVy
OjpDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5OjphcHBseShTdHlsZVJlc29sdmVyJiByZXNv
bHZlciwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIGFwcGx5U3RhdGUpCit2b2lkIFN0eWxl
UmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6UHJvcGVydHk6OmFwcGx5KFN0eWxlUmVzb2x2
ZXImIHJlc29sdmVyLCBjb25zdCBNYXRjaFJlc3VsdCogbWF0Y2hSZXN1bHQpCiB7CiAgICAgU3Rh
dGUmIHN0YXRlID0gcmVzb2x2ZXIuc3RhdGUoKTsKICAgICBzdGF0ZS5zZXRDYXNjYWRlTGV2ZWwo
bGV2ZWwpOwpAQCAtMjI1MCw3ICsyMjQyLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRl
ZFByb3BlcnRpZXM6OlByb3BlcnR5OjphcHBseShTdHlsZVJlc29sdmVyJiByZXNvbHZlciwKICAg
ICBpZiAoY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHRdKSB7CiAgICAgICAg
IHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKTsKICAgICAgICAgc3Rh
dGUuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZShmYWxzZSk7Ci0gICAgICAgIHJl
c29sdmVyLmFwcGx5UHJvcGVydHkoaWQsIGNzc1ZhbHVlW1NlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hE
ZWZhdWx0XSwgYXBwbHlTdGF0ZSwgU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQpOworICAg
ICAgICByZXNvbHZlci5hcHBseVByb3BlcnR5KGlkLCBjc3NWYWx1ZVtTZWxlY3RvckNoZWNrZXI6
Ok1hdGNoRGVmYXVsdF0sIFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hEZWZhdWx0LCBtYXRjaFJlc3Vs
dCk7CiAgICAgfQogCiAgICAgaWYgKHN0YXRlLnN0eWxlKCktPmluc2lkZUxpbmsoKSA9PSBJbnNp
ZGVMaW5rOjpOb3RJbnNpZGUpCkBAIC0yMjU5LDk5ICsyMjUxLDQzIEBAIHZvaWQgU3R5bGVSZXNv
bHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eTo6YXBwbHkoU3R5bGVSZXNvbHZlciYg
cmVzb2x2ZXIsCiAgICAgaWYgKGNzc1ZhbHVlW1NlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hMaW5rXSkg
ewogICAgICAgICBzdGF0ZS5zZXRBcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUodHJ1ZSk7CiAg
ICAgICAgIHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoZmFsc2UpOwot
ICAgICAgICByZXNvbHZlci5hcHBseVByb3BlcnR5KGlkLCBjc3NWYWx1ZVtTZWxlY3RvckNoZWNr
ZXI6Ok1hdGNoTGlua10sIGFwcGx5U3RhdGUsIFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hMaW5rKTsK
KyAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JDaGVj
a2VyOjpNYXRjaExpbmtdLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGluaywgbWF0Y2hSZXN1bHQp
OwogICAgIH0KIAogICAgIGlmIChjc3NWYWx1ZVtTZWxlY3RvckNoZWNrZXI6Ok1hdGNoVmlzaXRl
ZF0pIHsKICAgICAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKGZhbHNl
KTsKICAgICAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSh0cnVl
KTsKLSAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JD
aGVja2VyOjpNYXRjaFZpc2l0ZWRdLCBhcHBseVN0YXRlLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNo
VmlzaXRlZCk7CisgICAgICAgIHJlc29sdmVyLmFwcGx5UHJvcGVydHkoaWQsIGNzc1ZhbHVlW1Nl
bGVjdG9yQ2hlY2tlcjo6TWF0Y2hWaXNpdGVkXSwgU2VsZWN0b3JDaGVja2VyOjpNYXRjaFZpc2l0
ZWQsIG1hdGNoUmVzdWx0KTsKICAgICB9CiAKICAgICBzdGF0ZS5zZXRBcHBseVByb3BlcnR5VG9S
ZWd1bGFyU3R5bGUodHJ1ZSk7CiAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExp
bmtTdHlsZShmYWxzZSk7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlDYXNjYWRlZEN1
c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3Rh
dGUmIHN0YXRlKQotewotICAgIGlmIChzdGF0ZS5hcHBsaWVkQ3VzdG9tUHJvcGVydGllcy5jb250
YWlucyhuYW1lKSB8fCAhc3RhdGUuY2FzY2FkZS0+Y3VzdG9tUHJvcGVydGllcygpLmNvbnRhaW5z
KG5hbWUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHByb3BlcnR5ID0gc3RhdGUuY2Fz
Y2FkZS0+Y3VzdG9tUHJvcGVydGllcygpLmdldChuYW1lKTsKLQotICAgIGZvciAoYXV0byBpbmRl
eCA6IHsgU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQsIFNlbGVjdG9yQ2hlY2tlcjo6TWF0
Y2hMaW5rLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoVmlzaXRlZCB9KSB7Ci0gICAgICAgIGlmICgh
cHJvcGVydHkuY3NzVmFsdWVbaW5kZXhdKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IGlmIChpbmRleCAhPSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoRGVmYXVsdCAmJiB0aGlzLT5zdGF0
ZSgpLnN0eWxlKCktPmluc2lkZUxpbmsoKSA9PSBJbnNpZGVMaW5rOjpOb3RJbnNpZGUpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4g
dmFsdWVUb0FwcGx5ID0gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlKGRvd25jYXN0PENT
U0N1c3RvbVByb3BlcnR5VmFsdWU+KCpwcm9wZXJ0eS5jc3NWYWx1ZVtpbmRleF0pKTsKLQotICAg
ICAgICBpZiAoc3RhdGUuaW5Qcm9ncmVzc1Byb3BlcnRpZXNDdXN0b20uY29udGFpbnMobmFtZSkp
IHsKLSAgICAgICAgICAgIC8vIFdlIGFyZSBpbiBhIGN5Y2xlLCBzbyByZXNldCB0aGUgdmFsdWUu
Ci0gICAgICAgICAgICBzdGF0ZS5hcHBsaWVkQ3VzdG9tUHJvcGVydGllcy5hZGQobmFtZSk7Ci0g
ICAgICAgICAgICAvLyBSZXNvbHZlIHRoaXMgdmFsdWUgc28gdGhhdCB3ZSByZXNldCBpdHMgZGVw
ZW5kZW5jaWVzCi0gICAgICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q1NT
VmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4+KHZhbHVlVG9BcHBseS0+dmFsdWUoKSkpCi0gICAgICAg
ICAgICAgICAgcmVzb2x2ZWRWYXJpYWJsZVZhbHVlKENTU1Byb3BlcnR5Q3VzdG9tLCB2YWx1ZVRv
QXBwbHkuZ2V0KCksIHN0YXRlKTsKLSAgICAgICAgICAgIHZhbHVlVG9BcHBseSA9IENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU6OmNyZWF0ZVdpdGhJRChuYW1lLCBDU1NWYWx1ZVVuc2V0KTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHN0YXRlLmluUHJvZ3Jlc3NQcm9wZXJ0aWVzQ3VzdG9tLmFkZChuYW1l
KTsKLQotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q1NTVmFyaWFibGVS
ZWZlcmVuY2VWYWx1ZT4+KHZhbHVlVG9BcHBseS0+dmFsdWUoKSkpIHsKLSAgICAgICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gcGFyc2VkVmFsdWUgPSByZXNvbHZlZFZhcmlhYmxlVmFsdWUoQ1NTUHJv
cGVydHlDdXN0b20sIHZhbHVlVG9BcHBseS5nZXQoKSwgc3RhdGUpOwotCi0gICAgICAgICAgICBp
ZiAoIXBhcnNlZFZhbHVlKQotICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gQ1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZTo6Y3JlYXRlV2l0aElEKG5hbWUsIENTU1ZhbHVlVW5zZXQpOwotCi0gICAg
ICAgICAgICB2YWx1ZVRvQXBwbHkgPSBkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigq
cGFyc2VkVmFsdWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHN0YXRlLmluUHJvZ3Jlc3NQ
cm9wZXJ0aWVzQ3VzdG9tLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgICAgICBpZiAoaW5kZXgg
PT0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQpIHsKLSAgICAgICAgICAgICAgICB0aGlz
LT5zdGF0ZSgpLnNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKTsKLSAgICAgICAg
ICAgICAgICB0aGlzLT5zdGF0ZSgpLnNldEFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUo
ZmFsc2UpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoaW5kZXggPT0gU2VsZWN0
b3JDaGVja2VyOjpNYXRjaExpbmspIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5zdGF0ZSgpLnNl
dEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKTsKLSAgICAgICAgICAgICAgICB0aGlz
LT5zdGF0ZSgpLnNldEFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoZmFsc2UpOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoaW5kZXggPT0gU2VsZWN0b3JDaGVja2VyOjpN
YXRjaFZpc2l0ZWQpIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5zdGF0ZSgpLnNldEFwcGx5UHJv
cGVydHlUb1JlZ3VsYXJTdHlsZShmYWxzZSk7Ci0gICAgICAgICAgICAgICAgdGhpcy0+c3RhdGUo
KS5zZXRBcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKHRydWUpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUN1c3RvbSwgdmFsdWVUb0Fw
cGx5LnB0cigpLCBzdGF0ZSwgaW5kZXgpOwotICAgICAgICB9Ci0gICAgICAgIHN0YXRlLmluUHJv
Z3Jlc3NQcm9wZXJ0aWVzQ3VzdG9tLnJlbW92ZShuYW1lKTsKLSAgICAgICAgc3RhdGUuYXBwbGll
ZEN1c3RvbVByb3BlcnRpZXMuYWRkKG5hbWUpOwotICAgIH0KLX0KLQotdm9pZCBTdHlsZVJlc29s
dmVyOjphcHBseUNhc2NhZGVkUHJvcGVydGllcyhpbnQgZmlyc3RQcm9wZXJ0eSwgaW50IGxhc3RQ
cm9wZXJ0eSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIHN0YXRlKQordm9pZCBTdHlsZVJl
c29sdmVyOjphcHBseUNhc2NhZGVkUHJvcGVydGllcyhDYXNjYWRlZFByb3BlcnRpZXMmIGNhc2Nh
ZGUsIGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5LCBjb25zdCBNYXRjaFJlc3Vs
dCogbWF0Y2hSZXN1bHQpCiB7CiAgICAgZm9yIChpbnQgaWQgPSBmaXJzdFByb3BlcnR5OyBpZCA8
PSBsYXN0UHJvcGVydHk7ICsraWQpIHsKICAgICAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpOwotICAgICAgICBpZiAoIXN0YXRlLmNh
c2NhZGUtPmhhc1Byb3BlcnR5KHByb3BlcnR5SUQpKQorICAgICAgICBpZiAoIWNhc2NhZGUuaGFz
UHJvcGVydHkocHJvcGVydHlJRCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgQVNT
RVJUKHByb3BlcnR5SUQgIT0gQ1NTUHJvcGVydHlDdXN0b20pOwotICAgICAgICBhdXRvJiBwcm9w
ZXJ0eSA9IHN0YXRlLmNhc2NhZGUtPnByb3BlcnR5KHByb3BlcnR5SUQpOwotICAgICAgICBBU1NF
UlQoIXNob3VsZEFwcGx5UHJvcGVydHlJblBhcnNlT3JkZXIocHJvcGVydHlJRCkpOwotCi0gICAg
ICAgIGlmIChzdGF0ZS5pblByb2dyZXNzUHJvcGVydGllcy5jb250YWlucyhwcm9wZXJ0eUlEKSkg
ewotICAgICAgICAgICAgLy8gV2UgYXJlIGluIGEgY3ljbGUgKGVnLiBzZXR0aW5nIGZvbnQgc2l6
ZSB1c2luZyByZWdpc3RlcmVkIGN1c3RvbSBwcm9wZXJ0eSB2YWx1ZSBjb250YWluaW5nIGVtKQot
ICAgICAgICAgICAgLy8gU28gdGhpcyB2YWx1ZSBzaG91bGQgYmUgdW5zZXQKLSAgICAgICAgICAg
IHN0YXRlLmFwcGxpZWRQcm9wZXJ0aWVzLmFkZChwcm9wZXJ0eUlEKTsKLSAgICAgICAgICAgIC8v
IFRoaXMgcHJvcGVydHkgaXMgaW4gYSBjeWNsZSwgYW5kIG9ubHkgdGhlIHJvb3Qgb2YgdGhlIGNh
bGwgc3RhY2sgd2lsbCBoYXZlIGZpcnN0UHJvcGVydHkgIT0gbGFzdFByb3BlcnR5LgotICAgICAg
ICAgICAgQVNTRVJUKGZpcnN0UHJvcGVydHkgPT0gbGFzdFByb3BlcnR5KTsKKyAgICAgICAgaWYg
KHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlDdXN0b20pIHsKKyAgICAgICAgICAgIC8vIEFwcGx5
IGZvbnQgc2l6ZSBmaXJzdCwgc2luY2UgY3VzdG9tIHByb3BlcnRpZXMgbWF5IHJlbHkgb24gaXQg
Zm9yIHJlbGF0aXZlIHVuaXQgY2FsY3VsYXRpb25zCisgICAgICAgICAgICAvLyBPbmNlIGl0IGlz
IGFwcGxpZWQgYW5kIHRoZSBjdXN0b20gcHJvcGVydHkgdmFsdWVzIGFyZSBzZXQsIGl0IHdpbGwg
YmUgYXBwbGllZCBhZ2Fpbiwgd2hpY2ggc2hvdWxkCisgICAgICAgICAgICAvLyBoYW5kbGUgYW55
IGZvbnQtc2l6ZSBwcm9wZXJ0aWVzIHRoYXQgcmVseSBvbiByZWdpc3RlcmVkIGN1c3RvbSBwcm9w
ZXJ0aWVzLgorICAgICAgICAgICAgLy8gRklYTUUgY3ljbGVzIHNob3VsZCBiZSBkZXRlY3RlZC4K
KyAgICAgICAgICAgIGlmIChjYXNjYWRlLmhhc1Byb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUp
KQorICAgICAgICAgICAgICAgIGNhc2NhZGUucHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSku
YXBwbHkoKnRoaXMsIG1hdGNoUmVzdWx0KTsKKyAgICAgICAgICAgIHVwZGF0ZUZvbnQoKTsKKwor
ICAgICAgICAgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIENhc2NhZGVkUHJvcGVydGllczo6UHJv
cGVydHk+OjppdGVyYXRvciBlbmQgPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5lbmQoKTsK
KyAgICAgICAgICAgIGZvciAoSGFzaE1hcDxBdG9taWNTdHJpbmcsIENhc2NhZGVkUHJvcGVydGll
czo6UHJvcGVydHk+OjppdGVyYXRvciBpdCA9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgICAgICBpdC0+dmFsdWUuYXBwbHko
KnRoaXMsIG1hdGNoUmVzdWx0KTsKKyAgICAgICAgICAgIG1fc3RhdGUuc3R5bGUoKS0+Y2hlY2tW
YXJpYWJsZXNJbkN1c3RvbVByb3BlcnRpZXMoZG9jdW1lbnQoKS5nZXRDU1NSZWdpc3RlcmVkQ3Vz
dG9tUHJvcGVydHlTZXQoKSwgbV9zdGF0ZS5wYXJlbnRTdHlsZSgpLCAqdGhpcyk7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQotCi0gICAgICAgIHN0YXRlLmluUHJvZ3Jlc3NQcm9w
ZXJ0aWVzLmFkZChwcm9wZXJ0eUlEKTsKLSAgICAgICAgcHJvcGVydHkuYXBwbHkoKnRoaXMsIHN0
YXRlKTsKLSAgICAgICAgc3RhdGUuYXBwbGllZFByb3BlcnRpZXMuYWRkKHByb3BlcnR5SUQpOwot
ICAgICAgICBzdGF0ZS5pblByb2dyZXNzUHJvcGVydGllcy5yZW1vdmUocHJvcGVydHlJRCk7Cisg
ICAgICAgIGF1dG8mIHByb3BlcnR5ID0gY2FzY2FkZS5wcm9wZXJ0eShwcm9wZXJ0eUlEKTsKKyAg
ICAgICAgQVNTRVJUKCFzaG91bGRBcHBseVByb3BlcnR5SW5QYXJzZU9yZGVyKHByb3BlcnR5SUQp
KTsKKyAgICAgICAgcHJvcGVydHkuYXBwbHkoKnRoaXMsIG1hdGNoUmVzdWx0KTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDZkODhmNjAxOWEyZDZmNmQ4ZWRj
ZWNiZmUzZTE1N2ZhNTc5NmExNTMuLjQ3MDNjZWZjM2JjMmMzYjZiNzQ5NzQ5ODc0MzVjYWU1ZGNl
NWU0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtMjY3LDcgKzI2Nyw3IEBA
IHB1YmxpYzoKICAgICAgICAgQ2FzY2FkZWRQcm9wZXJ0aWVzKFRleHREaXJlY3Rpb24sIFdyaXRp
bmdNb2RlKTsKIAogICAgICAgICBzdHJ1Y3QgUHJvcGVydHkgewotICAgICAgICAgICAgdm9pZCBh
cHBseShTdHlsZVJlc29sdmVyJiwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmKTsKKyAgICAg
ICAgICAgIHZvaWQgYXBwbHkoU3R5bGVSZXNvbHZlciYsIGNvbnN0IE1hdGNoUmVzdWx0Kik7CiAK
ICAgICAgICAgICAgIENTU1Byb3BlcnR5SUQgaWQ7CiAgICAgICAgICAgICBDYXNjYWRlTGV2ZWwg
bGV2ZWw7CkBAIC0yODEsNyArMjgxLDcgQEAgcHVibGljOgogICAgICAgICB2b2lkIGFkZE5vcm1h
bE1hdGNoZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBpbnQgc3RhcnRJbmRleCwgaW50IGVuZEluZGV4
LCBib29sIGluaGVyaXRlZE9ubHkgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQgYWRkSW1wb3J0YW50
TWF0Y2hlcyhjb25zdCBNYXRjaFJlc3VsdCYsIGludCBzdGFydEluZGV4LCBpbnQgZW5kSW5kZXgs
IGJvb2wgaW5oZXJpdGVkT25seSA9IGZhbHNlKTsKIAotICAgICAgICB2b2lkIGFwcGx5RGVmZXJy
ZWRQcm9wZXJ0aWVzKFN0eWxlUmVzb2x2ZXImLCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYp
OworICAgICAgICB2b2lkIGFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVzKFN0eWxlUmVzb2x2ZXImLCBj
b25zdCBNYXRjaFJlc3VsdCopOwogCiAgICAgICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBQcm9w
ZXJ0eT4mIGN1c3RvbVByb3BlcnRpZXMoKSB7IHJldHVybiBtX2N1c3RvbVByb3BlcnRpZXM7IH0K
ICAgICAgICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmKSBjb25zdDsKQEAg
LTMwMiwxMCArMzAyLDcgQEAgcHVibGljOgogICAgICAgICBUZXh0RGlyZWN0aW9uIG1fZGlyZWN0
aW9uOwogICAgICAgICBXcml0aW5nTW9kZSBtX3dyaXRpbmdNb2RlOwogICAgIH07Ci0KLSAgICB2
b2lkIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFBy
b3BlcnR5LCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYpOwotICAgIHZvaWQgYXBwbHlDYXNj
YWRlZEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSwgQXBwbHlDYXNjYWRlZFByb3Bl
cnR5U3RhdGUmKTsKLQorICAgIAogcHJpdmF0ZToKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGZpeGVz
IHVwIHRoZSBkZWZhdWx0IGZvbnQgc2l6ZSBpZiBpdCBkZXRlY3RzIHRoYXQgdGhlIGN1cnJlbnQg
Z2VuZXJpYyBmb250IGZhbWlseSBoYXMgY2hhbmdlZC4gLWR3aAogICAgIHZvaWQgY2hlY2tGb3JH
ZW5lcmljRmFtaWx5Q2hhbmdlKFJlbmRlclN0eWxlKiwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVu
dFN0eWxlKTsKQEAgLTMyNCw2ICszMjEsNyBAQCBwcml2YXRlOgogICAgIGVudW0gU2hvdWxkVXNl
TWF0Y2hlZFByb3BlcnRpZXNDYWNoZSB7IERvTm90VXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSA9
IDAsIFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUgfTsKICAgICB2b2lkIGFwcGx5TWF0Y2hlZFBy
b3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBjb25zdCBFbGVtZW50JiwgU2hvdWxkVXNlTWF0
Y2hlZFByb3BlcnRpZXNDYWNoZSA9IFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOwogCisgICAg
dm9pZCBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhDYXNjYWRlZFByb3BlcnRpZXMmLCBpbnQgZmly
c3RQcm9wZXJ0eSwgaW50IGxhc3RQcm9wZXJ0eSwgY29uc3QgTWF0Y2hSZXN1bHQqKTsKICAgICB2
b2lkIGNhc2NhZGVNYXRjaGVzKENhc2NhZGVkUHJvcGVydGllcyYsIGNvbnN0IE1hdGNoUmVzdWx0
JiwgYm9vbCBpbXBvcnRhbnQsIGludCBzdGFydEluZGV4LCBpbnQgZW5kSW5kZXgsIGJvb2wgaW5o
ZXJpdGVkT25seSk7CiAKICAgICB2b2lkIG1hdGNoUGFnZVJ1bGVzKE1hdGNoUmVzdWx0JiwgUnVs
ZVNldCosIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5nJiBw
YWdlTmFtZSk7CkBAIC00NTcsMTIgKzQ1NSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXcml0
aW5nTW9kZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkgeyBtX3N0YXRlLnNldFdyaXRpbmdNb2Rl
KHdyaXRpbmdNb2RlKTsgfQogICAgIHZvaWQgc2V0VGV4dE9yaWVudGF0aW9uKFRleHRPcmllbnRh
dGlvbiB0ZXh0T3JpZW50YXRpb24pIHsgbV9zdGF0ZS5zZXRUZXh0T3JpZW50YXRpb24odGV4dE9y
aWVudGF0aW9uKTsgfQogCi0gICAgUmVmUHRyPENTU1ZhbHVlPiByZXNvbHZlZFZhcmlhYmxlVmFs
dWUoQ1NTUHJvcGVydHlJRCwgY29uc3QgQ1NTVmFsdWUmLCBBcHBseUNhc2NhZGVkUHJvcGVydHlT
dGF0ZSYpIGNvbnN0OworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmVzb2x2ZWRWYXJpYWJsZVZhbHVl
KENTU1Byb3BlcnR5SUQsIGNvbnN0IENTU1ZhbHVlJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAg
dm9pZCBjYWNoZUJvcmRlckFuZEJhY2tncm91bmQoKTsKIAotICAgIHZvaWQgYXBwbHlQcm9wZXJ0
eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSosIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJiwg
U2VsZWN0b3JDaGVja2VyOjpMaW5rTWF0Y2hNYXNrID0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaERl
ZmF1bHQpOworICAgIHZvaWQgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSos
IFNlbGVjdG9yQ2hlY2tlcjo6TGlua01hdGNoTWFzayA9IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hE
ZWZhdWx0LCBjb25zdCBNYXRjaFJlc3VsdCogPSBudWxscHRyKTsKIAogICAgIHZvaWQgYXBwbHlT
VkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSopOwogCkBAIC01MjYsMTkgKzUyNCw2
IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBNYXRjaFJhbmdl
cyYsIGNvbnN0IE1hdGNoUmFuZ2VzJik7CiB9OwogCi0vLyBTdGF0ZSB0byB1c2Ugd2hlbiBhcHBs
eWluZyBwcm9wZXJ0aWVzLCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGN1c3RvbSBhbmQgaGlnaC1w
cmlvcml0eQotLy8gcHJvcGVydGllcyBoYXZlIGJlZW4gcmVzb2x2ZWQuCi1zdHJ1Y3QgQXBwbHlD
YXNjYWRlZFByb3BlcnR5U3RhdGUgewotICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXI7
Ci0gICAgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzKiBjYXNjYWRlOwotICAgIGNv
bnN0IFN0eWxlUmVzb2x2ZXI6Ok1hdGNoUmVzdWx0KiBtYXRjaFJlc3VsdDsKLSAgICBIYXNoU2V0
PENTU1Byb3BlcnR5SUQ+IGFwcGxpZWRQcm9wZXJ0aWVzID0geyB9OwotICAgIEhhc2hTZXQ8U3Ry
aW5nPiBhcHBsaWVkQ3VzdG9tUHJvcGVydGllcyA9IHsgfTsKLSAgICBIYXNoU2V0PENTU1Byb3Bl
cnR5SUQ+IGluUHJvZ3Jlc3NQcm9wZXJ0aWVzID0geyB9OwotICAgIEhhc2hTZXQ8U3RyaW5nPiBp
blByb2dyZXNzUHJvcGVydGllc0N1c3RvbSA9IHsgfTsKLX07Ci0KLQogaW5saW5lIGJvb2wgU3R5
bGVSZXNvbHZlcjo6aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUoY29uc3QgRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgQXRvbWljU3RyaW5nICZhdHRyaWJ1dGVOYW1lKSBjb25zdAogewogICAgIEFTU0VS
VCghYXR0cmlidXRlTmFtZS5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXIuY3BwCmluZGV4IDBkNmFlZjA4ZjkyNGYwNzg4OWQyY2ExNDEwOGNlNTdhMTg0NWJkZDUu
LjlkZjBmZDQ1OWY5MDczMzI0NDBkNWU4YTliODE2YjE2NTI0ZGNlZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJS
dW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJTdHlsZUNvbG9yLmgiCi0jaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0
eWxlUnVsZS5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtMTc4LDEwICsxNzcsOCBAQCB2b2lkIENTU1BhcnNlcjo6
cGFyc2VEZWNsYXJhdGlvbkZvckluc3BlY3Rvcihjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250
ZXh0LCBjbwogICAgIENTU1BhcnNlckltcGw6OnBhcnNlRGVjbGFyYXRpb25MaXN0Rm9ySW5zcGVj
dG9yKHN0cmluZywgY29udGV4dCwgb2JzZXJ2ZXIpOwogfQogCi1SZWZQdHI8Q1NTVmFsdWU+IENT
U1BhcnNlcjo6cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5jZXMoQ1NTUHJvcGVydHlJRCBw
cm9wSUQsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUm
IHN0YXRlKQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlVmFsdWVXaXRoVmFyaWFi
bGVSZWZlcmVuY2VzKENTU1Byb3BlcnR5SUQgcHJvcElELCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUs
IGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYgcmVnaXN0ZXJlZFByb3BlcnRp
ZXMsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBBU1NFUlQoKHByb3BJRCA9PSBD
U1NQcm9wZXJ0eUN1c3RvbSAmJiB2YWx1ZS5pc0N1c3RvbVByb3BlcnR5VmFsdWUoKSkgfHwgKHBy
b3BJRCAhPSBDU1NQcm9wZXJ0eUN1c3RvbSAmJiAhdmFsdWUuaXNDdXN0b21Qcm9wZXJ0eVZhbHVl
KCkpKTsKLSAgICBhdXRvJiBzdHlsZSA9ICpzdGF0ZS5zdHlsZVJlc29sdmVyLT5zdHlsZSgpOwog
ICAgIGF1dG8gZGlyZWN0aW9uID0gc3R5bGUuZGlyZWN0aW9uKCk7CiAgICAgYXV0byB3cml0aW5n
TW9kZSA9IHN0eWxlLndyaXRpbmdNb2RlKCk7CiAKQEAgLTE5MywxMSArMTkwLDEyIEBAIFJlZlB0
cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNlcyhD
U1NQcm9wZXJ0eUlEIHByb3BJCiAgICAgICAgIGlmIChDU1NQcm9wZXJ0eTo6aXNEaXJlY3Rpb25B
d2FyZVByb3BlcnR5KHNob3J0aGFuZElEKSkKICAgICAgICAgICAgIHNob3J0aGFuZElEID0gQ1NT
UHJvcGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KHNob3J0aGFuZElELCBkaXJl
Y3Rpb24sIHdyaXRpbmdNb2RlKTsKICAgICAgICAgQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZSog
c2hvcnRoYW5kVmFsdWUgPSBwZW5kaW5nU3Vic3RpdHV0aW9uLnNob3J0aGFuZFZhbHVlKCk7Ci0K
LSAgICAgICAgYXV0byByZXNvbHZlZERhdGEgPSBzaG9ydGhhbmRWYWx1ZS0+cmVzb2x2ZVZhcmlh
YmxlUmVmZXJlbmNlcyhzdGF0ZSk7Ci0gICAgICAgIGlmICghcmVzb2x2ZWREYXRhKQorICAgICAg
ICBjb25zdCBDU1NWYXJpYWJsZURhdGEqIHZhcmlhYmxlRGF0YSA9IHNob3J0aGFuZFZhbHVlLT52
YXJpYWJsZURhdGFWYWx1ZSgpOworICAgICAgICBBU1NFUlQodmFyaWFibGVEYXRhKTsKKyAgICAg
ICAgCisgICAgICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVzb2x2ZWRUb2tlbnM7CisgICAg
ICAgIGlmICghdmFyaWFibGVEYXRhLT5yZXNvbHZlVG9rZW5SYW5nZShyZWdpc3RlcmVkUHJvcGVy
dGllcywgdmFyaWFibGVEYXRhLT50b2tlbnMoKSwgcmVzb2x2ZWRUb2tlbnMsIHN0eWxlKSkKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+
IHJlc29sdmVkVG9rZW5zID0gcmVzb2x2ZWREYXRhLT50b2tlbnMoKTsKICAgICAgICAgCiAgICAg
ICAgIFBhcnNlZFByb3BlcnR5VmVjdG9yIHBhcnNlZFByb3BlcnRpZXM7CiAgICAgICAgIGlmICgh
Q1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVmFsdWUoc2hvcnRoYW5kSUQsIGZhbHNlLCByZXNvbHZl
ZFRva2VucywgbV9jb250ZXh0LCBwYXJzZWRQcm9wZXJ0aWVzLCBTdHlsZVJ1bGU6OlN0eWxlKSkK
QEAgLTIxMSwzMyArMjA5LDMxIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVZh
bHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNlcyhDU1NQcm9wZXJ0eUlEIHByb3BJCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAorICAgIGNvbnN0IENTU1ZhcmlhYmxlRGF0YSogdmFyaWFi
bGVEYXRhID0gbnVsbHB0cjsKKwogICAgIGlmICh2YWx1ZS5pc1ZhcmlhYmxlUmVmZXJlbmNlVmFs
dWUoKSkgewogICAgICAgICBjb25zdCBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlJiB2YWx1ZVdp
dGhSZWZlcmVuY2VzID0gZG93bmNhc3Q8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4odmFsdWUp
OwotICAgICAgICBhdXRvIHJlc29sdmVkRGF0YSA9IHZhbHVlV2l0aFJlZmVyZW5jZXMucmVzb2x2
ZVZhcmlhYmxlUmVmZXJlbmNlcyhzdGF0ZSk7Ci0gICAgICAgIGlmICghcmVzb2x2ZWREYXRhKQot
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eVBh
cnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShwcm9wSUQsIHJlc29sdmVkRGF0YS0+dG9rZW5zKCksIG1f
Y29udGV4dCk7CisgICAgICAgIHZhcmlhYmxlRGF0YSA9IHZhbHVlV2l0aFJlZmVyZW5jZXMudmFy
aWFibGVEYXRhVmFsdWUoKTsKKyAgICAgICAgQVNTRVJUKHZhcmlhYmxlRGF0YSk7CiAgICAgfQog
Ci0gICAgY29uc3QgYXV0byYgY3VzdG9tUHJvcFZhbHVlID0gZG93bmNhc3Q8Q1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZT4odmFsdWUpOwotICAgIGNvbnN0IGF1dG8mIHZhbHVlV2l0aFJlZmVyZW5jZXMg
PSBXVEY6OmdldDxSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4+KGN1c3RvbVByb3BWYWx1
ZS52YWx1ZSgpKS5nZXQoKTsKKyAgICBpZiAodmFsdWUuaXNDdXN0b21Qcm9wZXJ0eVZhbHVlKCkp
IHsKKyAgICAgICAgY29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSYgY3VzdG9tUHJvcFZhbHVl
ID0gZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4odmFsdWUpOwogCi0gICAgYXV0byYg
bmFtZSA9IGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KHZhbHVlKS5uYW1lKCk7Ci0g
ICAgYXV0byogcmVnaXN0ZXJlZCA9IHN0YXRlLnN0eWxlUmVzb2x2ZXItPmRvY3VtZW50KCkuZ2V0
Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0KCkuZ2V0KG5hbWUpOwotICAgIGF1dG8mIHN5
bnRheCA9IHJlZ2lzdGVyZWQgPyByZWdpc3RlcmVkLT5zeW50YXggOiAiKiI7Ci0gICAgYXV0byBy
ZXNvbHZlZERhdGEgPSB2YWx1ZVdpdGhSZWZlcmVuY2VzLnJlc29sdmVWYXJpYWJsZVJlZmVyZW5j
ZXMoc3RhdGUpOworICAgICAgICBpZiAoY3VzdG9tUHJvcFZhbHVlLnJlc29sdmVkVHlwZWRWYWx1
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoKmN1c3Rv
bVByb3BWYWx1ZS5yZXNvbHZlZFR5cGVkVmFsdWUoKSwgc3R5bGUpOwogCi0gICAgaWYgKCFyZXNv
bHZlZERhdGEpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB2YXJpYWJsZURhdGEg
PSBjdXN0b21Qcm9wVmFsdWUudmFsdWUoKTsKKyAgICB9CiAKLSAgICAvLyBGSVhNRSBoYW5kbGUg
UkVNIGN5Y2xlcy4KLSAgICBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+IGRlcGVuZGVuY2llczsKLSAg
ICBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29sbGVjdFBhcnNlZEN1c3RvbVByb3BlcnR5VmFsdWVEZXBl
bmRlbmNpZXMoc3ludGF4LCBmYWxzZSwgZGVwZW5kZW5jaWVzLCByZXNvbHZlZERhdGEtPnRva2Vu
cygpLCBtX2NvbnRleHQpOworICAgIGlmICghdmFyaWFibGVEYXRhKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGZvciAoYXV0byBpZCA6IGRlcGVuZGVuY2llcykKLSAgICAgICAgc3Rh
dGUuc3R5bGVSZXNvbHZlci0+YXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoaWQsIGlkLCBzdGF0ZSk7
CisgICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiByZXNvbHZlZFRva2VuczsKKyAgICBpZiAoIXZh
cmlhYmxlRGF0YS0+cmVzb2x2ZVRva2VuUmFuZ2UocmVnaXN0ZXJlZFByb3BlcnRpZXMsIHZhcmlh
YmxlRGF0YS0+dG9rZW5zKCksIHJlc29sdmVkVG9rZW5zLCBzdHlsZSkpCisgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVR5cGVkQ3Vz
dG9tUHJvcGVydHlWYWx1ZShuYW1lLCBzeW50YXgsIHJlc29sdmVkRGF0YS0+dG9rZW5zKCksICpz
dGF0ZS5zdHlsZVJlc29sdmVyLCBtX2NvbnRleHQpOworICAgIHJldHVybiBDU1NQcm9wZXJ0eVBh
cnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShwcm9wSUQsIHJlc29sdmVkVG9rZW5zLCBtX2NvbnRleHQp
OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPGRvdWJsZT4+IENTU1BhcnNlcjo6cGFyc2VL
ZXlmcmFtZUtleUxpc3QoY29uc3QgU3RyaW5nJiBzZWxlY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlci5oCmluZGV4IDQ3MDYzY2RmYjlhMjU1YzU2YmZkYzQ1ZjZjZTRiMDM2NDQx
MTAwZmEuLjA5YmE0YjAzMGE2YzVmNmEyYTVmMTJhNjkxYjAwOGNiNTI1ZWVhM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaApAQCAtMzAsNyArMzAsNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZTsKIGNsYXNz
IENTU1BhcnNlck9ic2VydmVyOwogY2xhc3MgQ1NTU2VsZWN0b3JMaXN0OwogY2xhc3MgQ29sb3I7
CkBAIC03OCw3ICs3Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcGFyc2VTZWxlY3Rvcihjb25z
dCBTdHJpbmcmLCBDU1NTZWxlY3Rvckxpc3QmKTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFy
c2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5jZXMoQ1NTUHJvcGVydHlJRCwgY29uc3QgQ1NTVmFs
dWUmLCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4g
cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5jZXMoQ1NTUHJvcGVydHlJRCwgY29uc3QgQ1NT
VmFsdWUmLCBjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQmLCBjb25zdCBSZW5k
ZXJTdHlsZSYpOwogCiAgICAgc3RhdGljIENvbG9yIHBhcnNlQ29sb3IoY29uc3QgU3RyaW5nJiwg
Ym9vbCBzdHJpY3QgPSBmYWxzZSk7CiAgICAgc3RhdGljIENvbG9yIHBhcnNlU3lzdGVtQ29sb3Io
Y29uc3QgU3RyaW5nJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCBjM2EyM2I1OTllOGVi
NGQ3OWNhOWY5M2VkYzY0NGZmMGJhMzFkODI3Li4yMWZlYmFjYzRjZmJhYTUxMWJiYWVhNjQ3NWYx
NjBkNTMyNWRjMGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VyLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkNTU0NvbnRlbnREaXN0
cmlidXRpb25WYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNpbmNs
dWRlICJDU1NDdXN0b21JZGVudFZhbHVlLmgiCi0jaW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU3JjVmFsdWUuaCIKICNpbmNsdWRlICJDU1NG
b250RmVhdHVyZVZhbHVlLmgiCiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykKQEAgLTc0LDEw
ICs3Myw4IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUg
IlNWR1BhdGhCeXRlU3RyZWFtLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFV0aWxpdGllcy5oIgotI2lu
Y2x1ZGUgIlN0eWxlQnVpbGRlckNvbnZlcnRlci5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlT
aG9ydGhhbmQuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmgi
Ci0jaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgPGJpdHNldD4KICNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtMjE2LDEz
ICsyMTMsMTIgQEAgQ1NTUHJvcGVydHlJRCBjc3NQcm9wZXJ0eUlEKFN0cmluZ1ZpZXcgc3RyaW5n
KQogICAgIAogdXNpbmcgbmFtZXNwYWNlIENTU1Byb3BlcnR5UGFyc2VySGVscGVyczsKIAotQ1NT
UHJvcGVydHlQYXJzZXI6OkNTU1Byb3BlcnR5UGFyc2VyKGNvbnN0IENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBWZWN0b3I8Q1NTUHJv
cGVydHksIDI1Nj4qIHBhcnNlZFByb3BlcnRpZXMsIGJvb2wgY29uc3VtZVdoaXRlc3BhY2UpCitD
U1NQcm9wZXJ0eVBhcnNlcjo6Q1NTUHJvcGVydHlQYXJzZXIoY29uc3QgQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxDU1NQ
cm9wZXJ0eSwgMjU2PiogcGFyc2VkUHJvcGVydGllcykKICAgICA6IG1fcmFuZ2UocmFuZ2UpCiAg
ICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fcGFyc2VkUHJvcGVydGllcyhwYXJzZWRQ
cm9wZXJ0aWVzKQogewotICAgIGlmIChjb25zdW1lV2hpdGVzcGFjZSkKLSAgICAgICAgbV9yYW5n
ZS5jb25zdW1lV2hpdGVzcGFjZSgpOworICAgIG1fcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsK
IH0KIAogdm9pZCBDU1NQcm9wZXJ0eVBhcnNlcjo6YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eSwgQ1NTUHJvcGVydHlJRCBjdXJyZW50U2hvcnRoYW5kLCBSZWY8Q1NTVmFsdWU+JiYg
dmFsdWUsIGJvb2wgaW1wb3J0YW50LCBib29sIGltcGxpY2l0KQpAQCAtMjgyLDI3ICsyNzgsNiBA
QCBSZWZQdHI8Q1NTVmFsdWU+IENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVlKENT
U1Byb3BlcnR5SUQgcHJvcGVydHksIGNvbgogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotYm9vbCBD
U1NQcm9wZXJ0eVBhcnNlcjo6Y2FuUGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3Qg
U3RyaW5nJiBzeW50YXgsIGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHRva2VucywgY29uc3Qg
Q1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICBDU1NQcm9wZXJ0eVBhcnNlciBwYXJz
ZXIodG9rZW5zLCBjb250ZXh0LCBudWxscHRyKTsKLSAgICByZXR1cm4gcGFyc2VyLmNhblBhcnNl
VHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKHN5bnRheCk7Ci19Ci0KLVJlZlB0cjxDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlPiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5
VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN5bnRheCwgY29uc3QgQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgdG9rZW5zLCBjb25zdCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQotewotICAgIENTU1Byb3BlcnR5
UGFyc2VyIHBhcnNlcih0b2tlbnMsIGNvbnRleHQsIG51bGxwdHIsIGZhbHNlKTsKLSAgICBSZWZQ
dHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gdmFsdWUgPSBwYXJzZXIucGFyc2VUeXBlZEN1c3Rv
bVByb3BlcnR5VmFsdWUobmFtZSwgc3ludGF4LCBzdHlsZVJlc29sdmVyKTsKLSAgICBpZiAoIXZh
bHVlIHx8ICFwYXJzZXIubV9yYW5nZS5hdEVuZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gdmFsdWU7Ci19Ci0KLXZvaWQgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbGxlY3RQ
YXJzZWRDdXN0b21Qcm9wZXJ0eVZhbHVlRGVwZW5kZW5jaWVzKGNvbnN0IFN0cmluZyYgc3ludGF4
LCBib29sIGlzUm9vdCwgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiYgZGVwZW5kZW5jaWVzLCBjb25z
dCBDU1NQYXJzZXJUb2tlblJhbmdlJiB0b2tlbnMsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNv
bnRleHQpCi17Ci0gICAgQ1NTUHJvcGVydHlQYXJzZXIgcGFyc2VyKHRva2VucywgY29udGV4dCwg
bnVsbHB0cik7Ci0gICAgcGFyc2VyLmNvbGxlY3RQYXJzZWRDdXN0b21Qcm9wZXJ0eVZhbHVlRGVw
ZW5kZW5jaWVzKHN5bnRheCwgaXNSb290LCBkZXBlbmRlbmNpZXMpOwotfQotCiBzdGF0aWMgYm9v
bCBpc0xlZ2FjeUJyZWFrUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogewogICAg
IHN3aXRjaCAocHJvcGVydHlJRCkgewpAQCAtMzQ1LDcgKzMyMCw3IEBAIGJvb2wgQ1NTUHJvcGVy
dHlQYXJzZXI6OnBhcnNlVmFsdWVTdGFydChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGJvb2wg
aW1wb3J0YW50CiAgICAgfQogCiAgICAgaWYgKENTU1ZhcmlhYmxlUGFyc2VyOjpjb250YWluc1Zh
bGlkVmFyaWFibGVSZWZlcmVuY2VzKG9yaWdpbmFsUmFuZ2UsIG1fY29udGV4dCkpIHsKLSAgICAg
ICAgUmVmUHRyPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+IHZhcmlhYmxlID0gQ1NTVmFyaWFi
bGVSZWZlcmVuY2VWYWx1ZTo6Y3JlYXRlKG9yaWdpbmFsUmFuZ2UpOworICAgICAgICBSZWZQdHI8
Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4gdmFyaWFibGUgPSBDU1NWYXJpYWJsZVJlZmVyZW5j
ZVZhbHVlOjpjcmVhdGUoQ1NTVmFyaWFibGVEYXRhOjpjcmVhdGUob3JpZ2luYWxSYW5nZSkpOwog
CiAgICAgICAgIGlmIChpc1Nob3J0aGFuZCkgewogICAgICAgICAgICAgUmVmUHRyPENTU1BlbmRp
bmdTdWJzdGl0dXRpb25WYWx1ZT4gcGVuZGluZ1ZhbHVlID0gQ1NTUGVuZGluZ1N1YnN0aXR1dGlv
blZhbHVlOjpjcmVhdGUocHJvcGVydHlJRCwgdmFyaWFibGUucmVsZWFzZU5vbk51bGwoKSk7CkBA
IC0zOTExLDYgKzM4ODYsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENTU1Byb3BlcnR5UGFyc2VyOjpw
YXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTUwogICAgIGNhc2UgQ1NT
UHJvcGVydHlNaW5IZWlnaHQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdpZHRoOgogICAgIGNhc2Ug
Q1NTUHJvcGVydHlIZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUN1c3RvbTogLy8gRklYTUU6
IHBhcnNpbmcgYSByZWdpc3RlcmVkIGN1c3RvbSBwcm9wZXJ0eSBzaG91bGQgYmUgYmFzZWQgb24g
aXRzIHN5bnRheC4KICAgICAgICAgcmV0dXJuIGNvbnN1bWVXaWR0aE9ySGVpZ2h0KG1fcmFuZ2Us
IG1fY29udGV4dCwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlN
aW5JbmxpbmVTaXplOgogICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5CbG9ja1NpemU6CkBAIC00Mjgw
LDY0ICs0MjU2LDYgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VT
aW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1MKICAgICB9CiB9CiAKLWJvb2wg
Q1NTUHJvcGVydHlQYXJzZXI6OmNhblBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0
IFN0cmluZyYgc3ludGF4KQotewotICAgIGlmIChzeW50YXggIT0gIioiKSB7Ci0gICAgICAgIG1f
cmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKLQotICAgICAgICAvLyBGaXJzdCBjaGVjayBmb3Ig
a2V5d29yZHMKLSAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IG1fcmFuZ2UucGVlaygpLmlkKCk7Ci0g
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUluaGVyaXQgfHwgaWQgPT0gQ1NTVmFsdWVJbml0aWFs
IHx8IGlkID09IENTU1ZhbHVlUmV2ZXJ0KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICAgICAgYXV0byBsb2NhbFJhbmdlID0gbV9yYW5nZTsKLSAgICAgICAgd2hpbGUgKCFsb2NhbFJh
bmdlLmF0RW5kKCkpIHsKLSAgICAgICAgICAgIGF1dG8gaWQgPSBsb2NhbFJhbmdlLmNvbnN1bWUo
KS5mdW5jdGlvbklkKCk7Ci0gICAgICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVWYXIgfHwgaWQg
PT0gQ1NTVmFsdWVFbnYpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIEZvciB2YXJp
YWJsZXMsIHdlIGp1c3QgcGVybWl0IGV2ZXJ5dGhpbmcKLSAgICAgICAgfQotCi0gICAgICAgIGF1
dG8gcHJpbWl0aXZlVmFsID0gY29uc3VtZVdpZHRoT3JIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0
KTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbCAmJiBwcmltaXRpdmVWYWwtPmlzUHJpbWl0aXZl
VmFsdWUoKSAmJiBtX3JhbmdlLmF0RW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lk
IENTU1Byb3BlcnR5UGFyc2VyOjpjb2xsZWN0UGFyc2VkQ3VzdG9tUHJvcGVydHlWYWx1ZURlcGVu
ZGVuY2llcyhjb25zdCBTdHJpbmcmIHN5bnRheCwgYm9vbCBpc1Jvb3QsIEhhc2hTZXQ8Q1NTUHJv
cGVydHlJRD4mIGRlcGVuZGVuY2llcykKLXsKLSAgICBpZiAoc3ludGF4ICE9ICIqIikgewotICAg
ICAgICBtX3JhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7Ci0gICAgICAgIGF1dG8gcHJpbWl0aXZl
VmFsID0gY29uc3VtZVdpZHRoT3JIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0KTsKLSAgICAgICAg
aWYgKCFtX3JhbmdlLmF0RW5kKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChw
cmltaXRpdmVWYWwgJiYgcHJpbWl0aXZlVmFsLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAg
ICAgICAgIHByaW1pdGl2ZVZhbC0+Y29sbGVjdERpcmVjdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNp
ZXMoZGVwZW5kZW5jaWVzKTsKLSAgICAgICAgICAgIGlmIChpc1Jvb3QpCi0gICAgICAgICAgICAg
ICAgcHJpbWl0aXZlVmFsLT5jb2xsZWN0RGlyZWN0Um9vdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNp
ZXMoZGVwZW5kZW5jaWVzKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotUmVmUHRyPENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU+IENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVR5cGVkQ3VzdG9tUHJvcGVy
dHlWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3ludGF4LCBjb25zdCBT
dHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQotewotICAgIGlmIChzeW50YXggIT0gIioiKSB7
Ci0gICAgICAgIG1fcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKLSAgICAgICAgYXV0byBwcmlt
aXRpdmVWYWwgPSBjb25zdW1lV2lkdGhPckhlaWdodChtX3JhbmdlLCBtX2NvbnRleHQpOwotICAg
ICAgICBpZiAocHJpbWl0aXZlVmFsICYmIHByaW1pdGl2ZVZhbC0+aXNQcmltaXRpdmVWYWx1ZSgp
KQotICAgICAgICAgICAgcmV0dXJuIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVN5bnRh
eExlbmd0aChuYW1lLCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgoc3R5bGVS
ZXNvbHZlciwgKnByaW1pdGl2ZVZhbCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gcHJv
cGVydHlWYWx1ZSA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVN5bnRheEFsbChuYW1l
LCBDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZShtX3JhbmdlKSk7Ci0gICAgICAgIHdoaWxlICghbV9y
YW5nZS5hdEVuZCgpKQotICAgICAgICAgICAgbV9yYW5nZS5jb25zdW1lKCk7Ci0gICAgICAgIHJl
dHVybiB7IFdURk1vdmUocHJvcGVydHlWYWx1ZSkgfTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbnVs
bHB0cjsKLX0KLQogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNvbnN1bWVGb250RmFjZVVu
aWNvZGVSYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmgKaW5kZXgg
MWRjMDVlZjg4ZGFjMjYwYWU2MTA3MjI5YjhkYTk2Y2M0YjE3ZTc3NC4uN2RiNzQ1M2MwZDg0OTll
YTEzZTAwZDk3Y2YyZTBjNTI0ZjQ1OGIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuaApAQCAtMzIsNyArMzIsNiBAQCBjbGFzcyBDU1NQcm9wZXJ0
eTsKIGNsYXNzIENTU1ZhbHVlOwogY2xhc3MgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZDsKIGNsYXNz
IFN0eWxlU2hlZXRDb250ZW50czsKLWNsYXNzIFN0eWxlUmVzb2x2ZXI7CiAgICAgCiAvLyBJbnB1
dHM6IFByb3BlcnR5SUQsIGlzSW1wb3J0YW50IGJvb2wsIENTU1BhcnNlclRva2VuUmFuZ2UuCiAv
LyBPdXRwdXRzOiBWZWN0b3Igb2YgQ1NTUHJvcGVydGllcwpAQCAtNDYsMjAgKzQ1LDE0IEBAIHB1
YmxpYzoKIAogICAgIC8vIFBhcnNlcyBhIG5vbi1zaG9ydGhhbmQgQ1NTIHByb3BlcnR5CiAgICAg
c3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlELCBj
b25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOwotICAg
IHN0YXRpYyBib29sIGNhblBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmlu
ZyYgc3ludGF4LCBjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiwgY29uc3QgQ1NTUGFyc2VyQ29u
dGV4dCYpOwotICAgIHN0YXRpYyBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gcGFyc2VU
eXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHN5bnRheCwgY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IFN0eWxlUmVzb2x2ZXIm
LCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7Ci0gICAgc3RhdGljIHZvaWQgY29sbGVjdFBhcnNl
ZEN1c3RvbVByb3BlcnR5VmFsdWVEZXBlbmRlbmNpZXMoY29uc3QgU3RyaW5nJiBzeW50YXgsIGJv
b2wgaXNSb290LCBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+JiBkZXBlbmRlbmNpZXMsIGNvbnN0IENT
U1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CiAKIHByaXZhdGU6
Ci0gICAgQ1NTUHJvcGVydHlQYXJzZXIoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0
IENTU1BhcnNlckNvbnRleHQmLCBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4qLCBib29sIGNvbnN1
bWVXaGl0ZXNwYWNlID0gdHJ1ZSk7CisgICAgQ1NTUHJvcGVydHlQYXJzZXIoY29uc3QgQ1NTUGFy
c2VyVG9rZW5SYW5nZSYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBWZWN0b3I8Q1NTUHJvcGVy
dHksIDI1Nj4qKTsKIAogICAgIC8vIEZJWE1FOiBSZW5hbWUgb25jZSB0aGUgQ1NTUGFyc2VyVmFs
dWUtYmFzZWQgcGFyc2VWYWx1ZSBpcyByZW1vdmVkCiAgICAgYm9vbCBwYXJzZVZhbHVlU3RhcnQo
Q1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgY29uc3VtZUNTU1dpZGVL
ZXl3b3JkKENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50KTsKICAgICBSZWZQdHI8Q1NTVmFs
dWU+IHBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJRCwgQ1NTUHJvcGVydHlJRCA9IENTU1By
b3BlcnR5SW52YWxpZCk7Ci0gICAgYm9vbCBjYW5QYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1
ZShjb25zdCBTdHJpbmcmIHN5bnRheCk7Ci0gICAgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFs
dWU+IHBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBzeW50YXgsIGNvbnN0IFN0eWxlUmVzb2x2ZXImKTsKLSAgICB2b2lkIGNvbGxl
Y3RQYXJzZWRDdXN0b21Qcm9wZXJ0eVZhbHVlRGVwZW5kZW5jaWVzKGNvbnN0IFN0cmluZyYgc3lu
dGF4LCBib29sIGlzUm9vdCwgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiYgZGVwZW5kZW5jaWVzKTsK
IAogICAgIGJvb2wgaW5RdWlya3NNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0Lm1vZGUg
PT0gSFRNTFF1aXJrc01vZGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NWYXJpYWJsZVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1ZhcmlhYmxlUGFyc2VyLmNwcAppbmRleCAxYmUyM2I5ZmVjOGY1ZWNkYWQ0ZWI4NDQ4NTNmOWUw
MmNhNWE5MjBkLi44NzA4NmUzNmFiODBkMWQ1ODM5NmJjYWFmOTQ5MTIzM2JkNWQyMjIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1ZhcmlhYmxlUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1ZhcmlhYmxlUGFyc2VyLmNwcApAQCAt
MTg5LDggKzE4OSw4IEBAIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBDU1NWYXJpYWJs
ZVBhcnNlcjo6cGFyc2VEZWNsYXJhdGlvblZhbHVlKGNvbnN0IEF0CiAgICAgaWYgKHR5cGUgPT0g
Q1NTVmFsdWVJbnZhbGlkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAodHlwZSA9
PSBDU1NWYWx1ZUludGVybmFsVmFyaWFibGVWYWx1ZSkKLSAgICAgICAgcmV0dXJuIENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU6OmNyZWF0ZVVucmVzb2x2ZWQodmFyaWFibGVOYW1lLCBDU1NWYXJpYWJs
ZVJlZmVyZW5jZVZhbHVlOjpjcmVhdGUocmFuZ2UpKTsKLSAgICByZXR1cm4gQ1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZTo6Y3JlYXRlVW5yZXNvbHZlZCh2YXJpYWJsZU5hbWUsIHR5cGUpOworICAgICAg
ICByZXR1cm4gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlV2l0aFZhcmlhYmxlRGF0YSh2
YXJpYWJsZU5hbWUsIENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRlKHJhbmdlLCBoYXNSZWZlcmVuY2Vz
IHx8IGhhc0F0QXBwbHlSdWxlKSk7CisgICAgcmV0dXJuIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6
OmNyZWF0ZVdpdGhJRCh2YXJpYWJsZU5hbWUsIHR5cGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29uc3RhbnRQcm9wZXJ0eU1h
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29uc3RhbnRQcm9wZXJ0eU1hcC5jcHAKaW5kZXgg
NmMxMDhjODg4NzE1ZjY3ZmE5ODE4NjAwYWJkYjE1MTA0ZmFhYzJmMC4uOTBmZDEzOTMxYjcwNDFl
MjliOWY2NzlhYzNhMWQxMzQ4YzYyMGI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnN0YW50UHJvcGVydHlNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db25zdGFu
dFByb3BlcnR5TWFwLmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIENvbnN0YW50UHJvcGVydHlN
YXA6OnNldFZhbHVlRm9yUHJvcGVydHkoQ29uc3RhbnRQcm9wZXJ0eSBwcm9wZXJ0eSwgUmVmPENT
UwogICAgICAgICBidWlsZFZhbHVlcygpOwogCiAgICAgYXV0byYgbmFtZSA9IG5hbWVGb3JQcm9w
ZXJ0eShwcm9wZXJ0eSk7Ci0gICAgbV92YWx1ZXMtPnNldChuYW1lLCBDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlOjpjcmVhdGVTeW50YXhBbGwobmFtZSwgV1RGTW92ZShkYXRhKSkpOworICAgIG1fdmFs
dWVzLT5zZXQobmFtZSwgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlV2l0aFZhcmlhYmxl
RGF0YShuYW1lLCBXVEZNb3ZlKGRhdGEpKSk7CiB9CiAKIHZvaWQgQ29uc3RhbnRQcm9wZXJ0eU1h
cDo6YnVpbGRWYWx1ZXMoKQpAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFyaWFi
bGVEYXRhPiB2YXJpYWJsZURhdGFGb3JQb3NpdGl2ZVBpeGVsTGVuZ3RoKGZsb2F0IGxlbmd0aElu
UHgpCiAKICAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHRva2VucyB7IHRva2VuIH07CiAgICAg
Q1NTUGFyc2VyVG9rZW5SYW5nZSB0b2tlblJhbmdlKHRva2Vucyk7Ci0gICAgcmV0dXJuIENTU1Zh
cmlhYmxlRGF0YTo6Y3JlYXRlKHRva2VuUmFuZ2UpOworICAgIHJldHVybiBDU1NWYXJpYWJsZURh
dGE6OmNyZWF0ZSh0b2tlblJhbmdlLCBmYWxzZSk7CiB9CiAKIHN0YXRpYyBSZWY8Q1NTVmFyaWFi
bGVEYXRhPiB2YXJpYWJsZURhdGFGb3JQb3NpdGl2ZUR1cmF0aW9uKFNlY29uZHMgZHVyYXRpb25J
blNlY29uZHMpCkBAIC0xMjIsNyArMTIyLDcgQEAgc3RhdGljIFJlZjxDU1NWYXJpYWJsZURhdGE+
IHZhcmlhYmxlRGF0YUZvclBvc2l0aXZlRHVyYXRpb24oU2Vjb25kcyBkdXJhdGlvbkluU2UKIAog
ICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gdG9rZW5zIHsgdG9rZW4gfTsKICAgICBDU1NQYXJz
ZXJUb2tlblJhbmdlIHRva2VuUmFuZ2UodG9rZW5zKTsKLSAgICByZXR1cm4gQ1NTVmFyaWFibGVE
YXRhOjpjcmVhdGUodG9rZW5SYW5nZSk7CisgICAgcmV0dXJuIENTU1ZhcmlhYmxlRGF0YTo6Y3Jl
YXRlKHRva2VuUmFuZ2UsIGZhbHNlKTsKIH0KIAogdm9pZCBDb25zdGFudFByb3BlcnR5TWFwOjp1
cGRhdGVDb25zdGFudHNGb3JTYWZlQXJlYUluc2V0cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCBjODUyNTg4NTAyNDc3MGQ5YzViNWQ0
OTE5ZWQ2NWJjNmViMTE5NTc3Li5kYjg1ZDdkMDkzZjUyODRjYmViODAyZWU4NzAwODA4ZTM5MmE3
MWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAKQEAgLTIyOTksNiArMjI5OSw4OSBAQCBib29sIFJlbmRlclN0eWxlOjpoYXNSZWZlcmVuY2VG
aWx0ZXJPbmx5KCkgY29uc3QKICAgICByZXR1cm4gZmlsdGVyT3BlcmF0aW9ucy5zaXplKCkgPT0g
MSAmJiBmaWx0ZXJPcGVyYXRpb25zLmF0KDApLT50eXBlKCkgPT0gRmlsdGVyT3BlcmF0aW9uOjpS
RUZFUkVOQ0U7CiB9CiAKK3ZvaWQgUmVuZGVyU3R5bGU6OmNoZWNrVmFyaWFibGVzSW5DdXN0b21Q
cm9wZXJ0aWVzKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYgcmVnaXN0ZXJl
ZFByb3BlcnRpZXMsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgY29uc3QgU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKK3sKKyAgICBib29sIHNob3VsZFVwZGF0ZUluaGVyaXRl
ZCA9IG1fcmFyZUluaGVyaXRlZERhdGEtPmN1c3RvbVByb3BlcnRpZXMtPmNvbnRhaW5zVmFyaWFi
bGVzIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmN1c3RvbVByb3BlcnRpZXMtPmNvbnRhaW5zVW5y
ZXNvbHZlZFJlZ2lzdGVyZWRQcm9wZXJ0aWVzOworICAgIGJvb2wgc2hvdWxkVXBkYXRlTm9uSW5o
ZXJpdGVkID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y3VzdG9tUHJvcGVydGllcy0+Y29udGFp
bnNWYXJpYWJsZXMgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y3VzdG9tUHJvcGVydGllcy0+
Y29udGFpbnNVbnJlc29sdmVkUmVnaXN0ZXJlZFByb3BlcnRpZXM7CisgICAgYXV0byogaW5oZXJp
dGVkUHJvcGVydHlEYXRhID0gc2hvdWxkVXBkYXRlSW5oZXJpdGVkID8gJm1fcmFyZUluaGVyaXRl
ZERhdGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKSA6IG51bGxwdHI7CisgICAg
YXV0byogbm9uSW5oZXJpdGVkUHJvcGVydHlEYXRhID0gc2hvdWxkVXBkYXRlTm9uSW5oZXJpdGVk
ID8gJm1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nl
c3MoKSA6IG51bGxwdHI7CisKKyAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4gaW52YWxpZFByb3Bl
cnRpZXM7CisKKyAgICBmb3IgKGF1dG8qIGN1c3RvbVByb3BlcnR5RGF0YSA6IHsgaW5oZXJpdGVk
UHJvcGVydHlEYXRhLCBub25Jbmhlcml0ZWRQcm9wZXJ0eURhdGEgfSkgeworICAgICAgICBpZiAo
IWN1c3RvbVByb3BlcnR5RGF0YSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8v
IE91ciBmaXJzdCBwYXNzIGNoZWNrcyB0aGUgdmFyaWFibGVzIGZvciB2YWxpZGl0eSBhbmQgcmVw
bGFjZXMgYW55IHByb3BlcnRpZXMgdGhhdCBiZWNhbWUKKyAgICAgICAgLy8gaW52YWxpZCB3aXRo
IGVtcHR5IHZhbHVlcy4KKyAgICAgICAgYXV0byYgY3VzdG9tUHJvcGVydGllcyA9IGN1c3RvbVBy
b3BlcnR5RGF0YS0+dmFsdWVzOworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogY3VzdG9tUHJv
cGVydGllcykgeworICAgICAgICAgICAgaWYgKCFlbnRyeS52YWx1ZS0+Y29udGFpbnNWYXJpYWJs
ZXMoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIEhhc2hTZXQ8QXRv
bWljU3RyaW5nPiBzZWVuUHJvcGVydGllczsKKyAgICAgICAgICAgIGVudHJ5LnZhbHVlLT5jaGVj
a1ZhcmlhYmxlc0ZvckN5Y2xlcyhlbnRyeS5rZXksICp0aGlzLCBzZWVuUHJvcGVydGllcywgaW52
YWxpZFByb3BlcnRpZXMpOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBpbnZhbGlkVmFsdWUg
PSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVJbnZhbGlkKCk7CisKKyAgICAgICAgLy8g
Tm93IGluc2VydCBpbnZhbGlkIHZhbHVlcywgb3IgZGVmYXVsdHMgaWYgdGhlIHByb3BlcnR5IGlz
IHJlZ2lzdGVyZWQuCisgICAgICAgIGlmICghaW52YWxpZFByb3BlcnRpZXMuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogaW52YWxpZFByb3BlcnRpZXMpIHsK
KyAgICAgICAgICAgICAgICBpZiAoIWN1c3RvbVByb3BlcnRpZXMuY29udGFpbnMocHJvcGVydHkp
KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBjb25zdCBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4qIHBhcmVudFBy
b3BlcnR5ID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IHBhcmVudFN0eWxlLT5pbmhlcml0ZWRD
dXN0b21Qcm9wZXJ0aWVzKCkuZmluZChwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgIGlm
IChpdGVyYXRvciAhPSBwYXJlbnRTdHlsZS0+aW5oZXJpdGVkQ3VzdG9tUHJvcGVydGllcygpLmVu
ZCgpICYmIGl0ZXJhdG9yLmdldCgpICYmIGl0ZXJhdG9yLmdldCgpLT52YWx1ZSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmVudFByb3BlcnR5ID0gJml0ZXJhdG9yLmdldCgpLT52YWx1ZTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBhdXRvKiByZWdpc3RlcmVkID0g
cmVnaXN0ZXJlZFByb3BlcnRpZXMuZ2V0KHByb3BlcnR5KTsKKworICAgICAgICAgICAgICAgIGlm
IChyZWdpc3RlcmVkICYmIHJlZ2lzdGVyZWQtPmluaGVyaXRzICYmIHBhcmVudFByb3BlcnR5KQor
ICAgICAgICAgICAgICAgICAgICBjdXN0b21Qcm9wZXJ0aWVzLnNldChwcm9wZXJ0eSwgcGFyZW50
UHJvcGVydHktPmNvcHlSZWYoKSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVnaXN0ZXJl
ZCAmJiByZWdpc3RlcmVkLT5pbml0aWFsVmFsdWUoKSkKKyAgICAgICAgICAgICAgICAgICAgY3Vz
dG9tUHJvcGVydGllcy5zZXQocHJvcGVydHksIHJlZ2lzdGVyZWQtPmluaXRpYWxWYWx1ZUNvcHko
KSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBjdXN0b21Qcm9w
ZXJ0aWVzLnNldChwcm9wZXJ0eSwgaW52YWxpZFZhbHVlLmNvcHlSZWYoKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBOb3cgdGhhdCBhbGwgb2YgdGhlIHByb3BlcnRp
ZXMgaGF2ZSBiZWVuIHRlc3RlZCBmb3IgdmFsaWRpdHkgYW5kIHJlcGxhY2VkIHdpdGgKKyAgICAg
ICAgLy8gaW52YWxpZCB2YWx1ZXMgaWYgdGhleSBmYWlsZWQsIHdlIGNhbiBwZXJmb3JtIHZhcmlh
YmxlIHN1YnN0aXR1dGlvbiBvbiB0aGUgdmFsaWQgdmFsdWVzLgorICAgICAgICBWZWN0b3I8UmVm
PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+PiByZXNvbHZlZFZhbHVlczsKKyAgICAgICAgZm9yIChh
dXRvIGVudHJ5IDogY3VzdG9tUHJvcGVydGllcykgeworICAgICAgICAgICAgaWYgKCFlbnRyeS52
YWx1ZS0+Y29udGFpbnNWYXJpYWJsZXMoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIGVudHJ5LnZhbHVlLT5yZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKHJlZ2lzdGVy
ZWRQcm9wZXJ0aWVzLCByZXNvbHZlZFZhbHVlcywgKnRoaXMpOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gV2l0aCBhbGwgcmVzdWx0cyBjb21wdXRlZCwgd2UgY2FuIG5vdyBtdXRhdGUgb3VyIHRh
YmxlIHRvIGVsaW1pbmF0ZSB0aGUgdmFyaWFibGVzIGFuZAorICAgICAgICAvLyBob2xkIHRoZSBm
aW5hbCB2YWx1ZXMuIFRoaXMgd2F5IHdoZW4gd2UgaW5oZXJpdCwgd2UgZG9uJ3QgZW5kIHVwIHJl
c3Vic3RpdHV0aW5nIHZhcmlhYmxlcywgZXRjLgorICAgICAgICBmb3IgKGF1dG8mIHJlc29sdmVk
VmFsdWUgOiByZXNvbHZlZFZhbHVlcykKKyAgICAgICAgICAgIGN1c3RvbVByb3BlcnRpZXMuc2V0
KHJlc29sdmVkVmFsdWUtPm5hbWUoKSwgcmVzb2x2ZWRWYWx1ZS5jb3B5UmVmKCkpOworCisgICAg
ICAgIC8vIEZpbmFsbHkgd2UgY2FuIHJlc29sdmUgcmVnaXN0ZXJlZCBjdXN0b20gcHJvcGVydGll
cyB0byB0aGVpciB0eXBlZCB2YWx1ZXMuCisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBjdXN0
b21Qcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICBhdXRvJiBuYW1lID0gZW50cnkudmFsdWUtPm5h
bWUoKTsKKyAgICAgICAgICAgIGF1dG8qIHJlZ2lzdGVyZWQgPSByZWdpc3RlcmVkUHJvcGVydGll
cy5nZXQobmFtZSk7CisKKyAgICAgICAgICAgIGlmICghcmVnaXN0ZXJlZCkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgYXV0byBwcmltaXRpdmVWYWwgPSBzdHlsZVJl
c29sdmVyLnJlc29sdmVkVmFyaWFibGVWYWx1ZShDU1NQcm9wZXJ0eUN1c3RvbSwgKmVudHJ5LnZh
bHVlKTsKKyAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsIHx8ICFwcmltaXRpdmVWYWwtPmlz
UHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgICAgICAgICBlbnRyeS52YWx1ZSA9IGludmFsaWRW
YWx1ZS5jb3B5UmVmKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW50cnku
dmFsdWUtPnNldFJlc29sdmVkVHlwZWRWYWx1ZShTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRMZW5ndGgoc3R5bGVSZXNvbHZlciwgKnByaW1pdGl2ZVZhbCkpOworICAgICAgICB9CisKKyAg
ICAgICAgY3VzdG9tUHJvcGVydHlEYXRhLT5jb250YWluc1ZhcmlhYmxlcyA9IGZhbHNlOworICAg
ICAgICBjdXN0b21Qcm9wZXJ0eURhdGEtPmNvbnRhaW5zVW5yZXNvbHZlZFJlZ2lzdGVyZWRQcm9w
ZXJ0aWVzID0gZmFsc2U7CisgICAgfQorfQorCiBmbG9hdCBSZW5kZXJTdHlsZTo6b3V0bGluZVdp
ZHRoKCkgY29uc3QKIHsKICAgICBpZiAobV9iYWNrZ3JvdW5kRGF0YS0+b3V0bGluZS5zdHlsZSgp
ID09IEJvcmRlclN0eWxlOjpOb25lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaAppbmRleCA3MDhlNmJmMDE0MjdjZTFmMDgyY2QxNWFjYjFjM2UwNmQxM2I4
MjM0Li5kZDI0MmU3NmQzZTgxMDljYjg5MDc4NTc5YjJjOGFiNDFiZDg3ZTUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMTg2LDggKzE4Niw4
IEBAIHB1YmxpYzoKICAgICBjb25zdCBDdXN0b21Qcm9wZXJ0eVZhbHVlTWFwJiBpbmhlcml0ZWRD
dXN0b21Qcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+Y3Vz
dG9tUHJvcGVydGllcy0+dmFsdWVzOyB9CiAgICAgY29uc3QgQ3VzdG9tUHJvcGVydHlWYWx1ZU1h
cCYgbm9uSW5oZXJpdGVkQ3VzdG9tUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmN1c3RvbVByb3BlcnRpZXMtPnZhbHVlczsgfQogICAgIGNvbnN0IENT
U0N1c3RvbVByb3BlcnR5VmFsdWUqIGdldEN1c3RvbVByb3BlcnR5KGNvbnN0IEF0b21pY1N0cmlu
ZyYpIGNvbnN0OwotICAgIHZvaWQgc2V0SW5oZXJpdGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiYmIHZhbHVl
KSB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLmN1c3RvbVByb3BlcnRpZXMu
YWNjZXNzKCkuc2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBXVEZNb3ZlKHZhbHVlKSk7IH0K
LSAgICB2b2lkIHNldE5vbkluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2YWx1ZSkgeyByZXR1
cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXN0b21Qcm9wZXJ0aWVzLmFjY2Vz
cygpLnNldEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgV1RGTW92ZSh2YWx1ZSkpOyB9CisgICAg
dm9pZCBzZXRJbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYgdmFsdWUsIGJvb2wgaXNSZWdpc3Rl
cmVkID0gZmFsc2UpIHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3VzdG9t
UHJvcGVydGllcy5hY2Nlc3MoKS5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1vdmUo
dmFsdWUpLCBpc1JlZ2lzdGVyZWQpOyB9CisgICAgdm9pZCBzZXROb25Jbmhlcml0ZWRDdXN0b21Q
cm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENTU0N1c3RvbVByb3Bl
cnR5VmFsdWU+JiYgdmFsdWUsIGJvb2wgaXNSZWdpc3RlcmVkID0gZmFsc2UpIHsgcmV0dXJuIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS5z
ZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1vdmUodmFsdWUpLCBpc1JlZ2lzdGVyZWQp
OyB9CiAKICAgICB2b2lkIHNldEhhc1ZpZXdwb3J0VW5pdHMoYm9vbCB2ID0gdHJ1ZSkgeyBtX25v
bkluaGVyaXRlZEZsYWdzLmhhc1ZpZXdwb3J0VW5pdHMgPSB2OyB9CiAgICAgYm9vbCBoYXNWaWV3
cG9ydFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5oYXNWaWV3cG9y
dFVuaXRzOyB9CkBAIC03OTUsNiArNzk1LDggQEAgcHVibGljOgogICAgIEFwcGxlUGF5QnV0dG9u
VHlwZSBhcHBsZVBheUJ1dHRvblR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBcHBs
ZVBheUJ1dHRvblR5cGU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFwcGxlUGF5QnV0dG9uVHlw
ZSk7IH0KICNlbmRpZgogCisgICAgdm9pZCBjaGVja1ZhcmlhYmxlc0luQ3VzdG9tUHJvcGVydGll
cyhjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQmLCBjb25zdCBSZW5kZXJTdHls
ZSogcGFyZW50U3R5bGUsIGNvbnN0IFN0eWxlUmVzb2x2ZXImKTsKKwogLy8gYXR0cmlidXRlIHNl
dHRlciBtZXRob2RzCiAKICAgICB2b2lkIHNldERpc3BsYXkoRGlzcGxheVR5cGUgdikgeyBtX25v
bkluaGVyaXRlZEZsYWdzLmVmZmVjdGl2ZURpc3BsYXkgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
dik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1
c3RvbVByb3BlcnR5RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
Q3VzdG9tUHJvcGVydHlEYXRhLmgKaW5kZXggMTMyZTZmNTI1NjBlNjVjYWM1NGU0YzViNTNmZDdk
NDEwMzVmNzVmYS4uMWJjZGIyMmU4ZTlkM2JjMzk0MTEzMDQ4NDI4ZGIzZTY4Nzg1ODJkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJvcGVy
dHlEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9t
UHJvcGVydHlEYXRhLmgKQEAgLTIyLDcgKzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIgotI2luY2x1ZGUgIkNTU1ZhcmlhYmxlUmVmZXJl
bmNlVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTM4LDYgKzM3LDkgQEAgcHVi
bGljOgogICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUN1c3RvbVByb3BlcnR5
RGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgeworICAgICAgICBpZiAoY29udGFpbnNWYXJpYWJsZXMg
IT0gb3RoZXIuY29udGFpbnNWYXJpYWJsZXMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
ICAgICAgICAgaWYgKHZhbHVlcy5zaXplKCkgIT0gb3RoZXIudmFsdWVzLnNpemUoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTIsMTggKzU0LDI2IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAgCi0gICAgdm9pZCBzZXRDdXN0
b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENTU0N1c3RvbVBy
b3BlcnR5VmFsdWU+JiYgdmFsdWUpCisgICAgdm9pZCBzZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYgdmFs
dWUsIGJvb2wgaXNSZWdpc3RlcmVkKQogICAgIHsKKyAgICAgICAgaWYgKHZhbHVlLT5jb250YWlu
c1ZhcmlhYmxlcygpKQorICAgICAgICAgICAgY29udGFpbnNWYXJpYWJsZXMgPSB0cnVlOworICAg
ICAgICBpZiAoaXNSZWdpc3RlcmVkKQorICAgICAgICAgICAgY29udGFpbnNVbnJlc29sdmVkUmVn
aXN0ZXJlZFByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICB2YWx1ZXMuc2V0KG5hbWUsIFdURk1v
dmUodmFsdWUpKTsKICAgICB9CiAKICAgICBDdXN0b21Qcm9wZXJ0eVZhbHVlTWFwIHZhbHVlczsK
KyAgICBib29sIGNvbnRhaW5zVmFyaWFibGVzIHsgZmFsc2UgfTsKKyAgICBib29sIGNvbnRhaW5z
VW5yZXNvbHZlZFJlZ2lzdGVyZWRQcm9wZXJ0aWVzIHsgZmFsc2UgfTsKIAogcHJpdmF0ZToKICAg
ICBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSgpID0gZGVmYXVsdDsKICAgICBTdHlsZUN1c3RvbVBy
b3BlcnR5RGF0YShjb25zdCBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSYgb3RoZXIpCiAgICAgICAg
IDogUmVmQ291bnRlZDxTdHlsZUN1c3RvbVByb3BlcnR5RGF0YT4oKQogICAgICAgICAsIHZhbHVl
cyhvdGhlci52YWx1ZXMpCisgICAgICAgICwgY29udGFpbnNWYXJpYWJsZXMob3RoZXIuY29udGFp
bnNWYXJpYWJsZXMpCisgICAgICAgICwgY29udGFpbnNVbnJlc29sdmVkUmVnaXN0ZXJlZFByb3Bl
cnRpZXMob3RoZXIuY29udGFpbnNVbnJlc29sdmVkUmVnaXN0ZXJlZFByb3BlcnRpZXMpCiAgICAg
eyB9CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNmQzZWRlZTliNWVmYjJiNjNjY2E1MGVmYmFhMmNjM2RmMWJlMjAy
Mi4uNDQ2ZjUxZGZhZTdiNzlhZGY0OTY5ODIwZTVhYzVlN2E1MDVkNjk0YiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDE4LTEwLTI1ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZlcnQgcjIzNzM0NyByZWdpc3RlcmVkIGN1c3RvbSBwcm9w
ZXJ0aWVzLi4uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAwMzkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDkxOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3NzLWN1
c3RvbS1wcm9wZXJ0aWVzLWFwaS9jcmFzaC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jcmFzaC5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3ljbGVzLWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBjc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvaW5saW5lLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBjc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2lubGlu
ZS5odG1sOiBSZW1vdmVkLgorCiAyMDE4LTEwLTI1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBkaXNwbGF5IGZ1bGxzY3JlZW4gZW50
ZXIvZXhpdCBldmVudHMgaW4gVGltZWxpbmVzIGFuZCBOZXR3b3JrIG5vZGUgd2F0ZXJmYWxscwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggZGM5MmNlNjkzNzljM2FhMGJiNGZmN2Mz
MTMyOTdlZTI2MDFhM2Q0Ny4uZmMwYTU5ZmY0NjFhNzQzNWNkZDU0ZmU1ZDA2ZTk0YWY3YjVhYTVi
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTgt
MTAtMjUgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmVydCByMjM3MzQ3IHJlZ2lzdGVyZWQgY3VzdG9tIHByb3BlcnRpZXMuLi4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDAzOQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwOTE5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXItcHJvcGVydHktc3ludGF4LXBhcnNp
bmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBy
b3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnRpZXMtaW5oZXJpdGFuY2UtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRp
ZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnR5LWNzc29tLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkv
dHlwZWRvbS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVy
ZWQtcHJvcGVydGllcy1jeWNsZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJlbmNlLXJlZ2lz
dGVyZWQtcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisKIDIwMTgtMTAtMjUgIEppZXdlbiBUYW4g
IDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV1BUXSBVcGRhdGUgcmVzb3VyY2Ut
dGltaW5nIFdQVCB0ZXN0cyB0byB1c2UgdGhlIHJpZ2h0IGNyb3NzIG9yaWdpbgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jcmFzaC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2NyYXNoLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFmMGZmNWU5MDA3MWRlOTllZjBh
YmY4OWI4NzgwMjZiZGQxMGIyMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2NyYXNoLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotVGhpcyBpcyB0ZXh0Ci0K
LQotUEFTUyBGYWxsYmFjayBpcyBoYW5kbGVkIGNvcnJlY3RseSwgYW5kIHdlIGRvbid0IGNyYXNo
IAotUEFTUyBTZXR0aW5nIHRoZSBpbmxpbmUgc3R5bGUgaXMgaGFuZGxlZCBjb3JyZWN0bHkgCi1Q
QVNTIENTUy5yZWdpc3RlclByb3BlcnR5IAotUEFTUyBTZXR0aW5nIHRoZSBpbmxpbmUgc3R5bGUg
aXMgaGFuZGxlZCBjb3JyZWN0bHkgd2hlbiByZWdpc3RlcmVkIAotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2NyYXNoLmh0bWwgYi9MYXlvdXRUZXN0
cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2NyYXNoLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDdmMmNkNzBhMmEzMWRlYWI5OWYwMDMyYzQxZmVhN2E1YzhhYjdmOWIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
Y3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jcmFzaC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
NjMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBl
cmltZW50YWw6Q1NTQ3VzdG9tUHJvcGVydGllc0FuZFZhbHVlc0VuYWJsZWQ9dHJ1ZSBdIC0tPgot
PCEtLSBodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjLysvMDFj
ZTQzMTQwOWUzYTAxOTg1ODY3NzYyNmE5ODNjNTUxNjhkYTZkYy90aGlyZF9wYXJ0eS9XZWJLaXQv
TGF5b3V0VGVzdHMvY3VzdG9tLXByb3BlcnRpZXMvcmVnaXN0ZXItcHJvcGVydHkuaHRtbCAtLT4K
LTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0K
LTxzdHlsZT4KLSAgI3Rlc3QxIHsKLSAgICBmb250LXNpemU6IHZhcigtLWZvbywgMzBweCk7Ci0g
ICAgLS1mb286IHZhcigtLWJhciwgMjBweCk7Ci0gICAgLS1iYXI6IHZhcigtLWJheiwgdmFyKC0t
Zm9vKSk7Ci0gIH0KLTwvc3R5bGU+Ci08ZGl2PgotICA8aDIgaWQ9dGVzdDE+VGhpcyBpcyB0ZXh0
PC9oMj4KLTwvZGl2PgotPHNjcmlwdD4KLXZhciBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRT
dHlsZSh0ZXN0MSk7Ci12YXIgaW5saW5lU3R5bGUgPSB0ZXN0MS5zdHlsZTsKLQotdGVzdChmdW5j
dGlvbigpIHsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUo
Jy0tYmF6JyksICcnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5
VmFsdWUoJy0tZm9vJyksICcnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFBy
b3BlcnR5VmFsdWUoJy0tYmFyJyksICcnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxl
LmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtc2l6ZScpLCAnMzBweCcpOwotfSwgIkZhbGxiYWNrIGlz
IGhhbmRsZWQgY29ycmVjdGx5LCBhbmQgd2UgZG9uJ3QgY3Jhc2giKTsKLQotdGVzdChmdW5jdGlv
bigpIHsKLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYmF6JywgJyAgIDQwcHgnKTsKLSAg
YXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmF6JyksICcg
NDBweCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgn
LS1mb28nKSwgJycpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZSgnLS1iYXInKSwgJycpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJv
cGVydHlWYWx1ZSgnLS1iYXonKSwgJyA0MHB4Jyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRT
dHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LXNpemUnKSwgJzMwcHgnKTsKLSAgaW5saW5lU3R5
bGUucmVtb3ZlUHJvcGVydHkoJy0tYmF6Jyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHls
ZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJheicpLCAnJyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0
ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWZvbycpLCAnJyk7Ci0gIGFzc2VydF9lcXVhbHMo
Y29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJhcicpLCAnJyk7Ci0gIGFzc2VydF9l
cXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LXNpemUnKSwgJzMwcHgn
KTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmF6
JyksICcnKTsKLX0sICJTZXR0aW5nIHRoZSBpbmxpbmUgc3R5bGUgaXMgaGFuZGxlZCBjb3JyZWN0
bHkiKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6
ICctLWZvbycsIHN5bnRheDogJzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOiAnMjAwcHgnLCBpbmhl
cml0czogdHJ1ZX0pOwotICBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJy0tYmFyJywgc3lu
dGF4OiAnPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6ICcyMDBweCcsIGluaGVyaXRzOiB0cnVlfSk7
Ci0gIENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnLS1iYXonLCBzeW50YXg6ICc8bGVuZ3Ro
PicsIGluaXRpYWxWYWx1ZTogJzIwMHB4JywgaW5oZXJpdHM6IHRydWV9KTsKLX0sICJDU1MucmVn
aXN0ZXJQcm9wZXJ0eSIpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICBpbmxpbmVTdHlsZS5zZXRQ
cm9wZXJ0eSgnLS1iYXonLCAnICAgNDBweCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXonKSwgJzQwcHgnKTsKLSAgYXNzZXJ0X2VxdWFscyhj
b21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tZm9vJyksICcyMDBweCcpOwotICBhc3Nl
cnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXInKSwgJzIwMHB4
Jyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJh
eicpLCAnNDBweCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZSgnZm9udC1zaXplJyksICcyMDBweCcpOwotICBpbmxpbmVTdHlsZS5yZW1vdmVQcm9wZXJ0
eSgnLS1iYXonKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFs
dWUoJy0tYmF6JyksICcyMDBweCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZSgnLS1mb28nKSwgJzIwMHB4Jyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0
ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJhcicpLCAnMjAwcHgnKTsKLSAgYXNzZXJ0X2Vx
dWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtc2l6ZScpLCAnMjAwcHgn
KTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmF6
JyksICcyMDBweCcpOwotfSwgIlNldHRpbmcgdGhlIGlubGluZSBzdHlsZSBpcyBoYW5kbGVkIGNv
cnJlY3RseSB3aGVuIHJlZ2lzdGVyZWQiKTsKLQotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkNDg2ZWIyMGE2OWI5YTU5OTUxMDliZTA4
YmIzNDVlNDRmOTY4MDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jeWNsZXMtZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotdGVzdAotCi10ZXN0Ci0KLXRl
c3QKLQotdGVzdAotCi10ZXN0Ci0KLQotUEFTUyBSZWdpc3RyYXRpb24gaXMgc3VjY2Vzc2Z1bCAK
LVBBU1MgSlMgQXR0cmlidXRlcyBhcmUgdmFsaWQgZm9yIGVsZW1lbnQgMSAKLVBBU1MgSlMgQXR0
cmlidXRlcyBhcmUgdmFsaWQgZm9yIGVsZW1lbnQgMiAKLVBBU1MgSlMgQXR0cmlidXRlcyBhcmUg
dmFsaWQgZm9yIGVsZW1lbnQgMyAKLVBBU1MgSlMgQXR0cmlidXRlcyBhcmUgdmFsaWQgZm9yIGVs
ZW1lbnQgNCAKLVBBU1MgSlMgQXR0cmlidXRlcyBhcmUgdmFsaWQgZm9yIGVsZW1lbnQgNSAKLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jeWNsZXMu
aHRtbCBiL0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3ljbGVzLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlYzI0Yzg4NDQ4OWIzODk5MmM1ZDYyYWQ3
NTYyZWZkZDAyYmM5MmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jeWNsZXMuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtp
dC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpDU1NDdXN0b21Qcm9wZXJ0aWVzQW5kVmFsdWVz
RW5hYmxlZD10cnVlIF0gLS0+Ci08IS0tIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv
bS9jaHJvbWl1bS9zcmMvKy8wMWNlNDMxNDA5ZTNhMDE5ODU4Njc3NjI2YTk4M2M1NTE2OGRhNmRj
L3RoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9jdXN0b20tcHJvcGVydGllcy9yZWdpc3Rl
ci1wcm9wZXJ0eS5odG1sIC0tPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLQotPHN0eWxlPgotICAjcGFyZW50MSB7Ci0gICAgd2lkdGg6IDUw
MHB4OwotICAgIGJhY2tncm91bmQ6IGJsdWU7Ci0gIH0KLSAgI2NoaWxkMSB7Ci0gICAgYmFja2dy
b3VuZDogZ3JlZW47Ci0gICAgZm9udC1zaXplOiAxMHB4OwotICAgIC0tYTogMTBlbTsKLSAgICB3
aWR0aDogdmFyKC0tYSk7Ci0gIH0KLQotICAjcGFyZW50MiB7Ci0gICAgd2lkdGg6IDUwMHB4Owot
ICAgIGJhY2tncm91bmQ6IGJsdWU7Ci0gICAgLS1hOiAxMGVtOwotICAgIGZvbnQtc2l6ZTogY2Fs
YyggdmFyKC0tYSkgKyAtMTUwcHgpOwotICB9Ci0gICNjaGlsZDIgewotICAgIGJhY2tncm91bmQ6
IGdyZWVuOwotICAgIHdpZHRoOiB2YXIoLS1hKTsKLSAgfQotCi0gICNwYXJlbnQzIHsKLSAgICB3
aWR0aDogNTAwcHg7Ci0gICAgYmFja2dyb3VuZDogYmx1ZTsKLSAgICAtLWI6IDEwZW07Ci0gICAg
Zm9udC1zaXplOiBjYWxjKCB2YXIoLS1iKSArIC0xNTBweCk7Ci0gIH0KLSAgI2NoaWxkMyB7Ci0g
ICAgYmFja2dyb3VuZDogZ3JlZW47Ci0gICAgd2lkdGg6IHZhcigtLWIpOwotICB9Ci0KLSAgI3Bh
cmVudDQgewotICAgIHdpZHRoOiA1MDBweDsKLSAgICBiYWNrZ3JvdW5kOiBibHVlOwotICAgIC0t
YjogMTBlbTsKLSAgICBmb250LXNpemU6IGNhbGMoIHZhcigtLWIpICsgLTE1MHB4KTsKLSAgfQot
ICAjY2hpbGQ0IHsKLSAgICBiYWNrZ3JvdW5kOiBncmVlbjsKLSAgICAtLWE6IHZhcigtLWIpOwot
ICAgIGZvbnQtc2l6ZTogdmFyKC0tYSk7Ci0gICAgd2lkdGg6IHZhcigtLWEpOwotICB9Ci0KLSAg
I3BhcmVudDUgewotICAgIHdpZHRoOiA1MDBweDsKLSAgICBiYWNrZ3JvdW5kOiBibHVlOwotICAg
IC0tYjogNWVtOwotICAgIGZvbnQtc2l6ZTogY2FsYyggdmFyKC0tYikgKyAtNzBweCk7Ci0gIH0K
LSAgI2NoaWxkNSB7Ci0gICAgYmFja2dyb3VuZDogZ3JlZW47Ci0gICAgLS1jOiB2YXIoLS1iKTsK
LSAgICBmb250LXNpemU6IHZhcigtLWMpOwotICAgIHdpZHRoOiB2YXIoLS1jKTsKLSAgfQotPC9z
dHlsZT4KLTxkaXY+Ci0gIDxkaXYgaWQ9InBhcmVudDEiPjxkaXYgaWQ9ImNoaWxkMSI+PHA+dGVz
dDwvcD48L2Rpdj48L2Rpdj4KLSAgPGRpdiBpZD0icGFyZW50MiI+PGRpdiBpZD0iY2hpbGQyIj48
cD50ZXN0PC9wPjwvZGl2PjwvZGl2PgotICA8ZGl2IGlkPSJwYXJlbnQzIj48ZGl2IGlkPSJjaGls
ZDMiPjxwPnRlc3Q8L3A+PC9kaXY+PC9kaXY+Ci0gIDxkaXYgaWQ9InBhcmVudDQiPjxkaXYgaWQ9
ImNoaWxkNCI+PHA+dGVzdDwvcD48L2Rpdj48L2Rpdj4KLSAgPGRpdiBpZD0icGFyZW50NSI+PGRp
diBpZD0iY2hpbGQ1Ij48cD50ZXN0PC9wPjwvZGl2PjwvZGl2PgotPC9kaXY+Ci08c2NyaXB0Pgot
Ci1mdW5jdGlvbiB0ZXN0X3Byb3AoaWQsIHByb3AsIGV4cGVjdGVkKSB7Ci0gIGFzc2VydF9lcXVh
bHMod2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpKS5n
ZXRQcm9wZXJ0eVZhbHVlKHByb3ApLnRyaW0oKSwgZXhwZWN0ZWQpOwotfQotCi10ZXN0KGZ1bmN0
aW9uKCkgewotICBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7Ci0gICAgbmFtZTogJy0tYScsCi0gICAg
c3ludGF4OiAnPGxlbmd0aD4nLAotICAgIGluaGVyaXRzOiB0cnVlLAotICAgIGluaXRpYWxWYWx1
ZTogJzIwMHB4JwotICB9KQotfSwgIlJlZ2lzdHJhdGlvbiBpcyBzdWNjZXNzZnVsIik7Ci10ZXN0
KGZ1bmN0aW9uKCkgewotICB0ZXN0X3Byb3AoJ2NoaWxkMScsICd3aWR0aCcsICcxMDBweCcpOwot
ICB0ZXN0X3Byb3AoJ2NoaWxkMScsICctLWEnLCAnMTAwcHgnKTsKLSAgdGVzdF9wcm9wKCdjaGls
ZDEnLCAnLS1iJywgJycpOwotICB0ZXN0X3Byb3AoJ3BhcmVudDEnLCAnLS1hJywgJzIwMHB4Jyk7
Ci0gIHRlc3RfcHJvcCgncGFyZW50MScsICctLWInLCAnJyk7Ci19LCAiSlMgQXR0cmlidXRlcyBh
cmUgdmFsaWQgZm9yIGVsZW1lbnQgMSIpOwotdGVzdChmdW5jdGlvbigpIHsKLSAgdGVzdF9wcm9w
KCdjaGlsZDInLCAnd2lkdGgnLCAnMTYwcHgnKTsKLSAgdGVzdF9wcm9wKCdjaGlsZDInLCAnLS1h
JywgJzE2MHB4Jyk7Ci0gIHRlc3RfcHJvcCgnY2hpbGQyJywgJy0tYicsICcnKTsKLSAgdGVzdF9w
cm9wKCdjaGlsZDInLCAnZm9udC1zaXplJywgJzE2cHgnKTsKLSAgdGVzdF9wcm9wKCdwYXJlbnQy
JywgJy0tYScsICcxNjBweCcpOwotICB0ZXN0X3Byb3AoJ3BhcmVudDInLCAnLS1iJywgJycpOwot
ICB0ZXN0X3Byb3AoJ3BhcmVudDInLCAnZm9udC1zaXplJywgJzE2cHgnKTsKLX0sICJKUyBBdHRy
aWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCAyIik7Ci10ZXN0KGZ1bmN0aW9uKCkgewotICB0
ZXN0X3Byb3AoJ2NoaWxkMycsICd3aWR0aCcsICcxMDBweCcpOwotICB0ZXN0X3Byb3AoJ2NoaWxk
MycsICctLWEnLCAnMjAwcHgnKTsKLSAgdGVzdF9wcm9wKCdjaGlsZDMnLCAnLS1iJywgJzEwZW0n
KTsKLSAgdGVzdF9wcm9wKCdjaGlsZDMnLCAnZm9udC1zaXplJywgJzEwcHgnKTsKLSAgdGVzdF9w
cm9wKCdwYXJlbnQzJywgJy0tYScsICcyMDBweCcpOwotICB0ZXN0X3Byb3AoJ3BhcmVudDMnLCAn
LS1iJywgJzEwZW0nKTsKLSAgdGVzdF9wcm9wKCdwYXJlbnQzJywgJ2ZvbnQtc2l6ZScsICcxMHB4
Jyk7Ci19LCAiSlMgQXR0cmlidXRlcyBhcmUgdmFsaWQgZm9yIGVsZW1lbnQgMyIpOwotdGVzdChm
dW5jdGlvbigpIHsKLSAgdGVzdF9wcm9wKCdjaGlsZDQnLCAnd2lkdGgnLCAnMTAwcHgnKTsKLSAg
dGVzdF9wcm9wKCdjaGlsZDQnLCAnLS1hJywgJzEwMHB4Jyk7Ci0gIHRlc3RfcHJvcCgnY2hpbGQ0
JywgJy0tYicsICcxMGVtJyk7Ci0gIHRlc3RfcHJvcCgnY2hpbGQ0JywgJ2ZvbnQtc2l6ZScsICcx
MHB4Jyk7Ci0gIHRlc3RfcHJvcCgncGFyZW50NCcsICctLWEnLCAnMjAwcHgnKTsKLSAgdGVzdF9w
cm9wKCdwYXJlbnQ0JywgJy0tYicsICcxMGVtJyk7Ci0gIHRlc3RfcHJvcCgncGFyZW50NCcsICdm
b250LXNpemUnLCAnMTBweCcpOwotfSwgIkpTIEF0dHJpYnV0ZXMgYXJlIHZhbGlkIGZvciBlbGVt
ZW50IDQiKTsKLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIHRlc3RfcHJvcCgnY2hpbGQ1JywgJ3dpZHRo
JywgJzI1MHB4Jyk7Ci0gIHRlc3RfcHJvcCgnY2hpbGQ1JywgJy0tYycsICc1ZW0nKTsKLSAgdGVz
dF9wcm9wKCdjaGlsZDUnLCAnLS1iJywgJzVlbScpOwotICB0ZXN0X3Byb3AoJ2NoaWxkNScsICdm
b250LXNpemUnLCAnNTBweCcpOwotICB0ZXN0X3Byb3AoJ3BhcmVudDUnLCAnLS1hJywgJzIwMHB4
Jyk7Ci0gIHRlc3RfcHJvcCgncGFyZW50NScsICctLWInLCAnNWVtJyk7Ci0gIHRlc3RfcHJvcCgn
cGFyZW50NScsICdmb250LXNpemUnLCAnMTBweCcpOwotfSwgIkpTIEF0dHJpYnV0ZXMgYXJlIHZh
bGlkIGZvciBlbGVtZW50IDUiKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTY4MTYyNjUyOWZiZjEwYjFjNTBmZjAwYzM3MTExYTkw
ZWM2YzFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvaW5saW5lLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLXRlc3QKLQotCi1QQVNTIENTU09NIHNldHRl
cnMgZnVuY3Rpb24gYXMgZXhwZWN0ZWQgZm9yIHVucmVnaXN0ZXJlZCBwcm9wZXJ0aWVzIAotUEFT
UyBDU1MucmVnaXN0ZXJQcm9wZXJ0eSAKLVBBU1MgRm9ybWVybHkgdmFsaWQgdmFsdWVzIGFyZSBz
dGlsbCByZWFkYWJsZSBmcm9tIGlubGluZSBzdHlsZXMgYnV0IGFyZSBjb21wdXRlZCBhcyB0aGUg
dW5zZXQgdmFsdWUgCi1QQVNTIFZhbHVlcyBub3QgbWF0Y2hpbmcgdGhlIHJlZ2lzdGVyZWQgdHlw
ZSBjYW4ndCBiZSBzZXQgCi1QQVNTIFZhbHVlcyBjYW4gYmUgcmVtb3ZlZCBmcm9tIGlubGluZSBz
dHlsZXMgCi1QQVNTIFN0eWxlc2hlZXRzIGNhbiBiZSBtb2RpZmllZCBieSBDU1NPTSAKLVBBU1Mg
VmFsaWQgdmFsdWVzIGNhbiBiZSBzZXQgb24gaW5saW5lIHN0eWxlcyAKLVBBU1MgVmFyIHZhbHVl
cyBhcmUgYWNjZXB0ZWQgCi1QQVNTIFZhciB2YWx1ZXMgYXJlIGFjY2VwdGVkIHdpdGhvdXQgdmFs
aWRhdGlvbiAKLVBBU1MgVmFyIHZhbHVlcyBhcmUgYWNjZXB0ZWQgd2l0aG91dCB2YWxpZGF0aW9u
LCBldmVuIHdoZW4gaXQgaXMgb2J2aW91cyB0aGV5IHdpbGwgbm90IHBhcnNlIAotUEFTUyBWYXIg
dmFsdWVzIGFyZSBhY2NlcHRlZCB3aXRob3V0IHZhbGlkYXRpb24sIGV2ZW4gd2hlbiBpdCBpcyBv
YnZpb3VzIHRoZXkgd2lsbCBub3QgcGFyc2UgKHR5cGVkKSAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUuaHRtbCBiL0xheW91dFRlc3Rz
L2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvaW5saW5lLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDUxYmE3ZmViYzA2Mzk0NDY1YmNjZmVkODRjZWE5ZmUyMzE1NGViMDQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
Y3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDEyMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4
cGVyaW1lbnRhbDpDU1NDdXN0b21Qcm9wZXJ0aWVzQW5kVmFsdWVzRW5hYmxlZD10cnVlIF0gLS0+
Ci08IS0tIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMvKy8w
MWNlNDMxNDA5ZTNhMDE5ODU4Njc3NjI2YTk4M2M1NTE2OGRhNmRjL3RoaXJkX3BhcnR5L1dlYktp
dC9MYXlvdXRUZXN0cy9jdXN0b20tcHJvcGVydGllcy9yZWdpc3Rlci1wcm9wZXJ0eS5odG1sIC0t
PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
LQotPHN0eWxlPgotICAjdGVzdDEgewotICAgIC0tYTogMTBlbTsKLSAgICAtLWI6IDEwZW07Ci0g
IH0KLTwvc3R5bGU+Ci08ZGl2PgotICA8ZGl2IGlkPXRlc3QxPjxwPnRlc3Q8L3A+PC9kaXY+Ci08
L2Rpdj4KLTxzY3JpcHQ+Ci0KLXZhciBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZSh0
ZXN0MSk7Ci12YXIgaW5saW5lU3R5bGUgPSB0ZXN0MS5zdHlsZTsKLXZhciBzaGVldFN0eWxlID0g
ZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5bGU7Ci0KLXRlc3QoZnVuY3Rp
b24oKSB7Ci0gIC8vIE5vdGhpbmcgcmVnaXN0ZXJlZCB5ZXQsIHdoYXRldmVyIHlvdSBzcGVjaWZ5
IHdvcmtzCi0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCct
LWEnKSwgJyAxMGVtJyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0
eVZhbHVlKCctLWInKSwgJyAxMGVtJyk7Ci0KLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0t
YScsICdoZWxsbycpOwotICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1iJywgJ2JvbmpvdXIn
KTsKLQotICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScp
LCAnaGVsbG8nKTsKLSAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KCctLWInKSwgJ2JvbmpvdXInKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFBy
b3BlcnR5VmFsdWUoJy0tYScpLCAnaGVsbG8nKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0
eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnYm9uam91cicpOwotfSwgIkNTU09NIHNldHRl
cnMgZnVuY3Rpb24gYXMgZXhwZWN0ZWQgZm9yIHVucmVnaXN0ZXJlZCBwcm9wZXJ0aWVzIik7Ci0K
LXRlc3QoZnVuY3Rpb24oKSB7Ci0gIENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnLS1hJywg
c3ludGF4OiAnPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6ICcwcHgnLCBpbmhlcml0czogZmFsc2V9
KTsKLSAgQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICctLXJlZ2lzdGVyZWQnLCBzeW50YXg6
ICc8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTogJzBweCcsIGluaGVyaXRzOiBmYWxzZX0pOwotfSwg
IkNTUy5yZWdpc3RlclByb3BlcnR5Iik7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIGFzc2VydF9l
cXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdoZWxsbycpOwotICBh
c3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnYm9uam91
cicpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1h
JyksICcwcHgnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFs
dWUoJy0tYicpLCAnYm9uam91cicpOwotfSwgIkZvcm1lcmx5IHZhbGlkIHZhbHVlcyBhcmUgc3Rp
bGwgcmVhZGFibGUgZnJvbSBpbmxpbmUgc3R5bGVzIGJ1dCBhcmUgY29tcHV0ZWQgYXMgdGhlIHVu
c2V0IHZhbHVlIik7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIGlubGluZVN0eWxlLnNldFByb3Bl
cnR5KCctLWEnLCAnaGknKTsKLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYicsICdoaScp
OwotICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAn
aGVsbG8nKTsKLSAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCct
LWInKSwgJ2hpJyk7Ci19LCAiVmFsdWVzIG5vdCBtYXRjaGluZyB0aGUgcmVnaXN0ZXJlZCB0eXBl
IGNhbid0IGJlIHNldCIpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICBpbmxpbmVTdHlsZS5yZW1v
dmVQcm9wZXJ0eSgnLS1hJyk7Ci0gIGlubGluZVN0eWxlLnNldFByb3BlcnR5KCctLWInLCAnJyk7
Ci0gIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICcn
KTsKLSAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWInKSwg
JycpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1h
JyksICcxNjBweCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZSgnLS1iJyksICcgMTBlbScpOwotfSwgIlZhbHVlcyBjYW4gYmUgcmVtb3ZlZCBmcm9tIGlu
bGluZSBzdHlsZXMiKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgc2hlZXRTdHlsZS5zZXRQcm9w
ZXJ0eSgnLS1hJywgJ2JhbmFuYScpOyAvLyBJbnZhbGlkLCBubyBjaGFuZ2UKLSAgYXNzZXJ0X2Vx
dWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnMTYwcHgnKTsKLSAg
c2hlZXRTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJzIwcHgnKTsKLSAgYXNzZXJ0X2VxdWFscyhj
b21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnMjBweCcpOwotICBzaGVldFN0
eWxlLnNldFByb3BlcnR5KCctLWEnLCAnaW5pdGlhbCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1
dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICcwcHgnKTsKLX0sICJTdHlsZXNoZWV0
cyBjYW4gYmUgbW9kaWZpZWQgYnkgQ1NTT00iKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgaW5s
aW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYScsICczMGVtJyk7Ci0gIGlubGluZVN0eWxlLnNldFBy
b3BlcnR5KCctLWInLCAnMjBlbScpOwotICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFBy
b3BlcnR5VmFsdWUoJy0tYScpLCAnMzBlbScpOwotICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxl
LmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnMjBlbScpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1
dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICc0ODBweCcpOwotICBhc3NlcnRfZXF1
YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICcyMGVtJyk7Ci0gIGlu
bGluZVN0eWxlLnNldFByb3BlcnR5KCctLWEnLCAnaW5oZXJpdCcpOwotICBhc3NlcnRfZXF1YWxz
KGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnaW5oZXJpdCcpOwotICBhc3Nl
cnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICcwcHgnKTsK
LX0sICJWYWxpZCB2YWx1ZXMgY2FuIGJlIHNldCBvbiBpbmxpbmUgc3R5bGVzIik7Ci0KLXRlc3Qo
ZnVuY3Rpb24oKSB7Ci0gIGlubGluZVN0eWxlLnNldFByb3BlcnR5KCctLWInLCAnIDIwcHgnKTsK
LSAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYScsICdjYWxjKHZhcigtLWIpICsgMTBweCkn
KTsKLSAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWInKSwg
JyAyMHB4Jyk7Ci0gIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgn
LS1hJyksICdjYWxjKHZhcigtLWIpICsgMTBweCknKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRl
ZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnIDIwcHgnKTsKLSAgYXNzZXJ0X2VxdWFs
cyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnMzBweCcpOwotfSwgIlZh
ciB2YWx1ZXMgYXJlIGFjY2VwdGVkIik7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIGlubGluZVN0
eWxlLnNldFByb3BlcnR5KCctLWInLCAnaGVsbG8nKTsKLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVy
dHkoJy0tYScsICdjYWxjKHZhcigtLWIpICsgMTVweCknKTsKLSAgYXNzZXJ0X2VxdWFscyhpbmxp
bmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWInKSwgJ2hlbGxvJyk7Ci0gIGFzc2VydF9lcXVh
bHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdjYWxjKHZhcigtLWIpICsg
MTVweCknKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUo
Jy0tYicpLCAnaGVsbG8nKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3Bl
cnR5VmFsdWUoJy0tYScpLCAnMHB4Jyk7Ci19LCAiVmFyIHZhbHVlcyBhcmUgYWNjZXB0ZWQgd2l0
aG91dCB2YWxpZGF0aW9uIik7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIGlubGluZVN0eWxlLnNl
dFByb3BlcnR5KCctLWInLCAnaGVsbG8nKTsKLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0t
YScsICdjYWxjKHZhcigtLWIpIDE1cHgpJyk7Ci0gIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUu
Z2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICdoZWxsbycpOwotICBhc3NlcnRfZXF1YWxzKGlubGlu
ZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnY2FsYyh2YXIoLS1iKSAxNXB4KScpOwot
ICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICdo
ZWxsbycpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgn
LS1hJyksICcwcHgnKTsKLX0sICJWYXIgdmFsdWVzIGFyZSBhY2NlcHRlZCB3aXRob3V0IHZhbGlk
YXRpb24sIGV2ZW4gd2hlbiBpdCBpcyBvYnZpb3VzIHRoZXkgd2lsbCBub3QgcGFyc2UiKTsKLQot
dGVzdChmdW5jdGlvbigpIHsKLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYicsICdoZWxs
bycpOwotICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJ2NhbGModmFyKC0tcmVnaXN0
ZXJlZCkgMTVweCknKTsKLSAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZh
bHVlKCctLWInKSwgJ2hlbGxvJyk7Ci0gIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJv
cGVydHlWYWx1ZSgnLS1hJyksICdjYWxjKHZhcigtLXJlZ2lzdGVyZWQpIDE1cHgpJyk7Ci0gIGFz
c2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWInKSwgJ2hlbGxv
Jyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEn
KSwgJzBweCcpOwotfSwgIlZhciB2YWx1ZXMgYXJlIGFjY2VwdGVkIHdpdGhvdXQgdmFsaWRhdGlv
biwgZXZlbiB3aGVuIGl0IGlzIG9idmlvdXMgdGhleSB3aWxsIG5vdCBwYXJzZSAodHlwZWQpIik7
Ci0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3Rlci1wcm9w
ZXJ0eS1zeW50YXgtcGFyc2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lz
dGVyLXByb3BlcnR5LXN5bnRheC1wYXJzaW5nLWV4cGVjdGVkLnR4dAppbmRleCAyZWE3OGUyOTgw
NjA2OGU1YjNjM2Y2ZWM3OWY2YmY5YThhNmIxOGNkLi5lOWUyZmU3MzhhYjNhMmRiZGFmZDkxMGI2
NDY2MWQyYWRkODNlMDNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyLXBy
b3BlcnR5LXN5bnRheC1wYXJzaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBp
L3JlZ2lzdGVyLXByb3BlcnR5LXN5bnRheC1wYXJzaW5nLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsx
LDUgQEAKIAotUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J2EnIGlzIHZhbGlkIAorRkFJ
TCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J2EnIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFs
IHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgogRkFJTCBzeW50YXg6
JyAqICcsIGluaXRpYWxWYWx1ZTonYicgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUg
ZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCiBQQVNTIHN5bnRheDonPGxlbmd0
aD4nLCBpbml0aWFsVmFsdWU6JzJweCcgaXMgdmFsaWQgCiBGQUlMIHN5bnRheDonIDxudW1iZXI+
JywgaW5pdGlhbFZhbHVlOic1JyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2Vz
IG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KQEAgLTksMTEgKzksMTEgQEAgRkFJTCBz
eW50YXg6JyA8bGVuZ3RoPisgfCA8cGVyY2VudGFnZT4nLCBpbml0aWFsVmFsdWU6JzJweCA4cHgn
IGlzIHZhbGlkIFRoZSBnaXYKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPnw8cGVyY2VudGFnZT58PGxl
bmd0aC1wZXJjZW50YWdlPicsIGluaXRpYWxWYWx1ZTonMnB4JyBpcyB2YWxpZCAKIEZBSUwgc3lu
dGF4Oic8Y29sb3I+IHwgPGltYWdlPiB8IDx1cmw+IHwgPGludGVnZXI+IHwgPGFuZ2xlPicsIGlu
aXRpYWxWYWx1ZToncmVkJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5v
dCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIEZBSUwgc3ludGF4Oic8dGltZT4gfCA8cmVz
b2x1dGlvbj4gfCA8dHJhbnNmb3JtLWxpc3Q+IHwgPGN1c3RvbS1pZGVudD4nLCBpbml0aWFsVmFs
dWU6J3JlZCcgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2Ug
Zm9yIHRoZSBnaXZlbiBzeW50YXguCi1QQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonOj4g
aGVsbG8nIGlzIHZhbGlkIAotUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6JyhbIGJyYWNr
ZXRzIF0pIHsgeWF5ICg/Pyl9JyBpcyB2YWxpZCAKLVBBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZh
bHVlOid5ZXAgJ3RoaXMgaXMgdmFsaWQgdG9vJycgaXMgdmFsaWQgCi1QQVNTIHN5bnRheDonKics
IGluaXRpYWxWYWx1ZTondW5tYXRjaGVkIG9wZW5pbmcgYnJhY2tldCBpcyB2YWxpZCA6KCcgaXMg
dmFsaWQgCi1QQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonIicgaXMgdmFsaWQgCitGQUlM
IHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonOj4gaGVsbG8nIGlzIHZhbGlkIFRoZSBnaXZlbiBp
bml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgorRkFJTCBz
eW50YXg6JyonLCBpbml0aWFsVmFsdWU6JyhbIGJyYWNrZXRzIF0pIHsgeWF5ICg/Pyl9JyBpcyB2
YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVu
IHN5bnRheC4KK0ZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOid5ZXAgJ3RoaXMgaXMgdmFs
aWQgdG9vJycgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2Ug
Zm9yIHRoZSBnaXZlbiBzeW50YXguCitGQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTondW5t
YXRjaGVkIG9wZW5pbmcgYnJhY2tldCBpcyB2YWxpZCA6KCcgaXMgdmFsaWQgVGhlIGdpdmVuIGlu
aXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCitGQUlMIHN5
bnRheDonKicsIGluaXRpYWxWYWx1ZTonIicgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFs
dWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCiBQQVNTIHN5bnRheDonPGxl
bmd0aD4nLCBpbml0aWFsVmFsdWU6JzAnIGlzIHZhbGlkIAogUEFTUyBzeW50YXg6JzxsZW5ndGg+
JywgaW5pdGlhbFZhbHVlOicxMHB4IC8qOikqLycgaXMgdmFsaWQgCiBQQVNTIHN5bnRheDonPGxl
bmd0aD4nLCBpbml0aWFsVmFsdWU6JyBjYWxjKC0ycHgpJyBpcyB2YWxpZCAKQEAgLTYzLDcgKzYz
LDcgQEAgYmFuYW5hXHIKIEZBSUwgc3ludGF4OidiYQwKIHwJbmFccnxueWEnLCBpbml0aWFsVmFs
dWU6J255YScgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2Ug
Zm9yIHRoZSBnaXZlbiBzeW50YXguCiBGQUlMIHN5bnRheDonbnVsbCcsIGluaXRpYWxWYWx1ZTon
bnVsbCcgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9y
IHRoZSBnaXZlbiBzeW50YXguCi1QQVNTIHN5bnRheDondW5kZWZpbmVkJywgaW5pdGlhbFZhbHVl
Oid1bmRlZmluZWQnIGlzIHZhbGlkIAorRkFJTCBzeW50YXg6J3VuZGVmaW5lZCcsIGluaXRpYWxW
YWx1ZTondW5kZWZpbmVkJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5v
dCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIEZBSUwgc3ludGF4OidhcnJheScsIGluaXRp
YWxWYWx1ZTonYXJyYXknIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90
IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgogUEFTUyBzeW50YXg6J2JhbmFuYSxueWEnLCBp
bml0aWFsVmFsdWU6J2JhbmFuYScgaXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4OidiYW5hblw2MScs
IGluaXRpYWxWYWx1ZTonYmFuYW5hJyBpcyBpbnZhbGlkIApAQCAtODUsMzYgKzg1LDM2IEBAIFBB
U1Mgc3ludGF4Oid1bnNldCcsIGluaXRpYWxWYWx1ZTondW5zZXQnIGlzIGludmFsaWQKIEZBSUwg
c3ludGF4Oic8bGVuZ3RoPnxpbml0aWFsJywgaW5pdGlhbFZhbHVlOicxMHB4JyBpcyBpbnZhbGlk
IGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFt
ZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhl
cml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwogRkFJTCBzeW50YXg6JzxsZW5ndGg+fElOSEVS
SVQnLCBpbml0aWFsVmFsdWU6JzEwcHgnIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rp
b24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRh
eCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90
IHRocm93CiBGQUlMIHN5bnRheDonPHBlcmNlbnRhZ2U+fHVuc0V0JywgaW5pdGlhbFZhbHVlOicy
JScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVy
UHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRp
YWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKLUZBSUwgc3ludGF4Oicq
JywgaW5pdGlhbFZhbHVlOidpbml0aWFsJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0
aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50
YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5v
dCB0aHJvdwotRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J2luaGVyaXQnIGlzIGludmFs
aWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtu
YW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGlu
aGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93Ci1GQUlMIHN5bnRheDonKicsIGluaXRpYWxW
YWx1ZTondW5zZXQnIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENT
Uy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZh
bHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93Ci1GQUlM
IHN5bnRheDonKicsIGluaXRpYWxWYWx1ZToncmV2ZXJ0JyBpcyBpbnZhbGlkIGFzc2VydF90aHJv
d3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3lu
dGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9
KSIgZGlkIG5vdCB0aHJvdworUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J2luaXRpYWwn
IGlzIGludmFsaWQgCitQQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonaW5oZXJpdCcgaXMg
aW52YWxpZCAKK1BBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOid1bnNldCcgaXMgaW52YWxp
ZCAKK1BBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOidyZXZlcnQnIGlzIGludmFsaWQgCiBQ
QVNTIHN5bnRheDonPGN1c3RvbS1pZGVudD4nLCBpbml0aWFsVmFsdWU6J2luaXRpYWwnIGlzIGlu
dmFsaWQgCiBQQVNTIHN5bnRheDonPGN1c3RvbS1pZGVudD4rJywgaW5pdGlhbFZhbHVlOidmb28g
aW5oZXJpdCBiYXInIGlzIGludmFsaWQgCi1GQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTon
KScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVy
UHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRp
YWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKLUZBSUwgc3ludGF4Oicq
JywgaW5pdGlhbFZhbHVlOicoWyldJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9u
ICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgs
IGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0
aHJvdwotRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3doZWUhJyBpcyBpbnZhbGlkIGFz
c2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTog
bmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0
czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwotRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6
JyIKLScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lz
dGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGlu
aXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKLUZBSUwgc3ludGF4
OicqJywgaW5pdGlhbFZhbHVlOid1cmwobW9vICcnKScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dz
OiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRh
eDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSki
IGRpZCBub3QgdGhyb3cKLUZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOidzZW1pO2NvbG9u
JyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQ
cm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlh
bFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwotRkFJTCBzeW50YXg6Jyon
LCBpbml0aWFsVmFsdWU6J3ZhcihpbnZhbGlkIHZhciByZWYpJyBpcyBpbnZhbGlkIGFzc2VydF90
aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwg
c3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFs
c2V9KSIgZGlkIG5vdCB0aHJvdwotRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3Zhcigt
LWZvbyknIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdp
c3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBp
bml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CitQQVNTIHN5bnRh
eDonKicsIGluaXRpYWxWYWx1ZTonKScgaXMgaW52YWxpZCAKK1BBU1Mgc3ludGF4OicqJywgaW5p
dGlhbFZhbHVlOicoWyldJyBpcyBpbnZhbGlkIAorUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFs
dWU6J3doZWUhJyBpcyBpbnZhbGlkIAorUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6JyIK
KycgaXMgaW52YWxpZCAKK1BBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOid1cmwobW9vICcn
KScgaXMgaW52YWxpZCAKK1BBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOidzZW1pO2NvbG9u
JyBpcyBpbnZhbGlkIAorUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3ZhcihpbnZhbGlk
IHZhciByZWYpJyBpcyBpbnZhbGlkIAorUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3Zh
cigtLWZvbyknIGlzIGludmFsaWQgCiBQQVNTIHN5bnRheDonYmFuYW5hJywgaW5pdGlhbFZhbHVl
OidiQW5BbkEnIGlzIGludmFsaWQgCiBQQVNTIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFs
dWU6J3ZhcigtLW1vbyknIGlzIGludmFsaWQgCiBQQVNTIHN5bnRheDonPGxlbmd0aD4nLCBpbml0
aWFsVmFsdWU6JzEwJyBpcyBpbnZhbGlkIAogRkFJTCBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlh
bFZhbHVlOicxMCUnIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENT
Uy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZh
bHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CiBGQUlM
IHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6J2NhbGMoNXB4ICsgMTAlKScgaXMgaW52
YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHko
e25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwg
aW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPics
IGluaXRpYWxWYWx1ZTonY2FsYyg1cHggKiAzcHggLyA2cHgpJyBpcyBpbnZhbGlkIAotRkFJTCBz
eW50YXg6JzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOicxMGVtJyBpcyBpbnZhbGlkIGFzc2VydF90
aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwg
c3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFs
c2V9KSIgZGlkIG5vdCB0aHJvdworUEFTUyBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlhbFZhbHVl
OicxMGVtJyBpcyBpbnZhbGlkIAogRkFJTCBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlhbFZhbHVl
OicxMHZtaW4nIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5y
ZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVl
OiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93Ci1GQUlMIHN5
bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6J2NhbGMoNHB4ICsgM2VtKScgaXMgaW52YWxp
ZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25h
bWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5o
ZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKLUZBSUwgc3ludGF4Oic8bGVuZ3RoPicsIGlu
aXRpYWxWYWx1ZTonY2FsYyg0cHggKyBjYWxjKDggKiAyZW0pKScgaXMgaW52YWxpZCBhc3NlcnRf
dGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUs
IHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZh
bHNlfSkiIGRpZCBub3QgdGhyb3cKLUZBSUwgc3ludGF4Oic8bGVuZ3RoPisnLCBpbml0aWFsVmFs
dWU6J2NhbGMoMmV4ICsgMTZweCknIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24g
IigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwg
aW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRo
cm93CitQQVNTIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6J2NhbGMoNHB4ICsgM2Vt
KScgaXMgaW52YWxpZCAKK1BBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTonY2Fs
Yyg0cHggKyBjYWxjKDggKiAyZW0pKScgaXMgaW52YWxpZCAKK1BBU1Mgc3ludGF4Oic8bGVuZ3Ro
PisnLCBpbml0aWFsVmFsdWU6J2NhbGMoMmV4ICsgMTZweCknIGlzIGludmFsaWQgCiBQQVNTIHN5
bnRheDonPGxlbmd0aD4rJywgaW5pdGlhbFZhbHVlOicxMHB4IGNhbGMoMjBweCArIDRyZW0pJyBp
cyBpbnZhbGlkIAogUEFTUyBzeW50YXg6JzxwZXJjZW50YWdlPiB8IDxsZW5ndGg+KycsIGluaXRp
YWxWYWx1ZTonY2FsYygxMDB2aCAtIDEwcHgpIDMwcHgnIGlzIGludmFsaWQgCiBQQVNTIHN5bnRh
eDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzEwcHg7JyBpcyBpbnZhbGlkIAotRkFJTCBzeW50
YXg6JzxsZW5ndGgtcGVyY2VudGFnZT4nLCBpbml0aWFsVmFsdWU6J2NhbGMoMnB4ICsgMTAlICsg
N2V4KScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lz
dGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGlu
aXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKK1BBU1Mgc3ludGF4
Oic8bGVuZ3RoLXBlcmNlbnRhZ2U+JywgaW5pdGlhbFZhbHVlOidjYWxjKDJweCArIDEwJSArIDdl
eCknIGlzIGludmFsaWQgCiBGQUlMIHN5bnRheDonPHBlcmNlbnRhZ2U+JywgaW5pdGlhbFZhbHVl
OicwJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0
ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5p
dGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwogUEFTUyBzeW50YXg6
JzxpbnRlZ2VyPicsIGluaXRpYWxWYWx1ZTonMS4wJyBpcyBpbnZhbGlkIAogUEFTUyBzeW50YXg6
JzxpbnRlZ2VyPicsIGluaXRpYWxWYWx1ZTonMWUwJyBpcyBpbnZhbGlkIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3Bl
cnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnRpZXMtaW5oZXJpdGFuY2UtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnRpZXMtaW5oZXJpdGFu
Y2UtZXhwZWN0ZWQudHh0CmluZGV4IDU2NTRlODJjNmE4MmE0YzJlMjljYjFmMzU2MDQxMjI1ZDIx
MWUyM2EuLmZjMjdiMGRmMjk5NWE3YjdmNGVhMGQ3NzVjMGQ3Yjc1MWYxZWQxMGIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1w
cm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWluaGVyaXRhbmNlLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydGllcy1p
bmhlcml0YW5jZS1leHBlY3RlZC50eHQKQEAgLTIsNiArMiw2IEBACiBQQVNTIFJlZ2lzdGVyZWQg
cHJvcGVydGllcyBhcmUgY29ycmVjdGx5IGluaGVyaXRlZCAob3Igbm90KSBkZXBlbmRpbmcgb24g
dGhlIGluaGVyaXRzIGZsYWcuIAogUEFTUyBFeHBsaWNpdGx5IGluaGVyaXRpbmcgZnJvbSBhIHBh
cmVudCB3aXRoIGFuIGludmFsaWQgdmFsdWUgcmVzdWx0cyBpbiBpbml0aWFsIHZhbHVlLiAKIFBB
U1MgRXhwbGljaXRseSBpbmhlcml0aW5nIGZyb20gYSBwYXJlbnQgd2l0aCBubyB2YWx1ZSByZXN1
bHRzIGluIGluaXRpYWwgdmFsdWUuIAotUEFTUyBSZWZlcmVuY2UgdG8gdW5kZWZpbmVkIHZhcmlh
YmxlIHJlc3VsdHMgaW4gaW5oZXJpdGVkIHZhbHVlIAotUEFTUyBSZWZlcmVuY2UgdG8gc3ludGF4
LWluY29tcGF0aWJsZSB2YXJpYWJsZSByZXN1bHRzIGluIGluaGVyaXRlZCB2YWx1ZSAKK0ZBSUwg
UmVmZXJlbmNlIHRvIHVuZGVmaW5lZCB2YXJpYWJsZSByZXN1bHRzIGluIGluaGVyaXRlZCB2YWx1
ZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiNDJweCIgYnV0IGdvdCAiMHB4IgorRkFJTCBSZWZl
cmVuY2UgdG8gc3ludGF4LWluY29tcGF0aWJsZSB2YXJpYWJsZSByZXN1bHRzIGluIGluaGVyaXRl
ZCB2YWx1ZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiNDJweCIgYnV0IGdvdCAiMHB4IgogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydHktY3Nzb20tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnR5LWNzc29tLWV4
cGVjdGVkLnR4dAppbmRleCBlZmNjNWMyZWNmOGVmNWE4ZTQyZjgyZGZjNjNlNGZiMTgyYTQ3OWVm
Li4wZDU1NjFmNDhlNTY3ZTM2Mjc5MjZhNDExYTc1ZTBlY2I0YjA2ODU1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVy
dGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydHktY3Nzb20tZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1w
cm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0eS1jc3NvbS1leHBlY3RlZC50
eHQKQEAgLTIsOCArMiw4IEBACiBQQVNTIENTU09NIHNldHRlcnMgZnVuY3Rpb24gYXMgZXhwZWN0
ZWQgZm9yIHVucmVnaXN0ZXJlZCBwcm9wZXJ0aWVzIAogRkFJTCBDU1MucmVnaXN0ZXJQcm9wZXJ0
eSBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5
bnRheC4KIEZBSUwgRm9ybWVybHkgdmFsaWQgdmFsdWVzIGFyZSBzdGlsbCByZWFkYWJsZSBmcm9t
IGlubGluZSBzdHlsZXMgYnV0IGFyZSBjb21wdXRlZCBhcyB0aGUgdW5zZXQgdmFsdWUgYXNzZXJ0
X2VxdWFsczogZXhwZWN0ZWQgImJsdWUiIGJ1dCBnb3QgImhlbGxvIgotRkFJTCBWYWx1ZXMgbm90
IG1hdGNoaW5nIHRoZSByZWdpc3RlcmVkIHR5cGUgY2FuJ3QgYmUgc2V0IGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkICJoZWxsbyIgYnV0IGdvdCAiMjAiCitGQUlMIFZhbHVlcyBub3QgbWF0Y2hpbmcg
dGhlIHJlZ2lzdGVyZWQgdHlwZSBjYW4ndCBiZSBzZXQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQg
IjUiIGJ1dCBnb3QgImhpIgogRkFJTCBWYWx1ZXMgY2FuIGJlIHJlbW92ZWQgZnJvbSBpbmxpbmUg
c3R5bGVzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJyZWQiIGJ1dCBnb3QgIiByZWQiCi1QQVNT
IFN0eWxlc2hlZXRzIGNhbiBiZSBtb2RpZmllZCBieSBDU1NPTSAKK0ZBSUwgU3R5bGVzaGVldHMg
Y2FuIGJlIG1vZGlmaWVkIGJ5IENTU09NIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxMHB4IiBi
dXQgZ290ICIwcHgiCiBGQUlMIFZhbGlkIHZhbHVlcyBjYW4gYmUgc2V0IG9uIGlubGluZSBzdHls
ZXMgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImJsdWUiIGJ1dCBnb3QgIiBibHVlIgogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3R5cGVkb20udGVudGF0aXZlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9w
ZXJ0aWVzLXZhbHVlcy1hcGkvdHlwZWRvbS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CmluZGV4IDY2
ZmJiY2E5OTA5Y2I5ZmM1NDk2OGMyOGUyMjZmOGVlYzg0MTQ0M2MuLjFlNGQyNzBhZTY4ZjFlYjE3
NjZlM2FjNzJkMzViZDUwMTI2MGVmNzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvdHlw
ZWRvbS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvdHlwZWRv
bS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CkBAIC0yLDcgKzIsNyBAQCBDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMzQwOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogQ1NTVW5wYXJz
ZWRWYWx1ZQogCiBIYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFJlZmVyZW5jZUVycm9y
OiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBDU1NVbnBhcnNlZFZhbHVlCiAKLUZBSUwgQ29tcHV0ZWQg
KiBpcyByZWlmaWVkIGFzIENTU1VucGFyc2VkVmFsdWUgdGFyZ2V0LmNvbXB1dGVkU3R5bGVNYXAg
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAndGFyZ2V0LmNvbXB1dGVkU3R5bGVNYXAoKScsICd0YXJn
ZXQuY29tcHV0ZWRTdHlsZU1hcCcgaXMgdW5kZWZpbmVkKQorRkFJTCBDb21wdXRlZCAqIGlzIHJl
aWZpZWQgYXMgQ1NTVW5wYXJzZWRWYWx1ZSBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5v
dCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIEZBSUwgQ29tcHV0ZWQgPGFuZ2xlPiBpcyBy
ZWlmaWVkIGFzIENTU1VuaXRWYWx1ZSBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBw
YXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIEZBSUwgQ29tcHV0ZWQgPGNvbG9yPiBpcyByZWlm
aWVkIGFzIENTU1N0eWxlVmFsdWUgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFy
c2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCiBGQUlMIENvbXB1dGVkIDxjdXN0b20taWRlbnQ+IGlz
IHJlaWZpZWQgYXMgQ1NTS2V5d29yZFZhbHVlIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMg
bm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVz
LWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1jeWNsZXMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGll
cy1jeWNsZXMtZXhwZWN0ZWQudHh0CmluZGV4IDkzMTQ1MTIxYTFjMzQ2YTJjODI2MDFmYjhkM2Rm
MTU5YTAyOWZjMjYuLjJiZWRmNjg5MjcyZTUyMDYzMThiMzBmYWZhZDU0ODEyZWRlZGFhOTEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvdmFyLXJlZmVyZW5jZS1yZWdpc3RlcmVkLXByb3Bl
cnRpZXMtY3ljbGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1yZWZl
cmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWN5Y2xlcy1leHBlY3RlZC50eHQKQEAgLTEsNiAr
MSw2IEBACiAKLVBBU1MgQSB2YXIoKSBjeWNsZSBiZXR3ZWVuIHR3byByZWdpc3RlcmVkIHByb3Bl
cnRpZXMgaXMgaGFuZGxlZCBjb3JyZWN0bHkuIAotUEFTUyBBIHZhcigpIGN5Y2xlIGJldHdlZW4g
YSByZWdpc3RlcmVkIHByb3BlcnRpZXMgYW5kIGFuIHVucmVnaXN0ZXJlZCBwcm9wZXJ0eSBpcyBo
YW5kbGVkIGNvcnJlY3RseS4gCitGQUlMIEEgdmFyKCkgY3ljbGUgYmV0d2VlbiB0d28gcmVnaXN0
ZXJlZCBwcm9wZXJ0aWVzIGlzIGhhbmRsZWQgY29ycmVjdGx5LiBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAiMnB4IiBidXQgZ290ICIzcHgiCitGQUlMIEEgdmFyKCkgY3ljbGUgYmV0d2VlbiBhIHJl
Z2lzdGVyZWQgcHJvcGVydGllcyBhbmQgYW4gdW5yZWdpc3RlcmVkIHByb3BlcnR5IGlzIGhhbmRs
ZWQgY29ycmVjdGx5LiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiMXB4IiBidXQgZ290ICIycHgi
CiBQQVNTIEEgdmFyKCkgY3ljbGUgYmV0d2VlbiBhIHR3byB1bnJlZ2lzdGVyZWQgcHJvcGVydGll
cyBpcyBoYW5kbGVkIGNvcnJlY3RseS4gCi1QQVNTIEEgdmFyKCkgY3ljbGUgYmV0d2VlbiBhIHN5
bnRheDonKicgcHJvcGVydHkgYW5kIGFuIHVucmVnaXN0ZXJlZCBwcm9wZXJ0eSBpcyBoYW5kbGVk
IGNvcnJlY3RseS4gCitGQUlMIEEgdmFyKCkgY3ljbGUgYmV0d2VlbiBhIHN5bnRheDonKicgcHJv
cGVydHkgYW5kIGFuIHVucmVnaXN0ZXJlZCBwcm9wZXJ0eSBpcyBoYW5kbGVkIGNvcnJlY3RseS4g
VGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50
YXguCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvdmFyLXJlZmVyZW5jZS1yZWdpc3Rl
cmVkLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJl
bmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1leHBlY3RlZC50eHQKaW5kZXggMzllNjc1ZDQzNGFl
MWE5MGU1MmRhOWVhYjZmNDAyNjY0ZDljMDM3My4uZGI1MzVlNGM4ODg2MTI2NzBkMGQyZDM3NGM1
OGI1ZjRlMDRkMTk4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJlbmNl
LXJlZ2lzdGVyZWQtcHJvcGVydGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFw
aS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAgLTEs
NSArMSw1IEBACiAKLUZBSUwgdmFyKCkgcmVmZXJlbmNlcyB3b3JrIHdpdGggcmVnaXN0ZXJlZCBw
cm9wZXJ0aWVzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIgIDEwcHgiIGJ1dCBnb3QgIiAxMHB4
IgorRkFJTCB2YXIoKSByZWZlcmVuY2VzIHdvcmsgd2l0aCByZWdpc3RlcmVkIHByb3BlcnRpZXMg
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjE1cHgiIGJ1dCBnb3QgIjEwJSIKIEZBSUwgUmVmZXJl
bmNlcyB0byByZWdpc3RlcmVkIHZhcigpLXByb3BlcnRpZXMgd29yayBpbiByZWdpc3RlcmVkIGxp
c3RzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxcHgsIDEwcHgsIDJweCIgYnV0IGdvdCAiMHB4
IgogRkFJTCBSZWZlcmVuY2VzIHRvIG1peGVkIHJlZ2lzdGVyZWQgYW5kIHVucmVnaXN0ZXJlZCB2
YXIoKS1wcm9wZXJ0aWVzIHdvcmsgaW4gcmVnaXN0ZXJlZCBsaXN0cyBhc3NlcnRfZXF1YWxzOiBl
eHBlY3RlZCAiMXB4LCAyMHB4LCAxMHB4LCAycHgiIGJ1dCBnb3QgIjBweCIKIEZBSUwgUmVnaXN0
ZXJlZCBsaXN0cyBtYXkgYmUgY29uY2F0ZW5hdGVkIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIx
cHgsIDEwcHgsIDJweCwgMXB4LCAyMHB4LCAxMHB4LCAycHgiIGJ1dCBnb3QgIjBweCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353219</attachid>
            <date>2018-10-26 20:52:06 -0700</date>
            <delta_ts>2018-10-29 14:08:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190919-20181026205205.patch</filename>
            <type>text/plain</type>
            <size>129089</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4NmIwMmU1NmRmOTIz
MGM2MTUyMTYzZWI3MmZkYzA0OTBmMzgxNS4uMTM2YmFmMWJlODI2ZmFjMTdkNDUyZjQyMTNjMTVj
OWI4YmU0ZWI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDE4LTEwLTI1ICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZlcnQg
cjIzNzM0NyByZWdpc3RlcmVkIGN1c3RvbSBwcm9wZXJ0aWVzLi4uIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAwMzkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDkxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXN0b21Qcm9w
ZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjdXN0b21DU1NUZXh0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1c3RvbVByb3BlcnR5VmFsdWU6OnRva2VucyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjaGVja1Zh
cmlhYmxlc0ZvckN5Y2xlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlOjpyZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0N1c3RvbVByb3BlcnR5VmFsdWU6OnNldFJlc29sdmVkVHlwZWRWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjplcXVhbHMgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGNzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmg6CisgICAgICAg
ICogY3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHk6OkNTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0
eSk6CisgICAgICAgICogY3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oOgorICAgICAg
ICAqIGNzcy9DU1NWYXJpYWJsZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFi
bGVEYXRhOjpjb25zdW1lQW5kVXBkYXRlVG9rZW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zh
cmlhYmxlRGF0YTo6Q1NTVmFyaWFibGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zhcmlh
YmxlRGF0YTo6Y2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVmFyaWFibGVEYXRhOjpjaGVja1ZhcmlhYmxlc0ZvckN5Y2xlc1dpdGhSYW5nZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6OnJlc29sdmVWYXJpYWJsZUZh
bGxiYWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2
ZVZhcmlhYmxlUmVmZXJlbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxl
RGF0YTo6cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NWYXJpYWJsZURhdGE6OnJlc29sdmVUb2tlblJhbmdlIGNvbnN0KToKKyAgICAgICAgKiBj
c3MvQ1NTVmFyaWFibGVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZVJlc29s
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6bmVlZHNWYXJpYWJsZVJl
c29sdXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRhOjpDU1NW
YXJpYWJsZURhdGEpOgorICAgICAgICAqIGNzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OmNoZWNrVmFy
aWFibGVzRm9yQ3ljbGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVWYXJpYWJs
ZUZhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVWYXJpYWJsZVJl
ZmVyZW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlVG9rZW5SYW5nZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlOjpy
ZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3Mv
Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFi
bGVSZWZlcmVuY2VWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxl
UmVmZXJlbmNlVmFsdWU6OnZhcmlhYmxlRGF0YVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OmVxdWFscyBjb25zdCk6CisgICAgICAgICog
Y3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6cmVnaXN0ZXJQcm9wZXJ0eSk6CisgICAgICAg
ICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KToKKyAgICAg
ICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEN1c3RvbVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUN1c3RvbVByb3BlcnR5KToKKyAgICAg
ICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVT
dHlsZVByb3BlcnRpZXM6OnNldEN1c3RvbVByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVQ
cm9wZXJ0aWVzLmg6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVz
b2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6cmVzb2x2ZWRWYXJpYWJsZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YXBwbHlEZWZlcnJlZFByb3BlcnRp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVz
OjpQcm9wZXJ0eTo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBw
bHlDYXNjYWRlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
YXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvU3R5
bGVSZXNvbHZlci5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5jZXMp
OgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmg6CisgICAgICAgICogY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBh
cnNlcjo6Q1NTUHJvcGVydHlQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQ
YXJzZXI6OnBhcnNlVmFsdWVTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBh
cnNlcjo6cGFyc2VTaW5nbGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBh
cnNlcjo6Y2FuUGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZh
bHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpjb2xs
ZWN0UGFyc2VkQ3VzdG9tUHJvcGVydHlWYWx1ZURlcGVuZGVuY2llcyk6IERlbGV0ZWQuCisgICAg
ICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oOgorICAgICAgICAqIGNzcy9wYXJz
ZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVQ
YXJzZXI6OnBhcnNlRGVjbGFyYXRpb25WYWx1ZSk6CisgICAgICAgICogZG9tL0NvbnN0YW50UHJv
cGVydHlNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc3RhbnRQcm9wZXJ0eU1hcDo6c2V0
VmFsdWVGb3JQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjp2YXJpYWJsZURhdGFGb3JQb3Np
dGl2ZVBpeGVsTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OnZhcmlhYmxlRGF0YUZvclBvc2l0
aXZlRHVyYXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hlY2tWYXJpYWJsZXNJbkN1c3RvbVBy
b3BlcnRpZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldE5vbkluaGVyaXRlZEN1c3Rv
bVByb3BlcnR5VmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbVBy
b3BlcnR5RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0
eURhdGE6OnNldEN1c3RvbVByb3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVD
dXN0b21Qcm9wZXJ0eURhdGE6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhKToKKwogMjAxOC0xMC0y
NiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzNzQ1OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggMDc0OWQ5YTRkNjgxMTU2Y2U2
Njk3MjlkOTFkODBiMzNiYWI2MThhNC4uYzc3NjQ4ZWUxZDgzNDlmYjM2YjEwNzE1NDVjMzgxZmE3
MzI3MDljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKQEAgLTI2MTIsMjMgKzI2MTIsMjEgQEAgUmVmUHRyPENTU1ZhbHVlPiBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYg
cHJvcGUKICAgICBhdXRvKiByZWdpc3RlcmVkID0gc3R5bGVkRWxlbWVudC0+ZG9jdW1lbnQoKS5n
ZXRDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQoKS5nZXQocHJvcGVydHlOYW1lKTsKICAg
ICBhdXRvKiB2YWx1ZSA9IHN0eWxlLT5nZXRDdXN0b21Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUpOwog
Ci0gICAgaWYgKHJlZ2lzdGVyZWQgJiYgIXZhbHVlKQotICAgICAgICByZXR1cm4gcmVnaXN0ZXJl
ZC0+aW5pdGlhbFZhbHVlQ29weSgpOworICAgIGlmIChyZWdpc3RlcmVkKSB7CisgICAgICAgIC8v
IFRPRE8gdGhpcyBzaG91bGQgYmUgZG9uZSBiYXNlZCBvbiB0aGUgc3ludGF4CisgICAgICAgIGlm
ICh2YWx1ZSAmJiB2YWx1ZS0+cmVzb2x2ZWRUeXBlZFZhbHVlKCkpCisgICAgICAgICAgICByZXR1
cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aCgqdmFsdWUtPnJlc29sdmVkVHlwZWRW
YWx1ZSgpLCAqc3R5bGUpOworCisgICAgICAgIGlmIChyZWdpc3RlcmVkLT5pbml0aWFsVmFsdWUo
KSAmJiByZWdpc3RlcmVkLT5pbml0aWFsVmFsdWUoKS0+cmVzb2x2ZWRUeXBlZFZhbHVlKCkpCisg
ICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aCgqcmVnaXN0
ZXJlZC0+aW5pdGlhbFZhbHVlKCktPnJlc29sdmVkVHlwZWRWYWx1ZSgpLCAqc3R5bGUpOwogCi0g
ICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogCi0gICAgYXV0
byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgUmVmPENTU1ZhcmlhYmxlUmVm
ZXJlbmNlVmFsdWU+JikgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuIFJlZlB0cjxDU1NWYWx1ZT4oKTsKLSAgICB9LCBbJl0oY29uc3QgQ1NTVmFsdWVJRCYp
IHsKKyAgICBpZiAodmFsdWUpCiAgICAgICAgIHJldHVybiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
OjpjcmVhdGUoKnZhbHVlKTsKLSAgICB9LCBbJl0oY29uc3QgUmVmPENTU1ZhcmlhYmxlRGF0YT4m
KSB7Ci0gICAgICAgIHJldHVybiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUoKnZhbHVl
KTsKLSAgICB9LCBbJl0oY29uc3QgTGVuZ3RoJiB2YWx1ZSkgewotICAgICAgICByZXR1cm4gem9v
bUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aCh2YWx1ZSwgKnN0eWxlKTsKLSAgICB9KTsKLSAg
ICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCB2YWx1ZS0+dmFsdWUoKSk7CisKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAogU3RyaW5nIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmN1c3RvbVBy
b3BlcnR5VGV4dChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcAppbmRleCBlNjk2NmZmOWJkYzE0NDI2YThj
ODk5ODA4ZDM0N2ZhYThjMmUxZDE2Li43YzE2ZTg0MWRlYWZlZTJlMjE5MjU4ZWM0OTViNzgwZjQx
NjUyNjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUu
Y3BwCkBAIC0yNyw2MyArMjcsODAgQEAKICNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
LmgiCiAjaW5jbHVkZSAiQ1NTVG9rZW5pemVyLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Ym9vbCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjplcXVhbHMoY29uc3QgQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgaWYgKG1fbmFtZSAhPSBvdGhlci5tX25hbWUg
fHwgbV92YWx1ZS5pbmRleCgpICE9IG90aGVyLm1fdmFsdWUuaW5kZXgoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0
IFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiYgdmFsdWUpIHsKLSAgICAgICAgcmV0dXJu
IHZhbHVlLmdldCgpID09IFdURjo6Z2V0PFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPj4o
b3RoZXIubV92YWx1ZSkuZ2V0KCk7Ci0gICAgfSwgWyZdKGNvbnN0IENTU1ZhbHVlSUQmIHZhbHVl
KSB7Ci0gICAgICAgIHJldHVybiB2YWx1ZSA9PSBXVEY6OmdldDxDU1NWYWx1ZUlEPihvdGhlci5t
X3ZhbHVlKTsKLSAgICB9LCBbJl0oY29uc3QgUmVmPENTU1ZhcmlhYmxlRGF0YT4mIHZhbHVlKSB7
Ci0gICAgICAgIHJldHVybiB2YWx1ZS5nZXQoKSA9PSBXVEY6OmdldDxSZWY8Q1NTVmFyaWFibGVE
YXRhPj4ob3RoZXIubV92YWx1ZSkuZ2V0KCk7Ci0gICAgfSwgWyZdKGNvbnN0IExlbmd0aCYgdmFs
dWUpIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlID09IFdURjo6Z2V0PExlbmd0aD4ob3RoZXIubV92
YWx1ZSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV92YWx1ZSk7
Ci19CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
OjpjdXN0b21DU1NUZXh0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fc2VyaWFsaXplZCkgewogICAg
ICAgICBtX3NlcmlhbGl6ZWQgPSB0cnVlOwotCi0gICAgICAgIGF1dG8gdmlzaXRvciA9IFdURjo6
bWFrZVZpc2l0b3IoWyZdKGNvbnN0IFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiYgdmFs
dWUpIHsKLSAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSB2YWx1ZS0+Y3NzVGV4dCgpOwotICAg
ICAgICB9LCBbJl0oY29uc3QgQ1NTVmFsdWVJRCYgdmFsdWUpIHsKLSAgICAgICAgICAgIG1fc3Ry
aW5nVmFsdWUgPSBnZXRWYWx1ZU5hbWUodmFsdWUpOwotICAgICAgICB9LCBbJl0oY29uc3QgUmVm
PENTU1ZhcmlhYmxlRGF0YT4mIHZhbHVlKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ1ZhbHVlID0g
dmFsdWUtPnRva2VuUmFuZ2UoKS5zZXJpYWxpemUoKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IExl
bmd0aCYgdmFsdWUpIHsKLSAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKHZhbHVlLnZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpLT5j
c3NUZXh0KCk7Ci0gICAgICAgIH0pOwotICAgICAgICBXVEY6OnZpc2l0KHZpc2l0b3IsIG1fdmFs
dWUpOworICAgICAgICBpZiAobV9yZXNvbHZlZFR5cGVkVmFsdWUpIC8vIEZJWE1FOiBVbml0IHNo
b3VsZCBiZSBiYXNlZCBvbiBzeW50YXguCisgICAgICAgICAgICBtX3N0cmluZ1ZhbHVlID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtX3Jlc29sdmVkVHlwZWRWYWx1ZS0+dmFsdWUoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QWCktPmNzc1RleHQoKTsKKyAgICAgICAgZWxzZSBpZiAobV92
YWx1ZSkKKyAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSBtX3ZhbHVlLT50b2tlblJhbmdlKCku
c2VyaWFsaXplKCk7CisgICAgICAgIGVsc2UgaWYgKG1fdmFsdWVJZCAhPSBDU1NWYWx1ZUludmFs
aWQpCisgICAgICAgICAgICBtX3N0cmluZ1ZhbHVlID0gZ2V0VmFsdWVOYW1lKG1fdmFsdWVJZCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSBlbXB0eVN0cmluZygp
OwogICAgIH0KICAgICByZXR1cm4gbV9zdHJpbmdWYWx1ZTsKIH0KIAotVmVjdG9yPENTU1BhcnNl
clRva2VuPiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjp0b2tlbnMoKSBjb25zdAorVmVjdG9yPENT
U1BhcnNlclRva2VuPiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjp0b2tlbnMoY29uc3QgQ1NTUmVn
aXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiByZWdpc3RlcmVkUHJvcGVydGllcywgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogewotICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVz
dWx0OwotCi0gICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgUmVm
PENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+JikgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICB9LCBbJl0oY29uc3QgQ1NTVmFsdWVJRCYpIHsKLSAgICAgICAgLy8gRG8gbm90
aGluZwotICAgIH0sIFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYgdmFsdWUpIHsKLSAg
ICAgICAgcmVzdWx0LmFwcGVuZFZlY3Rvcih2YWx1ZS0+dG9rZW5zKCkpOwotICAgIH0sIFsmXShj
b25zdCBMZW5ndGgmKSB7CisgICAgaWYgKG1fcmVzb2x2ZWRUeXBlZFZhbHVlKSB7CisgICAgICAg
IFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVzdWx0OwogICAgICAgICBDU1NUb2tlbml6ZXIgdG9r
ZW5pemVyKGNzc1RleHQoKSk7CiAKICAgICAgICAgYXV0byB0b2tlbml6ZXJSYW5nZSA9IHRva2Vu
aXplci50b2tlblJhbmdlKCk7CiAgICAgICAgIHdoaWxlICghdG9rZW5pemVyUmFuZ2UuYXRFbmQo
KSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodG9rZW5pemVyUmFuZ2UuY29uc3VtZSgpKTsK
LSAgICB9KTsKLSAgICBXVEY6OnZpc2l0KHZpc2l0b3IsIG1fdmFsdWUpOwogCi0gICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBpZiAoIW1fdmFs
dWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAobV9jb250YWluc1ZhcmlhYmxlcykg
eworICAgICAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHJlc3VsdDsKKyAgICAgICAgLy8gRklY
TUU6IEF2b2lkIGRvaW5nIHRoaXMgd29yayBtb3JlIHRoYW4gb25jZS4KKyAgICAgICAgUmVmUHRy
PENTU1ZhcmlhYmxlRGF0YT4gcmVzb2x2ZWREYXRhID0gbV92YWx1ZS0+cmVzb2x2ZVZhcmlhYmxl
UmVmZXJlbmNlcyhyZWdpc3RlcmVkUHJvcGVydGllcywgc3R5bGUpOworICAgICAgICBpZiAocmVz
b2x2ZWREYXRhKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZFZlY3RvcihyZXNvbHZlZERhdGEt
PnRva2VucygpKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHJldHVy
biBtX3ZhbHVlLT50b2tlbnMoKTsKK30KKworYm9vbCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpj
aGVja1ZhcmlhYmxlc0ZvckN5Y2xlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSwgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBzZWVuUHJvcGVydGllcywg
SGFzaFNldDxBdG9taWNTdHJpbmc+JiBpbnZhbGlkUHJvcGVydGllcykgY29uc3QKK3sKKyAgICBB
U1NFUlQoY29udGFpbnNWYXJpYWJsZXMoKSk7CisgICAgaWYgKG1fdmFsdWUpCisgICAgICAgIHJl
dHVybiBtX3ZhbHVlLT5jaGVja1ZhcmlhYmxlc0ZvckN5Y2xlcyhuYW1lLCBzdHlsZSwgc2VlblBy
b3BlcnRpZXMsIGludmFsaWRQcm9wZXJ0aWVzKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpyZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKGNvbnN0
IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYgcmVnaXN0ZXJlZFByb3BlcnRpZXMsIFZl
Y3RvcjxSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4+JiByZXNvbHZlZFZhbHVlcywgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAoreworICAgIEFTU0VSVChjb250YWluc1ZhcmlhYmxl
cygpKTsKKyAgICBpZiAoIW1fdmFsdWUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBBU1NF
UlQobV92YWx1ZS0+bmVlZHNWYXJpYWJsZVJlc29sdXRpb24oKSk7CisgICAgUmVmUHRyPENTU1Zh
cmlhYmxlRGF0YT4gcmVzb2x2ZWREYXRhID0gbV92YWx1ZS0+cmVzb2x2ZVZhcmlhYmxlUmVmZXJl
bmNlcyhyZWdpc3RlcmVkUHJvcGVydGllcywgc3R5bGUpOworICAgIGlmIChyZXNvbHZlZERhdGEp
CisgICAgICAgIHJlc29sdmVkVmFsdWVzLmFwcGVuZChDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpj
cmVhdGVXaXRoVmFyaWFibGVEYXRhKG1fbmFtZSwgcmVzb2x2ZWREYXRhLnJlbGVhc2VOb25OdWxs
KCkpKTsKKyAgICBlbHNlCisgICAgICAgIHJlc29sdmVkVmFsdWVzLmFwcGVuZChDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlOjpjcmVhdGVXaXRoSUQobV9uYW1lLCBDU1NWYWx1ZUludmFsaWQpKTsKK30K
Kwordm9pZCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpzZXRSZXNvbHZlZFR5cGVkVmFsdWUoTGVu
Z3RoIGxlbmd0aCkKK3sKKyAgICBBU1NFUlQobGVuZ3RoLmlzU3BlY2lmaWVkKCkpOworICAgIG1f
cmVzb2x2ZWRUeXBlZFZhbHVlID0gV1RGTW92ZShsZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaAppbmRleCA2MjVlMTk1MTFlMmRkYWRi
YWQ0N2M2OTE3MzM5ZDQ5OTcxMThmNDk3Li5iYjA5MjE0NWRlNTFmYjZlNmIzOWQ5OTU0ZDM2NDky
ZGJjY2Q2ZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
LmgKQEAgLTI3LDQ2ICsyNywzMSBAQAogCiAjaW5jbHVkZSAiQ1NTUmVnaXN0ZXJlZEN1c3RvbVBy
b3BlcnR5LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNpbmNsdWRlICJDU1NWYXJpYWJsZVJl
ZmVyZW5jZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVmFyaWFibGVEYXRhLmgiCiAjaW5jbHVkZSAi
TGVuZ3RoLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ1NTUGFyc2VyVG9rZW47Ci1jbGFzcyBDU1NWYXJpYWJsZVJlZmVyZW5jZVZh
bHVlOwogY2xhc3MgUmVuZGVyU3R5bGU7CiAKIGNsYXNzIENTU0N1c3RvbVByb3BlcnR5VmFsdWUg
ZmluYWwgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHVzaW5nIFZhcmlhbnRWYWx1
ZSA9IFZhcmlhbnQ8UmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+LCBDU1NWYWx1ZUlELCBS
ZWY8Q1NTVmFyaWFibGVEYXRhPiwgTGVuZ3RoPjsKLQotICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZT4gY3JlYXRlVW5yZXNvbHZlZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiYmIHZhbHVlKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCB7IFdURk1v
dmUodmFsdWUpIH0pKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5
VmFsdWU+IGNyZWF0ZVVucmVzb2x2ZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBDU1NWYWx1
ZUlEIHZhbHVlKQorICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3JlYXRl
V2l0aFZhcmlhYmxlRGF0YShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFJlZjxDU1NWYXJpYWJs
ZURhdGE+JiYgdmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHsgdmFsdWUgfSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1vdmUodmFsdWUpKSk7
CiAgICAgfQotCi0gICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBjcmVhdGVX
aXRoSUQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBDU1NWYWx1ZUlEIGlkKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKGlkID09IENTU1ZhbHVlSW5oZXJpdCB8fCBpZCA9PSBDU1NWYWx1ZUluaXRp
YWwgfHwgaWQgPT0gQ1NTVmFsdWVVbnNldCB8fCBpZCA9PSBDU1NWYWx1ZVJldmVydCB8fCBpZCA9
PSBDU1NWYWx1ZUludmFsaWQpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHsgaWQgfSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBSZWY8
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3JlYXRlU3ludGF4QWxsKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgUmVmPENTU1ZhcmlhYmxlRGF0YT4mJiB2YWx1ZSkKKyAgICAKKyAgICBzdGF0aWMg
UmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGNyZWF0ZVdpdGhJRChjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIENTU1ZhbHVlSUQgdmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHsgV1RGTW92ZSh2YWx1ZSkgfSkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5h
bWUsIHZhbHVlKSk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZT4gY3JlYXRlU3ludGF4TGVuZ3RoKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgTGVu
Z3RoIHZhbHVlKQorICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3JlYXRl
SW52YWxpZCgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlKG5hbWUsIHsgV1RGTW92ZSh2YWx1ZSkgfSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKGVtcHR5U3RyaW5nKCksIGVtcHR5
U3RyaW5nKCkpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFs
dWU+IGNyZWF0ZShjb25zdCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJiBvdGhlcikKQEAgLTc3LDQ5
ICs2Miw3MCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQot
ICAgIGJvb2wgaXNSZXNvbHZlZCgpIGNvbnN0ICB7IHJldHVybiAhV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4+KG1fdmFsdWUpOyB9Ci0gICAgYm9v
bCBpc1Vuc2V0KCkgY29uc3QgIHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q1NTVmFs
dWVJRD4obV92YWx1ZSkgJiYgV1RGOjpnZXQ8Q1NTVmFsdWVJRD4obV92YWx1ZSkgPT0gQ1NTVmFs
dWVVbnNldDsgfQotICAgIGJvb2wgaXNJbnZhbGlkKCkgY29uc3QgIHsgcmV0dXJuIFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8Q1NTVmFsdWVJRD4obV92YWx1ZSkgJiYgV1RGOjpnZXQ8Q1NTVmFsdWVJ
RD4obV92YWx1ZSkgPT0gQ1NTVmFsdWVJbnZhbGlkOyB9CisgICAgCisgICAgYm9vbCBlcXVhbHMo
Y29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fbmFt
ZSA9PSBvdGhlci5tX25hbWUgJiYgbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlICYmIG1fdmFsdWVJ
ZCA9PSBvdGhlci5tX3ZhbHVlSWQ7IH0KKworICAgIGJvb2wgY29udGFpbnNWYXJpYWJsZXMoKSBj
b25zdCB7IEFTU0VSVCghbV9jb250YWluc1ZhcmlhYmxlcyB8fCAhbV9yZXNvbHZlZFR5cGVkVmFs
dWUpOyByZXR1cm4gbV9jb250YWluc1ZhcmlhYmxlczsgfQorICAgIGJvb2wgY2hlY2tWYXJpYWJs
ZXNGb3JDeWNsZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBSZW5kZXJTdHlsZSYs
IEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3Ry
aW5nPiYgaW52YWxpZFByb3BlcnRpZXMpIGNvbnN0OworCisgICAgdm9pZCByZXNvbHZlVmFyaWFi
bGVSZWZlcmVuY2VzKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYsIFZlY3Rv
cjxSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4+JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25z
dDsKIAotICAgIGNvbnN0IFZhcmlhbnRWYWx1ZSYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlOyB9CisgICAgQ1NTVmFsdWVJRCB2YWx1ZUlEKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZUlk
OyB9CisgICAgQ1NTVmFyaWFibGVEYXRhKiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUu
Z2V0KCk7IH0KKyAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHRva2Vucyhjb25zdCBDU1NSZWdp
c3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCi0g
ICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiB0b2tlbnMoKSBjb25zdDsKLSAgICBib29sIGVxdWFs
cyhjb25zdCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJiBvdGhlcikgY29uc3Q7CisgICAgY29uc3Qg
c3RkOjpvcHRpb25hbDxMZW5ndGg+JiByZXNvbHZlZFR5cGVkVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3Jlc29sdmVkVHlwZWRWYWx1ZTsgfQorICAgIHZvaWQgc2V0UmVzb2x2ZWRUeXBlZFZhbHVl
KExlbmd0aCk7CiAKIHByaXZhdGU6Ci0gICAgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIFZhcmlhbnRWYWx1ZSYmIHZhbHVlKQorICAgIENTU0N1c3RvbVBy
b3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHNlcmlh
bGl6ZWRWYWx1ZSkKKyAgICAgICAgOiBDU1NWYWx1ZShDdXN0b21Qcm9wZXJ0eUNsYXNzKQorICAg
ICAgICAsIG1fbmFtZShuYW1lKQorICAgICAgICAsIG1fc3RyaW5nVmFsdWUoc2VyaWFsaXplZFZh
bHVlKQorICAgICAgICAsIG1fc2VyaWFsaXplZCh0cnVlKQorICAgIHsKKyAgICB9CisKKyAgICBD
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgQ1NTVmFsdWVJ
RCBpZCkKKyAgICAgICAgOiBDU1NWYWx1ZShDdXN0b21Qcm9wZXJ0eUNsYXNzKQorICAgICAgICAs
IG1fbmFtZShuYW1lKQorICAgICAgICAsIG1fdmFsdWVJZChpZCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChpZCA9PSBDU1NWYWx1ZUluaGVyaXQgfHwgaWQgPT0gQ1NTVmFsdWVJbml0aWFsIHx8IGlk
ID09IENTU1ZhbHVlVW5zZXQgfHwgaWQgPT0gQ1NTVmFsdWVSZXZlcnQgfHwgaWQgPT0gQ1NTVmFs
dWVJbnZhbGlkKTsKKyAgICB9CisgICAgCisgICAgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIFJlZjxDU1NWYXJpYWJsZURhdGE+JiYgdmFsdWUpCiAgICAg
ICAgIDogQ1NTVmFsdWUoQ3VzdG9tUHJvcGVydHlDbGFzcykKICAgICAgICAgLCBtX25hbWUobmFt
ZSkKICAgICAgICAgLCBtX3ZhbHVlKFdURk1vdmUodmFsdWUpKQotICAgICAgICAsIG1fc2VyaWFs
aXplZChmYWxzZSkKKyAgICAgICAgLCBtX3ZhbHVlSWQoQ1NTVmFsdWVJbnRlcm5hbFZhcmlhYmxl
VmFsdWUpCisgICAgICAgICwgbV9jb250YWluc1ZhcmlhYmxlcyhtX3ZhbHVlLT5uZWVkc1Zhcmlh
YmxlUmVzb2x1dGlvbigpKQogICAgIHsKICAgICB9CiAKICAgICBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlKGNvbnN0IENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIG90aGVyKQogICAgICAgICA6IENTU1Zh
bHVlKEN1c3RvbVByb3BlcnR5Q2xhc3MpCiAgICAgICAgICwgbV9uYW1lKG90aGVyLm1fbmFtZSkK
LSAgICAgICAgLCBtX3ZhbHVlKENTU1ZhbHVlVW5zZXQpCisgICAgICAgICwgbV92YWx1ZShvdGhl
ci5tX3ZhbHVlLmNvcHlSZWYoKSkKKyAgICAgICAgLCBtX3ZhbHVlSWQob3RoZXIubV92YWx1ZUlk
KQogICAgICAgICAsIG1fc3RyaW5nVmFsdWUob3RoZXIubV9zdHJpbmdWYWx1ZSkKKyAgICAgICAg
LCBtX2NvbnRhaW5zVmFyaWFibGVzKG90aGVyLm1fY29udGFpbnNWYXJpYWJsZXMpCiAgICAgICAg
ICwgbV9zZXJpYWxpemVkKG90aGVyLm1fc2VyaWFsaXplZCkKKyAgICAgICAgLCBtX3Jlc29sdmVk
VHlwZWRWYWx1ZShvdGhlci5tX3Jlc29sdmVkVHlwZWRWYWx1ZSkKICAgICB7Ci0gICAgICAgIC8v
IE5vIGNvcHkgY29uc3RydWN0b3IgZm9yIFJlZjxDU1NWYXJpYWJsZURhdGE+LCBzbyB3ZSBoYXZl
IHRvIGRvIHRoaXMgb3Vyc2VsdmVzCi0gICAgICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZp
c2l0b3IoWyZdKGNvbnN0IFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiYgdmFsdWUpIHsK
LSAgICAgICAgICAgIG1fdmFsdWUgPSB2YWx1ZS5jb3B5UmVmKCk7Ci0gICAgICAgIH0sIFsmXShj
b25zdCBDU1NWYWx1ZUlEJiB2YWx1ZSkgewotICAgICAgICAgICAgbV92YWx1ZSA9IHZhbHVlOwot
ICAgICAgICB9LCBbJl0oY29uc3QgUmVmPENTU1ZhcmlhYmxlRGF0YT4mIHZhbHVlKSB7Ci0gICAg
ICAgICAgICBtX3ZhbHVlID0gdmFsdWUuY29weVJlZigpOwotICAgICAgICB9LCBbJl0oY29uc3Qg
TGVuZ3RoJiB2YWx1ZSkgewotICAgICAgICAgICAgbV92YWx1ZSA9IHZhbHVlOwotICAgICAgICB9
KTsKLSAgICAgICAgV1RGOjp2aXNpdCh2aXNpdG9yLCBvdGhlci5tX3ZhbHVlKTsKICAgICB9CiAg
ICAgCiAgICAgY29uc3QgQXRvbWljU3RyaW5nIG1fbmFtZTsKLSAgICBWYXJpYW50VmFsdWUgbV92
YWx1ZTsKKyAgICAKKyAgICBSZWZQdHI8Q1NTVmFyaWFibGVEYXRhPiBtX3ZhbHVlOworICAgIENT
U1ZhbHVlSUQgbV92YWx1ZUlkIHsgQ1NTVmFsdWVJbnZhbGlkIH07CiAgICAgCiAgICAgbXV0YWJs
ZSBTdHJpbmcgbV9zdHJpbmdWYWx1ZTsKKyAgICBib29sIG1fY29udGFpbnNWYXJpYWJsZXMgeyBm
YWxzZSB9OwogICAgIG11dGFibGUgYm9vbCBtX3NlcmlhbGl6ZWQgeyBmYWxzZSB9OworCisgICAg
Ly8gRklYTUU6IEl0IHNob3VsZCBub3QgYmUgcG9zc2libGUgdG8gZXhwcmVzcyBhbiBpbnZhbGlk
IHN0YXRlLCBzdWNoIGFzIGNvbnRhaW5zVmFyaWFibGVzKCkgJiYgcmVzb2x2ZWRUeXBlZFZhbHVl
KCkuCisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IG1fcmVzb2x2ZWRUeXBlZFZhbHVlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5LmNwcAppbmRleCA3OWVmN2ZlNmIwM2NkNmNmZjdmYjll
YTgxOWIxNjA3NmRlNDU1OGQ3Li4zZWE3YjkyYzAwOTk3MzA5NmEwM2U5NWU5ZTZhMjY3NTRhNWNh
ODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1c3RvbVBy
b3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1c3RvbVBy
b3BlcnR5LmNwcApAQCAtMzAsOSArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNT
U1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eTo6Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzeW50YXgsIGJvb2wgaW5oZXJpdHMsIFJl
ZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiYmIGluaXRpYWxWYWx1ZSkKK0NTU1JlZ2lzdGVy
ZWRDdXN0b21Qcm9wZXJ0eTo6Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgYm9vbCBpbmhlcml0cywgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYg
aW5pdGlhbFZhbHVlKQogICAgIDogbmFtZShuYW1lKQotICAgICwgc3ludGF4KHN5bnRheCkKICAg
ICAsIGluaGVyaXRzKGluaGVyaXRzKQogICAgICwgbV9pbml0aWFsVmFsdWUoV1RGTW92ZShpbml0
aWFsVmFsdWUpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZ2lzdGVy
ZWRDdXN0b21Qcm9wZXJ0eS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZ2lzdGVyZWRDdXN0
b21Qcm9wZXJ0eS5oCmluZGV4IGRmY2YwYmRjMzllZDU0MGMzZDFkYWE0YzA1YTY0YzBmNTkxNTM5
MmIuLjM0MjdlYWEzYzNhYjc0N2MwNTE4NWYzOTM1YjZiNWIyZDI2YWVlM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5LmgKQEAgLTMzLDEw
ICszMywxMCBAQCBjbGFzcyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOwogCiBzdHJ1Y3QgQ1NTUmVn
aXN0ZXJlZEN1c3RvbVByb3BlcnR5IHsKICAgICBjb25zdCBTdHJpbmcgbmFtZTsKLSAgICBjb25z
dCBTdHJpbmcgc3ludGF4OworICAgIC8qIFRPRE8gc3ludGF4ICovCiAgICAgY29uc3QgYm9vbCBp
bmhlcml0czsKIAotICAgIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgc3ludGF4LCBib29sIGluaGVyaXRzLCBSZWZQdHI8Q1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZT4mJiBpbml0aWFsVmFsdWUpOworICAgIENTU1JlZ2lzdGVyZWRDdXN0
b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgaW5oZXJpdHMsIFJlZlB0cjxDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlPiYmIGluaXRpYWxWYWx1ZSk7CiAKICAgICBjb25zdCBDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlKiBpbml0aWFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxW
YWx1ZS5nZXQoKTsgfQogICAgIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBpbml0aWFs
VmFsdWVDb3B5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFy
aWFibGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZURhdGEuY3BwCmlu
ZGV4IDYwNGNhMTgzNDM0YjY1ODY3NGQzZDhjMDcyOWE0MTEwOTE1OGQ5OWQuLjk4OTkzNTMxNzU5
YzhjOTNmNzc1N2UzMTk4OWIxZDYwOTgxMjBjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYXJpYWJsZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJp
YWJsZURhdGEuY3BwCkBAIC02MCw3ICs2MCw3IEBAIGJvb2wgQ1NTVmFyaWFibGVEYXRhOjpvcGVy
YXRvcj09KGNvbnN0IENTU1ZhcmlhYmxlRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRv
a2VucygpID09IG90aGVyLnRva2VucygpOwogfQogCi1DU1NWYXJpYWJsZURhdGE6OkNTU1Zhcmlh
YmxlRGF0YShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3ZvaWQgQ1NTVmFyaWFi
bGVEYXRhOjpjb25zdW1lQW5kVXBkYXRlVG9rZW5zKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQogewogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBDU1NQYXJz
ZXJUb2tlblJhbmdlIGxvY2FsUmFuZ2UgPSByYW5nZTsKQEAgLTc3LDQgKzc3LDEwOSBAQCBDU1NW
YXJpYWJsZURhdGE6OkNTU1ZhcmlhYmxlRGF0YShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKICAgICAgICAgdXBkYXRlVG9rZW5zPFVDaGFyPihyYW5nZSk7CiB9CiAKK0NTU1Zhcmlh
YmxlRGF0YTo6Q1NTVmFyaWFibGVEYXRhKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBib29sIG5lZWRzVmFyaWFibGVSZXNvbHV0aW9uKQorICAgIDogbV9uZWVkc1ZhcmlhYmxlUmVz
b2x1dGlvbihuZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbikKK3sKKyAgICBjb25zdW1lQW5kVXBkYXRl
VG9rZW5zKHJhbmdlKTsKK30KKworYm9vbCBDU1NWYXJpYWJsZURhdGE6OmNoZWNrVmFyaWFibGVz
Rm9yQ3ljbGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21p
Y1N0cmluZz4mIGludmFsaWRQcm9wZXJ0aWVzKSBjb25zdAoreworICAgIGlmIChpbnZhbGlkUHJv
cGVydGllcy5jb250YWlucyhuYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IEhhc2hTZXQ8QXRvbWljU3RyaW5nPiBuZXdTZWVuUHJvcGVydGllcyA9IHNlZW5Qcm9wZXJ0aWVz
OworICAgIG5ld1NlZW5Qcm9wZXJ0aWVzLmFkZChuYW1lKTsKKyAgICAKKyAgICBib29sIHZhbGlk
ID0gY2hlY2tWYXJpYWJsZXNGb3JDeWNsZXNXaXRoUmFuZ2UobV90b2tlbnMsIHN0eWxlLCBuZXdT
ZWVuUHJvcGVydGllcywgaW52YWxpZFByb3BlcnRpZXMpOworICAgIGlmICghdmFsaWQpCisgICAg
ICAgIGludmFsaWRQcm9wZXJ0aWVzLmFkZChuYW1lKTsKKyAgICAKKyAgICByZXR1cm4gdmFsaWQ7
Cit9CisgICAgCitib29sIENTU1ZhcmlhYmxlRGF0YTo6Y2hlY2tWYXJpYWJsZXNGb3JDeWNsZXNX
aXRoUmFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21p
Y1N0cmluZz4mIGludmFsaWRQcm9wZXJ0aWVzKSBjb25zdAoreworICAgIHdoaWxlICghcmFuZ2Uu
YXRFbmQoKSkgeworICAgICAgICBpZiAocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NW
YWx1ZVZhciB8fCByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlRW52KSB7Cisg
ICAgICAgICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGJsb2NrID0gcmFuZ2UuY29uc3VtZUJsb2Nr
KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJsb2NrLmNvbnN1bWVXaGl0ZXNwYWNlKCk7
CisgICAgICAgICAgICBBU1NFUlQoYmxvY2sucGVlaygpLnR5cGUoKSA9PSBJZGVudFRva2VuKTsK
KyAgICAgICAgICAgIEF0b21pY1N0cmluZyB2YXJpYWJsZU5hbWUgPSBibG9jay5jb25zdW1lSW5j
bHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9BdG9taWNTdHJpbmcoKTsKKyAgICAgICAgICAg
IEFTU0VSVChibG9jay5hdEVuZCgpIHx8IGJsb2NrLnBlZWsoKS50eXBlKCkgPT0gQ29tbWFUb2tl
bik7CisgICAgICAgICAgICBpZiAoc2VlblByb3BlcnRpZXMuY29udGFpbnModmFyaWFibGVOYW1l
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGF1dG8qIHZh
bHVlID0gc3R5bGUuZ2V0Q3VzdG9tUHJvcGVydHkodmFyaWFibGVOYW1lKTsKKyAgICAgICAgICAg
IGlmICh2YWx1ZSAmJiB2YWx1ZS0+Y29udGFpbnNWYXJpYWJsZXMoKSAmJiAhdmFsdWUtPmNoZWNr
VmFyaWFibGVzRm9yQ3ljbGVzKHZhcmlhYmxlTmFtZSwgc3R5bGUsIHNlZW5Qcm9wZXJ0aWVzLCBp
bnZhbGlkUHJvcGVydGllcykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgICAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBDb21tYVRva2VuKSB7CisgICAgICAg
ICAgICAgICAgLy8gRmFsbGJhY2suCisgICAgICAgICAgICAgICAgcmFuZ2UuY29uc3VtZSgpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBjaGVja1ZhcmlhYmxlc0ZvckN5Y2xlc1dpdGhSYW5nZShi
bG9jaywgc3R5bGUsIHNlZW5Qcm9wZXJ0aWVzLCBpbnZhbGlkUHJvcGVydGllcyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmFuZ2UuY29uc3VtZSgpOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NWYXJpYWJsZURhdGE6OnJlc29sdmVW
YXJpYWJsZUZhbGxiYWNrKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYgcmVn
aXN0ZXJlZFByb3BlcnRpZXMsIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UsIFZlY3RvcjxDU1NQ
YXJzZXJUb2tlbj4mIHJlc3VsdCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAorewor
ICAgIGlmIChyYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJU
KHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gQ29tbWFUb2tlbik7CisgICAgcmFuZ2UuY29uc3VtZSgp
OworICAgIHJldHVybiByZXNvbHZlVG9rZW5SYW5nZShyZWdpc3RlcmVkUHJvcGVydGllcywgcmFu
Z2UsIHJlc3VsdCwgc3R5bGUpOworfQorCitib29sIENTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2ZVZh
cmlhYmxlUmVmZXJlbmNlKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYgcmVn
aXN0ZXJlZFByb3BlcnRpZXMsIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UsIFZlY3RvcjxDU1NQ
YXJzZXJUb2tlbj4mIHJlc3VsdCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAorewor
ICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7CisgICAgQVNTRVJUKHJhbmdlLnBlZWsoKS50
eXBlKCkgPT0gSWRlbnRUb2tlbik7CisgICAgQXRvbWljU3RyaW5nIHZhcmlhYmxlTmFtZSA9IHJh
bmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b0F0b21pY1N0cmluZygp
OworICAgIEFTU0VSVChyYW5nZS5hdEVuZCgpIHx8IChyYW5nZS5wZWVrKCkudHlwZSgpID09IENv
bW1hVG9rZW4pKTsKKyAgICAKKyAgICBhdXRvKiBwcm9wZXJ0eSA9IHN0eWxlLmdldEN1c3RvbVBy
b3BlcnR5KHZhcmlhYmxlTmFtZSk7CisgICAgaWYgKHByb3BlcnR5ICYmIHByb3BlcnR5LT5yZXNv
bHZlZFR5cGVkVmFsdWUoKSkgeworICAgICAgICByZXN1bHQuYXBwZW5kVmVjdG9yKHByb3BlcnR5
LT50b2tlbnMocmVnaXN0ZXJlZFByb3BlcnRpZXMsIHN0eWxlKSk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIGlmICghcHJvcGVydHkgfHwgIXByb3BlcnR5LT52YWx1ZSgpKSB7
CisgICAgICAgIGF1dG8qIHJlZ2lzdGVyZWQgPSByZWdpc3RlcmVkUHJvcGVydGllcy5nZXQodmFy
aWFibGVOYW1lKTsKKyAgICAgICAgaWYgKHJlZ2lzdGVyZWQgJiYgcmVnaXN0ZXJlZC0+aW5pdGlh
bFZhbHVlKCkpCisgICAgICAgICAgICBwcm9wZXJ0eSA9IHJlZ2lzdGVyZWQtPmluaXRpYWxWYWx1
ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZVZhcmlhYmxlRmFs
bGJhY2socmVnaXN0ZXJlZFByb3BlcnRpZXMsIHJhbmdlLCByZXN1bHQsIHN0eWxlKTsKKyAgICB9
CisgICAgQVNTRVJUKHByb3BlcnR5KTsKKyAgICByZXN1bHQuYXBwZW5kVmVjdG9yKHByb3BlcnR5
LT50b2tlbnMocmVnaXN0ZXJlZFByb3BlcnRpZXMsIHN0eWxlKSk7CisgICAgCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK1JlZlB0cjxDU1NWYXJpYWJsZURhdGE+IENTU1ZhcmlhYmxlRGF0YTo6cmVz
b2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyhjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlT
ZXQmIHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0
Cit7CisgICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiByZXNvbHZlZFRva2VuczsKKyAgICBDU1NQ
YXJzZXJUb2tlblJhbmdlIHJhbmdlID0gbV90b2tlbnM7CisgICAgaWYgKCFyZXNvbHZlVG9rZW5S
YW5nZShyZWdpc3RlcmVkUHJvcGVydGllcywgcmFuZ2UsIHJlc29sdmVkVG9rZW5zLCBzdHlsZSkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBDU1NWYXJpYWJsZURhdGE6OmNy
ZWF0ZVJlc29sdmVkKHJlc29sdmVkVG9rZW5zLCAqdGhpcyk7Cit9CisgICAgCitib29sIENTU1Zh
cmlhYmxlRGF0YTo6cmVzb2x2ZVRva2VuUmFuZ2UoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVBy
b3BlcnR5U2V0JiByZWdpc3RlcmVkUHJvcGVydGllcywgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5n
ZSwgVmVjdG9yPENTU1BhcnNlclRva2VuPiYgcmVzdWx0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUpIGNvbnN0Cit7CisgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKyAgICB3aGlsZSAoIXJhbmdl
LmF0RW5kKCkpIHsKKyAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NT
VmFsdWVWYXIgfHwgcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUVudikKKyAg
ICAgICAgICAgIHN1Y2Nlc3MgJj0gcmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlKHJlZ2lzdGVyZWRQ
cm9wZXJ0aWVzLCByYW5nZS5jb25zdW1lQmxvY2soKSwgcmVzdWx0LCBzdHlsZSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmFuZ2UuY29uc3VtZSgpKTsKKyAgICB9
CisgICAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYXJpYWJsZURhdGEuaAppbmRleCAzOTZlMDY5YjljNDY1MmM4ZTg3ZjdjYWQ4
Mjk5MDM5ZWMwY2VkMTZkLi4wMDhhNmZhNDIzMDc3MDQ5OTMzMTcwN2E3NGM3ZDZjZDZkMjI3MmUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5oCkBAIC00Myw5ICs0MywxNCBAQCBj
bGFzcyBDU1NWYXJpYWJsZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NWYXJpYWJsZURhdGE+
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDU1NWYXJpYWJsZURhdGEpOwogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTVmFyaWFibGVE
YXRhPiBjcmVhdGUoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCisgICAgc3RhdGlj
IFJlZjxDU1NWYXJpYWJsZURhdGE+IGNyZWF0ZShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwgYm9vbCBuZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbiA9IHRydWUpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NWYXJpYWJsZURhdGEocmFuZ2UpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTVmFyaWFibGVEYXRhKHJhbmdlLCBuZWVkc1ZhcmlhYmxl
UmVzb2x1dGlvbikpOworICAgIH0KKworICAgIHN0YXRpYyBSZWY8Q1NTVmFyaWFibGVEYXRhPiBj
cmVhdGVSZXNvbHZlZChjb25zdCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXNvbHZlZFRva2Vu
cywgY29uc3QgQ1NTVmFyaWFibGVEYXRhJiB1bnJlc29sdmVkRGF0YSkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ZhcmlhYmxlRGF0YShyZXNvbHZlZFRva2VucywgdW5y
ZXNvbHZlZERhdGEubV9iYWNraW5nU3RyaW5nKSk7CiAgICAgfQogCiAgICAgQ1NTUGFyc2VyVG9r
ZW5SYW5nZSB0b2tlblJhbmdlKCkgeyByZXR1cm4gbV90b2tlbnM7IH0KQEAgLTU0LDEyICs1OSwz
NiBAQCBwdWJsaWM6CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTVmFyaWFibGVEYXRh
JiBvdGhlcikgY29uc3Q7CiAKKyAgICBib29sIG5lZWRzVmFyaWFibGVSZXNvbHV0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9uZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbjsgfQorCisgICAgYm9vbCBjaGVj
a1ZhcmlhYmxlc0ZvckN5Y2xlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFJlbmRl
clN0eWxlJiwgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBzZWVuUHJvcGVydGllcywgSGFzaFNldDxB
dG9taWNTdHJpbmc+JiBpbnZhbGlkUHJvcGVydGllcykgY29uc3Q7CisKKyAgICBSZWZQdHI8Q1NT
VmFyaWFibGVEYXRhPiByZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKGNvbnN0IENTU1JlZ2lzdGVy
ZWRDdXN0b21Qcm9wZXJ0eVNldCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CisgICAgYm9v
bCByZXNvbHZlVG9rZW5SYW5nZShjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQm
LCBDU1NQYXJzZXJUb2tlblJhbmdlLCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiwgY29uc3QgUmVu
ZGVyU3R5bGUmKSBjb25zdDsKKwogcHJpdmF0ZToKLSAgICBDU1NWYXJpYWJsZURhdGEoY29uc3Qg
Q1NTUGFyc2VyVG9rZW5SYW5nZSYpOworICAgIENTU1ZhcmlhYmxlRGF0YShjb25zdCBDU1NQYXJz
ZXJUb2tlblJhbmdlJiwgYm9vbCBuZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbik7CisKKyAgICAvLyBX
ZSBjYW4gc2FmZWx5IGNvcHkgdGhlIHRva2VucyAod2hpY2ggaGF2ZSByYXcgcG9pbnRlcnMgdG8g
c3Vic3RyaW5ncykgYmVjYXVzZQorICAgIC8vIFN0eWxlUHJvcGVydHlTZXRzIGNvbnRhaW4gcmVm
ZXJlbmNlcyB0byBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlcywgd2hpY2gKKyAgICAvLyBwb2ludCB0
byB0aGUgdW5yZXNvbHZlZCBDU1NWYXJpYWJsZURhdGEgdmFsdWVzIHRoYXQgb3duIHRoZSBiYWNr
aW5nIHN0cmluZ3MKKyAgICAvLyB0aGlzIHdpbGwgcG90ZW50aWFsbHkgcmVmZXJlbmNlLgorICAg
IENTU1ZhcmlhYmxlRGF0YShjb25zdCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXNvbHZlZFRv
a2VucywgU3RyaW5nIGJhY2tpbmdTdHJpbmcpCisgICAgICAgIDogbV9iYWNraW5nU3RyaW5nKGJh
Y2tpbmdTdHJpbmcpCisgICAgICAgICwgbV90b2tlbnMocmVzb2x2ZWRUb2tlbnMpCisgICAgICAg
ICwgbV9uZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbihmYWxzZSkKKyAgICB7IH0KKworICAgIHZvaWQg
Y29uc3VtZUFuZFVwZGF0ZVRva2Vucyhjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJik7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB1cGRhdGVUb2tlbnMoY29uc3Qg
Q1NTUGFyc2VyVG9rZW5SYW5nZSYpOworICAgIAorICAgIGJvb2wgY2hlY2tWYXJpYWJsZXNGb3JD
eWNsZXNXaXRoUmFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSwgY29uc3QgUmVuZGVyU3R5bGUmLCBI
YXNoU2V0PEF0b21pY1N0cmluZz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21pY1N0cmlu
Zz4mIGludmFsaWRQcm9wZXJ0aWVzKSBjb25zdDsKKyAgICBib29sIHJlc29sdmVWYXJpYWJsZVJl
ZmVyZW5jZShjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQmLCBDU1NQYXJzZXJU
b2tlblJhbmdlLCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBj
b25zdDsKKyAgICBib29sIHJlc29sdmVWYXJpYWJsZUZhbGxiYWNrKGNvbnN0IENTU1JlZ2lzdGVy
ZWRDdXN0b21Qcm9wZXJ0eVNldCYsIENTU1BhcnNlclRva2VuUmFuZ2UsIFZlY3RvcjxDU1NQYXJz
ZXJUb2tlbj4mLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCiAgICAgU3RyaW5nIG1fYmFj
a2luZ1N0cmluZzsKICAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IG1fdG9rZW5zOworICAgIGNv
bnN0IGJvb2wgbV9uZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbjsKIAogICAgIC8vIEZJWE1FLU5FV1BB
UlNFUjogV2Ugd2FudCB0byBjYWNoZSBTdHlsZVByb3BlcnRpZXMgb25jZSB3ZSBzdXBwb3J0IEBh
cHBseS4KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVSZWZl
cmVuY2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VW
YWx1ZS5jcHAKaW5kZXggNzdhNTIzZTRkN2RkYWRmMDMwYTEyNDA1ZGU3ZmMyZmNjN2ExMTRmYy4u
Mzg5NTdlNDAzMGMyMzhmNGY3NzU1MmNmMjkzZTUxMTBhNzkxMzk2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmNwcApAQCAtMzAsOSArMzAs
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU1ZhcmlhYmxlUmVmZXJlbmNl
VmFsdWUuaCIKIAotI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCi0jaW5jbHVkZSAiU3R5bGVSZXNv
bHZlci5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBDU1NWYXJpYWJsZVJlZmVy
ZW5jZVZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKQEAgLTQzLDcyICs0MCwxMSBAQCBTdHJp
bmcgQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAg
fQogICAgIHJldHVybiBtX3N0cmluZ1ZhbHVlOwogfQotCi1zdGF0aWMgYm9vbCByZXNvbHZlVG9r
ZW5SYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlLCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiwgQXBw
bHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmKTsKLQotc3RhdGljIGJvb2wgcmVzb2x2ZVZhcmlhYmxl
RmFsbGJhY2soQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgVmVjdG9yPENTU1BhcnNlclRva2Vu
PiYgcmVzdWx0LCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgc3RhdGUpCi17Ci0gICAgaWYg
KHJhbmdlLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBBU1NFUlQocmFuZ2Uu
cGVlaygpLnR5cGUoKSA9PSBDb21tYVRva2VuKTsKLSAgICByYW5nZS5jb25zdW1lKCk7Ci0gICAg
cmV0dXJuIHJlc29sdmVUb2tlblJhbmdlKHJhbmdlLCByZXN1bHQsIHN0YXRlKTsKLX0KLQotc3Rh
dGljIGJvb2wgcmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlKENTU1BhcnNlclRva2VuUmFuZ2UgcmFu
Z2UsIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mIHJlc3VsdCwgQXBwbHlDYXNjYWRlZFByb3BlcnR5
U3RhdGUmIHN0YXRlKQorICAgIAorYm9vbCBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlOjpjaGVj
a1ZhcmlhYmxlc0ZvckN5Y2xlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSwgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBzZWVuUHJvcGVydGllcywgSGFz
aFNldDxBdG9taWNTdHJpbmc+JiBpbnZhbGlkUHJvcGVydGllcykgY29uc3QKIHsKLSAgICBhdXRv
JiByZWdpc3RlcmVkUHJvcGVydGllcyA9IHN0YXRlLnN0eWxlUmVzb2x2ZXItPmRvY3VtZW50KCku
Z2V0Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0KCk7Ci0gICAgYXV0byYgc3R5bGUgPSAq
c3RhdGUuc3R5bGVSZXNvbHZlci0+c3R5bGUoKTsKLQotICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNw
YWNlKCk7Ci0gICAgQVNTRVJUKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRUb2tlbik7Ci0g
ICAgU3RyaW5nIHZhcmlhYmxlTmFtZSA9IHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNl
KCkudmFsdWUoKS50b1N0cmluZygpOwotICAgIEFTU0VSVChyYW5nZS5hdEVuZCgpIHx8IChyYW5n
ZS5wZWVrKCkudHlwZSgpID09IENvbW1hVG9rZW4pKTsKLQotICAgIC8vIEFwcGx5IHRoaXMgdmFy
aWFibGUgZmlyc3QsIGluIGNhc2UgaXQgaXMgc3RpbGwgdW5yZXNvbHZlZAotICAgIHN0YXRlLnN0
eWxlUmVzb2x2ZXItPmFwcGx5Q2FzY2FkZWRDdXN0b21Qcm9wZXJ0eSh2YXJpYWJsZU5hbWUsIHN0
YXRlKTsKLQotICAgIC8vIEFwcGx5IGZhbGxiYWNrIHRvIGRldGVjdCBjeWNsZXMKLSAgICBWZWN0
b3I8Q1NTUGFyc2VyVG9rZW4+IGZhbGxiYWNrUmVzdWx0OwotICAgIHJlc29sdmVWYXJpYWJsZUZh
bGxiYWNrKENTU1BhcnNlclRva2VuUmFuZ2UocmFuZ2UpLCBmYWxsYmFja1Jlc3VsdCwgc3RhdGUp
OwotCi0gICAgYXV0byogcHJvcGVydHkgPSBzdHlsZS5nZXRDdXN0b21Qcm9wZXJ0eSh2YXJpYWJs
ZU5hbWUpOwotCi0gICAgaWYgKCFwcm9wZXJ0eSB8fCBwcm9wZXJ0eS0+aXNVbnNldCgpIHx8IHBy
b3BlcnR5LT5pc0ludmFsaWQoKSkgewotICAgICAgICBhdXRvKiByZWdpc3RlcmVkID0gcmVnaXN0
ZXJlZFByb3BlcnRpZXMuZ2V0KHZhcmlhYmxlTmFtZSk7Ci0gICAgICAgIGlmIChyZWdpc3RlcmVk
ICYmIHJlZ2lzdGVyZWQtPmluaXRpYWxWYWx1ZSgpKQotICAgICAgICAgICAgcHJvcGVydHkgPSBy
ZWdpc3RlcmVkLT5pbml0aWFsVmFsdWUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0
dXJuIHJlc29sdmVWYXJpYWJsZUZhbGxiYWNrKHJhbmdlLCByZXN1bHQsIHN0YXRlKTsKLSAgICB9
Ci0KLSAgICBBU1NFUlQocHJvcGVydHktPmlzUmVzb2x2ZWQoKSk7Ci0gICAgcmVzdWx0LmFwcGVu
ZFZlY3Rvcihwcm9wZXJ0eS0+dG9rZW5zKCkpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0
YXRpYyBib29sIHJlc29sdmVUb2tlblJhbmdlKENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UsIFZl
Y3RvcjxDU1NQYXJzZXJUb2tlbj4mIHJlc3VsdCwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUm
IHN0YXRlKQotewotICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0gICAgd2hpbGUgKCFyYW5nZS5h
dEVuZCgpKSB7Ci0gICAgICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1Zh
bHVlVmFyIHx8IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVFbnYpCi0gICAg
ICAgICAgICBzdWNjZXNzICY9IHJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZShyYW5nZS5jb25zdW1l
QmxvY2soKSwgcmVzdWx0LCBzdGF0ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQocmFuZ2UuY29uc3VtZSgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19
Ci0KLVJlZlB0cjxDU1NWYXJpYWJsZURhdGE+IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OnJl
c29sdmVWYXJpYWJsZVJlZmVyZW5jZXMoQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIHN0YXRl
KSBjb25zdAotewotICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVzb2x2ZWRUb2tlbnM7Ci0g
ICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSA9IG1fZGF0YS0+dG9rZW5SYW5nZSgpOwotCi0g
ICAgaWYgKCFyZXNvbHZlVG9rZW5SYW5nZShyYW5nZSwgcmVzb2x2ZWRUb2tlbnMsIHN0YXRlKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gQ1NTVmFyaWFibGVEYXRhOjpj
cmVhdGUocmVzb2x2ZWRUb2tlbnMpOworICAgIEFTU0VSVChtX2RhdGEpOworICAgIHJldHVybiBt
X2RhdGEtPmNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzKG5hbWUsIHN0eWxlLCBzZWVuUHJvcGVydGll
cywgaW52YWxpZFByb3BlcnRpZXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuaAppbmRleCBkNzBl
MzI3YzEwNmRkYWFlODIzZmY5OWJmYTJhOWNiYmE4YjYwNjg2Li4yMjg5NjRlZDc2OTQ0MDU5Mzk1
YzEwYzY0YWVmMmMwMTA2ZDgxZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJp
YWJsZVJlZmVyZW5jZVZhbHVlLmgKQEAgLTI5LDMwICsyOSwyOCBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuLmgiCi0jaW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW5S
YW5nZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVmFyaWFibGVEYXRh
LmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RydWN0IEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlOwotY2xhc3MgQ1NTUGFyc2VyVG9rZW5S
YW5nZTsKLQogY2xhc3MgQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiBj
cmVhdGUoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCisgICAgc3RhdGljIFJlZjxD
U1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiBjcmVhdGUoUmVmPENTU1ZhcmlhYmxlRGF0YT4mJiBk
YXRhKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTVmFyaWFibGVSZWZl
cmVuY2VWYWx1ZShXVEZNb3ZlKGRhdGEpKSk7CisgICAgfQorCisgICAgQ1NTVmFyaWFibGVEYXRh
KiB2YXJpYWJsZURhdGFWYWx1ZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlKENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRl
KHJhbmdlKSkpOworICAgICAgICByZXR1cm4gbV9kYXRhLmdldCgpOwogICAgIH0KIAotICAgIGJv
b2wgZXF1YWxzKGNvbnN0IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUmIG90aGVyKSBjb25zdCB7
IHJldHVybiBtX2RhdGEuZ2V0KCkgPT0gb3RoZXIubV9kYXRhLmdldCgpOyB9CisgICAgYm9vbCBl
cXVhbHMoY29uc3QgQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YSA9PSBvdGhlci5tX2RhdGE7IH0KICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgp
IGNvbnN0OwogCi0gICAgUmVmUHRyPENTU1ZhcmlhYmxlRGF0YT4gcmVzb2x2ZVZhcmlhYmxlUmVm
ZXJlbmNlcyhBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYpIGNvbnN0OworICAgIGJvb2wgY2hl
Y2tWYXJpYWJsZXNGb3JDeWNsZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBSZW5k
ZXJTdHlsZSYsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8
QXRvbWljU3RyaW5nPiYgaW52YWxpZFByb3BlcnRpZXMpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUoUmVmPENTU1ZhcmlhYmxlRGF0YT4mJiBkYXRhKQpA
QCAtNjEsNyArNTksNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBSZWY8Q1NTVmFy
aWFibGVEYXRhPiBtX2RhdGE7CisgICAgUmVmUHRyPENTU1ZhcmlhYmxlRGF0YT4gbV9kYXRhOwog
ICAgIG11dGFibGUgU3RyaW5nIG1fc3RyaW5nVmFsdWU7CiAgICAgbXV0YWJsZSBib29sIG1fc2Vy
aWFsaXplZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RP
TUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNT
U1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwCmluZGV4IGI4ZWY2YTk1MjEzZGVhMjUwN2Q1ZGY3
NTExZmE5MTNmOTI4MjI5YTguLjM3MzE4ZGE2NTk4ZmQxMTU5MzA2OWNhMjIxNTVmZGI2NGI1NGQ3
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVBy
b3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Q
cm9wZXJ0eS5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogCiAjaW5jbHVkZSAiQ1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNpbmNsdWRlICJD
U1NQcm9wZXJ0eVBhcnNlci5oIgogI2luY2x1ZGUgIkNTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0
eS5oIgogI2luY2x1ZGUgIkNTU1Rva2VuaXplci5oIgogI2luY2x1ZGUgIkRPTUNTU05hbWVzcGFj
ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmgiCisjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MiwzMyArNDIsMjggQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6cmVnaXN0ZXJQcm9w
ZXJ0eShEb2N1bWVudCYgZG9jdW0KIHsKICAgICBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZT4gaW5pdGlhbFZhbHVlOwogICAgIGlmICghZGVzY3JpcHRvci5pbml0aWFsVmFsdWUuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIENTU1Rva2VuaXplciB0b2tlbml6ZXIoZGVzY3JpcHRvci5pbml0aWFs
VmFsdWUpOworICAgICAgICBpbml0aWFsVmFsdWUgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpj
cmVhdGVXaXRoVmFyaWFibGVEYXRhKGRlc2NyaXB0b3IubmFtZSwgQ1NTVmFyaWFibGVEYXRhOjpj
cmVhdGUoQ1NTUGFyc2VyVG9rZW5SYW5nZShWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+KCkpLCBmYWxz
ZSkpOworICAgICAgICBDU1NQYXJzZXIgcGFyc2VyKGRvY3VtZW50KTsKICAgICAgICAgU3R5bGVS
ZXNvbHZlciBzdHlsZVJlc29sdmVyKGRvY3VtZW50KTsKIAotICAgICAgICAvLyBXZSBuZWVkIHRv
IGluaXRpYWxpemUgdGhpcyBzbyB0aGF0IHdlIGNhbiBzdWNjZXNzZnVsbHkgcGFyc2UgY29tcHV0
YXRpb25hbGx5IGRlcGVuZGVudCB2YWx1ZXMgKGxpa2UgZW0gdW5pdHMpLgotICAgICAgICAvLyBX
ZSBkb24ndCBhY3R1YWxseSBuZWVkIHRoZSB2YWx1ZXMgdG8gYmUgYWNjdXJhdGUsIHNpbmNlIHRo
ZXkgd2lsbCBiZSByZWplY3RlZCBsYXRlciBhbnl3YXkKLSAgICAgICAgc3R5bGVSZXNvbHZlci5z
dGF0ZSgpLnNldFN0eWxlKHN0eWxlUmVzb2x2ZXIuZGVmYXVsdFN0eWxlRm9yRWxlbWVudCgpKTsK
LSAgICAgICAgc3R5bGVSZXNvbHZlci51cGRhdGVGb250KCk7Ci0KLSAgICAgICAgaW5pdGlhbFZh
bHVlID0gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGRl
c2NyaXB0b3IubmFtZSwgZGVzY3JpcHRvci5zeW50YXgsIHRva2VuaXplci50b2tlblJhbmdlKCks
IHN0eWxlUmVzb2x2ZXIsIHN0cmljdENTU1BhcnNlckNvbnRleHQoKSk7Ci0KLSAgICAgICAgaWYg
KCFpbml0aWFsVmFsdWUgfHwgIWluaXRpYWxWYWx1ZS0+aXNSZXNvbHZlZCgpKQorICAgICAgICBh
dXRvIHByaW1pdGl2ZVZhbCA9IHBhcnNlci5wYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5Q3Vz
dG9tLCBkZXNjcmlwdG9yLmluaXRpYWxWYWx1ZSk7CisgICAgICAgIGlmICghcHJpbWl0aXZlVmFs
IHx8ICFwcmltaXRpdmVWYWwtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTeW50YXhFcnJvciwgIlRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMg
bm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LiIgfTsKIAogICAgICAgICBIYXNoU2V0PENT
U1Byb3BlcnR5SUQ+IGRlcGVuZGVuY2llczsKLSAgICAgICAgaW5pdGlhbFZhbHVlLT5jb2xsZWN0
RGlyZWN0Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhkZXBlbmRlbmNpZXMpOwotICAgICAgICBp
bml0aWFsVmFsdWUtPmNvbGxlY3REaXJlY3RSb290Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhk
ZXBlbmRlbmNpZXMpOworICAgICAgICBwcmltaXRpdmVWYWwtPmNvbGxlY3REaXJlY3RDb21wdXRh
dGlvbmFsRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcyk7CisgICAgICAgIHByaW1pdGl2ZVZhbC0+
Y29sbGVjdERpcmVjdFJvb3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcyk7
CiAKICAgICAgICAgaWYgKCFkZXBlbmRlbmNpZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yLCAiVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgbXVz
dCBiZSBjb21wdXRhdGlvbmFsbHkgaW5kZXBlbmRlbnQuIiB9OworCisgICAgICAgIGluaXRpYWxW
YWx1ZS0+c2V0UmVzb2x2ZWRUeXBlZFZhbHVlKFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dExlbmd0aChzdHlsZVJlc29sdmVyLCAqcHJpbWl0aXZlVmFsKSk7CiAgICAgfQogCi0gICAgQ1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5IHByb3BlcnR5IHsgZGVzY3JpcHRvci5uYW1lLCBkZXNj
cmlwdG9yLnN5bnRheCwgZGVzY3JpcHRvci5pbmhlcml0cywgV1RGTW92ZShpbml0aWFsVmFsdWUp
IH07CisgICAgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5IHByb3BlcnR5IHsgZGVzY3JpcHRv
ci5uYW1lLCBkZXNjcmlwdG9yLmluaGVyaXRzLCBXVEZNb3ZlKGluaXRpYWxWYWx1ZSkgfTsKICAg
ICBpZiAoIWRvY3VtZW50LnJlZ2lzdGVyQ1NTUHJvcGVydHkoV1RGTW92ZShwcm9wZXJ0eSkpKQog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yLCAiVGhp
cyBwcm9wZXJ0eSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQuIiB9OwogCi0gICAgZG9jdW1l
bnQuc3R5bGVTY29wZSgpLmRpZENoYW5nZVN0eWxlU2hlZXRFbnZpcm9ubWVudCgpOwotCiAgICAg
cmV0dXJuIHsgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAzODNhYzhlZTRmNjZlNTE5YTU3OWM5YjZk
YmQ0ODhkMWZkY2RjOWRhLi5lMjhiMzRjMGQ5MWU3Nzg1YTQ3YTc4YzhiYzEzMDkwNTZmZmExMTlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmNwcApAQCAtMjI2LDE2ICsyMjYsNiBAQCBib29sIFByb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbjo6aXNQcm9wZXJ0eUltcGxpY2l0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YQogRXhjZXB0aW9uT3I8dm9pZD4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQ
cm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwg
Y29uc3QgU3RyaW5nJiBwcmlvcml0eSkKIHsKICAgICBTdHlsZUF0dHJpYnV0ZU11dGF0aW9uU2Nv
cGUgbXV0YXRpb25TY29wZSh0aGlzKTsKLQotICAgIGlmICghd2lsbE11dGF0ZSgpKQotICAgICAg
ICByZXR1cm4geyB9OwotCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbnVsbHB0cjsKLQotICAg
IGlmIChwYXJlbnRFbGVtZW50KCkpCi0gICAgICAgIGRvY3VtZW50ID0gJnBhcmVudEVsZW1lbnQo
KS0+ZG9jdW1lbnQoKTsKLSAgICBlbHNlCi0gICAgICAgIGRvY3VtZW50ID0gcGFyZW50U3R5bGVT
aGVldCgpLT5vd25lckRvY3VtZW50KCk7CiAgICAgCiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChpc0N1c3RvbVByb3Bl
cnR5TmFtZShwcm9wZXJ0eU5hbWUpKQpAQCAtMjQzLDEzICsyMzMsMTYgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eShjb25zdCBT
dHJpbmcmIHByb3AKICAgICBpZiAoIXByb3BlcnR5SUQpCiAgICAgICAgIHJldHVybiB7IH07CiAK
KyAgICBpZiAoIXdpbGxNdXRhdGUoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIGJvb2wg
aW1wb3J0YW50ID0gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShwcmlvcml0eSwgImltcG9ydGFudCIp
OwogICAgIGlmICghaW1wb3J0YW50ICYmICFwcmlvcml0eS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiB7IH07CiAKICAgICBib29sIGNoYW5nZWQ7CiAgICAgaWYgKHByb3BlcnR5SUQgPT0gQ1NT
UHJvcGVydHlDdXN0b20pCi0gICAgICAgIGNoYW5nZWQgPSBtX3Byb3BlcnR5U2V0LT5zZXRDdXN0
b21Qcm9wZXJ0eShkb2N1bWVudCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgaW1wb3J0YW50LCBjc3NQ
YXJzZXJDb250ZXh0KCkpOworICAgICAgICBjaGFuZ2VkID0gbV9wcm9wZXJ0eVNldC0+c2V0Q3Vz
dG9tUHJvcGVydHkocHJvcGVydHlOYW1lLCB2YWx1ZSwgaW1wb3J0YW50LCBjc3NQYXJzZXJDb250
ZXh0KCkpOwogICAgIGVsc2UKICAgICAgICAgY2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldFBy
b3BlcnR5KHByb3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlckNvbnRleHQoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCAyMDAwZmRjMWY1
NWUyMWM2Njg3MWZiOTBhMWQ1N2ZiZjRjN2Y3YTI1Li4wYzQ3ZGEyMmVmZWExMGJhN2ZhZDkxMjgz
YWQzMWFmMzY5MTc0ZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWls
ZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5o
CkBAIC0xODc5LDEzICsxODc5LDEzIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlWYWx1ZVN0cm9rZUNvbG9yKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2CiAKIGlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQ3VzdG9tUHJvcGVydHkoU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3Bl
cnR5KiByZWdpc3RlcmVkLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7Ci0gICAgaWYgKHJl
Z2lzdGVyZWQgJiYgcmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlKCkpIHsKKyAgICBpZiAocmVnaXN0
ZXJlZCkgewogICAgICAgICBhdXRvIGluaXRpYWxWYWx1ZSA9IHJlZ2lzdGVyZWQtPmluaXRpYWxW
YWx1ZUNvcHkoKTsKICAgICAgICAgYXBwbHlWYWx1ZUN1c3RvbVByb3BlcnR5KHN0eWxlUmVzb2x2
ZXIsIHJlZ2lzdGVyZWQsICppbml0aWFsVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgYXV0byBpbnZhbGlkID0gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlVW5yZXNv
bHZlZChuYW1lLCBDU1NWYWx1ZUludmFsaWQpOworICAgIGF1dG8gaW52YWxpZCA9IENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU6OmNyZWF0ZVdpdGhJRChuYW1lLCBDU1NWYWx1ZUludmFsaWQpOwogICAg
IGFwcGx5VmFsdWVDdXN0b21Qcm9wZXJ0eShzdHlsZVJlc29sdmVyLCByZWdpc3RlcmVkLCBpbnZh
bGlkLmdldCgpKTsKIH0KIApAQCAtMTkwMCwxMyArMTkwMCwxMiBAQCBpbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEN1c3RvbVByb3BlcnR5KFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUgogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDdXN0
b21Qcm9wZXJ0eShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NSZWdpc3Rl
cmVkQ3VzdG9tUHJvcGVydHkqIHJlZ2lzdGVyZWQsIENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIHZh
bHVlKQogewotICAgIEFTU0VSVCh2YWx1ZS5pc1Jlc29sdmVkKCkpOwogICAgIGNvbnN0IGF1dG8m
IG5hbWUgPSB2YWx1ZS5uYW1lKCk7CiAKICAgICBpZiAoIXJlZ2lzdGVyZWQgfHwgcmVnaXN0ZXJl
ZC0+aW5oZXJpdHMpCi0gICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0SW5oZXJpdGVk
Q3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBtYWtlUmVmKHZhbHVlKSk7CisgICAgICAgIHN0eWxl
UmVzb2x2ZXIuc3R5bGUoKS0+c2V0SW5oZXJpdGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBt
YWtlUmVmKHZhbHVlKSwgcmVnaXN0ZXJlZCk7CiAgICAgZWxzZQotICAgICAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldE5vbkluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgbWFr
ZVJlZih2YWx1ZSkpOworICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldE5vbkluaGVy
aXRlZEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgbWFrZVJlZih2YWx1ZSksIHJlZ2lzdGVyZWQp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnRpZXMuY3BwCmluZGV4IDVhY2I0OGY5MTFhMzcxNzhmYWU4YTgwZTE3ODNlNjliNzU4OGNiNTgu
LjVkNzhmOGMxN2ZlMWRlZjFiMjJmZmRlNDRlMTUyZGI0ZjY1YjA3ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCkBAIC0yOCw4ICsyOCw2IEBACiAjaW5jbHVkZSAiQ1NT
RGVmZXJyZWRQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQ
ZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUuaCIKLSNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlci5o
IgotI2luY2x1ZGUgIkNTU1Rva2VuaXplci5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMu
aCIKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIK
QEAgLTc4MSw3ICs3NzksNyBAQCBib29sIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBz
ZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50LCBwYXJzZXJDb250ZXh0KTsK
IH0KIAotYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpzZXRDdXN0b21Qcm9wZXJ0eShjb25z
dCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBT
dHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwgQ1NTUGFyc2VyQ29udGV4dCBwYXJzZXJDb250
ZXh0KQorYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpzZXRDdXN0b21Qcm9wZXJ0eShjb25z
dCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRh
bnQsIENTU1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4dCkKIHsKICAgICAvLyBTZXR0aW5nIHRo
ZSB2YWx1ZSB0byBhbiBlbXB0eSBzdHJpbmcganVzdCByZW1vdmVzIHRoZSBwcm9wZXJ0eSBpbiBi
b3RoIElFIGFuZCBHZWNrby4KICAgICAvLyBTZXR0aW5nIGl0IHRvIG51bGwgc2VlbXMgdG8gcHJv
ZHVjZSBsZXNzIGNvbnNpc3RlbnQgcmVzdWx0cywgYnV0IHdlIHRyZWF0IGl0IGp1c3QgdGhlIHNh
bWUuCkBAIC03ODksMTcgKzc4Nyw2IEBAIGJvb2wgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6c2V0
Q3VzdG9tUHJvcGVydHkoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTCiAgICAgICAg
IHJldHVybiByZW1vdmVDdXN0b21Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUpOwogCiAgICAgcGFyc2Vy
Q29udGV4dC5tb2RlID0gY3NzUGFyc2VyTW9kZSgpOwotCi0gICAgU3RyaW5nIHN5bnRheCA9ICIq
IjsKLSAgICBhdXRvKiByZWdpc3RlcmVkID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+Z2V0Q1NTUmVn
aXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0KCkuZ2V0KHByb3BlcnR5TmFtZSkgOiBudWxscHRyOwot
Ci0gICAgaWYgKHJlZ2lzdGVyZWQpCi0gICAgICAgIHN5bnRheCA9IHJlZ2lzdGVyZWQtPnN5bnRh
eDsKLQotICAgIENTU1Rva2VuaXplciB0b2tlbml6ZXIodmFsdWUpOwotICAgIGlmICghQ1NTUHJv
cGVydHlQYXJzZXI6OmNhblBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKHN5bnRheCwgdG9r
ZW5pemVyLnRva2VuUmFuZ2UoKSwgcGFyc2VyQ29udGV4dCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQogICAgIC8vIFdoZW4gcmVwbGFjaW5nIGFuIGV4aXN0aW5nIHByb3BlcnR5IHZhbHVlLCB0
aGlzIG1vdmVzIHRoZSBwcm9wZXJ0eSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LgogICAgIC8vIEZp
cmVmb3ggcHJlc2VydmVzIHRoZSBwb3NpdGlvbiwgYW5kIE1TSUUgbW92ZXMgdGhlIHByb3BlcnR5
IHRvIHRoZSBiZWdpbm5pbmcuCiAgICAgcmV0dXJuIENTU1BhcnNlcjo6cGFyc2VDdXN0b21Qcm9w
ZXJ0eVZhbHVlKCp0aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBpbXBvcnRhbnQsIHBhcnNlckNv
bnRleHQpID09IENTU1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkNoYW5nZWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0aWVzLmgKaW5kZXggODM5YTU0NDNmOTE3OGEyMmUzMGI2ZjA4N2IyYzE5OTg2
NGNmMzU4Yy4uM2Y0YjY1YWI3Mjg4ZGQwZjNiMTYxYmE0MWJkNTA1ZGYyZTM3NTUwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaApAQCAtMjQ5LDcgKzI0OSw3IEBAIHB1YmxpYzoK
ICAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDQ+IG1fcHJvcGVydHlWZWN0b3I7CiAKICAgICAvLyBN
ZXRob2RzIGZvciBxdWVyeWluZyBhbmQgYWx0ZXJpbmcgQ1NTIGN1c3RvbSBwcm9wZXJ0aWVzLgot
ICAgIGJvb2wgc2V0Q3VzdG9tUHJvcGVydHkoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcm
IHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIENTU1Bh
cnNlckNvbnRleHQpOworICAgIGJvb2wgc2V0Q3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJz
ZXJDb250ZXh0KTsKICAgICBib29sIHJlbW92ZUN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYg
cHJvcGVydHlOYW1lLCBTdHJpbmcqIHJldHVyblRleHQgPSBudWxscHRyKTsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAyMGY1YjJlMzBjMDFmYTNmNzQz
ZWQwNzU1MzBhMzhiMDVmZWQ1MDgwLi5kNGUwNmJjY2YzMzYwZDFjYTQwYzA3MjgwMmY0NTAwYzU5
ZmRhMDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0zMjEsNyArMzIx
LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6OnVwZGF0ZUNvbnZlcnNpb25E
YXRhKCkKICAgICBtX2Nzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgPSBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhKG1fc3R5bGUuZ2V0KCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgbV9lbGVtZW50ID8g
bV9lbGVtZW50LT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSA6IG51bGxwdHIpOwogfQogCi12b2lk
IFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpzZXRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHN0eWxlKQoraW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFN0eWxlKHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCiB7CiAgICAgbV9zdHlsZSA9IFdURk1v
dmUoc3R5bGUpOwogICAgIHVwZGF0ZUNvbnZlcnNpb25EYXRhKCk7CkBAIC00MjksMjEgKzQyOSwy
MSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9y
S2V5ZnJhbWUoY29uc3QgUmVuZGVyU3R5bGUqCiAgICAgQ2FzY2FkZWRQcm9wZXJ0aWVzIGNhc2Nh
ZGUoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSk7CiAgICAgY2FzY2FkZS5hZGROb3JtYWxNYXRjaGVz
KHJlc3VsdCwgMCwgcmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzKCkuc2l6ZSgpIC0gMSk7CiAKLSAg
ICBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSBhcHBseVN0YXRlIHsgdGhpcywgJmNhc2NhZGUs
ICZyZXN1bHQgfTsKLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhmaXJzdENTU1Byb3BlcnR5
LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHksIGFwcGx5U3RhdGUpOworICAgIC8vIFJlc29sdmUg
Y3VzdG9tIHByb3BlcnRpZXMgZmlyc3QuCisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2Fz
Y2FkZSwgQ1NTUHJvcGVydHlDdXN0b20sIENTU1Byb3BlcnR5Q3VzdG9tLCAmcmVzdWx0KTsKKwor
ICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0Q1NTUHJvcGVydHksIGxh
c3RIaWdoUHJpb3JpdHlQcm9wZXJ0eSwgJnJlc3VsdCk7CiAKICAgICAvLyBJZiBvdXIgZm9udCBn
b3QgZGlydGllZCwgdXBkYXRlIGl0IG5vdy4KICAgICB1cGRhdGVGb250KCk7CiAKLSAgICAvLyBO
b3cgcmVzb2x2ZSByZW1haW5pbmcgY3VzdG9tIHByb3BlcnRpZXMgYW5kIHRoZSByZXN0LCBpbiBh
bnkgb3JkZXIKLSAgICBmb3IgKGF1dG8gaXQgPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5i
ZWdpbigpOyBpdCAhPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5lbmQoKTsgKytpdCkKLSAg
ICAgICAgYXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KGl0LT5rZXksIGFwcGx5U3RhdGUpOwot
ICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGZpcnN0TG93UHJpb3JpdHlQcm9wZXJ0eSwgbGFz
dENTU1Byb3BlcnR5LCBhcHBseVN0YXRlKTsKKyAgICAvLyBOb3cgZG8gcmVzdCBvZiB0aGUgcHJv
cGVydGllcy4KKyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdExvd1By
aW9yaXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwgJnJlc3VsdCk7CiAKICAgICAvLyBJZiBv
dXIgZm9udCBnb3QgZGlydGllZCBieSBvbmUgb2YgdGhlIG5vbi1lc3NlbnRpYWwgZm9udCBwcm9w
cywgdXBkYXRlIGl0IGEgc2Vjb25kIHRpbWUuCiAgICAgdXBkYXRlRm9udCgpOwogCi0gICAgY2Fz
Y2FkZS5hcHBseURlZmVycmVkUHJvcGVydGllcygqdGhpcywgYXBwbHlTdGF0ZSk7CisgICAgY2Fz
Y2FkZS5hcHBseURlZmVycmVkUHJvcGVydGllcygqdGhpcywgJnJlc3VsdCk7CiAKICAgICBhZGp1
c3RSZW5kZXJTdHlsZSgqc3RhdGUuc3R5bGUoKSwgKnN0YXRlLnBhcmVudFN0eWxlKCksIG51bGxw
dHIsIG51bGxwdHIpOwogCkBAIC02MzUsMTggKzYzNSwxNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yUGFnZShpbnQgcGFnZUluZGV4KQogICAg
IENhc2NhZGVkUHJvcGVydGllcyBjYXNjYWRlKGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpOwogICAg
IGNhc2NhZGUuYWRkTm9ybWFsTWF0Y2hlcyhyZXN1bHQsIDAsIHJlc3VsdC5tYXRjaGVkUHJvcGVy
dGllcygpLnNpemUoKSAtIDEpOwogCi0gICAgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgYXBw
bHlTdGF0ZSB7IHRoaXMsICZjYXNjYWRlLCAmcmVzdWx0IH07Ci0gICAgYXBwbHlDYXNjYWRlZFBy
b3BlcnRpZXMoZmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCBhcHBs
eVN0YXRlKTsKKyAgICAvLyBSZXNvbHZlIGN1c3RvbSBwcm9wZXJ0aWVzIGZpcnN0LgorICAgIGFw
cGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBDU1NQcm9w
ZXJ0eUN1c3RvbSwgJnJlc3VsdCk7CisKKyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNj
YWRlLCBmaXJzdENTU1Byb3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHksICZyZXN1bHQp
OwogCiAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRpZWQsIHVwZGF0ZSBpdCBub3cuCiAgICAg
dXBkYXRlRm9udCgpOwogCi0gICAgLy8gTm93IHJlc29sdmUgcmVtYWluaW5nIGN1c3RvbSBwcm9w
ZXJ0aWVzIGFuZCB0aGUgcmVzdCwgaW4gYW55IG9yZGVyCi0gICAgZm9yIChhdXRvIGl0ID0gY2Fz
Y2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCkuYmVnaW4oKTsgaXQgIT0gY2FzY2FkZS5jdXN0b21Qcm9w
ZXJ0aWVzKCkuZW5kKCk7ICsraXQpCi0gICAgICAgIGFwcGx5Q2FzY2FkZWRDdXN0b21Qcm9wZXJ0
eShpdC0+a2V5LCBhcHBseVN0YXRlKTsKLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhmaXJz
dExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwgYXBwbHlTdGF0ZSk7CisgICAg
YXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RMb3dQcmlvcml0eVByb3BlcnR5
LCBsYXN0Q1NTUHJvcGVydHksICZyZXN1bHQpOwogCi0gICAgY2FzY2FkZS5hcHBseURlZmVycmVk
UHJvcGVydGllcygqdGhpcywgYXBwbHlTdGF0ZSk7CisgICAgY2FzY2FkZS5hcHBseURlZmVycmVk
UHJvcGVydGllcygqdGhpcywgJnJlc3VsdCk7CiAKICAgICAvLyBOb3cgcmV0dXJuIHRoZSBzdHls
ZS4KICAgICByZXR1cm4gbV9zdGF0ZS50YWtlU3R5bGUoKTsKQEAgLTEzNzIsMjAgKzEzNzEsMTcg
QEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseU1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0IE1hdGNo
UmVzdWx0JiBtYXRjaFJlc3VsdCwgY29uc3QKICAgICAgICAgY2FzY2FkZS5hZGROb3JtYWxNYXRj
aGVzKG1hdGNoUmVzdWx0LCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVz
dWx0LnJhbmdlcy5sYXN0VUFSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOwogICAgICAgICBjYXNj
YWRlLmFkZEltcG9ydGFudE1hdGNoZXMobWF0Y2hSZXN1bHQsIG1hdGNoUmVzdWx0LnJhbmdlcy5m
aXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGFwcGx5SW5oZXJpdGVk
T25seSk7CiAKLSAgICAgICAgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgYXBwbHlTdGF0ZSB7
IHRoaXMsICZjYXNjYWRlLCAmbWF0Y2hSZXN1bHQgfTsKLQotICAgICAgICBhcHBseUNhc2NhZGVk
UHJvcGVydGllcyhDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgQ1NTUHJvcGVydHlXZWJr
aXRSdWJ5UG9zaXRpb24sIGFwcGx5U3RhdGUpOworICAgICAgICBhcHBseUNhc2NhZGVkUHJvcGVy
dGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgQ1NTUHJvcGVydHlX
ZWJraXRSdWJ5UG9zaXRpb24sICZtYXRjaFJlc3VsdCk7CiAgICAgICAgIGFkanVzdFN0eWxlRm9y
SW50ZXJDaGFyYWN0ZXJSdWJ5KCk7CiAKLSAgICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMo
Zmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCBhcHBseVN0YXRlKTsK
KyAgICAgICAgLy8gUmVzb2x2ZSBjdXN0b20gdmFyaWFibGVzIGZpcnN0LgorICAgICAgICBhcHBs
eUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eUN1c3RvbSwgQ1NTUHJvcGVy
dHlDdXN0b20sICZtYXRjaFJlc3VsdCk7CiAKLSAgICAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRp
cnRpZWQsIHVwZGF0ZSBpdCBub3cuCi0gICAgICAgIHVwZGF0ZUZvbnQoKTsKKyAgICAgICAgLy8g
U3RhcnQgYnkgYXBwbHlpbmcgcHJvcGVydGllcyB0aGF0IG90aGVyIHByb3BlcnRpZXMgbWF5IGRl
cGVuZCBvbi4KKyAgICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RD
U1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCAmbWF0Y2hSZXN1bHQpOwogCi0g
ICAgICAgIC8vIE5vdyByZXNvbHZlIHJlbWFpbmluZyBjdXN0b20gcHJvcGVydGllcyBhbmQgdGhl
IHJlc3QsIGluIGFueSBvcmRlcgotICAgICAgICBmb3IgKGF1dG8gaXQgPSBjYXNjYWRlLmN1c3Rv
bVByb3BlcnRpZXMoKS5iZWdpbigpOyBpdCAhPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5l
bmQoKTsgKytpdCkKLSAgICAgICAgICAgIGFwcGx5Q2FzY2FkZWRDdXN0b21Qcm9wZXJ0eShpdC0+
a2V5LCBhcHBseVN0YXRlKTsKLSAgICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoZmlyc3RM
b3dQcmlvcml0eVByb3BlcnR5LCBsYXN0Q1NTUHJvcGVydHksIGFwcGx5U3RhdGUpOworICAgICAg
ICB1cGRhdGVGb250KCk7CisgICAgICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUs
IGZpcnN0TG93UHJpb3JpdHlQcm9wZXJ0eSwgbGFzdENTU1Byb3BlcnR5LCAmbWF0Y2hSZXN1bHQp
OwogCiAgICAgICAgIHN0YXRlLmNhY2hlQm9yZGVyQW5kQmFja2dyb3VuZCgpOwogICAgIH0KQEAg
LTEzOTYsMTMgKzEzOTIsMTYgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseU1hdGNoZWRQcm9w
ZXJ0aWVzKGNvbnN0IE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCwgY29uc3QKICAgICBjYXNjYWRl
LmFkZEltcG9ydGFudE1hdGNoZXMobWF0Y2hSZXN1bHQsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJz
dFVzZXJSdWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVzZXJSdWxlLCBhcHBseUluaGVyaXRl
ZE9ubHkpOwogICAgIGNhc2NhZGUuYWRkSW1wb3J0YW50TWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0
Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVs
ZSwgYXBwbHlJbmhlcml0ZWRPbmx5KTsKIAorICAgIC8vIFJlc29sdmUgY3VzdG9tIHByb3BlcnRp
ZXMgZmlyc3QuCisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVy
dHlDdXN0b20sIENTU1Byb3BlcnR5Q3VzdG9tLCAmbWF0Y2hSZXN1bHQpOwogCi0gICAgQXBwbHlD
YXNjYWRlZFByb3BlcnR5U3RhdGUgYXBwbHlTdGF0ZSB7IHRoaXMsICZjYXNjYWRlLCAmbWF0Y2hS
ZXN1bHQgfTsKKyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0
eVdlYmtpdFJ1YnlQb3NpdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRpb24sICZtYXRj
aFJlc3VsdCk7CiAKLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhDU1NQcm9wZXJ0eVdlYmtp
dFJ1YnlQb3NpdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRpb24sIGFwcGx5U3RhdGUp
OworICAgIC8vIEFkanVzdCB0aGUgZm9udCBzaXplIHRvIGJlIHNtYWxsZXIgaWYgcnVieS1wb3Np
dGlvbiBpcyBpbnRlci1jaGFyYWN0ZXIuCiAgICAgYWRqdXN0U3R5bGVGb3JJbnRlckNoYXJhY3Rl
clJ1YnkoKTsKIAotICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGZpcnN0Q1NTUHJvcGVydHks
IGxhc3RIaWdoUHJpb3JpdHlQcm9wZXJ0eSwgYXBwbHlTdGF0ZSk7CisgICAgLy8gU3RhcnQgYnkg
YXBwbHlpbmcgcHJvcGVydGllcyB0aGF0IG90aGVyIHByb3BlcnRpZXMgbWF5IGRlcGVuZCBvbi4K
KyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5LCBs
YXN0SGlnaFByaW9yaXR5UHJvcGVydHksICZtYXRjaFJlc3VsdCk7CiAKICAgICAvLyBJZiB0aGUg
ZWZmZWN0aXZlIHpvb20gdmFsdWUgY2hhbmdlcywgd2UgY2FuJ3QgdXNlIHRoZSBtYXRjaGVkIHBy
b3BlcnRpZXMgY2FjaGUuIFN0YXJ0IG92ZXIuCiAgICAgaWYgKGNhY2hlSXRlbSAmJiBjYWNoZUl0
ZW0tPnJlbmRlclN0eWxlLT5lZmZlY3RpdmVab29tKCkgIT0gc3RhdGUuc3R5bGUoKS0+ZWZmZWN0
aXZlWm9vbSgpKQpAQCAtMTQxNSwxNSArMTQxNCwxMyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFw
cGx5TWF0Y2hlZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0LCBjb25z
dAogICAgIGlmIChjYWNoZUl0ZW0gJiYgY2FjaGVJdGVtLT5yZW5kZXJTdHlsZS0+Zm9udERlc2Ny
aXB0aW9uKCkgIT0gc3RhdGUuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzKG1hdGNoUmVzdWx0LCBlbGVtZW50LCBEb05vdFVz
ZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOwogCi0gICAgLy8gTm93IHJlc29sdmUgcmVtYWluaW5n
IGN1c3RvbSBwcm9wZXJ0aWVzIGFuZCB0aGUgcmVzdCwgaW4gYW55IG9yZGVyCi0gICAgZm9yIChh
dXRvIGl0ID0gY2FzY2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCkuYmVnaW4oKTsgaXQgIT0gY2FzY2Fk
ZS5jdXN0b21Qcm9wZXJ0aWVzKCkuZW5kKCk7ICsraXQpCi0gICAgICAgIGFwcGx5Q2FzY2FkZWRD
dXN0b21Qcm9wZXJ0eShpdC0+a2V5LCBhcHBseVN0YXRlKTsKLSAgICBhcHBseUNhc2NhZGVkUHJv
cGVydGllcyhmaXJzdExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwgYXBwbHlT
dGF0ZSk7CisgICAgLy8gQXBwbHkgcHJvcGVydGllcyB0aGF0IG5vIG90aGVyIHByb3BlcnRpZXMg
ZGVwZW5kIG9uLgorICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0TG93
UHJpb3JpdHlQcm9wZXJ0eSwgbGFzdENTU1Byb3BlcnR5LCAmbWF0Y2hSZXN1bHQpOwogCiAgICAg
Ly8gRmluYWxseSwgc29tZSBwcm9wZXJ0aWVzIG11c3QgYmUgYXBwbGllZCBpbiB0aGUgb3JkZXIg
dGhleSB3ZXJlIHBhcnNlZC4KICAgICAvLyBUaGVyZSBhcmUgc29tZSBDU1MgcHJvcGVydGllcyB0
aGF0IGFmZmVjdCB0aGUgc2FtZSBSZW5kZXJTdHlsZSB2YWx1ZXMsCiAgICAgLy8gc28gdG8gcHJl
c2VydmUgYmVoYXZpb3IsIHdlIHF1ZXVlIHRoZW0gdXAgZHVyaW5nIGNhc2NhZGUgYW5kIGZsdXNo
IGhlcmUuCi0gICAgY2FzY2FkZS5hcHBseURlZmVycmVkUHJvcGVydGllcygqdGhpcywgYXBwbHlT
dGF0ZSk7CisgICAgY2FzY2FkZS5hcHBseURlZmVycmVkUHJvcGVydGllcygqdGhpcywgJm1hdGNo
UmVzdWx0KTsKIAogICAgIEFTU0VSVCghc3RhdGUuZm9udERpcnR5KCkpOwogCkBAIC0xNDQ0LDkg
KzE0NDEsOCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHlUb1N0eWxlKENTU1By
b3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwgc3RkOgogCiB2b2lkIFN0eWxlUmVzb2x2ZXI6
OmFwcGx5UHJvcGVydHlUb0N1cnJlbnRTdHlsZShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSog
dmFsdWUpCiB7Ci0gICAgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgYXBwbHlTdGF0ZSB7IHRo
aXMsIG51bGxwdHIsIG51bGxwdHIgfTsKICAgICBpZiAodmFsdWUpCi0gICAgICAgIGFwcGx5UHJv
cGVydHkoaWQsIHZhbHVlLCBhcHBseVN0YXRlKTsKKyAgICAgICAgYXBwbHlQcm9wZXJ0eShpZCwg
dmFsdWUpOwogfQogCiBpbmxpbmUgYm9vbCBpc1ZhbGlkVmlzaXRlZExpbmtQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUlEIGlkKQpAQCAtMTYxMywxOCArMTYwOSwxNiBAQCBTdHlsZVJlc29sdmVyOjpDYXNj
YWRlZFByb3BlcnRpZXMqIFN0eWxlUmVzb2x2ZXI6OmNhc2NhZGVkUHJvcGVydGllc0ZvclJvbGxi
YWNrKAogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBBcHBseUNhc2NhZGVk
UHJvcGVydHlTdGF0ZSYgYXBwbHlTdGF0ZSwgU2VsZWN0b3JDaGVja2VyOjpMaW5rTWF0Y2hNYXNr
IGxpbmtNYXRjaE1hc2spCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJv
cGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBTZWxlY3RvckNoZWNrZXI6OkxpbmtNYXRjaE1h
c2sgbGlua01hdGNoTWFzaywgY29uc3QgTWF0Y2hSZXN1bHQqIG1hdGNoUmVzdWx0KQogewotICAg
IGF1dG8qIG1hdGNoUmVzdWx0ID0gYXBwbHlTdGF0ZS5tYXRjaFJlc3VsdDsKICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKCFpc1Nob3J0aGFuZENTU1Byb3BlcnR5KGlkKSwgIlNob3J0aGFuZCBwcm9w
ZXJ0eSBpZCA9ICVkIHdhc24ndCBleHBhbmRlZCBhdCBwYXJzaW5nIHRpbWUiLCBpZCk7CiAKICAg
ICBTdGF0ZSYgc3RhdGUgPSBtX3N0YXRlOwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZVRv
QXBwbHkgPSB2YWx1ZTsKICAgICBpZiAodmFsdWUtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlcygpKSB7
Ci0gICAgICAgIHZhbHVlVG9BcHBseSA9IHJlc29sdmVkVmFyaWFibGVWYWx1ZShpZCwgKnZhbHVl
LCBhcHBseVN0YXRlKTsKLSAgICAgICAgLy8gSWYgYXBwbGllZFByb3BlcnRpZXMgYWxyZWFkeSBo
YXMgdGhpcyBpZCwgdGhlbiB3ZSBkZXRlY3RlZCBhIGN5Y2xlLCBhbmQgdGhpcyB2YWx1ZSBzaG91
bGQgYmUgdW5zZXQuCi0gICAgICAgIGlmICghdmFsdWVUb0FwcGx5IHx8IGFwcGx5U3RhdGUuYXBw
bGllZFByb3BlcnRpZXMuY29udGFpbnMoaWQpKSB7CisgICAgICAgIHZhbHVlVG9BcHBseSA9IHJl
c29sdmVkVmFyaWFibGVWYWx1ZShpZCwgKnZhbHVlKTsKKyAgICAgICAgaWYgKCF2YWx1ZVRvQXBw
bHkpIHsKICAgICAgICAgICAgIGlmIChDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShp
ZCkpCiAgICAgICAgICAgICAgICAgdmFsdWVUb0FwcGx5ID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVJbmhlcml0ZWRWYWx1ZSgpOwogICAgICAgICAgICAgZWxzZQpAQCAtMTYzNSw3
ICsxNjI5LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5
SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwgQXBwbHlDYXNjYWQKICAgICBpZiAoQ1NTUHJvcGVydHk6
OmlzRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCkpIHsKICAgICAgICAgQ1NTUHJvcGVydHlJRCBu
ZXdJZCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCwgc3Rh
dGUuc3R5bGUoKS0+ZGlyZWN0aW9uKCksIHN0YXRlLnN0eWxlKCktPndyaXRpbmdNb2RlKCkpOwog
ICAgICAgICBBU1NFUlQobmV3SWQgIT0gaWQpOwotICAgICAgICByZXR1cm4gYXBwbHlQcm9wZXJ0
eShuZXdJZCwgdmFsdWVUb0FwcGx5LmdldCgpLCBhcHBseVN0YXRlLCBsaW5rTWF0Y2hNYXNrKTsK
KyAgICAgICAgcmV0dXJuIGFwcGx5UHJvcGVydHkobmV3SWQsIHZhbHVlVG9BcHBseS5nZXQoKSwg
bGlua01hdGNoTWFzaywgbWF0Y2hSZXN1bHQpOwogICAgIH0KIAogICAgIENTU1ZhbHVlKiB2YWx1
ZVRvQ2hlY2tGb3JJbmhlcml0SW5pdGlhbCA9IHZhbHVlVG9BcHBseS5nZXQoKTsKQEAgLTE2NDYs
OSArMTY0MCw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIEFwcGx5Q2FzY2FkCiAKICAgICBpZiAoaWQgPT0gQ1NT
UHJvcGVydHlDdXN0b20pIHsKICAgICAgICAgY3VzdG9tUHJvcGVydHlWYWx1ZSA9ICZkb3duY2Fz
dDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigqdmFsdWVUb0FwcGx5KTsKLSAgICAgICAgQVNTRVJU
KGN1c3RvbVByb3BlcnR5VmFsdWUtPmlzUmVzb2x2ZWQoKSk7Ci0gICAgICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPENTU1ZhbHVlSUQ+KGN1c3RvbVByb3BlcnR5VmFsdWUtPnZhbHVlKCkp
KQotICAgICAgICAgICAgY3VzdG9tUHJvcGVydHlWYWx1ZUlEID0gV1RGOjpnZXQ8Q1NTVmFsdWVJ
RD4oY3VzdG9tUHJvcGVydHlWYWx1ZS0+dmFsdWUoKSk7CisgICAgICAgIGN1c3RvbVByb3BlcnR5
VmFsdWVJRCA9IGN1c3RvbVByb3BlcnR5VmFsdWUtPnZhbHVlSUQoKTsKICAgICAgICAgYXV0byYg
bmFtZSA9IGN1c3RvbVByb3BlcnR5VmFsdWUtPm5hbWUoKTsKICAgICAgICAgY3VzdG9tUHJvcGVy
dHlSZWdpc3RlcmVkID0gZG9jdW1lbnQoKS5nZXRDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlT
ZXQoKS5nZXQobmFtZSk7CiAgICAgfQpAQCAtMTY3NSwxMyArMTY2NywxMyBAQCB2b2lkIFN0eWxl
UmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVl
LCBBcHBseUNhc2NhZAogICAgICAgICAgICAgICAgIGlmIChjdXN0b21Qcm9wZXJ0eVJlZ2lzdGVy
ZWQgJiYgY3VzdG9tUHJvcGVydHlSZWdpc3RlcmVkLT5pbmhlcml0cyAmJiByb2xsYmFjay0+aGFz
Q3VzdG9tUHJvcGVydHkoY3VzdG9tUHJvcGVydHlWYWx1ZS0+bmFtZSgpKSkgewogICAgICAgICAg
ICAgICAgICAgICBhdXRvIHByb3BlcnR5ID0gcm9sbGJhY2stPmN1c3RvbVByb3BlcnR5KGN1c3Rv
bVByb3BlcnR5VmFsdWUtPm5hbWUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0
eS5jc3NWYWx1ZVtsaW5rTWF0Y2hNYXNrXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5
UHJvcGVydHkocHJvcGVydHkuaWQsIHByb3BlcnR5LmNzc1ZhbHVlW2xpbmtNYXRjaE1hc2tdLCBh
cHBseVN0YXRlLCBsaW5rTWF0Y2hNYXNrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5
UHJvcGVydHkocHJvcGVydHkuaWQsIHByb3BlcnR5LmNzc1ZhbHVlW2xpbmtNYXRjaE1hc2tdLCBs
aW5rTWF0Y2hNYXNrLCBtYXRjaFJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHJvbGxiYWNrLT5oYXNQ
cm9wZXJ0eShpZCkpIHsKICAgICAgICAgICAgICAgICBhdXRvJiBwcm9wZXJ0eSA9IHJvbGxiYWNr
LT5wcm9wZXJ0eShpZCk7CiAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5LmNzc1ZhbHVlW2xp
bmtNYXRjaE1hc2tdKQotICAgICAgICAgICAgICAgICAgICBhcHBseVByb3BlcnR5KHByb3BlcnR5
LmlkLCBwcm9wZXJ0eS5jc3NWYWx1ZVtsaW5rTWF0Y2hNYXNrXSwgYXBwbHlTdGF0ZSwgbGlua01h
dGNoTWFzayk7CisgICAgICAgICAgICAgICAgICAgIGFwcGx5UHJvcGVydHkocHJvcGVydHkuaWQs
IHByb3BlcnR5LmNzc1ZhbHVlW2xpbmtNYXRjaE1hc2tdLCBsaW5rTWF0Y2hNYXNrLCBtYXRjaFJl
c3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0xNzEw
LDEwICsxNzAyLDEwIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIEFwcGx5Q2FzY2FkCiAgICAgU3R5bGVCdWlsZGVy
OjphcHBseVByb3BlcnR5KGlkLCAqdGhpcywgKnZhbHVlVG9BcHBseSwgaXNJbml0aWFsLCBpc0lu
aGVyaXQsIGN1c3RvbVByb3BlcnR5UmVnaXN0ZXJlZCk7CiB9CiAKLVJlZlB0cjxDU1NWYWx1ZT4g
U3R5bGVSZXNvbHZlcjo6cmVzb2x2ZWRWYXJpYWJsZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElE
LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJiBzdGF0
ZSkgY29uc3QKK1JlZlB0cjxDU1NWYWx1ZT4gU3R5bGVSZXNvbHZlcjo6cmVzb2x2ZWRWYXJpYWJs
ZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElELCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpIGNvbnN0
CiB7CiAgICAgQ1NTUGFyc2VyIHBhcnNlcihkb2N1bWVudCgpKTsKLSAgICByZXR1cm4gcGFyc2Vy
LnBhcnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVuY2VzKHByb3BJRCwgdmFsdWUsIHN0YXRlKTsK
KyAgICByZXR1cm4gcGFyc2VyLnBhcnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVuY2VzKHByb3BJ
RCwgdmFsdWUsIGRvY3VtZW50KCkuZ2V0Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0KCks
ICptX3N0YXRlLnN0eWxlKCkpOwogfQogCiBSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZl
cjo6c3R5bGVJbWFnZShDU1NWYWx1ZSYgdmFsdWUpCkBAIC0yMjM1LDEzICsyMjI3LDEzIEBAIHZv
aWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjphZGRJbXBvcnRhbnRNYXRjaGVz
KGNvbnN0IE1hdGNoUmVzdWx0JiBtCiAgICAgICAgIGFkZE1hdGNoKG1hdGNoUmVzdWx0LCBtYXRj
aC5pbmRleCwgdHJ1ZSwgaW5oZXJpdGVkT25seSk7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6
Q2FzY2FkZWRQcm9wZXJ0aWVzOjphcHBseURlZmVycmVkUHJvcGVydGllcyhTdHlsZVJlc29sdmVy
JiByZXNvbHZlciwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIGFwcGx5U3RhdGUpCit2b2lk
IFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YXBwbHlEZWZlcnJlZFByb3BlcnRp
ZXMoU3R5bGVSZXNvbHZlciYgcmVzb2x2ZXIsIGNvbnN0IE1hdGNoUmVzdWx0KiBtYXRjaFJlc3Vs
dCkKIHsKICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogbV9kZWZlcnJlZFByb3BlcnRpZXMpCi0g
ICAgICAgIHByb3BlcnR5LmFwcGx5KHJlc29sdmVyLCBhcHBseVN0YXRlKTsKKyAgICAgICAgcHJv
cGVydHkuYXBwbHkocmVzb2x2ZXIsIG1hdGNoUmVzdWx0KTsKIH0KIAotdm9pZCBTdHlsZVJlc29s
dmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5OjphcHBseShTdHlsZVJlc29sdmVyJiBy
ZXNvbHZlciwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIGFwcGx5U3RhdGUpCit2b2lkIFN0
eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6UHJvcGVydHk6OmFwcGx5KFN0eWxlUmVz
b2x2ZXImIHJlc29sdmVyLCBjb25zdCBNYXRjaFJlc3VsdCogbWF0Y2hSZXN1bHQpCiB7CiAgICAg
U3RhdGUmIHN0YXRlID0gcmVzb2x2ZXIuc3RhdGUoKTsKICAgICBzdGF0ZS5zZXRDYXNjYWRlTGV2
ZWwobGV2ZWwpOwpAQCAtMjI1MCw3ICsyMjQyLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpDYXNj
YWRlZFByb3BlcnRpZXM6OlByb3BlcnR5OjphcHBseShTdHlsZVJlc29sdmVyJiByZXNvbHZlciwK
ICAgICBpZiAoY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHRdKSB7CiAgICAg
ICAgIHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKTsKICAgICAgICAg
c3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZShmYWxzZSk7Ci0gICAgICAg
IHJlc29sdmVyLmFwcGx5UHJvcGVydHkoaWQsIGNzc1ZhbHVlW1NlbGVjdG9yQ2hlY2tlcjo6TWF0
Y2hEZWZhdWx0XSwgYXBwbHlTdGF0ZSwgU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQpOwor
ICAgICAgICByZXNvbHZlci5hcHBseVByb3BlcnR5KGlkLCBjc3NWYWx1ZVtTZWxlY3RvckNoZWNr
ZXI6Ok1hdGNoRGVmYXVsdF0sIFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hEZWZhdWx0LCBtYXRjaFJl
c3VsdCk7CiAgICAgfQogCiAgICAgaWYgKHN0YXRlLnN0eWxlKCktPmluc2lkZUxpbmsoKSA9PSBJ
bnNpZGVMaW5rOjpOb3RJbnNpZGUpCkBAIC0yMjU5LDk5ICsyMjUxLDQzIEBAIHZvaWQgU3R5bGVS
ZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eTo6YXBwbHkoU3R5bGVSZXNvbHZl
ciYgcmVzb2x2ZXIsCiAgICAgaWYgKGNzc1ZhbHVlW1NlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hMaW5r
XSkgewogICAgICAgICBzdGF0ZS5zZXRBcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUodHJ1ZSk7
CiAgICAgICAgIHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoZmFsc2Up
OwotICAgICAgICByZXNvbHZlci5hcHBseVByb3BlcnR5KGlkLCBjc3NWYWx1ZVtTZWxlY3RvckNo
ZWNrZXI6Ok1hdGNoTGlua10sIGFwcGx5U3RhdGUsIFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hMaW5r
KTsKKyAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JD
aGVja2VyOjpNYXRjaExpbmtdLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGluaywgbWF0Y2hSZXN1
bHQpOwogICAgIH0KIAogICAgIGlmIChjc3NWYWx1ZVtTZWxlY3RvckNoZWNrZXI6Ok1hdGNoVmlz
aXRlZF0pIHsKICAgICAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKGZh
bHNlKTsKICAgICAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSh0
cnVlKTsKLSAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0
b3JDaGVja2VyOjpNYXRjaFZpc2l0ZWRdLCBhcHBseVN0YXRlLCBTZWxlY3RvckNoZWNrZXI6Ok1h
dGNoVmlzaXRlZCk7CisgICAgICAgIHJlc29sdmVyLmFwcGx5UHJvcGVydHkoaWQsIGNzc1ZhbHVl
W1NlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hWaXNpdGVkXSwgU2VsZWN0b3JDaGVja2VyOjpNYXRjaFZp
c2l0ZWQsIG1hdGNoUmVzdWx0KTsKICAgICB9CiAKICAgICBzdGF0ZS5zZXRBcHBseVByb3BlcnR5
VG9SZWd1bGFyU3R5bGUodHJ1ZSk7CiAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRl
ZExpbmtTdHlsZShmYWxzZSk7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlDYXNjYWRl
ZEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5
U3RhdGUmIHN0YXRlKQotewotICAgIGlmIChzdGF0ZS5hcHBsaWVkQ3VzdG9tUHJvcGVydGllcy5j
b250YWlucyhuYW1lKSB8fCAhc3RhdGUuY2FzY2FkZS0+Y3VzdG9tUHJvcGVydGllcygpLmNvbnRh
aW5zKG5hbWUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHByb3BlcnR5ID0gc3RhdGUu
Y2FzY2FkZS0+Y3VzdG9tUHJvcGVydGllcygpLmdldChuYW1lKTsKLQotICAgIGZvciAoYXV0byBp
bmRleCA6IHsgU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQsIFNlbGVjdG9yQ2hlY2tlcjo6
TWF0Y2hMaW5rLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoVmlzaXRlZCB9KSB7Ci0gICAgICAgIGlm
ICghcHJvcGVydHkuY3NzVmFsdWVbaW5kZXhdKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGlmIChpbmRleCAhPSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoRGVmYXVsdCAmJiB0aGlzLT5z
dGF0ZSgpLnN0eWxlKCktPmluc2lkZUxpbmsoKSA9PSBJbnNpZGVMaW5rOjpOb3RJbnNpZGUpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZT4gdmFsdWVUb0FwcGx5ID0gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlKGRvd25jYXN0
PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCpwcm9wZXJ0eS5jc3NWYWx1ZVtpbmRleF0pKTsKLQot
ICAgICAgICBpZiAoc3RhdGUuaW5Qcm9ncmVzc1Byb3BlcnRpZXNDdXN0b20uY29udGFpbnMobmFt
ZSkpIHsKLSAgICAgICAgICAgIC8vIFdlIGFyZSBpbiBhIGN5Y2xlLCBzbyByZXNldCB0aGUgdmFs
dWUuCi0gICAgICAgICAgICBzdGF0ZS5hcHBsaWVkQ3VzdG9tUHJvcGVydGllcy5hZGQobmFtZSk7
Ci0gICAgICAgICAgICAvLyBSZXNvbHZlIHRoaXMgdmFsdWUgc28gdGhhdCB3ZSByZXNldCBpdHMg
ZGVwZW5kZW5jaWVzCi0gICAgICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4+KHZhbHVlVG9BcHBseS0+dmFsdWUoKSkpCi0gICAg
ICAgICAgICAgICAgcmVzb2x2ZWRWYXJpYWJsZVZhbHVlKENTU1Byb3BlcnR5Q3VzdG9tLCB2YWx1
ZVRvQXBwbHkuZ2V0KCksIHN0YXRlKTsKLSAgICAgICAgICAgIHZhbHVlVG9BcHBseSA9IENTU0N1
c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVdpdGhJRChuYW1lLCBDU1NWYWx1ZVVuc2V0KTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHN0YXRlLmluUHJvZ3Jlc3NQcm9wZXJ0aWVzQ3VzdG9tLmFkZChu
YW1lKTsKLQotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q1NTVmFyaWFi
bGVSZWZlcmVuY2VWYWx1ZT4+KHZhbHVlVG9BcHBseS0+dmFsdWUoKSkpIHsKLSAgICAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VkVmFsdWUgPSByZXNvbHZlZFZhcmlhYmxlVmFsdWUoQ1NT
UHJvcGVydHlDdXN0b20sIHZhbHVlVG9BcHBseS5nZXQoKSwgc3RhdGUpOwotCi0gICAgICAgICAg
ICBpZiAoIXBhcnNlZFZhbHVlKQotICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gQ1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlV2l0aElEKG5hbWUsIENTU1ZhbHVlVW5zZXQpOwotCi0g
ICAgICAgICAgICB2YWx1ZVRvQXBwbHkgPSBkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
PigqcGFyc2VkVmFsdWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHN0YXRlLmluUHJvZ3Jl
c3NQcm9wZXJ0aWVzQ3VzdG9tLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgICAgICBpZiAoaW5k
ZXggPT0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQpIHsKLSAgICAgICAgICAgICAgICB0
aGlzLT5zdGF0ZSgpLnNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKTsKLSAgICAg
ICAgICAgICAgICB0aGlzLT5zdGF0ZSgpLnNldEFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5
bGUoZmFsc2UpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoaW5kZXggPT0gU2Vs
ZWN0b3JDaGVja2VyOjpNYXRjaExpbmspIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5zdGF0ZSgp
LnNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKTsKLSAgICAgICAgICAgICAgICB0
aGlzLT5zdGF0ZSgpLnNldEFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoZmFsc2UpOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoaW5kZXggPT0gU2VsZWN0b3JDaGVja2Vy
OjpNYXRjaFZpc2l0ZWQpIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5zdGF0ZSgpLnNldEFwcGx5
UHJvcGVydHlUb1JlZ3VsYXJTdHlsZShmYWxzZSk7Ci0gICAgICAgICAgICAgICAgdGhpcy0+c3Rh
dGUoKS5zZXRBcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKHRydWUpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUN1c3RvbSwgdmFsdWVU
b0FwcGx5LnB0cigpLCBzdGF0ZSwgaW5kZXgpOwotICAgICAgICB9Ci0gICAgICAgIHN0YXRlLmlu
UHJvZ3Jlc3NQcm9wZXJ0aWVzQ3VzdG9tLnJlbW92ZShuYW1lKTsKLSAgICAgICAgc3RhdGUuYXBw
bGllZEN1c3RvbVByb3BlcnRpZXMuYWRkKG5hbWUpOwotICAgIH0KLX0KLQotdm9pZCBTdHlsZVJl
c29sdmVyOjphcHBseUNhc2NhZGVkUHJvcGVydGllcyhpbnQgZmlyc3RQcm9wZXJ0eSwgaW50IGxh
c3RQcm9wZXJ0eSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIHN0YXRlKQordm9pZCBTdHls
ZVJlc29sdmVyOjphcHBseUNhc2NhZGVkUHJvcGVydGllcyhDYXNjYWRlZFByb3BlcnRpZXMmIGNh
c2NhZGUsIGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5LCBjb25zdCBNYXRjaFJl
c3VsdCogbWF0Y2hSZXN1bHQpCiB7CiAgICAgZm9yIChpbnQgaWQgPSBmaXJzdFByb3BlcnR5OyBp
ZCA8PSBsYXN0UHJvcGVydHk7ICsraWQpIHsKICAgICAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpOwotICAgICAgICBpZiAoIXN0YXRl
LmNhc2NhZGUtPmhhc1Byb3BlcnR5KHByb3BlcnR5SUQpKQorICAgICAgICBpZiAoIWNhc2NhZGUu
aGFzUHJvcGVydHkocHJvcGVydHlJRCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
QVNTRVJUKHByb3BlcnR5SUQgIT0gQ1NTUHJvcGVydHlDdXN0b20pOwotICAgICAgICBhdXRvJiBw
cm9wZXJ0eSA9IHN0YXRlLmNhc2NhZGUtPnByb3BlcnR5KHByb3BlcnR5SUQpOwotICAgICAgICBB
U1NFUlQoIXNob3VsZEFwcGx5UHJvcGVydHlJblBhcnNlT3JkZXIocHJvcGVydHlJRCkpOwotCi0g
ICAgICAgIGlmIChzdGF0ZS5pblByb2dyZXNzUHJvcGVydGllcy5jb250YWlucyhwcm9wZXJ0eUlE
KSkgewotICAgICAgICAgICAgLy8gV2UgYXJlIGluIGEgY3ljbGUgKGVnLiBzZXR0aW5nIGZvbnQg
c2l6ZSB1c2luZyByZWdpc3RlcmVkIGN1c3RvbSBwcm9wZXJ0eSB2YWx1ZSBjb250YWluaW5nIGVt
KQotICAgICAgICAgICAgLy8gU28gdGhpcyB2YWx1ZSBzaG91bGQgYmUgdW5zZXQKLSAgICAgICAg
ICAgIHN0YXRlLmFwcGxpZWRQcm9wZXJ0aWVzLmFkZChwcm9wZXJ0eUlEKTsKLSAgICAgICAgICAg
IC8vIFRoaXMgcHJvcGVydHkgaXMgaW4gYSBjeWNsZSwgYW5kIG9ubHkgdGhlIHJvb3Qgb2YgdGhl
IGNhbGwgc3RhY2sgd2lsbCBoYXZlIGZpcnN0UHJvcGVydHkgIT0gbGFzdFByb3BlcnR5LgotICAg
ICAgICAgICAgQVNTRVJUKGZpcnN0UHJvcGVydHkgPT0gbGFzdFByb3BlcnR5KTsKKyAgICAgICAg
aWYgKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlDdXN0b20pIHsKKyAgICAgICAgICAgIC8vIEFw
cGx5IGZvbnQgc2l6ZSBmaXJzdCwgc2luY2UgY3VzdG9tIHByb3BlcnRpZXMgbWF5IHJlbHkgb24g
aXQgZm9yIHJlbGF0aXZlIHVuaXQgY2FsY3VsYXRpb25zCisgICAgICAgICAgICAvLyBPbmNlIGl0
IGlzIGFwcGxpZWQgYW5kIHRoZSBjdXN0b20gcHJvcGVydHkgdmFsdWVzIGFyZSBzZXQsIGl0IHdp
bGwgYmUgYXBwbGllZCBhZ2Fpbiwgd2hpY2ggc2hvdWxkCisgICAgICAgICAgICAvLyBoYW5kbGUg
YW55IGZvbnQtc2l6ZSBwcm9wZXJ0aWVzIHRoYXQgcmVseSBvbiByZWdpc3RlcmVkIGN1c3RvbSBw
cm9wZXJ0aWVzLgorICAgICAgICAgICAgLy8gRklYTUUgY3ljbGVzIHNob3VsZCBiZSBkZXRlY3Rl
ZC4KKyAgICAgICAgICAgIGlmIChjYXNjYWRlLmhhc1Byb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNp
emUpKQorICAgICAgICAgICAgICAgIGNhc2NhZGUucHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6
ZSkuYXBwbHkoKnRoaXMsIG1hdGNoUmVzdWx0KTsKKyAgICAgICAgICAgIHVwZGF0ZUZvbnQoKTsK
KworICAgICAgICAgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIENhc2NhZGVkUHJvcGVydGllczo6
UHJvcGVydHk+OjppdGVyYXRvciBlbmQgPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5lbmQo
KTsKKyAgICAgICAgICAgIGZvciAoSGFzaE1hcDxBdG9taWNTdHJpbmcsIENhc2NhZGVkUHJvcGVy
dGllczo6UHJvcGVydHk+OjppdGVyYXRvciBpdCA9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygp
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgICAgICBpdC0+dmFsdWUuYXBw
bHkoKnRoaXMsIG1hdGNoUmVzdWx0KTsKKyAgICAgICAgICAgIG1fc3RhdGUuc3R5bGUoKS0+Y2hl
Y2tWYXJpYWJsZXNJbkN1c3RvbVByb3BlcnRpZXMoZG9jdW1lbnQoKS5nZXRDU1NSZWdpc3RlcmVk
Q3VzdG9tUHJvcGVydHlTZXQoKSwgbV9zdGF0ZS5wYXJlbnRTdHlsZSgpLCAqdGhpcyk7CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotCi0gICAgICAgIHN0YXRlLmluUHJvZ3Jlc3NQ
cm9wZXJ0aWVzLmFkZChwcm9wZXJ0eUlEKTsKLSAgICAgICAgcHJvcGVydHkuYXBwbHkoKnRoaXMs
IHN0YXRlKTsKLSAgICAgICAgc3RhdGUuYXBwbGllZFByb3BlcnRpZXMuYWRkKHByb3BlcnR5SUQp
OwotICAgICAgICBzdGF0ZS5pblByb2dyZXNzUHJvcGVydGllcy5yZW1vdmUocHJvcGVydHlJRCk7
CisgICAgICAgIGF1dG8mIHByb3BlcnR5ID0gY2FzY2FkZS5wcm9wZXJ0eShwcm9wZXJ0eUlEKTsK
KyAgICAgICAgQVNTRVJUKCFzaG91bGRBcHBseVByb3BlcnR5SW5QYXJzZU9yZGVyKHByb3BlcnR5
SUQpKTsKKyAgICAgICAgcHJvcGVydHkuYXBwbHkoKnRoaXMsIG1hdGNoUmVzdWx0KTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDZkODhmNjAxOWEyZDZmNmQ4
ZWRjZWNiZmUzZTE1N2ZhNTc5NmExNTMuLjQ3MDNjZWZjM2JjMmMzYjZiNzQ5NzQ5ODc0MzVjYWU1
ZGNlNWU0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtMjY3LDcgKzI2Nyw3
IEBAIHB1YmxpYzoKICAgICAgICAgQ2FzY2FkZWRQcm9wZXJ0aWVzKFRleHREaXJlY3Rpb24sIFdy
aXRpbmdNb2RlKTsKIAogICAgICAgICBzdHJ1Y3QgUHJvcGVydHkgewotICAgICAgICAgICAgdm9p
ZCBhcHBseShTdHlsZVJlc29sdmVyJiwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmKTsKKyAg
ICAgICAgICAgIHZvaWQgYXBwbHkoU3R5bGVSZXNvbHZlciYsIGNvbnN0IE1hdGNoUmVzdWx0Kik7
CiAKICAgICAgICAgICAgIENTU1Byb3BlcnR5SUQgaWQ7CiAgICAgICAgICAgICBDYXNjYWRlTGV2
ZWwgbGV2ZWw7CkBAIC0yODEsNyArMjgxLDcgQEAgcHVibGljOgogICAgICAgICB2b2lkIGFkZE5v
cm1hbE1hdGNoZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBpbnQgc3RhcnRJbmRleCwgaW50IGVuZElu
ZGV4LCBib29sIGluaGVyaXRlZE9ubHkgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQgYWRkSW1wb3J0
YW50TWF0Y2hlcyhjb25zdCBNYXRjaFJlc3VsdCYsIGludCBzdGFydEluZGV4LCBpbnQgZW5kSW5k
ZXgsIGJvb2wgaW5oZXJpdGVkT25seSA9IGZhbHNlKTsKIAotICAgICAgICB2b2lkIGFwcGx5RGVm
ZXJyZWRQcm9wZXJ0aWVzKFN0eWxlUmVzb2x2ZXImLCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0
ZSYpOworICAgICAgICB2b2lkIGFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVzKFN0eWxlUmVzb2x2ZXIm
LCBjb25zdCBNYXRjaFJlc3VsdCopOwogCiAgICAgICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBQ
cm9wZXJ0eT4mIGN1c3RvbVByb3BlcnRpZXMoKSB7IHJldHVybiBtX2N1c3RvbVByb3BlcnRpZXM7
IH0KICAgICAgICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmKSBjb25zdDsK
QEAgLTMwMiwxMCArMzAyLDcgQEAgcHVibGljOgogICAgICAgICBUZXh0RGlyZWN0aW9uIG1fZGly
ZWN0aW9uOwogICAgICAgICBXcml0aW5nTW9kZSBtX3dyaXRpbmdNb2RlOwogICAgIH07Ci0KLSAg
ICB2b2lkIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFz
dFByb3BlcnR5LCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYpOwotICAgIHZvaWQgYXBwbHlD
YXNjYWRlZEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSwgQXBwbHlDYXNjYWRlZFBy
b3BlcnR5U3RhdGUmKTsKLQorICAgIAogcHJpdmF0ZToKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGZp
eGVzIHVwIHRoZSBkZWZhdWx0IGZvbnQgc2l6ZSBpZiBpdCBkZXRlY3RzIHRoYXQgdGhlIGN1cnJl
bnQgZ2VuZXJpYyBmb250IGZhbWlseSBoYXMgY2hhbmdlZC4gLWR3aAogICAgIHZvaWQgY2hlY2tG
b3JHZW5lcmljRmFtaWx5Q2hhbmdlKFJlbmRlclN0eWxlKiwgY29uc3QgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlKTsKQEAgLTMyNCw2ICszMjEsNyBAQCBwcml2YXRlOgogICAgIGVudW0gU2hvdWxk
VXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSB7IERvTm90VXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNo
ZSA9IDAsIFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUgfTsKICAgICB2b2lkIGFwcGx5TWF0Y2hl
ZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBjb25zdCBFbGVtZW50JiwgU2hvdWxkVXNl
TWF0Y2hlZFByb3BlcnRpZXNDYWNoZSA9IFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOwogCisg
ICAgdm9pZCBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhDYXNjYWRlZFByb3BlcnRpZXMmLCBpbnQg
Zmlyc3RQcm9wZXJ0eSwgaW50IGxhc3RQcm9wZXJ0eSwgY29uc3QgTWF0Y2hSZXN1bHQqKTsKICAg
ICB2b2lkIGNhc2NhZGVNYXRjaGVzKENhc2NhZGVkUHJvcGVydGllcyYsIGNvbnN0IE1hdGNoUmVz
dWx0JiwgYm9vbCBpbXBvcnRhbnQsIGludCBzdGFydEluZGV4LCBpbnQgZW5kSW5kZXgsIGJvb2wg
aW5oZXJpdGVkT25seSk7CiAKICAgICB2b2lkIG1hdGNoUGFnZVJ1bGVzKE1hdGNoUmVzdWx0Jiwg
UnVsZVNldCosIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5n
JiBwYWdlTmFtZSk7CkBAIC00NTcsMTIgKzQ1NSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRX
cml0aW5nTW9kZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkgeyBtX3N0YXRlLnNldFdyaXRpbmdN
b2RlKHdyaXRpbmdNb2RlKTsgfQogICAgIHZvaWQgc2V0VGV4dE9yaWVudGF0aW9uKFRleHRPcmll
bnRhdGlvbiB0ZXh0T3JpZW50YXRpb24pIHsgbV9zdGF0ZS5zZXRUZXh0T3JpZW50YXRpb24odGV4
dE9yaWVudGF0aW9uKTsgfQogCi0gICAgUmVmUHRyPENTU1ZhbHVlPiByZXNvbHZlZFZhcmlhYmxl
VmFsdWUoQ1NTUHJvcGVydHlJRCwgY29uc3QgQ1NTVmFsdWUmLCBBcHBseUNhc2NhZGVkUHJvcGVy
dHlTdGF0ZSYpIGNvbnN0OworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmVzb2x2ZWRWYXJpYWJsZVZh
bHVlKENTU1Byb3BlcnR5SUQsIGNvbnN0IENTU1ZhbHVlJikgY29uc3Q7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBjYWNoZUJvcmRlckFuZEJhY2tncm91bmQoKTsKIAotICAgIHZvaWQgYXBwbHlQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSosIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRl
JiwgU2VsZWN0b3JDaGVja2VyOjpMaW5rTWF0Y2hNYXNrID0gU2VsZWN0b3JDaGVja2VyOjpNYXRj
aERlZmF1bHQpOworICAgIHZvaWQgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1
ZSosIFNlbGVjdG9yQ2hlY2tlcjo6TGlua01hdGNoTWFzayA9IFNlbGVjdG9yQ2hlY2tlcjo6TWF0
Y2hEZWZhdWx0LCBjb25zdCBNYXRjaFJlc3VsdCogPSBudWxscHRyKTsKIAogICAgIHZvaWQgYXBw
bHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSopOwogCkBAIC01MjYsMTkgKzUy
NCw2IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBNYXRjaFJh
bmdlcyYsIGNvbnN0IE1hdGNoUmFuZ2VzJik7CiB9OwogCi0vLyBTdGF0ZSB0byB1c2Ugd2hlbiBh
cHBseWluZyBwcm9wZXJ0aWVzLCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGN1c3RvbSBhbmQgaGln
aC1wcmlvcml0eQotLy8gcHJvcGVydGllcyBoYXZlIGJlZW4gcmVzb2x2ZWQuCi1zdHJ1Y3QgQXBw
bHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgewotICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2
ZXI7Ci0gICAgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzKiBjYXNjYWRlOwotICAg
IGNvbnN0IFN0eWxlUmVzb2x2ZXI6Ok1hdGNoUmVzdWx0KiBtYXRjaFJlc3VsdDsKLSAgICBIYXNo
U2V0PENTU1Byb3BlcnR5SUQ+IGFwcGxpZWRQcm9wZXJ0aWVzID0geyB9OwotICAgIEhhc2hTZXQ8
U3RyaW5nPiBhcHBsaWVkQ3VzdG9tUHJvcGVydGllcyA9IHsgfTsKLSAgICBIYXNoU2V0PENTU1By
b3BlcnR5SUQ+IGluUHJvZ3Jlc3NQcm9wZXJ0aWVzID0geyB9OwotICAgIEhhc2hTZXQ8U3RyaW5n
PiBpblByb2dyZXNzUHJvcGVydGllc0N1c3RvbSA9IHsgfTsKLX07Ci0KLQogaW5saW5lIGJvb2wg
U3R5bGVSZXNvbHZlcjo6aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUoY29uc3QgRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgQXRvbWljU3RyaW5nICZhdHRyaWJ1dGVOYW1lKSBjb25zdAogewogICAgIEFT
U0VSVCghYXR0cmlidXRlTmFtZS5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXIuY3BwCmluZGV4IDBkNmFlZjA4ZjkyNGYwNzg4OWQyY2ExNDEwOGNlNTdhMTg0NWJk
ZDUuLjlkZjBmZDQ1OWY5MDczMzI0NDBkNWU4YTliODE2YjE2NTI0ZGNlZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAKICNpbmNsdWRl
ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJTdHlsZUNvbG9yLmgiCi0jaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUg
IlN0eWxlUnVsZS5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtMTc4LDEwICsxNzcsOCBAQCB2b2lkIENTU1BhcnNl
cjo6cGFyc2VEZWNsYXJhdGlvbkZvckluc3BlY3Rvcihjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBj
b250ZXh0LCBjbwogICAgIENTU1BhcnNlckltcGw6OnBhcnNlRGVjbGFyYXRpb25MaXN0Rm9ySW5z
cGVjdG9yKHN0cmluZywgY29udGV4dCwgb2JzZXJ2ZXIpOwogfQogCi1SZWZQdHI8Q1NTVmFsdWU+
IENTU1BhcnNlcjo6cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5jZXMoQ1NTUHJvcGVydHlJ
RCBwcm9wSUQsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3Rh
dGUmIHN0YXRlKQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlVmFsdWVXaXRoVmFy
aWFibGVSZWZlcmVuY2VzKENTU1Byb3BlcnR5SUQgcHJvcElELCBjb25zdCBDU1NWYWx1ZSYgdmFs
dWUsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYgcmVnaXN0ZXJlZFByb3Bl
cnRpZXMsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBBU1NFUlQoKHByb3BJRCA9
PSBDU1NQcm9wZXJ0eUN1c3RvbSAmJiB2YWx1ZS5pc0N1c3RvbVByb3BlcnR5VmFsdWUoKSkgfHwg
KHByb3BJRCAhPSBDU1NQcm9wZXJ0eUN1c3RvbSAmJiAhdmFsdWUuaXNDdXN0b21Qcm9wZXJ0eVZh
bHVlKCkpKTsKLSAgICBhdXRvJiBzdHlsZSA9ICpzdGF0ZS5zdHlsZVJlc29sdmVyLT5zdHlsZSgp
OwogICAgIGF1dG8gZGlyZWN0aW9uID0gc3R5bGUuZGlyZWN0aW9uKCk7CiAgICAgYXV0byB3cml0
aW5nTW9kZSA9IHN0eWxlLndyaXRpbmdNb2RlKCk7CiAKQEAgLTE5MywxMSArMTkwLDEyIEBAIFJl
ZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNl
cyhDU1NQcm9wZXJ0eUlEIHByb3BJCiAgICAgICAgIGlmIChDU1NQcm9wZXJ0eTo6aXNEaXJlY3Rp
b25Bd2FyZVByb3BlcnR5KHNob3J0aGFuZElEKSkKICAgICAgICAgICAgIHNob3J0aGFuZElEID0g
Q1NTUHJvcGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KHNob3J0aGFuZElELCBk
aXJlY3Rpb24sIHdyaXRpbmdNb2RlKTsKICAgICAgICAgQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1
ZSogc2hvcnRoYW5kVmFsdWUgPSBwZW5kaW5nU3Vic3RpdHV0aW9uLnNob3J0aGFuZFZhbHVlKCk7
Ci0KLSAgICAgICAgYXV0byByZXNvbHZlZERhdGEgPSBzaG9ydGhhbmRWYWx1ZS0+cmVzb2x2ZVZh
cmlhYmxlUmVmZXJlbmNlcyhzdGF0ZSk7Ci0gICAgICAgIGlmICghcmVzb2x2ZWREYXRhKQorICAg
ICAgICBjb25zdCBDU1NWYXJpYWJsZURhdGEqIHZhcmlhYmxlRGF0YSA9IHNob3J0aGFuZFZhbHVl
LT52YXJpYWJsZURhdGFWYWx1ZSgpOworICAgICAgICBBU1NFUlQodmFyaWFibGVEYXRhKTsKKyAg
ICAgICAgCisgICAgICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVzb2x2ZWRUb2tlbnM7Cisg
ICAgICAgIGlmICghdmFyaWFibGVEYXRhLT5yZXNvbHZlVG9rZW5SYW5nZShyZWdpc3RlcmVkUHJv
cGVydGllcywgdmFyaWFibGVEYXRhLT50b2tlbnMoKSwgcmVzb2x2ZWRUb2tlbnMsIHN0eWxlKSkK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBWZWN0b3I8Q1NTUGFyc2VyVG9r
ZW4+IHJlc29sdmVkVG9rZW5zID0gcmVzb2x2ZWREYXRhLT50b2tlbnMoKTsKICAgICAgICAgCiAg
ICAgICAgIFBhcnNlZFByb3BlcnR5VmVjdG9yIHBhcnNlZFByb3BlcnRpZXM7CiAgICAgICAgIGlm
ICghQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVmFsdWUoc2hvcnRoYW5kSUQsIGZhbHNlLCByZXNv
bHZlZFRva2VucywgbV9jb250ZXh0LCBwYXJzZWRQcm9wZXJ0aWVzLCBTdHlsZVJ1bGU6OlN0eWxl
KSkKQEAgLTIxMSwzMyArMjA5LDMxIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJz
ZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNlcyhDU1NQcm9wZXJ0eUlEIHByb3BJCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAgIGNvbnN0IENTU1ZhcmlhYmxlRGF0YSogdmFy
aWFibGVEYXRhID0gbnVsbHB0cjsKKwogICAgIGlmICh2YWx1ZS5pc1ZhcmlhYmxlUmVmZXJlbmNl
VmFsdWUoKSkgewogICAgICAgICBjb25zdCBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlJiB2YWx1
ZVdpdGhSZWZlcmVuY2VzID0gZG93bmNhc3Q8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4odmFs
dWUpOwotICAgICAgICBhdXRvIHJlc29sdmVkRGF0YSA9IHZhbHVlV2l0aFJlZmVyZW5jZXMucmVz
b2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyhzdGF0ZSk7Ci0gICAgICAgIGlmICghcmVzb2x2ZWREYXRh
KQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBDU1NQcm9wZXJ0
eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShwcm9wSUQsIHJlc29sdmVkRGF0YS0+dG9rZW5zKCks
IG1fY29udGV4dCk7CisgICAgICAgIHZhcmlhYmxlRGF0YSA9IHZhbHVlV2l0aFJlZmVyZW5jZXMu
dmFyaWFibGVEYXRhVmFsdWUoKTsKKyAgICAgICAgQVNTRVJUKHZhcmlhYmxlRGF0YSk7CiAgICAg
fQogCi0gICAgY29uc3QgYXV0byYgY3VzdG9tUHJvcFZhbHVlID0gZG93bmNhc3Q8Q1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZT4odmFsdWUpOwotICAgIGNvbnN0IGF1dG8mIHZhbHVlV2l0aFJlZmVyZW5j
ZXMgPSBXVEY6OmdldDxSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4+KGN1c3RvbVByb3BW
YWx1ZS52YWx1ZSgpKS5nZXQoKTsKKyAgICBpZiAodmFsdWUuaXNDdXN0b21Qcm9wZXJ0eVZhbHVl
KCkpIHsKKyAgICAgICAgY29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSYgY3VzdG9tUHJvcFZh
bHVlID0gZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4odmFsdWUpOwogCi0gICAgYXV0
byYgbmFtZSA9IGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KHZhbHVlKS5uYW1lKCk7
Ci0gICAgYXV0byogcmVnaXN0ZXJlZCA9IHN0YXRlLnN0eWxlUmVzb2x2ZXItPmRvY3VtZW50KCku
Z2V0Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0KCkuZ2V0KG5hbWUpOwotICAgIGF1dG8m
IHN5bnRheCA9IHJlZ2lzdGVyZWQgPyByZWdpc3RlcmVkLT5zeW50YXggOiAiKiI7Ci0gICAgYXV0
byByZXNvbHZlZERhdGEgPSB2YWx1ZVdpdGhSZWZlcmVuY2VzLnJlc29sdmVWYXJpYWJsZVJlZmVy
ZW5jZXMoc3RhdGUpOworICAgICAgICBpZiAoY3VzdG9tUHJvcFZhbHVlLnJlc29sdmVkVHlwZWRW
YWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoKmN1
c3RvbVByb3BWYWx1ZS5yZXNvbHZlZFR5cGVkVmFsdWUoKSwgc3R5bGUpOwogCi0gICAgaWYgKCFy
ZXNvbHZlZERhdGEpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB2YXJpYWJsZURh
dGEgPSBjdXN0b21Qcm9wVmFsdWUudmFsdWUoKTsKKyAgICB9CiAKLSAgICAvLyBGSVhNRSBoYW5k
bGUgUkVNIGN5Y2xlcy4KLSAgICBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+IGRlcGVuZGVuY2llczsK
LSAgICBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29sbGVjdFBhcnNlZEN1c3RvbVByb3BlcnR5VmFsdWVE
ZXBlbmRlbmNpZXMoc3ludGF4LCBmYWxzZSwgZGVwZW5kZW5jaWVzLCByZXNvbHZlZERhdGEtPnRv
a2VucygpLCBtX2NvbnRleHQpOworICAgIGlmICghdmFyaWFibGVEYXRhKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIGZvciAoYXV0byBpZCA6IGRlcGVuZGVuY2llcykKLSAgICAgICAg
c3RhdGUuc3R5bGVSZXNvbHZlci0+YXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoaWQsIGlkLCBzdGF0
ZSk7CisgICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiByZXNvbHZlZFRva2VuczsKKyAgICBpZiAo
IXZhcmlhYmxlRGF0YS0+cmVzb2x2ZVRva2VuUmFuZ2UocmVnaXN0ZXJlZFByb3BlcnRpZXMsIHZh
cmlhYmxlRGF0YS0+dG9rZW5zKCksIHJlc29sdmVkVG9rZW5zLCBzdHlsZSkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVR5cGVk
Q3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBzeW50YXgsIHJlc29sdmVkRGF0YS0+dG9rZW5zKCks
ICpzdGF0ZS5zdHlsZVJlc29sdmVyLCBtX2NvbnRleHQpOworICAgIHJldHVybiBDU1NQcm9wZXJ0
eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShwcm9wSUQsIHJlc29sdmVkVG9rZW5zLCBtX2NvbnRl
eHQpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPGRvdWJsZT4+IENTU1BhcnNlcjo6cGFy
c2VLZXlmcmFtZUtleUxpc3QoY29uc3QgU3RyaW5nJiBzZWxlY3RvcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlci5oCmluZGV4IDQ3MDYzY2RmYjlhMjU1YzU2YmZkYzQ1ZjZjZTRiMDM2
NDQxMTAwZmEuLjA5YmE0YjAzMGE2YzVmNmEyYTVmMTJhNjkxYjAwOGNiNTI1ZWVhM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaApAQCAtMzAsNyArMzAsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZTsKIGNs
YXNzIENTU1BhcnNlck9ic2VydmVyOwogY2xhc3MgQ1NTU2VsZWN0b3JMaXN0OwogY2xhc3MgQ29s
b3I7CkBAIC03OCw3ICs3Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcGFyc2VTZWxlY3Rvcihj
b25zdCBTdHJpbmcmLCBDU1NTZWxlY3Rvckxpc3QmKTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZT4g
cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5jZXMoQ1NTUHJvcGVydHlJRCwgY29uc3QgQ1NT
VmFsdWUmLCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYpOworICAgIFJlZlB0cjxDU1NWYWx1
ZT4gcGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5jZXMoQ1NTUHJvcGVydHlJRCwgY29uc3Qg
Q1NTVmFsdWUmLCBjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQmLCBjb25zdCBS
ZW5kZXJTdHlsZSYpOwogCiAgICAgc3RhdGljIENvbG9yIHBhcnNlQ29sb3IoY29uc3QgU3RyaW5n
JiwgYm9vbCBzdHJpY3QgPSBmYWxzZSk7CiAgICAgc3RhdGljIENvbG9yIHBhcnNlU3lzdGVtQ29s
b3IoY29uc3QgU3RyaW5nJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCBjM2EyM2I1OTll
OGViNGQ3OWNhOWY5M2VkYzY0NGZmMGJhMzFkODI3Li4yMWZlYmFjYzRjZmJhYTUxMWJiYWVhNjQ3
NWYxNjBkNTMyNWRjMGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VyLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkNTU0NvbnRlbnRE
aXN0cmlidXRpb25WYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNp
bmNsdWRlICJDU1NDdXN0b21JZGVudFZhbHVlLmgiCi0jaW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU3JjVmFsdWUuaCIKICNpbmNsdWRlICJD
U1NGb250RmVhdHVyZVZhbHVlLmgiCiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykKQEAgLTc0
LDEwICs3Myw4IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1
ZGUgIlNWR1BhdGhCeXRlU3RyZWFtLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFV0aWxpdGllcy5oIgot
I2luY2x1ZGUgIlN0eWxlQnVpbGRlckNvbnZlcnRlci5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25z
LmgiCi0jaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgPGJpdHNldD4KICNpbmNs
dWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtMjE2
LDEzICsyMTMsMTIgQEAgQ1NTUHJvcGVydHlJRCBjc3NQcm9wZXJ0eUlEKFN0cmluZ1ZpZXcgc3Ry
aW5nKQogICAgIAogdXNpbmcgbmFtZXNwYWNlIENTU1Byb3BlcnR5UGFyc2VySGVscGVyczsKIAot
Q1NTUHJvcGVydHlQYXJzZXI6OkNTU1Byb3BlcnR5UGFyc2VyKGNvbnN0IENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBWZWN0b3I8Q1NT
UHJvcGVydHksIDI1Nj4qIHBhcnNlZFByb3BlcnRpZXMsIGJvb2wgY29uc3VtZVdoaXRlc3BhY2Up
CitDU1NQcm9wZXJ0eVBhcnNlcjo6Q1NTUHJvcGVydHlQYXJzZXIoY29uc3QgQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxD
U1NQcm9wZXJ0eSwgMjU2PiogcGFyc2VkUHJvcGVydGllcykKICAgICA6IG1fcmFuZ2UocmFuZ2Up
CiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fcGFyc2VkUHJvcGVydGllcyhwYXJz
ZWRQcm9wZXJ0aWVzKQogewotICAgIGlmIChjb25zdW1lV2hpdGVzcGFjZSkKLSAgICAgICAgbV9y
YW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOworICAgIG1fcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2Uo
KTsKIH0KIAogdm9pZCBDU1NQcm9wZXJ0eVBhcnNlcjo6YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eSwgQ1NTUHJvcGVydHlJRCBjdXJyZW50U2hvcnRoYW5kLCBSZWY8Q1NTVmFsdWU+
JiYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBib29sIGltcGxpY2l0KQpAQCAtMjgyLDI3ICsyNzgs
NiBAQCBSZWZQdHI8Q1NTVmFsdWU+IENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVl
KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGNvbgogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotYm9v
bCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y2FuUGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29u
c3QgU3RyaW5nJiBzeW50YXgsIGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHRva2VucywgY29u
c3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICBDU1NQcm9wZXJ0eVBhcnNlciBw
YXJzZXIodG9rZW5zLCBjb250ZXh0LCBudWxscHRyKTsKLSAgICByZXR1cm4gcGFyc2VyLmNhblBh
cnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKHN5bnRheCk7Ci19Ci0KLVJlZlB0cjxDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlPiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VUeXBlZEN1c3RvbVByb3Bl
cnR5VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN5bnRheCwgY29uc3Qg
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgdG9rZW5zLCBjb25zdCBTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQotewotICAgIENTU1Byb3Bl
cnR5UGFyc2VyIHBhcnNlcih0b2tlbnMsIGNvbnRleHQsIG51bGxwdHIsIGZhbHNlKTsKLSAgICBS
ZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gdmFsdWUgPSBwYXJzZXIucGFyc2VUeXBlZEN1
c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgc3ludGF4LCBzdHlsZVJlc29sdmVyKTsKLSAgICBpZiAo
IXZhbHVlIHx8ICFwYXJzZXIubV9yYW5nZS5hdEVuZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gdmFsdWU7Ci19Ci0KLXZvaWQgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbGxl
Y3RQYXJzZWRDdXN0b21Qcm9wZXJ0eVZhbHVlRGVwZW5kZW5jaWVzKGNvbnN0IFN0cmluZyYgc3lu
dGF4LCBib29sIGlzUm9vdCwgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiYgZGVwZW5kZW5jaWVzLCBj
b25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiB0b2tlbnMsIGNvbnN0IENTU1BhcnNlckNvbnRleHQm
IGNvbnRleHQpCi17Ci0gICAgQ1NTUHJvcGVydHlQYXJzZXIgcGFyc2VyKHRva2VucywgY29udGV4
dCwgbnVsbHB0cik7Ci0gICAgcGFyc2VyLmNvbGxlY3RQYXJzZWRDdXN0b21Qcm9wZXJ0eVZhbHVl
RGVwZW5kZW5jaWVzKHN5bnRheCwgaXNSb290LCBkZXBlbmRlbmNpZXMpOwotfQotCiBzdGF0aWMg
Ym9vbCBpc0xlZ2FjeUJyZWFrUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogewog
ICAgIHN3aXRjaCAocHJvcGVydHlJRCkgewpAQCAtMzQ1LDcgKzMyMCw3IEBAIGJvb2wgQ1NTUHJv
cGVydHlQYXJzZXI6OnBhcnNlVmFsdWVTdGFydChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGJv
b2wgaW1wb3J0YW50CiAgICAgfQogCiAgICAgaWYgKENTU1ZhcmlhYmxlUGFyc2VyOjpjb250YWlu
c1ZhbGlkVmFyaWFibGVSZWZlcmVuY2VzKG9yaWdpbmFsUmFuZ2UsIG1fY29udGV4dCkpIHsKLSAg
ICAgICAgUmVmUHRyPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+IHZhcmlhYmxlID0gQ1NTVmFy
aWFibGVSZWZlcmVuY2VWYWx1ZTo6Y3JlYXRlKG9yaWdpbmFsUmFuZ2UpOworICAgICAgICBSZWZQ
dHI8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4gdmFyaWFibGUgPSBDU1NWYXJpYWJsZVJlZmVy
ZW5jZVZhbHVlOjpjcmVhdGUoQ1NTVmFyaWFibGVEYXRhOjpjcmVhdGUob3JpZ2luYWxSYW5nZSkp
OwogCiAgICAgICAgIGlmIChpc1Nob3J0aGFuZCkgewogICAgICAgICAgICAgUmVmUHRyPENTU1Bl
bmRpbmdTdWJzdGl0dXRpb25WYWx1ZT4gcGVuZGluZ1ZhbHVlID0gQ1NTUGVuZGluZ1N1YnN0aXR1
dGlvblZhbHVlOjpjcmVhdGUocHJvcGVydHlJRCwgdmFyaWFibGUucmVsZWFzZU5vbk51bGwoKSk7
CkBAIC0zOTExLDYgKzM4ODYsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENTU1Byb3BlcnR5UGFyc2Vy
OjpwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTUwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlNaW5IZWlnaHQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdpZHRoOgogICAgIGNh
c2UgQ1NTUHJvcGVydHlIZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUN1c3RvbTogLy8gRklY
TUU6IHBhcnNpbmcgYSByZWdpc3RlcmVkIGN1c3RvbSBwcm9wZXJ0eSBzaG91bGQgYmUgYmFzZWQg
b24gaXRzIHN5bnRheC4KICAgICAgICAgcmV0dXJuIGNvbnN1bWVXaWR0aE9ySGVpZ2h0KG1fcmFu
Z2UsIG1fY29udGV4dCwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlNaW5JbmxpbmVTaXplOgogICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5CbG9ja1NpemU6CkBAIC00
MjgwLDY0ICs0MjU2LDYgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFy
c2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1MKICAgICB9CiB9CiAKLWJv
b2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNhblBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNv
bnN0IFN0cmluZyYgc3ludGF4KQotewotICAgIGlmIChzeW50YXggIT0gIioiKSB7Ci0gICAgICAg
IG1fcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKLQotICAgICAgICAvLyBGaXJzdCBjaGVjayBm
b3Iga2V5d29yZHMKLSAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IG1fcmFuZ2UucGVlaygpLmlkKCk7
Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUluaGVyaXQgfHwgaWQgPT0gQ1NTVmFsdWVJbml0
aWFsIHx8IGlkID09IENTU1ZhbHVlUmV2ZXJ0KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICAgICAgYXV0byBsb2NhbFJhbmdlID0gbV9yYW5nZTsKLSAgICAgICAgd2hpbGUgKCFsb2Nh
bFJhbmdlLmF0RW5kKCkpIHsKLSAgICAgICAgICAgIGF1dG8gaWQgPSBsb2NhbFJhbmdlLmNvbnN1
bWUoKS5mdW5jdGlvbklkKCk7Ci0gICAgICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVWYXIgfHwg
aWQgPT0gQ1NTVmFsdWVFbnYpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIEZvciB2
YXJpYWJsZXMsIHdlIGp1c3QgcGVybWl0IGV2ZXJ5dGhpbmcKLSAgICAgICAgfQotCi0gICAgICAg
IGF1dG8gcHJpbWl0aXZlVmFsID0gY29uc3VtZVdpZHRoT3JIZWlnaHQobV9yYW5nZSwgbV9jb250
ZXh0KTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbCAmJiBwcmltaXRpdmVWYWwtPmlzUHJpbWl0
aXZlVmFsdWUoKSAmJiBtX3JhbmdlLmF0RW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi12
b2lkIENTU1Byb3BlcnR5UGFyc2VyOjpjb2xsZWN0UGFyc2VkQ3VzdG9tUHJvcGVydHlWYWx1ZURl
cGVuZGVuY2llcyhjb25zdCBTdHJpbmcmIHN5bnRheCwgYm9vbCBpc1Jvb3QsIEhhc2hTZXQ8Q1NT
UHJvcGVydHlJRD4mIGRlcGVuZGVuY2llcykKLXsKLSAgICBpZiAoc3ludGF4ICE9ICIqIikgewot
ICAgICAgICBtX3JhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7Ci0gICAgICAgIGF1dG8gcHJpbWl0
aXZlVmFsID0gY29uc3VtZVdpZHRoT3JIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0KTsKLSAgICAg
ICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlm
IChwcmltaXRpdmVWYWwgJiYgcHJpbWl0aXZlVmFsLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAg
ICAgICAgICAgIHByaW1pdGl2ZVZhbC0+Y29sbGVjdERpcmVjdENvbXB1dGF0aW9uYWxEZXBlbmRl
bmNpZXMoZGVwZW5kZW5jaWVzKTsKLSAgICAgICAgICAgIGlmIChpc1Jvb3QpCi0gICAgICAgICAg
ICAgICAgcHJpbWl0aXZlVmFsLT5jb2xsZWN0RGlyZWN0Um9vdENvbXB1dGF0aW9uYWxEZXBlbmRl
bmNpZXMoZGVwZW5kZW5jaWVzKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotUmVmUHRyPENTU0N1
c3RvbVByb3BlcnR5VmFsdWU+IENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVR5cGVkQ3VzdG9tUHJv
cGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3ludGF4LCBjb25z
dCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQotewotICAgIGlmIChzeW50YXggIT0gIioi
KSB7Ci0gICAgICAgIG1fcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKLSAgICAgICAgYXV0byBw
cmltaXRpdmVWYWwgPSBjb25zdW1lV2lkdGhPckhlaWdodChtX3JhbmdlLCBtX2NvbnRleHQpOwot
ICAgICAgICBpZiAocHJpbWl0aXZlVmFsICYmIHByaW1pdGl2ZVZhbC0+aXNQcmltaXRpdmVWYWx1
ZSgpKQotICAgICAgICAgICAgcmV0dXJuIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVN5
bnRheExlbmd0aChuYW1lLCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgoc3R5
bGVSZXNvbHZlciwgKnByaW1pdGl2ZVZhbCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8g
cHJvcGVydHlWYWx1ZSA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVN5bnRheEFsbChu
YW1lLCBDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZShtX3JhbmdlKSk7Ci0gICAgICAgIHdoaWxlICgh
bV9yYW5nZS5hdEVuZCgpKQotICAgICAgICAgICAgbV9yYW5nZS5jb25zdW1lKCk7Ci0gICAgICAg
IHJldHVybiB7IFdURk1vdmUocHJvcGVydHlWYWx1ZSkgfTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
bnVsbHB0cjsKLX0KLQogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNvbnN1bWVGb250RmFj
ZVVuaWNvZGVSYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICBSZWZQdHI8
Q1NTVmFsdWVMaXN0PiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmgKaW5k
ZXggMWRjMDVlZjg4ZGFjMjYwYWU2MTA3MjI5YjhkYTk2Y2M0YjE3ZTc3NC4uN2RiNzQ1M2MwZDg0
OTllYTEzZTAwZDk3Y2YyZTBjNTI0ZjQ1OGIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuaApAQCAtMzIsNyArMzIsNiBAQCBjbGFzcyBDU1NQcm9w
ZXJ0eTsKIGNsYXNzIENTU1ZhbHVlOwogY2xhc3MgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZDsKIGNs
YXNzIFN0eWxlU2hlZXRDb250ZW50czsKLWNsYXNzIFN0eWxlUmVzb2x2ZXI7CiAgICAgCiAvLyBJ
bnB1dHM6IFByb3BlcnR5SUQsIGlzSW1wb3J0YW50IGJvb2wsIENTU1BhcnNlclRva2VuUmFuZ2Uu
CiAvLyBPdXRwdXRzOiBWZWN0b3Igb2YgQ1NTUHJvcGVydGllcwpAQCAtNDYsMjAgKzQ1LDE0IEBA
IHB1YmxpYzoKIAogICAgIC8vIFBhcnNlcyBhIG5vbi1zaG9ydGhhbmQgQ1NTIHByb3BlcnR5CiAg
ICAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlE
LCBjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOwot
ICAgIHN0YXRpYyBib29sIGNhblBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0
cmluZyYgc3ludGF4LCBjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiwgY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYpOwotICAgIHN0YXRpYyBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gcGFy
c2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHN5bnRheCwgY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IFN0eWxlUmVzb2x2
ZXImLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7Ci0gICAgc3RhdGljIHZvaWQgY29sbGVjdFBh
cnNlZEN1c3RvbVByb3BlcnR5VmFsdWVEZXBlbmRlbmNpZXMoY29uc3QgU3RyaW5nJiBzeW50YXgs
IGJvb2wgaXNSb290LCBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+JiBkZXBlbmRlbmNpZXMsIGNvbnN0
IENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CiAKIHByaXZh
dGU6Ci0gICAgQ1NTUHJvcGVydHlQYXJzZXIoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNv
bnN0IENTU1BhcnNlckNvbnRleHQmLCBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4qLCBib29sIGNv
bnN1bWVXaGl0ZXNwYWNlID0gdHJ1ZSk7CisgICAgQ1NTUHJvcGVydHlQYXJzZXIoY29uc3QgQ1NT
UGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBWZWN0b3I8Q1NTUHJv
cGVydHksIDI1Nj4qKTsKIAogICAgIC8vIEZJWE1FOiBSZW5hbWUgb25jZSB0aGUgQ1NTUGFyc2Vy
VmFsdWUtYmFzZWQgcGFyc2VWYWx1ZSBpcyByZW1vdmVkCiAgICAgYm9vbCBwYXJzZVZhbHVlU3Rh
cnQoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgY29uc3VtZUNTU1dp
ZGVLZXl3b3JkKENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50KTsKICAgICBSZWZQdHI8Q1NT
VmFsdWU+IHBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJRCwgQ1NTUHJvcGVydHlJRCA9IENT
U1Byb3BlcnR5SW52YWxpZCk7Ci0gICAgYm9vbCBjYW5QYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlW
YWx1ZShjb25zdCBTdHJpbmcmIHN5bnRheCk7Ci0gICAgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5
VmFsdWU+IHBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBzeW50YXgsIGNvbnN0IFN0eWxlUmVzb2x2ZXImKTsKLSAgICB2b2lkIGNv
bGxlY3RQYXJzZWRDdXN0b21Qcm9wZXJ0eVZhbHVlRGVwZW5kZW5jaWVzKGNvbnN0IFN0cmluZyYg
c3ludGF4LCBib29sIGlzUm9vdCwgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiYgZGVwZW5kZW5jaWVz
KTsKIAogICAgIGJvb2wgaW5RdWlya3NNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0Lm1v
ZGUgPT0gSFRNTFF1aXJrc01vZGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NWYXJpYWJsZVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1ZhcmlhYmxlUGFyc2VyLmNwcAppbmRleCAxYmUyM2I5ZmVjOGY1ZWNkYWQ0ZWI4NDQ4NTNm
OWUwMmNhNWE5MjBkLi44NzA4NmUzNmFiODBkMWQ1ODM5NmJjYWFmOTQ5MTIzM2JkNWQyMjIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1ZhcmlhYmxlUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1ZhcmlhYmxlUGFyc2VyLmNwcApA
QCAtMTg5LDggKzE4OSw4IEBAIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBDU1NWYXJp
YWJsZVBhcnNlcjo6cGFyc2VEZWNsYXJhdGlvblZhbHVlKGNvbnN0IEF0CiAgICAgaWYgKHR5cGUg
PT0gQ1NTVmFsdWVJbnZhbGlkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAodHlw
ZSA9PSBDU1NWYWx1ZUludGVybmFsVmFyaWFibGVWYWx1ZSkKLSAgICAgICAgcmV0dXJuIENTU0N1
c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVVucmVzb2x2ZWQodmFyaWFibGVOYW1lLCBDU1NWYXJp
YWJsZVJlZmVyZW5jZVZhbHVlOjpjcmVhdGUocmFuZ2UpKTsKLSAgICByZXR1cm4gQ1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZTo6Y3JlYXRlVW5yZXNvbHZlZCh2YXJpYWJsZU5hbWUsIHR5cGUpOworICAg
ICAgICByZXR1cm4gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlV2l0aFZhcmlhYmxlRGF0
YSh2YXJpYWJsZU5hbWUsIENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRlKHJhbmdlLCBoYXNSZWZlcmVu
Y2VzIHx8IGhhc0F0QXBwbHlSdWxlKSk7CisgICAgcmV0dXJuIENTU0N1c3RvbVByb3BlcnR5VmFs
dWU6OmNyZWF0ZVdpdGhJRCh2YXJpYWJsZU5hbWUsIHR5cGUpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29uc3RhbnRQcm9wZXJ0
eU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29uc3RhbnRQcm9wZXJ0eU1hcC5jcHAKaW5k
ZXggNmMxMDhjODg4NzE1ZjY3ZmE5ODE4NjAwYWJkYjE1MTA0ZmFhYzJmMC4uOTBmZDEzOTMxYjcw
NDFlMjliOWY2NzlhYzNhMWQxMzQ4YzYyMGI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnN0YW50UHJvcGVydHlNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db25z
dGFudFByb3BlcnR5TWFwLmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIENvbnN0YW50UHJvcGVy
dHlNYXA6OnNldFZhbHVlRm9yUHJvcGVydHkoQ29uc3RhbnRQcm9wZXJ0eSBwcm9wZXJ0eSwgUmVm
PENTUwogICAgICAgICBidWlsZFZhbHVlcygpOwogCiAgICAgYXV0byYgbmFtZSA9IG5hbWVGb3JQ
cm9wZXJ0eShwcm9wZXJ0eSk7Ci0gICAgbV92YWx1ZXMtPnNldChuYW1lLCBDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlOjpjcmVhdGVTeW50YXhBbGwobmFtZSwgV1RGTW92ZShkYXRhKSkpOworICAgIG1f
dmFsdWVzLT5zZXQobmFtZSwgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlV2l0aFZhcmlh
YmxlRGF0YShuYW1lLCBXVEZNb3ZlKGRhdGEpKSk7CiB9CiAKIHZvaWQgQ29uc3RhbnRQcm9wZXJ0
eU1hcDo6YnVpbGRWYWx1ZXMoKQpAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFy
aWFibGVEYXRhPiB2YXJpYWJsZURhdGFGb3JQb3NpdGl2ZVBpeGVsTGVuZ3RoKGZsb2F0IGxlbmd0
aEluUHgpCiAKICAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHRva2VucyB7IHRva2VuIH07CiAg
ICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSB0b2tlblJhbmdlKHRva2Vucyk7Ci0gICAgcmV0dXJuIENT
U1ZhcmlhYmxlRGF0YTo6Y3JlYXRlKHRva2VuUmFuZ2UpOworICAgIHJldHVybiBDU1NWYXJpYWJs
ZURhdGE6OmNyZWF0ZSh0b2tlblJhbmdlLCBmYWxzZSk7CiB9CiAKIHN0YXRpYyBSZWY8Q1NTVmFy
aWFibGVEYXRhPiB2YXJpYWJsZURhdGFGb3JQb3NpdGl2ZUR1cmF0aW9uKFNlY29uZHMgZHVyYXRp
b25JblNlY29uZHMpCkBAIC0xMjIsNyArMTIyLDcgQEAgc3RhdGljIFJlZjxDU1NWYXJpYWJsZURh
dGE+IHZhcmlhYmxlRGF0YUZvclBvc2l0aXZlRHVyYXRpb24oU2Vjb25kcyBkdXJhdGlvbkluU2UK
IAogICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gdG9rZW5zIHsgdG9rZW4gfTsKICAgICBDU1NQ
YXJzZXJUb2tlblJhbmdlIHRva2VuUmFuZ2UodG9rZW5zKTsKLSAgICByZXR1cm4gQ1NTVmFyaWFi
bGVEYXRhOjpjcmVhdGUodG9rZW5SYW5nZSk7CisgICAgcmV0dXJuIENTU1ZhcmlhYmxlRGF0YTo6
Y3JlYXRlKHRva2VuUmFuZ2UsIGZhbHNlKTsKIH0KIAogdm9pZCBDb25zdGFudFByb3BlcnR5TWFw
Ojp1cGRhdGVDb25zdGFudHNGb3JTYWZlQXJlYUluc2V0cygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCBjODUyNTg4NTAyNDc3MGQ5YzVi
NWQ0OTE5ZWQ2NWJjNmViMTE5NTc3Li5kYjg1ZDdkMDkzZjUyODRjYmViODAyZWU4NzAwODA4ZTM5
MmE3MWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAKQEAgLTIyOTksNiArMjI5OSw4OSBAQCBib29sIFJlbmRlclN0eWxlOjpoYXNSZWZlcmVu
Y2VGaWx0ZXJPbmx5KCkgY29uc3QKICAgICByZXR1cm4gZmlsdGVyT3BlcmF0aW9ucy5zaXplKCkg
PT0gMSAmJiBmaWx0ZXJPcGVyYXRpb25zLmF0KDApLT50eXBlKCkgPT0gRmlsdGVyT3BlcmF0aW9u
OjpSRUZFUkVOQ0U7CiB9CiAKK3ZvaWQgUmVuZGVyU3R5bGU6OmNoZWNrVmFyaWFibGVzSW5DdXN0
b21Qcm9wZXJ0aWVzKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYgcmVnaXN0
ZXJlZFByb3BlcnRpZXMsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgY29uc3QgU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKK3sKKyAgICBib29sIHNob3VsZFVwZGF0ZUluaGVy
aXRlZCA9IG1fcmFyZUluaGVyaXRlZERhdGEtPmN1c3RvbVByb3BlcnRpZXMtPmNvbnRhaW5zVmFy
aWFibGVzIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmN1c3RvbVByb3BlcnRpZXMtPmNvbnRhaW5z
VW5yZXNvbHZlZFJlZ2lzdGVyZWRQcm9wZXJ0aWVzOworICAgIGJvb2wgc2hvdWxkVXBkYXRlTm9u
SW5oZXJpdGVkID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y3VzdG9tUHJvcGVydGllcy0+Y29u
dGFpbnNWYXJpYWJsZXMgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y3VzdG9tUHJvcGVydGll
cy0+Y29udGFpbnNVbnJlc29sdmVkUmVnaXN0ZXJlZFByb3BlcnRpZXM7CisgICAgYXV0byogaW5o
ZXJpdGVkUHJvcGVydHlEYXRhID0gc2hvdWxkVXBkYXRlSW5oZXJpdGVkID8gJm1fcmFyZUluaGVy
aXRlZERhdGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKSA6IG51bGxwdHI7Cisg
ICAgYXV0byogbm9uSW5oZXJpdGVkUHJvcGVydHlEYXRhID0gc2hvdWxkVXBkYXRlTm9uSW5oZXJp
dGVkID8gJm1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5h
Y2Nlc3MoKSA6IG51bGxwdHI7CisKKyAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4gaW52YWxpZFBy
b3BlcnRpZXM7CisKKyAgICBmb3IgKGF1dG8qIGN1c3RvbVByb3BlcnR5RGF0YSA6IHsgaW5oZXJp
dGVkUHJvcGVydHlEYXRhLCBub25Jbmhlcml0ZWRQcm9wZXJ0eURhdGEgfSkgeworICAgICAgICBp
ZiAoIWN1c3RvbVByb3BlcnR5RGF0YSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IC8vIE91ciBmaXJzdCBwYXNzIGNoZWNrcyB0aGUgdmFyaWFibGVzIGZvciB2YWxpZGl0eSBhbmQg
cmVwbGFjZXMgYW55IHByb3BlcnRpZXMgdGhhdCBiZWNhbWUKKyAgICAgICAgLy8gaW52YWxpZCB3
aXRoIGVtcHR5IHZhbHVlcy4KKyAgICAgICAgYXV0byYgY3VzdG9tUHJvcGVydGllcyA9IGN1c3Rv
bVByb3BlcnR5RGF0YS0+dmFsdWVzOworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogY3VzdG9t
UHJvcGVydGllcykgeworICAgICAgICAgICAgaWYgKCFlbnRyeS52YWx1ZS0+Y29udGFpbnNWYXJp
YWJsZXMoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIEhhc2hTZXQ8
QXRvbWljU3RyaW5nPiBzZWVuUHJvcGVydGllczsKKyAgICAgICAgICAgIGVudHJ5LnZhbHVlLT5j
aGVja1ZhcmlhYmxlc0ZvckN5Y2xlcyhlbnRyeS5rZXksICp0aGlzLCBzZWVuUHJvcGVydGllcywg
aW52YWxpZFByb3BlcnRpZXMpOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBpbnZhbGlkVmFs
dWUgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVJbnZhbGlkKCk7CisKKyAgICAgICAg
Ly8gTm93IGluc2VydCBpbnZhbGlkIHZhbHVlcywgb3IgZGVmYXVsdHMgaWYgdGhlIHByb3BlcnR5
IGlzIHJlZ2lzdGVyZWQuCisgICAgICAgIGlmICghaW52YWxpZFByb3BlcnRpZXMuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogaW52YWxpZFByb3BlcnRpZXMp
IHsKKyAgICAgICAgICAgICAgICBpZiAoIWN1c3RvbVByb3BlcnRpZXMuY29udGFpbnMocHJvcGVy
dHkpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBjb25zdCBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4qIHBhcmVu
dFByb3BlcnR5ID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IHBhcmVudFN0eWxlLT5pbmhlcml0
ZWRDdXN0b21Qcm9wZXJ0aWVzKCkuZmluZChwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChpdGVyYXRvciAhPSBwYXJlbnRTdHlsZS0+aW5oZXJpdGVkQ3VzdG9tUHJvcGVydGllcygp
LmVuZCgpICYmIGl0ZXJhdG9yLmdldCgpICYmIGl0ZXJhdG9yLmdldCgpLT52YWx1ZSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmVudFByb3BlcnR5ID0gJml0ZXJhdG9yLmdldCgpLT52YWx1
ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBhdXRvKiByZWdpc3RlcmVk
ID0gcmVnaXN0ZXJlZFByb3BlcnRpZXMuZ2V0KHByb3BlcnR5KTsKKworICAgICAgICAgICAgICAg
IGlmIChyZWdpc3RlcmVkICYmIHJlZ2lzdGVyZWQtPmluaGVyaXRzICYmIHBhcmVudFByb3BlcnR5
KQorICAgICAgICAgICAgICAgICAgICBjdXN0b21Qcm9wZXJ0aWVzLnNldChwcm9wZXJ0eSwgcGFy
ZW50UHJvcGVydHktPmNvcHlSZWYoKSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVnaXN0
ZXJlZCAmJiByZWdpc3RlcmVkLT5pbml0aWFsVmFsdWUoKSkKKyAgICAgICAgICAgICAgICAgICAg
Y3VzdG9tUHJvcGVydGllcy5zZXQocHJvcGVydHksIHJlZ2lzdGVyZWQtPmluaXRpYWxWYWx1ZUNv
cHkoKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBjdXN0b21Q
cm9wZXJ0aWVzLnNldChwcm9wZXJ0eSwgaW52YWxpZFZhbHVlLmNvcHlSZWYoKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBOb3cgdGhhdCBhbGwgb2YgdGhlIHByb3Bl
cnRpZXMgaGF2ZSBiZWVuIHRlc3RlZCBmb3IgdmFsaWRpdHkgYW5kIHJlcGxhY2VkIHdpdGgKKyAg
ICAgICAgLy8gaW52YWxpZCB2YWx1ZXMgaWYgdGhleSBmYWlsZWQsIHdlIGNhbiBwZXJmb3JtIHZh
cmlhYmxlIHN1YnN0aXR1dGlvbiBvbiB0aGUgdmFsaWQgdmFsdWVzLgorICAgICAgICBWZWN0b3I8
UmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+PiByZXNvbHZlZFZhbHVlczsKKyAgICAgICAgZm9y
IChhdXRvIGVudHJ5IDogY3VzdG9tUHJvcGVydGllcykgeworICAgICAgICAgICAgaWYgKCFlbnRy
eS52YWx1ZS0+Y29udGFpbnNWYXJpYWJsZXMoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIGVudHJ5LnZhbHVlLT5yZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKHJlZ2lz
dGVyZWRQcm9wZXJ0aWVzLCByZXNvbHZlZFZhbHVlcywgKnRoaXMpOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gV2l0aCBhbGwgcmVzdWx0cyBjb21wdXRlZCwgd2UgY2FuIG5vdyBtdXRhdGUgb3Vy
IHRhYmxlIHRvIGVsaW1pbmF0ZSB0aGUgdmFyaWFibGVzIGFuZAorICAgICAgICAvLyBob2xkIHRo
ZSBmaW5hbCB2YWx1ZXMuIFRoaXMgd2F5IHdoZW4gd2UgaW5oZXJpdCwgd2UgZG9uJ3QgZW5kIHVw
IHJlc3Vic3RpdHV0aW5nIHZhcmlhYmxlcywgZXRjLgorICAgICAgICBmb3IgKGF1dG8mIHJlc29s
dmVkVmFsdWUgOiByZXNvbHZlZFZhbHVlcykKKyAgICAgICAgICAgIGN1c3RvbVByb3BlcnRpZXMu
c2V0KHJlc29sdmVkVmFsdWUtPm5hbWUoKSwgcmVzb2x2ZWRWYWx1ZS5jb3B5UmVmKCkpOworCisg
ICAgICAgIC8vIEZpbmFsbHkgd2UgY2FuIHJlc29sdmUgcmVnaXN0ZXJlZCBjdXN0b20gcHJvcGVy
dGllcyB0byB0aGVpciB0eXBlZCB2YWx1ZXMuCisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBj
dXN0b21Qcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICBhdXRvJiBuYW1lID0gZW50cnkudmFsdWUt
Pm5hbWUoKTsKKyAgICAgICAgICAgIGF1dG8qIHJlZ2lzdGVyZWQgPSByZWdpc3RlcmVkUHJvcGVy
dGllcy5nZXQobmFtZSk7CisKKyAgICAgICAgICAgIGlmICghcmVnaXN0ZXJlZCkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgYXV0byBwcmltaXRpdmVWYWwgPSBzdHls
ZVJlc29sdmVyLnJlc29sdmVkVmFyaWFibGVWYWx1ZShDU1NQcm9wZXJ0eUN1c3RvbSwgKmVudHJ5
LnZhbHVlKTsKKyAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsIHx8ICFwcmltaXRpdmVWYWwt
PmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgICAgICAgICBlbnRyeS52YWx1ZSA9IGludmFs
aWRWYWx1ZS5jb3B5UmVmKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW50
cnkudmFsdWUtPnNldFJlc29sdmVkVHlwZWRWYWx1ZShTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRMZW5ndGgoc3R5bGVSZXNvbHZlciwgKnByaW1pdGl2ZVZhbCkpOworICAgICAgICB9CisK
KyAgICAgICAgY3VzdG9tUHJvcGVydHlEYXRhLT5jb250YWluc1ZhcmlhYmxlcyA9IGZhbHNlOwor
ICAgICAgICBjdXN0b21Qcm9wZXJ0eURhdGEtPmNvbnRhaW5zVW5yZXNvbHZlZFJlZ2lzdGVyZWRQ
cm9wZXJ0aWVzID0gZmFsc2U7CisgICAgfQorfQorCiBmbG9hdCBSZW5kZXJTdHlsZTo6b3V0bGlu
ZVdpZHRoKCkgY29uc3QKIHsKICAgICBpZiAobV9iYWNrZ3JvdW5kRGF0YS0+b3V0bGluZS5zdHls
ZSgpID09IEJvcmRlclN0eWxlOjpOb25lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAppbmRleCA3MDhlNmJmMDE0MjdjZTFmMDgyY2QxNWFjYjFjM2UwNmQx
M2I4MjM0Li5kZDI0MmU3NmQzZTgxMDljYjg5MDc4NTc5YjJjOGFiNDFiZDg3ZTUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMTg2LDggKzE4
Niw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBDdXN0b21Qcm9wZXJ0eVZhbHVlTWFwJiBpbmhlcml0
ZWRDdXN0b21Qcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+
Y3VzdG9tUHJvcGVydGllcy0+dmFsdWVzOyB9CiAgICAgY29uc3QgQ3VzdG9tUHJvcGVydHlWYWx1
ZU1hcCYgbm9uSW5oZXJpdGVkQ3VzdG9tUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmN1c3RvbVByb3BlcnRpZXMtPnZhbHVlczsgfQogICAgIGNvbnN0
IENTU0N1c3RvbVByb3BlcnR5VmFsdWUqIGdldEN1c3RvbVByb3BlcnR5KGNvbnN0IEF0b21pY1N0
cmluZyYpIGNvbnN0OwotICAgIHZvaWQgc2V0SW5oZXJpdGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiYmIHZh
bHVlKSB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLmN1c3RvbVByb3BlcnRp
ZXMuYWNjZXNzKCkuc2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBXVEZNb3ZlKHZhbHVlKSk7
IH0KLSAgICB2b2lkIHNldE5vbkluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2YWx1ZSkgeyBy
ZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXN0b21Qcm9wZXJ0aWVzLmFj
Y2VzcygpLnNldEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgV1RGTW92ZSh2YWx1ZSkpOyB9Cisg
ICAgdm9pZCBzZXRJbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYgdmFsdWUsIGJvb2wgaXNSZWdp
c3RlcmVkID0gZmFsc2UpIHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3Vz
dG9tUHJvcGVydGllcy5hY2Nlc3MoKS5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1v
dmUodmFsdWUpLCBpc1JlZ2lzdGVyZWQpOyB9CisgICAgdm9pZCBzZXROb25Jbmhlcml0ZWRDdXN0
b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENTU0N1c3RvbVBy
b3BlcnR5VmFsdWU+JiYgdmFsdWUsIGJvb2wgaXNSZWdpc3RlcmVkID0gZmFsc2UpIHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nlc3Mo
KS5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1vdmUodmFsdWUpLCBpc1JlZ2lzdGVy
ZWQpOyB9CiAKICAgICB2b2lkIHNldEhhc1ZpZXdwb3J0VW5pdHMoYm9vbCB2ID0gdHJ1ZSkgeyBt
X25vbkluaGVyaXRlZEZsYWdzLmhhc1ZpZXdwb3J0VW5pdHMgPSB2OyB9CiAgICAgYm9vbCBoYXNW
aWV3cG9ydFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5oYXNWaWV3
cG9ydFVuaXRzOyB9CkBAIC03OTUsNiArNzk1LDggQEAgcHVibGljOgogICAgIEFwcGxlUGF5QnV0
dG9uVHlwZSBhcHBsZVBheUJ1dHRvblR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxB
cHBsZVBheUJ1dHRvblR5cGU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFwcGxlUGF5QnV0dG9u
VHlwZSk7IH0KICNlbmRpZgogCisgICAgdm9pZCBjaGVja1ZhcmlhYmxlc0luQ3VzdG9tUHJvcGVy
dGllcyhjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQmLCBjb25zdCBSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFN0eWxlUmVzb2x2ZXImKTsKKwogLy8gYXR0cmlidXRl
IHNldHRlciBtZXRob2RzCiAKICAgICB2b2lkIHNldERpc3BsYXkoRGlzcGxheVR5cGUgdikgeyBt
X25vbkluaGVyaXRlZEZsYWdzLmVmZmVjdGl2ZURpc3BsYXkgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4odik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUN1c3RvbVByb3BlcnR5RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgKaW5kZXggMTMyZTZmNTI1NjBlNjVjYWM1NGU0YzViNTNm
ZDdkNDEwMzVmNzVmYS4uMWJjZGIyMmU4ZTlkM2JjMzk0MTEzMDQ4NDI4ZGIzZTY4Nzg1ODJkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJv
cGVydHlEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3Vz
dG9tUHJvcGVydHlEYXRhLmgKQEAgLTIyLDcgKzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIgotI2luY2x1ZGUgIkNTU1ZhcmlhYmxlUmVm
ZXJlbmNlVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTM4LDYgKzM3LDkgQEAg
cHVibGljOgogICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUN1c3RvbVByb3Bl
cnR5RGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgeworICAgICAgICBpZiAoY29udGFpbnNWYXJpYWJs
ZXMgIT0gb3RoZXIuY29udGFpbnNWYXJpYWJsZXMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKICAgICAgICAgaWYgKHZhbHVlcy5zaXplKCkgIT0gb3RoZXIudmFsdWVzLnNpemUoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTIsMTggKzU0LDI2IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAgCi0gICAgdm9pZCBzZXRD
dXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU+JiYgdmFsdWUpCisgICAgdm9pZCBzZXRDdXN0b21Qcm9wZXJ0eVZhbHVl
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYg
dmFsdWUsIGJvb2wgaXNSZWdpc3RlcmVkKQogICAgIHsKKyAgICAgICAgaWYgKHZhbHVlLT5jb250
YWluc1ZhcmlhYmxlcygpKQorICAgICAgICAgICAgY29udGFpbnNWYXJpYWJsZXMgPSB0cnVlOwor
ICAgICAgICBpZiAoaXNSZWdpc3RlcmVkKQorICAgICAgICAgICAgY29udGFpbnNVbnJlc29sdmVk
UmVnaXN0ZXJlZFByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICB2YWx1ZXMuc2V0KG5hbWUsIFdU
Rk1vdmUodmFsdWUpKTsKICAgICB9CiAKICAgICBDdXN0b21Qcm9wZXJ0eVZhbHVlTWFwIHZhbHVl
czsKKyAgICBib29sIGNvbnRhaW5zVmFyaWFibGVzIHsgZmFsc2UgfTsKKyAgICBib29sIGNvbnRh
aW5zVW5yZXNvbHZlZFJlZ2lzdGVyZWRQcm9wZXJ0aWVzIHsgZmFsc2UgfTsKIAogcHJpdmF0ZToK
ICAgICBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSgpID0gZGVmYXVsdDsKICAgICBTdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YShjb25zdCBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSYgb3RoZXIpCiAgICAg
ICAgIDogUmVmQ291bnRlZDxTdHlsZUN1c3RvbVByb3BlcnR5RGF0YT4oKQogICAgICAgICAsIHZh
bHVlcyhvdGhlci52YWx1ZXMpCisgICAgICAgICwgY29udGFpbnNWYXJpYWJsZXMob3RoZXIuY29u
dGFpbnNWYXJpYWJsZXMpCisgICAgICAgICwgY29udGFpbnNVbnJlc29sdmVkUmVnaXN0ZXJlZFBy
b3BlcnRpZXMob3RoZXIuY29udGFpbnNVbnJlc29sdmVkUmVnaXN0ZXJlZFByb3BlcnRpZXMpCiAg
ICAgeyB9CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWI1ODBkOTQ5MDExZjQ2NDEzYmRjNjNmODQ4OTQ3NjIwNzI0
MDU0Yy4uZjRhMDZhOWNkZTIwYzQ3NzBlYzlhY2QwZjZiODVjZWNiMTk4OTRlZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDE4LTEwLTI1ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVk
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZlcnQgcjIzNzM0NyByZWdpc3RlcmVkIGN1c3RvbSBw
cm9wZXJ0aWVzLi4uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAw
MzkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDkx
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3Nz
LWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jcmFzaC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jcmFzaC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3ljbGVzLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiBjc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvaW5saW5lLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBjc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2lu
bGluZS5odG1sOiBSZW1vdmVkLgorCiAyMDE4LTEwLTI2ICBDb21taXQgUXVldWUgIDxjb21taXQt
cXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM3
NDc5IGFuZCByMjM3NDg0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggM2YwYWMw
OTU2ZTAxYzYyMzM0MmIyNGVkY2NmZTQ2NTdjMjk0YzhkMS4uZTcxNDcxM2I3ZWQ4ZWY0YTU1NmYw
OGIwNjBlM2M4NDJmODk4YzZkYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTgtMTAtMjUgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmVydCByMjM3MzQ3IHJlZ2lzdGVyZWQgY3VzdG9tIHBy
b3BlcnRpZXMuLi4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDAz
OQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwOTE5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXItcHJv
cGVydHktc3ludGF4LXBhcnNpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnRp
ZXMtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnR5LWNzc29t
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9w
ZXJ0aWVzLXZhbHVlcy1hcGkvdHlwZWRvbS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXIt
cmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1jeWNsZXMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92
YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisKIDIwMTgt
MTAtMjYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2Vi
IEFuaW1hdGlvbnNdIFJlYmFzZSBzb21lIGZsYWt5IHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2NyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3Jhc2gtZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWYwZmY1ZTkwMDcxZGU5OWVmMGFiZjg5Yjg3ODAy
NmJkZDEwYjIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3Jhc2gtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1UaGlzIGlzIHRleHQKLQotCi1QQVNTIEZh
bGxiYWNrIGlzIGhhbmRsZWQgY29ycmVjdGx5LCBhbmQgd2UgZG9uJ3QgY3Jhc2ggCi1QQVNTIFNl
dHRpbmcgdGhlIGlubGluZSBzdHlsZSBpcyBoYW5kbGVkIGNvcnJlY3RseSAKLVBBU1MgQ1NTLnJl
Z2lzdGVyUHJvcGVydHkgCi1QQVNTIFNldHRpbmcgdGhlIGlubGluZSBzdHlsZSBpcyBoYW5kbGVk
IGNvcnJlY3RseSB3aGVuIHJlZ2lzdGVyZWQgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nz
cy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL2Nzcy1jdXN0
b20tcHJvcGVydGllcy1hcGkvY3Jhc2guaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggN2YyY2Q3MGEyYTMxZGVhYjk5ZjAwMzJjNDFmZWE3YTVjOGFiN2Y5Yi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9t
LXByb3BlcnRpZXMtYXBpL2NyYXNoLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpD
U1NDdXN0b21Qcm9wZXJ0aWVzQW5kVmFsdWVzRW5hYmxlZD10cnVlIF0gLS0+Ci08IS0tIGh0dHBz
Oi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMvKy8wMWNlNDMxNDA5ZTNh
MDE5ODU4Njc3NjI2YTk4M2M1NTE2OGRhNmRjL3RoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0
cy9jdXN0b20tcHJvcGVydGllcy9yZWdpc3Rlci1wcm9wZXJ0eS5odG1sIC0tPgotPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHN0eWxlPgot
ICAjdGVzdDEgewotICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9vLCAzMHB4KTsKLSAgICAtLWZvbzog
dmFyKC0tYmFyLCAyMHB4KTsKLSAgICAtLWJhcjogdmFyKC0tYmF6LCB2YXIoLS1mb28pKTsKLSAg
fQotPC9zdHlsZT4KLTxkaXY+Ci0gIDxoMiBpZD10ZXN0MT5UaGlzIGlzIHRleHQ8L2gyPgotPC9k
aXY+Ci08c2NyaXB0PgotdmFyIGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHRlc3Qx
KTsKLXZhciBpbmxpbmVTdHlsZSA9IHRlc3QxLnN0eWxlOwotCi10ZXN0KGZ1bmN0aW9uKCkgewot
ICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXonKSwg
JycpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1m
b28nKSwgJycpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgnLS1iYXInKSwgJycpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVy
dHlWYWx1ZSgnZm9udC1zaXplJyksICczMHB4Jyk7Ci19LCAiRmFsbGJhY2sgaXMgaGFuZGxlZCBj
b3JyZWN0bHksIGFuZCB3ZSBkb24ndCBjcmFzaCIpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICBp
bmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1iYXonLCAnICAgNDBweCcpOwotICBhc3NlcnRfZXF1
YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXonKSwgJyA0MHB4Jyk7Ci0g
IGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWZvbycpLCAn
Jyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJh
cicpLCAnJyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KCctLWJheicpLCAnIDQwcHgnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFBy
b3BlcnR5VmFsdWUoJ2ZvbnQtc2l6ZScpLCAnMzBweCcpOwotICBpbmxpbmVTdHlsZS5yZW1vdmVQ
cm9wZXJ0eSgnLS1iYXonKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3Bl
cnR5VmFsdWUoJy0tYmF6JyksICcnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdl
dFByb3BlcnR5VmFsdWUoJy0tZm9vJyksICcnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0
eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmFyJyksICcnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21w
dXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtc2l6ZScpLCAnMzBweCcpOwotICBhc3Nl
cnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXonKSwgJycpOwot
fSwgIlNldHRpbmcgdGhlIGlubGluZSBzdHlsZSBpcyBoYW5kbGVkIGNvcnJlY3RseSIpOwotCi10
ZXN0KGZ1bmN0aW9uKCkgewotICBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJy0tZm9vJywg
c3ludGF4OiAnPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6ICcyMDBweCcsIGluaGVyaXRzOiB0cnVl
fSk7Ci0gIENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnLS1iYXInLCBzeW50YXg6ICc8bGVu
Z3RoPicsIGluaXRpYWxWYWx1ZTogJzIwMHB4JywgaW5oZXJpdHM6IHRydWV9KTsKLSAgQ1NTLnJl
Z2lzdGVyUHJvcGVydHkoe25hbWU6ICctLWJheicsIHN5bnRheDogJzxsZW5ndGg+JywgaW5pdGlh
bFZhbHVlOiAnMjAwcHgnLCBpbmhlcml0czogdHJ1ZX0pOwotfSwgIkNTUy5yZWdpc3RlclByb3Bl
cnR5Iik7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIGlubGluZVN0eWxlLnNldFByb3BlcnR5KCct
LWJheicsICcgICA0MHB4Jyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9w
ZXJ0eVZhbHVlKCctLWJheicpLCAnNDBweCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1mb28nKSwgJzIwMHB4Jyk7Ci0gIGFzc2VydF9lcXVhbHMo
Y29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJhcicpLCAnMjAwcHgnKTsKLSAgYXNz
ZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmF6JyksICc0MHB4
Jyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250
LXNpemUnKSwgJzIwMHB4Jyk7Ci0gIGlubGluZVN0eWxlLnJlbW92ZVByb3BlcnR5KCctLWJheicp
OwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXon
KSwgJzIwMHB4Jyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZh
bHVlKCctLWZvbycpLCAnMjAwcHgnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdl
dFByb3BlcnR5VmFsdWUoJy0tYmFyJyksICcyMDBweCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1
dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udC1zaXplJyksICcyMDBweCcpOwotICBhc3Nl
cnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXonKSwgJzIwMHB4
Jyk7Ci19LCAiU2V0dGluZyB0aGUgaW5saW5lIHN0eWxlIGlzIGhhbmRsZWQgY29ycmVjdGx5IHdo
ZW4gcmVnaXN0ZXJlZCIpOwotCi08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nz
cy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3ljbGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3ljbGVzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q0ODZlYjIwYTY5YjlhNTk5NTEwOWJlMDhiYjM0NWU0NGY5
NjgwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi10ZXN0Ci0KLXRlc3QKLQotdGVzdAotCi10ZXN0
Ci0KLXRlc3QKLQotCi1QQVNTIFJlZ2lzdHJhdGlvbiBpcyBzdWNjZXNzZnVsIAotUEFTUyBKUyBB
dHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCAxIAotUEFTUyBKUyBBdHRyaWJ1dGVzIGFy
ZSB2YWxpZCBmb3IgZWxlbWVudCAyIAotUEFTUyBKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3Ig
ZWxlbWVudCAzIAotUEFTUyBKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCA0IAot
UEFTUyBKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCA1IAotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy5odG1sIGIvTGF5
b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jeWNsZXMuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNmVjMjRjODg0NDg5YjM4OTkyYzVkNjJhZDc1NjJlZmRkMDJi
YzkyYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTMwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVu
bmVyIFsgZXhwZXJpbWVudGFsOkNTU0N1c3RvbVByb3BlcnRpZXNBbmRWYWx1ZXNFbmFibGVkPXRy
dWUgXSAtLT4KLTwhLS0gaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVt
L3NyYy8rLzAxY2U0MzE0MDllM2EwMTk4NTg2Nzc2MjZhOTgzYzU1MTY4ZGE2ZGMvdGhpcmRfcGFy
dHkvV2ViS2l0L0xheW91dFRlc3RzL2N1c3RvbS1wcm9wZXJ0aWVzL3JlZ2lzdGVyLXByb3BlcnR5
Lmh0bWwgLS0+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgotCi08c3R5bGU+Ci0gICNwYXJlbnQxIHsKLSAgICB3aWR0aDogNTAwcHg7Ci0gICAg
YmFja2dyb3VuZDogYmx1ZTsKLSAgfQotICAjY2hpbGQxIHsKLSAgICBiYWNrZ3JvdW5kOiBncmVl
bjsKLSAgICBmb250LXNpemU6IDEwcHg7Ci0gICAgLS1hOiAxMGVtOwotICAgIHdpZHRoOiB2YXIo
LS1hKTsKLSAgfQotCi0gICNwYXJlbnQyIHsKLSAgICB3aWR0aDogNTAwcHg7Ci0gICAgYmFja2dy
b3VuZDogYmx1ZTsKLSAgICAtLWE6IDEwZW07Ci0gICAgZm9udC1zaXplOiBjYWxjKCB2YXIoLS1h
KSArIC0xNTBweCk7Ci0gIH0KLSAgI2NoaWxkMiB7Ci0gICAgYmFja2dyb3VuZDogZ3JlZW47Ci0g
ICAgd2lkdGg6IHZhcigtLWEpOwotICB9Ci0KLSAgI3BhcmVudDMgewotICAgIHdpZHRoOiA1MDBw
eDsKLSAgICBiYWNrZ3JvdW5kOiBibHVlOwotICAgIC0tYjogMTBlbTsKLSAgICBmb250LXNpemU6
IGNhbGMoIHZhcigtLWIpICsgLTE1MHB4KTsKLSAgfQotICAjY2hpbGQzIHsKLSAgICBiYWNrZ3Jv
dW5kOiBncmVlbjsKLSAgICB3aWR0aDogdmFyKC0tYik7Ci0gIH0KLQotICAjcGFyZW50NCB7Ci0g
ICAgd2lkdGg6IDUwMHB4OwotICAgIGJhY2tncm91bmQ6IGJsdWU7Ci0gICAgLS1iOiAxMGVtOwot
ICAgIGZvbnQtc2l6ZTogY2FsYyggdmFyKC0tYikgKyAtMTUwcHgpOwotICB9Ci0gICNjaGlsZDQg
ewotICAgIGJhY2tncm91bmQ6IGdyZWVuOwotICAgIC0tYTogdmFyKC0tYik7Ci0gICAgZm9udC1z
aXplOiB2YXIoLS1hKTsKLSAgICB3aWR0aDogdmFyKC0tYSk7Ci0gIH0KLQotICAjcGFyZW50NSB7
Ci0gICAgd2lkdGg6IDUwMHB4OwotICAgIGJhY2tncm91bmQ6IGJsdWU7Ci0gICAgLS1iOiA1ZW07
Ci0gICAgZm9udC1zaXplOiBjYWxjKCB2YXIoLS1iKSArIC03MHB4KTsKLSAgfQotICAjY2hpbGQ1
IHsKLSAgICBiYWNrZ3JvdW5kOiBncmVlbjsKLSAgICAtLWM6IHZhcigtLWIpOwotICAgIGZvbnQt
c2l6ZTogdmFyKC0tYyk7Ci0gICAgd2lkdGg6IHZhcigtLWMpOwotICB9Ci08L3N0eWxlPgotPGRp
dj4KLSAgPGRpdiBpZD0icGFyZW50MSI+PGRpdiBpZD0iY2hpbGQxIj48cD50ZXN0PC9wPjwvZGl2
PjwvZGl2PgotICA8ZGl2IGlkPSJwYXJlbnQyIj48ZGl2IGlkPSJjaGlsZDIiPjxwPnRlc3Q8L3A+
PC9kaXY+PC9kaXY+Ci0gIDxkaXYgaWQ9InBhcmVudDMiPjxkaXYgaWQ9ImNoaWxkMyI+PHA+dGVz
dDwvcD48L2Rpdj48L2Rpdj4KLSAgPGRpdiBpZD0icGFyZW50NCI+PGRpdiBpZD0iY2hpbGQ0Ij48
cD50ZXN0PC9wPjwvZGl2PjwvZGl2PgotICA8ZGl2IGlkPSJwYXJlbnQ1Ij48ZGl2IGlkPSJjaGls
ZDUiPjxwPnRlc3Q8L3A+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9u
IHRlc3RfcHJvcChpZCwgcHJvcCwgZXhwZWN0ZWQpIHsKLSAgYXNzZXJ0X2VxdWFscyh3aW5kb3cu
Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpLmdldFByb3BlcnR5
VmFsdWUocHJvcCkudHJpbSgpLCBleHBlY3RlZCk7Ci19Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0g
IENTUy5yZWdpc3RlclByb3BlcnR5KHsKLSAgICBuYW1lOiAnLS1hJywKLSAgICBzeW50YXg6ICc8
bGVuZ3RoPicsCi0gICAgaW5oZXJpdHM6IHRydWUsCi0gICAgaW5pdGlhbFZhbHVlOiAnMjAwcHgn
Ci0gIH0pCi19LCAiUmVnaXN0cmF0aW9uIGlzIHN1Y2Nlc3NmdWwiKTsKLXRlc3QoZnVuY3Rpb24o
KSB7Ci0gIHRlc3RfcHJvcCgnY2hpbGQxJywgJ3dpZHRoJywgJzEwMHB4Jyk7Ci0gIHRlc3RfcHJv
cCgnY2hpbGQxJywgJy0tYScsICcxMDBweCcpOwotICB0ZXN0X3Byb3AoJ2NoaWxkMScsICctLWIn
LCAnJyk7Ci0gIHRlc3RfcHJvcCgncGFyZW50MScsICctLWEnLCAnMjAwcHgnKTsKLSAgdGVzdF9w
cm9wKCdwYXJlbnQxJywgJy0tYicsICcnKTsKLX0sICJKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBm
b3IgZWxlbWVudCAxIik7Ci10ZXN0KGZ1bmN0aW9uKCkgewotICB0ZXN0X3Byb3AoJ2NoaWxkMics
ICd3aWR0aCcsICcxNjBweCcpOwotICB0ZXN0X3Byb3AoJ2NoaWxkMicsICctLWEnLCAnMTYwcHgn
KTsKLSAgdGVzdF9wcm9wKCdjaGlsZDInLCAnLS1iJywgJycpOwotICB0ZXN0X3Byb3AoJ2NoaWxk
MicsICdmb250LXNpemUnLCAnMTZweCcpOwotICB0ZXN0X3Byb3AoJ3BhcmVudDInLCAnLS1hJywg
JzE2MHB4Jyk7Ci0gIHRlc3RfcHJvcCgncGFyZW50MicsICctLWInLCAnJyk7Ci0gIHRlc3RfcHJv
cCgncGFyZW50MicsICdmb250LXNpemUnLCAnMTZweCcpOwotfSwgIkpTIEF0dHJpYnV0ZXMgYXJl
IHZhbGlkIGZvciBlbGVtZW50IDIiKTsKLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIHRlc3RfcHJvcCgn
Y2hpbGQzJywgJ3dpZHRoJywgJzEwMHB4Jyk7Ci0gIHRlc3RfcHJvcCgnY2hpbGQzJywgJy0tYScs
ICcyMDBweCcpOwotICB0ZXN0X3Byb3AoJ2NoaWxkMycsICctLWInLCAnMTBlbScpOwotICB0ZXN0
X3Byb3AoJ2NoaWxkMycsICdmb250LXNpemUnLCAnMTBweCcpOwotICB0ZXN0X3Byb3AoJ3BhcmVu
dDMnLCAnLS1hJywgJzIwMHB4Jyk7Ci0gIHRlc3RfcHJvcCgncGFyZW50MycsICctLWInLCAnMTBl
bScpOwotICB0ZXN0X3Byb3AoJ3BhcmVudDMnLCAnZm9udC1zaXplJywgJzEwcHgnKTsKLX0sICJK
UyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCAzIik7Ci10ZXN0KGZ1bmN0aW9uKCkg
ewotICB0ZXN0X3Byb3AoJ2NoaWxkNCcsICd3aWR0aCcsICcxMDBweCcpOwotICB0ZXN0X3Byb3Ao
J2NoaWxkNCcsICctLWEnLCAnMTAwcHgnKTsKLSAgdGVzdF9wcm9wKCdjaGlsZDQnLCAnLS1iJywg
JzEwZW0nKTsKLSAgdGVzdF9wcm9wKCdjaGlsZDQnLCAnZm9udC1zaXplJywgJzEwcHgnKTsKLSAg
dGVzdF9wcm9wKCdwYXJlbnQ0JywgJy0tYScsICcyMDBweCcpOwotICB0ZXN0X3Byb3AoJ3BhcmVu
dDQnLCAnLS1iJywgJzEwZW0nKTsKLSAgdGVzdF9wcm9wKCdwYXJlbnQ0JywgJ2ZvbnQtc2l6ZScs
ICcxMHB4Jyk7Ci19LCAiSlMgQXR0cmlidXRlcyBhcmUgdmFsaWQgZm9yIGVsZW1lbnQgNCIpOwot
dGVzdChmdW5jdGlvbigpIHsKLSAgdGVzdF9wcm9wKCdjaGlsZDUnLCAnd2lkdGgnLCAnMjUwcHgn
KTsKLSAgdGVzdF9wcm9wKCdjaGlsZDUnLCAnLS1jJywgJzVlbScpOwotICB0ZXN0X3Byb3AoJ2No
aWxkNScsICctLWInLCAnNWVtJyk7Ci0gIHRlc3RfcHJvcCgnY2hpbGQ1JywgJ2ZvbnQtc2l6ZScs
ICc1MHB4Jyk7Ci0gIHRlc3RfcHJvcCgncGFyZW50NScsICctLWEnLCAnMjAwcHgnKTsKLSAgdGVz
dF9wcm9wKCdwYXJlbnQ1JywgJy0tYicsICc1ZW0nKTsKLSAgdGVzdF9wcm9wKCdwYXJlbnQ1Jywg
J2ZvbnQtc2l6ZScsICcxMHB4Jyk7Ci19LCAiSlMgQXR0cmlidXRlcyBhcmUgdmFsaWQgZm9yIGVs
ZW1lbnQgNSIpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9t
LXByb3BlcnRpZXMtYXBpL2lubGluZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MtY3Vz
dG9tLXByb3BlcnRpZXMtYXBpL2lubGluZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGU1NjgxNjI2NTI5ZmJmMTBiMWM1MGZmMDBjMzcxMTFhOTBlYzZjMWIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
Y3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMTUgKzAsMCBAQAotdGVzdAotCi0KLVBBU1MgQ1NTT00gc2V0dGVycyBmdW5jdGlv
biBhcyBleHBlY3RlZCBmb3IgdW5yZWdpc3RlcmVkIHByb3BlcnRpZXMgCi1QQVNTIENTUy5yZWdp
c3RlclByb3BlcnR5IAotUEFTUyBGb3JtZXJseSB2YWxpZCB2YWx1ZXMgYXJlIHN0aWxsIHJlYWRh
YmxlIGZyb20gaW5saW5lIHN0eWxlcyBidXQgYXJlIGNvbXB1dGVkIGFzIHRoZSB1bnNldCB2YWx1
ZSAKLVBBU1MgVmFsdWVzIG5vdCBtYXRjaGluZyB0aGUgcmVnaXN0ZXJlZCB0eXBlIGNhbid0IGJl
IHNldCAKLVBBU1MgVmFsdWVzIGNhbiBiZSByZW1vdmVkIGZyb20gaW5saW5lIHN0eWxlcyAKLVBB
U1MgU3R5bGVzaGVldHMgY2FuIGJlIG1vZGlmaWVkIGJ5IENTU09NIAotUEFTUyBWYWxpZCB2YWx1
ZXMgY2FuIGJlIHNldCBvbiBpbmxpbmUgc3R5bGVzIAotUEFTUyBWYXIgdmFsdWVzIGFyZSBhY2Nl
cHRlZCAKLVBBU1MgVmFyIHZhbHVlcyBhcmUgYWNjZXB0ZWQgd2l0aG91dCB2YWxpZGF0aW9uIAot
UEFTUyBWYXIgdmFsdWVzIGFyZSBhY2NlcHRlZCB3aXRob3V0IHZhbGlkYXRpb24sIGV2ZW4gd2hl
biBpdCBpcyBvYnZpb3VzIHRoZXkgd2lsbCBub3QgcGFyc2UgCi1QQVNTIFZhciB2YWx1ZXMgYXJl
IGFjY2VwdGVkIHdpdGhvdXQgdmFsaWRhdGlvbiwgZXZlbiB3aGVuIGl0IGlzIG9idmlvdXMgdGhl
eSB3aWxsIG5vdCBwYXJzZSAodHlwZWQpIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3Mt
Y3VzdG9tLXByb3BlcnRpZXMtYXBpL2lubGluZS5odG1sIGIvTGF5b3V0VGVzdHMvY3NzLWN1c3Rv
bS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNTFiYTdmZWJjMDYzOTQ0NjViY2NmZWQ4NGNlYTlmZTIzMTU0ZWIwNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9t
LXByb3BlcnRpZXMtYXBpL2lubGluZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFs
OkNTU0N1c3RvbVByb3BlcnRpZXNBbmRWYWx1ZXNFbmFibGVkPXRydWUgXSAtLT4KLTwhLS0gaHR0
cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYy8rLzAxY2U0MzE0MDll
M2EwMTk4NTg2Nzc2MjZhOTgzYzU1MTY4ZGE2ZGMvdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRl
c3RzL2N1c3RvbS1wcm9wZXJ0aWVzL3JlZ2lzdGVyLXByb3BlcnR5Lmh0bWwgLS0+Ci08c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c3R5bGU+
Ci0gICN0ZXN0MSB7Ci0gICAgLS1hOiAxMGVtOwotICAgIC0tYjogMTBlbTsKLSAgfQotPC9zdHls
ZT4KLTxkaXY+Ci0gIDxkaXYgaWQ9dGVzdDE+PHA+dGVzdDwvcD48L2Rpdj4KLTwvZGl2PgotPHNj
cmlwdD4KLQotdmFyIGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHRlc3QxKTsKLXZh
ciBpbmxpbmVTdHlsZSA9IHRlc3QxLnN0eWxlOwotdmFyIHNoZWV0U3R5bGUgPSBkb2N1bWVudC5z
dHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAg
Ly8gTm90aGluZyByZWdpc3RlcmVkIHlldCwgd2hhdGV2ZXIgeW91IHNwZWNpZnkgd29ya3MKLSAg
YXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnIDEw
ZW0nKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0t
YicpLCAnIDEwZW0nKTsKLQotICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJ2hlbGxv
Jyk7Ci0gIGlubGluZVN0eWxlLnNldFByb3BlcnR5KCctLWInLCAnYm9uam91cicpOwotCi0gIGFz
c2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdoZWxsbycp
OwotICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAn
Ym9uam91cicpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgnLS1hJyksICdoZWxsbycpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJv
cGVydHlWYWx1ZSgnLS1iJyksICdib25qb3VyJyk7Ci19LCAiQ1NTT00gc2V0dGVycyBmdW5jdGlv
biBhcyBleHBlY3RlZCBmb3IgdW5yZWdpc3RlcmVkIHByb3BlcnRpZXMiKTsKLQotdGVzdChmdW5j
dGlvbigpIHsKLSAgQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICctLWEnLCBzeW50YXg6ICc8
bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTogJzBweCcsIGluaGVyaXRzOiBmYWxzZX0pOwotICBDU1Mu
cmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJy0tcmVnaXN0ZXJlZCcsIHN5bnRheDogJzxsZW5ndGg+
JywgaW5pdGlhbFZhbHVlOiAnMHB4JywgaW5oZXJpdHM6IGZhbHNlfSk7Ci19LCAiQ1NTLnJlZ2lz
dGVyUHJvcGVydHkiKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgYXNzZXJ0X2VxdWFscyhpbmxp
bmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJ2hlbGxvJyk7Ci0gIGFzc2VydF9lcXVh
bHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICdib25qb3VyJyk7Ci0gIGFz
c2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzBweCcp
OwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyks
ICdib25qb3VyJyk7Ci19LCAiRm9ybWVybHkgdmFsaWQgdmFsdWVzIGFyZSBzdGlsbCByZWFkYWJs
ZSBmcm9tIGlubGluZSBzdHlsZXMgYnV0IGFyZSBjb21wdXRlZCBhcyB0aGUgdW5zZXQgdmFsdWUi
KTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYScs
ICdoaScpOwotICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1iJywgJ2hpJyk7Ci0gIGFzc2Vy
dF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdoZWxsbycpOwot
ICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnaGkn
KTsKLX0sICJWYWx1ZXMgbm90IG1hdGNoaW5nIHRoZSByZWdpc3RlcmVkIHR5cGUgY2FuJ3QgYmUg
c2V0Iik7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIGlubGluZVN0eWxlLnJlbW92ZVByb3BlcnR5
KCctLWEnKTsKLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYicsICcnKTsKLSAgYXNzZXJ0
X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJycpOwotICBhc3Nl
cnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnJyk7Ci0gIGFz
c2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzE2MHB4
Jyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWIn
KSwgJyAxMGVtJyk7Ci19LCAiVmFsdWVzIGNhbiBiZSByZW1vdmVkIGZyb20gaW5saW5lIHN0eWxl
cyIpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICBzaGVldFN0eWxlLnNldFByb3BlcnR5KCctLWEn
LCAnYmFuYW5hJyk7IC8vIEludmFsaWQsIG5vIGNoYW5nZQotICBhc3NlcnRfZXF1YWxzKGNvbXB1
dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICcxNjBweCcpOwotICBzaGVldFN0eWxl
LnNldFByb3BlcnR5KCctLWEnLCAnMjBweCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICcyMHB4Jyk7Ci0gIHNoZWV0U3R5bGUuc2V0UHJv
cGVydHkoJy0tYScsICdpbml0aWFsJyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5n
ZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzBweCcpOwotfSwgIlN0eWxlc2hlZXRzIGNhbiBiZSBt
b2RpZmllZCBieSBDU1NPTSIpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICBpbmxpbmVTdHlsZS5z
ZXRQcm9wZXJ0eSgnLS1hJywgJzMwZW0nKTsKLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0t
YicsICcyMGVtJyk7Ci0gIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgnLS1hJyksICczMGVtJyk7Ci0gIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVy
dHlWYWx1ZSgnLS1iJyksICcyMGVtJyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5n
ZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzQ4MHB4Jyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0
ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWInKSwgJzIwZW0nKTsKLSAgaW5saW5lU3R5bGUu
c2V0UHJvcGVydHkoJy0tYScsICdpbmhlcml0Jyk7Ci0gIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdpbmhlcml0Jyk7Ci0gIGFzc2VydF9lcXVhbHMo
Y29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzBweCcpOwotfSwgIlZhbGlk
IHZhbHVlcyBjYW4gYmUgc2V0IG9uIGlubGluZSBzdHlsZXMiKTsKLQotdGVzdChmdW5jdGlvbigp
IHsKLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYicsICcgMjBweCcpOwotICBpbmxpbmVT
dHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJ2NhbGModmFyKC0tYikgKyAxMHB4KScpOwotICBhc3Nl
cnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnIDIwcHgnKTsK
LSAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJ2Nh
bGModmFyKC0tYikgKyAxMHB4KScpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZSgnLS1iJyksICcgMjBweCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVk
U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICczMHB4Jyk7Ci19LCAiVmFyIHZhbHVlcyBh
cmUgYWNjZXB0ZWQiKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgaW5saW5lU3R5bGUuc2V0UHJv
cGVydHkoJy0tYicsICdoZWxsbycpOwotICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywg
J2NhbGModmFyKC0tYikgKyAxNXB4KScpOwotICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdl
dFByb3BlcnR5VmFsdWUoJy0tYicpLCAnaGVsbG8nKTsKLSAgYXNzZXJ0X2VxdWFscyhpbmxpbmVT
dHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJ2NhbGModmFyKC0tYikgKyAxNXB4KScpOwot
ICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICdo
ZWxsbycpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgn
LS1hJyksICcwcHgnKTsKLX0sICJWYXIgdmFsdWVzIGFyZSBhY2NlcHRlZCB3aXRob3V0IHZhbGlk
YXRpb24iKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHko
Jy0tYicsICdoZWxsbycpOwotICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJ2NhbGMo
dmFyKC0tYikgMTVweCknKTsKLSAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0
eVZhbHVlKCctLWInKSwgJ2hlbGxvJyk7Ci0gIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZSgnLS1hJyksICdjYWxjKHZhcigtLWIpIDE1cHgpJyk7Ci0gIGFzc2VydF9l
cXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWInKSwgJ2hlbGxvJyk7Ci0g
IGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzBw
eCcpOwotfSwgIlZhciB2YWx1ZXMgYXJlIGFjY2VwdGVkIHdpdGhvdXQgdmFsaWRhdGlvbiwgZXZl
biB3aGVuIGl0IGlzIG9idmlvdXMgdGhleSB3aWxsIG5vdCBwYXJzZSIpOwotCi10ZXN0KGZ1bmN0
aW9uKCkgewotICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1iJywgJ2hlbGxvJyk7Ci0gIGlu
bGluZVN0eWxlLnNldFByb3BlcnR5KCctLWEnLCAnY2FsYyh2YXIoLS1yZWdpc3RlcmVkKSAxNXB4
KScpOwotICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicp
LCAnaGVsbG8nKTsKLSAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KCctLWEnKSwgJ2NhbGModmFyKC0tcmVnaXN0ZXJlZCkgMTVweCknKTsKLSAgYXNzZXJ0X2VxdWFs
cyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnaGVsbG8nKTsKLSAgYXNz
ZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnMHB4Jyk7
Ci19LCAiVmFyIHZhbHVlcyBhcmUgYWNjZXB0ZWQgd2l0aG91dCB2YWxpZGF0aW9uLCBldmVuIHdo
ZW4gaXQgaXMgb2J2aW91cyB0aGV5IHdpbGwgbm90IHBhcnNlICh0eXBlZCkiKTsKLQotPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyLXByb3BlcnR5LXN5bnRh
eC1wYXJzaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXItcHJvcGVy
dHktc3ludGF4LXBhcnNpbmctZXhwZWN0ZWQudHh0CmluZGV4IDJlYTc4ZTI5ODA2MDY4ZTViM2Mz
ZjZlYzc5ZjZiZjlhOGE2YjE4Y2QuLmU5ZTJmZTczOGFiM2EyZGJkYWZkOTEwYjY0NjYxZDJhZGQ4
M2UwM2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXItcHJvcGVydHktc3lu
dGF4LXBhcnNpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXIt
cHJvcGVydHktc3ludGF4LXBhcnNpbmctZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogCi1Q
QVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonYScgaXMgdmFsaWQgCitGQUlMIHN5bnRheDon
KicsIGluaXRpYWxWYWx1ZTonYScgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9l
cyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCiBGQUlMIHN5bnRheDonICogJywgaW5p
dGlhbFZhbHVlOidiJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBw
YXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRp
YWxWYWx1ZTonMnB4JyBpcyB2YWxpZCAKIEZBSUwgc3ludGF4OicgPG51bWJlcj4nLCBpbml0aWFs
VmFsdWU6JzUnIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNl
IGZvciB0aGUgZ2l2ZW4gc3ludGF4LgpAQCAtOSwxMSArOSwxMSBAQCBGQUlMIHN5bnRheDonIDxs
ZW5ndGg+KyB8IDxwZXJjZW50YWdlPicsIGluaXRpYWxWYWx1ZTonMnB4IDhweCcgaXMgdmFsaWQg
VGhlIGdpdgogUEFTUyBzeW50YXg6JzxsZW5ndGg+fDxwZXJjZW50YWdlPnw8bGVuZ3RoLXBlcmNl
bnRhZ2U+JywgaW5pdGlhbFZhbHVlOicycHgnIGlzIHZhbGlkIAogRkFJTCBzeW50YXg6Jzxjb2xv
cj4gfCA8aW1hZ2U+IHwgPHVybD4gfCA8aW50ZWdlcj4gfCA8YW5nbGU+JywgaW5pdGlhbFZhbHVl
OidyZWQnIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZv
ciB0aGUgZ2l2ZW4gc3ludGF4LgogRkFJTCBzeW50YXg6Jzx0aW1lPiB8IDxyZXNvbHV0aW9uPiB8
IDx0cmFuc2Zvcm0tbGlzdD4gfCA8Y3VzdG9tLWlkZW50PicsIGluaXRpYWxWYWx1ZToncmVkJyBp
cyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdp
dmVuIHN5bnRheC4KLVBBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOic6PiBoZWxsbycgaXMg
dmFsaWQgCi1QQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonKFsgYnJhY2tldHMgXSkgeyB5
YXkgKD8/KX0nIGlzIHZhbGlkIAotUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3llcCAn
dGhpcyBpcyB2YWxpZCB0b28nJyBpcyB2YWxpZCAKLVBBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZh
bHVlOid1bm1hdGNoZWQgb3BlbmluZyBicmFja2V0IGlzIHZhbGlkIDooJyBpcyB2YWxpZCAKLVBB
U1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOiciJyBpcyB2YWxpZCAKK0ZBSUwgc3ludGF4Oicq
JywgaW5pdGlhbFZhbHVlOic6PiBoZWxsbycgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFs
dWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCitGQUlMIHN5bnRheDonKics
IGluaXRpYWxWYWx1ZTonKFsgYnJhY2tldHMgXSkgeyB5YXkgKD8/KX0nIGlzIHZhbGlkIFRoZSBn
aXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4Lgor
RkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3llcCAndGhpcyBpcyB2YWxpZCB0b28nJyBp
cyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdp
dmVuIHN5bnRheC4KK0ZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOid1bm1hdGNoZWQgb3Bl
bmluZyBicmFja2V0IGlzIHZhbGlkIDooJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1
ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KK0ZBSUwgc3ludGF4OicqJywg
aW5pdGlhbFZhbHVlOiciJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5v
dCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGlu
aXRpYWxWYWx1ZTonMCcgaXMgdmFsaWQgCiBQQVNTIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFs
VmFsdWU6JzEwcHggLyo6KSovJyBpcyB2YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGlu
aXRpYWxWYWx1ZTonIGNhbGMoLTJweCknIGlzIHZhbGlkIApAQCAtNjMsNyArNjMsNyBAQCBiYW5h
bmFccgogRkFJTCBzeW50YXg6J2JhDAogfAluYVxyfG55YScsIGluaXRpYWxWYWx1ZTonbnlhJyBp
cyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdp
dmVuIHN5bnRheC4KIEZBSUwgc3ludGF4OidudWxsJywgaW5pdGlhbFZhbHVlOidudWxsJyBpcyB2
YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVu
IHN5bnRheC4KLVBBU1Mgc3ludGF4Oid1bmRlZmluZWQnLCBpbml0aWFsVmFsdWU6J3VuZGVmaW5l
ZCcgaXMgdmFsaWQgCitGQUlMIHN5bnRheDondW5kZWZpbmVkJywgaW5pdGlhbFZhbHVlOid1bmRl
ZmluZWQnIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZv
ciB0aGUgZ2l2ZW4gc3ludGF4LgogRkFJTCBzeW50YXg6J2FycmF5JywgaW5pdGlhbFZhbHVlOidh
cnJheScgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9y
IHRoZSBnaXZlbiBzeW50YXguCiBQQVNTIHN5bnRheDonYmFuYW5hLG55YScsIGluaXRpYWxWYWx1
ZTonYmFuYW5hJyBpcyBpbnZhbGlkIAogUEFTUyBzeW50YXg6J2JhbmFuXDYxJywgaW5pdGlhbFZh
bHVlOidiYW5hbmEnIGlzIGludmFsaWQgCkBAIC04NSwzNiArODUsMzYgQEAgUEFTUyBzeW50YXg6
J3Vuc2V0JywgaW5pdGlhbFZhbHVlOid1bnNldCcgaXMgaW52YWxpZAogRkFJTCBzeW50YXg6Jzxs
ZW5ndGg+fGluaXRpYWwnLCBpbml0aWFsVmFsdWU6JzEwcHgnIGlzIGludmFsaWQgYXNzZXJ0X3Ro
cm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBz
eW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxz
ZX0pIiBkaWQgbm90IHRocm93CiBGQUlMIHN5bnRheDonPGxlbmd0aD58SU5IRVJJVCcsIGluaXRp
YWxWYWx1ZTonMTBweCcgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4g
Q1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFs
VmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIEZB
SUwgc3ludGF4Oic8cGVyY2VudGFnZT58dW5zRXQnLCBpbml0aWFsVmFsdWU6JzIlJyBpcyBpbnZh
bGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7
bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBp
bmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwotRkFJTCBzeW50YXg6JyonLCBpbml0aWFs
VmFsdWU6J2luaXRpYWwnIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+
IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlh
bFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93Ci1G
QUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonaW5oZXJpdCcgaXMgaW52YWxpZCBhc3NlcnRf
dGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUs
IHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZh
bHNlfSkiIGRpZCBub3QgdGhyb3cKLUZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOid1bnNl
dCcgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVy
UHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRp
YWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKLUZBSUwgc3ludGF4Oicq
JywgaW5pdGlhbFZhbHVlOidyZXZlcnQnIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rp
b24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRh
eCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90
IHRocm93CitQQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonaW5pdGlhbCcgaXMgaW52YWxp
ZCAKK1BBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOidpbmhlcml0JyBpcyBpbnZhbGlkIAor
UEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3Vuc2V0JyBpcyBpbnZhbGlkIAorUEFTUyBz
eW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3JldmVydCcgaXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4
Oic8Y3VzdG9tLWlkZW50PicsIGluaXRpYWxWYWx1ZTonaW5pdGlhbCcgaXMgaW52YWxpZCAKIFBB
U1Mgc3ludGF4Oic8Y3VzdG9tLWlkZW50PisnLCBpbml0aWFsVmFsdWU6J2ZvbyBpbmhlcml0IGJh
cicgaXMgaW52YWxpZCAKLUZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOicpJyBpcyBpbnZh
bGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7
bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBp
bmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwotRkFJTCBzeW50YXg6JyonLCBpbml0aWFs
VmFsdWU6JyhbKV0nIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENT
Uy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZh
bHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93Ci1GQUlM
IHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTond2hlZSEnIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93
czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50
YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0p
IiBkaWQgbm90IHRocm93Ci1GQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonIgotJyBpcyBp
bnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0
eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVl
LCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwotRkFJTCBzeW50YXg6JyonLCBpbml0
aWFsVmFsdWU6J3VybChtb28gJycpJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9u
ICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgs
IGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0
aHJvdwotRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3NlbWk7Y29sb24nIGlzIGludmFs
aWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtu
YW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGlu
aGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93Ci1GQUlMIHN5bnRheDonKicsIGluaXRpYWxW
YWx1ZTondmFyKGludmFsaWQgdmFyIHJlZiknIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVu
Y3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5
bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQg
bm90IHRocm93Ci1GQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTondmFyKC0tZm9vKScgaXMg
aW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVy
dHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1
ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKK1BBU1Mgc3ludGF4OicqJywgaW5p
dGlhbFZhbHVlOicpJyBpcyBpbnZhbGlkIAorUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6
JyhbKV0nIGlzIGludmFsaWQgCitQQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTond2hlZSEn
IGlzIGludmFsaWQgCitQQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonIgorJyBpcyBpbnZh
bGlkIAorUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3VybChtb28gJycpJyBpcyBpbnZh
bGlkIAorUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3NlbWk7Y29sb24nIGlzIGludmFs
aWQgCitQQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTondmFyKGludmFsaWQgdmFyIHJlZikn
IGlzIGludmFsaWQgCitQQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTondmFyKC0tZm9vKScg
aXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4OidiYW5hbmEnLCBpbml0aWFsVmFsdWU6J2JBbkFuQScg
aXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTondmFyKC0t
bW9vKScgaXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTon
MTAnIGlzIGludmFsaWQgCiBGQUlMIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzEw
JScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVy
UHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRp
YWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIEZBSUwgc3ludGF4Oic8
bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTonY2FsYyg1cHggKyAxMCUpJyBpcyBpbnZhbGlkIGFzc2Vy
dF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFt
ZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czog
ZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwogUEFTUyBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlhbFZh
bHVlOidjYWxjKDVweCAqIDNweCAvIDZweCknIGlzIGludmFsaWQgCi1GQUlMIHN5bnRheDonPGxl
bmd0aD4nLCBpbml0aWFsVmFsdWU6JzEwZW0nIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVu
Y3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5
bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQg
bm90IHRocm93CitQQVNTIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzEwZW0nIGlz
IGludmFsaWQgCiBGQUlMIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzEwdm1pbicg
aXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJv
cGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxW
YWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKLUZBSUwgc3ludGF4Oic8bGVu
Z3RoPicsIGluaXRpYWxWYWx1ZTonY2FsYyg0cHggKyAzZW0pJyBpcyBpbnZhbGlkIGFzc2VydF90
aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwg
c3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFs
c2V9KSIgZGlkIG5vdCB0aHJvdwotRkFJTCBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlhbFZhbHVl
OidjYWxjKDRweCArIGNhbGMoOCAqIDJlbSkpJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1
bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBz
eW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlk
IG5vdCB0aHJvdwotRkFJTCBzeW50YXg6JzxsZW5ndGg+KycsIGluaXRpYWxWYWx1ZTonY2FsYygy
ZXggKyAxNnB4KScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NT
LnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFs
dWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKK1BBU1Mg
c3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTonY2FsYyg0cHggKyAzZW0pJyBpcyBpbnZh
bGlkIAorUEFTUyBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOidjYWxjKDRweCArIGNh
bGMoOCAqIDJlbSkpJyBpcyBpbnZhbGlkIAorUEFTUyBzeW50YXg6JzxsZW5ndGg+KycsIGluaXRp
YWxWYWx1ZTonY2FsYygyZXggKyAxNnB4KScgaXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVu
Z3RoPisnLCBpbml0aWFsVmFsdWU6JzEwcHggY2FsYygyMHB4ICsgNHJlbSknIGlzIGludmFsaWQg
CiBQQVNTIHN5bnRheDonPHBlcmNlbnRhZ2U+IHwgPGxlbmd0aD4rJywgaW5pdGlhbFZhbHVlOidj
YWxjKDEwMHZoIC0gMTBweCkgMzBweCcgaXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3Ro
PicsIGluaXRpYWxWYWx1ZTonMTBweDsnIGlzIGludmFsaWQgCi1GQUlMIHN5bnRheDonPGxlbmd0
aC1wZXJjZW50YWdlPicsIGluaXRpYWxWYWx1ZTonY2FsYygycHggKyAxMCUgKyA3ZXgpJyBpcyBp
bnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0
eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVl
LCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdworUEFTUyBzeW50YXg6JzxsZW5ndGgt
cGVyY2VudGFnZT4nLCBpbml0aWFsVmFsdWU6J2NhbGMoMnB4ICsgMTAlICsgN2V4KScgaXMgaW52
YWxpZCAKIEZBSUwgc3ludGF4Oic8cGVyY2VudGFnZT4nLCBpbml0aWFsVmFsdWU6JzAnIGlzIGlu
dmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5
KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUs
IGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CiBQQVNTIHN5bnRheDonPGludGVnZXI+
JywgaW5pdGlhbFZhbHVlOicxLjAnIGlzIGludmFsaWQgCiBQQVNTIHN5bnRheDonPGludGVnZXI+
JywgaW5pdGlhbFZhbHVlOicxZTAnIGlzIGludmFsaWQgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1
ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydGllcy1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVy
dGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydGllcy1pbmhlcml0YW5jZS1leHBlY3Rl
ZC50eHQKaW5kZXggNTY1NGU4MmM2YTgyYTRjMmUyOWNiMWYzNTYwNDEyMjVkMjExZTIzYS4uZmMy
N2IwZGYyOTk1YTdiN2Y0ZWEwZDc3NWMwZDdiNzUxZjFlZDEwYiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMt
dmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnRpZXMtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWluaGVyaXRhbmNl
LWV4cGVjdGVkLnR4dApAQCAtMiw2ICsyLDYgQEAKIFBBU1MgUmVnaXN0ZXJlZCBwcm9wZXJ0aWVz
IGFyZSBjb3JyZWN0bHkgaW5oZXJpdGVkIChvciBub3QpIGRlcGVuZGluZyBvbiB0aGUgaW5oZXJp
dHMgZmxhZy4gCiBQQVNTIEV4cGxpY2l0bHkgaW5oZXJpdGluZyBmcm9tIGEgcGFyZW50IHdpdGgg
YW4gaW52YWxpZCB2YWx1ZSByZXN1bHRzIGluIGluaXRpYWwgdmFsdWUuIAogUEFTUyBFeHBsaWNp
dGx5IGluaGVyaXRpbmcgZnJvbSBhIHBhcmVudCB3aXRoIG5vIHZhbHVlIHJlc3VsdHMgaW4gaW5p
dGlhbCB2YWx1ZS4gCi1QQVNTIFJlZmVyZW5jZSB0byB1bmRlZmluZWQgdmFyaWFibGUgcmVzdWx0
cyBpbiBpbmhlcml0ZWQgdmFsdWUgCi1QQVNTIFJlZmVyZW5jZSB0byBzeW50YXgtaW5jb21wYXRp
YmxlIHZhcmlhYmxlIHJlc3VsdHMgaW4gaW5oZXJpdGVkIHZhbHVlIAorRkFJTCBSZWZlcmVuY2Ug
dG8gdW5kZWZpbmVkIHZhcmlhYmxlIHJlc3VsdHMgaW4gaW5oZXJpdGVkIHZhbHVlIGFzc2VydF9l
cXVhbHM6IGV4cGVjdGVkICI0MnB4IiBidXQgZ290ICIwcHgiCitGQUlMIFJlZmVyZW5jZSB0byBz
eW50YXgtaW5jb21wYXRpYmxlIHZhcmlhYmxlIHJlc3VsdHMgaW4gaW5oZXJpdGVkIHZhbHVlIGFz
c2VydF9lcXVhbHM6IGV4cGVjdGVkICI0MnB4IiBidXQgZ290ICIwcHgiCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9w
ZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0eS1jc3NvbS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJv
cGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydHktY3Nzb20tZXhwZWN0ZWQudHh0
CmluZGV4IGVmY2M1YzJlY2Y4ZWY1YThlNDJmODJkZmM2M2U0ZmIxODJhNDc5ZWYuLjBkNTU2MWY0
OGU1NjdlMzYyNzkyNmE0MTFhNzVlMGVjYjRiMDY4NTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVl
cy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0eS1jc3NvbS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMt
dmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnR5LWNzc29tLWV4cGVjdGVkLnR4dApAQCAtMiw4
ICsyLDggQEAKIFBBU1MgQ1NTT00gc2V0dGVycyBmdW5jdGlvbiBhcyBleHBlY3RlZCBmb3IgdW5y
ZWdpc3RlcmVkIHByb3BlcnRpZXMgCiBGQUlMIENTUy5yZWdpc3RlclByb3BlcnR5IFRoZSBnaXZl
biBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgogRkFJ
TCBGb3JtZXJseSB2YWxpZCB2YWx1ZXMgYXJlIHN0aWxsIHJlYWRhYmxlIGZyb20gaW5saW5lIHN0
eWxlcyBidXQgYXJlIGNvbXB1dGVkIGFzIHRoZSB1bnNldCB2YWx1ZSBhc3NlcnRfZXF1YWxzOiBl
eHBlY3RlZCAiYmx1ZSIgYnV0IGdvdCAiaGVsbG8iCi1GQUlMIFZhbHVlcyBub3QgbWF0Y2hpbmcg
dGhlIHJlZ2lzdGVyZWQgdHlwZSBjYW4ndCBiZSBzZXQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQg
ImhlbGxvIiBidXQgZ290ICIyMCIKK0ZBSUwgVmFsdWVzIG5vdCBtYXRjaGluZyB0aGUgcmVnaXN0
ZXJlZCB0eXBlIGNhbid0IGJlIHNldCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiNSIgYnV0IGdv
dCAiaGkiCiBGQUlMIFZhbHVlcyBjYW4gYmUgcmVtb3ZlZCBmcm9tIGlubGluZSBzdHlsZXMgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgInJlZCIgYnV0IGdvdCAiIHJlZCIKLVBBU1MgU3R5bGVzaGVl
dHMgY2FuIGJlIG1vZGlmaWVkIGJ5IENTU09NIAorRkFJTCBTdHlsZXNoZWV0cyBjYW4gYmUgbW9k
aWZpZWQgYnkgQ1NTT00gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjEwcHgiIGJ1dCBnb3QgIjBw
eCIKIEZBSUwgVmFsaWQgdmFsdWVzIGNhbiBiZSBzZXQgb24gaW5saW5lIHN0eWxlcyBhc3NlcnRf
ZXF1YWxzOiBleHBlY3RlZCAiYmx1ZSIgYnV0IGdvdCAiIGJsdWUiCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0
aWVzLXZhbHVlcy1hcGkvdHlwZWRvbS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFs
dWVzLWFwaS90eXBlZG9tLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKaW5kZXggNjZmYmJjYTk5MDlj
YjlmYzU0OTY4YzI4ZTIyNmY4ZWVjODQxNDQzYy4uMWU0ZDI3MGFlNjhmMWViMTc2NmUzYWM3MmQz
NWJkNTAxMjYwZWY3NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS90eXBlZG9tLnRlbnRh
dGl2ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS90eXBlZG9tLnRlbnRhdGl2
ZS1leHBlY3RlZC50eHQKQEAgLTIsNyArMiw3IEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSAzNDA6
IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBDU1NVbnBhcnNlZFZhbHVlCiAK
IEhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZp
bmQgdmFyaWFibGU6IENTU1VucGFyc2VkVmFsdWUKIAotRkFJTCBDb21wdXRlZCAqIGlzIHJlaWZp
ZWQgYXMgQ1NTVW5wYXJzZWRWYWx1ZSB0YXJnZXQuY29tcHV0ZWRTdHlsZU1hcCBpcyBub3QgYSBm
dW5jdGlvbi4gKEluICd0YXJnZXQuY29tcHV0ZWRTdHlsZU1hcCgpJywgJ3RhcmdldC5jb21wdXRl
ZFN0eWxlTWFwJyBpcyB1bmRlZmluZWQpCitGQUlMIENvbXB1dGVkICogaXMgcmVpZmllZCBhcyBD
U1NVbnBhcnNlZFZhbHVlIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZv
ciB0aGUgZ2l2ZW4gc3ludGF4LgogRkFJTCBDb21wdXRlZCA8YW5nbGU+IGlzIHJlaWZpZWQgYXMg
Q1NTVW5pdFZhbHVlIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0
aGUgZ2l2ZW4gc3ludGF4LgogRkFJTCBDb21wdXRlZCA8Y29sb3I+IGlzIHJlaWZpZWQgYXMgQ1NT
U3R5bGVWYWx1ZSBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhl
IGdpdmVuIHN5bnRheC4KIEZBSUwgQ29tcHV0ZWQgPGN1c3RvbS1pZGVudD4gaXMgcmVpZmllZCBh
cyBDU1NLZXl3b3JkVmFsdWUgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2Ug
Zm9yIHRoZSBnaXZlbiBzeW50YXguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1y
ZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWN5Y2xlcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGll
cy12YWx1ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWN5Y2xlcy1l
eHBlY3RlZC50eHQKaW5kZXggOTMxNDUxMjFhMWMzNDZhMmM4MjYwMWZiOGQzZGYxNTlhMDI5ZmMy
Ni4uMmJlZGY2ODkyNzJlNTIwNjMxOGIzMGZhZmFkNTQ4MTJlZGVkYWE5MSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3Bl
cnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1jeWNs
ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvdmFyLXJlZmVyZW5jZS1yZWdp
c3RlcmVkLXByb3BlcnRpZXMtY3ljbGVzLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDYgQEAKIAot
UEFTUyBBIHZhcigpIGN5Y2xlIGJldHdlZW4gdHdvIHJlZ2lzdGVyZWQgcHJvcGVydGllcyBpcyBo
YW5kbGVkIGNvcnJlY3RseS4gCi1QQVNTIEEgdmFyKCkgY3ljbGUgYmV0d2VlbiBhIHJlZ2lzdGVy
ZWQgcHJvcGVydGllcyBhbmQgYW4gdW5yZWdpc3RlcmVkIHByb3BlcnR5IGlzIGhhbmRsZWQgY29y
cmVjdGx5LiAKK0ZBSUwgQSB2YXIoKSBjeWNsZSBiZXR3ZWVuIHR3byByZWdpc3RlcmVkIHByb3Bl
cnRpZXMgaXMgaGFuZGxlZCBjb3JyZWN0bHkuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIycHgi
IGJ1dCBnb3QgIjNweCIKK0ZBSUwgQSB2YXIoKSBjeWNsZSBiZXR3ZWVuIGEgcmVnaXN0ZXJlZCBw
cm9wZXJ0aWVzIGFuZCBhbiB1bnJlZ2lzdGVyZWQgcHJvcGVydHkgaXMgaGFuZGxlZCBjb3JyZWN0
bHkuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxcHgiIGJ1dCBnb3QgIjJweCIKIFBBU1MgQSB2
YXIoKSBjeWNsZSBiZXR3ZWVuIGEgdHdvIHVucmVnaXN0ZXJlZCBwcm9wZXJ0aWVzIGlzIGhhbmRs
ZWQgY29ycmVjdGx5LiAKLVBBU1MgQSB2YXIoKSBjeWNsZSBiZXR3ZWVuIGEgc3ludGF4OicqJyBw
cm9wZXJ0eSBhbmQgYW4gdW5yZWdpc3RlcmVkIHByb3BlcnR5IGlzIGhhbmRsZWQgY29ycmVjdGx5
LiAKK0ZBSUwgQSB2YXIoKSBjeWNsZSBiZXR3ZWVuIGEgc3ludGF4OicqJyBwcm9wZXJ0eSBhbmQg
YW4gdW5yZWdpc3RlcmVkIHByb3BlcnR5IGlzIGhhbmRsZWQgY29ycmVjdGx5LiBUaGUgZ2l2ZW4g
aW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVy
dGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVnaXN0
ZXJlZC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRleCAzOWU2NzVkNDM0YWUxYTkwZTUyZGE5
ZWFiNmY0MDI2NjRkOWMwMzczLi5kYjUzNWU0Yzg4ODYxMjY3MGQwZDJkMzc0YzU4YjVmNGUwNGQx
OTgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVnaXN0ZXJl
ZC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1yZWZl
cmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAK
IAotRkFJTCB2YXIoKSByZWZlcmVuY2VzIHdvcmsgd2l0aCByZWdpc3RlcmVkIHByb3BlcnRpZXMg
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIiAgMTBweCIgYnV0IGdvdCAiIDEwcHgiCitGQUlMIHZh
cigpIHJlZmVyZW5jZXMgd29yayB3aXRoIHJlZ2lzdGVyZWQgcHJvcGVydGllcyBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAiMTVweCIgYnV0IGdvdCAiMTAlIgogRkFJTCBSZWZlcmVuY2VzIHRvIHJl
Z2lzdGVyZWQgdmFyKCktcHJvcGVydGllcyB3b3JrIGluIHJlZ2lzdGVyZWQgbGlzdHMgYXNzZXJ0
X2VxdWFsczogZXhwZWN0ZWQgIjFweCwgMTBweCwgMnB4IiBidXQgZ290ICIwcHgiCiBGQUlMIFJl
ZmVyZW5jZXMgdG8gbWl4ZWQgcmVnaXN0ZXJlZCBhbmQgdW5yZWdpc3RlcmVkIHZhcigpLXByb3Bl
cnRpZXMgd29yayBpbiByZWdpc3RlcmVkIGxpc3RzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIx
cHgsIDIwcHgsIDEwcHgsIDJweCIgYnV0IGdvdCAiMHB4IgogRkFJTCBSZWdpc3RlcmVkIGxpc3Rz
IG1heSBiZSBjb25jYXRlbmF0ZWQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjFweCwgMTBweCwg
MnB4LCAxcHgsIDIwcHgsIDEwcHgsIDJweCIgYnV0IGdvdCAiMHB4Igo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353320</attachid>
            <date>2018-10-29 14:08:33 -0700</date>
            <delta_ts>2018-10-29 14:48:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190919-20181029140832.patch</filename>
            <type>text/plain</type>
            <size>129089</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ4NmIwMmU1NmRmOTIz
MGM2MTUyMTYzZWI3MmZkYzA0OTBmMzgxNS4uMTM2YmFmMWJlODI2ZmFjMTdkNDUyZjQyMTNjMTVj
OWI4YmU0ZWI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDE4LTEwLTI1ICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZlcnQg
cjIzNzM0NyByZWdpc3RlcmVkIGN1c3RvbSBwcm9wZXJ0aWVzLi4uIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAwMzkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDkxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXN0b21Qcm9w
ZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjdXN0b21DU1NUZXh0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1c3RvbVByb3BlcnR5VmFsdWU6OnRva2VucyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjaGVja1Zh
cmlhYmxlc0ZvckN5Y2xlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlOjpyZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0N1c3RvbVByb3BlcnR5VmFsdWU6OnNldFJlc29sdmVkVHlwZWRWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjplcXVhbHMgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGNzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmg6CisgICAgICAg
ICogY3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHk6OkNTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0
eSk6CisgICAgICAgICogY3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oOgorICAgICAg
ICAqIGNzcy9DU1NWYXJpYWJsZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFi
bGVEYXRhOjpjb25zdW1lQW5kVXBkYXRlVG9rZW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zh
cmlhYmxlRGF0YTo6Q1NTVmFyaWFibGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zhcmlh
YmxlRGF0YTo6Y2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVmFyaWFibGVEYXRhOjpjaGVja1ZhcmlhYmxlc0ZvckN5Y2xlc1dpdGhSYW5nZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6OnJlc29sdmVWYXJpYWJsZUZh
bGxiYWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2
ZVZhcmlhYmxlUmVmZXJlbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxl
RGF0YTo6cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NWYXJpYWJsZURhdGE6OnJlc29sdmVUb2tlblJhbmdlIGNvbnN0KToKKyAgICAgICAgKiBj
c3MvQ1NTVmFyaWFibGVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZVJlc29s
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6bmVlZHNWYXJpYWJsZVJl
c29sdXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRhOjpDU1NW
YXJpYWJsZURhdGEpOgorICAgICAgICAqIGNzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OmNoZWNrVmFy
aWFibGVzRm9yQ3ljbGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVWYXJpYWJs
ZUZhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVWYXJpYWJsZVJl
ZmVyZW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlVG9rZW5SYW5nZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlOjpy
ZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3Mv
Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFi
bGVSZWZlcmVuY2VWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxl
UmVmZXJlbmNlVmFsdWU6OnZhcmlhYmxlRGF0YVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OmVxdWFscyBjb25zdCk6CisgICAgICAgICog
Y3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6cmVnaXN0ZXJQcm9wZXJ0eSk6CisgICAgICAg
ICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KToKKyAgICAg
ICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEN1c3RvbVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUN1c3RvbVByb3BlcnR5KToKKyAgICAg
ICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVT
dHlsZVByb3BlcnRpZXM6OnNldEN1c3RvbVByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVQ
cm9wZXJ0aWVzLmg6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVz
b2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6cmVzb2x2ZWRWYXJpYWJsZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YXBwbHlEZWZlcnJlZFByb3BlcnRp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVz
OjpQcm9wZXJ0eTo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBw
bHlDYXNjYWRlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
YXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvU3R5
bGVSZXNvbHZlci5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5jZXMp
OgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmg6CisgICAgICAgICogY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBh
cnNlcjo6Q1NTUHJvcGVydHlQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQ
YXJzZXI6OnBhcnNlVmFsdWVTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBh
cnNlcjo6cGFyc2VTaW5nbGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBh
cnNlcjo6Y2FuUGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZh
bHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpjb2xs
ZWN0UGFyc2VkQ3VzdG9tUHJvcGVydHlWYWx1ZURlcGVuZGVuY2llcyk6IERlbGV0ZWQuCisgICAg
ICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oOgorICAgICAgICAqIGNzcy9wYXJz
ZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVQ
YXJzZXI6OnBhcnNlRGVjbGFyYXRpb25WYWx1ZSk6CisgICAgICAgICogZG9tL0NvbnN0YW50UHJv
cGVydHlNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc3RhbnRQcm9wZXJ0eU1hcDo6c2V0
VmFsdWVGb3JQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjp2YXJpYWJsZURhdGFGb3JQb3Np
dGl2ZVBpeGVsTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OnZhcmlhYmxlRGF0YUZvclBvc2l0
aXZlRHVyYXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hlY2tWYXJpYWJsZXNJbkN1c3RvbVBy
b3BlcnRpZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldE5vbkluaGVyaXRlZEN1c3Rv
bVByb3BlcnR5VmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbVBy
b3BlcnR5RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0
eURhdGE6OnNldEN1c3RvbVByb3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVD
dXN0b21Qcm9wZXJ0eURhdGE6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhKToKKwogMjAxOC0xMC0y
NiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzNzQ1OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggMDc0OWQ5YTRkNjgxMTU2Y2U2
Njk3MjlkOTFkODBiMzNiYWI2MThhNC4uYzc3NjQ4ZWUxZDgzNDlmYjM2YjEwNzE1NDVjMzgxZmE3
MzI3MDljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKQEAgLTI2MTIsMjMgKzI2MTIsMjEgQEAgUmVmUHRyPENTU1ZhbHVlPiBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYg
cHJvcGUKICAgICBhdXRvKiByZWdpc3RlcmVkID0gc3R5bGVkRWxlbWVudC0+ZG9jdW1lbnQoKS5n
ZXRDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQoKS5nZXQocHJvcGVydHlOYW1lKTsKICAg
ICBhdXRvKiB2YWx1ZSA9IHN0eWxlLT5nZXRDdXN0b21Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUpOwog
Ci0gICAgaWYgKHJlZ2lzdGVyZWQgJiYgIXZhbHVlKQotICAgICAgICByZXR1cm4gcmVnaXN0ZXJl
ZC0+aW5pdGlhbFZhbHVlQ29weSgpOworICAgIGlmIChyZWdpc3RlcmVkKSB7CisgICAgICAgIC8v
IFRPRE8gdGhpcyBzaG91bGQgYmUgZG9uZSBiYXNlZCBvbiB0aGUgc3ludGF4CisgICAgICAgIGlm
ICh2YWx1ZSAmJiB2YWx1ZS0+cmVzb2x2ZWRUeXBlZFZhbHVlKCkpCisgICAgICAgICAgICByZXR1
cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aCgqdmFsdWUtPnJlc29sdmVkVHlwZWRW
YWx1ZSgpLCAqc3R5bGUpOworCisgICAgICAgIGlmIChyZWdpc3RlcmVkLT5pbml0aWFsVmFsdWUo
KSAmJiByZWdpc3RlcmVkLT5pbml0aWFsVmFsdWUoKS0+cmVzb2x2ZWRUeXBlZFZhbHVlKCkpCisg
ICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aCgqcmVnaXN0
ZXJlZC0+aW5pdGlhbFZhbHVlKCktPnJlc29sdmVkVHlwZWRWYWx1ZSgpLCAqc3R5bGUpOwogCi0g
ICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogCi0gICAgYXV0
byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgUmVmPENTU1ZhcmlhYmxlUmVm
ZXJlbmNlVmFsdWU+JikgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuIFJlZlB0cjxDU1NWYWx1ZT4oKTsKLSAgICB9LCBbJl0oY29uc3QgQ1NTVmFsdWVJRCYp
IHsKKyAgICBpZiAodmFsdWUpCiAgICAgICAgIHJldHVybiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
OjpjcmVhdGUoKnZhbHVlKTsKLSAgICB9LCBbJl0oY29uc3QgUmVmPENTU1ZhcmlhYmxlRGF0YT4m
KSB7Ci0gICAgICAgIHJldHVybiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUoKnZhbHVl
KTsKLSAgICB9LCBbJl0oY29uc3QgTGVuZ3RoJiB2YWx1ZSkgewotICAgICAgICByZXR1cm4gem9v
bUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aCh2YWx1ZSwgKnN0eWxlKTsKLSAgICB9KTsKLSAg
ICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCB2YWx1ZS0+dmFsdWUoKSk7CisKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAogU3RyaW5nIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmN1c3RvbVBy
b3BlcnR5VGV4dChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcAppbmRleCBlNjk2NmZmOWJkYzE0NDI2YThj
ODk5ODA4ZDM0N2ZhYThjMmUxZDE2Li43YzE2ZTg0MWRlYWZlZTJlMjE5MjU4ZWM0OTViNzgwZjQx
NjUyNjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUu
Y3BwCkBAIC0yNyw2MyArMjcsODAgQEAKICNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
LmgiCiAjaW5jbHVkZSAiQ1NTVG9rZW5pemVyLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Ym9vbCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjplcXVhbHMoY29uc3QgQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgaWYgKG1fbmFtZSAhPSBvdGhlci5tX25hbWUg
fHwgbV92YWx1ZS5pbmRleCgpICE9IG90aGVyLm1fdmFsdWUuaW5kZXgoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0
IFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiYgdmFsdWUpIHsKLSAgICAgICAgcmV0dXJu
IHZhbHVlLmdldCgpID09IFdURjo6Z2V0PFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPj4o
b3RoZXIubV92YWx1ZSkuZ2V0KCk7Ci0gICAgfSwgWyZdKGNvbnN0IENTU1ZhbHVlSUQmIHZhbHVl
KSB7Ci0gICAgICAgIHJldHVybiB2YWx1ZSA9PSBXVEY6OmdldDxDU1NWYWx1ZUlEPihvdGhlci5t
X3ZhbHVlKTsKLSAgICB9LCBbJl0oY29uc3QgUmVmPENTU1ZhcmlhYmxlRGF0YT4mIHZhbHVlKSB7
Ci0gICAgICAgIHJldHVybiB2YWx1ZS5nZXQoKSA9PSBXVEY6OmdldDxSZWY8Q1NTVmFyaWFibGVE
YXRhPj4ob3RoZXIubV92YWx1ZSkuZ2V0KCk7Ci0gICAgfSwgWyZdKGNvbnN0IExlbmd0aCYgdmFs
dWUpIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlID09IFdURjo6Z2V0PExlbmd0aD4ob3RoZXIubV92
YWx1ZSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV92YWx1ZSk7
Ci19CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
OjpjdXN0b21DU1NUZXh0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fc2VyaWFsaXplZCkgewogICAg
ICAgICBtX3NlcmlhbGl6ZWQgPSB0cnVlOwotCi0gICAgICAgIGF1dG8gdmlzaXRvciA9IFdURjo6
bWFrZVZpc2l0b3IoWyZdKGNvbnN0IFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiYgdmFs
dWUpIHsKLSAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSB2YWx1ZS0+Y3NzVGV4dCgpOwotICAg
ICAgICB9LCBbJl0oY29uc3QgQ1NTVmFsdWVJRCYgdmFsdWUpIHsKLSAgICAgICAgICAgIG1fc3Ry
aW5nVmFsdWUgPSBnZXRWYWx1ZU5hbWUodmFsdWUpOwotICAgICAgICB9LCBbJl0oY29uc3QgUmVm
PENTU1ZhcmlhYmxlRGF0YT4mIHZhbHVlKSB7Ci0gICAgICAgICAgICBtX3N0cmluZ1ZhbHVlID0g
dmFsdWUtPnRva2VuUmFuZ2UoKS5zZXJpYWxpemUoKTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IExl
bmd0aCYgdmFsdWUpIHsKLSAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKHZhbHVlLnZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpLT5j
c3NUZXh0KCk7Ci0gICAgICAgIH0pOwotICAgICAgICBXVEY6OnZpc2l0KHZpc2l0b3IsIG1fdmFs
dWUpOworICAgICAgICBpZiAobV9yZXNvbHZlZFR5cGVkVmFsdWUpIC8vIEZJWE1FOiBVbml0IHNo
b3VsZCBiZSBiYXNlZCBvbiBzeW50YXguCisgICAgICAgICAgICBtX3N0cmluZ1ZhbHVlID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtX3Jlc29sdmVkVHlwZWRWYWx1ZS0+dmFsdWUoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QWCktPmNzc1RleHQoKTsKKyAgICAgICAgZWxzZSBpZiAobV92
YWx1ZSkKKyAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSBtX3ZhbHVlLT50b2tlblJhbmdlKCku
c2VyaWFsaXplKCk7CisgICAgICAgIGVsc2UgaWYgKG1fdmFsdWVJZCAhPSBDU1NWYWx1ZUludmFs
aWQpCisgICAgICAgICAgICBtX3N0cmluZ1ZhbHVlID0gZ2V0VmFsdWVOYW1lKG1fdmFsdWVJZCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSBlbXB0eVN0cmluZygp
OwogICAgIH0KICAgICByZXR1cm4gbV9zdHJpbmdWYWx1ZTsKIH0KIAotVmVjdG9yPENTU1BhcnNl
clRva2VuPiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjp0b2tlbnMoKSBjb25zdAorVmVjdG9yPENT
U1BhcnNlclRva2VuPiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjp0b2tlbnMoY29uc3QgQ1NTUmVn
aXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiByZWdpc3RlcmVkUHJvcGVydGllcywgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogewotICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVz
dWx0OwotCi0gICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgUmVm
PENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+JikgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICB9LCBbJl0oY29uc3QgQ1NTVmFsdWVJRCYpIHsKLSAgICAgICAgLy8gRG8gbm90
aGluZwotICAgIH0sIFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYgdmFsdWUpIHsKLSAg
ICAgICAgcmVzdWx0LmFwcGVuZFZlY3Rvcih2YWx1ZS0+dG9rZW5zKCkpOwotICAgIH0sIFsmXShj
b25zdCBMZW5ndGgmKSB7CisgICAgaWYgKG1fcmVzb2x2ZWRUeXBlZFZhbHVlKSB7CisgICAgICAg
IFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVzdWx0OwogICAgICAgICBDU1NUb2tlbml6ZXIgdG9r
ZW5pemVyKGNzc1RleHQoKSk7CiAKICAgICAgICAgYXV0byB0b2tlbml6ZXJSYW5nZSA9IHRva2Vu
aXplci50b2tlblJhbmdlKCk7CiAgICAgICAgIHdoaWxlICghdG9rZW5pemVyUmFuZ2UuYXRFbmQo
KSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodG9rZW5pemVyUmFuZ2UuY29uc3VtZSgpKTsK
LSAgICB9KTsKLSAgICBXVEY6OnZpc2l0KHZpc2l0b3IsIG1fdmFsdWUpOwogCi0gICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBpZiAoIW1fdmFs
dWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAobV9jb250YWluc1ZhcmlhYmxlcykg
eworICAgICAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHJlc3VsdDsKKyAgICAgICAgLy8gRklY
TUU6IEF2b2lkIGRvaW5nIHRoaXMgd29yayBtb3JlIHRoYW4gb25jZS4KKyAgICAgICAgUmVmUHRy
PENTU1ZhcmlhYmxlRGF0YT4gcmVzb2x2ZWREYXRhID0gbV92YWx1ZS0+cmVzb2x2ZVZhcmlhYmxl
UmVmZXJlbmNlcyhyZWdpc3RlcmVkUHJvcGVydGllcywgc3R5bGUpOworICAgICAgICBpZiAocmVz
b2x2ZWREYXRhKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZFZlY3RvcihyZXNvbHZlZERhdGEt
PnRva2VucygpKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHJldHVy
biBtX3ZhbHVlLT50b2tlbnMoKTsKK30KKworYm9vbCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpj
aGVja1ZhcmlhYmxlc0ZvckN5Y2xlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSwgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBzZWVuUHJvcGVydGllcywg
SGFzaFNldDxBdG9taWNTdHJpbmc+JiBpbnZhbGlkUHJvcGVydGllcykgY29uc3QKK3sKKyAgICBB
U1NFUlQoY29udGFpbnNWYXJpYWJsZXMoKSk7CisgICAgaWYgKG1fdmFsdWUpCisgICAgICAgIHJl
dHVybiBtX3ZhbHVlLT5jaGVja1ZhcmlhYmxlc0ZvckN5Y2xlcyhuYW1lLCBzdHlsZSwgc2VlblBy
b3BlcnRpZXMsIGludmFsaWRQcm9wZXJ0aWVzKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpyZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKGNvbnN0
IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYgcmVnaXN0ZXJlZFByb3BlcnRpZXMsIFZl
Y3RvcjxSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4+JiByZXNvbHZlZFZhbHVlcywgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAoreworICAgIEFTU0VSVChjb250YWluc1ZhcmlhYmxl
cygpKTsKKyAgICBpZiAoIW1fdmFsdWUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBBU1NF
UlQobV92YWx1ZS0+bmVlZHNWYXJpYWJsZVJlc29sdXRpb24oKSk7CisgICAgUmVmUHRyPENTU1Zh
cmlhYmxlRGF0YT4gcmVzb2x2ZWREYXRhID0gbV92YWx1ZS0+cmVzb2x2ZVZhcmlhYmxlUmVmZXJl
bmNlcyhyZWdpc3RlcmVkUHJvcGVydGllcywgc3R5bGUpOworICAgIGlmIChyZXNvbHZlZERhdGEp
CisgICAgICAgIHJlc29sdmVkVmFsdWVzLmFwcGVuZChDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpj
cmVhdGVXaXRoVmFyaWFibGVEYXRhKG1fbmFtZSwgcmVzb2x2ZWREYXRhLnJlbGVhc2VOb25OdWxs
KCkpKTsKKyAgICBlbHNlCisgICAgICAgIHJlc29sdmVkVmFsdWVzLmFwcGVuZChDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlOjpjcmVhdGVXaXRoSUQobV9uYW1lLCBDU1NWYWx1ZUludmFsaWQpKTsKK30K
Kwordm9pZCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpzZXRSZXNvbHZlZFR5cGVkVmFsdWUoTGVu
Z3RoIGxlbmd0aCkKK3sKKyAgICBBU1NFUlQobGVuZ3RoLmlzU3BlY2lmaWVkKCkpOworICAgIG1f
cmVzb2x2ZWRUeXBlZFZhbHVlID0gV1RGTW92ZShsZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaAppbmRleCA2MjVlMTk1MTFlMmRkYWRi
YWQ0N2M2OTE3MzM5ZDQ5OTcxMThmNDk3Li5iYjA5MjE0NWRlNTFmYjZlNmIzOWQ5OTU0ZDM2NDky
ZGJjY2Q2ZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
LmgKQEAgLTI3LDQ2ICsyNywzMSBAQAogCiAjaW5jbHVkZSAiQ1NTUmVnaXN0ZXJlZEN1c3RvbVBy
b3BlcnR5LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNpbmNsdWRlICJDU1NWYXJpYWJsZVJl
ZmVyZW5jZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVmFyaWFibGVEYXRhLmgiCiAjaW5jbHVkZSAi
TGVuZ3RoLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ1NTUGFyc2VyVG9rZW47Ci1jbGFzcyBDU1NWYXJpYWJsZVJlZmVyZW5jZVZh
bHVlOwogY2xhc3MgUmVuZGVyU3R5bGU7CiAKIGNsYXNzIENTU0N1c3RvbVByb3BlcnR5VmFsdWUg
ZmluYWwgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHVzaW5nIFZhcmlhbnRWYWx1
ZSA9IFZhcmlhbnQ8UmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+LCBDU1NWYWx1ZUlELCBS
ZWY8Q1NTVmFyaWFibGVEYXRhPiwgTGVuZ3RoPjsKLQotICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZT4gY3JlYXRlVW5yZXNvbHZlZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiYmIHZhbHVlKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCB7IFdURk1v
dmUodmFsdWUpIH0pKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5
VmFsdWU+IGNyZWF0ZVVucmVzb2x2ZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBDU1NWYWx1
ZUlEIHZhbHVlKQorICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3JlYXRl
V2l0aFZhcmlhYmxlRGF0YShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFJlZjxDU1NWYXJpYWJs
ZURhdGE+JiYgdmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHsgdmFsdWUgfSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1vdmUodmFsdWUpKSk7
CiAgICAgfQotCi0gICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBjcmVhdGVX
aXRoSUQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBDU1NWYWx1ZUlEIGlkKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKGlkID09IENTU1ZhbHVlSW5oZXJpdCB8fCBpZCA9PSBDU1NWYWx1ZUluaXRp
YWwgfHwgaWQgPT0gQ1NTVmFsdWVVbnNldCB8fCBpZCA9PSBDU1NWYWx1ZVJldmVydCB8fCBpZCA9
PSBDU1NWYWx1ZUludmFsaWQpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHsgaWQgfSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBSZWY8
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3JlYXRlU3ludGF4QWxsKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgUmVmPENTU1ZhcmlhYmxlRGF0YT4mJiB2YWx1ZSkKKyAgICAKKyAgICBzdGF0aWMg
UmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGNyZWF0ZVdpdGhJRChjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIENTU1ZhbHVlSUQgdmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHsgV1RGTW92ZSh2YWx1ZSkgfSkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5h
bWUsIHZhbHVlKSk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZT4gY3JlYXRlU3ludGF4TGVuZ3RoKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgTGVu
Z3RoIHZhbHVlKQorICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3JlYXRl
SW52YWxpZCgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlKG5hbWUsIHsgV1RGTW92ZSh2YWx1ZSkgfSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKGVtcHR5U3RyaW5nKCksIGVtcHR5
U3RyaW5nKCkpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFs
dWU+IGNyZWF0ZShjb25zdCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJiBvdGhlcikKQEAgLTc3LDQ5
ICs2Miw3MCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQot
ICAgIGJvb2wgaXNSZXNvbHZlZCgpIGNvbnN0ICB7IHJldHVybiAhV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4+KG1fdmFsdWUpOyB9Ci0gICAgYm9v
bCBpc1Vuc2V0KCkgY29uc3QgIHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q1NTVmFs
dWVJRD4obV92YWx1ZSkgJiYgV1RGOjpnZXQ8Q1NTVmFsdWVJRD4obV92YWx1ZSkgPT0gQ1NTVmFs
dWVVbnNldDsgfQotICAgIGJvb2wgaXNJbnZhbGlkKCkgY29uc3QgIHsgcmV0dXJuIFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8Q1NTVmFsdWVJRD4obV92YWx1ZSkgJiYgV1RGOjpnZXQ8Q1NTVmFsdWVJ
RD4obV92YWx1ZSkgPT0gQ1NTVmFsdWVJbnZhbGlkOyB9CisgICAgCisgICAgYm9vbCBlcXVhbHMo
Y29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fbmFt
ZSA9PSBvdGhlci5tX25hbWUgJiYgbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlICYmIG1fdmFsdWVJ
ZCA9PSBvdGhlci5tX3ZhbHVlSWQ7IH0KKworICAgIGJvb2wgY29udGFpbnNWYXJpYWJsZXMoKSBj
b25zdCB7IEFTU0VSVCghbV9jb250YWluc1ZhcmlhYmxlcyB8fCAhbV9yZXNvbHZlZFR5cGVkVmFs
dWUpOyByZXR1cm4gbV9jb250YWluc1ZhcmlhYmxlczsgfQorICAgIGJvb2wgY2hlY2tWYXJpYWJs
ZXNGb3JDeWNsZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBSZW5kZXJTdHlsZSYs
IEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3Ry
aW5nPiYgaW52YWxpZFByb3BlcnRpZXMpIGNvbnN0OworCisgICAgdm9pZCByZXNvbHZlVmFyaWFi
bGVSZWZlcmVuY2VzKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYsIFZlY3Rv
cjxSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4+JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25z
dDsKIAotICAgIGNvbnN0IFZhcmlhbnRWYWx1ZSYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlOyB9CisgICAgQ1NTVmFsdWVJRCB2YWx1ZUlEKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZUlk
OyB9CisgICAgQ1NTVmFyaWFibGVEYXRhKiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUu
Z2V0KCk7IH0KKyAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHRva2Vucyhjb25zdCBDU1NSZWdp
c3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCi0g
ICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiB0b2tlbnMoKSBjb25zdDsKLSAgICBib29sIGVxdWFs
cyhjb25zdCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJiBvdGhlcikgY29uc3Q7CisgICAgY29uc3Qg
c3RkOjpvcHRpb25hbDxMZW5ndGg+JiByZXNvbHZlZFR5cGVkVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3Jlc29sdmVkVHlwZWRWYWx1ZTsgfQorICAgIHZvaWQgc2V0UmVzb2x2ZWRUeXBlZFZhbHVl
KExlbmd0aCk7CiAKIHByaXZhdGU6Ci0gICAgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIFZhcmlhbnRWYWx1ZSYmIHZhbHVlKQorICAgIENTU0N1c3RvbVBy
b3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHNlcmlh
bGl6ZWRWYWx1ZSkKKyAgICAgICAgOiBDU1NWYWx1ZShDdXN0b21Qcm9wZXJ0eUNsYXNzKQorICAg
ICAgICAsIG1fbmFtZShuYW1lKQorICAgICAgICAsIG1fc3RyaW5nVmFsdWUoc2VyaWFsaXplZFZh
bHVlKQorICAgICAgICAsIG1fc2VyaWFsaXplZCh0cnVlKQorICAgIHsKKyAgICB9CisKKyAgICBD
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgQ1NTVmFsdWVJ
RCBpZCkKKyAgICAgICAgOiBDU1NWYWx1ZShDdXN0b21Qcm9wZXJ0eUNsYXNzKQorICAgICAgICAs
IG1fbmFtZShuYW1lKQorICAgICAgICAsIG1fdmFsdWVJZChpZCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChpZCA9PSBDU1NWYWx1ZUluaGVyaXQgfHwgaWQgPT0gQ1NTVmFsdWVJbml0aWFsIHx8IGlk
ID09IENTU1ZhbHVlVW5zZXQgfHwgaWQgPT0gQ1NTVmFsdWVSZXZlcnQgfHwgaWQgPT0gQ1NTVmFs
dWVJbnZhbGlkKTsKKyAgICB9CisgICAgCisgICAgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIFJlZjxDU1NWYXJpYWJsZURhdGE+JiYgdmFsdWUpCiAgICAg
ICAgIDogQ1NTVmFsdWUoQ3VzdG9tUHJvcGVydHlDbGFzcykKICAgICAgICAgLCBtX25hbWUobmFt
ZSkKICAgICAgICAgLCBtX3ZhbHVlKFdURk1vdmUodmFsdWUpKQotICAgICAgICAsIG1fc2VyaWFs
aXplZChmYWxzZSkKKyAgICAgICAgLCBtX3ZhbHVlSWQoQ1NTVmFsdWVJbnRlcm5hbFZhcmlhYmxl
VmFsdWUpCisgICAgICAgICwgbV9jb250YWluc1ZhcmlhYmxlcyhtX3ZhbHVlLT5uZWVkc1Zhcmlh
YmxlUmVzb2x1dGlvbigpKQogICAgIHsKICAgICB9CiAKICAgICBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlKGNvbnN0IENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIG90aGVyKQogICAgICAgICA6IENTU1Zh
bHVlKEN1c3RvbVByb3BlcnR5Q2xhc3MpCiAgICAgICAgICwgbV9uYW1lKG90aGVyLm1fbmFtZSkK
LSAgICAgICAgLCBtX3ZhbHVlKENTU1ZhbHVlVW5zZXQpCisgICAgICAgICwgbV92YWx1ZShvdGhl
ci5tX3ZhbHVlLmNvcHlSZWYoKSkKKyAgICAgICAgLCBtX3ZhbHVlSWQob3RoZXIubV92YWx1ZUlk
KQogICAgICAgICAsIG1fc3RyaW5nVmFsdWUob3RoZXIubV9zdHJpbmdWYWx1ZSkKKyAgICAgICAg
LCBtX2NvbnRhaW5zVmFyaWFibGVzKG90aGVyLm1fY29udGFpbnNWYXJpYWJsZXMpCiAgICAgICAg
ICwgbV9zZXJpYWxpemVkKG90aGVyLm1fc2VyaWFsaXplZCkKKyAgICAgICAgLCBtX3Jlc29sdmVk
VHlwZWRWYWx1ZShvdGhlci5tX3Jlc29sdmVkVHlwZWRWYWx1ZSkKICAgICB7Ci0gICAgICAgIC8v
IE5vIGNvcHkgY29uc3RydWN0b3IgZm9yIFJlZjxDU1NWYXJpYWJsZURhdGE+LCBzbyB3ZSBoYXZl
IHRvIGRvIHRoaXMgb3Vyc2VsdmVzCi0gICAgICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZp
c2l0b3IoWyZdKGNvbnN0IFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiYgdmFsdWUpIHsK
LSAgICAgICAgICAgIG1fdmFsdWUgPSB2YWx1ZS5jb3B5UmVmKCk7Ci0gICAgICAgIH0sIFsmXShj
b25zdCBDU1NWYWx1ZUlEJiB2YWx1ZSkgewotICAgICAgICAgICAgbV92YWx1ZSA9IHZhbHVlOwot
ICAgICAgICB9LCBbJl0oY29uc3QgUmVmPENTU1ZhcmlhYmxlRGF0YT4mIHZhbHVlKSB7Ci0gICAg
ICAgICAgICBtX3ZhbHVlID0gdmFsdWUuY29weVJlZigpOwotICAgICAgICB9LCBbJl0oY29uc3Qg
TGVuZ3RoJiB2YWx1ZSkgewotICAgICAgICAgICAgbV92YWx1ZSA9IHZhbHVlOwotICAgICAgICB9
KTsKLSAgICAgICAgV1RGOjp2aXNpdCh2aXNpdG9yLCBvdGhlci5tX3ZhbHVlKTsKICAgICB9CiAg
ICAgCiAgICAgY29uc3QgQXRvbWljU3RyaW5nIG1fbmFtZTsKLSAgICBWYXJpYW50VmFsdWUgbV92
YWx1ZTsKKyAgICAKKyAgICBSZWZQdHI8Q1NTVmFyaWFibGVEYXRhPiBtX3ZhbHVlOworICAgIENT
U1ZhbHVlSUQgbV92YWx1ZUlkIHsgQ1NTVmFsdWVJbnZhbGlkIH07CiAgICAgCiAgICAgbXV0YWJs
ZSBTdHJpbmcgbV9zdHJpbmdWYWx1ZTsKKyAgICBib29sIG1fY29udGFpbnNWYXJpYWJsZXMgeyBm
YWxzZSB9OwogICAgIG11dGFibGUgYm9vbCBtX3NlcmlhbGl6ZWQgeyBmYWxzZSB9OworCisgICAg
Ly8gRklYTUU6IEl0IHNob3VsZCBub3QgYmUgcG9zc2libGUgdG8gZXhwcmVzcyBhbiBpbnZhbGlk
IHN0YXRlLCBzdWNoIGFzIGNvbnRhaW5zVmFyaWFibGVzKCkgJiYgcmVzb2x2ZWRUeXBlZFZhbHVl
KCkuCisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IG1fcmVzb2x2ZWRUeXBlZFZhbHVlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5LmNwcAppbmRleCA3OWVmN2ZlNmIwM2NkNmNmZjdmYjll
YTgxOWIxNjA3NmRlNDU1OGQ3Li4zZWE3YjkyYzAwOTk3MzA5NmEwM2U5NWU5ZTZhMjY3NTRhNWNh
ODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1c3RvbVBy
b3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1c3RvbVBy
b3BlcnR5LmNwcApAQCAtMzAsOSArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNT
U1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eTo6Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzeW50YXgsIGJvb2wgaW5oZXJpdHMsIFJl
ZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiYmIGluaXRpYWxWYWx1ZSkKK0NTU1JlZ2lzdGVy
ZWRDdXN0b21Qcm9wZXJ0eTo6Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgYm9vbCBpbmhlcml0cywgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYg
aW5pdGlhbFZhbHVlKQogICAgIDogbmFtZShuYW1lKQotICAgICwgc3ludGF4KHN5bnRheCkKICAg
ICAsIGluaGVyaXRzKGluaGVyaXRzKQogICAgICwgbV9pbml0aWFsVmFsdWUoV1RGTW92ZShpbml0
aWFsVmFsdWUpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZ2lzdGVy
ZWRDdXN0b21Qcm9wZXJ0eS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZ2lzdGVyZWRDdXN0
b21Qcm9wZXJ0eS5oCmluZGV4IGRmY2YwYmRjMzllZDU0MGMzZDFkYWE0YzA1YTY0YzBmNTkxNTM5
MmIuLjM0MjdlYWEzYzNhYjc0N2MwNTE4NWYzOTM1YjZiNWIyZDI2YWVlM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5LmgKQEAgLTMzLDEw
ICszMywxMCBAQCBjbGFzcyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOwogCiBzdHJ1Y3QgQ1NTUmVn
aXN0ZXJlZEN1c3RvbVByb3BlcnR5IHsKICAgICBjb25zdCBTdHJpbmcgbmFtZTsKLSAgICBjb25z
dCBTdHJpbmcgc3ludGF4OworICAgIC8qIFRPRE8gc3ludGF4ICovCiAgICAgY29uc3QgYm9vbCBp
bmhlcml0czsKIAotICAgIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgc3ludGF4LCBib29sIGluaGVyaXRzLCBSZWZQdHI8Q1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZT4mJiBpbml0aWFsVmFsdWUpOworICAgIENTU1JlZ2lzdGVyZWRDdXN0
b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgaW5oZXJpdHMsIFJlZlB0cjxDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlPiYmIGluaXRpYWxWYWx1ZSk7CiAKICAgICBjb25zdCBDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlKiBpbml0aWFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxW
YWx1ZS5nZXQoKTsgfQogICAgIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBpbml0aWFs
VmFsdWVDb3B5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFy
aWFibGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZURhdGEuY3BwCmlu
ZGV4IDYwNGNhMTgzNDM0YjY1ODY3NGQzZDhjMDcyOWE0MTEwOTE1OGQ5OWQuLjk4OTkzNTMxNzU5
YzhjOTNmNzc1N2UzMTk4OWIxZDYwOTgxMjBjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYXJpYWJsZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJp
YWJsZURhdGEuY3BwCkBAIC02MCw3ICs2MCw3IEBAIGJvb2wgQ1NTVmFyaWFibGVEYXRhOjpvcGVy
YXRvcj09KGNvbnN0IENTU1ZhcmlhYmxlRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRv
a2VucygpID09IG90aGVyLnRva2VucygpOwogfQogCi1DU1NWYXJpYWJsZURhdGE6OkNTU1Zhcmlh
YmxlRGF0YShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3ZvaWQgQ1NTVmFyaWFi
bGVEYXRhOjpjb25zdW1lQW5kVXBkYXRlVG9rZW5zKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQogewogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBDU1NQYXJz
ZXJUb2tlblJhbmdlIGxvY2FsUmFuZ2UgPSByYW5nZTsKQEAgLTc3LDQgKzc3LDEwOSBAQCBDU1NW
YXJpYWJsZURhdGE6OkNTU1ZhcmlhYmxlRGF0YShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKICAgICAgICAgdXBkYXRlVG9rZW5zPFVDaGFyPihyYW5nZSk7CiB9CiAKK0NTU1Zhcmlh
YmxlRGF0YTo6Q1NTVmFyaWFibGVEYXRhKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBib29sIG5lZWRzVmFyaWFibGVSZXNvbHV0aW9uKQorICAgIDogbV9uZWVkc1ZhcmlhYmxlUmVz
b2x1dGlvbihuZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbikKK3sKKyAgICBjb25zdW1lQW5kVXBkYXRl
VG9rZW5zKHJhbmdlKTsKK30KKworYm9vbCBDU1NWYXJpYWJsZURhdGE6OmNoZWNrVmFyaWFibGVz
Rm9yQ3ljbGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21p
Y1N0cmluZz4mIGludmFsaWRQcm9wZXJ0aWVzKSBjb25zdAoreworICAgIGlmIChpbnZhbGlkUHJv
cGVydGllcy5jb250YWlucyhuYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IEhhc2hTZXQ8QXRvbWljU3RyaW5nPiBuZXdTZWVuUHJvcGVydGllcyA9IHNlZW5Qcm9wZXJ0aWVz
OworICAgIG5ld1NlZW5Qcm9wZXJ0aWVzLmFkZChuYW1lKTsKKyAgICAKKyAgICBib29sIHZhbGlk
ID0gY2hlY2tWYXJpYWJsZXNGb3JDeWNsZXNXaXRoUmFuZ2UobV90b2tlbnMsIHN0eWxlLCBuZXdT
ZWVuUHJvcGVydGllcywgaW52YWxpZFByb3BlcnRpZXMpOworICAgIGlmICghdmFsaWQpCisgICAg
ICAgIGludmFsaWRQcm9wZXJ0aWVzLmFkZChuYW1lKTsKKyAgICAKKyAgICByZXR1cm4gdmFsaWQ7
Cit9CisgICAgCitib29sIENTU1ZhcmlhYmxlRGF0YTo6Y2hlY2tWYXJpYWJsZXNGb3JDeWNsZXNX
aXRoUmFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21p
Y1N0cmluZz4mIGludmFsaWRQcm9wZXJ0aWVzKSBjb25zdAoreworICAgIHdoaWxlICghcmFuZ2Uu
YXRFbmQoKSkgeworICAgICAgICBpZiAocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NW
YWx1ZVZhciB8fCByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlRW52KSB7Cisg
ICAgICAgICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGJsb2NrID0gcmFuZ2UuY29uc3VtZUJsb2Nr
KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJsb2NrLmNvbnN1bWVXaGl0ZXNwYWNlKCk7
CisgICAgICAgICAgICBBU1NFUlQoYmxvY2sucGVlaygpLnR5cGUoKSA9PSBJZGVudFRva2VuKTsK
KyAgICAgICAgICAgIEF0b21pY1N0cmluZyB2YXJpYWJsZU5hbWUgPSBibG9jay5jb25zdW1lSW5j
bHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9BdG9taWNTdHJpbmcoKTsKKyAgICAgICAgICAg
IEFTU0VSVChibG9jay5hdEVuZCgpIHx8IGJsb2NrLnBlZWsoKS50eXBlKCkgPT0gQ29tbWFUb2tl
bik7CisgICAgICAgICAgICBpZiAoc2VlblByb3BlcnRpZXMuY29udGFpbnModmFyaWFibGVOYW1l
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGF1dG8qIHZh
bHVlID0gc3R5bGUuZ2V0Q3VzdG9tUHJvcGVydHkodmFyaWFibGVOYW1lKTsKKyAgICAgICAgICAg
IGlmICh2YWx1ZSAmJiB2YWx1ZS0+Y29udGFpbnNWYXJpYWJsZXMoKSAmJiAhdmFsdWUtPmNoZWNr
VmFyaWFibGVzRm9yQ3ljbGVzKHZhcmlhYmxlTmFtZSwgc3R5bGUsIHNlZW5Qcm9wZXJ0aWVzLCBp
bnZhbGlkUHJvcGVydGllcykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgICAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBDb21tYVRva2VuKSB7CisgICAgICAg
ICAgICAgICAgLy8gRmFsbGJhY2suCisgICAgICAgICAgICAgICAgcmFuZ2UuY29uc3VtZSgpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBjaGVja1ZhcmlhYmxlc0ZvckN5Y2xlc1dpdGhSYW5nZShi
bG9jaywgc3R5bGUsIHNlZW5Qcm9wZXJ0aWVzLCBpbnZhbGlkUHJvcGVydGllcyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmFuZ2UuY29uc3VtZSgpOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NWYXJpYWJsZURhdGE6OnJlc29sdmVW
YXJpYWJsZUZhbGxiYWNrKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYgcmVn
aXN0ZXJlZFByb3BlcnRpZXMsIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UsIFZlY3RvcjxDU1NQ
YXJzZXJUb2tlbj4mIHJlc3VsdCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAorewor
ICAgIGlmIChyYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJU
KHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gQ29tbWFUb2tlbik7CisgICAgcmFuZ2UuY29uc3VtZSgp
OworICAgIHJldHVybiByZXNvbHZlVG9rZW5SYW5nZShyZWdpc3RlcmVkUHJvcGVydGllcywgcmFu
Z2UsIHJlc3VsdCwgc3R5bGUpOworfQorCitib29sIENTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2ZVZh
cmlhYmxlUmVmZXJlbmNlKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYgcmVn
aXN0ZXJlZFByb3BlcnRpZXMsIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UsIFZlY3RvcjxDU1NQ
YXJzZXJUb2tlbj4mIHJlc3VsdCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAorewor
ICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7CisgICAgQVNTRVJUKHJhbmdlLnBlZWsoKS50
eXBlKCkgPT0gSWRlbnRUb2tlbik7CisgICAgQXRvbWljU3RyaW5nIHZhcmlhYmxlTmFtZSA9IHJh
bmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b0F0b21pY1N0cmluZygp
OworICAgIEFTU0VSVChyYW5nZS5hdEVuZCgpIHx8IChyYW5nZS5wZWVrKCkudHlwZSgpID09IENv
bW1hVG9rZW4pKTsKKyAgICAKKyAgICBhdXRvKiBwcm9wZXJ0eSA9IHN0eWxlLmdldEN1c3RvbVBy
b3BlcnR5KHZhcmlhYmxlTmFtZSk7CisgICAgaWYgKHByb3BlcnR5ICYmIHByb3BlcnR5LT5yZXNv
bHZlZFR5cGVkVmFsdWUoKSkgeworICAgICAgICByZXN1bHQuYXBwZW5kVmVjdG9yKHByb3BlcnR5
LT50b2tlbnMocmVnaXN0ZXJlZFByb3BlcnRpZXMsIHN0eWxlKSk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIGlmICghcHJvcGVydHkgfHwgIXByb3BlcnR5LT52YWx1ZSgpKSB7
CisgICAgICAgIGF1dG8qIHJlZ2lzdGVyZWQgPSByZWdpc3RlcmVkUHJvcGVydGllcy5nZXQodmFy
aWFibGVOYW1lKTsKKyAgICAgICAgaWYgKHJlZ2lzdGVyZWQgJiYgcmVnaXN0ZXJlZC0+aW5pdGlh
bFZhbHVlKCkpCisgICAgICAgICAgICBwcm9wZXJ0eSA9IHJlZ2lzdGVyZWQtPmluaXRpYWxWYWx1
ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZVZhcmlhYmxlRmFs
bGJhY2socmVnaXN0ZXJlZFByb3BlcnRpZXMsIHJhbmdlLCByZXN1bHQsIHN0eWxlKTsKKyAgICB9
CisgICAgQVNTRVJUKHByb3BlcnR5KTsKKyAgICByZXN1bHQuYXBwZW5kVmVjdG9yKHByb3BlcnR5
LT50b2tlbnMocmVnaXN0ZXJlZFByb3BlcnRpZXMsIHN0eWxlKSk7CisgICAgCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK1JlZlB0cjxDU1NWYXJpYWJsZURhdGE+IENTU1ZhcmlhYmxlRGF0YTo6cmVz
b2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyhjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlT
ZXQmIHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0
Cit7CisgICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiByZXNvbHZlZFRva2VuczsKKyAgICBDU1NQ
YXJzZXJUb2tlblJhbmdlIHJhbmdlID0gbV90b2tlbnM7CisgICAgaWYgKCFyZXNvbHZlVG9rZW5S
YW5nZShyZWdpc3RlcmVkUHJvcGVydGllcywgcmFuZ2UsIHJlc29sdmVkVG9rZW5zLCBzdHlsZSkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBDU1NWYXJpYWJsZURhdGE6OmNy
ZWF0ZVJlc29sdmVkKHJlc29sdmVkVG9rZW5zLCAqdGhpcyk7Cit9CisgICAgCitib29sIENTU1Zh
cmlhYmxlRGF0YTo6cmVzb2x2ZVRva2VuUmFuZ2UoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVBy
b3BlcnR5U2V0JiByZWdpc3RlcmVkUHJvcGVydGllcywgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5n
ZSwgVmVjdG9yPENTU1BhcnNlclRva2VuPiYgcmVzdWx0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUpIGNvbnN0Cit7CisgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKyAgICB3aGlsZSAoIXJhbmdl
LmF0RW5kKCkpIHsKKyAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NT
VmFsdWVWYXIgfHwgcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUVudikKKyAg
ICAgICAgICAgIHN1Y2Nlc3MgJj0gcmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlKHJlZ2lzdGVyZWRQ
cm9wZXJ0aWVzLCByYW5nZS5jb25zdW1lQmxvY2soKSwgcmVzdWx0LCBzdHlsZSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmFuZ2UuY29uc3VtZSgpKTsKKyAgICB9
CisgICAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYXJpYWJsZURhdGEuaAppbmRleCAzOTZlMDY5YjljNDY1MmM4ZTg3ZjdjYWQ4
Mjk5MDM5ZWMwY2VkMTZkLi4wMDhhNmZhNDIzMDc3MDQ5OTMzMTcwN2E3NGM3ZDZjZDZkMjI3MmUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5oCkBAIC00Myw5ICs0MywxNCBAQCBj
bGFzcyBDU1NWYXJpYWJsZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NWYXJpYWJsZURhdGE+
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDU1NWYXJpYWJsZURhdGEpOwogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTVmFyaWFibGVE
YXRhPiBjcmVhdGUoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCisgICAgc3RhdGlj
IFJlZjxDU1NWYXJpYWJsZURhdGE+IGNyZWF0ZShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwgYm9vbCBuZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbiA9IHRydWUpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NWYXJpYWJsZURhdGEocmFuZ2UpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTVmFyaWFibGVEYXRhKHJhbmdlLCBuZWVkc1ZhcmlhYmxl
UmVzb2x1dGlvbikpOworICAgIH0KKworICAgIHN0YXRpYyBSZWY8Q1NTVmFyaWFibGVEYXRhPiBj
cmVhdGVSZXNvbHZlZChjb25zdCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXNvbHZlZFRva2Vu
cywgY29uc3QgQ1NTVmFyaWFibGVEYXRhJiB1bnJlc29sdmVkRGF0YSkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ZhcmlhYmxlRGF0YShyZXNvbHZlZFRva2VucywgdW5y
ZXNvbHZlZERhdGEubV9iYWNraW5nU3RyaW5nKSk7CiAgICAgfQogCiAgICAgQ1NTUGFyc2VyVG9r
ZW5SYW5nZSB0b2tlblJhbmdlKCkgeyByZXR1cm4gbV90b2tlbnM7IH0KQEAgLTU0LDEyICs1OSwz
NiBAQCBwdWJsaWM6CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTVmFyaWFibGVEYXRh
JiBvdGhlcikgY29uc3Q7CiAKKyAgICBib29sIG5lZWRzVmFyaWFibGVSZXNvbHV0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9uZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbjsgfQorCisgICAgYm9vbCBjaGVj
a1ZhcmlhYmxlc0ZvckN5Y2xlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFJlbmRl
clN0eWxlJiwgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBzZWVuUHJvcGVydGllcywgSGFzaFNldDxB
dG9taWNTdHJpbmc+JiBpbnZhbGlkUHJvcGVydGllcykgY29uc3Q7CisKKyAgICBSZWZQdHI8Q1NT
VmFyaWFibGVEYXRhPiByZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKGNvbnN0IENTU1JlZ2lzdGVy
ZWRDdXN0b21Qcm9wZXJ0eVNldCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CisgICAgYm9v
bCByZXNvbHZlVG9rZW5SYW5nZShjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQm
LCBDU1NQYXJzZXJUb2tlblJhbmdlLCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiwgY29uc3QgUmVu
ZGVyU3R5bGUmKSBjb25zdDsKKwogcHJpdmF0ZToKLSAgICBDU1NWYXJpYWJsZURhdGEoY29uc3Qg
Q1NTUGFyc2VyVG9rZW5SYW5nZSYpOworICAgIENTU1ZhcmlhYmxlRGF0YShjb25zdCBDU1NQYXJz
ZXJUb2tlblJhbmdlJiwgYm9vbCBuZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbik7CisKKyAgICAvLyBX
ZSBjYW4gc2FmZWx5IGNvcHkgdGhlIHRva2VucyAod2hpY2ggaGF2ZSByYXcgcG9pbnRlcnMgdG8g
c3Vic3RyaW5ncykgYmVjYXVzZQorICAgIC8vIFN0eWxlUHJvcGVydHlTZXRzIGNvbnRhaW4gcmVm
ZXJlbmNlcyB0byBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlcywgd2hpY2gKKyAgICAvLyBwb2ludCB0
byB0aGUgdW5yZXNvbHZlZCBDU1NWYXJpYWJsZURhdGEgdmFsdWVzIHRoYXQgb3duIHRoZSBiYWNr
aW5nIHN0cmluZ3MKKyAgICAvLyB0aGlzIHdpbGwgcG90ZW50aWFsbHkgcmVmZXJlbmNlLgorICAg
IENTU1ZhcmlhYmxlRGF0YShjb25zdCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXNvbHZlZFRv
a2VucywgU3RyaW5nIGJhY2tpbmdTdHJpbmcpCisgICAgICAgIDogbV9iYWNraW5nU3RyaW5nKGJh
Y2tpbmdTdHJpbmcpCisgICAgICAgICwgbV90b2tlbnMocmVzb2x2ZWRUb2tlbnMpCisgICAgICAg
ICwgbV9uZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbihmYWxzZSkKKyAgICB7IH0KKworICAgIHZvaWQg
Y29uc3VtZUFuZFVwZGF0ZVRva2Vucyhjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJik7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB1cGRhdGVUb2tlbnMoY29uc3Qg
Q1NTUGFyc2VyVG9rZW5SYW5nZSYpOworICAgIAorICAgIGJvb2wgY2hlY2tWYXJpYWJsZXNGb3JD
eWNsZXNXaXRoUmFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSwgY29uc3QgUmVuZGVyU3R5bGUmLCBI
YXNoU2V0PEF0b21pY1N0cmluZz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21pY1N0cmlu
Zz4mIGludmFsaWRQcm9wZXJ0aWVzKSBjb25zdDsKKyAgICBib29sIHJlc29sdmVWYXJpYWJsZVJl
ZmVyZW5jZShjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQmLCBDU1NQYXJzZXJU
b2tlblJhbmdlLCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBj
b25zdDsKKyAgICBib29sIHJlc29sdmVWYXJpYWJsZUZhbGxiYWNrKGNvbnN0IENTU1JlZ2lzdGVy
ZWRDdXN0b21Qcm9wZXJ0eVNldCYsIENTU1BhcnNlclRva2VuUmFuZ2UsIFZlY3RvcjxDU1NQYXJz
ZXJUb2tlbj4mLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCiAgICAgU3RyaW5nIG1fYmFj
a2luZ1N0cmluZzsKICAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IG1fdG9rZW5zOworICAgIGNv
bnN0IGJvb2wgbV9uZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbjsKIAogICAgIC8vIEZJWE1FLU5FV1BB
UlNFUjogV2Ugd2FudCB0byBjYWNoZSBTdHlsZVByb3BlcnRpZXMgb25jZSB3ZSBzdXBwb3J0IEBh
cHBseS4KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVSZWZl
cmVuY2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VW
YWx1ZS5jcHAKaW5kZXggNzdhNTIzZTRkN2RkYWRmMDMwYTEyNDA1ZGU3ZmMyZmNjN2ExMTRmYy4u
Mzg5NTdlNDAzMGMyMzhmNGY3NzU1MmNmMjkzZTUxMTBhNzkxMzk2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmNwcApAQCAtMzAsOSArMzAs
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU1ZhcmlhYmxlUmVmZXJlbmNl
VmFsdWUuaCIKIAotI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCi0jaW5jbHVkZSAiU3R5bGVSZXNv
bHZlci5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBDU1NWYXJpYWJsZVJlZmVy
ZW5jZVZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKQEAgLTQzLDcyICs0MCwxMSBAQCBTdHJp
bmcgQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAg
fQogICAgIHJldHVybiBtX3N0cmluZ1ZhbHVlOwogfQotCi1zdGF0aWMgYm9vbCByZXNvbHZlVG9r
ZW5SYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlLCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiwgQXBw
bHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmKTsKLQotc3RhdGljIGJvb2wgcmVzb2x2ZVZhcmlhYmxl
RmFsbGJhY2soQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgVmVjdG9yPENTU1BhcnNlclRva2Vu
PiYgcmVzdWx0LCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgc3RhdGUpCi17Ci0gICAgaWYg
KHJhbmdlLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBBU1NFUlQocmFuZ2Uu
cGVlaygpLnR5cGUoKSA9PSBDb21tYVRva2VuKTsKLSAgICByYW5nZS5jb25zdW1lKCk7Ci0gICAg
cmV0dXJuIHJlc29sdmVUb2tlblJhbmdlKHJhbmdlLCByZXN1bHQsIHN0YXRlKTsKLX0KLQotc3Rh
dGljIGJvb2wgcmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlKENTU1BhcnNlclRva2VuUmFuZ2UgcmFu
Z2UsIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mIHJlc3VsdCwgQXBwbHlDYXNjYWRlZFByb3BlcnR5
U3RhdGUmIHN0YXRlKQorICAgIAorYm9vbCBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlOjpjaGVj
a1ZhcmlhYmxlc0ZvckN5Y2xlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSwgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBzZWVuUHJvcGVydGllcywgSGFz
aFNldDxBdG9taWNTdHJpbmc+JiBpbnZhbGlkUHJvcGVydGllcykgY29uc3QKIHsKLSAgICBhdXRv
JiByZWdpc3RlcmVkUHJvcGVydGllcyA9IHN0YXRlLnN0eWxlUmVzb2x2ZXItPmRvY3VtZW50KCku
Z2V0Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0KCk7Ci0gICAgYXV0byYgc3R5bGUgPSAq
c3RhdGUuc3R5bGVSZXNvbHZlci0+c3R5bGUoKTsKLQotICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNw
YWNlKCk7Ci0gICAgQVNTRVJUKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRUb2tlbik7Ci0g
ICAgU3RyaW5nIHZhcmlhYmxlTmFtZSA9IHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNl
KCkudmFsdWUoKS50b1N0cmluZygpOwotICAgIEFTU0VSVChyYW5nZS5hdEVuZCgpIHx8IChyYW5n
ZS5wZWVrKCkudHlwZSgpID09IENvbW1hVG9rZW4pKTsKLQotICAgIC8vIEFwcGx5IHRoaXMgdmFy
aWFibGUgZmlyc3QsIGluIGNhc2UgaXQgaXMgc3RpbGwgdW5yZXNvbHZlZAotICAgIHN0YXRlLnN0
eWxlUmVzb2x2ZXItPmFwcGx5Q2FzY2FkZWRDdXN0b21Qcm9wZXJ0eSh2YXJpYWJsZU5hbWUsIHN0
YXRlKTsKLQotICAgIC8vIEFwcGx5IGZhbGxiYWNrIHRvIGRldGVjdCBjeWNsZXMKLSAgICBWZWN0
b3I8Q1NTUGFyc2VyVG9rZW4+IGZhbGxiYWNrUmVzdWx0OwotICAgIHJlc29sdmVWYXJpYWJsZUZh
bGxiYWNrKENTU1BhcnNlclRva2VuUmFuZ2UocmFuZ2UpLCBmYWxsYmFja1Jlc3VsdCwgc3RhdGUp
OwotCi0gICAgYXV0byogcHJvcGVydHkgPSBzdHlsZS5nZXRDdXN0b21Qcm9wZXJ0eSh2YXJpYWJs
ZU5hbWUpOwotCi0gICAgaWYgKCFwcm9wZXJ0eSB8fCBwcm9wZXJ0eS0+aXNVbnNldCgpIHx8IHBy
b3BlcnR5LT5pc0ludmFsaWQoKSkgewotICAgICAgICBhdXRvKiByZWdpc3RlcmVkID0gcmVnaXN0
ZXJlZFByb3BlcnRpZXMuZ2V0KHZhcmlhYmxlTmFtZSk7Ci0gICAgICAgIGlmIChyZWdpc3RlcmVk
ICYmIHJlZ2lzdGVyZWQtPmluaXRpYWxWYWx1ZSgpKQotICAgICAgICAgICAgcHJvcGVydHkgPSBy
ZWdpc3RlcmVkLT5pbml0aWFsVmFsdWUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0
dXJuIHJlc29sdmVWYXJpYWJsZUZhbGxiYWNrKHJhbmdlLCByZXN1bHQsIHN0YXRlKTsKLSAgICB9
Ci0KLSAgICBBU1NFUlQocHJvcGVydHktPmlzUmVzb2x2ZWQoKSk7Ci0gICAgcmVzdWx0LmFwcGVu
ZFZlY3Rvcihwcm9wZXJ0eS0+dG9rZW5zKCkpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0
YXRpYyBib29sIHJlc29sdmVUb2tlblJhbmdlKENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UsIFZl
Y3RvcjxDU1NQYXJzZXJUb2tlbj4mIHJlc3VsdCwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUm
IHN0YXRlKQotewotICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0gICAgd2hpbGUgKCFyYW5nZS5h
dEVuZCgpKSB7Ci0gICAgICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1Zh
bHVlVmFyIHx8IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVFbnYpCi0gICAg
ICAgICAgICBzdWNjZXNzICY9IHJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZShyYW5nZS5jb25zdW1l
QmxvY2soKSwgcmVzdWx0LCBzdGF0ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQocmFuZ2UuY29uc3VtZSgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19
Ci0KLVJlZlB0cjxDU1NWYXJpYWJsZURhdGE+IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OnJl
c29sdmVWYXJpYWJsZVJlZmVyZW5jZXMoQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIHN0YXRl
KSBjb25zdAotewotICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVzb2x2ZWRUb2tlbnM7Ci0g
ICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSA9IG1fZGF0YS0+dG9rZW5SYW5nZSgpOwotCi0g
ICAgaWYgKCFyZXNvbHZlVG9rZW5SYW5nZShyYW5nZSwgcmVzb2x2ZWRUb2tlbnMsIHN0YXRlKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gQ1NTVmFyaWFibGVEYXRhOjpj
cmVhdGUocmVzb2x2ZWRUb2tlbnMpOworICAgIEFTU0VSVChtX2RhdGEpOworICAgIHJldHVybiBt
X2RhdGEtPmNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzKG5hbWUsIHN0eWxlLCBzZWVuUHJvcGVydGll
cywgaW52YWxpZFByb3BlcnRpZXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuaAppbmRleCBkNzBl
MzI3YzEwNmRkYWFlODIzZmY5OWJmYTJhOWNiYmE4YjYwNjg2Li4yMjg5NjRlZDc2OTQ0MDU5Mzk1
YzEwYzY0YWVmMmMwMTA2ZDgxZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJp
YWJsZVJlZmVyZW5jZVZhbHVlLmgKQEAgLTI5LDMwICsyOSwyOCBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuLmgiCi0jaW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW5S
YW5nZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVmFyaWFibGVEYXRh
LmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RydWN0IEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlOwotY2xhc3MgQ1NTUGFyc2VyVG9rZW5S
YW5nZTsKLQogY2xhc3MgQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiBj
cmVhdGUoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCisgICAgc3RhdGljIFJlZjxD
U1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiBjcmVhdGUoUmVmPENTU1ZhcmlhYmxlRGF0YT4mJiBk
YXRhKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTVmFyaWFibGVSZWZl
cmVuY2VWYWx1ZShXVEZNb3ZlKGRhdGEpKSk7CisgICAgfQorCisgICAgQ1NTVmFyaWFibGVEYXRh
KiB2YXJpYWJsZURhdGFWYWx1ZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlKENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRl
KHJhbmdlKSkpOworICAgICAgICByZXR1cm4gbV9kYXRhLmdldCgpOwogICAgIH0KIAotICAgIGJv
b2wgZXF1YWxzKGNvbnN0IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUmIG90aGVyKSBjb25zdCB7
IHJldHVybiBtX2RhdGEuZ2V0KCkgPT0gb3RoZXIubV9kYXRhLmdldCgpOyB9CisgICAgYm9vbCBl
cXVhbHMoY29uc3QgQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YSA9PSBvdGhlci5tX2RhdGE7IH0KICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgp
IGNvbnN0OwogCi0gICAgUmVmUHRyPENTU1ZhcmlhYmxlRGF0YT4gcmVzb2x2ZVZhcmlhYmxlUmVm
ZXJlbmNlcyhBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYpIGNvbnN0OworICAgIGJvb2wgY2hl
Y2tWYXJpYWJsZXNGb3JDeWNsZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBSZW5k
ZXJTdHlsZSYsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8
QXRvbWljU3RyaW5nPiYgaW52YWxpZFByb3BlcnRpZXMpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUoUmVmPENTU1ZhcmlhYmxlRGF0YT4mJiBkYXRhKQpA
QCAtNjEsNyArNTksNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBSZWY8Q1NTVmFy
aWFibGVEYXRhPiBtX2RhdGE7CisgICAgUmVmUHRyPENTU1ZhcmlhYmxlRGF0YT4gbV9kYXRhOwog
ICAgIG11dGFibGUgU3RyaW5nIG1fc3RyaW5nVmFsdWU7CiAgICAgbXV0YWJsZSBib29sIG1fc2Vy
aWFsaXplZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RP
TUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNT
U1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwCmluZGV4IGI4ZWY2YTk1MjEzZGVhMjUwN2Q1ZGY3
NTExZmE5MTNmOTI4MjI5YTguLjM3MzE4ZGE2NTk4ZmQxMTU5MzA2OWNhMjIxNTVmZGI2NGI1NGQ3
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVBy
b3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Q
cm9wZXJ0eS5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogCiAjaW5jbHVkZSAiQ1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNpbmNsdWRlICJD
U1NQcm9wZXJ0eVBhcnNlci5oIgogI2luY2x1ZGUgIkNTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0
eS5oIgogI2luY2x1ZGUgIkNTU1Rva2VuaXplci5oIgogI2luY2x1ZGUgIkRPTUNTU05hbWVzcGFj
ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmgiCisjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MiwzMyArNDIsMjggQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6cmVnaXN0ZXJQcm9w
ZXJ0eShEb2N1bWVudCYgZG9jdW0KIHsKICAgICBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZT4gaW5pdGlhbFZhbHVlOwogICAgIGlmICghZGVzY3JpcHRvci5pbml0aWFsVmFsdWUuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIENTU1Rva2VuaXplciB0b2tlbml6ZXIoZGVzY3JpcHRvci5pbml0aWFs
VmFsdWUpOworICAgICAgICBpbml0aWFsVmFsdWUgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpj
cmVhdGVXaXRoVmFyaWFibGVEYXRhKGRlc2NyaXB0b3IubmFtZSwgQ1NTVmFyaWFibGVEYXRhOjpj
cmVhdGUoQ1NTUGFyc2VyVG9rZW5SYW5nZShWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+KCkpLCBmYWxz
ZSkpOworICAgICAgICBDU1NQYXJzZXIgcGFyc2VyKGRvY3VtZW50KTsKICAgICAgICAgU3R5bGVS
ZXNvbHZlciBzdHlsZVJlc29sdmVyKGRvY3VtZW50KTsKIAotICAgICAgICAvLyBXZSBuZWVkIHRv
IGluaXRpYWxpemUgdGhpcyBzbyB0aGF0IHdlIGNhbiBzdWNjZXNzZnVsbHkgcGFyc2UgY29tcHV0
YXRpb25hbGx5IGRlcGVuZGVudCB2YWx1ZXMgKGxpa2UgZW0gdW5pdHMpLgotICAgICAgICAvLyBX
ZSBkb24ndCBhY3R1YWxseSBuZWVkIHRoZSB2YWx1ZXMgdG8gYmUgYWNjdXJhdGUsIHNpbmNlIHRo
ZXkgd2lsbCBiZSByZWplY3RlZCBsYXRlciBhbnl3YXkKLSAgICAgICAgc3R5bGVSZXNvbHZlci5z
dGF0ZSgpLnNldFN0eWxlKHN0eWxlUmVzb2x2ZXIuZGVmYXVsdFN0eWxlRm9yRWxlbWVudCgpKTsK
LSAgICAgICAgc3R5bGVSZXNvbHZlci51cGRhdGVGb250KCk7Ci0KLSAgICAgICAgaW5pdGlhbFZh
bHVlID0gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGRl
c2NyaXB0b3IubmFtZSwgZGVzY3JpcHRvci5zeW50YXgsIHRva2VuaXplci50b2tlblJhbmdlKCks
IHN0eWxlUmVzb2x2ZXIsIHN0cmljdENTU1BhcnNlckNvbnRleHQoKSk7Ci0KLSAgICAgICAgaWYg
KCFpbml0aWFsVmFsdWUgfHwgIWluaXRpYWxWYWx1ZS0+aXNSZXNvbHZlZCgpKQorICAgICAgICBh
dXRvIHByaW1pdGl2ZVZhbCA9IHBhcnNlci5wYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5Q3Vz
dG9tLCBkZXNjcmlwdG9yLmluaXRpYWxWYWx1ZSk7CisgICAgICAgIGlmICghcHJpbWl0aXZlVmFs
IHx8ICFwcmltaXRpdmVWYWwtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTeW50YXhFcnJvciwgIlRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMg
bm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LiIgfTsKIAogICAgICAgICBIYXNoU2V0PENT
U1Byb3BlcnR5SUQ+IGRlcGVuZGVuY2llczsKLSAgICAgICAgaW5pdGlhbFZhbHVlLT5jb2xsZWN0
RGlyZWN0Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhkZXBlbmRlbmNpZXMpOwotICAgICAgICBp
bml0aWFsVmFsdWUtPmNvbGxlY3REaXJlY3RSb290Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhk
ZXBlbmRlbmNpZXMpOworICAgICAgICBwcmltaXRpdmVWYWwtPmNvbGxlY3REaXJlY3RDb21wdXRh
dGlvbmFsRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcyk7CisgICAgICAgIHByaW1pdGl2ZVZhbC0+
Y29sbGVjdERpcmVjdFJvb3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcyk7
CiAKICAgICAgICAgaWYgKCFkZXBlbmRlbmNpZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yLCAiVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgbXVz
dCBiZSBjb21wdXRhdGlvbmFsbHkgaW5kZXBlbmRlbnQuIiB9OworCisgICAgICAgIGluaXRpYWxW
YWx1ZS0+c2V0UmVzb2x2ZWRUeXBlZFZhbHVlKFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dExlbmd0aChzdHlsZVJlc29sdmVyLCAqcHJpbWl0aXZlVmFsKSk7CiAgICAgfQogCi0gICAgQ1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5IHByb3BlcnR5IHsgZGVzY3JpcHRvci5uYW1lLCBkZXNj
cmlwdG9yLnN5bnRheCwgZGVzY3JpcHRvci5pbmhlcml0cywgV1RGTW92ZShpbml0aWFsVmFsdWUp
IH07CisgICAgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5IHByb3BlcnR5IHsgZGVzY3JpcHRv
ci5uYW1lLCBkZXNjcmlwdG9yLmluaGVyaXRzLCBXVEZNb3ZlKGluaXRpYWxWYWx1ZSkgfTsKICAg
ICBpZiAoIWRvY3VtZW50LnJlZ2lzdGVyQ1NTUHJvcGVydHkoV1RGTW92ZShwcm9wZXJ0eSkpKQog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yLCAiVGhp
cyBwcm9wZXJ0eSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQuIiB9OwogCi0gICAgZG9jdW1l
bnQuc3R5bGVTY29wZSgpLmRpZENoYW5nZVN0eWxlU2hlZXRFbnZpcm9ubWVudCgpOwotCiAgICAg
cmV0dXJuIHsgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAzODNhYzhlZTRmNjZlNTE5YTU3OWM5YjZk
YmQ0ODhkMWZkY2RjOWRhLi5lMjhiMzRjMGQ5MWU3Nzg1YTQ3YTc4YzhiYzEzMDkwNTZmZmExMTlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmNwcApAQCAtMjI2LDE2ICsyMjYsNiBAQCBib29sIFByb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbjo6aXNQcm9wZXJ0eUltcGxpY2l0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YQogRXhjZXB0aW9uT3I8dm9pZD4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQ
cm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwg
Y29uc3QgU3RyaW5nJiBwcmlvcml0eSkKIHsKICAgICBTdHlsZUF0dHJpYnV0ZU11dGF0aW9uU2Nv
cGUgbXV0YXRpb25TY29wZSh0aGlzKTsKLQotICAgIGlmICghd2lsbE11dGF0ZSgpKQotICAgICAg
ICByZXR1cm4geyB9OwotCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbnVsbHB0cjsKLQotICAg
IGlmIChwYXJlbnRFbGVtZW50KCkpCi0gICAgICAgIGRvY3VtZW50ID0gJnBhcmVudEVsZW1lbnQo
KS0+ZG9jdW1lbnQoKTsKLSAgICBlbHNlCi0gICAgICAgIGRvY3VtZW50ID0gcGFyZW50U3R5bGVT
aGVldCgpLT5vd25lckRvY3VtZW50KCk7CiAgICAgCiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChpc0N1c3RvbVByb3Bl
cnR5TmFtZShwcm9wZXJ0eU5hbWUpKQpAQCAtMjQzLDEzICsyMzMsMTYgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eShjb25zdCBT
dHJpbmcmIHByb3AKICAgICBpZiAoIXByb3BlcnR5SUQpCiAgICAgICAgIHJldHVybiB7IH07CiAK
KyAgICBpZiAoIXdpbGxNdXRhdGUoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIGJvb2wg
aW1wb3J0YW50ID0gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShwcmlvcml0eSwgImltcG9ydGFudCIp
OwogICAgIGlmICghaW1wb3J0YW50ICYmICFwcmlvcml0eS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiB7IH07CiAKICAgICBib29sIGNoYW5nZWQ7CiAgICAgaWYgKHByb3BlcnR5SUQgPT0gQ1NT
UHJvcGVydHlDdXN0b20pCi0gICAgICAgIGNoYW5nZWQgPSBtX3Byb3BlcnR5U2V0LT5zZXRDdXN0
b21Qcm9wZXJ0eShkb2N1bWVudCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgaW1wb3J0YW50LCBjc3NQ
YXJzZXJDb250ZXh0KCkpOworICAgICAgICBjaGFuZ2VkID0gbV9wcm9wZXJ0eVNldC0+c2V0Q3Vz
dG9tUHJvcGVydHkocHJvcGVydHlOYW1lLCB2YWx1ZSwgaW1wb3J0YW50LCBjc3NQYXJzZXJDb250
ZXh0KCkpOwogICAgIGVsc2UKICAgICAgICAgY2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldFBy
b3BlcnR5KHByb3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlckNvbnRleHQoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCAyMDAwZmRjMWY1
NWUyMWM2Njg3MWZiOTBhMWQ1N2ZiZjRjN2Y3YTI1Li4wYzQ3ZGEyMmVmZWExMGJhN2ZhZDkxMjgz
YWQzMWFmMzY5MTc0ZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWls
ZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5o
CkBAIC0xODc5LDEzICsxODc5LDEzIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlWYWx1ZVN0cm9rZUNvbG9yKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2CiAKIGlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQ3VzdG9tUHJvcGVydHkoU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3Bl
cnR5KiByZWdpc3RlcmVkLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7Ci0gICAgaWYgKHJl
Z2lzdGVyZWQgJiYgcmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlKCkpIHsKKyAgICBpZiAocmVnaXN0
ZXJlZCkgewogICAgICAgICBhdXRvIGluaXRpYWxWYWx1ZSA9IHJlZ2lzdGVyZWQtPmluaXRpYWxW
YWx1ZUNvcHkoKTsKICAgICAgICAgYXBwbHlWYWx1ZUN1c3RvbVByb3BlcnR5KHN0eWxlUmVzb2x2
ZXIsIHJlZ2lzdGVyZWQsICppbml0aWFsVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgYXV0byBpbnZhbGlkID0gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlVW5yZXNv
bHZlZChuYW1lLCBDU1NWYWx1ZUludmFsaWQpOworICAgIGF1dG8gaW52YWxpZCA9IENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU6OmNyZWF0ZVdpdGhJRChuYW1lLCBDU1NWYWx1ZUludmFsaWQpOwogICAg
IGFwcGx5VmFsdWVDdXN0b21Qcm9wZXJ0eShzdHlsZVJlc29sdmVyLCByZWdpc3RlcmVkLCBpbnZh
bGlkLmdldCgpKTsKIH0KIApAQCAtMTkwMCwxMyArMTkwMCwxMiBAQCBpbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEN1c3RvbVByb3BlcnR5KFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUgogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDdXN0
b21Qcm9wZXJ0eShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NSZWdpc3Rl
cmVkQ3VzdG9tUHJvcGVydHkqIHJlZ2lzdGVyZWQsIENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIHZh
bHVlKQogewotICAgIEFTU0VSVCh2YWx1ZS5pc1Jlc29sdmVkKCkpOwogICAgIGNvbnN0IGF1dG8m
IG5hbWUgPSB2YWx1ZS5uYW1lKCk7CiAKICAgICBpZiAoIXJlZ2lzdGVyZWQgfHwgcmVnaXN0ZXJl
ZC0+aW5oZXJpdHMpCi0gICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0SW5oZXJpdGVk
Q3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBtYWtlUmVmKHZhbHVlKSk7CisgICAgICAgIHN0eWxl
UmVzb2x2ZXIuc3R5bGUoKS0+c2V0SW5oZXJpdGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBt
YWtlUmVmKHZhbHVlKSwgcmVnaXN0ZXJlZCk7CiAgICAgZWxzZQotICAgICAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldE5vbkluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgbWFr
ZVJlZih2YWx1ZSkpOworICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldE5vbkluaGVy
aXRlZEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgbWFrZVJlZih2YWx1ZSksIHJlZ2lzdGVyZWQp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnRpZXMuY3BwCmluZGV4IDVhY2I0OGY5MTFhMzcxNzhmYWU4YTgwZTE3ODNlNjliNzU4OGNiNTgu
LjVkNzhmOGMxN2ZlMWRlZjFiMjJmZmRlNDRlMTUyZGI0ZjY1YjA3ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCkBAIC0yOCw4ICsyOCw2IEBACiAjaW5jbHVkZSAiQ1NT
RGVmZXJyZWRQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQ
ZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUuaCIKLSNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlci5o
IgotI2luY2x1ZGUgIkNTU1Rva2VuaXplci5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMu
aCIKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIK
QEAgLTc4MSw3ICs3NzksNyBAQCBib29sIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBz
ZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50LCBwYXJzZXJDb250ZXh0KTsK
IH0KIAotYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpzZXRDdXN0b21Qcm9wZXJ0eShjb25z
dCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBT
dHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwgQ1NTUGFyc2VyQ29udGV4dCBwYXJzZXJDb250
ZXh0KQorYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpzZXRDdXN0b21Qcm9wZXJ0eShjb25z
dCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRh
bnQsIENTU1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4dCkKIHsKICAgICAvLyBTZXR0aW5nIHRo
ZSB2YWx1ZSB0byBhbiBlbXB0eSBzdHJpbmcganVzdCByZW1vdmVzIHRoZSBwcm9wZXJ0eSBpbiBi
b3RoIElFIGFuZCBHZWNrby4KICAgICAvLyBTZXR0aW5nIGl0IHRvIG51bGwgc2VlbXMgdG8gcHJv
ZHVjZSBsZXNzIGNvbnNpc3RlbnQgcmVzdWx0cywgYnV0IHdlIHRyZWF0IGl0IGp1c3QgdGhlIHNh
bWUuCkBAIC03ODksMTcgKzc4Nyw2IEBAIGJvb2wgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6c2V0
Q3VzdG9tUHJvcGVydHkoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTCiAgICAgICAg
IHJldHVybiByZW1vdmVDdXN0b21Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUpOwogCiAgICAgcGFyc2Vy
Q29udGV4dC5tb2RlID0gY3NzUGFyc2VyTW9kZSgpOwotCi0gICAgU3RyaW5nIHN5bnRheCA9ICIq
IjsKLSAgICBhdXRvKiByZWdpc3RlcmVkID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+Z2V0Q1NTUmVn
aXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0KCkuZ2V0KHByb3BlcnR5TmFtZSkgOiBudWxscHRyOwot
Ci0gICAgaWYgKHJlZ2lzdGVyZWQpCi0gICAgICAgIHN5bnRheCA9IHJlZ2lzdGVyZWQtPnN5bnRh
eDsKLQotICAgIENTU1Rva2VuaXplciB0b2tlbml6ZXIodmFsdWUpOwotICAgIGlmICghQ1NTUHJv
cGVydHlQYXJzZXI6OmNhblBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKHN5bnRheCwgdG9r
ZW5pemVyLnRva2VuUmFuZ2UoKSwgcGFyc2VyQ29udGV4dCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQogICAgIC8vIFdoZW4gcmVwbGFjaW5nIGFuIGV4aXN0aW5nIHByb3BlcnR5IHZhbHVlLCB0
aGlzIG1vdmVzIHRoZSBwcm9wZXJ0eSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LgogICAgIC8vIEZp
cmVmb3ggcHJlc2VydmVzIHRoZSBwb3NpdGlvbiwgYW5kIE1TSUUgbW92ZXMgdGhlIHByb3BlcnR5
IHRvIHRoZSBiZWdpbm5pbmcuCiAgICAgcmV0dXJuIENTU1BhcnNlcjo6cGFyc2VDdXN0b21Qcm9w
ZXJ0eVZhbHVlKCp0aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBpbXBvcnRhbnQsIHBhcnNlckNv
bnRleHQpID09IENTU1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkNoYW5nZWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0aWVzLmgKaW5kZXggODM5YTU0NDNmOTE3OGEyMmUzMGI2ZjA4N2IyYzE5OTg2
NGNmMzU4Yy4uM2Y0YjY1YWI3Mjg4ZGQwZjNiMTYxYmE0MWJkNTA1ZGYyZTM3NTUwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaApAQCAtMjQ5LDcgKzI0OSw3IEBAIHB1YmxpYzoK
ICAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDQ+IG1fcHJvcGVydHlWZWN0b3I7CiAKICAgICAvLyBN
ZXRob2RzIGZvciBxdWVyeWluZyBhbmQgYWx0ZXJpbmcgQ1NTIGN1c3RvbSBwcm9wZXJ0aWVzLgot
ICAgIGJvb2wgc2V0Q3VzdG9tUHJvcGVydHkoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcm
IHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIENTU1Bh
cnNlckNvbnRleHQpOworICAgIGJvb2wgc2V0Q3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJz
ZXJDb250ZXh0KTsKICAgICBib29sIHJlbW92ZUN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYg
cHJvcGVydHlOYW1lLCBTdHJpbmcqIHJldHVyblRleHQgPSBudWxscHRyKTsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAyMGY1YjJlMzBjMDFmYTNmNzQz
ZWQwNzU1MzBhMzhiMDVmZWQ1MDgwLi5kNGUwNmJjY2YzMzYwZDFjYTQwYzA3MjgwMmY0NTAwYzU5
ZmRhMDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0zMjEsNyArMzIx
LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6OnVwZGF0ZUNvbnZlcnNpb25E
YXRhKCkKICAgICBtX2Nzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgPSBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhKG1fc3R5bGUuZ2V0KCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgbV9lbGVtZW50ID8g
bV9lbGVtZW50LT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSA6IG51bGxwdHIpOwogfQogCi12b2lk
IFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpzZXRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHN0eWxlKQoraW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFN0eWxlKHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCiB7CiAgICAgbV9zdHlsZSA9IFdURk1v
dmUoc3R5bGUpOwogICAgIHVwZGF0ZUNvbnZlcnNpb25EYXRhKCk7CkBAIC00MjksMjEgKzQyOSwy
MSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9y
S2V5ZnJhbWUoY29uc3QgUmVuZGVyU3R5bGUqCiAgICAgQ2FzY2FkZWRQcm9wZXJ0aWVzIGNhc2Nh
ZGUoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSk7CiAgICAgY2FzY2FkZS5hZGROb3JtYWxNYXRjaGVz
KHJlc3VsdCwgMCwgcmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzKCkuc2l6ZSgpIC0gMSk7CiAKLSAg
ICBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSBhcHBseVN0YXRlIHsgdGhpcywgJmNhc2NhZGUs
ICZyZXN1bHQgfTsKLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhmaXJzdENTU1Byb3BlcnR5
LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHksIGFwcGx5U3RhdGUpOworICAgIC8vIFJlc29sdmUg
Y3VzdG9tIHByb3BlcnRpZXMgZmlyc3QuCisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2Fz
Y2FkZSwgQ1NTUHJvcGVydHlDdXN0b20sIENTU1Byb3BlcnR5Q3VzdG9tLCAmcmVzdWx0KTsKKwor
ICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0Q1NTUHJvcGVydHksIGxh
c3RIaWdoUHJpb3JpdHlQcm9wZXJ0eSwgJnJlc3VsdCk7CiAKICAgICAvLyBJZiBvdXIgZm9udCBn
b3QgZGlydGllZCwgdXBkYXRlIGl0IG5vdy4KICAgICB1cGRhdGVGb250KCk7CiAKLSAgICAvLyBO
b3cgcmVzb2x2ZSByZW1haW5pbmcgY3VzdG9tIHByb3BlcnRpZXMgYW5kIHRoZSByZXN0LCBpbiBh
bnkgb3JkZXIKLSAgICBmb3IgKGF1dG8gaXQgPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5i
ZWdpbigpOyBpdCAhPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5lbmQoKTsgKytpdCkKLSAg
ICAgICAgYXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KGl0LT5rZXksIGFwcGx5U3RhdGUpOwot
ICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGZpcnN0TG93UHJpb3JpdHlQcm9wZXJ0eSwgbGFz
dENTU1Byb3BlcnR5LCBhcHBseVN0YXRlKTsKKyAgICAvLyBOb3cgZG8gcmVzdCBvZiB0aGUgcHJv
cGVydGllcy4KKyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdExvd1By
aW9yaXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwgJnJlc3VsdCk7CiAKICAgICAvLyBJZiBv
dXIgZm9udCBnb3QgZGlydGllZCBieSBvbmUgb2YgdGhlIG5vbi1lc3NlbnRpYWwgZm9udCBwcm9w
cywgdXBkYXRlIGl0IGEgc2Vjb25kIHRpbWUuCiAgICAgdXBkYXRlRm9udCgpOwogCi0gICAgY2Fz
Y2FkZS5hcHBseURlZmVycmVkUHJvcGVydGllcygqdGhpcywgYXBwbHlTdGF0ZSk7CisgICAgY2Fz
Y2FkZS5hcHBseURlZmVycmVkUHJvcGVydGllcygqdGhpcywgJnJlc3VsdCk7CiAKICAgICBhZGp1
c3RSZW5kZXJTdHlsZSgqc3RhdGUuc3R5bGUoKSwgKnN0YXRlLnBhcmVudFN0eWxlKCksIG51bGxw
dHIsIG51bGxwdHIpOwogCkBAIC02MzUsMTggKzYzNSwxNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yUGFnZShpbnQgcGFnZUluZGV4KQogICAg
IENhc2NhZGVkUHJvcGVydGllcyBjYXNjYWRlKGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpOwogICAg
IGNhc2NhZGUuYWRkTm9ybWFsTWF0Y2hlcyhyZXN1bHQsIDAsIHJlc3VsdC5tYXRjaGVkUHJvcGVy
dGllcygpLnNpemUoKSAtIDEpOwogCi0gICAgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgYXBw
bHlTdGF0ZSB7IHRoaXMsICZjYXNjYWRlLCAmcmVzdWx0IH07Ci0gICAgYXBwbHlDYXNjYWRlZFBy
b3BlcnRpZXMoZmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCBhcHBs
eVN0YXRlKTsKKyAgICAvLyBSZXNvbHZlIGN1c3RvbSBwcm9wZXJ0aWVzIGZpcnN0LgorICAgIGFw
cGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBDU1NQcm9w
ZXJ0eUN1c3RvbSwgJnJlc3VsdCk7CisKKyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNj
YWRlLCBmaXJzdENTU1Byb3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHksICZyZXN1bHQp
OwogCiAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRpZWQsIHVwZGF0ZSBpdCBub3cuCiAgICAg
dXBkYXRlRm9udCgpOwogCi0gICAgLy8gTm93IHJlc29sdmUgcmVtYWluaW5nIGN1c3RvbSBwcm9w
ZXJ0aWVzIGFuZCB0aGUgcmVzdCwgaW4gYW55IG9yZGVyCi0gICAgZm9yIChhdXRvIGl0ID0gY2Fz
Y2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCkuYmVnaW4oKTsgaXQgIT0gY2FzY2FkZS5jdXN0b21Qcm9w
ZXJ0aWVzKCkuZW5kKCk7ICsraXQpCi0gICAgICAgIGFwcGx5Q2FzY2FkZWRDdXN0b21Qcm9wZXJ0
eShpdC0+a2V5LCBhcHBseVN0YXRlKTsKLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhmaXJz
dExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwgYXBwbHlTdGF0ZSk7CisgICAg
YXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RMb3dQcmlvcml0eVByb3BlcnR5
LCBsYXN0Q1NTUHJvcGVydHksICZyZXN1bHQpOwogCi0gICAgY2FzY2FkZS5hcHBseURlZmVycmVk
UHJvcGVydGllcygqdGhpcywgYXBwbHlTdGF0ZSk7CisgICAgY2FzY2FkZS5hcHBseURlZmVycmVk
UHJvcGVydGllcygqdGhpcywgJnJlc3VsdCk7CiAKICAgICAvLyBOb3cgcmV0dXJuIHRoZSBzdHls
ZS4KICAgICByZXR1cm4gbV9zdGF0ZS50YWtlU3R5bGUoKTsKQEAgLTEzNzIsMjAgKzEzNzEsMTcg
QEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseU1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0IE1hdGNo
UmVzdWx0JiBtYXRjaFJlc3VsdCwgY29uc3QKICAgICAgICAgY2FzY2FkZS5hZGROb3JtYWxNYXRj
aGVzKG1hdGNoUmVzdWx0LCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVz
dWx0LnJhbmdlcy5sYXN0VUFSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOwogICAgICAgICBjYXNj
YWRlLmFkZEltcG9ydGFudE1hdGNoZXMobWF0Y2hSZXN1bHQsIG1hdGNoUmVzdWx0LnJhbmdlcy5m
aXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGFwcGx5SW5oZXJpdGVk
T25seSk7CiAKLSAgICAgICAgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgYXBwbHlTdGF0ZSB7
IHRoaXMsICZjYXNjYWRlLCAmbWF0Y2hSZXN1bHQgfTsKLQotICAgICAgICBhcHBseUNhc2NhZGVk
UHJvcGVydGllcyhDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgQ1NTUHJvcGVydHlXZWJr
aXRSdWJ5UG9zaXRpb24sIGFwcGx5U3RhdGUpOworICAgICAgICBhcHBseUNhc2NhZGVkUHJvcGVy
dGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgQ1NTUHJvcGVydHlX
ZWJraXRSdWJ5UG9zaXRpb24sICZtYXRjaFJlc3VsdCk7CiAgICAgICAgIGFkanVzdFN0eWxlRm9y
SW50ZXJDaGFyYWN0ZXJSdWJ5KCk7CiAKLSAgICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMo
Zmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCBhcHBseVN0YXRlKTsK
KyAgICAgICAgLy8gUmVzb2x2ZSBjdXN0b20gdmFyaWFibGVzIGZpcnN0LgorICAgICAgICBhcHBs
eUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eUN1c3RvbSwgQ1NTUHJvcGVy
dHlDdXN0b20sICZtYXRjaFJlc3VsdCk7CiAKLSAgICAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRp
cnRpZWQsIHVwZGF0ZSBpdCBub3cuCi0gICAgICAgIHVwZGF0ZUZvbnQoKTsKKyAgICAgICAgLy8g
U3RhcnQgYnkgYXBwbHlpbmcgcHJvcGVydGllcyB0aGF0IG90aGVyIHByb3BlcnRpZXMgbWF5IGRl
cGVuZCBvbi4KKyAgICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RD
U1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCAmbWF0Y2hSZXN1bHQpOwogCi0g
ICAgICAgIC8vIE5vdyByZXNvbHZlIHJlbWFpbmluZyBjdXN0b20gcHJvcGVydGllcyBhbmQgdGhl
IHJlc3QsIGluIGFueSBvcmRlcgotICAgICAgICBmb3IgKGF1dG8gaXQgPSBjYXNjYWRlLmN1c3Rv
bVByb3BlcnRpZXMoKS5iZWdpbigpOyBpdCAhPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5l
bmQoKTsgKytpdCkKLSAgICAgICAgICAgIGFwcGx5Q2FzY2FkZWRDdXN0b21Qcm9wZXJ0eShpdC0+
a2V5LCBhcHBseVN0YXRlKTsKLSAgICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoZmlyc3RM
b3dQcmlvcml0eVByb3BlcnR5LCBsYXN0Q1NTUHJvcGVydHksIGFwcGx5U3RhdGUpOworICAgICAg
ICB1cGRhdGVGb250KCk7CisgICAgICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUs
IGZpcnN0TG93UHJpb3JpdHlQcm9wZXJ0eSwgbGFzdENTU1Byb3BlcnR5LCAmbWF0Y2hSZXN1bHQp
OwogCiAgICAgICAgIHN0YXRlLmNhY2hlQm9yZGVyQW5kQmFja2dyb3VuZCgpOwogICAgIH0KQEAg
LTEzOTYsMTMgKzEzOTIsMTYgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseU1hdGNoZWRQcm9w
ZXJ0aWVzKGNvbnN0IE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCwgY29uc3QKICAgICBjYXNjYWRl
LmFkZEltcG9ydGFudE1hdGNoZXMobWF0Y2hSZXN1bHQsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJz
dFVzZXJSdWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVzZXJSdWxlLCBhcHBseUluaGVyaXRl
ZE9ubHkpOwogICAgIGNhc2NhZGUuYWRkSW1wb3J0YW50TWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0
Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVs
ZSwgYXBwbHlJbmhlcml0ZWRPbmx5KTsKIAorICAgIC8vIFJlc29sdmUgY3VzdG9tIHByb3BlcnRp
ZXMgZmlyc3QuCisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVy
dHlDdXN0b20sIENTU1Byb3BlcnR5Q3VzdG9tLCAmbWF0Y2hSZXN1bHQpOwogCi0gICAgQXBwbHlD
YXNjYWRlZFByb3BlcnR5U3RhdGUgYXBwbHlTdGF0ZSB7IHRoaXMsICZjYXNjYWRlLCAmbWF0Y2hS
ZXN1bHQgfTsKKyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0
eVdlYmtpdFJ1YnlQb3NpdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRpb24sICZtYXRj
aFJlc3VsdCk7CiAKLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhDU1NQcm9wZXJ0eVdlYmtp
dFJ1YnlQb3NpdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRpb24sIGFwcGx5U3RhdGUp
OworICAgIC8vIEFkanVzdCB0aGUgZm9udCBzaXplIHRvIGJlIHNtYWxsZXIgaWYgcnVieS1wb3Np
dGlvbiBpcyBpbnRlci1jaGFyYWN0ZXIuCiAgICAgYWRqdXN0U3R5bGVGb3JJbnRlckNoYXJhY3Rl
clJ1YnkoKTsKIAotICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGZpcnN0Q1NTUHJvcGVydHks
IGxhc3RIaWdoUHJpb3JpdHlQcm9wZXJ0eSwgYXBwbHlTdGF0ZSk7CisgICAgLy8gU3RhcnQgYnkg
YXBwbHlpbmcgcHJvcGVydGllcyB0aGF0IG90aGVyIHByb3BlcnRpZXMgbWF5IGRlcGVuZCBvbi4K
KyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5LCBs
YXN0SGlnaFByaW9yaXR5UHJvcGVydHksICZtYXRjaFJlc3VsdCk7CiAKICAgICAvLyBJZiB0aGUg
ZWZmZWN0aXZlIHpvb20gdmFsdWUgY2hhbmdlcywgd2UgY2FuJ3QgdXNlIHRoZSBtYXRjaGVkIHBy
b3BlcnRpZXMgY2FjaGUuIFN0YXJ0IG92ZXIuCiAgICAgaWYgKGNhY2hlSXRlbSAmJiBjYWNoZUl0
ZW0tPnJlbmRlclN0eWxlLT5lZmZlY3RpdmVab29tKCkgIT0gc3RhdGUuc3R5bGUoKS0+ZWZmZWN0
aXZlWm9vbSgpKQpAQCAtMTQxNSwxNSArMTQxNCwxMyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFw
cGx5TWF0Y2hlZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0LCBjb25z
dAogICAgIGlmIChjYWNoZUl0ZW0gJiYgY2FjaGVJdGVtLT5yZW5kZXJTdHlsZS0+Zm9udERlc2Ny
aXB0aW9uKCkgIT0gc3RhdGUuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzKG1hdGNoUmVzdWx0LCBlbGVtZW50LCBEb05vdFVz
ZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOwogCi0gICAgLy8gTm93IHJlc29sdmUgcmVtYWluaW5n
IGN1c3RvbSBwcm9wZXJ0aWVzIGFuZCB0aGUgcmVzdCwgaW4gYW55IG9yZGVyCi0gICAgZm9yIChh
dXRvIGl0ID0gY2FzY2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCkuYmVnaW4oKTsgaXQgIT0gY2FzY2Fk
ZS5jdXN0b21Qcm9wZXJ0aWVzKCkuZW5kKCk7ICsraXQpCi0gICAgICAgIGFwcGx5Q2FzY2FkZWRD
dXN0b21Qcm9wZXJ0eShpdC0+a2V5LCBhcHBseVN0YXRlKTsKLSAgICBhcHBseUNhc2NhZGVkUHJv
cGVydGllcyhmaXJzdExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwgYXBwbHlT
dGF0ZSk7CisgICAgLy8gQXBwbHkgcHJvcGVydGllcyB0aGF0IG5vIG90aGVyIHByb3BlcnRpZXMg
ZGVwZW5kIG9uLgorICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0TG93
UHJpb3JpdHlQcm9wZXJ0eSwgbGFzdENTU1Byb3BlcnR5LCAmbWF0Y2hSZXN1bHQpOwogCiAgICAg
Ly8gRmluYWxseSwgc29tZSBwcm9wZXJ0aWVzIG11c3QgYmUgYXBwbGllZCBpbiB0aGUgb3JkZXIg
dGhleSB3ZXJlIHBhcnNlZC4KICAgICAvLyBUaGVyZSBhcmUgc29tZSBDU1MgcHJvcGVydGllcyB0
aGF0IGFmZmVjdCB0aGUgc2FtZSBSZW5kZXJTdHlsZSB2YWx1ZXMsCiAgICAgLy8gc28gdG8gcHJl
c2VydmUgYmVoYXZpb3IsIHdlIHF1ZXVlIHRoZW0gdXAgZHVyaW5nIGNhc2NhZGUgYW5kIGZsdXNo
IGhlcmUuCi0gICAgY2FzY2FkZS5hcHBseURlZmVycmVkUHJvcGVydGllcygqdGhpcywgYXBwbHlT
dGF0ZSk7CisgICAgY2FzY2FkZS5hcHBseURlZmVycmVkUHJvcGVydGllcygqdGhpcywgJm1hdGNo
UmVzdWx0KTsKIAogICAgIEFTU0VSVCghc3RhdGUuZm9udERpcnR5KCkpOwogCkBAIC0xNDQ0LDkg
KzE0NDEsOCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHlUb1N0eWxlKENTU1By
b3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwgc3RkOgogCiB2b2lkIFN0eWxlUmVzb2x2ZXI6
OmFwcGx5UHJvcGVydHlUb0N1cnJlbnRTdHlsZShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSog
dmFsdWUpCiB7Ci0gICAgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgYXBwbHlTdGF0ZSB7IHRo
aXMsIG51bGxwdHIsIG51bGxwdHIgfTsKICAgICBpZiAodmFsdWUpCi0gICAgICAgIGFwcGx5UHJv
cGVydHkoaWQsIHZhbHVlLCBhcHBseVN0YXRlKTsKKyAgICAgICAgYXBwbHlQcm9wZXJ0eShpZCwg
dmFsdWUpOwogfQogCiBpbmxpbmUgYm9vbCBpc1ZhbGlkVmlzaXRlZExpbmtQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUlEIGlkKQpAQCAtMTYxMywxOCArMTYwOSwxNiBAQCBTdHlsZVJlc29sdmVyOjpDYXNj
YWRlZFByb3BlcnRpZXMqIFN0eWxlUmVzb2x2ZXI6OmNhc2NhZGVkUHJvcGVydGllc0ZvclJvbGxi
YWNrKAogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBBcHBseUNhc2NhZGVk
UHJvcGVydHlTdGF0ZSYgYXBwbHlTdGF0ZSwgU2VsZWN0b3JDaGVja2VyOjpMaW5rTWF0Y2hNYXNr
IGxpbmtNYXRjaE1hc2spCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJv
cGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBTZWxlY3RvckNoZWNrZXI6OkxpbmtNYXRjaE1h
c2sgbGlua01hdGNoTWFzaywgY29uc3QgTWF0Y2hSZXN1bHQqIG1hdGNoUmVzdWx0KQogewotICAg
IGF1dG8qIG1hdGNoUmVzdWx0ID0gYXBwbHlTdGF0ZS5tYXRjaFJlc3VsdDsKICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKCFpc1Nob3J0aGFuZENTU1Byb3BlcnR5KGlkKSwgIlNob3J0aGFuZCBwcm9w
ZXJ0eSBpZCA9ICVkIHdhc24ndCBleHBhbmRlZCBhdCBwYXJzaW5nIHRpbWUiLCBpZCk7CiAKICAg
ICBTdGF0ZSYgc3RhdGUgPSBtX3N0YXRlOwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZVRv
QXBwbHkgPSB2YWx1ZTsKICAgICBpZiAodmFsdWUtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlcygpKSB7
Ci0gICAgICAgIHZhbHVlVG9BcHBseSA9IHJlc29sdmVkVmFyaWFibGVWYWx1ZShpZCwgKnZhbHVl
LCBhcHBseVN0YXRlKTsKLSAgICAgICAgLy8gSWYgYXBwbGllZFByb3BlcnRpZXMgYWxyZWFkeSBo
YXMgdGhpcyBpZCwgdGhlbiB3ZSBkZXRlY3RlZCBhIGN5Y2xlLCBhbmQgdGhpcyB2YWx1ZSBzaG91
bGQgYmUgdW5zZXQuCi0gICAgICAgIGlmICghdmFsdWVUb0FwcGx5IHx8IGFwcGx5U3RhdGUuYXBw
bGllZFByb3BlcnRpZXMuY29udGFpbnMoaWQpKSB7CisgICAgICAgIHZhbHVlVG9BcHBseSA9IHJl
c29sdmVkVmFyaWFibGVWYWx1ZShpZCwgKnZhbHVlKTsKKyAgICAgICAgaWYgKCF2YWx1ZVRvQXBw
bHkpIHsKICAgICAgICAgICAgIGlmIChDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShp
ZCkpCiAgICAgICAgICAgICAgICAgdmFsdWVUb0FwcGx5ID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVJbmhlcml0ZWRWYWx1ZSgpOwogICAgICAgICAgICAgZWxzZQpAQCAtMTYzNSw3
ICsxNjI5LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5
SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwgQXBwbHlDYXNjYWQKICAgICBpZiAoQ1NTUHJvcGVydHk6
OmlzRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCkpIHsKICAgICAgICAgQ1NTUHJvcGVydHlJRCBu
ZXdJZCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCwgc3Rh
dGUuc3R5bGUoKS0+ZGlyZWN0aW9uKCksIHN0YXRlLnN0eWxlKCktPndyaXRpbmdNb2RlKCkpOwog
ICAgICAgICBBU1NFUlQobmV3SWQgIT0gaWQpOwotICAgICAgICByZXR1cm4gYXBwbHlQcm9wZXJ0
eShuZXdJZCwgdmFsdWVUb0FwcGx5LmdldCgpLCBhcHBseVN0YXRlLCBsaW5rTWF0Y2hNYXNrKTsK
KyAgICAgICAgcmV0dXJuIGFwcGx5UHJvcGVydHkobmV3SWQsIHZhbHVlVG9BcHBseS5nZXQoKSwg
bGlua01hdGNoTWFzaywgbWF0Y2hSZXN1bHQpOwogICAgIH0KIAogICAgIENTU1ZhbHVlKiB2YWx1
ZVRvQ2hlY2tGb3JJbmhlcml0SW5pdGlhbCA9IHZhbHVlVG9BcHBseS5nZXQoKTsKQEAgLTE2NDYs
OSArMTY0MCw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIEFwcGx5Q2FzY2FkCiAKICAgICBpZiAoaWQgPT0gQ1NT
UHJvcGVydHlDdXN0b20pIHsKICAgICAgICAgY3VzdG9tUHJvcGVydHlWYWx1ZSA9ICZkb3duY2Fz
dDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigqdmFsdWVUb0FwcGx5KTsKLSAgICAgICAgQVNTRVJU
KGN1c3RvbVByb3BlcnR5VmFsdWUtPmlzUmVzb2x2ZWQoKSk7Ci0gICAgICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPENTU1ZhbHVlSUQ+KGN1c3RvbVByb3BlcnR5VmFsdWUtPnZhbHVlKCkp
KQotICAgICAgICAgICAgY3VzdG9tUHJvcGVydHlWYWx1ZUlEID0gV1RGOjpnZXQ8Q1NTVmFsdWVJ
RD4oY3VzdG9tUHJvcGVydHlWYWx1ZS0+dmFsdWUoKSk7CisgICAgICAgIGN1c3RvbVByb3BlcnR5
VmFsdWVJRCA9IGN1c3RvbVByb3BlcnR5VmFsdWUtPnZhbHVlSUQoKTsKICAgICAgICAgYXV0byYg
bmFtZSA9IGN1c3RvbVByb3BlcnR5VmFsdWUtPm5hbWUoKTsKICAgICAgICAgY3VzdG9tUHJvcGVy
dHlSZWdpc3RlcmVkID0gZG9jdW1lbnQoKS5nZXRDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlT
ZXQoKS5nZXQobmFtZSk7CiAgICAgfQpAQCAtMTY3NSwxMyArMTY2NywxMyBAQCB2b2lkIFN0eWxl
UmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVl
LCBBcHBseUNhc2NhZAogICAgICAgICAgICAgICAgIGlmIChjdXN0b21Qcm9wZXJ0eVJlZ2lzdGVy
ZWQgJiYgY3VzdG9tUHJvcGVydHlSZWdpc3RlcmVkLT5pbmhlcml0cyAmJiByb2xsYmFjay0+aGFz
Q3VzdG9tUHJvcGVydHkoY3VzdG9tUHJvcGVydHlWYWx1ZS0+bmFtZSgpKSkgewogICAgICAgICAg
ICAgICAgICAgICBhdXRvIHByb3BlcnR5ID0gcm9sbGJhY2stPmN1c3RvbVByb3BlcnR5KGN1c3Rv
bVByb3BlcnR5VmFsdWUtPm5hbWUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0
eS5jc3NWYWx1ZVtsaW5rTWF0Y2hNYXNrXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5
UHJvcGVydHkocHJvcGVydHkuaWQsIHByb3BlcnR5LmNzc1ZhbHVlW2xpbmtNYXRjaE1hc2tdLCBh
cHBseVN0YXRlLCBsaW5rTWF0Y2hNYXNrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5
UHJvcGVydHkocHJvcGVydHkuaWQsIHByb3BlcnR5LmNzc1ZhbHVlW2xpbmtNYXRjaE1hc2tdLCBs
aW5rTWF0Y2hNYXNrLCBtYXRjaFJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHJvbGxiYWNrLT5oYXNQ
cm9wZXJ0eShpZCkpIHsKICAgICAgICAgICAgICAgICBhdXRvJiBwcm9wZXJ0eSA9IHJvbGxiYWNr
LT5wcm9wZXJ0eShpZCk7CiAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5LmNzc1ZhbHVlW2xp
bmtNYXRjaE1hc2tdKQotICAgICAgICAgICAgICAgICAgICBhcHBseVByb3BlcnR5KHByb3BlcnR5
LmlkLCBwcm9wZXJ0eS5jc3NWYWx1ZVtsaW5rTWF0Y2hNYXNrXSwgYXBwbHlTdGF0ZSwgbGlua01h
dGNoTWFzayk7CisgICAgICAgICAgICAgICAgICAgIGFwcGx5UHJvcGVydHkocHJvcGVydHkuaWQs
IHByb3BlcnR5LmNzc1ZhbHVlW2xpbmtNYXRjaE1hc2tdLCBsaW5rTWF0Y2hNYXNrLCBtYXRjaFJl
c3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0xNzEw
LDEwICsxNzAyLDEwIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIEFwcGx5Q2FzY2FkCiAgICAgU3R5bGVCdWlsZGVy
OjphcHBseVByb3BlcnR5KGlkLCAqdGhpcywgKnZhbHVlVG9BcHBseSwgaXNJbml0aWFsLCBpc0lu
aGVyaXQsIGN1c3RvbVByb3BlcnR5UmVnaXN0ZXJlZCk7CiB9CiAKLVJlZlB0cjxDU1NWYWx1ZT4g
U3R5bGVSZXNvbHZlcjo6cmVzb2x2ZWRWYXJpYWJsZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElE
LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJiBzdGF0
ZSkgY29uc3QKK1JlZlB0cjxDU1NWYWx1ZT4gU3R5bGVSZXNvbHZlcjo6cmVzb2x2ZWRWYXJpYWJs
ZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElELCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpIGNvbnN0
CiB7CiAgICAgQ1NTUGFyc2VyIHBhcnNlcihkb2N1bWVudCgpKTsKLSAgICByZXR1cm4gcGFyc2Vy
LnBhcnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVuY2VzKHByb3BJRCwgdmFsdWUsIHN0YXRlKTsK
KyAgICByZXR1cm4gcGFyc2VyLnBhcnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVuY2VzKHByb3BJ
RCwgdmFsdWUsIGRvY3VtZW50KCkuZ2V0Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0KCks
ICptX3N0YXRlLnN0eWxlKCkpOwogfQogCiBSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZl
cjo6c3R5bGVJbWFnZShDU1NWYWx1ZSYgdmFsdWUpCkBAIC0yMjM1LDEzICsyMjI3LDEzIEBAIHZv
aWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjphZGRJbXBvcnRhbnRNYXRjaGVz
KGNvbnN0IE1hdGNoUmVzdWx0JiBtCiAgICAgICAgIGFkZE1hdGNoKG1hdGNoUmVzdWx0LCBtYXRj
aC5pbmRleCwgdHJ1ZSwgaW5oZXJpdGVkT25seSk7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6
Q2FzY2FkZWRQcm9wZXJ0aWVzOjphcHBseURlZmVycmVkUHJvcGVydGllcyhTdHlsZVJlc29sdmVy
JiByZXNvbHZlciwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIGFwcGx5U3RhdGUpCit2b2lk
IFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YXBwbHlEZWZlcnJlZFByb3BlcnRp
ZXMoU3R5bGVSZXNvbHZlciYgcmVzb2x2ZXIsIGNvbnN0IE1hdGNoUmVzdWx0KiBtYXRjaFJlc3Vs
dCkKIHsKICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogbV9kZWZlcnJlZFByb3BlcnRpZXMpCi0g
ICAgICAgIHByb3BlcnR5LmFwcGx5KHJlc29sdmVyLCBhcHBseVN0YXRlKTsKKyAgICAgICAgcHJv
cGVydHkuYXBwbHkocmVzb2x2ZXIsIG1hdGNoUmVzdWx0KTsKIH0KIAotdm9pZCBTdHlsZVJlc29s
dmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5OjphcHBseShTdHlsZVJlc29sdmVyJiBy
ZXNvbHZlciwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIGFwcGx5U3RhdGUpCit2b2lkIFN0
eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6UHJvcGVydHk6OmFwcGx5KFN0eWxlUmVz
b2x2ZXImIHJlc29sdmVyLCBjb25zdCBNYXRjaFJlc3VsdCogbWF0Y2hSZXN1bHQpCiB7CiAgICAg
U3RhdGUmIHN0YXRlID0gcmVzb2x2ZXIuc3RhdGUoKTsKICAgICBzdGF0ZS5zZXRDYXNjYWRlTGV2
ZWwobGV2ZWwpOwpAQCAtMjI1MCw3ICsyMjQyLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpDYXNj
YWRlZFByb3BlcnRpZXM6OlByb3BlcnR5OjphcHBseShTdHlsZVJlc29sdmVyJiByZXNvbHZlciwK
ICAgICBpZiAoY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHRdKSB7CiAgICAg
ICAgIHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKTsKICAgICAgICAg
c3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZShmYWxzZSk7Ci0gICAgICAg
IHJlc29sdmVyLmFwcGx5UHJvcGVydHkoaWQsIGNzc1ZhbHVlW1NlbGVjdG9yQ2hlY2tlcjo6TWF0
Y2hEZWZhdWx0XSwgYXBwbHlTdGF0ZSwgU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQpOwor
ICAgICAgICByZXNvbHZlci5hcHBseVByb3BlcnR5KGlkLCBjc3NWYWx1ZVtTZWxlY3RvckNoZWNr
ZXI6Ok1hdGNoRGVmYXVsdF0sIFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hEZWZhdWx0LCBtYXRjaFJl
c3VsdCk7CiAgICAgfQogCiAgICAgaWYgKHN0YXRlLnN0eWxlKCktPmluc2lkZUxpbmsoKSA9PSBJ
bnNpZGVMaW5rOjpOb3RJbnNpZGUpCkBAIC0yMjU5LDk5ICsyMjUxLDQzIEBAIHZvaWQgU3R5bGVS
ZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eTo6YXBwbHkoU3R5bGVSZXNvbHZl
ciYgcmVzb2x2ZXIsCiAgICAgaWYgKGNzc1ZhbHVlW1NlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hMaW5r
XSkgewogICAgICAgICBzdGF0ZS5zZXRBcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUodHJ1ZSk7
CiAgICAgICAgIHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoZmFsc2Up
OwotICAgICAgICByZXNvbHZlci5hcHBseVByb3BlcnR5KGlkLCBjc3NWYWx1ZVtTZWxlY3RvckNo
ZWNrZXI6Ok1hdGNoTGlua10sIGFwcGx5U3RhdGUsIFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hMaW5r
KTsKKyAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JD
aGVja2VyOjpNYXRjaExpbmtdLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGluaywgbWF0Y2hSZXN1
bHQpOwogICAgIH0KIAogICAgIGlmIChjc3NWYWx1ZVtTZWxlY3RvckNoZWNrZXI6Ok1hdGNoVmlz
aXRlZF0pIHsKICAgICAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKGZh
bHNlKTsKICAgICAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSh0
cnVlKTsKLSAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0
b3JDaGVja2VyOjpNYXRjaFZpc2l0ZWRdLCBhcHBseVN0YXRlLCBTZWxlY3RvckNoZWNrZXI6Ok1h
dGNoVmlzaXRlZCk7CisgICAgICAgIHJlc29sdmVyLmFwcGx5UHJvcGVydHkoaWQsIGNzc1ZhbHVl
W1NlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hWaXNpdGVkXSwgU2VsZWN0b3JDaGVja2VyOjpNYXRjaFZp
c2l0ZWQsIG1hdGNoUmVzdWx0KTsKICAgICB9CiAKICAgICBzdGF0ZS5zZXRBcHBseVByb3BlcnR5
VG9SZWd1bGFyU3R5bGUodHJ1ZSk7CiAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRl
ZExpbmtTdHlsZShmYWxzZSk7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlDYXNjYWRl
ZEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5
U3RhdGUmIHN0YXRlKQotewotICAgIGlmIChzdGF0ZS5hcHBsaWVkQ3VzdG9tUHJvcGVydGllcy5j
b250YWlucyhuYW1lKSB8fCAhc3RhdGUuY2FzY2FkZS0+Y3VzdG9tUHJvcGVydGllcygpLmNvbnRh
aW5zKG5hbWUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHByb3BlcnR5ID0gc3RhdGUu
Y2FzY2FkZS0+Y3VzdG9tUHJvcGVydGllcygpLmdldChuYW1lKTsKLQotICAgIGZvciAoYXV0byBp
bmRleCA6IHsgU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQsIFNlbGVjdG9yQ2hlY2tlcjo6
TWF0Y2hMaW5rLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoVmlzaXRlZCB9KSB7Ci0gICAgICAgIGlm
ICghcHJvcGVydHkuY3NzVmFsdWVbaW5kZXhdKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGlmIChpbmRleCAhPSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoRGVmYXVsdCAmJiB0aGlzLT5z
dGF0ZSgpLnN0eWxlKCktPmluc2lkZUxpbmsoKSA9PSBJbnNpZGVMaW5rOjpOb3RJbnNpZGUpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZT4gdmFsdWVUb0FwcGx5ID0gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlKGRvd25jYXN0
PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCpwcm9wZXJ0eS5jc3NWYWx1ZVtpbmRleF0pKTsKLQot
ICAgICAgICBpZiAoc3RhdGUuaW5Qcm9ncmVzc1Byb3BlcnRpZXNDdXN0b20uY29udGFpbnMobmFt
ZSkpIHsKLSAgICAgICAgICAgIC8vIFdlIGFyZSBpbiBhIGN5Y2xlLCBzbyByZXNldCB0aGUgdmFs
dWUuCi0gICAgICAgICAgICBzdGF0ZS5hcHBsaWVkQ3VzdG9tUHJvcGVydGllcy5hZGQobmFtZSk7
Ci0gICAgICAgICAgICAvLyBSZXNvbHZlIHRoaXMgdmFsdWUgc28gdGhhdCB3ZSByZXNldCBpdHMg
ZGVwZW5kZW5jaWVzCi0gICAgICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4+KHZhbHVlVG9BcHBseS0+dmFsdWUoKSkpCi0gICAg
ICAgICAgICAgICAgcmVzb2x2ZWRWYXJpYWJsZVZhbHVlKENTU1Byb3BlcnR5Q3VzdG9tLCB2YWx1
ZVRvQXBwbHkuZ2V0KCksIHN0YXRlKTsKLSAgICAgICAgICAgIHZhbHVlVG9BcHBseSA9IENTU0N1
c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVdpdGhJRChuYW1lLCBDU1NWYWx1ZVVuc2V0KTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHN0YXRlLmluUHJvZ3Jlc3NQcm9wZXJ0aWVzQ3VzdG9tLmFkZChu
YW1lKTsKLQotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q1NTVmFyaWFi
bGVSZWZlcmVuY2VWYWx1ZT4+KHZhbHVlVG9BcHBseS0+dmFsdWUoKSkpIHsKLSAgICAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VkVmFsdWUgPSByZXNvbHZlZFZhcmlhYmxlVmFsdWUoQ1NT
UHJvcGVydHlDdXN0b20sIHZhbHVlVG9BcHBseS5nZXQoKSwgc3RhdGUpOwotCi0gICAgICAgICAg
ICBpZiAoIXBhcnNlZFZhbHVlKQotICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gQ1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlV2l0aElEKG5hbWUsIENTU1ZhbHVlVW5zZXQpOwotCi0g
ICAgICAgICAgICB2YWx1ZVRvQXBwbHkgPSBkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
PigqcGFyc2VkVmFsdWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHN0YXRlLmluUHJvZ3Jl
c3NQcm9wZXJ0aWVzQ3VzdG9tLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgICAgICBpZiAoaW5k
ZXggPT0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQpIHsKLSAgICAgICAgICAgICAgICB0
aGlzLT5zdGF0ZSgpLnNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKTsKLSAgICAg
ICAgICAgICAgICB0aGlzLT5zdGF0ZSgpLnNldEFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5
bGUoZmFsc2UpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoaW5kZXggPT0gU2Vs
ZWN0b3JDaGVja2VyOjpNYXRjaExpbmspIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5zdGF0ZSgp
LnNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKTsKLSAgICAgICAgICAgICAgICB0
aGlzLT5zdGF0ZSgpLnNldEFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoZmFsc2UpOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoaW5kZXggPT0gU2VsZWN0b3JDaGVja2Vy
OjpNYXRjaFZpc2l0ZWQpIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5zdGF0ZSgpLnNldEFwcGx5
UHJvcGVydHlUb1JlZ3VsYXJTdHlsZShmYWxzZSk7Ci0gICAgICAgICAgICAgICAgdGhpcy0+c3Rh
dGUoKS5zZXRBcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKHRydWUpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUN1c3RvbSwgdmFsdWVU
b0FwcGx5LnB0cigpLCBzdGF0ZSwgaW5kZXgpOwotICAgICAgICB9Ci0gICAgICAgIHN0YXRlLmlu
UHJvZ3Jlc3NQcm9wZXJ0aWVzQ3VzdG9tLnJlbW92ZShuYW1lKTsKLSAgICAgICAgc3RhdGUuYXBw
bGllZEN1c3RvbVByb3BlcnRpZXMuYWRkKG5hbWUpOwotICAgIH0KLX0KLQotdm9pZCBTdHlsZVJl
c29sdmVyOjphcHBseUNhc2NhZGVkUHJvcGVydGllcyhpbnQgZmlyc3RQcm9wZXJ0eSwgaW50IGxh
c3RQcm9wZXJ0eSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIHN0YXRlKQordm9pZCBTdHls
ZVJlc29sdmVyOjphcHBseUNhc2NhZGVkUHJvcGVydGllcyhDYXNjYWRlZFByb3BlcnRpZXMmIGNh
c2NhZGUsIGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5LCBjb25zdCBNYXRjaFJl
c3VsdCogbWF0Y2hSZXN1bHQpCiB7CiAgICAgZm9yIChpbnQgaWQgPSBmaXJzdFByb3BlcnR5OyBp
ZCA8PSBsYXN0UHJvcGVydHk7ICsraWQpIHsKICAgICAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpOwotICAgICAgICBpZiAoIXN0YXRl
LmNhc2NhZGUtPmhhc1Byb3BlcnR5KHByb3BlcnR5SUQpKQorICAgICAgICBpZiAoIWNhc2NhZGUu
aGFzUHJvcGVydHkocHJvcGVydHlJRCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
QVNTRVJUKHByb3BlcnR5SUQgIT0gQ1NTUHJvcGVydHlDdXN0b20pOwotICAgICAgICBhdXRvJiBw
cm9wZXJ0eSA9IHN0YXRlLmNhc2NhZGUtPnByb3BlcnR5KHByb3BlcnR5SUQpOwotICAgICAgICBB
U1NFUlQoIXNob3VsZEFwcGx5UHJvcGVydHlJblBhcnNlT3JkZXIocHJvcGVydHlJRCkpOwotCi0g
ICAgICAgIGlmIChzdGF0ZS5pblByb2dyZXNzUHJvcGVydGllcy5jb250YWlucyhwcm9wZXJ0eUlE
KSkgewotICAgICAgICAgICAgLy8gV2UgYXJlIGluIGEgY3ljbGUgKGVnLiBzZXR0aW5nIGZvbnQg
c2l6ZSB1c2luZyByZWdpc3RlcmVkIGN1c3RvbSBwcm9wZXJ0eSB2YWx1ZSBjb250YWluaW5nIGVt
KQotICAgICAgICAgICAgLy8gU28gdGhpcyB2YWx1ZSBzaG91bGQgYmUgdW5zZXQKLSAgICAgICAg
ICAgIHN0YXRlLmFwcGxpZWRQcm9wZXJ0aWVzLmFkZChwcm9wZXJ0eUlEKTsKLSAgICAgICAgICAg
IC8vIFRoaXMgcHJvcGVydHkgaXMgaW4gYSBjeWNsZSwgYW5kIG9ubHkgdGhlIHJvb3Qgb2YgdGhl
IGNhbGwgc3RhY2sgd2lsbCBoYXZlIGZpcnN0UHJvcGVydHkgIT0gbGFzdFByb3BlcnR5LgotICAg
ICAgICAgICAgQVNTRVJUKGZpcnN0UHJvcGVydHkgPT0gbGFzdFByb3BlcnR5KTsKKyAgICAgICAg
aWYgKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlDdXN0b20pIHsKKyAgICAgICAgICAgIC8vIEFw
cGx5IGZvbnQgc2l6ZSBmaXJzdCwgc2luY2UgY3VzdG9tIHByb3BlcnRpZXMgbWF5IHJlbHkgb24g
aXQgZm9yIHJlbGF0aXZlIHVuaXQgY2FsY3VsYXRpb25zCisgICAgICAgICAgICAvLyBPbmNlIGl0
IGlzIGFwcGxpZWQgYW5kIHRoZSBjdXN0b20gcHJvcGVydHkgdmFsdWVzIGFyZSBzZXQsIGl0IHdp
bGwgYmUgYXBwbGllZCBhZ2Fpbiwgd2hpY2ggc2hvdWxkCisgICAgICAgICAgICAvLyBoYW5kbGUg
YW55IGZvbnQtc2l6ZSBwcm9wZXJ0aWVzIHRoYXQgcmVseSBvbiByZWdpc3RlcmVkIGN1c3RvbSBw
cm9wZXJ0aWVzLgorICAgICAgICAgICAgLy8gRklYTUUgY3ljbGVzIHNob3VsZCBiZSBkZXRlY3Rl
ZC4KKyAgICAgICAgICAgIGlmIChjYXNjYWRlLmhhc1Byb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNp
emUpKQorICAgICAgICAgICAgICAgIGNhc2NhZGUucHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6
ZSkuYXBwbHkoKnRoaXMsIG1hdGNoUmVzdWx0KTsKKyAgICAgICAgICAgIHVwZGF0ZUZvbnQoKTsK
KworICAgICAgICAgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIENhc2NhZGVkUHJvcGVydGllczo6
UHJvcGVydHk+OjppdGVyYXRvciBlbmQgPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5lbmQo
KTsKKyAgICAgICAgICAgIGZvciAoSGFzaE1hcDxBdG9taWNTdHJpbmcsIENhc2NhZGVkUHJvcGVy
dGllczo6UHJvcGVydHk+OjppdGVyYXRvciBpdCA9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygp
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgICAgICBpdC0+dmFsdWUuYXBw
bHkoKnRoaXMsIG1hdGNoUmVzdWx0KTsKKyAgICAgICAgICAgIG1fc3RhdGUuc3R5bGUoKS0+Y2hl
Y2tWYXJpYWJsZXNJbkN1c3RvbVByb3BlcnRpZXMoZG9jdW1lbnQoKS5nZXRDU1NSZWdpc3RlcmVk
Q3VzdG9tUHJvcGVydHlTZXQoKSwgbV9zdGF0ZS5wYXJlbnRTdHlsZSgpLCAqdGhpcyk7CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotCi0gICAgICAgIHN0YXRlLmluUHJvZ3Jlc3NQ
cm9wZXJ0aWVzLmFkZChwcm9wZXJ0eUlEKTsKLSAgICAgICAgcHJvcGVydHkuYXBwbHkoKnRoaXMs
IHN0YXRlKTsKLSAgICAgICAgc3RhdGUuYXBwbGllZFByb3BlcnRpZXMuYWRkKHByb3BlcnR5SUQp
OwotICAgICAgICBzdGF0ZS5pblByb2dyZXNzUHJvcGVydGllcy5yZW1vdmUocHJvcGVydHlJRCk7
CisgICAgICAgIGF1dG8mIHByb3BlcnR5ID0gY2FzY2FkZS5wcm9wZXJ0eShwcm9wZXJ0eUlEKTsK
KyAgICAgICAgQVNTRVJUKCFzaG91bGRBcHBseVByb3BlcnR5SW5QYXJzZU9yZGVyKHByb3BlcnR5
SUQpKTsKKyAgICAgICAgcHJvcGVydHkuYXBwbHkoKnRoaXMsIG1hdGNoUmVzdWx0KTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDZkODhmNjAxOWEyZDZmNmQ4
ZWRjZWNiZmUzZTE1N2ZhNTc5NmExNTMuLjQ3MDNjZWZjM2JjMmMzYjZiNzQ5NzQ5ODc0MzVjYWU1
ZGNlNWU0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtMjY3LDcgKzI2Nyw3
IEBAIHB1YmxpYzoKICAgICAgICAgQ2FzY2FkZWRQcm9wZXJ0aWVzKFRleHREaXJlY3Rpb24sIFdy
aXRpbmdNb2RlKTsKIAogICAgICAgICBzdHJ1Y3QgUHJvcGVydHkgewotICAgICAgICAgICAgdm9p
ZCBhcHBseShTdHlsZVJlc29sdmVyJiwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmKTsKKyAg
ICAgICAgICAgIHZvaWQgYXBwbHkoU3R5bGVSZXNvbHZlciYsIGNvbnN0IE1hdGNoUmVzdWx0Kik7
CiAKICAgICAgICAgICAgIENTU1Byb3BlcnR5SUQgaWQ7CiAgICAgICAgICAgICBDYXNjYWRlTGV2
ZWwgbGV2ZWw7CkBAIC0yODEsNyArMjgxLDcgQEAgcHVibGljOgogICAgICAgICB2b2lkIGFkZE5v
cm1hbE1hdGNoZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBpbnQgc3RhcnRJbmRleCwgaW50IGVuZElu
ZGV4LCBib29sIGluaGVyaXRlZE9ubHkgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQgYWRkSW1wb3J0
YW50TWF0Y2hlcyhjb25zdCBNYXRjaFJlc3VsdCYsIGludCBzdGFydEluZGV4LCBpbnQgZW5kSW5k
ZXgsIGJvb2wgaW5oZXJpdGVkT25seSA9IGZhbHNlKTsKIAotICAgICAgICB2b2lkIGFwcGx5RGVm
ZXJyZWRQcm9wZXJ0aWVzKFN0eWxlUmVzb2x2ZXImLCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0
ZSYpOworICAgICAgICB2b2lkIGFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVzKFN0eWxlUmVzb2x2ZXIm
LCBjb25zdCBNYXRjaFJlc3VsdCopOwogCiAgICAgICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBQ
cm9wZXJ0eT4mIGN1c3RvbVByb3BlcnRpZXMoKSB7IHJldHVybiBtX2N1c3RvbVByb3BlcnRpZXM7
IH0KICAgICAgICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmKSBjb25zdDsK
QEAgLTMwMiwxMCArMzAyLDcgQEAgcHVibGljOgogICAgICAgICBUZXh0RGlyZWN0aW9uIG1fZGly
ZWN0aW9uOwogICAgICAgICBXcml0aW5nTW9kZSBtX3dyaXRpbmdNb2RlOwogICAgIH07Ci0KLSAg
ICB2b2lkIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFz
dFByb3BlcnR5LCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYpOwotICAgIHZvaWQgYXBwbHlD
YXNjYWRlZEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSwgQXBwbHlDYXNjYWRlZFBy
b3BlcnR5U3RhdGUmKTsKLQorICAgIAogcHJpdmF0ZToKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGZp
eGVzIHVwIHRoZSBkZWZhdWx0IGZvbnQgc2l6ZSBpZiBpdCBkZXRlY3RzIHRoYXQgdGhlIGN1cnJl
bnQgZ2VuZXJpYyBmb250IGZhbWlseSBoYXMgY2hhbmdlZC4gLWR3aAogICAgIHZvaWQgY2hlY2tG
b3JHZW5lcmljRmFtaWx5Q2hhbmdlKFJlbmRlclN0eWxlKiwgY29uc3QgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlKTsKQEAgLTMyNCw2ICszMjEsNyBAQCBwcml2YXRlOgogICAgIGVudW0gU2hvdWxk
VXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSB7IERvTm90VXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNo
ZSA9IDAsIFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUgfTsKICAgICB2b2lkIGFwcGx5TWF0Y2hl
ZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBjb25zdCBFbGVtZW50JiwgU2hvdWxkVXNl
TWF0Y2hlZFByb3BlcnRpZXNDYWNoZSA9IFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOwogCisg
ICAgdm9pZCBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhDYXNjYWRlZFByb3BlcnRpZXMmLCBpbnQg
Zmlyc3RQcm9wZXJ0eSwgaW50IGxhc3RQcm9wZXJ0eSwgY29uc3QgTWF0Y2hSZXN1bHQqKTsKICAg
ICB2b2lkIGNhc2NhZGVNYXRjaGVzKENhc2NhZGVkUHJvcGVydGllcyYsIGNvbnN0IE1hdGNoUmVz
dWx0JiwgYm9vbCBpbXBvcnRhbnQsIGludCBzdGFydEluZGV4LCBpbnQgZW5kSW5kZXgsIGJvb2wg
aW5oZXJpdGVkT25seSk7CiAKICAgICB2b2lkIG1hdGNoUGFnZVJ1bGVzKE1hdGNoUmVzdWx0Jiwg
UnVsZVNldCosIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5n
JiBwYWdlTmFtZSk7CkBAIC00NTcsMTIgKzQ1NSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRX
cml0aW5nTW9kZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkgeyBtX3N0YXRlLnNldFdyaXRpbmdN
b2RlKHdyaXRpbmdNb2RlKTsgfQogICAgIHZvaWQgc2V0VGV4dE9yaWVudGF0aW9uKFRleHRPcmll
bnRhdGlvbiB0ZXh0T3JpZW50YXRpb24pIHsgbV9zdGF0ZS5zZXRUZXh0T3JpZW50YXRpb24odGV4
dE9yaWVudGF0aW9uKTsgfQogCi0gICAgUmVmUHRyPENTU1ZhbHVlPiByZXNvbHZlZFZhcmlhYmxl
VmFsdWUoQ1NTUHJvcGVydHlJRCwgY29uc3QgQ1NTVmFsdWUmLCBBcHBseUNhc2NhZGVkUHJvcGVy
dHlTdGF0ZSYpIGNvbnN0OworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmVzb2x2ZWRWYXJpYWJsZVZh
bHVlKENTU1Byb3BlcnR5SUQsIGNvbnN0IENTU1ZhbHVlJikgY29uc3Q7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBjYWNoZUJvcmRlckFuZEJhY2tncm91bmQoKTsKIAotICAgIHZvaWQgYXBwbHlQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSosIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRl
JiwgU2VsZWN0b3JDaGVja2VyOjpMaW5rTWF0Y2hNYXNrID0gU2VsZWN0b3JDaGVja2VyOjpNYXRj
aERlZmF1bHQpOworICAgIHZvaWQgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1
ZSosIFNlbGVjdG9yQ2hlY2tlcjo6TGlua01hdGNoTWFzayA9IFNlbGVjdG9yQ2hlY2tlcjo6TWF0
Y2hEZWZhdWx0LCBjb25zdCBNYXRjaFJlc3VsdCogPSBudWxscHRyKTsKIAogICAgIHZvaWQgYXBw
bHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSopOwogCkBAIC01MjYsMTkgKzUy
NCw2IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBNYXRjaFJh
bmdlcyYsIGNvbnN0IE1hdGNoUmFuZ2VzJik7CiB9OwogCi0vLyBTdGF0ZSB0byB1c2Ugd2hlbiBh
cHBseWluZyBwcm9wZXJ0aWVzLCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGN1c3RvbSBhbmQgaGln
aC1wcmlvcml0eQotLy8gcHJvcGVydGllcyBoYXZlIGJlZW4gcmVzb2x2ZWQuCi1zdHJ1Y3QgQXBw
bHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgewotICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2
ZXI7Ci0gICAgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzKiBjYXNjYWRlOwotICAg
IGNvbnN0IFN0eWxlUmVzb2x2ZXI6Ok1hdGNoUmVzdWx0KiBtYXRjaFJlc3VsdDsKLSAgICBIYXNo
U2V0PENTU1Byb3BlcnR5SUQ+IGFwcGxpZWRQcm9wZXJ0aWVzID0geyB9OwotICAgIEhhc2hTZXQ8
U3RyaW5nPiBhcHBsaWVkQ3VzdG9tUHJvcGVydGllcyA9IHsgfTsKLSAgICBIYXNoU2V0PENTU1By
b3BlcnR5SUQ+IGluUHJvZ3Jlc3NQcm9wZXJ0aWVzID0geyB9OwotICAgIEhhc2hTZXQ8U3RyaW5n
PiBpblByb2dyZXNzUHJvcGVydGllc0N1c3RvbSA9IHsgfTsKLX07Ci0KLQogaW5saW5lIGJvb2wg
U3R5bGVSZXNvbHZlcjo6aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUoY29uc3QgRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgQXRvbWljU3RyaW5nICZhdHRyaWJ1dGVOYW1lKSBjb25zdAogewogICAgIEFT
U0VSVCghYXR0cmlidXRlTmFtZS5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXIuY3BwCmluZGV4IDBkNmFlZjA4ZjkyNGYwNzg4OWQyY2ExNDEwOGNlNTdhMTg0NWJk
ZDUuLjlkZjBmZDQ1OWY5MDczMzI0NDBkNWU4YTliODE2YjE2NTI0ZGNlZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAKICNpbmNsdWRl
ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJTdHlsZUNvbG9yLmgiCi0jaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUg
IlN0eWxlUnVsZS5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtMTc4LDEwICsxNzcsOCBAQCB2b2lkIENTU1BhcnNl
cjo6cGFyc2VEZWNsYXJhdGlvbkZvckluc3BlY3Rvcihjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBj
b250ZXh0LCBjbwogICAgIENTU1BhcnNlckltcGw6OnBhcnNlRGVjbGFyYXRpb25MaXN0Rm9ySW5z
cGVjdG9yKHN0cmluZywgY29udGV4dCwgb2JzZXJ2ZXIpOwogfQogCi1SZWZQdHI8Q1NTVmFsdWU+
IENTU1BhcnNlcjo6cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5jZXMoQ1NTUHJvcGVydHlJ
RCBwcm9wSUQsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3Rh
dGUmIHN0YXRlKQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlVmFsdWVXaXRoVmFy
aWFibGVSZWZlcmVuY2VzKENTU1Byb3BlcnR5SUQgcHJvcElELCBjb25zdCBDU1NWYWx1ZSYgdmFs
dWUsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYgcmVnaXN0ZXJlZFByb3Bl
cnRpZXMsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBBU1NFUlQoKHByb3BJRCA9
PSBDU1NQcm9wZXJ0eUN1c3RvbSAmJiB2YWx1ZS5pc0N1c3RvbVByb3BlcnR5VmFsdWUoKSkgfHwg
KHByb3BJRCAhPSBDU1NQcm9wZXJ0eUN1c3RvbSAmJiAhdmFsdWUuaXNDdXN0b21Qcm9wZXJ0eVZh
bHVlKCkpKTsKLSAgICBhdXRvJiBzdHlsZSA9ICpzdGF0ZS5zdHlsZVJlc29sdmVyLT5zdHlsZSgp
OwogICAgIGF1dG8gZGlyZWN0aW9uID0gc3R5bGUuZGlyZWN0aW9uKCk7CiAgICAgYXV0byB3cml0
aW5nTW9kZSA9IHN0eWxlLndyaXRpbmdNb2RlKCk7CiAKQEAgLTE5MywxMSArMTkwLDEyIEBAIFJl
ZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNl
cyhDU1NQcm9wZXJ0eUlEIHByb3BJCiAgICAgICAgIGlmIChDU1NQcm9wZXJ0eTo6aXNEaXJlY3Rp
b25Bd2FyZVByb3BlcnR5KHNob3J0aGFuZElEKSkKICAgICAgICAgICAgIHNob3J0aGFuZElEID0g
Q1NTUHJvcGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KHNob3J0aGFuZElELCBk
aXJlY3Rpb24sIHdyaXRpbmdNb2RlKTsKICAgICAgICAgQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1
ZSogc2hvcnRoYW5kVmFsdWUgPSBwZW5kaW5nU3Vic3RpdHV0aW9uLnNob3J0aGFuZFZhbHVlKCk7
Ci0KLSAgICAgICAgYXV0byByZXNvbHZlZERhdGEgPSBzaG9ydGhhbmRWYWx1ZS0+cmVzb2x2ZVZh
cmlhYmxlUmVmZXJlbmNlcyhzdGF0ZSk7Ci0gICAgICAgIGlmICghcmVzb2x2ZWREYXRhKQorICAg
ICAgICBjb25zdCBDU1NWYXJpYWJsZURhdGEqIHZhcmlhYmxlRGF0YSA9IHNob3J0aGFuZFZhbHVl
LT52YXJpYWJsZURhdGFWYWx1ZSgpOworICAgICAgICBBU1NFUlQodmFyaWFibGVEYXRhKTsKKyAg
ICAgICAgCisgICAgICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVzb2x2ZWRUb2tlbnM7Cisg
ICAgICAgIGlmICghdmFyaWFibGVEYXRhLT5yZXNvbHZlVG9rZW5SYW5nZShyZWdpc3RlcmVkUHJv
cGVydGllcywgdmFyaWFibGVEYXRhLT50b2tlbnMoKSwgcmVzb2x2ZWRUb2tlbnMsIHN0eWxlKSkK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBWZWN0b3I8Q1NTUGFyc2VyVG9r
ZW4+IHJlc29sdmVkVG9rZW5zID0gcmVzb2x2ZWREYXRhLT50b2tlbnMoKTsKICAgICAgICAgCiAg
ICAgICAgIFBhcnNlZFByb3BlcnR5VmVjdG9yIHBhcnNlZFByb3BlcnRpZXM7CiAgICAgICAgIGlm
ICghQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVmFsdWUoc2hvcnRoYW5kSUQsIGZhbHNlLCByZXNv
bHZlZFRva2VucywgbV9jb250ZXh0LCBwYXJzZWRQcm9wZXJ0aWVzLCBTdHlsZVJ1bGU6OlN0eWxl
KSkKQEAgLTIxMSwzMyArMjA5LDMxIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJz
ZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNlcyhDU1NQcm9wZXJ0eUlEIHByb3BJCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAgIGNvbnN0IENTU1ZhcmlhYmxlRGF0YSogdmFy
aWFibGVEYXRhID0gbnVsbHB0cjsKKwogICAgIGlmICh2YWx1ZS5pc1ZhcmlhYmxlUmVmZXJlbmNl
VmFsdWUoKSkgewogICAgICAgICBjb25zdCBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlJiB2YWx1
ZVdpdGhSZWZlcmVuY2VzID0gZG93bmNhc3Q8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4odmFs
dWUpOwotICAgICAgICBhdXRvIHJlc29sdmVkRGF0YSA9IHZhbHVlV2l0aFJlZmVyZW5jZXMucmVz
b2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyhzdGF0ZSk7Ci0gICAgICAgIGlmICghcmVzb2x2ZWREYXRh
KQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBDU1NQcm9wZXJ0
eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShwcm9wSUQsIHJlc29sdmVkRGF0YS0+dG9rZW5zKCks
IG1fY29udGV4dCk7CisgICAgICAgIHZhcmlhYmxlRGF0YSA9IHZhbHVlV2l0aFJlZmVyZW5jZXMu
dmFyaWFibGVEYXRhVmFsdWUoKTsKKyAgICAgICAgQVNTRVJUKHZhcmlhYmxlRGF0YSk7CiAgICAg
fQogCi0gICAgY29uc3QgYXV0byYgY3VzdG9tUHJvcFZhbHVlID0gZG93bmNhc3Q8Q1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZT4odmFsdWUpOwotICAgIGNvbnN0IGF1dG8mIHZhbHVlV2l0aFJlZmVyZW5j
ZXMgPSBXVEY6OmdldDxSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4+KGN1c3RvbVByb3BW
YWx1ZS52YWx1ZSgpKS5nZXQoKTsKKyAgICBpZiAodmFsdWUuaXNDdXN0b21Qcm9wZXJ0eVZhbHVl
KCkpIHsKKyAgICAgICAgY29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSYgY3VzdG9tUHJvcFZh
bHVlID0gZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4odmFsdWUpOwogCi0gICAgYXV0
byYgbmFtZSA9IGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KHZhbHVlKS5uYW1lKCk7
Ci0gICAgYXV0byogcmVnaXN0ZXJlZCA9IHN0YXRlLnN0eWxlUmVzb2x2ZXItPmRvY3VtZW50KCku
Z2V0Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0KCkuZ2V0KG5hbWUpOwotICAgIGF1dG8m
IHN5bnRheCA9IHJlZ2lzdGVyZWQgPyByZWdpc3RlcmVkLT5zeW50YXggOiAiKiI7Ci0gICAgYXV0
byByZXNvbHZlZERhdGEgPSB2YWx1ZVdpdGhSZWZlcmVuY2VzLnJlc29sdmVWYXJpYWJsZVJlZmVy
ZW5jZXMoc3RhdGUpOworICAgICAgICBpZiAoY3VzdG9tUHJvcFZhbHVlLnJlc29sdmVkVHlwZWRW
YWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoKmN1
c3RvbVByb3BWYWx1ZS5yZXNvbHZlZFR5cGVkVmFsdWUoKSwgc3R5bGUpOwogCi0gICAgaWYgKCFy
ZXNvbHZlZERhdGEpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB2YXJpYWJsZURh
dGEgPSBjdXN0b21Qcm9wVmFsdWUudmFsdWUoKTsKKyAgICB9CiAKLSAgICAvLyBGSVhNRSBoYW5k
bGUgUkVNIGN5Y2xlcy4KLSAgICBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+IGRlcGVuZGVuY2llczsK
LSAgICBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29sbGVjdFBhcnNlZEN1c3RvbVByb3BlcnR5VmFsdWVE
ZXBlbmRlbmNpZXMoc3ludGF4LCBmYWxzZSwgZGVwZW5kZW5jaWVzLCByZXNvbHZlZERhdGEtPnRv
a2VucygpLCBtX2NvbnRleHQpOworICAgIGlmICghdmFyaWFibGVEYXRhKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIGZvciAoYXV0byBpZCA6IGRlcGVuZGVuY2llcykKLSAgICAgICAg
c3RhdGUuc3R5bGVSZXNvbHZlci0+YXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoaWQsIGlkLCBzdGF0
ZSk7CisgICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiByZXNvbHZlZFRva2VuczsKKyAgICBpZiAo
IXZhcmlhYmxlRGF0YS0+cmVzb2x2ZVRva2VuUmFuZ2UocmVnaXN0ZXJlZFByb3BlcnRpZXMsIHZh
cmlhYmxlRGF0YS0+dG9rZW5zKCksIHJlc29sdmVkVG9rZW5zLCBzdHlsZSkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVR5cGVk
Q3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBzeW50YXgsIHJlc29sdmVkRGF0YS0+dG9rZW5zKCks
ICpzdGF0ZS5zdHlsZVJlc29sdmVyLCBtX2NvbnRleHQpOworICAgIHJldHVybiBDU1NQcm9wZXJ0
eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShwcm9wSUQsIHJlc29sdmVkVG9rZW5zLCBtX2NvbnRl
eHQpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPGRvdWJsZT4+IENTU1BhcnNlcjo6cGFy
c2VLZXlmcmFtZUtleUxpc3QoY29uc3QgU3RyaW5nJiBzZWxlY3RvcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlci5oCmluZGV4IDQ3MDYzY2RmYjlhMjU1YzU2YmZkYzQ1ZjZjZTRiMDM2
NDQxMTAwZmEuLjA5YmE0YjAzMGE2YzVmNmEyYTVmMTJhNjkxYjAwOGNiNTI1ZWVhM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaApAQCAtMzAsNyArMzAsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZTsKIGNs
YXNzIENTU1BhcnNlck9ic2VydmVyOwogY2xhc3MgQ1NTU2VsZWN0b3JMaXN0OwogY2xhc3MgQ29s
b3I7CkBAIC03OCw3ICs3Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcGFyc2VTZWxlY3Rvcihj
b25zdCBTdHJpbmcmLCBDU1NTZWxlY3Rvckxpc3QmKTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZT4g
cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5jZXMoQ1NTUHJvcGVydHlJRCwgY29uc3QgQ1NT
VmFsdWUmLCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYpOworICAgIFJlZlB0cjxDU1NWYWx1
ZT4gcGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5jZXMoQ1NTUHJvcGVydHlJRCwgY29uc3Qg
Q1NTVmFsdWUmLCBjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQmLCBjb25zdCBS
ZW5kZXJTdHlsZSYpOwogCiAgICAgc3RhdGljIENvbG9yIHBhcnNlQ29sb3IoY29uc3QgU3RyaW5n
JiwgYm9vbCBzdHJpY3QgPSBmYWxzZSk7CiAgICAgc3RhdGljIENvbG9yIHBhcnNlU3lzdGVtQ29s
b3IoY29uc3QgU3RyaW5nJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCBjM2EyM2I1OTll
OGViNGQ3OWNhOWY5M2VkYzY0NGZmMGJhMzFkODI3Li4yMWZlYmFjYzRjZmJhYTUxMWJiYWVhNjQ3
NWYxNjBkNTMyNWRjMGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VyLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkNTU0NvbnRlbnRE
aXN0cmlidXRpb25WYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNp
bmNsdWRlICJDU1NDdXN0b21JZGVudFZhbHVlLmgiCi0jaW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU3JjVmFsdWUuaCIKICNpbmNsdWRlICJD
U1NGb250RmVhdHVyZVZhbHVlLmgiCiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykKQEAgLTc0
LDEwICs3Myw4IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1
ZGUgIlNWR1BhdGhCeXRlU3RyZWFtLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFV0aWxpdGllcy5oIgot
I2luY2x1ZGUgIlN0eWxlQnVpbGRlckNvbnZlcnRlci5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25z
LmgiCi0jaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgPGJpdHNldD4KICNpbmNs
dWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtMjE2
LDEzICsyMTMsMTIgQEAgQ1NTUHJvcGVydHlJRCBjc3NQcm9wZXJ0eUlEKFN0cmluZ1ZpZXcgc3Ry
aW5nKQogICAgIAogdXNpbmcgbmFtZXNwYWNlIENTU1Byb3BlcnR5UGFyc2VySGVscGVyczsKIAot
Q1NTUHJvcGVydHlQYXJzZXI6OkNTU1Byb3BlcnR5UGFyc2VyKGNvbnN0IENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBWZWN0b3I8Q1NT
UHJvcGVydHksIDI1Nj4qIHBhcnNlZFByb3BlcnRpZXMsIGJvb2wgY29uc3VtZVdoaXRlc3BhY2Up
CitDU1NQcm9wZXJ0eVBhcnNlcjo6Q1NTUHJvcGVydHlQYXJzZXIoY29uc3QgQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxD
U1NQcm9wZXJ0eSwgMjU2PiogcGFyc2VkUHJvcGVydGllcykKICAgICA6IG1fcmFuZ2UocmFuZ2Up
CiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fcGFyc2VkUHJvcGVydGllcyhwYXJz
ZWRQcm9wZXJ0aWVzKQogewotICAgIGlmIChjb25zdW1lV2hpdGVzcGFjZSkKLSAgICAgICAgbV9y
YW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOworICAgIG1fcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2Uo
KTsKIH0KIAogdm9pZCBDU1NQcm9wZXJ0eVBhcnNlcjo6YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eSwgQ1NTUHJvcGVydHlJRCBjdXJyZW50U2hvcnRoYW5kLCBSZWY8Q1NTVmFsdWU+
JiYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBib29sIGltcGxpY2l0KQpAQCAtMjgyLDI3ICsyNzgs
NiBAQCBSZWZQdHI8Q1NTVmFsdWU+IENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVl
KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGNvbgogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotYm9v
bCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y2FuUGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29u
c3QgU3RyaW5nJiBzeW50YXgsIGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHRva2VucywgY29u
c3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICBDU1NQcm9wZXJ0eVBhcnNlciBw
YXJzZXIodG9rZW5zLCBjb250ZXh0LCBudWxscHRyKTsKLSAgICByZXR1cm4gcGFyc2VyLmNhblBh
cnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKHN5bnRheCk7Ci19Ci0KLVJlZlB0cjxDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlPiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VUeXBlZEN1c3RvbVByb3Bl
cnR5VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN5bnRheCwgY29uc3Qg
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgdG9rZW5zLCBjb25zdCBTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQotewotICAgIENTU1Byb3Bl
cnR5UGFyc2VyIHBhcnNlcih0b2tlbnMsIGNvbnRleHQsIG51bGxwdHIsIGZhbHNlKTsKLSAgICBS
ZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gdmFsdWUgPSBwYXJzZXIucGFyc2VUeXBlZEN1
c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgc3ludGF4LCBzdHlsZVJlc29sdmVyKTsKLSAgICBpZiAo
IXZhbHVlIHx8ICFwYXJzZXIubV9yYW5nZS5hdEVuZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gdmFsdWU7Ci19Ci0KLXZvaWQgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbGxl
Y3RQYXJzZWRDdXN0b21Qcm9wZXJ0eVZhbHVlRGVwZW5kZW5jaWVzKGNvbnN0IFN0cmluZyYgc3lu
dGF4LCBib29sIGlzUm9vdCwgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiYgZGVwZW5kZW5jaWVzLCBj
b25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiB0b2tlbnMsIGNvbnN0IENTU1BhcnNlckNvbnRleHQm
IGNvbnRleHQpCi17Ci0gICAgQ1NTUHJvcGVydHlQYXJzZXIgcGFyc2VyKHRva2VucywgY29udGV4
dCwgbnVsbHB0cik7Ci0gICAgcGFyc2VyLmNvbGxlY3RQYXJzZWRDdXN0b21Qcm9wZXJ0eVZhbHVl
RGVwZW5kZW5jaWVzKHN5bnRheCwgaXNSb290LCBkZXBlbmRlbmNpZXMpOwotfQotCiBzdGF0aWMg
Ym9vbCBpc0xlZ2FjeUJyZWFrUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogewog
ICAgIHN3aXRjaCAocHJvcGVydHlJRCkgewpAQCAtMzQ1LDcgKzMyMCw3IEBAIGJvb2wgQ1NTUHJv
cGVydHlQYXJzZXI6OnBhcnNlVmFsdWVTdGFydChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGJv
b2wgaW1wb3J0YW50CiAgICAgfQogCiAgICAgaWYgKENTU1ZhcmlhYmxlUGFyc2VyOjpjb250YWlu
c1ZhbGlkVmFyaWFibGVSZWZlcmVuY2VzKG9yaWdpbmFsUmFuZ2UsIG1fY29udGV4dCkpIHsKLSAg
ICAgICAgUmVmUHRyPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+IHZhcmlhYmxlID0gQ1NTVmFy
aWFibGVSZWZlcmVuY2VWYWx1ZTo6Y3JlYXRlKG9yaWdpbmFsUmFuZ2UpOworICAgICAgICBSZWZQ
dHI8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4gdmFyaWFibGUgPSBDU1NWYXJpYWJsZVJlZmVy
ZW5jZVZhbHVlOjpjcmVhdGUoQ1NTVmFyaWFibGVEYXRhOjpjcmVhdGUob3JpZ2luYWxSYW5nZSkp
OwogCiAgICAgICAgIGlmIChpc1Nob3J0aGFuZCkgewogICAgICAgICAgICAgUmVmUHRyPENTU1Bl
bmRpbmdTdWJzdGl0dXRpb25WYWx1ZT4gcGVuZGluZ1ZhbHVlID0gQ1NTUGVuZGluZ1N1YnN0aXR1
dGlvblZhbHVlOjpjcmVhdGUocHJvcGVydHlJRCwgdmFyaWFibGUucmVsZWFzZU5vbk51bGwoKSk7
CkBAIC0zOTExLDYgKzM4ODYsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENTU1Byb3BlcnR5UGFyc2Vy
OjpwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTUwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlNaW5IZWlnaHQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdpZHRoOgogICAgIGNh
c2UgQ1NTUHJvcGVydHlIZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUN1c3RvbTogLy8gRklY
TUU6IHBhcnNpbmcgYSByZWdpc3RlcmVkIGN1c3RvbSBwcm9wZXJ0eSBzaG91bGQgYmUgYmFzZWQg
b24gaXRzIHN5bnRheC4KICAgICAgICAgcmV0dXJuIGNvbnN1bWVXaWR0aE9ySGVpZ2h0KG1fcmFu
Z2UsIG1fY29udGV4dCwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlNaW5JbmxpbmVTaXplOgogICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5CbG9ja1NpemU6CkBAIC00
MjgwLDY0ICs0MjU2LDYgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFy
c2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1MKICAgICB9CiB9CiAKLWJv
b2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNhblBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNv
bnN0IFN0cmluZyYgc3ludGF4KQotewotICAgIGlmIChzeW50YXggIT0gIioiKSB7Ci0gICAgICAg
IG1fcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKLQotICAgICAgICAvLyBGaXJzdCBjaGVjayBm
b3Iga2V5d29yZHMKLSAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IG1fcmFuZ2UucGVlaygpLmlkKCk7
Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUluaGVyaXQgfHwgaWQgPT0gQ1NTVmFsdWVJbml0
aWFsIHx8IGlkID09IENTU1ZhbHVlUmV2ZXJ0KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICAgICAgYXV0byBsb2NhbFJhbmdlID0gbV9yYW5nZTsKLSAgICAgICAgd2hpbGUgKCFsb2Nh
bFJhbmdlLmF0RW5kKCkpIHsKLSAgICAgICAgICAgIGF1dG8gaWQgPSBsb2NhbFJhbmdlLmNvbnN1
bWUoKS5mdW5jdGlvbklkKCk7Ci0gICAgICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVWYXIgfHwg
aWQgPT0gQ1NTVmFsdWVFbnYpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIEZvciB2
YXJpYWJsZXMsIHdlIGp1c3QgcGVybWl0IGV2ZXJ5dGhpbmcKLSAgICAgICAgfQotCi0gICAgICAg
IGF1dG8gcHJpbWl0aXZlVmFsID0gY29uc3VtZVdpZHRoT3JIZWlnaHQobV9yYW5nZSwgbV9jb250
ZXh0KTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbCAmJiBwcmltaXRpdmVWYWwtPmlzUHJpbWl0
aXZlVmFsdWUoKSAmJiBtX3JhbmdlLmF0RW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi12
b2lkIENTU1Byb3BlcnR5UGFyc2VyOjpjb2xsZWN0UGFyc2VkQ3VzdG9tUHJvcGVydHlWYWx1ZURl
cGVuZGVuY2llcyhjb25zdCBTdHJpbmcmIHN5bnRheCwgYm9vbCBpc1Jvb3QsIEhhc2hTZXQ8Q1NT
UHJvcGVydHlJRD4mIGRlcGVuZGVuY2llcykKLXsKLSAgICBpZiAoc3ludGF4ICE9ICIqIikgewot
ICAgICAgICBtX3JhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7Ci0gICAgICAgIGF1dG8gcHJpbWl0
aXZlVmFsID0gY29uc3VtZVdpZHRoT3JIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0KTsKLSAgICAg
ICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlm
IChwcmltaXRpdmVWYWwgJiYgcHJpbWl0aXZlVmFsLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAg
ICAgICAgICAgIHByaW1pdGl2ZVZhbC0+Y29sbGVjdERpcmVjdENvbXB1dGF0aW9uYWxEZXBlbmRl
bmNpZXMoZGVwZW5kZW5jaWVzKTsKLSAgICAgICAgICAgIGlmIChpc1Jvb3QpCi0gICAgICAgICAg
ICAgICAgcHJpbWl0aXZlVmFsLT5jb2xsZWN0RGlyZWN0Um9vdENvbXB1dGF0aW9uYWxEZXBlbmRl
bmNpZXMoZGVwZW5kZW5jaWVzKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotUmVmUHRyPENTU0N1
c3RvbVByb3BlcnR5VmFsdWU+IENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVR5cGVkQ3VzdG9tUHJv
cGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3ludGF4LCBjb25z
dCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQotewotICAgIGlmIChzeW50YXggIT0gIioi
KSB7Ci0gICAgICAgIG1fcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKLSAgICAgICAgYXV0byBw
cmltaXRpdmVWYWwgPSBjb25zdW1lV2lkdGhPckhlaWdodChtX3JhbmdlLCBtX2NvbnRleHQpOwot
ICAgICAgICBpZiAocHJpbWl0aXZlVmFsICYmIHByaW1pdGl2ZVZhbC0+aXNQcmltaXRpdmVWYWx1
ZSgpKQotICAgICAgICAgICAgcmV0dXJuIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVN5
bnRheExlbmd0aChuYW1lLCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgoc3R5
bGVSZXNvbHZlciwgKnByaW1pdGl2ZVZhbCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8g
cHJvcGVydHlWYWx1ZSA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVN5bnRheEFsbChu
YW1lLCBDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZShtX3JhbmdlKSk7Ci0gICAgICAgIHdoaWxlICgh
bV9yYW5nZS5hdEVuZCgpKQotICAgICAgICAgICAgbV9yYW5nZS5jb25zdW1lKCk7Ci0gICAgICAg
IHJldHVybiB7IFdURk1vdmUocHJvcGVydHlWYWx1ZSkgfTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
bnVsbHB0cjsKLX0KLQogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNvbnN1bWVGb250RmFj
ZVVuaWNvZGVSYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICBSZWZQdHI8
Q1NTVmFsdWVMaXN0PiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmgKaW5k
ZXggMWRjMDVlZjg4ZGFjMjYwYWU2MTA3MjI5YjhkYTk2Y2M0YjE3ZTc3NC4uN2RiNzQ1M2MwZDg0
OTllYTEzZTAwZDk3Y2YyZTBjNTI0ZjQ1OGIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuaApAQCAtMzIsNyArMzIsNiBAQCBjbGFzcyBDU1NQcm9w
ZXJ0eTsKIGNsYXNzIENTU1ZhbHVlOwogY2xhc3MgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZDsKIGNs
YXNzIFN0eWxlU2hlZXRDb250ZW50czsKLWNsYXNzIFN0eWxlUmVzb2x2ZXI7CiAgICAgCiAvLyBJ
bnB1dHM6IFByb3BlcnR5SUQsIGlzSW1wb3J0YW50IGJvb2wsIENTU1BhcnNlclRva2VuUmFuZ2Uu
CiAvLyBPdXRwdXRzOiBWZWN0b3Igb2YgQ1NTUHJvcGVydGllcwpAQCAtNDYsMjAgKzQ1LDE0IEBA
IHB1YmxpYzoKIAogICAgIC8vIFBhcnNlcyBhIG5vbi1zaG9ydGhhbmQgQ1NTIHByb3BlcnR5CiAg
ICAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlE
LCBjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOwot
ICAgIHN0YXRpYyBib29sIGNhblBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0
cmluZyYgc3ludGF4LCBjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiwgY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYpOwotICAgIHN0YXRpYyBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gcGFy
c2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHN5bnRheCwgY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IFN0eWxlUmVzb2x2
ZXImLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7Ci0gICAgc3RhdGljIHZvaWQgY29sbGVjdFBh
cnNlZEN1c3RvbVByb3BlcnR5VmFsdWVEZXBlbmRlbmNpZXMoY29uc3QgU3RyaW5nJiBzeW50YXgs
IGJvb2wgaXNSb290LCBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+JiBkZXBlbmRlbmNpZXMsIGNvbnN0
IENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CiAKIHByaXZh
dGU6Ci0gICAgQ1NTUHJvcGVydHlQYXJzZXIoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNv
bnN0IENTU1BhcnNlckNvbnRleHQmLCBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4qLCBib29sIGNv
bnN1bWVXaGl0ZXNwYWNlID0gdHJ1ZSk7CisgICAgQ1NTUHJvcGVydHlQYXJzZXIoY29uc3QgQ1NT
UGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBWZWN0b3I8Q1NTUHJv
cGVydHksIDI1Nj4qKTsKIAogICAgIC8vIEZJWE1FOiBSZW5hbWUgb25jZSB0aGUgQ1NTUGFyc2Vy
VmFsdWUtYmFzZWQgcGFyc2VWYWx1ZSBpcyByZW1vdmVkCiAgICAgYm9vbCBwYXJzZVZhbHVlU3Rh
cnQoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgY29uc3VtZUNTU1dp
ZGVLZXl3b3JkKENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50KTsKICAgICBSZWZQdHI8Q1NT
VmFsdWU+IHBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJRCwgQ1NTUHJvcGVydHlJRCA9IENT
U1Byb3BlcnR5SW52YWxpZCk7Ci0gICAgYm9vbCBjYW5QYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlW
YWx1ZShjb25zdCBTdHJpbmcmIHN5bnRheCk7Ci0gICAgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5
VmFsdWU+IHBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBzeW50YXgsIGNvbnN0IFN0eWxlUmVzb2x2ZXImKTsKLSAgICB2b2lkIGNv
bGxlY3RQYXJzZWRDdXN0b21Qcm9wZXJ0eVZhbHVlRGVwZW5kZW5jaWVzKGNvbnN0IFN0cmluZyYg
c3ludGF4LCBib29sIGlzUm9vdCwgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiYgZGVwZW5kZW5jaWVz
KTsKIAogICAgIGJvb2wgaW5RdWlya3NNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0Lm1v
ZGUgPT0gSFRNTFF1aXJrc01vZGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NWYXJpYWJsZVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1ZhcmlhYmxlUGFyc2VyLmNwcAppbmRleCAxYmUyM2I5ZmVjOGY1ZWNkYWQ0ZWI4NDQ4NTNm
OWUwMmNhNWE5MjBkLi44NzA4NmUzNmFiODBkMWQ1ODM5NmJjYWFmOTQ5MTIzM2JkNWQyMjIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1ZhcmlhYmxlUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1ZhcmlhYmxlUGFyc2VyLmNwcApA
QCAtMTg5LDggKzE4OSw4IEBAIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBDU1NWYXJp
YWJsZVBhcnNlcjo6cGFyc2VEZWNsYXJhdGlvblZhbHVlKGNvbnN0IEF0CiAgICAgaWYgKHR5cGUg
PT0gQ1NTVmFsdWVJbnZhbGlkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAodHlw
ZSA9PSBDU1NWYWx1ZUludGVybmFsVmFyaWFibGVWYWx1ZSkKLSAgICAgICAgcmV0dXJuIENTU0N1
c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVVucmVzb2x2ZWQodmFyaWFibGVOYW1lLCBDU1NWYXJp
YWJsZVJlZmVyZW5jZVZhbHVlOjpjcmVhdGUocmFuZ2UpKTsKLSAgICByZXR1cm4gQ1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZTo6Y3JlYXRlVW5yZXNvbHZlZCh2YXJpYWJsZU5hbWUsIHR5cGUpOworICAg
ICAgICByZXR1cm4gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlV2l0aFZhcmlhYmxlRGF0
YSh2YXJpYWJsZU5hbWUsIENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRlKHJhbmdlLCBoYXNSZWZlcmVu
Y2VzIHx8IGhhc0F0QXBwbHlSdWxlKSk7CisgICAgcmV0dXJuIENTU0N1c3RvbVByb3BlcnR5VmFs
dWU6OmNyZWF0ZVdpdGhJRCh2YXJpYWJsZU5hbWUsIHR5cGUpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29uc3RhbnRQcm9wZXJ0
eU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29uc3RhbnRQcm9wZXJ0eU1hcC5jcHAKaW5k
ZXggNmMxMDhjODg4NzE1ZjY3ZmE5ODE4NjAwYWJkYjE1MTA0ZmFhYzJmMC4uOTBmZDEzOTMxYjcw
NDFlMjliOWY2NzlhYzNhMWQxMzQ4YzYyMGI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnN0YW50UHJvcGVydHlNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db25z
dGFudFByb3BlcnR5TWFwLmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIENvbnN0YW50UHJvcGVy
dHlNYXA6OnNldFZhbHVlRm9yUHJvcGVydHkoQ29uc3RhbnRQcm9wZXJ0eSBwcm9wZXJ0eSwgUmVm
PENTUwogICAgICAgICBidWlsZFZhbHVlcygpOwogCiAgICAgYXV0byYgbmFtZSA9IG5hbWVGb3JQ
cm9wZXJ0eShwcm9wZXJ0eSk7Ci0gICAgbV92YWx1ZXMtPnNldChuYW1lLCBDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlOjpjcmVhdGVTeW50YXhBbGwobmFtZSwgV1RGTW92ZShkYXRhKSkpOworICAgIG1f
dmFsdWVzLT5zZXQobmFtZSwgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlV2l0aFZhcmlh
YmxlRGF0YShuYW1lLCBXVEZNb3ZlKGRhdGEpKSk7CiB9CiAKIHZvaWQgQ29uc3RhbnRQcm9wZXJ0
eU1hcDo6YnVpbGRWYWx1ZXMoKQpAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFy
aWFibGVEYXRhPiB2YXJpYWJsZURhdGFGb3JQb3NpdGl2ZVBpeGVsTGVuZ3RoKGZsb2F0IGxlbmd0
aEluUHgpCiAKICAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHRva2VucyB7IHRva2VuIH07CiAg
ICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSB0b2tlblJhbmdlKHRva2Vucyk7Ci0gICAgcmV0dXJuIENT
U1ZhcmlhYmxlRGF0YTo6Y3JlYXRlKHRva2VuUmFuZ2UpOworICAgIHJldHVybiBDU1NWYXJpYWJs
ZURhdGE6OmNyZWF0ZSh0b2tlblJhbmdlLCBmYWxzZSk7CiB9CiAKIHN0YXRpYyBSZWY8Q1NTVmFy
aWFibGVEYXRhPiB2YXJpYWJsZURhdGFGb3JQb3NpdGl2ZUR1cmF0aW9uKFNlY29uZHMgZHVyYXRp
b25JblNlY29uZHMpCkBAIC0xMjIsNyArMTIyLDcgQEAgc3RhdGljIFJlZjxDU1NWYXJpYWJsZURh
dGE+IHZhcmlhYmxlRGF0YUZvclBvc2l0aXZlRHVyYXRpb24oU2Vjb25kcyBkdXJhdGlvbkluU2UK
IAogICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gdG9rZW5zIHsgdG9rZW4gfTsKICAgICBDU1NQ
YXJzZXJUb2tlblJhbmdlIHRva2VuUmFuZ2UodG9rZW5zKTsKLSAgICByZXR1cm4gQ1NTVmFyaWFi
bGVEYXRhOjpjcmVhdGUodG9rZW5SYW5nZSk7CisgICAgcmV0dXJuIENTU1ZhcmlhYmxlRGF0YTo6
Y3JlYXRlKHRva2VuUmFuZ2UsIGZhbHNlKTsKIH0KIAogdm9pZCBDb25zdGFudFByb3BlcnR5TWFw
Ojp1cGRhdGVDb25zdGFudHNGb3JTYWZlQXJlYUluc2V0cygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCBjODUyNTg4NTAyNDc3MGQ5YzVi
NWQ0OTE5ZWQ2NWJjNmViMTE5NTc3Li5kYjg1ZDdkMDkzZjUyODRjYmViODAyZWU4NzAwODA4ZTM5
MmE3MWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAKQEAgLTIyOTksNiArMjI5OSw4OSBAQCBib29sIFJlbmRlclN0eWxlOjpoYXNSZWZlcmVu
Y2VGaWx0ZXJPbmx5KCkgY29uc3QKICAgICByZXR1cm4gZmlsdGVyT3BlcmF0aW9ucy5zaXplKCkg
PT0gMSAmJiBmaWx0ZXJPcGVyYXRpb25zLmF0KDApLT50eXBlKCkgPT0gRmlsdGVyT3BlcmF0aW9u
OjpSRUZFUkVOQ0U7CiB9CiAKK3ZvaWQgUmVuZGVyU3R5bGU6OmNoZWNrVmFyaWFibGVzSW5DdXN0
b21Qcm9wZXJ0aWVzKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYgcmVnaXN0
ZXJlZFByb3BlcnRpZXMsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgY29uc3QgU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKK3sKKyAgICBib29sIHNob3VsZFVwZGF0ZUluaGVy
aXRlZCA9IG1fcmFyZUluaGVyaXRlZERhdGEtPmN1c3RvbVByb3BlcnRpZXMtPmNvbnRhaW5zVmFy
aWFibGVzIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPmN1c3RvbVByb3BlcnRpZXMtPmNvbnRhaW5z
VW5yZXNvbHZlZFJlZ2lzdGVyZWRQcm9wZXJ0aWVzOworICAgIGJvb2wgc2hvdWxkVXBkYXRlTm9u
SW5oZXJpdGVkID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y3VzdG9tUHJvcGVydGllcy0+Y29u
dGFpbnNWYXJpYWJsZXMgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y3VzdG9tUHJvcGVydGll
cy0+Y29udGFpbnNVbnJlc29sdmVkUmVnaXN0ZXJlZFByb3BlcnRpZXM7CisgICAgYXV0byogaW5o
ZXJpdGVkUHJvcGVydHlEYXRhID0gc2hvdWxkVXBkYXRlSW5oZXJpdGVkID8gJm1fcmFyZUluaGVy
aXRlZERhdGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKSA6IG51bGxwdHI7Cisg
ICAgYXV0byogbm9uSW5oZXJpdGVkUHJvcGVydHlEYXRhID0gc2hvdWxkVXBkYXRlTm9uSW5oZXJp
dGVkID8gJm1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5h
Y2Nlc3MoKSA6IG51bGxwdHI7CisKKyAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4gaW52YWxpZFBy
b3BlcnRpZXM7CisKKyAgICBmb3IgKGF1dG8qIGN1c3RvbVByb3BlcnR5RGF0YSA6IHsgaW5oZXJp
dGVkUHJvcGVydHlEYXRhLCBub25Jbmhlcml0ZWRQcm9wZXJ0eURhdGEgfSkgeworICAgICAgICBp
ZiAoIWN1c3RvbVByb3BlcnR5RGF0YSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IC8vIE91ciBmaXJzdCBwYXNzIGNoZWNrcyB0aGUgdmFyaWFibGVzIGZvciB2YWxpZGl0eSBhbmQg
cmVwbGFjZXMgYW55IHByb3BlcnRpZXMgdGhhdCBiZWNhbWUKKyAgICAgICAgLy8gaW52YWxpZCB3
aXRoIGVtcHR5IHZhbHVlcy4KKyAgICAgICAgYXV0byYgY3VzdG9tUHJvcGVydGllcyA9IGN1c3Rv
bVByb3BlcnR5RGF0YS0+dmFsdWVzOworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogY3VzdG9t
UHJvcGVydGllcykgeworICAgICAgICAgICAgaWYgKCFlbnRyeS52YWx1ZS0+Y29udGFpbnNWYXJp
YWJsZXMoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIEhhc2hTZXQ8
QXRvbWljU3RyaW5nPiBzZWVuUHJvcGVydGllczsKKyAgICAgICAgICAgIGVudHJ5LnZhbHVlLT5j
aGVja1ZhcmlhYmxlc0ZvckN5Y2xlcyhlbnRyeS5rZXksICp0aGlzLCBzZWVuUHJvcGVydGllcywg
aW52YWxpZFByb3BlcnRpZXMpOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBpbnZhbGlkVmFs
dWUgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVJbnZhbGlkKCk7CisKKyAgICAgICAg
Ly8gTm93IGluc2VydCBpbnZhbGlkIHZhbHVlcywgb3IgZGVmYXVsdHMgaWYgdGhlIHByb3BlcnR5
IGlzIHJlZ2lzdGVyZWQuCisgICAgICAgIGlmICghaW52YWxpZFByb3BlcnRpZXMuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogaW52YWxpZFByb3BlcnRpZXMp
IHsKKyAgICAgICAgICAgICAgICBpZiAoIWN1c3RvbVByb3BlcnRpZXMuY29udGFpbnMocHJvcGVy
dHkpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBjb25zdCBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4qIHBhcmVu
dFByb3BlcnR5ID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IHBhcmVudFN0eWxlLT5pbmhlcml0
ZWRDdXN0b21Qcm9wZXJ0aWVzKCkuZmluZChwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChpdGVyYXRvciAhPSBwYXJlbnRTdHlsZS0+aW5oZXJpdGVkQ3VzdG9tUHJvcGVydGllcygp
LmVuZCgpICYmIGl0ZXJhdG9yLmdldCgpICYmIGl0ZXJhdG9yLmdldCgpLT52YWx1ZSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmVudFByb3BlcnR5ID0gJml0ZXJhdG9yLmdldCgpLT52YWx1
ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBhdXRvKiByZWdpc3RlcmVk
ID0gcmVnaXN0ZXJlZFByb3BlcnRpZXMuZ2V0KHByb3BlcnR5KTsKKworICAgICAgICAgICAgICAg
IGlmIChyZWdpc3RlcmVkICYmIHJlZ2lzdGVyZWQtPmluaGVyaXRzICYmIHBhcmVudFByb3BlcnR5
KQorICAgICAgICAgICAgICAgICAgICBjdXN0b21Qcm9wZXJ0aWVzLnNldChwcm9wZXJ0eSwgcGFy
ZW50UHJvcGVydHktPmNvcHlSZWYoKSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVnaXN0
ZXJlZCAmJiByZWdpc3RlcmVkLT5pbml0aWFsVmFsdWUoKSkKKyAgICAgICAgICAgICAgICAgICAg
Y3VzdG9tUHJvcGVydGllcy5zZXQocHJvcGVydHksIHJlZ2lzdGVyZWQtPmluaXRpYWxWYWx1ZUNv
cHkoKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBjdXN0b21Q
cm9wZXJ0aWVzLnNldChwcm9wZXJ0eSwgaW52YWxpZFZhbHVlLmNvcHlSZWYoKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBOb3cgdGhhdCBhbGwgb2YgdGhlIHByb3Bl
cnRpZXMgaGF2ZSBiZWVuIHRlc3RlZCBmb3IgdmFsaWRpdHkgYW5kIHJlcGxhY2VkIHdpdGgKKyAg
ICAgICAgLy8gaW52YWxpZCB2YWx1ZXMgaWYgdGhleSBmYWlsZWQsIHdlIGNhbiBwZXJmb3JtIHZh
cmlhYmxlIHN1YnN0aXR1dGlvbiBvbiB0aGUgdmFsaWQgdmFsdWVzLgorICAgICAgICBWZWN0b3I8
UmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+PiByZXNvbHZlZFZhbHVlczsKKyAgICAgICAgZm9y
IChhdXRvIGVudHJ5IDogY3VzdG9tUHJvcGVydGllcykgeworICAgICAgICAgICAgaWYgKCFlbnRy
eS52YWx1ZS0+Y29udGFpbnNWYXJpYWJsZXMoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIGVudHJ5LnZhbHVlLT5yZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKHJlZ2lz
dGVyZWRQcm9wZXJ0aWVzLCByZXNvbHZlZFZhbHVlcywgKnRoaXMpOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gV2l0aCBhbGwgcmVzdWx0cyBjb21wdXRlZCwgd2UgY2FuIG5vdyBtdXRhdGUgb3Vy
IHRhYmxlIHRvIGVsaW1pbmF0ZSB0aGUgdmFyaWFibGVzIGFuZAorICAgICAgICAvLyBob2xkIHRo
ZSBmaW5hbCB2YWx1ZXMuIFRoaXMgd2F5IHdoZW4gd2UgaW5oZXJpdCwgd2UgZG9uJ3QgZW5kIHVw
IHJlc3Vic3RpdHV0aW5nIHZhcmlhYmxlcywgZXRjLgorICAgICAgICBmb3IgKGF1dG8mIHJlc29s
dmVkVmFsdWUgOiByZXNvbHZlZFZhbHVlcykKKyAgICAgICAgICAgIGN1c3RvbVByb3BlcnRpZXMu
c2V0KHJlc29sdmVkVmFsdWUtPm5hbWUoKSwgcmVzb2x2ZWRWYWx1ZS5jb3B5UmVmKCkpOworCisg
ICAgICAgIC8vIEZpbmFsbHkgd2UgY2FuIHJlc29sdmUgcmVnaXN0ZXJlZCBjdXN0b20gcHJvcGVy
dGllcyB0byB0aGVpciB0eXBlZCB2YWx1ZXMuCisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBj
dXN0b21Qcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICBhdXRvJiBuYW1lID0gZW50cnkudmFsdWUt
Pm5hbWUoKTsKKyAgICAgICAgICAgIGF1dG8qIHJlZ2lzdGVyZWQgPSByZWdpc3RlcmVkUHJvcGVy
dGllcy5nZXQobmFtZSk7CisKKyAgICAgICAgICAgIGlmICghcmVnaXN0ZXJlZCkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgYXV0byBwcmltaXRpdmVWYWwgPSBzdHls
ZVJlc29sdmVyLnJlc29sdmVkVmFyaWFibGVWYWx1ZShDU1NQcm9wZXJ0eUN1c3RvbSwgKmVudHJ5
LnZhbHVlKTsKKyAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsIHx8ICFwcmltaXRpdmVWYWwt
PmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgICAgICAgICBlbnRyeS52YWx1ZSA9IGludmFs
aWRWYWx1ZS5jb3B5UmVmKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW50
cnkudmFsdWUtPnNldFJlc29sdmVkVHlwZWRWYWx1ZShTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRMZW5ndGgoc3R5bGVSZXNvbHZlciwgKnByaW1pdGl2ZVZhbCkpOworICAgICAgICB9CisK
KyAgICAgICAgY3VzdG9tUHJvcGVydHlEYXRhLT5jb250YWluc1ZhcmlhYmxlcyA9IGZhbHNlOwor
ICAgICAgICBjdXN0b21Qcm9wZXJ0eURhdGEtPmNvbnRhaW5zVW5yZXNvbHZlZFJlZ2lzdGVyZWRQ
cm9wZXJ0aWVzID0gZmFsc2U7CisgICAgfQorfQorCiBmbG9hdCBSZW5kZXJTdHlsZTo6b3V0bGlu
ZVdpZHRoKCkgY29uc3QKIHsKICAgICBpZiAobV9iYWNrZ3JvdW5kRGF0YS0+b3V0bGluZS5zdHls
ZSgpID09IEJvcmRlclN0eWxlOjpOb25lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAppbmRleCA3MDhlNmJmMDE0MjdjZTFmMDgyY2QxNWFjYjFjM2UwNmQx
M2I4MjM0Li5kZDI0MmU3NmQzZTgxMDljYjg5MDc4NTc5YjJjOGFiNDFiZDg3ZTUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMTg2LDggKzE4
Niw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBDdXN0b21Qcm9wZXJ0eVZhbHVlTWFwJiBpbmhlcml0
ZWRDdXN0b21Qcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+
Y3VzdG9tUHJvcGVydGllcy0+dmFsdWVzOyB9CiAgICAgY29uc3QgQ3VzdG9tUHJvcGVydHlWYWx1
ZU1hcCYgbm9uSW5oZXJpdGVkQ3VzdG9tUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmN1c3RvbVByb3BlcnRpZXMtPnZhbHVlczsgfQogICAgIGNvbnN0
IENTU0N1c3RvbVByb3BlcnR5VmFsdWUqIGdldEN1c3RvbVByb3BlcnR5KGNvbnN0IEF0b21pY1N0
cmluZyYpIGNvbnN0OwotICAgIHZvaWQgc2V0SW5oZXJpdGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiYmIHZh
bHVlKSB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLmN1c3RvbVByb3BlcnRp
ZXMuYWNjZXNzKCkuc2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBXVEZNb3ZlKHZhbHVlKSk7
IH0KLSAgICB2b2lkIHNldE5vbkluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2YWx1ZSkgeyBy
ZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXN0b21Qcm9wZXJ0aWVzLmFj
Y2VzcygpLnNldEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgV1RGTW92ZSh2YWx1ZSkpOyB9Cisg
ICAgdm9pZCBzZXRJbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYgdmFsdWUsIGJvb2wgaXNSZWdp
c3RlcmVkID0gZmFsc2UpIHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3Vz
dG9tUHJvcGVydGllcy5hY2Nlc3MoKS5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1v
dmUodmFsdWUpLCBpc1JlZ2lzdGVyZWQpOyB9CisgICAgdm9pZCBzZXROb25Jbmhlcml0ZWRDdXN0
b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENTU0N1c3RvbVBy
b3BlcnR5VmFsdWU+JiYgdmFsdWUsIGJvb2wgaXNSZWdpc3RlcmVkID0gZmFsc2UpIHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nlc3Mo
KS5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1vdmUodmFsdWUpLCBpc1JlZ2lzdGVy
ZWQpOyB9CiAKICAgICB2b2lkIHNldEhhc1ZpZXdwb3J0VW5pdHMoYm9vbCB2ID0gdHJ1ZSkgeyBt
X25vbkluaGVyaXRlZEZsYWdzLmhhc1ZpZXdwb3J0VW5pdHMgPSB2OyB9CiAgICAgYm9vbCBoYXNW
aWV3cG9ydFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9ub25Jbmhlcml0ZWRGbGFncy5oYXNWaWV3
cG9ydFVuaXRzOyB9CkBAIC03OTUsNiArNzk1LDggQEAgcHVibGljOgogICAgIEFwcGxlUGF5QnV0
dG9uVHlwZSBhcHBsZVBheUJ1dHRvblR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxB
cHBsZVBheUJ1dHRvblR5cGU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFwcGxlUGF5QnV0dG9u
VHlwZSk7IH0KICNlbmRpZgogCisgICAgdm9pZCBjaGVja1ZhcmlhYmxlc0luQ3VzdG9tUHJvcGVy
dGllcyhjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQmLCBjb25zdCBSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFN0eWxlUmVzb2x2ZXImKTsKKwogLy8gYXR0cmlidXRl
IHNldHRlciBtZXRob2RzCiAKICAgICB2b2lkIHNldERpc3BsYXkoRGlzcGxheVR5cGUgdikgeyBt
X25vbkluaGVyaXRlZEZsYWdzLmVmZmVjdGl2ZURpc3BsYXkgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4odik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUN1c3RvbVByb3BlcnR5RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgKaW5kZXggMTMyZTZmNTI1NjBlNjVjYWM1NGU0YzViNTNm
ZDdkNDEwMzVmNzVmYS4uMWJjZGIyMmU4ZTlkM2JjMzk0MTEzMDQ4NDI4ZGIzZTY4Nzg1ODJkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJv
cGVydHlEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3Vz
dG9tUHJvcGVydHlEYXRhLmgKQEAgLTIyLDcgKzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIgotI2luY2x1ZGUgIkNTU1ZhcmlhYmxlUmVm
ZXJlbmNlVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTM4LDYgKzM3LDkgQEAg
cHVibGljOgogICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUN1c3RvbVByb3Bl
cnR5RGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgeworICAgICAgICBpZiAoY29udGFpbnNWYXJpYWJs
ZXMgIT0gb3RoZXIuY29udGFpbnNWYXJpYWJsZXMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKICAgICAgICAgaWYgKHZhbHVlcy5zaXplKCkgIT0gb3RoZXIudmFsdWVzLnNpemUoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTIsMTggKzU0LDI2IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAgCi0gICAgdm9pZCBzZXRD
dXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU+JiYgdmFsdWUpCisgICAgdm9pZCBzZXRDdXN0b21Qcm9wZXJ0eVZhbHVl
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYg
dmFsdWUsIGJvb2wgaXNSZWdpc3RlcmVkKQogICAgIHsKKyAgICAgICAgaWYgKHZhbHVlLT5jb250
YWluc1ZhcmlhYmxlcygpKQorICAgICAgICAgICAgY29udGFpbnNWYXJpYWJsZXMgPSB0cnVlOwor
ICAgICAgICBpZiAoaXNSZWdpc3RlcmVkKQorICAgICAgICAgICAgY29udGFpbnNVbnJlc29sdmVk
UmVnaXN0ZXJlZFByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICB2YWx1ZXMuc2V0KG5hbWUsIFdU
Rk1vdmUodmFsdWUpKTsKICAgICB9CiAKICAgICBDdXN0b21Qcm9wZXJ0eVZhbHVlTWFwIHZhbHVl
czsKKyAgICBib29sIGNvbnRhaW5zVmFyaWFibGVzIHsgZmFsc2UgfTsKKyAgICBib29sIGNvbnRh
aW5zVW5yZXNvbHZlZFJlZ2lzdGVyZWRQcm9wZXJ0aWVzIHsgZmFsc2UgfTsKIAogcHJpdmF0ZToK
ICAgICBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSgpID0gZGVmYXVsdDsKICAgICBTdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YShjb25zdCBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSYgb3RoZXIpCiAgICAg
ICAgIDogUmVmQ291bnRlZDxTdHlsZUN1c3RvbVByb3BlcnR5RGF0YT4oKQogICAgICAgICAsIHZh
bHVlcyhvdGhlci52YWx1ZXMpCisgICAgICAgICwgY29udGFpbnNWYXJpYWJsZXMob3RoZXIuY29u
dGFpbnNWYXJpYWJsZXMpCisgICAgICAgICwgY29udGFpbnNVbnJlc29sdmVkUmVnaXN0ZXJlZFBy
b3BlcnRpZXMob3RoZXIuY29udGFpbnNVbnJlc29sdmVkUmVnaXN0ZXJlZFByb3BlcnRpZXMpCiAg
ICAgeyB9CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWI1ODBkOTQ5MDExZjQ2NDEzYmRjNjNmODQ4OTQ3NjIwNzI0
MDU0Yy4uZjRhMDZhOWNkZTIwYzQ3NzBlYzlhY2QwZjZiODVjZWNiMTk4OTRlZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDE4LTEwLTI1ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVk
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZlcnQgcjIzNzM0NyByZWdpc3RlcmVkIGN1c3RvbSBw
cm9wZXJ0aWVzLi4uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAw
MzkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDkx
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3Nz
LWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jcmFzaC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jcmFzaC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3ljbGVzLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiBjc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvaW5saW5lLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBjc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2lu
bGluZS5odG1sOiBSZW1vdmVkLgorCiAyMDE4LTEwLTI2ICBDb21taXQgUXVldWUgIDxjb21taXQt
cXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM3
NDc5IGFuZCByMjM3NDg0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggM2YwYWMw
OTU2ZTAxYzYyMzM0MmIyNGVkY2NmZTQ2NTdjMjk0YzhkMS4uZTcxNDcxM2I3ZWQ4ZWY0YTU1NmYw
OGIwNjBlM2M4NDJmODk4YzZkYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTgtMTAtMjUgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmVydCByMjM3MzQ3IHJlZ2lzdGVyZWQgY3VzdG9tIHBy
b3BlcnRpZXMuLi4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDAz
OQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwOTE5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXItcHJv
cGVydHktc3ludGF4LXBhcnNpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnRp
ZXMtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnR5LWNzc29t
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9w
ZXJ0aWVzLXZhbHVlcy1hcGkvdHlwZWRvbS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXIt
cmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1jeWNsZXMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92
YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisKIDIwMTgt
MTAtMjYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2Vi
IEFuaW1hdGlvbnNdIFJlYmFzZSBzb21lIGZsYWt5IHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2NyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3Jhc2gtZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWYwZmY1ZTkwMDcxZGU5OWVmMGFiZjg5Yjg3ODAy
NmJkZDEwYjIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3Jhc2gtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1UaGlzIGlzIHRleHQKLQotCi1QQVNTIEZh
bGxiYWNrIGlzIGhhbmRsZWQgY29ycmVjdGx5LCBhbmQgd2UgZG9uJ3QgY3Jhc2ggCi1QQVNTIFNl
dHRpbmcgdGhlIGlubGluZSBzdHlsZSBpcyBoYW5kbGVkIGNvcnJlY3RseSAKLVBBU1MgQ1NTLnJl
Z2lzdGVyUHJvcGVydHkgCi1QQVNTIFNldHRpbmcgdGhlIGlubGluZSBzdHlsZSBpcyBoYW5kbGVk
IGNvcnJlY3RseSB3aGVuIHJlZ2lzdGVyZWQgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nz
cy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL2Nzcy1jdXN0
b20tcHJvcGVydGllcy1hcGkvY3Jhc2guaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggN2YyY2Q3MGEyYTMxZGVhYjk5ZjAwMzJjNDFmZWE3YTVjOGFiN2Y5Yi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9t
LXByb3BlcnRpZXMtYXBpL2NyYXNoLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpD
U1NDdXN0b21Qcm9wZXJ0aWVzQW5kVmFsdWVzRW5hYmxlZD10cnVlIF0gLS0+Ci08IS0tIGh0dHBz
Oi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMvKy8wMWNlNDMxNDA5ZTNh
MDE5ODU4Njc3NjI2YTk4M2M1NTE2OGRhNmRjL3RoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0
cy9jdXN0b20tcHJvcGVydGllcy9yZWdpc3Rlci1wcm9wZXJ0eS5odG1sIC0tPgotPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLQotPHN0eWxlPgot
ICAjdGVzdDEgewotICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9vLCAzMHB4KTsKLSAgICAtLWZvbzog
dmFyKC0tYmFyLCAyMHB4KTsKLSAgICAtLWJhcjogdmFyKC0tYmF6LCB2YXIoLS1mb28pKTsKLSAg
fQotPC9zdHlsZT4KLTxkaXY+Ci0gIDxoMiBpZD10ZXN0MT5UaGlzIGlzIHRleHQ8L2gyPgotPC9k
aXY+Ci08c2NyaXB0PgotdmFyIGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHRlc3Qx
KTsKLXZhciBpbmxpbmVTdHlsZSA9IHRlc3QxLnN0eWxlOwotCi10ZXN0KGZ1bmN0aW9uKCkgewot
ICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXonKSwg
JycpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1m
b28nKSwgJycpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgnLS1iYXInKSwgJycpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVy
dHlWYWx1ZSgnZm9udC1zaXplJyksICczMHB4Jyk7Ci19LCAiRmFsbGJhY2sgaXMgaGFuZGxlZCBj
b3JyZWN0bHksIGFuZCB3ZSBkb24ndCBjcmFzaCIpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICBp
bmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1iYXonLCAnICAgNDBweCcpOwotICBhc3NlcnRfZXF1
YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXonKSwgJyA0MHB4Jyk7Ci0g
IGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWZvbycpLCAn
Jyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJh
cicpLCAnJyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KCctLWJheicpLCAnIDQwcHgnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFBy
b3BlcnR5VmFsdWUoJ2ZvbnQtc2l6ZScpLCAnMzBweCcpOwotICBpbmxpbmVTdHlsZS5yZW1vdmVQ
cm9wZXJ0eSgnLS1iYXonKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3Bl
cnR5VmFsdWUoJy0tYmF6JyksICcnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdl
dFByb3BlcnR5VmFsdWUoJy0tZm9vJyksICcnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0
eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmFyJyksICcnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21w
dXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtc2l6ZScpLCAnMzBweCcpOwotICBhc3Nl
cnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXonKSwgJycpOwot
fSwgIlNldHRpbmcgdGhlIGlubGluZSBzdHlsZSBpcyBoYW5kbGVkIGNvcnJlY3RseSIpOwotCi10
ZXN0KGZ1bmN0aW9uKCkgewotICBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJy0tZm9vJywg
c3ludGF4OiAnPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6ICcyMDBweCcsIGluaGVyaXRzOiB0cnVl
fSk7Ci0gIENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnLS1iYXInLCBzeW50YXg6ICc8bGVu
Z3RoPicsIGluaXRpYWxWYWx1ZTogJzIwMHB4JywgaW5oZXJpdHM6IHRydWV9KTsKLSAgQ1NTLnJl
Z2lzdGVyUHJvcGVydHkoe25hbWU6ICctLWJheicsIHN5bnRheDogJzxsZW5ndGg+JywgaW5pdGlh
bFZhbHVlOiAnMjAwcHgnLCBpbmhlcml0czogdHJ1ZX0pOwotfSwgIkNTUy5yZWdpc3RlclByb3Bl
cnR5Iik7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIGlubGluZVN0eWxlLnNldFByb3BlcnR5KCct
LWJheicsICcgICA0MHB4Jyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9w
ZXJ0eVZhbHVlKCctLWJheicpLCAnNDBweCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1mb28nKSwgJzIwMHB4Jyk7Ci0gIGFzc2VydF9lcXVhbHMo
Y29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJhcicpLCAnMjAwcHgnKTsKLSAgYXNz
ZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmF6JyksICc0MHB4
Jyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250
LXNpemUnKSwgJzIwMHB4Jyk7Ci0gIGlubGluZVN0eWxlLnJlbW92ZVByb3BlcnR5KCctLWJheicp
OwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXon
KSwgJzIwMHB4Jyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZh
bHVlKCctLWZvbycpLCAnMjAwcHgnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdl
dFByb3BlcnR5VmFsdWUoJy0tYmFyJyksICcyMDBweCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1
dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udC1zaXplJyksICcyMDBweCcpOwotICBhc3Nl
cnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXonKSwgJzIwMHB4
Jyk7Ci19LCAiU2V0dGluZyB0aGUgaW5saW5lIHN0eWxlIGlzIGhhbmRsZWQgY29ycmVjdGx5IHdo
ZW4gcmVnaXN0ZXJlZCIpOwotCi08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nz
cy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3ljbGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3ljbGVzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q0ODZlYjIwYTY5YjlhNTk5NTEwOWJlMDhiYjM0NWU0NGY5
NjgwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi10ZXN0Ci0KLXRlc3QKLQotdGVzdAotCi10ZXN0
Ci0KLXRlc3QKLQotCi1QQVNTIFJlZ2lzdHJhdGlvbiBpcyBzdWNjZXNzZnVsIAotUEFTUyBKUyBB
dHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCAxIAotUEFTUyBKUyBBdHRyaWJ1dGVzIGFy
ZSB2YWxpZCBmb3IgZWxlbWVudCAyIAotUEFTUyBKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3Ig
ZWxlbWVudCAzIAotUEFTUyBKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCA0IAot
UEFTUyBKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCA1IAotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy5odG1sIGIvTGF5
b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jeWNsZXMuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNmVjMjRjODg0NDg5YjM4OTkyYzVkNjJhZDc1NjJlZmRkMDJi
YzkyYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTMwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVu
bmVyIFsgZXhwZXJpbWVudGFsOkNTU0N1c3RvbVByb3BlcnRpZXNBbmRWYWx1ZXNFbmFibGVkPXRy
dWUgXSAtLT4KLTwhLS0gaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVt
L3NyYy8rLzAxY2U0MzE0MDllM2EwMTk4NTg2Nzc2MjZhOTgzYzU1MTY4ZGE2ZGMvdGhpcmRfcGFy
dHkvV2ViS2l0L0xheW91dFRlc3RzL2N1c3RvbS1wcm9wZXJ0aWVzL3JlZ2lzdGVyLXByb3BlcnR5
Lmh0bWwgLS0+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgotCi08c3R5bGU+Ci0gICNwYXJlbnQxIHsKLSAgICB3aWR0aDogNTAwcHg7Ci0gICAg
YmFja2dyb3VuZDogYmx1ZTsKLSAgfQotICAjY2hpbGQxIHsKLSAgICBiYWNrZ3JvdW5kOiBncmVl
bjsKLSAgICBmb250LXNpemU6IDEwcHg7Ci0gICAgLS1hOiAxMGVtOwotICAgIHdpZHRoOiB2YXIo
LS1hKTsKLSAgfQotCi0gICNwYXJlbnQyIHsKLSAgICB3aWR0aDogNTAwcHg7Ci0gICAgYmFja2dy
b3VuZDogYmx1ZTsKLSAgICAtLWE6IDEwZW07Ci0gICAgZm9udC1zaXplOiBjYWxjKCB2YXIoLS1h
KSArIC0xNTBweCk7Ci0gIH0KLSAgI2NoaWxkMiB7Ci0gICAgYmFja2dyb3VuZDogZ3JlZW47Ci0g
ICAgd2lkdGg6IHZhcigtLWEpOwotICB9Ci0KLSAgI3BhcmVudDMgewotICAgIHdpZHRoOiA1MDBw
eDsKLSAgICBiYWNrZ3JvdW5kOiBibHVlOwotICAgIC0tYjogMTBlbTsKLSAgICBmb250LXNpemU6
IGNhbGMoIHZhcigtLWIpICsgLTE1MHB4KTsKLSAgfQotICAjY2hpbGQzIHsKLSAgICBiYWNrZ3Jv
dW5kOiBncmVlbjsKLSAgICB3aWR0aDogdmFyKC0tYik7Ci0gIH0KLQotICAjcGFyZW50NCB7Ci0g
ICAgd2lkdGg6IDUwMHB4OwotICAgIGJhY2tncm91bmQ6IGJsdWU7Ci0gICAgLS1iOiAxMGVtOwot
ICAgIGZvbnQtc2l6ZTogY2FsYyggdmFyKC0tYikgKyAtMTUwcHgpOwotICB9Ci0gICNjaGlsZDQg
ewotICAgIGJhY2tncm91bmQ6IGdyZWVuOwotICAgIC0tYTogdmFyKC0tYik7Ci0gICAgZm9udC1z
aXplOiB2YXIoLS1hKTsKLSAgICB3aWR0aDogdmFyKC0tYSk7Ci0gIH0KLQotICAjcGFyZW50NSB7
Ci0gICAgd2lkdGg6IDUwMHB4OwotICAgIGJhY2tncm91bmQ6IGJsdWU7Ci0gICAgLS1iOiA1ZW07
Ci0gICAgZm9udC1zaXplOiBjYWxjKCB2YXIoLS1iKSArIC03MHB4KTsKLSAgfQotICAjY2hpbGQ1
IHsKLSAgICBiYWNrZ3JvdW5kOiBncmVlbjsKLSAgICAtLWM6IHZhcigtLWIpOwotICAgIGZvbnQt
c2l6ZTogdmFyKC0tYyk7Ci0gICAgd2lkdGg6IHZhcigtLWMpOwotICB9Ci08L3N0eWxlPgotPGRp
dj4KLSAgPGRpdiBpZD0icGFyZW50MSI+PGRpdiBpZD0iY2hpbGQxIj48cD50ZXN0PC9wPjwvZGl2
PjwvZGl2PgotICA8ZGl2IGlkPSJwYXJlbnQyIj48ZGl2IGlkPSJjaGlsZDIiPjxwPnRlc3Q8L3A+
PC9kaXY+PC9kaXY+Ci0gIDxkaXYgaWQ9InBhcmVudDMiPjxkaXYgaWQ9ImNoaWxkMyI+PHA+dGVz
dDwvcD48L2Rpdj48L2Rpdj4KLSAgPGRpdiBpZD0icGFyZW50NCI+PGRpdiBpZD0iY2hpbGQ0Ij48
cD50ZXN0PC9wPjwvZGl2PjwvZGl2PgotICA8ZGl2IGlkPSJwYXJlbnQ1Ij48ZGl2IGlkPSJjaGls
ZDUiPjxwPnRlc3Q8L3A+PC9kaXY+PC9kaXY+Ci08L2Rpdj4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9u
IHRlc3RfcHJvcChpZCwgcHJvcCwgZXhwZWN0ZWQpIHsKLSAgYXNzZXJ0X2VxdWFscyh3aW5kb3cu
Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpLmdldFByb3BlcnR5
VmFsdWUocHJvcCkudHJpbSgpLCBleHBlY3RlZCk7Ci19Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0g
IENTUy5yZWdpc3RlclByb3BlcnR5KHsKLSAgICBuYW1lOiAnLS1hJywKLSAgICBzeW50YXg6ICc8
bGVuZ3RoPicsCi0gICAgaW5oZXJpdHM6IHRydWUsCi0gICAgaW5pdGlhbFZhbHVlOiAnMjAwcHgn
Ci0gIH0pCi19LCAiUmVnaXN0cmF0aW9uIGlzIHN1Y2Nlc3NmdWwiKTsKLXRlc3QoZnVuY3Rpb24o
KSB7Ci0gIHRlc3RfcHJvcCgnY2hpbGQxJywgJ3dpZHRoJywgJzEwMHB4Jyk7Ci0gIHRlc3RfcHJv
cCgnY2hpbGQxJywgJy0tYScsICcxMDBweCcpOwotICB0ZXN0X3Byb3AoJ2NoaWxkMScsICctLWIn
LCAnJyk7Ci0gIHRlc3RfcHJvcCgncGFyZW50MScsICctLWEnLCAnMjAwcHgnKTsKLSAgdGVzdF9w
cm9wKCdwYXJlbnQxJywgJy0tYicsICcnKTsKLX0sICJKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBm
b3IgZWxlbWVudCAxIik7Ci10ZXN0KGZ1bmN0aW9uKCkgewotICB0ZXN0X3Byb3AoJ2NoaWxkMics
ICd3aWR0aCcsICcxNjBweCcpOwotICB0ZXN0X3Byb3AoJ2NoaWxkMicsICctLWEnLCAnMTYwcHgn
KTsKLSAgdGVzdF9wcm9wKCdjaGlsZDInLCAnLS1iJywgJycpOwotICB0ZXN0X3Byb3AoJ2NoaWxk
MicsICdmb250LXNpemUnLCAnMTZweCcpOwotICB0ZXN0X3Byb3AoJ3BhcmVudDInLCAnLS1hJywg
JzE2MHB4Jyk7Ci0gIHRlc3RfcHJvcCgncGFyZW50MicsICctLWInLCAnJyk7Ci0gIHRlc3RfcHJv
cCgncGFyZW50MicsICdmb250LXNpemUnLCAnMTZweCcpOwotfSwgIkpTIEF0dHJpYnV0ZXMgYXJl
IHZhbGlkIGZvciBlbGVtZW50IDIiKTsKLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIHRlc3RfcHJvcCgn
Y2hpbGQzJywgJ3dpZHRoJywgJzEwMHB4Jyk7Ci0gIHRlc3RfcHJvcCgnY2hpbGQzJywgJy0tYScs
ICcyMDBweCcpOwotICB0ZXN0X3Byb3AoJ2NoaWxkMycsICctLWInLCAnMTBlbScpOwotICB0ZXN0
X3Byb3AoJ2NoaWxkMycsICdmb250LXNpemUnLCAnMTBweCcpOwotICB0ZXN0X3Byb3AoJ3BhcmVu
dDMnLCAnLS1hJywgJzIwMHB4Jyk7Ci0gIHRlc3RfcHJvcCgncGFyZW50MycsICctLWInLCAnMTBl
bScpOwotICB0ZXN0X3Byb3AoJ3BhcmVudDMnLCAnZm9udC1zaXplJywgJzEwcHgnKTsKLX0sICJK
UyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCAzIik7Ci10ZXN0KGZ1bmN0aW9uKCkg
ewotICB0ZXN0X3Byb3AoJ2NoaWxkNCcsICd3aWR0aCcsICcxMDBweCcpOwotICB0ZXN0X3Byb3Ao
J2NoaWxkNCcsICctLWEnLCAnMTAwcHgnKTsKLSAgdGVzdF9wcm9wKCdjaGlsZDQnLCAnLS1iJywg
JzEwZW0nKTsKLSAgdGVzdF9wcm9wKCdjaGlsZDQnLCAnZm9udC1zaXplJywgJzEwcHgnKTsKLSAg
dGVzdF9wcm9wKCdwYXJlbnQ0JywgJy0tYScsICcyMDBweCcpOwotICB0ZXN0X3Byb3AoJ3BhcmVu
dDQnLCAnLS1iJywgJzEwZW0nKTsKLSAgdGVzdF9wcm9wKCdwYXJlbnQ0JywgJ2ZvbnQtc2l6ZScs
ICcxMHB4Jyk7Ci19LCAiSlMgQXR0cmlidXRlcyBhcmUgdmFsaWQgZm9yIGVsZW1lbnQgNCIpOwot
dGVzdChmdW5jdGlvbigpIHsKLSAgdGVzdF9wcm9wKCdjaGlsZDUnLCAnd2lkdGgnLCAnMjUwcHgn
KTsKLSAgdGVzdF9wcm9wKCdjaGlsZDUnLCAnLS1jJywgJzVlbScpOwotICB0ZXN0X3Byb3AoJ2No
aWxkNScsICctLWInLCAnNWVtJyk7Ci0gIHRlc3RfcHJvcCgnY2hpbGQ1JywgJ2ZvbnQtc2l6ZScs
ICc1MHB4Jyk7Ci0gIHRlc3RfcHJvcCgncGFyZW50NScsICctLWEnLCAnMjAwcHgnKTsKLSAgdGVz
dF9wcm9wKCdwYXJlbnQ1JywgJy0tYicsICc1ZW0nKTsKLSAgdGVzdF9wcm9wKCdwYXJlbnQ1Jywg
J2ZvbnQtc2l6ZScsICcxMHB4Jyk7Ci19LCAiSlMgQXR0cmlidXRlcyBhcmUgdmFsaWQgZm9yIGVs
ZW1lbnQgNSIpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9t
LXByb3BlcnRpZXMtYXBpL2lubGluZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MtY3Vz
dG9tLXByb3BlcnRpZXMtYXBpL2lubGluZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGU1NjgxNjI2NTI5ZmJmMTBiMWM1MGZmMDBjMzcxMTFhOTBlYzZjMWIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
Y3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMTUgKzAsMCBAQAotdGVzdAotCi0KLVBBU1MgQ1NTT00gc2V0dGVycyBmdW5jdGlv
biBhcyBleHBlY3RlZCBmb3IgdW5yZWdpc3RlcmVkIHByb3BlcnRpZXMgCi1QQVNTIENTUy5yZWdp
c3RlclByb3BlcnR5IAotUEFTUyBGb3JtZXJseSB2YWxpZCB2YWx1ZXMgYXJlIHN0aWxsIHJlYWRh
YmxlIGZyb20gaW5saW5lIHN0eWxlcyBidXQgYXJlIGNvbXB1dGVkIGFzIHRoZSB1bnNldCB2YWx1
ZSAKLVBBU1MgVmFsdWVzIG5vdCBtYXRjaGluZyB0aGUgcmVnaXN0ZXJlZCB0eXBlIGNhbid0IGJl
IHNldCAKLVBBU1MgVmFsdWVzIGNhbiBiZSByZW1vdmVkIGZyb20gaW5saW5lIHN0eWxlcyAKLVBB
U1MgU3R5bGVzaGVldHMgY2FuIGJlIG1vZGlmaWVkIGJ5IENTU09NIAotUEFTUyBWYWxpZCB2YWx1
ZXMgY2FuIGJlIHNldCBvbiBpbmxpbmUgc3R5bGVzIAotUEFTUyBWYXIgdmFsdWVzIGFyZSBhY2Nl
cHRlZCAKLVBBU1MgVmFyIHZhbHVlcyBhcmUgYWNjZXB0ZWQgd2l0aG91dCB2YWxpZGF0aW9uIAot
UEFTUyBWYXIgdmFsdWVzIGFyZSBhY2NlcHRlZCB3aXRob3V0IHZhbGlkYXRpb24sIGV2ZW4gd2hl
biBpdCBpcyBvYnZpb3VzIHRoZXkgd2lsbCBub3QgcGFyc2UgCi1QQVNTIFZhciB2YWx1ZXMgYXJl
IGFjY2VwdGVkIHdpdGhvdXQgdmFsaWRhdGlvbiwgZXZlbiB3aGVuIGl0IGlzIG9idmlvdXMgdGhl
eSB3aWxsIG5vdCBwYXJzZSAodHlwZWQpIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3Mt
Y3VzdG9tLXByb3BlcnRpZXMtYXBpL2lubGluZS5odG1sIGIvTGF5b3V0VGVzdHMvY3NzLWN1c3Rv
bS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNTFiYTdmZWJjMDYzOTQ0NjViY2NmZWQ4NGNlYTlmZTIzMTU0ZWIwNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9t
LXByb3BlcnRpZXMtYXBpL2lubGluZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFs
OkNTU0N1c3RvbVByb3BlcnRpZXNBbmRWYWx1ZXNFbmFibGVkPXRydWUgXSAtLT4KLTwhLS0gaHR0
cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYy8rLzAxY2U0MzE0MDll
M2EwMTk4NTg2Nzc2MjZhOTgzYzU1MTY4ZGE2ZGMvdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRl
c3RzL2N1c3RvbS1wcm9wZXJ0aWVzL3JlZ2lzdGVyLXByb3BlcnR5Lmh0bWwgLS0+Ci08c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotCi08c3R5bGU+
Ci0gICN0ZXN0MSB7Ci0gICAgLS1hOiAxMGVtOwotICAgIC0tYjogMTBlbTsKLSAgfQotPC9zdHls
ZT4KLTxkaXY+Ci0gIDxkaXYgaWQ9dGVzdDE+PHA+dGVzdDwvcD48L2Rpdj4KLTwvZGl2PgotPHNj
cmlwdD4KLQotdmFyIGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHRlc3QxKTsKLXZh
ciBpbmxpbmVTdHlsZSA9IHRlc3QxLnN0eWxlOwotdmFyIHNoZWV0U3R5bGUgPSBkb2N1bWVudC5z
dHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAg
Ly8gTm90aGluZyByZWdpc3RlcmVkIHlldCwgd2hhdGV2ZXIgeW91IHNwZWNpZnkgd29ya3MKLSAg
YXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnIDEw
ZW0nKTsKLSAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0t
YicpLCAnIDEwZW0nKTsKLQotICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJ2hlbGxv
Jyk7Ci0gIGlubGluZVN0eWxlLnNldFByb3BlcnR5KCctLWInLCAnYm9uam91cicpOwotCi0gIGFz
c2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdoZWxsbycp
OwotICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAn
Ym9uam91cicpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgnLS1hJyksICdoZWxsbycpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJv
cGVydHlWYWx1ZSgnLS1iJyksICdib25qb3VyJyk7Ci19LCAiQ1NTT00gc2V0dGVycyBmdW5jdGlv
biBhcyBleHBlY3RlZCBmb3IgdW5yZWdpc3RlcmVkIHByb3BlcnRpZXMiKTsKLQotdGVzdChmdW5j
dGlvbigpIHsKLSAgQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICctLWEnLCBzeW50YXg6ICc8
bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTogJzBweCcsIGluaGVyaXRzOiBmYWxzZX0pOwotICBDU1Mu
cmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJy0tcmVnaXN0ZXJlZCcsIHN5bnRheDogJzxsZW5ndGg+
JywgaW5pdGlhbFZhbHVlOiAnMHB4JywgaW5oZXJpdHM6IGZhbHNlfSk7Ci19LCAiQ1NTLnJlZ2lz
dGVyUHJvcGVydHkiKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgYXNzZXJ0X2VxdWFscyhpbmxp
bmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJ2hlbGxvJyk7Ci0gIGFzc2VydF9lcXVh
bHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICdib25qb3VyJyk7Ci0gIGFz
c2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzBweCcp
OwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyks
ICdib25qb3VyJyk7Ci19LCAiRm9ybWVybHkgdmFsaWQgdmFsdWVzIGFyZSBzdGlsbCByZWFkYWJs
ZSBmcm9tIGlubGluZSBzdHlsZXMgYnV0IGFyZSBjb21wdXRlZCBhcyB0aGUgdW5zZXQgdmFsdWUi
KTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYScs
ICdoaScpOwotICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1iJywgJ2hpJyk7Ci0gIGFzc2Vy
dF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdoZWxsbycpOwot
ICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnaGkn
KTsKLX0sICJWYWx1ZXMgbm90IG1hdGNoaW5nIHRoZSByZWdpc3RlcmVkIHR5cGUgY2FuJ3QgYmUg
c2V0Iik7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gIGlubGluZVN0eWxlLnJlbW92ZVByb3BlcnR5
KCctLWEnKTsKLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYicsICcnKTsKLSAgYXNzZXJ0
X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJycpOwotICBhc3Nl
cnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnJyk7Ci0gIGFz
c2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzE2MHB4
Jyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWIn
KSwgJyAxMGVtJyk7Ci19LCAiVmFsdWVzIGNhbiBiZSByZW1vdmVkIGZyb20gaW5saW5lIHN0eWxl
cyIpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICBzaGVldFN0eWxlLnNldFByb3BlcnR5KCctLWEn
LCAnYmFuYW5hJyk7IC8vIEludmFsaWQsIG5vIGNoYW5nZQotICBhc3NlcnRfZXF1YWxzKGNvbXB1
dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICcxNjBweCcpOwotICBzaGVldFN0eWxl
LnNldFByb3BlcnR5KCctLWEnLCAnMjBweCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICcyMHB4Jyk7Ci0gIHNoZWV0U3R5bGUuc2V0UHJv
cGVydHkoJy0tYScsICdpbml0aWFsJyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5n
ZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzBweCcpOwotfSwgIlN0eWxlc2hlZXRzIGNhbiBiZSBt
b2RpZmllZCBieSBDU1NPTSIpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICBpbmxpbmVTdHlsZS5z
ZXRQcm9wZXJ0eSgnLS1hJywgJzMwZW0nKTsKLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0t
YicsICcyMGVtJyk7Ci0gIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgnLS1hJyksICczMGVtJyk7Ci0gIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVy
dHlWYWx1ZSgnLS1iJyksICcyMGVtJyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5n
ZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzQ4MHB4Jyk7Ci0gIGFzc2VydF9lcXVhbHMoY29tcHV0
ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWInKSwgJzIwZW0nKTsKLSAgaW5saW5lU3R5bGUu
c2V0UHJvcGVydHkoJy0tYScsICdpbmhlcml0Jyk7Ci0gIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdpbmhlcml0Jyk7Ci0gIGFzc2VydF9lcXVhbHMo
Y29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzBweCcpOwotfSwgIlZhbGlk
IHZhbHVlcyBjYW4gYmUgc2V0IG9uIGlubGluZSBzdHlsZXMiKTsKLQotdGVzdChmdW5jdGlvbigp
IHsKLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYicsICcgMjBweCcpOwotICBpbmxpbmVT
dHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJ2NhbGModmFyKC0tYikgKyAxMHB4KScpOwotICBhc3Nl
cnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnIDIwcHgnKTsK
LSAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJ2Nh
bGModmFyKC0tYikgKyAxMHB4KScpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZSgnLS1iJyksICcgMjBweCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVk
U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICczMHB4Jyk7Ci19LCAiVmFyIHZhbHVlcyBh
cmUgYWNjZXB0ZWQiKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgaW5saW5lU3R5bGUuc2V0UHJv
cGVydHkoJy0tYicsICdoZWxsbycpOwotICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywg
J2NhbGModmFyKC0tYikgKyAxNXB4KScpOwotICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdl
dFByb3BlcnR5VmFsdWUoJy0tYicpLCAnaGVsbG8nKTsKLSAgYXNzZXJ0X2VxdWFscyhpbmxpbmVT
dHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJ2NhbGModmFyKC0tYikgKyAxNXB4KScpOwot
ICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICdo
ZWxsbycpOwotICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgn
LS1hJyksICcwcHgnKTsKLX0sICJWYXIgdmFsdWVzIGFyZSBhY2NlcHRlZCB3aXRob3V0IHZhbGlk
YXRpb24iKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHko
Jy0tYicsICdoZWxsbycpOwotICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJ2NhbGMo
dmFyKC0tYikgMTVweCknKTsKLSAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0
eVZhbHVlKCctLWInKSwgJ2hlbGxvJyk7Ci0gIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZSgnLS1hJyksICdjYWxjKHZhcigtLWIpIDE1cHgpJyk7Ci0gIGFzc2VydF9l
cXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWInKSwgJ2hlbGxvJyk7Ci0g
IGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzBw
eCcpOwotfSwgIlZhciB2YWx1ZXMgYXJlIGFjY2VwdGVkIHdpdGhvdXQgdmFsaWRhdGlvbiwgZXZl
biB3aGVuIGl0IGlzIG9idmlvdXMgdGhleSB3aWxsIG5vdCBwYXJzZSIpOwotCi10ZXN0KGZ1bmN0
aW9uKCkgewotICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1iJywgJ2hlbGxvJyk7Ci0gIGlu
bGluZVN0eWxlLnNldFByb3BlcnR5KCctLWEnLCAnY2FsYyh2YXIoLS1yZWdpc3RlcmVkKSAxNXB4
KScpOwotICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicp
LCAnaGVsbG8nKTsKLSAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KCctLWEnKSwgJ2NhbGModmFyKC0tcmVnaXN0ZXJlZCkgMTVweCknKTsKLSAgYXNzZXJ0X2VxdWFs
cyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnaGVsbG8nKTsKLSAgYXNz
ZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnMHB4Jyk7
Ci19LCAiVmFyIHZhbHVlcyBhcmUgYWNjZXB0ZWQgd2l0aG91dCB2YWxpZGF0aW9uLCBldmVuIHdo
ZW4gaXQgaXMgb2J2aW91cyB0aGV5IHdpbGwgbm90IHBhcnNlICh0eXBlZCkiKTsKLQotPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyLXByb3BlcnR5LXN5bnRh
eC1wYXJzaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXItcHJvcGVy
dHktc3ludGF4LXBhcnNpbmctZXhwZWN0ZWQudHh0CmluZGV4IDJlYTc4ZTI5ODA2MDY4ZTViM2Mz
ZjZlYzc5ZjZiZjlhOGE2YjE4Y2QuLmU5ZTJmZTczOGFiM2EyZGJkYWZkOTEwYjY0NjYxZDJhZGQ4
M2UwM2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXItcHJvcGVydHktc3lu
dGF4LXBhcnNpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXIt
cHJvcGVydHktc3ludGF4LXBhcnNpbmctZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogCi1Q
QVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonYScgaXMgdmFsaWQgCitGQUlMIHN5bnRheDon
KicsIGluaXRpYWxWYWx1ZTonYScgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9l
cyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCiBGQUlMIHN5bnRheDonICogJywgaW5p
dGlhbFZhbHVlOidiJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBw
YXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRp
YWxWYWx1ZTonMnB4JyBpcyB2YWxpZCAKIEZBSUwgc3ludGF4OicgPG51bWJlcj4nLCBpbml0aWFs
VmFsdWU6JzUnIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNl
IGZvciB0aGUgZ2l2ZW4gc3ludGF4LgpAQCAtOSwxMSArOSwxMSBAQCBGQUlMIHN5bnRheDonIDxs
ZW5ndGg+KyB8IDxwZXJjZW50YWdlPicsIGluaXRpYWxWYWx1ZTonMnB4IDhweCcgaXMgdmFsaWQg
VGhlIGdpdgogUEFTUyBzeW50YXg6JzxsZW5ndGg+fDxwZXJjZW50YWdlPnw8bGVuZ3RoLXBlcmNl
bnRhZ2U+JywgaW5pdGlhbFZhbHVlOicycHgnIGlzIHZhbGlkIAogRkFJTCBzeW50YXg6Jzxjb2xv
cj4gfCA8aW1hZ2U+IHwgPHVybD4gfCA8aW50ZWdlcj4gfCA8YW5nbGU+JywgaW5pdGlhbFZhbHVl
OidyZWQnIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZv
ciB0aGUgZ2l2ZW4gc3ludGF4LgogRkFJTCBzeW50YXg6Jzx0aW1lPiB8IDxyZXNvbHV0aW9uPiB8
IDx0cmFuc2Zvcm0tbGlzdD4gfCA8Y3VzdG9tLWlkZW50PicsIGluaXRpYWxWYWx1ZToncmVkJyBp
cyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdp
dmVuIHN5bnRheC4KLVBBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOic6PiBoZWxsbycgaXMg
dmFsaWQgCi1QQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonKFsgYnJhY2tldHMgXSkgeyB5
YXkgKD8/KX0nIGlzIHZhbGlkIAotUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3llcCAn
dGhpcyBpcyB2YWxpZCB0b28nJyBpcyB2YWxpZCAKLVBBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZh
bHVlOid1bm1hdGNoZWQgb3BlbmluZyBicmFja2V0IGlzIHZhbGlkIDooJyBpcyB2YWxpZCAKLVBB
U1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOiciJyBpcyB2YWxpZCAKK0ZBSUwgc3ludGF4Oicq
JywgaW5pdGlhbFZhbHVlOic6PiBoZWxsbycgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFs
dWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCitGQUlMIHN5bnRheDonKics
IGluaXRpYWxWYWx1ZTonKFsgYnJhY2tldHMgXSkgeyB5YXkgKD8/KX0nIGlzIHZhbGlkIFRoZSBn
aXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4Lgor
RkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3llcCAndGhpcyBpcyB2YWxpZCB0b28nJyBp
cyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdp
dmVuIHN5bnRheC4KK0ZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOid1bm1hdGNoZWQgb3Bl
bmluZyBicmFja2V0IGlzIHZhbGlkIDooJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1
ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KK0ZBSUwgc3ludGF4OicqJywg
aW5pdGlhbFZhbHVlOiciJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5v
dCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGlu
aXRpYWxWYWx1ZTonMCcgaXMgdmFsaWQgCiBQQVNTIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFs
VmFsdWU6JzEwcHggLyo6KSovJyBpcyB2YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGlu
aXRpYWxWYWx1ZTonIGNhbGMoLTJweCknIGlzIHZhbGlkIApAQCAtNjMsNyArNjMsNyBAQCBiYW5h
bmFccgogRkFJTCBzeW50YXg6J2JhDAogfAluYVxyfG55YScsIGluaXRpYWxWYWx1ZTonbnlhJyBp
cyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdp
dmVuIHN5bnRheC4KIEZBSUwgc3ludGF4OidudWxsJywgaW5pdGlhbFZhbHVlOidudWxsJyBpcyB2
YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVu
IHN5bnRheC4KLVBBU1Mgc3ludGF4Oid1bmRlZmluZWQnLCBpbml0aWFsVmFsdWU6J3VuZGVmaW5l
ZCcgaXMgdmFsaWQgCitGQUlMIHN5bnRheDondW5kZWZpbmVkJywgaW5pdGlhbFZhbHVlOid1bmRl
ZmluZWQnIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZv
ciB0aGUgZ2l2ZW4gc3ludGF4LgogRkFJTCBzeW50YXg6J2FycmF5JywgaW5pdGlhbFZhbHVlOidh
cnJheScgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9y
IHRoZSBnaXZlbiBzeW50YXguCiBQQVNTIHN5bnRheDonYmFuYW5hLG55YScsIGluaXRpYWxWYWx1
ZTonYmFuYW5hJyBpcyBpbnZhbGlkIAogUEFTUyBzeW50YXg6J2JhbmFuXDYxJywgaW5pdGlhbFZh
bHVlOidiYW5hbmEnIGlzIGludmFsaWQgCkBAIC04NSwzNiArODUsMzYgQEAgUEFTUyBzeW50YXg6
J3Vuc2V0JywgaW5pdGlhbFZhbHVlOid1bnNldCcgaXMgaW52YWxpZAogRkFJTCBzeW50YXg6Jzxs
ZW5ndGg+fGluaXRpYWwnLCBpbml0aWFsVmFsdWU6JzEwcHgnIGlzIGludmFsaWQgYXNzZXJ0X3Ro
cm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBz
eW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxz
ZX0pIiBkaWQgbm90IHRocm93CiBGQUlMIHN5bnRheDonPGxlbmd0aD58SU5IRVJJVCcsIGluaXRp
YWxWYWx1ZTonMTBweCcgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4g
Q1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFs
VmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIEZB
SUwgc3ludGF4Oic8cGVyY2VudGFnZT58dW5zRXQnLCBpbml0aWFsVmFsdWU6JzIlJyBpcyBpbnZh
bGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7
bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBp
bmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwotRkFJTCBzeW50YXg6JyonLCBpbml0aWFs
VmFsdWU6J2luaXRpYWwnIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+
IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlh
bFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93Ci1G
QUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonaW5oZXJpdCcgaXMgaW52YWxpZCBhc3NlcnRf
dGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUs
IHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZh
bHNlfSkiIGRpZCBub3QgdGhyb3cKLUZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOid1bnNl
dCcgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVy
UHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRp
YWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKLUZBSUwgc3ludGF4Oicq
JywgaW5pdGlhbFZhbHVlOidyZXZlcnQnIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rp
b24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRh
eCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90
IHRocm93CitQQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonaW5pdGlhbCcgaXMgaW52YWxp
ZCAKK1BBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOidpbmhlcml0JyBpcyBpbnZhbGlkIAor
UEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3Vuc2V0JyBpcyBpbnZhbGlkIAorUEFTUyBz
eW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3JldmVydCcgaXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4
Oic8Y3VzdG9tLWlkZW50PicsIGluaXRpYWxWYWx1ZTonaW5pdGlhbCcgaXMgaW52YWxpZCAKIFBB
U1Mgc3ludGF4Oic8Y3VzdG9tLWlkZW50PisnLCBpbml0aWFsVmFsdWU6J2ZvbyBpbmhlcml0IGJh
cicgaXMgaW52YWxpZCAKLUZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOicpJyBpcyBpbnZh
bGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7
bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBp
bmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwotRkFJTCBzeW50YXg6JyonLCBpbml0aWFs
VmFsdWU6JyhbKV0nIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENT
Uy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZh
bHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93Ci1GQUlM
IHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTond2hlZSEnIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93
czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50
YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0p
IiBkaWQgbm90IHRocm93Ci1GQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonIgotJyBpcyBp
bnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0
eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVl
LCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwotRkFJTCBzeW50YXg6JyonLCBpbml0
aWFsVmFsdWU6J3VybChtb28gJycpJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9u
ICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgs
IGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0
aHJvdwotRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3NlbWk7Y29sb24nIGlzIGludmFs
aWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtu
YW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGlu
aGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93Ci1GQUlMIHN5bnRheDonKicsIGluaXRpYWxW
YWx1ZTondmFyKGludmFsaWQgdmFyIHJlZiknIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVu
Y3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5
bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQg
bm90IHRocm93Ci1GQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTondmFyKC0tZm9vKScgaXMg
aW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVy
dHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1
ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKK1BBU1Mgc3ludGF4OicqJywgaW5p
dGlhbFZhbHVlOicpJyBpcyBpbnZhbGlkIAorUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6
JyhbKV0nIGlzIGludmFsaWQgCitQQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTond2hlZSEn
IGlzIGludmFsaWQgCitQQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonIgorJyBpcyBpbnZh
bGlkIAorUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3VybChtb28gJycpJyBpcyBpbnZh
bGlkIAorUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3NlbWk7Y29sb24nIGlzIGludmFs
aWQgCitQQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTondmFyKGludmFsaWQgdmFyIHJlZikn
IGlzIGludmFsaWQgCitQQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTondmFyKC0tZm9vKScg
aXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4OidiYW5hbmEnLCBpbml0aWFsVmFsdWU6J2JBbkFuQScg
aXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTondmFyKC0t
bW9vKScgaXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTon
MTAnIGlzIGludmFsaWQgCiBGQUlMIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzEw
JScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVy
UHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRp
YWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIEZBSUwgc3ludGF4Oic8
bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTonY2FsYyg1cHggKyAxMCUpJyBpcyBpbnZhbGlkIGFzc2Vy
dF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFt
ZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czog
ZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwogUEFTUyBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlhbFZh
bHVlOidjYWxjKDVweCAqIDNweCAvIDZweCknIGlzIGludmFsaWQgCi1GQUlMIHN5bnRheDonPGxl
bmd0aD4nLCBpbml0aWFsVmFsdWU6JzEwZW0nIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVu
Y3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5
bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQg
bm90IHRocm93CitQQVNTIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzEwZW0nIGlz
IGludmFsaWQgCiBGQUlMIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzEwdm1pbicg
aXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJv
cGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxW
YWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKLUZBSUwgc3ludGF4Oic8bGVu
Z3RoPicsIGluaXRpYWxWYWx1ZTonY2FsYyg0cHggKyAzZW0pJyBpcyBpbnZhbGlkIGFzc2VydF90
aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwg
c3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFs
c2V9KSIgZGlkIG5vdCB0aHJvdwotRkFJTCBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlhbFZhbHVl
OidjYWxjKDRweCArIGNhbGMoOCAqIDJlbSkpJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1
bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBz
eW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlk
IG5vdCB0aHJvdwotRkFJTCBzeW50YXg6JzxsZW5ndGg+KycsIGluaXRpYWxWYWx1ZTonY2FsYygy
ZXggKyAxNnB4KScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NT
LnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFs
dWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKK1BBU1Mg
c3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTonY2FsYyg0cHggKyAzZW0pJyBpcyBpbnZh
bGlkIAorUEFTUyBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOidjYWxjKDRweCArIGNh
bGMoOCAqIDJlbSkpJyBpcyBpbnZhbGlkIAorUEFTUyBzeW50YXg6JzxsZW5ndGg+KycsIGluaXRp
YWxWYWx1ZTonY2FsYygyZXggKyAxNnB4KScgaXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVu
Z3RoPisnLCBpbml0aWFsVmFsdWU6JzEwcHggY2FsYygyMHB4ICsgNHJlbSknIGlzIGludmFsaWQg
CiBQQVNTIHN5bnRheDonPHBlcmNlbnRhZ2U+IHwgPGxlbmd0aD4rJywgaW5pdGlhbFZhbHVlOidj
YWxjKDEwMHZoIC0gMTBweCkgMzBweCcgaXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3Ro
PicsIGluaXRpYWxWYWx1ZTonMTBweDsnIGlzIGludmFsaWQgCi1GQUlMIHN5bnRheDonPGxlbmd0
aC1wZXJjZW50YWdlPicsIGluaXRpYWxWYWx1ZTonY2FsYygycHggKyAxMCUgKyA3ZXgpJyBpcyBp
bnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0
eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVl
LCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdworUEFTUyBzeW50YXg6JzxsZW5ndGgt
cGVyY2VudGFnZT4nLCBpbml0aWFsVmFsdWU6J2NhbGMoMnB4ICsgMTAlICsgN2V4KScgaXMgaW52
YWxpZCAKIEZBSUwgc3ludGF4Oic8cGVyY2VudGFnZT4nLCBpbml0aWFsVmFsdWU6JzAnIGlzIGlu
dmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5
KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUs
IGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CiBQQVNTIHN5bnRheDonPGludGVnZXI+
JywgaW5pdGlhbFZhbHVlOicxLjAnIGlzIGludmFsaWQgCiBQQVNTIHN5bnRheDonPGludGVnZXI+
JywgaW5pdGlhbFZhbHVlOicxZTAnIGlzIGludmFsaWQgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1
ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydGllcy1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVy
dGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydGllcy1pbmhlcml0YW5jZS1leHBlY3Rl
ZC50eHQKaW5kZXggNTY1NGU4MmM2YTgyYTRjMmUyOWNiMWYzNTYwNDEyMjVkMjExZTIzYS4uZmMy
N2IwZGYyOTk1YTdiN2Y0ZWEwZDc3NWMwZDdiNzUxZjFlZDEwYiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMt
dmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnRpZXMtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWluaGVyaXRhbmNl
LWV4cGVjdGVkLnR4dApAQCAtMiw2ICsyLDYgQEAKIFBBU1MgUmVnaXN0ZXJlZCBwcm9wZXJ0aWVz
IGFyZSBjb3JyZWN0bHkgaW5oZXJpdGVkIChvciBub3QpIGRlcGVuZGluZyBvbiB0aGUgaW5oZXJp
dHMgZmxhZy4gCiBQQVNTIEV4cGxpY2l0bHkgaW5oZXJpdGluZyBmcm9tIGEgcGFyZW50IHdpdGgg
YW4gaW52YWxpZCB2YWx1ZSByZXN1bHRzIGluIGluaXRpYWwgdmFsdWUuIAogUEFTUyBFeHBsaWNp
dGx5IGluaGVyaXRpbmcgZnJvbSBhIHBhcmVudCB3aXRoIG5vIHZhbHVlIHJlc3VsdHMgaW4gaW5p
dGlhbCB2YWx1ZS4gCi1QQVNTIFJlZmVyZW5jZSB0byB1bmRlZmluZWQgdmFyaWFibGUgcmVzdWx0
cyBpbiBpbmhlcml0ZWQgdmFsdWUgCi1QQVNTIFJlZmVyZW5jZSB0byBzeW50YXgtaW5jb21wYXRp
YmxlIHZhcmlhYmxlIHJlc3VsdHMgaW4gaW5oZXJpdGVkIHZhbHVlIAorRkFJTCBSZWZlcmVuY2Ug
dG8gdW5kZWZpbmVkIHZhcmlhYmxlIHJlc3VsdHMgaW4gaW5oZXJpdGVkIHZhbHVlIGFzc2VydF9l
cXVhbHM6IGV4cGVjdGVkICI0MnB4IiBidXQgZ290ICIwcHgiCitGQUlMIFJlZmVyZW5jZSB0byBz
eW50YXgtaW5jb21wYXRpYmxlIHZhcmlhYmxlIHJlc3VsdHMgaW4gaW5oZXJpdGVkIHZhbHVlIGFz
c2VydF9lcXVhbHM6IGV4cGVjdGVkICI0MnB4IiBidXQgZ290ICIwcHgiCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9w
ZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0eS1jc3NvbS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJv
cGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydHktY3Nzb20tZXhwZWN0ZWQudHh0
CmluZGV4IGVmY2M1YzJlY2Y4ZWY1YThlNDJmODJkZmM2M2U0ZmIxODJhNDc5ZWYuLjBkNTU2MWY0
OGU1NjdlMzYyNzkyNmE0MTFhNzVlMGVjYjRiMDY4NTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVl
cy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0eS1jc3NvbS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMt
dmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnR5LWNzc29tLWV4cGVjdGVkLnR4dApAQCAtMiw4
ICsyLDggQEAKIFBBU1MgQ1NTT00gc2V0dGVycyBmdW5jdGlvbiBhcyBleHBlY3RlZCBmb3IgdW5y
ZWdpc3RlcmVkIHByb3BlcnRpZXMgCiBGQUlMIENTUy5yZWdpc3RlclByb3BlcnR5IFRoZSBnaXZl
biBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgogRkFJ
TCBGb3JtZXJseSB2YWxpZCB2YWx1ZXMgYXJlIHN0aWxsIHJlYWRhYmxlIGZyb20gaW5saW5lIHN0
eWxlcyBidXQgYXJlIGNvbXB1dGVkIGFzIHRoZSB1bnNldCB2YWx1ZSBhc3NlcnRfZXF1YWxzOiBl
eHBlY3RlZCAiYmx1ZSIgYnV0IGdvdCAiaGVsbG8iCi1GQUlMIFZhbHVlcyBub3QgbWF0Y2hpbmcg
dGhlIHJlZ2lzdGVyZWQgdHlwZSBjYW4ndCBiZSBzZXQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQg
ImhlbGxvIiBidXQgZ290ICIyMCIKK0ZBSUwgVmFsdWVzIG5vdCBtYXRjaGluZyB0aGUgcmVnaXN0
ZXJlZCB0eXBlIGNhbid0IGJlIHNldCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiNSIgYnV0IGdv
dCAiaGkiCiBGQUlMIFZhbHVlcyBjYW4gYmUgcmVtb3ZlZCBmcm9tIGlubGluZSBzdHlsZXMgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgInJlZCIgYnV0IGdvdCAiIHJlZCIKLVBBU1MgU3R5bGVzaGVl
dHMgY2FuIGJlIG1vZGlmaWVkIGJ5IENTU09NIAorRkFJTCBTdHlsZXNoZWV0cyBjYW4gYmUgbW9k
aWZpZWQgYnkgQ1NTT00gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjEwcHgiIGJ1dCBnb3QgIjBw
eCIKIEZBSUwgVmFsaWQgdmFsdWVzIGNhbiBiZSBzZXQgb24gaW5saW5lIHN0eWxlcyBhc3NlcnRf
ZXF1YWxzOiBleHBlY3RlZCAiYmx1ZSIgYnV0IGdvdCAiIGJsdWUiCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0
aWVzLXZhbHVlcy1hcGkvdHlwZWRvbS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFs
dWVzLWFwaS90eXBlZG9tLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKaW5kZXggNjZmYmJjYTk5MDlj
YjlmYzU0OTY4YzI4ZTIyNmY4ZWVjODQxNDQzYy4uMWU0ZDI3MGFlNjhmMWViMTc2NmUzYWM3MmQz
NWJkNTAxMjYwZWY3NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS90eXBlZG9tLnRlbnRh
dGl2ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS90eXBlZG9tLnRlbnRhdGl2
ZS1leHBlY3RlZC50eHQKQEAgLTIsNyArMiw3IEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSAzNDA6
IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBDU1NVbnBhcnNlZFZhbHVlCiAK
IEhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZp
bmQgdmFyaWFibGU6IENTU1VucGFyc2VkVmFsdWUKIAotRkFJTCBDb21wdXRlZCAqIGlzIHJlaWZp
ZWQgYXMgQ1NTVW5wYXJzZWRWYWx1ZSB0YXJnZXQuY29tcHV0ZWRTdHlsZU1hcCBpcyBub3QgYSBm
dW5jdGlvbi4gKEluICd0YXJnZXQuY29tcHV0ZWRTdHlsZU1hcCgpJywgJ3RhcmdldC5jb21wdXRl
ZFN0eWxlTWFwJyBpcyB1bmRlZmluZWQpCitGQUlMIENvbXB1dGVkICogaXMgcmVpZmllZCBhcyBD
U1NVbnBhcnNlZFZhbHVlIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZv
ciB0aGUgZ2l2ZW4gc3ludGF4LgogRkFJTCBDb21wdXRlZCA8YW5nbGU+IGlzIHJlaWZpZWQgYXMg
Q1NTVW5pdFZhbHVlIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0
aGUgZ2l2ZW4gc3ludGF4LgogRkFJTCBDb21wdXRlZCA8Y29sb3I+IGlzIHJlaWZpZWQgYXMgQ1NT
U3R5bGVWYWx1ZSBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhl
IGdpdmVuIHN5bnRheC4KIEZBSUwgQ29tcHV0ZWQgPGN1c3RvbS1pZGVudD4gaXMgcmVpZmllZCBh
cyBDU1NLZXl3b3JkVmFsdWUgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2Ug
Zm9yIHRoZSBnaXZlbiBzeW50YXguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1y
ZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWN5Y2xlcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGll
cy12YWx1ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWN5Y2xlcy1l
eHBlY3RlZC50eHQKaW5kZXggOTMxNDUxMjFhMWMzNDZhMmM4MjYwMWZiOGQzZGYxNTlhMDI5ZmMy
Ni4uMmJlZGY2ODkyNzJlNTIwNjMxOGIzMGZhZmFkNTQ4MTJlZGVkYWE5MSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3Bl
cnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1jeWNs
ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvdmFyLXJlZmVyZW5jZS1yZWdp
c3RlcmVkLXByb3BlcnRpZXMtY3ljbGVzLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDYgQEAKIAot
UEFTUyBBIHZhcigpIGN5Y2xlIGJldHdlZW4gdHdvIHJlZ2lzdGVyZWQgcHJvcGVydGllcyBpcyBo
YW5kbGVkIGNvcnJlY3RseS4gCi1QQVNTIEEgdmFyKCkgY3ljbGUgYmV0d2VlbiBhIHJlZ2lzdGVy
ZWQgcHJvcGVydGllcyBhbmQgYW4gdW5yZWdpc3RlcmVkIHByb3BlcnR5IGlzIGhhbmRsZWQgY29y
cmVjdGx5LiAKK0ZBSUwgQSB2YXIoKSBjeWNsZSBiZXR3ZWVuIHR3byByZWdpc3RlcmVkIHByb3Bl
cnRpZXMgaXMgaGFuZGxlZCBjb3JyZWN0bHkuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIycHgi
IGJ1dCBnb3QgIjNweCIKK0ZBSUwgQSB2YXIoKSBjeWNsZSBiZXR3ZWVuIGEgcmVnaXN0ZXJlZCBw
cm9wZXJ0aWVzIGFuZCBhbiB1bnJlZ2lzdGVyZWQgcHJvcGVydHkgaXMgaGFuZGxlZCBjb3JyZWN0
bHkuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxcHgiIGJ1dCBnb3QgIjJweCIKIFBBU1MgQSB2
YXIoKSBjeWNsZSBiZXR3ZWVuIGEgdHdvIHVucmVnaXN0ZXJlZCBwcm9wZXJ0aWVzIGlzIGhhbmRs
ZWQgY29ycmVjdGx5LiAKLVBBU1MgQSB2YXIoKSBjeWNsZSBiZXR3ZWVuIGEgc3ludGF4OicqJyBw
cm9wZXJ0eSBhbmQgYW4gdW5yZWdpc3RlcmVkIHByb3BlcnR5IGlzIGhhbmRsZWQgY29ycmVjdGx5
LiAKK0ZBSUwgQSB2YXIoKSBjeWNsZSBiZXR3ZWVuIGEgc3ludGF4OicqJyBwcm9wZXJ0eSBhbmQg
YW4gdW5yZWdpc3RlcmVkIHByb3BlcnR5IGlzIGhhbmRsZWQgY29ycmVjdGx5LiBUaGUgZ2l2ZW4g
aW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVy
dGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVnaXN0
ZXJlZC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRleCAzOWU2NzVkNDM0YWUxYTkwZTUyZGE5
ZWFiNmY0MDI2NjRkOWMwMzczLi5kYjUzNWU0Yzg4ODYxMjY3MGQwZDJkMzc0YzU4YjVmNGUwNGQx
OTgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVnaXN0ZXJl
ZC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1yZWZl
cmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAK
IAotRkFJTCB2YXIoKSByZWZlcmVuY2VzIHdvcmsgd2l0aCByZWdpc3RlcmVkIHByb3BlcnRpZXMg
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIiAgMTBweCIgYnV0IGdvdCAiIDEwcHgiCitGQUlMIHZh
cigpIHJlZmVyZW5jZXMgd29yayB3aXRoIHJlZ2lzdGVyZWQgcHJvcGVydGllcyBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAiMTVweCIgYnV0IGdvdCAiMTAlIgogRkFJTCBSZWZlcmVuY2VzIHRvIHJl
Z2lzdGVyZWQgdmFyKCktcHJvcGVydGllcyB3b3JrIGluIHJlZ2lzdGVyZWQgbGlzdHMgYXNzZXJ0
X2VxdWFsczogZXhwZWN0ZWQgIjFweCwgMTBweCwgMnB4IiBidXQgZ290ICIwcHgiCiBGQUlMIFJl
ZmVyZW5jZXMgdG8gbWl4ZWQgcmVnaXN0ZXJlZCBhbmQgdW5yZWdpc3RlcmVkIHZhcigpLXByb3Bl
cnRpZXMgd29yayBpbiByZWdpc3RlcmVkIGxpc3RzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIx
cHgsIDIwcHgsIDEwcHgsIDJweCIgYnV0IGdvdCAiMHB4IgogRkFJTCBSZWdpc3RlcmVkIGxpc3Rz
IG1heSBiZSBjb25jYXRlbmF0ZWQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjFweCwgMTBweCwg
MnB4LCAxcHgsIDIwcHgsIDEwcHgsIDJweCIgYnV0IGdvdCAiMHB4Igo=
</data>

          </attachment>
      

    </bug>

</bugzilla>